Najlepsi edytorzy programistyczni? Niekończąca się bitwa bez wyraźnego zwycięzcy
Opublikowany: 2022-03-11Niezależnie od widocznych dowodów, że jest inaczej, programiści to ludzie. I, jak wszyscy ludzie, lubimy korzystać z naszej wolności wyboru. Niezależnie od tego, czy ten wybór dotyczy zażywania czerwonej lub niebieskiej pigułki, noszenia sukienki lub spodni, czy też używania jednego środowiska rozwojowego zamiast innego, wybór, którego dokonujemy, umieszcza nas w takiej czy innej grupie ludzi. Wybór nieuchronnie następuje po naszej ocenie opcji. A dokonując wyboru, wierzymy, że każdy, kto wybiera inaczej, popełnił błąd.
Możesz łatwo przeszukać Internet i znaleźć setki debat na temat Emacs vs Vim. Nawet jeśli przeczytasz je wszystkie, nie da się obiektywnie wybrać zwycięzcy. Czy jednak wybór środowiska programistycznego mówi coś o jakości pracy, jaką może dostarczyć programista? Absolutnie nie!
Świetny programista mógłby napisać swój kod w Notatniku i nadal dostarczać świetne rzeczy.
Z pewnością jest wiele rzeczy, które profesjonaliści biorą pod uwagę przy doborze narzędzi do swojej pracy. Dotyczy to każdego zawodu, w tym tworzenia oprogramowania. Dość często jednak wybór opiera się na osobistym guście, a nie na czymś łatwo namacalnym.
Programiści spędzają większość czasu przyglądając się środowisku programistycznemu, więc naturalne jest, że chcemy czegoś zarówno ładnego, jak i funkcjonalnego. Każde środowisko programistyczne ma swoje wady i zalety. Jako całość są siłą napędową branży tworzenia oprogramowania.
Jakie są rzeczy, które programista powinien ocenić, wybierając zestaw narzędzi programistycznych, takich jak wybrany edytor programowania? Odpowiedź na to pytanie nie jest tak prosta, jak mogłoby się wydawać. Tworzenie oprogramowania jest bliskie sztuce i istnieje wiele „rozmytych” czynników, które oddzielają arcydzieło od zbyt drogiego przedmiotu kolekcjonerskiego.
Każdy język programowania, czy to Java, C#, PHP, Python, Ruby, JavaScript itd., ma swoje własne praktyki programistyczne związane ze strukturą projektu, debugowaniem i wdrażaniem. Jednak ich wspólną cechą jest edytowanie kodu. W tym artykule ocenimy różne platformy programistyczne z perspektywy najczęstszego zadania w tworzeniu oprogramowania: pisania kodu.
IDE a edytor tekstu ogólnego przeznaczenia
Zintegrowane środowisko programistyczne (IDE) (lub interaktywne środowisko programistyczne) to aplikacja, która zapewnia programistom kompleksowe narzędzia do tworzenia oprogramowania. IDE zwykle składa się z edytora kodu źródłowego, narzędzi do automatyzacji kompilacji i debugera, a wiele z nich obsługuje wiele dodatkowych wtyczek i rozszerzeń.
Edytory tekstu to prostsze aplikacje. W porównaniu do IDE, zwykle odpowiadają one tylko segmentowi edytora kodu IDE. Jednak często są znacznie więcej. IDE są tworzone w celu tworzenia oprogramowania, podczas gdy wiele edytorów tekstu jest przeznaczonych do użytku również przez osoby nie będące programistami.
Języki ze statycznym typem mogą czerpać wiele korzyści z IDE. Ze względu na ścisłe reguły typowania IDE może wykryć błędy i niespójności w nazewnictwie między klasami i modułami, a nawet między plikami, bezpośrednio w edytorze, przed kompilacją. Ta funkcjonalność jest standardowo dostępna w wielu środowiskach IDE iz tego powodu IDE są bardzo popularne w przypadku języków ze statycznym typem.
Jednak nie można zrobić tego samego dla języków z typowaniem dynamicznym. Na przykład, jeśli nazwa metody może być generowana przez sam kod, skonstruowany z serii konkatów ciągów, próba wykrycia błędów nazewnictwa w językach dynamicznych nie wymaga niczego innego niż uruchomienie samego programu. Ponieważ jedna z głównych zalet IDE nie dotyczy programistów języków dynamicznych, mają oni większą tendencję do trzymania się edytorów tekstu, takich jak Sublime. Na marginesie, jest to również główny powód, dla którego ruch programistyczny oparty na testach wyrósł wokół dynamicznych społeczności językowych i nie miał tak silnej popularności w językach statycznych.
Co sprawia, że jest świetnym edytorem programistycznym?
Oprócz wielu różnych funkcji dla różnych języków, każdy edytor programowania musi mieć dobrze zorganizowany i przejrzysty interfejs użytkownika. Nie można też pominąć ogólnej estetyki. Nie chodzi tylko o dobry wygląd, ponieważ dobrze zaprojektowany edytor z odpowiednim wyborem czcionek i kolorów pomaga zmniejszyć zmęczenie oczu i zwiększyć produktywność.
W dzisiejszym środowisku programistycznym, stroma krzywa uczenia się jest odpowiedzialnością, niezależnie od zestawu funkcji. Czas jest zawsze cenny, więc dobry edytor powinien być łatwy do przyzwyczajenia. W idealnej sytuacji programista powinien mieć możliwość natychmiastowego rozpoczęcia pracy, bez konieczności przeskakiwania przez zbyt wiele pętli. Szwajcarski scyzoryk wojskowy to praktyczne i przydatne narzędzie, ale każdy może go opanować w ciągu kilku minut. Podobnie dla edytorów programowania prostota jest zaletą.
Interfejs użytkownika, funkcje i przepływ pracy
Przyjrzyjmy się bliżej interfejsowi użytkownika, różnym funkcjom i możliwościom oraz często używanym narzędziom, które powinny być częścią każdego edytora programowania.
Oczywiście numery linii powinny być domyślnie włączone i łatwe do włączania lub wyłączania.
Snippety są przydatne do wstawiania standardowych bloków tekstu w stałym układzie. Jednak programowanie polega na mówieniu rzeczy tylko raz, więc uważaj na fragmenty kodu, ponieważ mogą one utrudnić utrzymanie kodu w przyszłości.
Możliwość lintowania lub sprawdzania składni bieżącego pliku jest przydatna, podobnie jak możliwość jego uruchomienia. Bez tej funkcji programista musi przełączyć się do zewnętrznego okna wiersza poleceń, wybrać i uruchomić właściwe polecenie, a następnie przejść przez komunikaty o błędach, aby znaleźć źródło błędu. Linting musi być jednak pod kontrolą programisty, ponieważ opóźnienie spowodowane przez lint może przerwać pracę kodera w kluczowym momencie.
Dokumentacja inline jest przydatna, o ile nie przeszkadza, ale otwarcie strony przeglądarki z definicjami klas jest czasami bardziej przydatne, zwłaszcza gdy istnieje wiele powiązanych klas, które nie rozszerzają się bezpośrednio. Łatwo jest wyciąć i wkleić kod z dokumentacji przeglądarki do pisanego kodu, więc dodatkowa złożoność dokumentacji wbudowanej często staje się mniej użyteczna, a nawet bardziej irytująca, w miarę jak rośnie wiedza programisty na temat dokumentacji.
Uzupełnianie tekstu jest pomocne, ponieważ jest szybkie i prawie tak niezawodne jak dokumentacja w edycji, a jednocześnie jest mniej inwazyjne. Przyjemnie jest wpisać tylko kilka znaków słowa, a następnie nacisnąć Enter, aby uzyskać resztę. W przeciwnym razie pracuje się pod obciążeniem nadmiernego pisania, brzydząc się leniwymi programistami, którzy chcą wpisać ee
zamiast dłuższej funkcji exponentialFunctionSquared
. Uzupełnianie słów jest zadowalające poprzez minimalizację pisania, egzekwowanie spójnego nazewnictwa i nie przeszkadzanie.
Zmiana nazw zmiennych i funkcji w całym programie jest przydatna, ale musisz mieć możliwość przeglądania zmian i upewniania się, że kod nie jest uszkodzony. Ponownie, uzupełnianie słów jest użytecznym rozwiązaniem pośrednim, ponieważ działa we wszystkich językach; możesz używać długich nazw dla elementów, które mają długi czas życia, bez ponoszenia kosztów związanych z pisaniem. Możesz użyć lokalnych odniesień do nich za pomocą krótszej nazwy, aby skrócić wyrażenia, które w przeciwnym razie mogłyby rozciągnąć się na zbyt wiele wierszy. Jeśli musisz zmienić nazwę, długie nazwy są unikatowe, więc to podejście działa we wszystkich językach i wszystkich plikach.
Pliki źródłowe mogą czasami bardzo urosnąć. Składanie kodu to fajna funkcja, która ułatwia czytanie długich plików.
Znajdowanie/zmiana z ograniczeniem zakresu do lokalnego, przyrostowego lub globalnego z metaznakami i wyrażeniami regularnymi jest obecnie częścią minimalnych wymagań, podobnie jak podświetlanie składni.
Przegląd popularnych edytorów programistycznych
Na przestrzeni lat przeszedłem przez wielu redaktorów i tak o nich myślę:

