Emacs mi renderà un programmatore migliore? [chiuso]


130

Steve Yegge ha scritto un commento sul suo blog :

Tutti i più grandi ingegneri del mondo usano Emacs. I tipi di cambia-mondo. Non la grande ragazza nel cubo accanto a te. Non Fred, il fantastico ragazzo in fondo al corridoio. Sto parlando dei più grandi sviluppatori di software della nostra professione, quelli che hanno cambiato il volto del settore. James Goslings, Donald Knuths, Paul Grahams, Jamie Zawinskis, Eric Bensons. I veri ingegneri usano Emacs. Devi essere molto intelligente per usarlo bene, e ti rende incredibilmente potente se riesci a dominarlo. Vai a guardare oltre la spalla di Paul Nordstrom mentre lavora qualche volta, se non mi credi. È una vera rivelazione per qualcuno che ha usato gli IDE simili a Visual Blub .NET per tutta la sua carriera.

Emacs è l'editor di 100 anni.

L'ultima volta che ho usato un editor di testo per scrivere codice era tornato quando stavo ancora scrivendo HTML in Blocco note circa 1000 anni fa. Da allora, sono stato più o meno dipendente dall'IDE, avendo usato Visual Studio, NetBeans, IntelliJ, Borland / Codegear Studio ed Eclipse per tutta la mia carriera.

Per quel che vale, io ho provato Emacs, e la mia esperienza è stata frustrante a causa della sua completa mancanza di out-of-the-box caratteristiche individuabili. (Apparentemente c'è un comando Emacs per scoprire altri comandi Emacs, che non riuscivo a trovare a proposito - è come vivere il tuo crudele scherzo simile allo Zen.) Ho provato a farmi come il programma per un buon mese, ma alla fine ho deciso di preferire invece i designer con interfaccia grafica drag-and-drop, IntelliSense e il debug interattivo.

È difficile separare i fatti dal fanboyismo, quindi non sono ancora disposto a prendere i commenti di Yegge sul valore nominale.

Esiste una differenza misurabile in termini di abilità, produttività o divertimento programmatico tra le persone che dipendono dagli IDE e quelle che non lo fanno o è solo un fanboyismo?


22
Vale anche la pena notare che Paul Graham usa vi; Yegge offre questa correzione lui stesso in una nota a piè di pagina nell'articolo collegato.
Eli Courtwright,

16
Di tutti gli editor che ho usato, Emacs è l'unico che ti dice come eseguire il tutorial ogni volta che inizia (fino a quando non impari abbastanza per dirlo per smettere di dirti come eseguire il tutorial).
Michael Paulukonis,

16
Cosa significa EMACS? Esci da Meta Alt Control Shift! ;-)
Peter K.

24
Terminologia nit pick: Emacs è un "editor di programmatori", non un semplice "editor di testi". Gli IDE della GUI hanno anche la possibilità di modificare il testo, ma non sono nemmeno semplici editor di testo. Confrontare Notepad con Emacs è come paragonare ... lanciare qualcosa a colpire qualcosa con quella pistola sulla Morte Nera.
Greg Mattes,

8
Ovviamente alcune persone non capiscono la differenza tra correlazione e causalità
Chubas,

Risposte:


119

Per prima cosa, lasciami dire che sono un vero credente autodidatta nel culto di Emacs.

Detto questo, il blogger è pazzo. Scrivi ciò che ritieni utile. Trovo che Emacs mi aiuti, principalmente perché ho trascorso gli anni del college pagando in anticipo il costo iniziale di apprendimento su come modificarlo in base alle mie esigenze e modificandomi in base alle sue esigenze.

Ma altre persone fanno le cose diversamente, e come si suol dire "Va bene".


73
Concordato. Adoro Emacs, ma pensare che Emacs ti renderà un programmatore migliore è come pensare che l'uso delle mazze da golf di Tiger Woods ti renderà un golfista migliore, o l'uso della chitarra di Eddie Van Halen ti renderà un musicista migliore.
Kristopher Johnson,

31
In disaccordo con il commento di Kristopher sopra. L'uso degli strumenti di un grande sportivo / artista sicuramente non ti renderà grande quanto loro. Ma l'uso degli strumenti di programmazione DESTRA per il lavoro GIUSTO lo farà sicuramente! Potresti essere perdonato per aver equiparato la programmazione allo sport e all'arte. :)
Susheel Javadi,

6
@Bart: il punto è che ci sono più "strumenti giusti". I golf club di Tiger Wood sono strumenti eccellenti e perfetti per il lavoro, ma ci sono anche altri club che possono fornire gli stessi risultati. Lo strumento utilizzato da un buon programmatore non li definisce, come fanno la loro creatività e abilità.
Seth Moore,

9
Penso che il punto con l'affermazione di Steves sia che i grandi programmatori usano emacs, i buoni sviluppatori di software sono più produttivi usando un IDE. I grandi programmatori programmano sempre, anche quando producono codice che programmano, automatizzano i compiti, adorano make, ant, bash, perl e hudson. Sanno che le attività manuali in qualsiasi parte del ciclo di sviluppo del software sono soggette a errori. I grandi programmatori sanno anche che se qualcun altro costruisce il tuo codice (ad esempio l'IDE o chiunque), allora
dipendi

