IDE, ogólna charakterystyka i przykłady środowisk

 cze, 30 - 2018   IDE

Tworząc oprogramowanie komputerowe, niezbędne jest posiadanie i korzystanie z dobrych narzędzi. Takim podstawowym narzędziem programisty jest IDE, zintegrowane środowisko programistyczne, czyli aplikacja udostępniająca szereg funkcjonalności pozwalających na efektywną pracę z kodem aplikacji oraz z zespołem programistów. Artykuł przedstawia podstawową charakterystykę IDE, opisuje elementy tego typu oprogramowania, korzyści z ich użycia oraz podział i przykłady środowisk.

 

Ogólna charakterystyka i zalety korzystania z IDE

 

IDE, Integrated Development Environment, Zintegrowane Środowisko Programistyczne jest to oprogramowanie komputerowe służące do tworzenia, modyfikowania, testowania i utrzymywania aplikacji, z myślą o jak największej produktywności programisty. Współczesne IDE są to rozbudowane narzędzia, składające się z zestawu aplikacji i tworzące tzw. środowisko programistyczne. Udostępnia złożone funkcjonalności obejmującą edycję kodu źródłowego, testowanie, kompilacje i uruchomienie programu oraz wiele innych możliwości.

Praca z jednolitym, zintegrowanym środowiskiem programistycznym niesie ze sobą wiele korzyści:

  • lepsza integracja narzędzi deweloperskich – IDE udostępnia w jednym miejscu, pod wspólnym interfejsem, wiele narzędzi pozwalających na kompleksowe tworzenie aplikacji i zarządzanie kodem, nie ma potrzeby konfigurowania oraz integrowania ze sobą wielu niezależnych programów
  • zwiększenie wydajności w pisaniu oprogramowania – większość IDE są dedykowane dla konkretnych języków oraz oferują wsparcie i pomoc dla wybranych technologii, np. inteligentne autouzupełnianie, wskazywanie błędów w składni, dokumentacja i podpowiedzi, itp., co w znacznym stopniu przyśpiesza i ułatwia proces pisania kodu, IDE pozwala na automatyzacje często wykonywanych zadań programistycznych
  • standaryzacja – jednolity interfejs oraz korzystanie z tych samych narzędzi, dają możliwość wypracowania lepszej metodologii wytwarzania oprogramowania w zespole oraz dla nowych pracowników
  • wsparcie producenta i społeczności – IDE, które jest rozwijane zarówno przez producenta jak i społeczność użytkowników, dają gwarancję na szybsze i lepsze dostosowywanie się do zmian zachodzących w kolejnych wersjach wykorzystywanego języka

 

 

 

Cechy IDE – elementy, funkcjonalność i możliwości

 

Edytor kodu źródłowego (source code editor)

Podstawowym elementem oprogramowania IDE jest edytor kodu, w którym piszemy oprogramowanie. Do najważniejszych funkcjonalności edytora należą:

  • parsowanie i walidacja kodu, wskazywanie błędów w trakcie pisania oprogramowania i poprawianie składni kodu
  • inteligentne podpowiedzi i autouzupełnianie kodu (klasy, metody, funkcje, zmienne, pliki, itp.)
  • możliwość szybkiego wyszukania i podglądu dowolnego fragmentu kodu
  • możliwość formatowania kodu do ustalonych standardów (np. ilość znaków w linii, wielkość klas i metod, ilość zagnieżdżeń bloków, format bloków, nazewnictwo, itp.)
  • możliwość wykorzystywania, tworzenia i zarządzania snippetami, czyli fragmentami kodu wielokrotnego użytku, co pozwala na ułatwienie i przyśpieszenie procesu kodowania
  • kolorowanie składni kodu
  • edycja wyglądu, zmiana czcionki, itp.

 

Wsparcie dla technologii, w której pisane jest oprogramowanie

  • wsparcie dla wybranego języka programowania, frameworka, bibliotek, itp. – rozumienie kodu wybranego języka programowania (inteligentne podpowiedzi i uzupełnianie kodu)
  • kompilator i/lub interpreter kodu źródłowego i możliwość uruchomienia programu
  • umożliwienie podglądu dokumentacji podczas pisania kodu
  • automatyczna refaktoryzacja kodu oraz generowanie szablonów kodu

 

Debuggowanie i testowania kodu

  • wbudowany debugger pozwalający na śledzenie krok po kroku przebiegu działania tworzonej aplikacji
  • profiler – możliwość sprawdzania wydajności kodu (np. szybkość działania, zajmowana pamięć, ilość zapytań do bazy oraz podgląd tych zapytań, itp.)
  • wsparcie dla testów automatycznych, możliwość pisania i uruchomienia testów jednostkowych, behawioralnych, integracyjnych, wydajnościowych, itd.

 

Narzędzia do zarządzania projektami

  • manager plików
  • wsparcie dla programowania obiektowego – wbudowana przeglądarka klas, diagram hierarchii klas, przeglądarka obiektów (właściwości, metody)
  • wsparcie dla systemów kontroli wersji (GIT, SVN, Mercurial, itp.)
  • wsparcie dla narzędzi automatycznego budowania projektów oraz systemów zarządzania zależnościami (Gradle, Maven, Composer, itp.)

 

Jednolity, intuicyjny interfejs użytkownika

  • okna i paski zadań, dostarczające przydatne opcje w zasięgu kursora myszki
  • możliwość konfiguracji i dostosowania interfejsu pod indywidualne potrzeby programisty

 