Emacs: Jeden z najpopularniejszych edytorów na świecie. Największą cechą Emacsa jest jego rozszerzalność, pomimo złożoności jego języka rozszerzeń (możesz nawet grać w Tetrisa z
Mx tetris
). Fani Emacsa uważają jego interfejs oparty na terminalu za świetną funkcję, podczas gdy inni mogą dyskutować, że jest to wadą. Z mojego osobistego doświadczenia stwierdziłem, że jest to zbyt wiele do przyjęcia i uczenia się. Jestem pewien, że jeśli wiesz, jak używać Emacsa, nigdy nie użyjesz niczego innego, ale przyjęcie i poznanie całej kultury było czymś więcej niż chciałem. Niemniej jednak jego popularność wśród deweloperów świadczy o tym, że daleko mu do reliktu dawnych czasów i pozostaje częścią naszej przyszłości.Vi/Vim: Vim to kolejny potężny edytor terminalowy, który jest standardowo wyposażony w większość systemów operacyjnych xNIX. Poza tym, że mam inny interfejs niż Emacs, mój pogląd jest praktycznie taki sam. Jeśli dorastałeś na tym, jestem pewien, że nigdy nie użyjesz niczego innego. Posiadanie umiejętności Vi znacznie uprości twoje życie podczas pracy przez SSH i inne ciasne miejsca, a nie będziesz miał problemów z szybkością, gdy zaznajomisz się z naciśnięciami klawiszy. Chociaż nie jest tak trudny do złapania jak Emacs, krzywa uczenia się jest nadal dość stroma i z pewnością przydałoby się kilka fajnych funkcji edytora okienkowego.
SublimeText: Zgodnie ze swoją nazwą, SublimeText to piękny edytor tekstu z mnóstwem funkcji. W przeciwieństwie do niektórych podobnych edytorów, SublimeText jest zamkniętym źródłem, więc nie można go modyfikować na niskim poziomie. SublimeText oferuje prostotę tradycyjnych edytorów tekstu z oszczędnym i szybkim interfejsem użytkownika. Wielu programistów uważa, że jest łatwiejszy w użyciu niż Vim, a dotyczy to zwłaszcza nowicjuszy. Krzywa uczenia się po prostu nie jest tak stroma. Chociaż interfejs użytkownika jest minimalny i prosty, SublimeText oferuje kilka fajnych funkcji, takich jak zmniejszony kod wyświetlania po prawej stronie interfejsu użytkownika, umożliwiając użytkownikom szybkie przewijanie kodu i nawigację ze względną łatwością. Chociaż nie jest całkowicie darmowa, wersja demonstracyjna z ograniczoną liczbą funkcji jest. Odblokowanie wszystkich funkcji kosztuje 70 USD.
Atom jest wynikiem wysiłków GitHub mających na celu stworzenie edytora programowania dla nowej generacji programistów. Chociaż wciąż trwają prace nad tym, Atom jest bardzo wydajnym edytorem z żywą społecznością programistów zainteresowanych nowymi rozszerzeniami, bibliotekami JavaScript i nie tylko. Jego wady obejmują pewne dziwactwa interfejsu użytkownika, możliwość nieprawidłowego działania niektórych pakietów dodatków i zgłaszanie problemów z wydajnością podczas pracy z (bardzo) dużymi plikami. Jednak projekt jest aktywnie rozwijany, a obecne niedociągnięcia prawdopodobnie zostaną poprawione. Atom to projekt typu open source, który można łatwo zhakować, aby odpowiadał Twoim potrzebom.
Nano: Doskonała w ciasnym kącie, ale niewystarczająco bogata w funkcje, aby zapobiec nieuniknionej myśli, która wkrada się do głowy, że musi być szybszy sposób na zrobienie tego, gdy ktoś walczy z naciśnięciami klawiszy, aby wciąć blok kodu, zachowując jednocześnie komentarze w górę w kolumnie 80! Nie ma nawet podświetlania tekstu i nie powinien być używany do niczego więcej niż zmiany pliku konfiguracyjnego.
TextMate2: Największą wadą TextMate jest to, że działa tylko na Macu. Jak to ujęli jego twórcy, „TextMate przenosi podejście Apple do systemów operacyjnych do świata edytorów tekstu”. Łącząc podstawy UNIX i GUI, TextMate wybiera to, co najlepsze z obu światów, z korzyścią zarówno dla doświadczonych skrypterów, jak i początkujących użytkowników. Jest to edytor wybierany przez wielu programistów Ruby, Python i JavaScript, ze świetnym wsparciem również dla Bash lub Markdown. W chwili publikacji tego artykułu TextMate 2 jest wciąż w wersji beta, ale ma już bardzo dojrzały ekosystem wtyczek, który obiecuje rozszerzyć go nawet poza rozszerzenia Emacsa.
jEdit: oparty na Javie i przez niektórych uważany za wolny. Konfiguracja po wyjęciu z pudełka może odepchnąć niektórych ludzi, ale jEdit może być niezwykle szybki, jeśli jest odpowiednio skonfigurowany, a także niezwykle ładnie wygląda.
Eclipse: Kolejne szeroko stosowane IDE, Eclipse, jest bardzo popularne wśród programistów Java, ale zostało przystosowane do wielu różnych platform. Można by argumentować, że jego monolityczna architektura to kamień, który wciągnie go pod wodę, ale wciąż jest to jedna z najpopularniejszych platform wśród deweloperów.
Aptana Studio: kompleksowe IDE aplikacji internetowej typu open source. Jest dostępny jako wtyczka Eclipse, dzięki czemu jest popularny wśród niektórych programistów Java. Wersja samodzielna jest jeszcze szczuplejsza i oferuje szereg różnych motywów i opcji dostosowywania. Możliwości zarządzania projektami Aptana mogą być również przydatne dla programistów, którzy doskonalili swoje umiejętności w środowisku Eclipse. Podczas gdy wcześniejsze wersje miały problemy z wydajnością na niektórych platformach sprzętowych, problemy te zostały rozwiązane w Aptana Studio 3 i powinny być przeszłością.
NetBeans: Kolejne stosunkowo popularne IDE typu open source z obsługą wielu platform. Jest nieco wolniejszy podczas uruchamiania niż edytory lean, takie jak SublimeText, a wybór dodatków jest ograniczony w porównaniu z niektórymi alternatywami. Wielu programistów Java pokochało NetBeans dzięki bezproblemowej integracji SCM i obsłudze HTML5. Wsparcie NetBeans dla PHP również zostało ulepszone w najnowszych wydaniach.
JetBrains: Oferuje rodzinę IDE dla Java, Ruby, Python i PHP. Wszystkie są oparte na tym samym silniku podstawowym. Bardzo wydajne, IDE JetBrains zyskują coraz większą popularność. Nie są to jednak bezpłatne rozwiązania typu open source, chociaż dostępna jest 30-dniowa wersja próbna, a ceny są rozsądne.
Komodo Edit: Komodo Edit ma ogromny potencjał, a jednocześnie jest pełen irytujących małych „gotchas” i dziwactw, które mogą być frustrujące z powodu braku ortogonalności. Komodo Edit wydaje się zagracony, co jest wstydem, ponieważ wyraźnie ma ogromne możliwości. Ciągle wracam do Komodo Edit w nadziei, że przegapiłem jakąś zasadę organizacyjną i za każdym razem jestem odrzucany przez nawałnicę niezorganizowanych zdolności.
Geany: Geany nie jest głównym graczem, jak wielu innych redaktorów na tej liście. Definiuje się go bardziej przez „czym nie jest” niż „czym jest”. Nie jest powolny, nie ma zbyt wiele dziedzictwa z dawnych czasów, nie ma możliwości makr, ani wielu okien w buforowaniu. Jednak to, co robi, robi wystarczająco dobrze. Jest to być może najmniej wymagający ze wszystkich edytorów, których próbowałem i nadal może zrobić 90 procent tego, czego można oczekiwać od edytora programisty. Geany wygląda wystarczająco dobrze na Ubuntu, co jest jednym z powodów, dla których wybrałem go jako swój ulubiony edytor.
Mój wniosek
Byłoby zarozumiałe, aby uznać tylko jeden z nich za najlepszy edytor programistyczny wśród tych wspaniałych narzędzi. I jest wielu redaktorów, których nawet nie próbowałem. Nie ma jednego uniwersalnego rozwiązania. To właśnie zmusiło mnie do wypróbowania wielu różnych edytorów; jeśli bardziej interesuje Cię długowieczność edytora, zechcesz również przeczytać ocenę edytorów kodu autorstwa Robena Kleene.
Obecnie używam Geany, ale to dlatego, że spełnia moje wymagania. Z Geany i dużą pomocą Perl/Gimp/Audacity/Sox jestem w stanie opracować i utrzymać bazę kodu Java dla aplikacji na Androida, które tworzę, przygotować je do kompilacji w różnych konfiguracjach dla wielu dystrybutorów, source, lint , kompilować, indeksować i tworzyć pliki .apk
oraz dostarczać te aplikacje na całym świecie.
Twoja linia rozwoju może określać inny zestaw wymagań i mam nadzieję, że zaoszczędziłem ci trochę czasu na szukaniu najbardziej odpowiednich edytorów programistycznych.