4
Steve Yegge è il ragazzo che ha scritto un parser JavaScript completo in elisp, quindi non c'è dubbio che sia pazzo per quanto riguarda Emacs :)
Tikhon Jelvis il

106

Lui (Steve Yegge) ha elaborato questo, a pezzi, in altri suoi post. http://steve-yegge.blogspot.com/2008_04_01_archive.html è probabilmente il più completo, ma le informazioni sono sepolte lì perché sono tangenti all'argomento principale.

Immagino di riassumere: i programmatori che sono semplicemente bravi o competenti prenderanno un IDE e lo conosceranno davvero bene, e forse lo faranno abbastanza decentemente, ma si limiteranno a ciò che l'IDE fornisce loro. In altre parole, si adattano all'IDE. I grandi programmatori, d'altra parte, adatteranno il loro ambiente per adattarsi a se stessi , in modo tale da scrivere script o i propri strumenti o estendere i loro strumenti. E fino all'ultimo punto, Emacs non è solo l' ambiente più estensibile che esista, ma è anche l' ambiente più semplice da estendere ed è l'ambiente in cui si ottiene il massimo beneficio dall'estensione - le tue estensioni si integrano in Emacs come se fossero funzionalità di riserva, e quindi le tue estensioni future potrebbero basarsi su quelle precedenti (cose del tipo a circuito a feedback positivo).


15
La differenza è l'energia che serve per estendere l'IDE. Con emacs, tutti i file di configurazione sono file di programma elisp. Quindi, in sostanza, la barriera per l'ingresso è ridicolmente bassa (basta cambiare il file .emacs)
shsmurfy,

18
Sulla stessa linea di Angus. Un buon IDE non dovrebbe essere armeggiato all'infinito per portare a termine il lavoro. Un buon IDE dovrebbe avere tutte le funzionalità di cui hai bisogno. Sicuramente potresti voler configurare le scorciatoie e il layout, ma non dovresti scrivere un sacco di script per gestire tutto.
Kibbee,

5
Angus: hai ragione. Se devi fare un giro con l'aggiunta di cose invece di fare il tuo lavoro, hai perso il punto - Emacs o no. Sol: C'è molto di più che estendere l'invio di sorgenti attraverso programmi esterni. In realtà, non è affatto così potente un meccanismo di estensione.
Jonathan Arkell,

15
La differenza tra l'estensione di emacs e l'estensione di netbeans, visual studio o eclipse è la velocità. Aggiungere estensioni a Eclipse è come scrivere un'intera applicazione. In confronto, scrivere un'estensione per emacs può essere una singola riga di codice.
Justin Tanner,

4
@supercheetah - sembra molto primitivo rispetto all'intellisense trovato in Visual Studio, ad esempio le icone mostrate accanto ai membri disponibili sono utili! Personalmente, senza un forte supporto per il refactoring, ho poco interesse per Emacs.
si618,

57

I migliori programmatori usano vi o emacs, perché i programmatori più esperti sono i migliori e 20 anni fa non c'era molta scelta tranne vi ed emacs.

Dopo aver iniziato con vi (circa 1987) su una macchina con un terminale di testo molto lento, dopo alcuni anni mi sono convertito in (GNU) Emacs (su una macchina più veloce) e l'ho usato quasi esclusivamente per quasi 10 anni.

Emacs è stato il primo ambiente di sviluppo veramente integrato - l'intero ciclo di modifica / collegamento / compilazione può essere controllato in emacs e puoi crearne uno tuo per qualunque compilatore tu abbia usato.

Al giorno d'oggi, gli IDE come eclipse sono ancora meglio integrati (a dire il vero: emacs fa schifo alla grafica), ma Emacs è ancora uno dei migliori ambienti per l'editing di testo "puro".


10
+1 per la profezia che si autoavvera nel primo paragrafo.
OregonGhost,

12
"i programmatori più esperti sono i migliori" - molto lontani dalla verità, almeno implicitamente. Non dire che i programmatori inesperti sono migliori, ma solo perché ha fatto la stessa cosa per oltre 20 anni - NON significa che lo stia facendo bene.
AviD

7
C'erano molti editor diversi 20 anni fa. Molti di loro semplicemente non sono sopravvissuti, generalmente con buone ragioni. Perché un tizio che ha usato vi o emacs nel 1989 è migliore di un tizio che ha usato un editor basato su MS-DOS nel 1989 o qualunque diavolo stavo usando sul mainframe Control Data?
David Thornley,

Diamine, 10 anni fa non esisteva un buon IDE Java!
Susheel Javadi,

Da quello che ricordo di 20 anni fa, vi ed emacs erano i redattori straordinariamente dominanti - solo perché c'erano molti editor allora (come ora) non significa che fossero tutti ugualmente ampiamente usati.
Finlandia,

34