Konfigurowalność i rozszerzalność

  • możliwość dowolnej konfiguracji środowiska
  • możliwość doinstalowania wtyczek (pluginów), rozbudowujących IDE o dodatkowe funkcjonalności
  • możliwość pisania własnych wtyczek
  • możliwość używania skrótów klawiszowych i tworzenia własnych, przyśpieszających pracę

 

Narzędzia dodatkowe

  • wbudowany serwer aplikacyjny oraz bazodanowy
  • wbudowana konsola
  • kreator interfejsu użytkownika
  • wbudowany emulator aplikacji mobilnych

 

Inne

  • możliwość pracy w określonym systemie operacyjnym
  • szybkość działania
  • rozwój oprogramowania IDE przez producenta, reagowanie na ewentualne błędy lub zapotrzebowanie użytkowników
  • społeczność (community) – wsparcie ze strony innych użytkowników korzystających z IDE oraz pomoc
  • licencja oraz cena

 

 

 

Podział i przykłady środowisk

 

Podział ze względu na wspierane platformy i/lub języki programowania

IDE dedykowane do pracy z wieloma językami (Multi-Language IDE) – bardzo wiele IDE wspiera więcej niż tyko jeden język programowania, zazwyczaj podczas tworzenia nowego projektu, programista wybiera technologię, w której będzie pisana aplikacja; przykłady: Eclipse, NetBeans, Microsoft Visual Studio, Visual Studio Code

IDE dedykowane dla jednego języka lub technologii – niektóre programy są dedykowane wyłącznie dla ściśle określonego języka programowania lub konkretnej grupy rozwiązań technologicznych (np. rozwiązania Microsoft lub Apple), tego typu oprogramowanie wspiera również różnego rodzaju frameworki i biblioteki przeznaczone do tworzenia aplikacji w tych językach; przykłady: aplikacje JetBarins (InteliJ Idea, PHP Storm, PyCharm, itp.) , XCode (Objective-C, Swift dla iOS i Mac)

IDE dedykowane do tworzenia aplikacji mobilnych – zawierają szereg narzędzi przydatnych w procesie tworzenia aplikacji mobilnych, np. wbudowane emulatory urządzeń mobilnych (komórek, tabletów), różnego rodzaju kreatory mobilnych interfejsów użytkownika, itp.; przykłady: Android Studio firmy JetBrains, wspierane przez Google

IDE dostępne w chmurze (Web IDE lub Cloud IDE) – od jakiegoś czasu trwają próby przeniesienia środowisk programistycznych do sieci, tak aby dostęp do nich był możliwy przy pomocy przeglądarek internetowych, takie rozwiązania mają swoje oczywiste zalety ale również wiele ograniczeń, na obecną chwilę tego rodzaju programy nie są zbytnio popularne; przykłady: Eclipse Che, AWS Cloud9

 

Najwięksi producenci oprogramowania IDE

Do największych producentów oprogramowania IDE należą:

  • Microsoft: Microsoft Visual Studio, Visual Studio Code
  • JetBrains: IntelliJ Idea (Java), PyCharm (Python), PhpStorm (PHP), WebStorm (JavaScript), Rider (.NET), CLion (C, C++), RubyMine (Ruby), AppCode (iOS, macOS), GoLand (Go),
  • Oracle: NetBeans (Java, JavaScript, PHP, Python, Ruby, C, C++, i inne)
  • Eclipse Foundation: Eclipse Java IDE, Eclipse C/C++ IDE, Eclipse PHP IDE, Eclipse Che
  • Apple: XCode (Objective-C, Swift)

Oczywiście na rynku istnieje o wiele więcej produktów, jednak te wymienione powyżej zdecydowanie plasują się w czołówce popularności użycia IDE.

 

Popularność IDE na rynku

Popularność IDE wśród programistów języka Java (2255 badanych użytkowników) – lipiec 2016r. Dla porównania, wg tych samych badań w 2014 roku Eclipse posiadał 52% rynku, IntelliJ Idea 33%.

Popularność IDE dla języków Java - 2016 r.

Źródło: baeldung.com/java-ides-2016

 

Popularność IDE wśród programistów C/C++ – luty 2018:

Popularność IDE wśród programistów C i C++ - 2018r.

Źródło: blog.davidecoppola.com/2018/02/market-share-most-used-c-cpp-ides-in-2018-statistics-estimates/

 

Popularność IDE w wynikach wyszukiwania Google – maj 2018:

Popularność IDE w wynikach wyszukiwarki Google - maj 2018 r.

Źródło: pypl.github.io/IDE.html – The PYPL Index (PopularitY of Programming Language)

 

Popularność wykorzystywanego przez programistów oprogramowania IDE wg. ankiety przeprowadzonej przez serwis stackoverflow.com w roku 2019:

Stackoverflow IDE survey 2019

Źródło: insights.stackoverflow.com/survey/2019#development-environments-and-tools

 

Podsumowanie

Obecnie trudno wyobrazić sobie proces wytwarzania oprogramowania bez korzystania z dobrego IDE. Narzędzia to uławia w znacznym stopniu zarządzanie kodem projektu oraz pracę z wybranymi technologiami i językami. W tym artykule starałem się uchwycić najważniejsze aspekty zintegrowanych środowisk programistycznych, przedstawić ich najważniejsze cechy oraz korzyści płynące z ich użycia, a także w jaki sposób wygląda współczesny rynek IDE.