Cei mai buni editori de programare? O bătălie fără sfârșit fără un câștigător clar
Publicat: 2022-03-11Indiferent de dovezile aparente care arată contrariul, programatorii sunt oameni. Și, ca tuturor oamenilor, ne place să profităm de libertatea noastră de alegere. Fie că alegerea este să luăm pilula roșie sau cea albastră, purtarea unei rochii sau pantaloni sau folosirea unui mediu de dezvoltare în detrimentul altuia, alegerea pe care o facem ne plasează într-un grup de oameni sau altul. Alegerea, inevitabil, vine după evaluarea opțiunilor noastre. Și, după ce am făcut o alegere, avem tendința de a crede că oricine alege diferit a făcut o greșeală.
Puteți căuta cu ușurință pe internet și puteți găsi sute de dezbateri despre Emacs vs Vim. Chiar dacă le vei citi pe toate, va fi imposibil să alegi obiectiv un câștigător. Cu toate acestea, alegerea mediului de dezvoltare vă spune ceva despre calitatea muncii pe care o poate furniza un dezvoltator? Absolut nu!
Un dezvoltator grozav ar putea să-și scrie codul în Notepad și să ofere în continuare lucruri grozave.
Cu siguranță, există o mulțime de lucruri pe care profesioniștii iau în considerare atunci când selectează instrumentele pentru munca lor. Acest lucru este valabil pentru fiecare profesie, inclusiv pentru dezvoltarea de software. Destul de des, însă, selecția se bazează pe gustul personal, nu pe ceva ușor de tangibil.
Programatorii își petrec cea mai mare parte a timpului uitându-se la mediul de dezvoltare, așa că este firesc să ne dorim ceva frumos și funcțional. Fiecare mediu de dezvoltare are avantajele și dezavantajele sale. În ansamblu, ei reprezintă o forță motrice a industriei de dezvoltare software.
Care sunt lucrurile pe care un dezvoltator ar trebui să le evalueze atunci când alege un set de instrumente de programare, cum ar fi un editor de programare la alegere? Răspunsul la această întrebare nu este atât de simplu pe cât ar putea suna. Dezvoltarea de software este aproape de o artă și există destul de puțini factori „fuzzy” care separă o capodopera de un obiect de colecție prea prețuit.
Fiecare limbaj de programare, fie că este Java, C#, PHP, Python, Ruby, JavaScript și așa mai departe, are propriile practici de dezvoltare legate de structura proiectului, depanare și implementare. Cu toate acestea, un lucru pe care toți au în comun este editarea codului. În acest articol vom evalua diferite platforme de dezvoltare din perspectiva celei mai frecvente sarcini în dezvoltarea de software: scrierea codului.
IDE vs Editor de text cu scop general
Un mediu de dezvoltare integrat (IDE) (sau mediu de dezvoltare interactiv) este o aplicație software care oferă facilități complete programatorilor de calculatoare pentru dezvoltarea de software. Un IDE constă în mod normal dintr-un editor de cod sursă, instrumente de automatizare pentru construirea și un depanator, iar multe suportă o mulțime de pluginuri și extensii suplimentare.
Editorii de text sunt aplicații mai simple. În comparație cu IDE-urile, de obicei corespund doar segmentului de editor de cod al unui IDE. Cu toate acestea, ele sunt adesea mult mai mult decât atât. IDE-urile sunt create pentru a servi scopului dezvoltării software, în timp ce multe editoare de text sunt concepute pentru a fi utilizate și de către non-dezvoltatori.
Limbile tip static pot obține o mulțime de beneficii din IDE-uri. Datorită regulilor stricte de tastare, este posibil ca IDE să detecteze erori și inconsecvențele de denumire între clase și module și chiar între fișiere, direct în editor, înainte de compilare. Această funcționalitate vine standard cu multe IDE-uri și, din acest motiv, IDE-urile sunt foarte populare pentru limbajele tip static.
Cu toate acestea, este imposibil să faci același lucru pentru limbile tip dinamic. De exemplu, dacă un nume de metodă poate fi generat de codul însuși, construit dintr-o serie de concat de șiruri, încercarea de a detecta erorile de denumire în limbaje dinamice nu necesită nimic mai puțin decât rularea programului propriu-zis. Deoarece unul dintre avantajele majore ale IDE-urilor nu se aplică programatorilor de limbaje dinamice, aceștia au o tendință mai mare de a rămâne cu editori de text precum Sublime. Ca o notă secundară, acesta este, de asemenea, un motiv major pentru care mișcarea de dezvoltare bazată pe teste a crescut în jurul comunităților lingvistice dinamice și nu a avut un număr atât de puternic în limbile statice.
Ce face un editor de programare grozav?
Pe lângă o serie de caracteristici diferite pentru diferite limbi, fiecare editor de programare trebuie să aibă o interfață de utilizator bine organizată și curată. Nici atractivitatea estetică generală nu trebuie trecută cu vederea. Nu este doar o chestiune de a arăta bine, deoarece un editor bine conceput, cu alegerea corectă a fontului și a culorilor, ajută la menținerea oboselii vizuale și vă permite să fiți mai productiv.
În mediul de dezvoltare actual, o curbă abruptă de învățare este o răspundere, indiferent de setul de caracteristici. Timpul este întotdeauna valoros, așa că un editor bun ar trebui să fie ușor de obișnuit. În mod ideal, programatorul ar trebui să poată începe lucrul imediat, fără a fi nevoit să sară prin prea multe cercuri. Un cuțit elvețian este un instrument practic și util, dar oricine îl poate stăpâni în câteva minute. La fel, pentru editorii de programare, simplitatea este o virtute.
Interfață cu utilizatorul, caracteristici și flux de lucru
Să aruncăm o privire mai atentă asupra interfeței de utilizare, a diferitelor caracteristici și capacități și a instrumentelor utilizate frecvent care ar trebui să facă parte din orice editor de programare.
Numerele liniilor, desigur, ar trebui să fie activate în mod implicit și ușor de activat sau dezactivat.
Fragmentele sunt utile pentru inserarea blocurilor standardizate de text într-un aspect fix. Cu toate acestea, programarea înseamnă mult să spui lucruri o singură dată, așa că fii atent la fragmente, deoarece ar putea face codul tău greu de întreținut în viitor.
Capacitatea de a lint, sau de a verifica sintaxă, fișierul curent este utilă, la fel ca și capacitatea de a-l lansa. Fără această facilitate, un programator trebuie să treacă la o fereastră externă de linie de comandă, să aleagă și să ruleze comanda corectă, apoi să parcurgă mesajele de eroare pentru a găsi sursa erorii. Cu toate acestea, scamele trebuie să fie sub controlul programatorului, deoarece întârzierea suferită de scame ar putea întrerupe codificatorul într-un moment crucial.
Documentul inline este util atâta timp cât nu vă împiedică, dar a avea o pagină de browser deschisă pe definițiile claselor este uneori mai util, mai ales când există o mulțime de clase înrudite care nu se extind direct reciproc. Este destul de ușor să tăiați și să lipiți codul din documentația browserului în codul care este scris, astfel încât complexitatea suplimentară a documentației inline devine adesea mai puțin utilă, într-adevăr, mai enervantă, pe măsură ce cunoștințele programatorului despre documentație cresc.
Completarea cuvintelor este utilă, deoarece este rapidă și aproape la fel de fiabilă ca documentația în editare, fiind în același timp mai puțin intruzivă. Este satisfăcător să introduceți doar câteva caractere dintr-un cuvânt și apoi să apăsați enter pentru a obține restul. În caz contrar, lucrăm sub presiunea tastării în exces, detestată de programatorii leneși, care doresc să tastați ee
mai degrabă decât exponentialFunctionSquared
, mai lung. Completarea cuvintelor satisface prin reducerea la minimum a tastării, impunerea denumirii coerente și prin faptul că nu vă împiedică.
Redenumirea variabilelor și funcțiilor din program este utilă, dar trebuie să puteți revizui modificările și să vă asigurați că codul nu este rupt. Din nou, completarea cuvintelor este un mijloc util, deoarece funcționează pentru toate limbile; puteți folosi nume lungi pentru articole care au o durată lungă de viață, fără a suporta o suprasarcină de tastare. Puteți folosi referințe la ele printr-un nume mai scurt la nivel local, pentru a scurta expresii care altfel s-ar putea răspândi pe prea multe rânduri. Dacă trebuie să redenumiți, numele lungi sunt unice, așa că această abordare funcționează în toate limbile și în toate fișierele.
Fișierele sursă pot crește uneori foarte mult. Plierea codului este o caracteristică plăcută care simplifică citirea prin fișiere lungi.
Găsirea/modificarea cu limitarea domeniului la local, incremental sau global cu meta caractere și expresii regulate fac parte din cerința minimă în prezent, la fel ca evidențierea sintaxei.