Migliorare il tuo pensiero chiaro e la risoluzione dei problemi ti renderà un programmatore migliore. Nessun programma può farlo.

L'uso di un martello migliore non mi aiuterà a costruire una casa più bella a meno che non sappia come e perché. ;)


Una buona analogia anche per quello che volevo dire.
Rob,

21
Ma un martello cattivo rovinerebbe la tua produttività mentre provi a costruire la stessa casa e probabilmente finirai con una casa diversa.
user51568

È giusto! Un programmatore medio non farebbe molto meglio con il martello costoso.
Jas Panesar,

5
Un grande programmatore può costruire una grande casa usando una pietra per martello. (È lento - ma riesce ancora a farlo.: D)
Egon,

Sì, ma avere un editor che consente al codice di fluire da te in modo organico (cosa che penso sia Emacs migliore della maggior parte degli editor) può migliorare il tuo pensiero chiaro e quindi la risoluzione dei problemi.
Skilldrick,

21

Yegge deve incontrare Bill Joy. Non solo è uno dei grandi programmatori del mondo, ma ha anche scritto grandi pezzi di vi. In vi.

Breve confessione vergognosa: dopo 20 anni di utilizzo di vi (e vim / gvim negli ultimi anni) per tutto, nell'ultimo anno o giù di lì ho iniziato a usare Eclipse per la modifica di Java (e Thunderbird per la posta elettronica), sebbene al mio attuale lavoro il mio la macchina ha così poca memoria che di solito uso vi tranne quando ho bisogno del debugger.


7
+1 per vi (in realtà, usa vim, ma stessa differenza). È il 98% di ciò che Emacs può fare con meno della metà dello sforzo.
Direttore

25
Ho usato Vim per 5 anni. Dopo 20 minuti in Emacs ho giurato che non sarei più tornato. Vim si sente indietro.
MattBelanger,

5
Lo stesso Yegge menziona questo: [L'unica eccezione degna di nota è VIM, che è anche molto potente da tutti i conti, anche se non ne ho esperienza. Se hai già sviluppato una preferenza per vi rispetto a emacs, allora potresti sperimentare una maggiore felicità nel perseguire le competenze con VIM. Psh] Fonte: steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html
user674062

1
Uh ... Bill Joy non usa più vi.
Plumenatore

13

Esiste una differenza misurabile in termini di abilità, produttività o divertimento programmatico tra le persone che dipendono dagli IDE e quelle che non lo fanno o è solo un fanboyismo?

Riduciamolo a Visual Studio vs. Emacs --- altrimenti la domanda è troppo ampia e sospetto che la maggior parte delle persone (almeno qui su StackOverflow) abbia familiarità con quei due. [Lo sono e utilizzo e preferisco emacs]

Quindi, suddividiamo i tre componenti della domanda.

Il piacere della programmazione si riduce principalmente al gradire la programmazione in sé e, in secondo luogo, a non far apparire i fattori di fastidio quando lo fai. L'uso degli strumenti con cui hai difficoltà sottrarrà il piacere. Quindi, credo, il divertimento è probabilmente massimizzato usando strumenti che ti piacciono e che conosci.

Naturalmente, una volta acquisito familiarità con un nuovo strumento, potresti scoprire che ti piace di più e che quindi ti piacerà programmare di più se lo fai con il tuo nuovo strumento preferito. Non è chiaro per me che alla gente in generale piacerà VS su emacs (o viceversa) quando li conoscono bene entrambi.

Successivamente, abilità di programmazione. Se c'è qualche connessione tra l'abilità e la scelta di VS / emacs, penso che sia l'abilità che causa la scelta, non la scelta che causa l'abilità. Nessuno di {VS, emacs}, nella mia esperienza, sembra farmi imparare qualcosa sulla scrittura di codice migliore .

Un buon strumento può rendermi in grado di scrivere lo stesso codice (e quindi la stessa qualità del codice) in tempi più brevi; se lo ipotizziamo productivity = quality of code `times` code per time, è ovvio che qualsiasi editor che ti permetterà di scrivere un buon codice in meno tempo è un aumento della produttività.

Potrei non avere familiarità con VS, ma qui penso che emacs abbia alcuni punti di forza che non ho trovato in VS. Può sembrare ridicolo, ma qualcosa di semplice come il movimento del cursore Ctrl-[fbnp]è un vero vantaggio --- significa che non devi spostare le mani sui tasti freccia. Un'altra cosa: puoi fare una ricerca o sostituire che include le nuove righe, che uso abbastanza spesso da odiare perdere.

Un'altra cosa che mi piace è la possibilità di incorporare una shell nel mio editor. Nella mia esperienza, è molto più prezioso su piattaforme non Windows (e la mia prima esperienza di "programmazione", IIRC, stava scrivendo file DOS .bat, quindi non sono solo un fan sfegatato), ma su quelle piattaforme è una grande vittoria . Fa emacs "integrarsi" con "tutto" (ricerca di file con trova / trova, ricerca di testo con grep, controllo della versione con svn / git / hg / ..., lo chiami).

Verdetto finale - dovresti imparare emacs o no? Ed è tutto fanboyismo? Se hai tempo, direi che vale sempre la pena imparare nuovi modi di fare la stessa cosa, perché il nuovo modo potrebbe rivelarsi un lavoro migliore per te. E ti incoraggio a non rifiutarlo per quello che sembra essere quando sei tutto nuovo. In questo senso, è come passare al layout della tastiera Dvorak: all'inizio sei più lento, ma una volta che ti alzi alla velocità probabilmente sarai almeno altrettanto veloce di qwerty e più comodo. Consiglio lo stesso approccio anche all'apprendimento di nuove lingue (di programmazione): perché non conosci il vocabolario (libreria standard), dire che le cose sono difficili, ma la ricompensa è ancora lì all'orizzonte ti aspetta.


1
"Riduciamolo a Visual Studio vs Emacs --- altrimenti la domanda è troppo ampia, e sospetto che la maggior parte delle persone (almeno qui su StackOverflow) abbia familiarità con quei due." -- Veramente? Pensavo che ci fossero molti più fan sfegatati * come me che non sarebbero stati costretti a usare VisualStudio, e tanto meno usarlo volontariamente. Hrm.
Xiong Chiamiov,

"Il movimento del cursore con Ctrl- [fbnp] è un vero vantaggio". Anche se adoro Emacs, dopo esserci tornato dopo una lunga pausa, trovo il movimento del cursore in questo modo l'aspetto meno utile e comodo dell'utilizzo di Emacs. Al contrario, posso raggiungere e trovare i tasti cursore dedicati senza guardare o pensare. Forse aiuta ad essere un pianista? :) Ma chissà, col tempo, forse la lettera C-scrunch sembrerà più naturale.
Greg Hendershott,

