I migliori editor di programmazione? Una battaglia senza fine senza un chiaro vincitore
Pubblicato: 2022-03-11Indipendentemente dall'apparente evidenza del contrario, i programmatori sono esseri umani. E, come tutti gli esseri umani, ci piace trarre vantaggio dalla nostra libertà di scelta. Che si tratti di prendere la pillola rossa o blu, indossare un vestito o dei pantaloni o utilizzare un ambiente di sviluppo piuttosto che un altro, la scelta che facciamo ci colloca in un gruppo di persone o in un altro. La scelta, inevitabilmente, viene dopo la nostra valutazione delle opzioni. E dopo aver fatto una scelta, tendiamo a credere che chi sceglie diversamente abbia commesso un errore.
Puoi facilmente cercare in Internet e trovare centinaia di dibattiti su Emacs vs Vim. Anche se li leggi tutti, sarà impossibile scegliere oggettivamente un vincitore. Tuttavia, la scelta dell'ambiente di sviluppo ti dice qualcosa sulla qualità del lavoro che uno sviluppatore può offrire? Assolutamente no!
Un grande sviluppatore potrebbe scrivere il suo codice in Blocco note e continuare a fornire grandi cose.
Certamente, ci sono molte cose che i professionisti prendono in considerazione quando scelgono gli strumenti per il loro lavoro. Questo vale per ogni professione, incluso lo sviluppo di software. Molto spesso, però, la selezione si basa sul gusto personale, non su qualcosa di facilmente tangibile.
I programmatori trascorrono la maggior parte del loro tempo a guardare l'ambiente di sviluppo, quindi è naturale che vogliamo qualcosa di carino oltre che funzionale. Ogni ambiente di sviluppo ha i suoi pro e contro. Nel complesso, sono una forza trainante del settore dello sviluppo software.
Quali sono le cose che uno sviluppatore dovrebbe valutare quando sceglie un set di strumenti di programmazione come un editor di programmazione preferito? La risposta a questa domanda non è così semplice come potrebbe sembrare. Lo sviluppo del software è vicino a un'arte e ci sono pochi fattori "sfocati" che separano un capolavoro da un oggetto da collezione troppo caro.
Ogni linguaggio di programmazione, che si tratti di Java, C#, PHP, Python, Ruby, JavaScript e così via, ha le proprie pratiche di sviluppo relative alla struttura del progetto, al debug e alla distribuzione. Tuttavia, una cosa che tutti hanno in comune è la modifica del codice. In questo articolo valuteremo diverse piattaforme di sviluppo dal punto di vista del compito più comune nello sviluppo del software: la scrittura del codice.
IDE vs Editor di testo per uso generico
Un ambiente di sviluppo integrato (IDE) (o ambiente di sviluppo interattivo) è un'applicazione software che fornisce servizi completi ai programmatori di computer per lo sviluppo del software. Un IDE normalmente consiste in un editor di codice sorgente, strumenti di automazione della build e un debugger e molti supportano molti plug-in ed estensioni aggiuntivi.
Gli editor di testo sono applicazioni più semplici. Rispetto agli IDE, di solito corrispondono solo al segmento dell'editor di codice di un IDE. Tuttavia, spesso sono molto di più. Gli IDE sono creati per servire lo scopo dello sviluppo del software, mentre molti editor di testo sono progettati per essere utilizzati anche da non sviluppatori.
I linguaggi di tipo statico possono ottenere molti vantaggi dagli IDE. A causa delle rigide regole di digitazione, è possibile che l'IDE rilevi bug e incoerenze di denominazione tra classi e moduli e anche tra file, direttamente nell'editor, prima della compilazione. Questa funzionalità viene fornita di serie con molti IDE e, per questo motivo, gli IDE sono molto popolari per i linguaggi tipizzati statici.
Tuttavia, è impossibile fare la stessa cosa per i linguaggi tipizzati dinamicamente. Ad esempio, se un nome di metodo può essere generato dal codice stesso, costruito da una serie di string concat, il tentativo di rilevare gli errori di denominazione nei linguaggi dinamici non richiede altro che l'esecuzione del programma vero e proprio. Poiché uno dei principali vantaggi degli IDE non si applica ai programmatori di linguaggi dinamici, hanno una maggiore tendenza a rimanere con editor di testo come Sublime. Come nota a margine, questo è anche uno dei motivi principali per cui il movimento di sviluppo basato sui test è cresciuto attorno a comunità linguistiche dinamiche e non ha avuto un seguito così forte nei linguaggi statici.
Cosa rende un ottimo editor di programmazione?
A parte una serie di caratteristiche diverse per vari linguaggi, ogni editor di programmazione deve avere un'interfaccia utente ben organizzata e pulita. Anche l'aspetto estetico generale non dovrebbe essere trascurato. Non si tratta solo di avere un bell'aspetto, poiché un editor ben progettato con la giusta scelta di caratteri e colori aiuta a ridurre l'affaticamento degli occhi e ti consente di essere più produttivo.
Nell'ambiente di sviluppo odierno, una curva di apprendimento ripida è un ostacolo, indipendentemente dal set di funzionalità. Il tempo è sempre prezioso, quindi un buon editor dovrebbe essere facile abituarsi. Idealmente, il programmatore dovrebbe essere in grado di iniziare a lavorare immediatamente, senza dover saltare troppi cerchi. Un coltellino svizzero è uno strumento pratico e utile, ma chiunque può padroneggiarlo in pochi minuti. Allo stesso modo, per gli editori di programmazione, la semplicità è una virtù.
Interfaccia utente, funzionalità e flusso di lavoro
Diamo un'occhiata più da vicino all'interfaccia utente, alle diverse funzionalità e capacità e agli strumenti utilizzati di frequente che dovrebbero far parte di qualsiasi editor di programmazione.
I numeri di riga, ovviamente, dovrebbero essere attivi per impostazione predefinita e semplici da attivare o disattivare.
I frammenti sono utili per inserire blocchi di testo standardizzati in un layout fisso. Tuttavia, la programmazione riguarda molto il dire le cose una volta sola, quindi fai attenzione agli snippet perché potrebbero rendere difficile la manutenzione del tuo codice in futuro.
La possibilità di eseguire il lint o il controllo della sintassi del file corrente è utile, così come la possibilità di avviarlo. Senza questa funzione, un programmatore deve passare a una finestra della riga di comando esterna, scegliere ed eseguire il comando corretto, quindi scorrere i messaggi di errore per trovare l'origine dell'errore. Tuttavia, la lanugine deve essere sotto il controllo del programmatore, perché il ritardo subito dalla lanugine potrebbe interrompere il programmatore in un momento cruciale.
Il documento in linea è utile fintanto che non si intromette, ma avere una pagina del browser aperta sulle definizioni delle classi a volte è più utile, specialmente quando ci sono molte classi correlate che non si estendono direttamente a vicenda. È abbastanza facile tagliare e incollare il codice dalla documentazione del browser al codice in fase di scrittura, quindi la complessità aggiuntiva della documentazione inline spesso diventa meno utile, anzi, più fastidiosa, man mano che aumenta la conoscenza della documentazione da parte del programmatore.
Il completamento delle parole è utile poiché è veloce e affidabile quasi quanto la documentazione in-edit, pur essendo meno invadente. È soddisfacente inserire solo pochi caratteri di una parola e quindi premere invio per ottenere il resto. Altrimenti, si lavora sotto lo sforzo di una digitazione eccessiva, aborrita dai programmatori pigri, che vogliono digitare ee
piuttosto che il più lungo exponentialFunctionSquared
. Il completamento delle parole soddisfa riducendo al minimo la digitazione, applicando una denominazione coerente e non intralciando.
Rinominare variabili e funzioni nel programma è utile, ma devi essere in grado di rivedere le modifiche e assicurarti che il tuo codice non sia danneggiato. Anche in questo caso, il completamento delle parole è un'utile via di mezzo, in quanto funziona per tutte le lingue; puoi usare nomi lunghi per elementi che hanno una lunga durata, senza incorrere in un sovraccarico di digitazione. Puoi utilizzare i riferimenti ad essi tramite un nome più breve localmente, al fine di abbreviare le espressioni che altrimenti potrebbero diffondersi su troppe righe. Se è necessario rinominare, i nomi lunghi sono univoci, quindi questo approccio funziona in tutte le lingue e in tutti i file.
I file di origine a volte possono crescere molto. La piegatura del codice è una bella funzionalità che semplifica la lettura di file lunghi.
Trova/modifica con limitazione dell'ambito a locale, incrementale o globale con metacaratteri ed espressioni regolari fa parte del requisito minimo di questi tempi, così come l'evidenziazione della sintassi.

