Podstawowym narzędziem programisty jest IDE, czyli aplikacja udostępniająca szereg funkcjonalności pozwalających na efektywną pracę z kodem 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.

Stanisław Molitorys. Deweloper z Rzeszowa, zajmujący się projektowaniem, tworzeniem oraz wdrażaniem serwisów i aplikacji internetowych, głównie w technologiach PHP i JavaScript. W swojej kilkuletniej karierze zawodowej pracował przy różnych projektach, zarówno małych stronach jak i rozbudowanych aplikacjach. W wolnych chwilach lubi pojeździć na rowerze i ugotować coś z kuchni włoskiej.

Ogólna charakterystyka i zalety korzystania z IDE

IDE (Integrated Development Environment) to oprogramowanie służące do tworzenia, modyfikowania, testowania i utrzymywania aplikacji, z myślą o jak największej produktywności programisty. Współczesne IDE są rozbudowanymi narzędziami, składającymi się z zestawu aplikacji i tworzącymi tzw. środowisko programistyczne. Udostępniają złożone funkcjonalności obejmujące 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,

– 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,

– 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,

– 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 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,

: 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),

: 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),

: NetBeans (Java, JavaScript, PHP, Python, Ruby, C, C++, i inne), Eclipse Foundation : Eclipse Java IDE, Eclipse C/C++ IDE, Eclipse PHP IDE, Eclipse Che,

: 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, według tych samych badań w 2014 roku Eclipse posiadał 52% rynku, IntelliJ Idea 33%.

Źródło:

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

Źródło:

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

Źródło: pypl.github.io

Popularność wykorzystywanego przez programistów oprogramowania IDE według ankiety przeprowadzonej przez serwis w roku 2019:

Źródło:

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.

Artykuł został pierwotnie opublikowany na Zdjęcie główne artykułu pochodzi z

Jarosław Kułak
Jarosław Kułak

Leave a Comment