2
ps Sono totalmente d'accordo su shell e piattaforme. Se vuoi spostarti tra Windows, OS X e Linux, allora vuoi Cygwin sul primo ed Emacs su tutti e tre. Lancia il tuo .emacs.d su GitHub e sei d'oro.
Greg Hendershott,

inoltre, puoi effettuare ricerche che includono newline in Visual Studio usando regex
Axarydax,

10

Con il testo citato che inizia "Tutti i più grandi ingegneri del mondo usano Emacs", non lo prenderei neanche per il valore nominale. Conosce tutti i più grandi ingegneri del mondo? È la stessa lista dei più grandi ingegneri del mondo che tu o io abbiamo?

Una volta appreso, un potente editor come EMACS o vi ti renderà più efficiente, o almeno più efficiente se ti capita di essere scoperto senza il tuo IDE preferito.

È la parte "una volta appresa" che è l'assassino. È un sacco di lavoro e pratica per utilizzare questi strumenti in modo produttivo, ed è molto difficile all'inizio.


1
Penso che una delle qualità che aiuta davvero qualcuno a essere un "grande" ingegnere sia quella di poter ritardare la gratificazione e sostenere un costo di avvio fisso maggiore per migliorare l'efficienza.
Tikhon Jelvis,

9

Sono un fan di Emacs, personalmente, ma Emacs è solo uno strumento. Non ti renderà un programmatore migliore più di quanto una penna super fantasiosa ti renderà uno scrittore migliore.

Il chiarimento che i "grandi programmatori" adattano il proprio ambiente a se stessi può avere qualche merito, ma molti strumenti possono farlo (ad es. Vim e SlickEdit), quindi non c'è nulla di particolare su Emacs al riguardo.

Penso che la cosa più verosimilmente vera sia che i "grandi programmatori" sono appassionati di programmazione e le persone appassionate di esso tendono a trovare strumenti che aiutano a guidare quella passione. Emacs (e vim e SlickEdit, et al) è un tale strumento.


Le penne super fantasiose mi fanno sentire tutto Hemingway.
Cheeso,

2
La particolarità di Emacs per quanto riguarda "l'adattamento dell'ambiente" è che è molto più semplice farlo in Emacs che in Vim o SlickEdit. (o qualsiasi altro editore che conosco)
vedang

8

Non credo che ci sia differenza, è più una questione di preferenza.

Tuttavia, ciò che ho notato è che più a lungo hai codificato, o più in basso hai codificato, maggiori sono le probabilità che tu abbia usato emacs o vi.


Il "più tempo che hai codificato" sembra discutere per aver iniziato a programmare prima che ci fossero buoni IDE.
Paul Tomblin,

3
Esiste un buon IDE, figliolo?
David Thornley,

8

Mentre gli IDE sono migliorati molto negli ultimi dieci anni, contengono ancora la programmazione in una "bolla" sicura, lontana da alcuni dei dettagli più brutti. Ciò che tende ad accadere è che questo aumento dell'astrazione consente a più programmatori di fare di più, con meno conoscenze. Ciò, ovviamente, non si applica a tutti i programmatori, ma strumenti più semplici portano la programmazione a un pubblico più ampio.