Prezentare generală a editorilor de programare populari
De-a lungul anilor, am trecut prin mai mulți editori și asta este ceea ce cred despre ei:
Emacs: Unul dintre cei mai populari editori din lume. Cea mai mare caracteristică a Emacs este extensibilitatea sa, în ciuda complexității limbajului său de extensie (puteți chiar juca Tetris în el cu
Mx tetris
). Fanii Emacs consideră că interfața sa pe terminale este o caracteristică excelentă, în timp ce alții ar putea dezbate că este un dezavantaj. Din experiența mea personală, mi s-a părut prea mult de adoptat și de învățat. Sunt sigur că, dacă știi să folosești Emacs, nu vei folosi niciodată altceva, dar să asum și să înveți întreaga cultură a fost mai mult decât mi-am dorit să fac. Cu toate acestea, popularitatea sa în rândul dezvoltatorilor demonstrează că este departe de a fi o relicvă a vremurilor vechi și rămâne și o parte a viitorului nostru.Vi/Vim: Vim este un alt editor puternic bazat pe terminal și vine standard cu majoritatea sistemelor de operare xNIX. Pe lângă faptul că am o interfață diferită de Emacs, punctul meu de vedere este practic același. Dacă ai crescut cu el, sunt sigur că nu vei folosi niciodată altceva. Având abilități Vi, îți va face viața mult mai simplă atunci când operezi prin SSH și alte puncte înguste și nu vei avea probleme cu viteza, odată ce te familiarizezi cu apăsarea tastelor. Deși nu este la fel de greu de folosit ca Emacs, curba de învățare este încă destul de abruptă și cu siguranță ar putea folosi câteva caracteristici frumoase ale unui editor cu ferestre.
SublimeText: fidel numelui său, SublimeText este un editor de text frumos, cu o mulțime de funcții. Spre deosebire de unii editori similari, SublimeText este sursă închisă, deci nu poate fi modificat la un nivel scăzut. SublimeText oferă simplitatea editorilor de text tradiționali, cu o interfață de utilizare simplă și rapidă. Mulți dezvoltatori consideră că este mai ușor de utilizat decât Vim, iar acest lucru este valabil mai ales pentru nou-veniți. Curba de învățare nu este la fel de abruptă. În timp ce interfața de utilizare este minimă și simplă, SublimeText oferă câteva funcții ingenioase, cum ar fi un cod de afișare redus în partea dreaptă a interfeței de utilizare, permițând utilizatorilor să deruleze rapid prin codul lor și să navigheze cu relativă ușurință. Deși nu este complet gratuit, versiunea demo cu funcții limitate este. Deblocarea tuturor funcțiilor vă va costa 70 USD.
Atom este rezultatul unui efort GitHub de a produce un editor de programare pentru o nouă generație de dezvoltatori. Deși este încă o lucrare în desfășurare, Atom este un editor foarte capabil, cu o comunitate vibrantă de dezvoltatori dornici de noi extensii, biblioteci JavaScript și multe altele. Dezavantajele includ unele neplăceri ale interfeței de utilizare, posibilitatea ca unele pachete de suplimente să se poată comporta greșit și probleme de performanță raportate atunci când lucrați cu fișiere (foarte) mari. Dar proiectul este în curs de dezvoltare activă, iar deficiențele actuale sunt probabil să fie îmbunătățite. Atom este un proiect open source și poate fi piratat cu ușurință pentru a se potrivi nevoilor dvs.
Nano: Excelent într-un colț strâns, dar nu suficient de bogat în funcții pentru a preveni inevitabilul gând să se strecoare în mintea cuiva că trebuie să existe o modalitate mai rapidă de a face acest lucru în timp ce cineva se luptă prin apăsarea tastelor pentru a indenta un bloc de cod, păstrând comentariile rânduite. sus în coloana 80! Nu are nici măcar evidențierea textului și nu ar trebui folosit pentru altceva decât pentru modificări ale fișierului de configurare.
TextMate2: cel mai mare dezavantaj al TextMate este că rulează doar pe Mac. După cum au spus creatorii săi, „TextMate aduce abordarea Apple a sistemelor de operare în lumea editorilor de text”. Prin legături între bazele UNIX și GUI, TextMate alege tot ce este mai bun din ambele lumi, în beneficiul scriptorilor experți și al utilizatorilor începători. Este editorul ales pentru mulți dezvoltatori Ruby, Python și JavaScript, cu suport excelent și pentru Bash sau Markdown. În momentul publicării acestui articol, TextMate 2 este încă în versiune Beta, dar are deja un ecosistem de pluginuri foarte matur care promite să-l extindă chiar și dincolo de extensiile lui Emacs.
jEdit: bazat pe Java și considerat lent de unii. Configurația din cutie poate alunga anumite persoane, dar jEdit poate fi extrem de rapid dacă este configurat corect, precum și un aspect extrem de frumos.
Eclipse: Un alt IDE utilizat pe scară largă, Eclipse este foarte popular printre dezvoltatorii Java, dar a fost adaptat la multe platforme diferite. Am putea argumenta că arhitectura sa monolitică este o piatră care o va trage sub apă, dar este încă una dintre cele mai populare platforme în rândul dezvoltatorilor.
Aptana Studio: O aplicație web cu sursă deschisă cuprinzătoare IDE. Este disponibil ca un plugin Eclipse, ceea ce îl face popular în rândul unor dezvoltatori Java. Versiunea independentă este și mai slabă și oferă o gamă de teme diferite și opțiuni de personalizare. Capacitățile Aptana de management de proiect pot fi, de asemenea, utile pentru programatorii care și-au perfecționat abilitățile în Eclipse. În timp ce versiunile anterioare au suferit de probleme de performanță pe unele platforme hardware, aceste probleme au fost abordate în Aptana Studio 3 și ar trebui să aparțină trecutului.
NetBeans: Un alt IDE open-source relativ popular cu suport multiplatform. Este ceva mai lent la pornire decât editorii lean precum SublimeText, iar alegerea suplimentelor este limitată în comparație cu unele alternative. Mulți dezvoltatori Java au ajuns să iubească NetBeans datorită integrării SCM fără probleme și suportului HTML5. Suportul NetBeans pentru PHP s-a îmbunătățit și în cele mai recente versiuni.
JetBrains: Oferă o familie de IDE-uri pentru Java, Ruby, Python și PHP. Toate sunt bazate pe același motor de bază. Foarte capabile în sine, IDE-urile JetBrains au câștigat un număr tot mai mare de utilizatori. Cu toate acestea, nu sunt soluții gratuite, open-source, deși este disponibilă o versiune de încercare de 30 de zile, iar prețul este rezonabil.
Komodo Edit: Komodo Edit are un mare potențial și, totuși, este plin de mici „probleme” și idiosincrazii enervante care pot fi frustrante din cauza lipsei sale de ortogonalitate. Komodo Edit se simte aglomerat, ceea ce este păcat, deoarece are în mod clar o capacitate imensă. Mă întorc în continuare la Komodo Edit în speranța că am ratat un principiu de organizare și de fiecare dată sunt învins de o mulțime de capacități dezorganizate.
Geany: Geany nu este un jucător important ca mulți dintre ceilalți editori din această listă. Este definit mai mult prin „ceea ce nu este” decât „ceea ce este”. Nu este lent, nu are o mulțime de moștenire din vremurile vechi, nu are o capacitate macro sau o multă fereastră cu capacitatea de tampon. Cu toate acestea, lucrurile pe care le face, le face destul de bine. Este, probabil, cel mai puțin solicitant dintre toți editorii pe care l-am încercat și încă pot face 90 la sută din ceea ce v-ați aștepta de la un editor de programator. Geany arată suficient de bine pe Ubuntu, care este unul dintre motivele pentru care l-am ales ca editor preferat.
Concluzia mea
Ar fi presumptuos să declarăm doar unul drept cel mai bun editor de programare dintre aceste instrumente grozave. Și sunt destul de mulți editori pe care nici nu i-am încercat. Nu există o soluție unică pentru toate. Acesta este ceea ce m-a determinat să încerc o serie de editori diferiți; dacă sunteți mai interesat de longevitatea editorului, veți dori să citiți și evaluarea lui Roben Kleene a editorilor de cod.
În prezent folosesc Geany, dar pentru că se potrivește cerințelor pe care le am. Cu Geany și mult ajutor de la Perl/Gimp/Audacity/Sox, sunt capabil să dezvolt și să mențin baza de cod Java pentru aplicațiile Android pe care le dezvolt, să le pregătesc pentru compilare în diferite configurații pentru mai mulți distribuitori, sursă, scame , compilați, dex și produceți fișiere .apk
și furnizați aceste aplicații la nivel global.
Linia dvs. de dezvoltare ar putea prescrie un set diferit de cerințe și sper că v-am economisit ceva timp în căutarea celor mai potrivite editoare de programare.