Panoramica dei più diffusi editor di programmazione
Nel corso degli anni sono passato attraverso diversi editori, e questo è quello che penso di loro:
Emacs: uno degli editor più popolari al mondo. La più grande caratteristica di Emacs è la sua estensibilità, nonostante la complessità del suo linguaggio di estensione (puoi persino giocare a Tetris con
Mx tetris
). I fan di Emacs considerano la sua interfaccia basata su terminale un'ottima funzionalità, mentre altri potrebbero discutere sul fatto che sia uno svantaggio. Nella mia esperienza personale, ho trovato troppo da adottare e imparare. Sono sicuro che se sai usare Emacs non userai mai nient'altro, ma affrontare e imparare l'intera cultura è stato più di quanto volessi fare. Tuttavia, la sua popolarità tra gli sviluppatori dimostra che è ben lungi dall'essere una reliquia dei vecchi tempi e rimane anche parte del nostro futuro.Vi/Vim: Vim è un altro potente editor basato su terminale e viene fornito di serie con la maggior parte dei sistemi operativi xNIX. Oltre ad avere un'interfaccia diversa da Emacs, il mio punto di vista è praticamente lo stesso. Se ci sei cresciuto, sono sicuro che non userai mai nient'altro. Avere abilità Vi renderà la tua vita molto più semplice quando operi tramite SSH e altri punti ristretti e non avrai problemi con la velocità, una volta che avrai acquisito familiarità con le sequenze di tasti. Sebbene non sia difficile da decifrare come Emacs, la curva di apprendimento è ancora piuttosto ripida e potrebbe sicuramente utilizzare alcune belle funzionalità di un editor con finestre.
SublimeText: fedele al suo nome, SublimeText è un bellissimo editor di testo con tonnellate di funzionalità. A differenza di altri editor simili, SublimeText è closed source, quindi non può essere modificato a basso livello. SublimeText offre la semplicità dei tradizionali editor di testo, con un'interfaccia utente snella e veloce. Molti sviluppatori lo trovano più facile da usare rispetto a Vim, e questo è particolarmente vero per i nuovi arrivati. La curva di apprendimento non è così ripida. Sebbene l'interfaccia utente sia minima e semplice, SublimeText offre alcune caratteristiche interessanti, come un codice di visualizzazione ridotto a destra dell'interfaccia utente, che consente agli utenti di scorrere rapidamente il proprio codice e navigare con relativa facilità. Sebbene non sia completamente gratuito, la versione demo con funzionalità limitate lo è. Sbloccare tutte le funzionalità ti costerà $ 70.
Atom è il risultato di uno sforzo GitHub per produrre un editor di programmazione per una nuova generazione di sviluppatori. Sebbene sia ancora in lavorazione, Atom è un editor molto capace con una vivace comunità di sviluppatori appassionati di nuove estensioni, librerie JavaScript e altro ancora. Gli aspetti negativi includono alcune stranezze dell'interfaccia utente, la possibilità che alcuni pacchetti aggiuntivi possano comportarsi in modo anomalo e problemi di prestazioni segnalati quando si lavora con file (molto) grandi. Ma il progetto è in fase di sviluppo attivo ed è probabile che le attuali carenze siano migliorate. Atom è un progetto open source e può essere facilmente hackerato per soddisfare le tue esigenze.
Nano: eccellente in un angolo stretto, ma non abbastanza ricco di funzionalità per evitare che l'inevitabile pensiero si insinui nella mente che ci deve essere un modo più veloce per farlo mentre si lotta attraverso le sequenze di tasti per far rientrare un blocco di codice, mantenendo i commenti allineati in alto nella colonna 80! Non ha nemmeno l'evidenziazione del testo e non dovrebbe essere utilizzato per nient'altro che per le modifiche al file di configurazione.
TextMate2: il più grande svantaggio di TextMate è che funziona solo su Mac. Come affermano i suoi creatori, "TextMate porta l'approccio di Apple ai sistemi operativi nel mondo degli editor di testo". Unendo le basi UNIX e la GUI, TextMate seleziona il meglio di entrambi i mondi, a vantaggio sia degli esperti di script che degli utenti inesperti. È l'editor preferito da molti sviluppatori Ruby, Python e JavaScript, con un ottimo supporto anche per Bash o Markdown. Al momento della pubblicazione di questo articolo TextMate 2 è ancora in Beta, ma ha già un ecosistema di plugin molto maturo che promette di estenderlo anche oltre le estensioni di Emacs.
jEdit: basato su Java e considerato lento da alcuni. La configurazione pronta all'uso potrebbe allontanare alcune persone, ma jEdit può essere estremamente veloce se configurato correttamente, oltre che estremamente bello.
Eclipse: un altro IDE ampiamente utilizzato, Eclipse è molto popolare tra gli sviluppatori Java, ma è stato adattato a molte piattaforme diverse. Potremmo sostenere che la sua architettura monolitica è una roccia che lo tirerà sott'acqua, ma è ancora una delle piattaforme più popolari tra gli sviluppatori.
Aptana Studio: un IDE completo di applicazioni Web open source. È disponibile come plug-in Eclipse, il che lo rende popolare tra alcuni sviluppatori Java. La versione standalone è ancora più snella e offre una gamma di temi e opzioni di personalizzazione diversi. Le capacità di gestione dei progetti di Aptana possono tornare utili anche ai programmatori che hanno affinato le proprie abilità in Eclipse. Sebbene le versioni precedenti soffrissero di problemi di prestazioni su alcune piattaforme hardware, questi problemi sono stati risolti in Aptana Studio 3 e dovrebbero appartenere al passato.
NetBeans: un altro IDE open source relativamente popolare con supporto multipiattaforma. È un po' più lento all'avvio rispetto a editor snelli come SublimeText e la scelta dei componenti aggiuntivi è limitata rispetto ad alcune alternative. Molti sviluppatori Java hanno imparato ad amare NetBeans grazie alla perfetta integrazione SCM e al supporto HTML5. Anche il supporto NetBeans per PHP è migliorato nelle ultime versioni.
JetBrains: offre una famiglia di IDE per Java, Ruby, Python e PHP. Sono tutti basati sullo stesso motore principale. Molto capaci di per sé, gli IDE JetBrains stanno guadagnando un seguito crescente. Tuttavia, non sono soluzioni open source gratuite, sebbene sia disponibile una versione di prova di 30 giorni e il prezzo sia ragionevole.
Komodo Edit: Komodo Edit ha un grande potenziale, eppure è pieno di fastidiosi piccoli "problemi" e idiosincrasie che possono essere frustranti per la sua mancanza di ortogonalità. Komodo Edit sembra disordinato, il che è un peccato perché ha chiaramente enormi capacità. Continuo a tornare a Komodo Edit nella speranza di aver perso qualche principio organizzativo e ogni volta vengo respinto da una marea di capacità disorganizzate.
Geany: Geany non è un grande giocatore di potere come molti degli altri editori in questo elenco. È definito più da "ciò che non è" che da "ciò che è". Non è lento, non ha molta eredità dei vecchi tempi, non ha una capacità macro o molto di una capacità di buffer multi-finestra. Eppure le cose che fa, lo fa abbastanza bene. È, forse, il meno impegnativo di tutti gli editor che ho provato e posso ancora fare il 90 percento di ciò che ti aspetteresti da un editor di programmatore. Geany sembra abbastanza buono su Ubuntu, motivo per cui l'ho scelto come mio editor preferito.
La mia conclusione
Sarebbe presuntuoso dichiararne uno solo come il miglior editor di programmazione tra questi fantastici strumenti. E ci sono parecchi editor che non ho nemmeno provato. Non esiste una soluzione valida per tutti. Questo è ciò che mi ha spinto a provare diversi editor; se sei più interessato alla longevità dell'editor, ti consigliamo di leggere anche la valutazione di Roben Kleene degli editor di codice.
Attualmente sto usando Geany, ma è perché si adatta ai requisiti che ho. Con Geany e molto aiuto da Perl/Gimp/Audacity/Sox, sono in grado di sviluppare e mantenere la base di codice Java per le app Android che sviluppo, prepararle per la compilazione in diverse configurazioni per più distributori, sorgente, lint , compila, descrivi e produci file .apk
e distribuisci queste app a livello globale.
La tua linea di sviluppo potrebbe prescrivere un diverso insieme di requisiti e spero di averti risparmiato un po' di tempo nella ricerca degli editor di programmazione più appropriati.