Una maggiore conoscenza degli strumenti di livello inferiore, spesso si traduce in una maggiore stabilità del codice, poiché ci sono meno possibilità di "andare controcorrente" accidentalmente. È ingiusto elencare EMACS come l'unico indicatore principale, poiché proviene da una vasta gamma di lingue e strumenti, e in realtà riguarda più la profondità di comprensione, non la tecnologia specifica.

Molto tempo fa, hai imparato VI o EMACS sulle scatole UNIX o ti sei specializzato in PC (OK, c'erano anche VMS, CMS, AS400, ecc., Ma quelle erano tecnologie più vecchie). Entrambi i flussi hanno attirato persone molto appassionate, ma i ragazzi di UNIX tendevano a desiderare una soluzione sofisticata, mentre i ragazzi del PC volevano che fosse fatto rapidamente. Le culture erano molto diverse.


7

Gli IDE IMHO tendono ad essere ottimizzati attorno a una piattaforma o linguaggio o sistema operativo specifici: Eclipse JDT è ottimo per Java, Visual Studio è C ++ /. NET-centrico, ecc. Aiutano molto la produttività (di nuovo IMHO) se stai solo lavorando su quella piattaforma, ma se cambi piattaforma devi fondamentalmente imparare un nuovo IDE (o almeno un nuovo set di plugin, viste, prospettive e non so cos'altro per Eclipse).

Il vantaggio di conoscere emacs, o Textmate, o vim (la mia preferenza personale), o qualsiasi editor generico , è che le abilità acquisite in quell'editor si applicano indipendentemente dalla piattaforma per cui stai scrivendo. Sono ottimizzati per la modifica del testo e, una volta acquisiti padronanza, puoi modificare il testo in modo molto efficiente in qualsiasi lingua.

C'è anche l'affermazione di Yegge secondo cui i grandi programmatori adattano i loro strumenti al loro stile di lavoro piuttosto che viceversa. Penso che questa sia una vittoria per gli editor generici, perché personalizzi un editor, piuttosto che dover capire come adattare quattro diversi IDE a tutti comportarsi come desideri.


Il problema si presenta quando devi scrivere su una piattaforma diversa da quella su cui sei stato: ad esempio ti sposti da * nix a Windows, e i tuoi script si rompono perché stavano assumendo una shell bourne con percorsi basati su '/' in un Struttura simile a FHS con stampa basata su PostScript ...
SamB,

Lavoro con emacs da un po 'di tempo, ormai, e solo il movimento del cursore è abbastanza per farmi risentire scrivendo in qualsiasi altra cosa, anche se si tratta di un'email in KMail.
Arne Babenhauserheide

@ArneBabenhauserheide questo è uno dei motivi per cui amo Mac OS X, quasi tutti supportano i campi di testo C-[npfbaed]. (Ma purtroppo no M-)
porglezomp

6

Direi che i migliori programmatori tendono ad essere quelli che impiegheranno il tempo a personalizzare il proprio ambiente, rendendo più veloce / facile eseguire le attività che è probabile che facciano. Emacs è uno dei più potenti editor per personalizzare il tuo ambiente. Ha una ripida curva di apprendimento ma, una volta superato, praticamente non c'è limite a ciò che puoi fare per te.

Qualcuno una volta disse che i migliori programmatori sono quelli pigri; quelli che, una volta che hanno bisogno di fare qualcosa più di una volta, trovano un modo per automatizzarlo in modo da fare meno sforzi. Emacs ti permette di essere molto, molto pigro;)


4

Ho usato gli IDE sin dall'inizio (probabilmente; avendo iniziato con QBASIC) e per molti, molti anni. Ora sono passato quasi completamente a VIM (in diversi gusti) per tutto il mio lavoro di sviluppo e non me ne pento. La mia produttività è decisamente aumentata.

Ovviamente, nulla sostituirà il designer di Windows Form da Visual Studio. Ma rispetto a VIM (ed Emacs, ne sono sicuro) l'editor di testo in Visual Studio è davvero pessimo. Una volta sfruttata la potenza pura della console e degli strumenti di sviluppo GNU (con questo intendo make, GCC binutilse gdb, e poi alcuni), noterai che questi strumenti possono sembrare primitivi ma sono esattamente l'opposto e offrono effettivamente tutto gli strumenti forniti da un IDE (bene, tranne per il progettista di moduli).

È solo che hai una salita molto ripida davanti a te quando inizi a usare questi strumenti e l'incentivo potrebbe essere piccolo. Ho avuto la fortuna (?) Di essere costretto a usare questi strumenti in modo da non poter scegliere.


3

Personalmente, sento che dovresti usare tutto ciò che ti rende più produttivo. Se non hai il tempo di investire in un progetto per sederti e imparare Emacs, allora probabilmente non è il miglior uso del tuo tempo a quel punto.

Sento, tuttavia, che è una buona idea conoscere altri IDE quando si ha molto tempo per farlo. Uso Visual Studio nel mio lavoro quotidiano, ma a casa uso Eclipse per piccoli progetti e ho usato Anche Emacs. Nel particolare punto in cui ho preso in considerazione l'uso di Emacs, i miei sforzi sono stati meglio serviti a fare il vero lavoro piuttosto che a rallentarmi nella lotta con Emacs.

Penso che sia assurdo pensare che tutti i migliori programmatori utilizzino Emacs. Ci sono molti programmatori fantastici che non sono così popolari (o forse vocali) che non usano Emacs.


3

Ho iniziato a usare Emacs circa un anno e mezzo fa perché era la confluenza di diversi desideri: volevo lavorare con espressioni regolari (in un editor che li supportava), volevo imparare lisp, volevo un editor migliore.

La modifica del mio codice con regex mi ha insegnato molto sulla ricerca di schemi nel codice. I tasti hanno impiegato un po 'di tempo per abituarsi, ma volo molto più veloce senza il mouse.

Emacs mi ha dato la possibilità di continuare a lavorare con le mie note e il mio codice nella stessa applicazione: un cambio di contesto minimo significa un cambio di cervello minimo e posso concentrarmi sull'attività da svolgere.


3

No. Un buon codice ti rende un programmatore migliore.

Detto questo, una buona manipolazione del testo è la chiave per l'efficienza. Vim o emacs cambieranno il modo in cui lavori con il testo: entrambi si sono dimostrati efficaci ma sono quasi in contrasto tra loro in termini di stile. Inoltre, questo dibattito è piuttosto vecchio (fino agli anni '80 e '90 in cui il testo -> il compilatore era la chiave), quindi ci sono molti altri editor di testo e / o IDE che possono aiutarti a essere il miglior programmatore che puoi essere.


3

No. Se credi che l'uso di emacs ti renda un programmatore migliore, stai confondendo causa ed effetto.

Lo uso quotidianamente, però. Trovo che sono più produttivo con Emacs + Maven che con Eclipse per lo sviluppo di Java (anche se ogni tanto continuo ad avviare Eclipse per eseguire occasionalmente il refactoring o la sessione di debug).

Questi sono i miei motivi:

  • L'effettiva esperienza di modifica del testo in emacs batte tutto il resto. È incredibile quanto velocemente riesci a ottenere così tanto usando solo la tastiera. Eclipse è più orientato al mouse e durante la digitazione si incontrano molti ostacoli fastidiosi.
  • Essere in grado di personalizzare emacs usando elisp è incredibilmente potente. Vado al punto di dire che se non ti prendi il tempo per imparare il rudimentale elis e personalizzare il tuo ambiente, stai semplicemente perdendo tempo.
  • Ci sono estensioni per praticamente qualsiasi cosa tu possa desiderare di fare in un editor di testo.

1
+1 per la correlazione! = Causalità
Xiong Chiamiov,

Quale modalità java stai usando?
avendael,

1
Sto usando la modalità stock Java fornita con Emacs23, con alcune personalizzazioni e hack per eseguire build maven. Ho anche iniziato a usare emacs-eclim, che funge da ponte tra emacs ed eclipse. È bello e utilizzabile, ma al momento piuttosto grezzo.
Fred-o

3

Per me il motivo principale per cui sceglierei Emacs rispetto a un IDE è perché mi permette di fare tutto solo dalla mia tastiera. Questo è bello in quanto consente di risparmiare un po 'di tempo per quando normalmente userei un mouse. Inoltre, poiché mi trovo molto mobile, ho la tendenza a interrompere la programmazione "groove" a causa dell'utilizzo del mio touch pad lento. Inoltre, la sua personalizzazione lo fa brillare su alcuni IDE per me. Tuttavia, se ti ritrovi a programmare abbastanza velocemente con un IDE, direi che la curva di apprendimento di Emacs non vale la pena.


2

Esiste una differenza misurabile in termini di abilità, produttività o divertimento programmatico tra le persone che dipendono dagli IDE e quelle che non lo fanno o è solo un fanboyismo?

Non credo che potresti davvero ottenere una risposta a questo. Esistono tanti modi diversi per misurare abilità, produttività e divertimento nella programmazione - e tutti sono probabilmente molto soggettivi e / o non possono essere suddivisi in UNA cosa che lo causa o meno.

È comunque una domanda interessante.

La mia convinzione personale è - dipende dal programmatore :)

G-Man


Fanboys amico. IDE non è Editor. IDE non deve essere il miglior editor.
Perpetualcoder,

2

Non penso che ti renderebbe un programmatore migliore, ma quando hai quel livello, molto probabilmente userai emacs (o vi)

: - /

La cosa buona di quei due (non ho mai usato emacs prima, ma uso ancora vi per il compito più banale) è il fatto, non interrompono il tuo flusso di pensieri , non devi togliere le mani da la tastiera per afferrare il mouse e cercare nel menu file l'opzione corretta. Continua a scrivere. Nella tua mente dici qualcosa del tipo: "Sostituisci tutte le occorrenze di questa parola per quello", premi Invio e continua con il tuo lavoro.

Inoltre, non penso che usino emacs è il loro unico strumento.

Ti renderebbe programmatore migliore? Probabilmente no. Ma quando hai quel livello di esperienza, probabilmente ti piacerà quanto velocemente puoi programmare usando quegli strumenti.


La caccia nel menu è per le persone che non conoscono l'IDE. Non so quando l'ultima volta ho dovuto "cercare" un'opzione di menu.
tster

Quindi pensi che usare "File-> Salva" sia meglio di Ctrl-S? Io non la penso così. Dover prendere il mouse, fare clic sul file Menu e quindi spostare il mouse verso il basso su Salva voce mi sembra molto quando puoi farlo senza prendere le mani della tastiera.
OscarRyz,

ovviamente sono d'accordo. Tutti gli IDE che ho usato hanno tasti di scelta rapida e combinazioni personalizzabili come emacs.
tster,

2

No.

Disciplina, pensiero critico e desiderio di auto-miglioramento ti renderanno un programmatore migliore. Il tuo set di strumenti, sebbene sia un fattore importante nella tua produttività, non creerà genio.

Se non ti piacciono emacs o vi, non usarli. Facendo la scelta consapevole di non farlo, stai modellando il tuo ambiente di sviluppo in base alle tue esigenze e pratiche di lavoro. In ogni caso, hai il diritto di usare quello che ti piace - e ignorare chiunque sia abbastanza sciocco da rimproverarti per lo strumento che usi per scrivere bit su disco - sono i bit che contano.

Nota: "Set di strumenti" qui significa, letteralmente, il "marchio" di strumenti - editor specifici, compilatori, ecc. Set di strumenti concettuali, ad esempio l'uso del controllo di versione, test di unità - tutti in generale - fanno parte di sé- processo di miglioramento.


2

Una delle grandi caratteristiche di emacs è che può gestire praticamente qualsiasi tipo di file che ci passi, di qualsiasi dimensione. Certo, se stai aprendo un enorme file crittografato pazzo, non sarà necessariamente utile ma si aprirà. La maggior parte dei redattori (e degli IDE) ti darà un grande dolore se gli dai un file troppo grande e / o non uno dei formati previsti.

Prova ad aprire un file da 1 Gig nel Blocco note per un esempio.

Ho iniziato a utilizzare Emacs da qualche parte intorno al 1980 ed è sempre stato uno strumento nella mia cassetta degli attrezzi. Non è l' unico strumento ma è sempre qualcosa a cui posso rivolgermi e sapere che sarò in grado di svolgere un lavoro utile.

Commento infiammatorio obbligatorio : D'altra parte, non ho niente di buono da dire su vi. Ho sempre pensato che vi mi avrebbe felicemente ucciso e venduto i miei organi solo per dispetto ...

Nella vita reale, utilizzo Netbeans per quasi tutte le forme di sviluppo e utilizzo emacs di tanto in tanto per effettuare una modifica rapida. Non c'è quasi nulla là fuori che sia abbastanza conveniente come Emacs (per me) quando si tratta di fare qualcosa di folle in questo momento.

Qualcun altro deve mai modificare le stringhe statiche negli eseguibili binari compilati? Esiste uno strumento migliore per questo genere di cose rispetto a emacs? Funziona sicuramente per me.


1
Considerando che Visual Studio perderebbe completamente quell'opportunità, e invece si accontenterebbe di sfogliare il tuo portafoglio per vedere se c'erano soldi in eccesso.
Rob,

Scusa, non lo saprei. Uso Netbeans quasi sempre ed emacs quando ne ho bisogno.
Bob Cross,

2

So che non me l'hai chiesto, ma una cosa per me imparare (inaspettatamente) emacs è stata la manipolazione di una riga di comando. Prima di imparare le combinazioni di tasti di emacs, spostavo il cursore e navigavo nella cronologia usando i tasti cursore perché non ne sapevo nulla di meglio. È stato qualcosa di un momento della lampadina in cui mi sono reso conto che avrei potuto usare backward-word, move-beginning-of-linee backward-kill-word(a cui mi sono sempre legato C-w, come suggerisce Stevey ) in bash( M-tè spesso anche utile e molto impressionante per coloro che non l'hanno mai visto prima).

Faccio molto lavoro su Solaris, dove la shell di root è "la shell posix" e per impostazione predefinita non ha i collegamenti emacs. Trovo che le mie dita ora scrivano exec bashda sole, ogni volta che eseguo l'accesso, mi sento molto più veloce con i comandi di modifica ora familiari sotto le mie dita.

Devo ammettere però, trovo ancora difficili i libri di Knuth (anche se ne vale la pena) - quindi non penso che abbia magicamente migliorato la mia programmazione.


Amico, ho davvero bisogno di imparare di più su quei trucchi ... Ad ogni modo, non riesci a far cambiare la tua shell di login, o volevi dire "la shell per l'utente root" quando hai detto "root shell"? In tal caso, perché accedi come root ???
SamB,

2

Emacs mi ha reso più efficiente nella manipolazione del testo e nella navigazione del filesystem. E poiché entrambe queste cose sono coinvolte quando programmo, mi ha reso un programmatore più efficiente (quindi migliore).


2

Penso che Emacs possa renderti un programmatore migliore, anche se indirettamente. Penso che Emacs mi abbia fatto scrivere in un linguaggio funzionale ( Elisp ) che mi ha interessato ad altri linguaggi funzionali ( Clojure ) che mi hanno detto che mi renderanno un programmatore migliore. Detto questo, suppongo che il tempo lo dirà.


È un vecchio stile di Lisp (con solo scoping dinamico e senza lessico), ma ha sicuramente molto da insegnare. Quello, e può essere un editor di testo abbastanza carino in quei giorni in cui funziona davvero!
SamB,

1

Essere in grado di utilizzare un editor personalizzabile ti consente di fare cose eleganti, ma emacs in particolare non è necessariamente il migliore possibile. Anche io sono un utente di SlickEdit, faccio tutte le stesse strane cose semiautomatizzate con cui Emacs è famoso. Ho visto persone fare cose simili con vi e vari editor basati su Windows.

Quindi, sì, il socket si adatta bene, ma sostenere che Craftsman rende il One True Socket Set è un po 'stupido.


Per inciso, potrei essere propenso a provare SlickEdit se non fosse per il marketing braindead: "10 motivi per non usare SlickEdit - # 1: ti piace essere un cattivo programmatore. # 2: vuoi spendere di più da fare meno. # 3: sei un idiota innato, ecc. ecc. ecc. "
Giulietta,

Mi sono imbattuto in Slick prima di AVERE marketing; è solo che era l'unico vero editor che funzionava con OS / 2 3.0 al momento. Probabilmente è circa la stessa ragione per cui tutti quegli altri ragazzi usano emacs ...
mjfgates,

1

Padroneggiare le combinazioni di tasti di Emacs e le sue funzioni integrate ti permetterà di manipolare il testo più velocemente di IDE come Eclipse o Visual Studio.

Non crederci, guarda questi video di professionisti che usano Emacs .

Una volta raggiunto un livello decente in Emacs puoi modificare in modo efficace qualsiasi lingua: Java Script, Java, Ruby, Python, HTML, C, C ++, ecc.

Iniziare con Emacs è una seccatura, l'esperienza fuori dagli schemi è peggio che male. La configurazione predefinita di Emacs non espone il novizio di Emacs alle funzionalità più potenti (hippie-expand, etags, yasnippet, ecc.) Di Emacs. Suggerisco di iniziare con i file dot Emacs Starter Kit .

Un altro motivo per cui Steve Yegge afferma che i migliori programmatori del mondo usano Emacs, è elisp. Elisp consente al programmatore esperto di espandere facilmente Emacs. Scrivere un'estensione in Eclipse o Visual Studio è significativamente più difficile che scrivere una funzione rapida o anche una nuova modalità minore in elisp.


la domanda è: perché iniziare a usarlo? Se uno è felice, a proprio agio e produttivo, perché perdere tempo e fatica nell'apprendimento di emacs? Preferirei di gran lunga imparare un nuovo linguaggio di programmazione o ricercare nuove tecnologie piuttosto che imparare un vecchio editor, sebbene potente. Ci sono solo 24 ore al giorno, usa il tempo con saggezza.
sarsnake,

un'altra cosa che vorrei notare che dipende anche dalla tecnologia che stai utilizzando. Emacs ha Intellisence? L'ho usato al college su macchine UNIX e sono sicuro che da allora sia cambiato. Ma per .NET Intellisence è DEVE. Non c'è modo in cui nessuno possa ricordare TUTTI i nomi delle funzioni in tutte le classi in tutti gli spazi dei nomi. E sicuramente non andrò su MSDN ogni volta che dovrò cercare un nome di funzione. Se Emacs offre Intellisence, lo prenderei in considerazione.
sarsnake,

1

Credo che sia un'idea sbagliata che l'uso di questi editor basati su testo come VI ed Emacs sia considerato o necessario per diventare un "grande programmatore". Ho sempre pensato che gli IDE fossero più potenti di quanto non lo fossero in passato, e si riduce davvero a preferenze e stile.


0

Ho usato emacs al college. era circa 16 anni fa. Non ho guardato indietro. Anche se vorrei poter essere ancora a mio agio con Emacs, la verità è che sono abbastanza produttivo con il mio IDE MS.

il testo che hai pubblicato è solo un troll. Sì. Nessun altro motivo se non quello di iniziare una guerra religiosa.


0

Ho iniziato con emacs ma sono passato a vi che per me è più elegante per la sua semplicità. Inoltre, se sei mai bloccato in modalità utente singolo, i comandi ed sono un sottoinsieme di comandi vi. Non so se emacs può gestirlo.

Quindi, a tal proposito, penso che vi ti renda un programmatore migliore.


Emacs FA hanno una Mx vi-mode, anche se, ho il sospetto che quella era una sorta di scherzo ...
Brian Postow

Conoscere le basi di vi è essenziale per fare l'amministrazione del sistema. Questa non è programmazione, tuttavia.
Xiong Chiamiov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.