Wird Emacs mich zu einem besseren Programmierer machen? [geschlossen]


130

Steve Yegge schrieb einen Kommentar in seinem Blog :

Alle größten Ingenieure der Welt verwenden Emacs. Die Weltveränderertypen. Nicht das große Mädchen im Würfel neben dir. Nicht Fred, der erstaunliche Kerl im Flur. Ich spreche von den größten Softwareentwicklern unseres Berufs, die das Gesicht der Branche verändert haben. Die James Goslings, die Donald Knuths, die Paul Grahams, die Jamie Zawinskis, die Eric Bensons. Echte Ingenieure verwenden Emacs. Man muss sehr schlau sein, um es gut zu nutzen, und es macht einen unglaublich mächtig, wenn man es beherrscht. Schauen Sie Paul Nordstrom über die Schulter, während er irgendwann arbeitet, wenn Sie mir nicht glauben. Es ist ein echter Augenöffner für jemanden, der während seiner gesamten Karriere Visual Blub .NET-ähnliche IDEs verwendet hat.

Emacs ist der 100-jährige Herausgeber.

Das letzte Mal, dass ich einen Texteditor zum Schreiben von Code verwendete, war damals, als ich vor etwa 1000 Jahren noch HTML in Notepad schrieb. Seitdem bin ich mehr oder weniger IDE-abhängig und habe während meiner gesamten Karriere Visual Studio, NetBeans, IntelliJ, Borland / Codegear Studio und Eclipse verwendet.

Für was es wert ist , ich habe Emacs versucht, und meine Erfahrung war ein frustrierender einen wegen seines völligen Mangels an out-of-the-box Erkennbar Funktionen. (Anscheinend gibt es einen Emacs-Befehl zum Entdecken anderer Emacs-Befehle, den ich übrigens nicht finden konnte - es ist, als würde man seinen eigenen grausamen Zen-ähnlichen Witz leben.) Ich habe versucht, mich für einen guten Monat wie das Programm zu fühlen, aber schließlich Ich habe mich stattdessen für Drag-and-Drop-GUI-Designer, IntelliSense und interaktives Debugging entschieden.

Es ist schwer, Fakten von Fanboyismus zu trennen, daher bin ich noch nicht bereit, Yegges Kommentare zum Nennwert zu nehmen.

Gibt es einen messbaren Unterschied in Bezug auf Fähigkeiten, Produktivität oder Programmierfreude zwischen Menschen, die von IDEs abhängig sind, und solchen, die dies nicht tun, oder ist alles nur Fanboyismus?


22
Es ist auch erwähnenswert, dass Paul Graham vi verwendet; Yegge bietet diese Korrektur selbst in einer Fußnote im verlinkten Artikel an.
Eli Courtwright

16
Von allen Editoren, die ich verwendet habe, ist Emacs der einzige, der Ihnen bei jedem Start erklärt, wie Sie das Lernprogramm ausführen (bis Sie genug gelernt haben, um zu sagen, dass Sie aufhören sollen, das Lernprogramm auszuführen).
Michael Paulukonis

16
Wofür steht EMACS? Escape Meta Alt Control Shift! ;-)
Peter K.

24
Terminologie nit pick: Emacs ist ein "Programmiereditor", kein bloßer "Texteditor". GUI-IDEs können auch Text bearbeiten, aber sie sind auch keine bloßen Texteditoren. Das Vergleichen von Notepad mit Emacs ist wie das Vergleichen von ... Steinwerfen, um etwas mit dieser Waffe auf den Todesstern zu treffen.
Greg Mattes

8
Offensichtlich verstehen einige Leute den Unterschied zwischen Korrelation und Kausalität nicht
Chubas

Antworten:


119

Lassen Sie mich zunächst sagen, ich bin ein bekennender wahrer Gläubiger des Emacs-Kultes.

Das heißt, der Blogger ist verrückt. Sie schreiben in das, was Sie nützlich finden. Ich finde, dass Emacs mir hilft, hauptsächlich, weil ich meine College-Jahre damit verbracht habe, die Startkosten dafür zu bezahlen, dass ich gelernt habe, wie ich es an meine Bedürfnisse anpassen und mich an seine Bedürfnisse anpassen kann.

Aber andere Leute machen die Dinge anders und wie sie sagen "Das ist in Ordnung".


73
Einverstanden. Ich liebe Emacs, aber zu denken, dass Emacs Sie zu einem besseren Programmierer macht, ist wie zu denken, dass die Verwendung von Tiger Woods Golfschlägern Sie zu einem besseren Golfer macht, oder dass die Verwendung von Eddie Van Halens Gitarre Sie zu einem besseren Musiker macht.
Kristopher Johnson

31
Stimme Kristopher oben nicht zu. Die Verwendung der Werkzeuge eines großartigen Sportlers / Künstlers macht Sie definitiv nicht so großartig wie sie. Aber mit den richtigen Programmierwerkzeugen für den richtigen Job wird es definitiv! Es könnte Ihnen jedoch vergeben werden, Programmierung mit Sport und Kunst gleichzusetzen. :)
Susheel Javadi

6
@ Bart: Sein Punkt ist, dass es mehrere "richtige Werkzeuge" gibt. Die Golfschläger von Tiger Wood sind hervorragende Werkzeuge und perfekt für den Job geeignet, aber es gibt auch andere Schläger, die die gleichen Ergebnisse erzielen können. Das Werkzeug, das ein guter Programmierer verwendet, definiert sie nicht, sondern ihre Kreativität und Fähigkeiten.
Seth Moore

9
Ich denke, der springende Punkt bei Steves Aussage ist, dass großartige Programmierer Emacs verwenden, gute Softwareentwickler mit einer IDE produktiver sind. Großartige Programmierer programmieren immer, selbst wenn sie Code produzieren, den sie programmieren, automatisieren sie Aufgaben, sie lieben make, ant, bash, perl und hudson. Sie wissen, dass manuelle Aufgaben in jedem Teil des Softwareentwicklungszyklus fehleranfällig sind. Großartige Programmierer wissen auch, dass wenn jemand anderes Ihren Code erstellt (z. B. die IDE oder irgendjemand), Sie immer von diesen Fähigkeiten abhängen, wenn es darum geht, den Code zu pflegen (z. B. die IDE oder irgendjemand)
Ernelli

4
Steve Yegge ist der Typ, der einen kompletten JavaScript-Parser in elisp geschrieben hat, also gibt es keine Frage, dass er verrückt ist, was Emacs
angeht

106

Er (Steve Yegge) hat dies in Stücken, in anderen Postings von ihm näher ausgeführt. http://steve-yegge.blogspot.com/2008_04_01_archive.html ist wahrscheinlich die umfassendste, aber die Informationen sind dort vergraben, da sie sich auf das Hauptthema beziehen.

Ich denke, um es zusammenzufassen: Die Programmierer, die nur gut oder kompetent sind, werden eine IDE aufgreifen und sie wirklich gut kennenlernen und vielleicht anständig genug darin tun, aber sie werden sich auf das beschränken, was die IDE für sie bereitstellt. Mit anderen Worten, sie passen sich der IDE an. Die großen Programmierer, auf der anderen Seite, wird ihr anpassen Umwelt anzupassen , sich in einer solchen Art und Weise , wie Skripte oder ihre eigenen Werkzeuge zu schreiben, oder erweitern ihre Werkzeuge. Und zu diesem letzten Punkt nicht nur Emacs das ist am meisten erweiterbare Umgebung gibt es, es ist auch die einfachste Umgebung zu erweitern gibt es, und es ist die Umgebung , in der Sie die meisten ernten Nutzen Wenn Sie es erweitern, werden Ihre Erweiterungen in Emacs integriert, als wären sie Standardfunktionen. Daher können Ihre zukünftigen Erweiterungen auf Ihren vorherigen Erweiterungen aufbauen (so etwas wie eine positive Rückkopplungsschleife).


15
Der Unterschied ist die Energie, die zum Erweitern der IDE benötigt wird. Bei Emacs sind alle Konfigurationsdateien Elisp-Programmdateien. Im Grunde genommen ist die Eintrittsbarriere lächerlich niedrig (ändern Sie einfach Ihre .emacs-Datei)
shsmurfy

18
In der gleichen Richtung wie Angus. Eine gute IDE sollte nicht endlos herumgebastelt werden müssen, um die Arbeit zu erledigen. Eine gute IDE sollte alle Funktionen haben, die man benötigt. Sicher möchten Sie vielleicht die Verknüpfungen und das Layout konfigurieren, aber Sie sollten nicht eine Reihe von Skripten schreiben müssen, um alles zu handhaben.
Kibbee

5
Angus: Du hast recht. Wenn Sie mit dem Hinzufügen von Dingen herumspielen müssen, anstatt Ihre Arbeit zu erledigen, haben Sie den Punkt verpasst - Emacs oder nicht. Sol: Es gibt mehr zu erweitern, als die Quelle über externe Programme zu senden. Tatsächlich ist das überhaupt kein so mächtiger Erweiterungsmechanismus.
Jonathan Arkell

15
Der Unterschied zwischen dem Erweitern von Emacs und dem Erweitern von Netbeans, Visual Studio oder Eclipse besteht in der Geschwindigkeit. Das Hinzufügen von Erweiterungen zu Eclipse entspricht dem Schreiben einer gesamten Anwendung. Im Vergleich dazu kann das Schreiben einer Erweiterung für Emacs eine einzelne Codezeile sein.
Justin Tanner

4
@supercheetah - sieht im Vergleich zu Intellisense in Visual Studio sehr primitiv aus, z. B. sind Symbole neben verfügbaren Mitgliedern nützlich! Persönlich habe ich ohne starke Refactoring-Unterstützung wenig Interesse an Emacs.
Si618

57

Die besten Programmierer verwenden vi oder emacs, weil die erfahrensten Programmierer die besten sind, und vor 20 Jahren gab es außer vi und emacs keine große Auswahl.

Nachdem ich mit vi (ca. 1987) auf einer Maschine mit einem sehr langsamen Textterminal begonnen hatte, konvertierte ich nach einigen Jahren (auf einer schnelleren Maschine) zu (GNU) Emacs und benutzte es fast ausschließlich für fast 10 Jahre.

Emacs war die erste wirklich integrierte Entwicklungsumgebung - der gesamte Bearbeitungs- / Link- / Kompilierungszyklus konnte in Emacs gesteuert werden, und Sie konnten Ihre eigenen für jeden von Ihnen verwendeten Compiler erstellen.

Heutzutage sind IDEs wie Eclipse noch besser integriert (um ehrlich zu sein: Emacs saugt an Grafiken), aber Emacs ist immer noch eine der besten Umgebungen für die "reine" Textbearbeitung.


10
+1 für die sich selbst erfüllende Prophezeiung im ersten Absatz.
OregonGhost

12
"Die erfahrensten Programmierer sind die besten" - so weit von der Wahrheit entfernt, zumindest implizit. Nicht zu sagen, dass unerfahrene Programmierer besser sind, aber nur weil er seit über 20 Jahren dasselbe tut - heißt NICHT, dass er es gut macht.
AviD

7
Vor 20 Jahren gab es viele verschiedene Redakteure. Die meisten von ihnen haben einfach nicht überlebt, im Allgemeinen aus gutem Grund. Warum ist ein Typ, der 1989 vi oder emacs verwendet hat, besser als ein Typ, der 1989 einen MS-DOS-basierten Editor verwendet hat, oder was auch immer ich auf dem Control Data-Mainframe verwendet habe?
David Thornley

Vor 10 Jahren gab es keine gute Java-IDE!
Susheel Javadi

Soweit ich mich vor 20 Jahren erinnere, waren vi und emacs die überwiegend dominierenden Redakteure - nur weil es damals (wie heute) viele Redakteure gab, heißt das nicht, dass sie alle gleich häufig verwendet wurden.
FinnNk

34

Wenn Sie Ihr klares Denken und Ihre Problemlösung verbessern, werden Sie zu einem besseren Programmierer. Kein Programm kann das.

Die Verwendung eines besseren Hammers hilft mir nicht, ein schöneres Haus zu bauen, wenn ich nicht weiß, wie und warum. ;)


Eine gute Analogie für das, was ich auch sagen wollte.
Rob

21
Aber ein schlechter Hammer würde Ihre Produktivität ruinieren, wenn Sie versuchen, dasselbe Haus zu bauen, und Sie werden wahrscheinlich ein anderes Haus haben.
user51568

Das ist fair! Ein durchschnittlicher Programmierer würde mit dem teuren Hammer nicht viel besser abschneiden.
Jas Panesar

5
Ein großartiger Programmierer kann mit einem Hammerstein ein großartiges Haus bauen. (Er ist langsam - aber er kann es immer noch .: D)
Egon

Ja, aber ein Editor, der den Code organisch aus Ihnen herausfließen lässt (was Emacs meiner Meinung nach besser kann als die meisten Editoren), kann Ihr klares Denken und damit Ihre Problemlösung verbessern.
Skilldrick

21

Yegge muss Bill Joy treffen. Er ist nicht nur einer der großen Programmierer der Welt, er hat auch große Stücke von vi geschrieben. In vi.

Kurzes beschämendes Geständnis: Nach 20 Jahren, in denen ich vi (und vim / gvim in den letzten Jahren) für alles verwendet habe, habe ich im letzten Jahr angefangen, Eclipse für die Java-Bearbeitung (und Thunderbird für E-Mail) zu verwenden, obwohl ich bei meinem derzeitigen Job meine Die Maschine hat so wenig Speicher, dass ich normalerweise vi verwende, außer wenn ich den Debugger benötige.


7
+1 für vi (benutze eigentlich vim, aber den gleichen Unterschied). Es sind 98% dessen, was Emacs für weniger als die Hälfte des Aufwands leisten können.
Rmeador

25
Ich habe vim 5 Jahre lang benutzt. Nach 20 Minuten in Emacs habe ich geschworen, nie wieder zurückzukehren. Vim fühlt sich rückwärts.
MattBelanger

5
Yegge selbst erwähnt dies: [Die einzige bemerkenswerte Ausnahme ist VIM, das auch in jeder Hinsicht sehr mächtig ist, obwohl ich keine Erfahrung damit habe. Wenn Sie bereits eine Präferenz für vi gegenüber Emacs entwickelt haben, sind Sie möglicherweise glücklicher, wenn Sie Fachwissen mit VIM verfolgen. Psh] Quelle: steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html
user674062

1
Äh ... Bill Joy benutzt vi nicht mehr.
Plumenator

13

Gibt es einen messbaren Unterschied in Bezug auf Fähigkeiten, Produktivität oder Programmierfreude zwischen Menschen, die von IDEs abhängig sind, und solchen, die dies nicht tun, oder ist alles nur Fanboyismus?

Lassen Sie uns dies auf Visual Studio vs. Emacs eingrenzen - ansonsten ist die Frage zu weit gefasst, und ich vermute, dass die meisten Leute (zumindest hier bei StackOverflow) mit diesen beiden vertraut sind. [Ich bin und ich benutze und bevorzuge Emacs]

Lassen Sie uns als nächstes die drei Komponenten der Frage aufschlüsseln.

Das Programmiervergnügen besteht darin, vor allem das Programmieren an sich zu mögen und zweitens keine störenden Faktoren zu haben, wenn Sie dies tun. Die Verwendung von Werkzeugen, mit denen Sie zu kämpfen haben, wird vom Genuss abziehen. Ich würde also schätzen, dass der Genuss wahrscheinlich durch die Verwendung von Tools maximiert wird, die Sie mögen und mit denen Sie vertraut sind.

Wenn Sie sich mit einem neuen Tool vertraut gemacht haben, werden Sie feststellen, dass Ihnen dieses Tool besser gefällt, und Sie werden daher gerne mehr programmieren, wenn Sie es mit Ihrem neuen Tool tun Lieblingswerkzeug . Mir ist nicht klar, dass Menschen VS im Allgemeinen gegenüber Emacs mögen (oder umgekehrt), wenn sie beide gut kennen.

Als nächstes Programmierkenntnisse. Wenn es einen Zusammenhang zwischen der Fähigkeit und der Wahl von VS / Emacs gibt, denke ich, dass es die Fähigkeit ist, die die Wahl verursacht, nicht die Wahl, die die Fähigkeit verursacht. Keiner von {VS, emacs} scheint mich meiner Erfahrung nach dazu zu bringen, etwas über das Schreiben besser zu lernen Code zu .

Mit einem guten Tool kann ich möglicherweise in kürzerer Zeit denselben Code (und damit dieselbe Codequalität ) schreiben . Wenn wir das annehmen, productivity = quality of code `times` code per timeliegt es nahe, dass jeder Editor, mit dem Sie guten Code in kürzerer Zeit schreiben können, eine Produktivitätssteigerung darstellt.

Ich bin vielleicht zu unbekannt mit VS, aber hier denke ich, dass Emacs einige Stärken hat, die ich in VS nicht gefunden habe. Es mag lächerlich klingen, aber etwas so Einfaches wie Cursorbewegung mitCtrl-[fbnp] ist ein wahrer Segen - es bedeutet, dass Sie Ihre Hände nicht zu den Pfeiltasten bewegen müssen. Eine andere Sache: Sie können eine Suche oder einen Ersatz durchführen, der Zeilenumbrüche enthält, die ich oft genug verwende, um sie nicht zu verpassen.

Eine andere Sache, die ich mag, ist die Möglichkeit, eine Shell in meinen Editor einzubetten. Nach meiner Erfahrung ist es auf Nicht-Windows-Plattformen viel wertvoller (und meine erste "Programmiererfahrung", IIRC, war das Schreiben von DOS .bat-Dateien, also bin ich nicht nur ein flammender Fanboy), aber auf diesen Plattformen ist es ein großer Gewinn . Emacs "integrieren" sich in "alles" (Dateisuche mit Suchen / Suchen, Textsuche mit Grep, Versionskontrolle mit svn / git / hg / ..., wie Sie es nennen).

Endgültiges Urteil - sollten Sie Emacs lernen oder nicht? Und ist das alles Fanboyismus? Wenn Sie Zeit haben, würde ich sagen, dass es sich immer lohnt, neue Wege zu lernen, um dasselbe zu tun, denn der neue Weg könnte sich als besser für Sie herausstellen. Und ich ermutige Sie, es nicht für das abzulehnen, was es zu sein scheint, wenn Sie alle neu darin sind. In diesem Sinne ist es wie ein Wechsel zum Dvorak-Tastaturlayout: Sie sind zunächst langsamer, aber wenn Sie erst einmal auf dem neuesten Stand sind, sind Sie wahrscheinlich mindestens so schnell wie bei QWERTY und komfortabler. Ich empfehle den gleichen Ansatz, um auch neue (Programmier-) Sprachen zu lernen: Weil Sie das Vokabular (Standardbibliothek) nicht kennen, ist es schwierig, Dinge zu sagen, aber die Belohnung wartet immer noch auf Sie.


1
"Lassen Sie uns dies einfach auf Visual Studio vs. Emacs eingrenzen - die Frage ist ansonsten zu weit gefasst, und ich vermute, dass die meisten Leute (zumindest hier bei StackOverflow) mit diesen beiden vertraut sind." -- Ja wirklich? Ich dachte, dass es viel mehr tollwütige * nix-Fanboys wie mich gibt, die nicht gezwungen wären, VisualStudio zu verwenden, geschweige denn freiwillig. Hrm.
Xiong Chiamiov

"Cursorbewegung mit Strg- [fbnp] ist ein wahrer Segen". Obwohl ich Emacs liebe, nachdem ich nach einer langen Pause darauf zurückgekommen bin, finde ich die Cursorbewegung auf diese Weise der am wenigsten nützliche und bequeme Aspekt bei der erneuten Verwendung von Emacs. Im Gegensatz dazu kann ich die dedizierten Cursortasten erreichen und finden, ohne zu schauen oder auch nur nachzudenken. Vielleicht hilft es, Klavierspieler zu sein? :) Aber wer weiß, mit der Zeit wird sich C-Scrunch-Letter vielleicht natürlicher anfühlen.
Greg Hendershott

2
ps Ich stimme Muscheln und Plattformen voll und ganz zu. Wenn Sie zwischen Windows, OS X und Linux wechseln möchten, möchten Sie Cygwin auf dem ersten und Emacs auf allen drei. Werfen Sie Ihre .emacs.d auf GitHub und Sie sind golden.
Greg Hendershott

Sie können auch eine Suche durchführen, die Zeilenumbrüche in Visual Studio enthält, indem Sie
reguläre

10

Mit dem zitierten Text, der mit "Alle größten Ingenieure der Welt verwenden Emacs" beginnt, würde ich ihn auch nicht zum Nennwert nehmen. Kennt er alle größten Ingenieure der Welt? Ist es die gleiche Liste der weltbesten Ingenieure, die Sie oder ich haben?

Einmal erlernt, werden Sie mit einem leistungsstarken Editor wie EMACS oder vi effizienter oder zumindest effizienter, wenn Sie ohne Ihre Lieblings-IDE erwischt werden.

Es ist der "einmal erlernte" Teil, der den Mörder ausmacht. Es ist viel Arbeit und Übung, diese Tools produktiv einzusetzen, und es ist am Anfang sehr schwierig.


1
Ich denke, eine der Eigenschaften, die jemandem wirklich hilft, ein "großartiger" Ingenieur zu sein, besteht darin, die Befriedigung zu verzögern und höhere feste Startkosten zu tragen, um die Effizienz zu verbessern.
Tikhon Jelvis

9

Ich persönlich bin ein Emacs-Fan, aber Emacs ist nur ein Werkzeug. Es macht Sie nicht mehr zu einem besseren Programmierer als ein ausgefallener Stift zu einem besseren Schriftsteller.

Die Klarstellung, dass "großartige Programmierer" ihre Umgebung an sich selbst anpassen, mag einige Vorteile haben, aber viele Tools können dies tun (z. B. vim und SlickEdit), sodass Emacs in dieser Hinsicht nichts Besonderes ist.

Ich denke, was höchstwahrscheinlich wahr ist, ist, dass "großartige Programmierer" eine Leidenschaft für das Programmieren haben und Leute, die eine Leidenschaft dafür haben, dazu neigen, Werkzeuge zu finden, die helfen, diese Leidenschaft voranzutreiben. Emacs (und vim und SlickEdit et al.) Ist ein solches Werkzeug.


Super ausgefallene Stifte lassen mich Hemingway-artig fühlen.
Cheeso

2
Das Besondere an Emacs im Hinblick auf die "Anpassung der Umgebung" ist, dass dies in Emacs viel einfacher ist als in Vim oder SlickEdit. (oder irgendein anderer mir bekannter Editor)
Vedang

8

Ich glaube nicht, dass es einen Unterschied gibt, es ist eher eine Frage der Präferenz.

Was mir jedoch aufgefallen ist, ist, dass je länger Sie codiert haben oder je niedriger die Ebene, die Sie codiert haben, desto höher die Wahrscheinlichkeit ist, dass Sie Emacs oder vi verwendet haben.


Das "länger, das Sie codiert haben" scheint dafür zu sprechen, dass Sie mit dem Codieren begonnen haben, bevor es gute IDEs gab.
Paul Tomblin

3
Gibt es so etwas wie eine gute IDE, mein Junge?
David Thornley

8

Während die IDEs in den letzten zehn Jahren viel besser geworden sind, enthalten sie die Programmierung immer noch in einer kleinen sicheren "Blase", weit weg von einigen der hässlicheren Details. Was dazu neigt, ist, dass diese Zunahme der Abstraktion es mehr Programmierern ermöglicht, mit weniger Wissen mehr zu tun. Das gilt natürlich nicht für alle Programmierer, aber einfachere Tools bringen die Programmierung einem breiteren Publikum näher.

Mehr Wissen über untergeordnete Tools führt häufig zu mehr Stabilität im Code, da die Wahrscheinlichkeit geringer ist, dass versehentlich gegen den Strich geht. Es ist unfair, EMACS nur als den einzigen Frühindikator aufzulisten, da es aus einer ganzen Reihe von Sprachen und Tools stammt und sich mehr um die Tiefe des Verständnisses als um die spezifische Technologie dreht.

Vor langer Zeit haben Sie entweder VI oder EMACS auf den UNIX-Boxen gelernt oder sich auf PCs spezialisiert (OK, es gab auch VMS, CMS, AS400 usw., aber das waren ältere Technologien). Beide Streams zogen sehr begeisterte Leute an, aber die UNIX-Leute wollten eher eine ausgefeilte Lösung, während die PC-Leute nur wollten, dass es schnell geht. Die Kulturen waren sehr unterschiedlich.


7

IMHO-IDEs werden in der Regel für eine bestimmte Plattform, Sprache oder ein bestimmtes Betriebssystem optimiert: Eclipse JDT eignet sich hervorragend für Java, Visual Studio ist C ++ /. NET-zentriert usw. Sie tragen erheblich zur Produktivität bei (wiederum IMHO), wenn Sie nur daran arbeiten diese Plattform, aber wenn Sie die Plattform wechseln, müssen Sie im Grunde eine neue IDE lernen (oder zumindest eine neue Reihe von Plugins, Ansichten, Perspektiven und ich weiß nicht, was noch für Eclipse).

Der Vorteil, Emacs, Textmate, Vim (meine persönliche Präferenz) oder einen generischen Editor zu kennen, besteht darin, dass die Fähigkeiten, die Sie in diesem Editor erwerben, unabhängig davon gelten, für welche Plattform Sie schreiben. Sie sind für die Bearbeitung von Text optimiert. Sobald Sie sie beherrschen, können Sie Text in jeder Sprache sehr effizient bearbeiten.

Es gibt auch die Behauptung von Yegge, dass großartige Programmierer ihre Werkzeuge eher an ihren Arbeitsstil anpassen als umgekehrt. Ich denke, dies ist ein Gewinn für generische Editoren, da Sie einen Editor anpassen , anstatt herausfinden zu müssen, wie vier verschiedene IDEs so angepasst werden können , dass sich alle so verhalten, wie Sie es möchten.


Das Problem tritt auf, wenn Sie auf einer anderen Plattform als der , auf der Sie waren, schreiben müssen : z. B. wechseln Sie von * nix zu Windows, und Ihre Skripte brechen ab, weil sie eine Bourne-Shell mit '/' -basierten Pfaden in a angenommen haben FHS-ähnliche Struktur mit PostScript-basiertem Druck ...
SamB

Ich arbeite jetzt schon seit einiger Zeit mit Emacs, und nur die Cursorbewegung reicht aus, um das Schreiben in irgendetwas anderem zu ärgern - selbst wenn es sich um eine E-Mail in KMail handelt.
Arne Babenhauserheide

@ArneBabenhauserheide Dies ist ein Grund, warum ich Mac OS X liebe, fast alle Textfelder unterstützen C-[npfbaed]. (Aber leider nicht M-)
Porglezomp

6

Ich würde argumentieren, dass die besten Programmierer in der Regel diejenigen sind, die sich die Zeit nehmen, um ihre Umgebung anzupassen, wodurch es schneller / einfacher wird, die Aufgaben auszuführen, die sie wahrscheinlich ausführen werden. Emacs ist einer der leistungsstärksten Editoren, wenn es um die Anpassung Ihrer Umgebung geht. Es hat eine steile Lernkurve, aber sobald Sie diese überwunden haben, gibt es praktisch keine Grenzen mehr, was Sie für Sie tun können.

Jemand hat einmal gesagt, dass die besten Programmierer die Faulen sind; diejenigen, die, sobald sie etwas mehr als einmal tun müssen, einen Weg finden, es zu automatisieren, so dass es weniger Aufwand erfordert. Emacs erlaubt dir sehr, sehr faul zu sein;)


4

Ich habe IDEs von Anfang an verwendet (wohl, nachdem ich mit QBASIC angefangen habe) und seit vielen, vielen Jahren. Ich habe jetzt für meine gesamte Entwicklungsarbeit fast vollständig auf VIM (in verschiedenen Geschmacksrichtungen) umgestellt und bereue es nicht. Meine Produktivität hat definitiv zugenommen.

Natürlich wird der Windows Forms-Designer von Visual Studio durch nichts ersetzt. Aber im Vergleich zu VIM (und Emacs, da bin ich mir sicher) ist der Texteditor in Visual Studio wirklich mies. Sobald Sie die rohe Leistung der Konsole und der GNU-Entwicklertools (womit ich meine make, GCC binutilsundgdb einige mehr ) nutzen, werden Sie feststellen, dass diese Tools zwar primitiv aussehen, aber genau das Gegenteil sind und tatsächlich alles bieten die Tools, die eine IDE bereitstellt (mit Ausnahme des Formular-Designers).

Es ist nur so, dass Sie einen sehr steilen Aufstieg vor sich haben, wenn Sie diese Tools zum ersten Mal verwenden, und der Anreiz kann gering sein. Ich hatte das Glück (?), Diese Werkzeuge verwenden zu müssen, sodass ich keine Wahl hatte, aus der ich mich wieseln konnte.


3

Persönlich denke ich, dass Sie alles verwenden sollten, was Sie produktiver macht. Wenn Sie nicht die Zeit haben, in ein Projekt zu investieren, um Emacs zu lernen, ist dies zu diesem Zeitpunkt wahrscheinlich nicht die beste Nutzung Ihrer Zeit.

Ich halte es jedoch für eine gute Idee, andere IDEs kennenzulernen, wenn Sie genügend Zeit dafür haben. Ich verwende Visual Studio in meiner täglichen Arbeit, aber zu Hause verwende ich Eclipse für kleine Projekte und habe es verwendet Emacs auch. An dem Punkt, an dem ich überlegte, Emacs zu verwenden, war es besser, meine Arbeit zu erledigen, als mich mit Emacs zu verlangsamen.

Ich finde es bis zu einem gewissen Grad absurd zu denken, dass alle besten Programmierer Emacs verwenden. Es gibt viele erstaunliche Programmierer, die nicht so beliebt sind (oder vielleicht nicht so lautstark) und Emacs nicht verwenden.


3

Ich habe vor ungefähr anderthalb Jahren angefangen, Emacs zu verwenden, weil es das Zusammentreffen mehrerer Wünsche war - ich wollte mit regulären Ausdrücken arbeiten (in einem Editor, der sie unterstützte), wollte Lisp lernen, wollte einen besseren Editor.

Durch das Bearbeiten meines Codes mit regulären Ausdrücken habe ich viel über das Finden von Mustern im Code gelernt. Es dauerte eine Weile, bis ich mich an die Tastenanschläge gewöhnt hatte, aber ohne die Maus fliege ich viel schneller.

Emacs gab mir die Möglichkeit, mit meinen Notizen und meiner Codierung in derselben Anwendung zu arbeiten - minimale Kontextumschaltung bedeutet minimale Gehirnumschaltung, und ich kann mich auf die anstehende Aufgabe konzentrieren.


3

Guter Code macht Sie zu einem besseren Programmierer.

Eine gute Textmanipulation ist jedoch der Schlüssel zur Effizienz. Entweder vim oder emacs ändern die Art und Weise, wie Sie mit Text arbeiten - beide haben sich als effektiv erwiesen, stehen jedoch in Bezug auf den Stil fast im Widerspruch zueinander. Außerdem ist diese Debatte ziemlich alt (zurück in die 80er und 90er Jahre, als Text -> Compiler der Schlüssel war), daher gibt es viele andere Texteditoren und / oder IDEs, die Ihnen helfen können, der beste Programmierer zu sein, der Sie sein können.


3

Nein. Wenn Sie glauben, dass die Verwendung von Emacs Sie zu einem besseren Programmierer macht, verwechseln Sie Ursache und Wirkung.

Ich benutze es jedoch täglich. Ich finde, dass ich mit Emacs + Maven produktiver bin als mit Eclipse für die Java-Entwicklung (obwohl ich Eclipse immer noch hin und wieder starte, um gelegentlich Refactoring- oder Debug-Sitzungen durchzuführen).

Das sind meine Gründe:

  • Das eigentliche Textbearbeitungserlebnis in Emacs übertrifft alles andere. Es ist erstaunlich, wie schnell Sie mit nur Ihrer Tastatur so viel erreichen können. Eclipse ist mehr mausorientiert, und wenn Sie tippen, stoßen Sie auf viele irritierende Fehler.
  • Emacs mit elisp anpassen zu können, ist unglaublich leistungsfähig. Ich gehe so weit zu sagen, dass Sie einfach Ihre Zeit verschwenden, wenn Sie sich nicht die Zeit nehmen, rudimentäres Elisp zu lernen und Ihre Umgebung anzupassen.
  • Es gibt Erweiterungen für praktisch alles, was Sie jemals in einem Texteditor tun möchten.

1
+1 für Korrelation! = Kausalität
Xiong Chiamiov

Welchen Java-Modus verwenden Sie?
Avendael

1
Ich verwende den mit Emacs23 gelieferten Standard-Java-Modus mit einigen Anpassungen und Hacks zum Ausführen von Maven-Builds. Ich habe auch angefangen, emacs-eclim zu verwenden, das als Brücke zwischen emacs und eclipse fungiert. Es ist schön und brauchbar, aber im Moment ziemlich rau.
Fred-o

3

Für mich ist der Hauptgrund, warum ich Emacs anstelle einer IDE wählen würde, dass ich damit alles nur über meine Tastatur erledigen kann. Dies ist insofern schön, als es einige Zeit spart, wenn ich normalerweise eine Maus verwenden würde. Da ich sehr mobil bin, neige ich auch dazu, meinen Programmier-Groove aufgrund der Verwendung meines langsamen Touchpads zu unterbrechen. Darüber hinaus lässt seine Anpassung einige IDEs für mich überstrahlen. Wenn Sie jedoch feststellen, dass Sie mit einer IDE schnell genug programmieren, ist die Lernkurve von Emacs die Mühe nicht wert.


2

Gibt es einen messbaren Unterschied in Bezug auf Fähigkeiten, Produktivität oder Programmierfreude zwischen Menschen, die von IDEs abhängig sind, und solchen, die dies nicht tun, oder ist alles nur Fanboyismus?

Ich glaube nicht, dass Sie wirklich eine Antwort darauf bekommen könnten. Es gibt so viele verschiedene Möglichkeiten, um Fähigkeiten, Produktivität und Programmierspaß zu messen - und alle sind wahrscheinlich sehr subjektiv und / oder können nicht in EINE Sache zerlegt werden, die dies verursacht oder nicht.

Es ist immer noch eine interessante Frage.

Mein persönlicher Glaube ist - es kommt auf den Programmierer an :)

G-Man


Fanboys Typ. IDE ist kein Editor. IDE muss nicht der beste Editor sein.
Perpetualcoder

2

Ich denke nicht, dass es Sie zu einem besseren Programmierer machen würde, aber wenn Sie DIESES Level haben, werden Sie höchstwahrscheinlich Emacs (oder vi) verwenden.

: - /

Das Gute an diesen beiden (ich habe noch nie Emacs verwendet, aber ich benutze vi immer noch für die alltäglichste Aufgabe) ist die Tatsache, dass sie Ihren Gedankengang nicht unterbrechen , Sie müssen Ihre Hände nicht herausnehmen Klicken Sie auf die Tastatur, um die Maus zu greifen, und suchen Sie im Dateimenü nach der richtigen Option. Schreiben Sie einfach weiter. In deinem Kopf sagst du etwas wie: "Ersetze alle Vorkommen dieses Wortes dafür", drücke die Eingabetaste und fahre mit deiner Arbeit fort.

Außerdem denke ich nicht, dass sie Emacs verwenden, ist ihr einziges Werkzeug.

Würde es Sie zu einem besseren Programmierer machen? Wahrscheinlich nicht. Aber wenn Sie über dieses Fachwissen verfügen, wird Ihnen wahrscheinlich gefallen, wie schnell Sie mit diesen Tools codieren können.


Die Jagd im Menü richtet sich an Personen, die die IDE nicht kennen. Ich weiß nicht, wann ich das letzte Mal nach einer Menüoption "suchen" musste.
Tster

Denken Sie also, dass die Verwendung von "Datei-> Speichern" besser ist als Strg-S? Das glaube ich nicht. Die Maus greifen zu müssen, auf die Menüdatei zu klicken und dann die Maus nach unten zu bewegen, um den Eintrag zu speichern, scheint mir zu viel, wenn Sie dies tun können, ohne die Hände der Tastatur zu nehmen.
OscarRyz

offensichtlich stimme ich zu. Alle IDEs, die ich je verwendet habe, haben umfangreiche und anpassbare Hotkeys und Kombinationen, genau wie Emacs.
Tster

2

Nein.

Disziplin, kritisches Denken und der Wunsch nach Selbstverbesserung machen Sie zu einem besseren Programmierer. Ihr Werkzeugsatz ist zwar ein wichtiger Faktor für Ihre Produktivität, schafft aber kein Genie.

Wenn Sie Emacs oder Vi nicht mögen, verwenden Sie sie nicht. Indem Sie sich bewusst dagegen entscheiden, gestalten Sie Ihre Entwicklungsumgebung so, dass sie Ihren eigenen Bedürfnissen und Arbeitspraktiken entspricht. In jedem Fall haben Sie das Recht, das zu verwenden, was Sie möchten - und jeden zu ignorieren, der dumm genug ist, Sie für das Tool zu beschimpfen, mit dem Sie Bits auf die Festplatte schreiben - es sind die Bits, die wichtig sind.

Hinweis: "Werkzeugsatz" bedeutet hier wörtlich "Marke" von Werkzeugen - spezifische Editoren, Compiler usw. Konzeptionelle Werkzeugsätze, z. B. die Verwendung der Versionskontrolle, Unit-Tests - alles im Allgemeinen - sind Teil des Selbst- Verbesserungsprozess.


2

Eine der großartigen Eigenschaften von Emacs ist, dass es so ziemlich jeden Dateityp verarbeiten kann, den Sie darauf werfen, egal welcher Größe. Zugegeben, wenn Sie eine verrückte, riesige, verschlüsselte Datei öffnen, ist dies nicht unbedingt nützlich, wird aber geöffnet. Die meisten Editoren (und IDEs) bereiten Ihnen große Sorgen, wenn Sie ihnen eine Datei geben, die zu groß ist und / oder nicht zu den erwarteten Formaten gehört.

Versuchen Sie beispielsweise, eine 1-Gig-Datei im Editor zu öffnen.

Ich habe Emacs irgendwann um 1980 verwendet und es war schon immer ein Werkzeug in meiner Toolbox. Es ist nicht der einzige Werkzeug, aber es ist immer etwas, an das ich mich wenden kann und weiß, dass ich in der Lage sein werde, nützliche Arbeit zu leisten.

Obligatorischer entzündlicher Kommentar : Andererseits habe ich nichts Gutes über vi zu sagen. Ich hatte immer das Gefühl, dass vi mich glücklich töten und meine Organe nur aus Trotz verkaufen würde ...

Im wirklichen Leben verwende ich Netbeans für fast alle Formen der Entwicklung und verwende ab und zu Emacs, um eine schnelle Bearbeitung vorzunehmen. Es gibt fast nichts da draußen, das so bequem ist wie Emacs (für mich), wenn es darum geht, etwas Verrücktes im Moment zu erledigen.

Muss noch jemand statische Zeichenfolgen in kompilierten ausführbaren Binärdateien bearbeiten? Gibt es ein besseres Werkzeug für solche Dinge als Emacs? Es funktioniert auf jeden Fall für mich.


1
Während Visual Studio diese Gelegenheit völlig verpassen würde und sich stattdessen damit begnügt, Ihre Brieftasche zu durchsuchen, um zu sehen, ob noch Bargeld übrig ist.
Rob

Entschuldigung, ich würde es nicht wissen. Ich benutze Netbeans fast die ganze Zeit und Emacs, wenn ich es brauche.
Bob Cross

2

Ich weiß, dass Sie das nicht gefragt haben, aber eine Sache, die das Erlernen von Emacs (unerwartet) für mich verbessert hat, war die Manipulation einer Befehlszeile. Bevor ich Emacs-Tastenkombinationen lernte, bewegte ich den Cursor und navigierte mit den Cursortasten durch den Verlauf, weil ich es nicht besser wusste. Es war so etwas wie ein Glühbirnen-Moment, als mir klar wurde, dass ich es nutzen backward-wordkann move-beginning-of-lineund backward-kill-word(an den ich mich immer gebunden habe C-w, wie Stevey vorschlägt ) in bash( M-tist oft auch nützlich und am beeindruckendsten für diejenigen, die es noch nie gesehen haben).

Ich arbeite ziemlich viel an Solaris, wo die Root-Shell "die Posix-Shell" ist und standardmäßig keine Emacs-Bindungen hat. Ich finde, dass meine Finger jetzt exec bashjedes Mal, wenn ich mich anmelde, von selbst tippen , so viel schneller fühle ich mich mit den jetzt bekannten Bearbeitungsbefehlen unter meinen Fingern.

Ich muss allerdings zugeben, dass ich Knuths Bücher immer noch schwer finde (obwohl es sich lohnt) - also denke ich nicht, dass es meine Programmierung auf magische Weise verbessert hat.


Mann, ich muss wirklich mehr über diese Tricks lernen ... Wie auch immer, können Sie Ihre Login-Shell nicht ändern, oder meinten Sie tatsächlich "die Shell für den Root-Benutzer", als Sie "Root-Shell" sagten? Wenn ja, warum loggst du dich als root ein ???
SamB

2

Emacs hat mich bei der Textmanipulation und der Dateisystemnavigation effizienter gemacht . Und da diese beiden Dinge beim Programmieren eine Rolle spielen, bin ich ein effizienterer (also besserer) Programmierer.


2

Ich denke, Emacs kann Sie zu einem besseren Programmierer machen, wenn auch indirekt. Ich denke, Emacs hat mich dazu gebracht, tatsächlich in einer funktionalen Sprache ( Elisp ) zu schreiben, die mich für andere funktionale Sprachen ( Clojure ) interessiert, von denen mir gesagt wurde, dass sie mich zu einem besseren Programmierer machen. Das heißt, ich nehme an, die Zeit wird es zeigen.


Es ist ein wirklich alter Stil von Lisp (mit nur dynamischem und keinem lexikalischen Umfang), aber es hat sicherlich viel zu lehren. Das, und es kann ein ziemlich netter Texteditor an jenen Tagen sein, an denen es tatsächlich richtig funktioniert!
SamB

1

Wenn Sie einen anpassbaren Editor verwenden können, können Sie raffinierte Dinge erledigen, aber insbesondere Emacs sind nicht unbedingt die bestmöglichen. Ich bin selbst ein SlickEdit-Benutzer und mache damit die gleichen seltsamen halbautomatisierten Sachen, für die Emacs berühmt ist. Ich habe Leute gesehen, die ähnliche Dinge mit vi und verschiedenen Windows-basierten Editoren gemacht haben.

Also, ja, Sockel-Sets sind gut, aber zu argumentieren, dass Craftsman das One True Socket-Set macht, ist irgendwie dumm.


Abgesehen davon könnte ich SlickEdit ausprobieren, wenn es nicht das Braindead-Marketing gäbe: "10 Gründe, SlickEdit nicht zu verwenden - # 1: Sie mögen es, ein schlechter Programmierer zu sein. # 2: Sie möchten mehr dafür ausgeben weniger. # 3: du bist ein Inzucht-Idiot. etc etc etc "
Julia

Ich bin zu Slick gekommen, bevor es Marketing gab. Es ist nur so, dass es der einzige echte Editor war, der zu dieser Zeit unter OS / 2 3.0 lief. Das ist wahrscheinlich der gleiche Grund, warum all diese anderen Jungs Emacs benutzen ...
mjfgates

1

Wenn Sie die Emacs-Tastenkombinationen und die integrierten Funktionen beherrschen, können Sie Text schneller bearbeiten als IDEs wie Eclipse oder Visual Studio.

Nehmen Sie nicht mein Wort und sehen Sie sich diese Videos von Profis an, die Emacs verwenden .

Sobald Sie in Emacs ein anständiges Niveau erreicht haben, können Sie jede Sprache effektiv bearbeiten: Java Script, Java, Ruby, Python, HTML, C, C ++ usw.

Der Einstieg in Emacs ist ein Schmerz im Hintern, die Out-of-the-Box-Erfahrung ist schlimmer als schlecht. Die Emacs-Standardkonfiguration setzt den Emacs-Neuling nicht den leistungsstärkeren Funktionen (Hippie-Erweiterung, Etags, Yasnippets usw.) von Emacs aus. Ich schlage vor, mit den Emacs Starter Kit- Punktdateien zu beginnen.

Ein weiterer Grund, warum Steve Yegge behauptet, dass die weltbesten Programmierer Emacs verwenden, ist elisp. Mit Elisp kann der erfahrene Programmierer Emacs problemlos erweitern. Schreiben eine Erweiterung in Eclipse oder Visual Studio ist wesentlich härter als eine schnelle Funktion zu schreiben oder sogar eine neue Moll in elisp.


Die Frage ist, warum man es überhaupt benutzt. Wenn man glücklich, komfortabel und produktiv ist, warum Zeit und Mühe damit verschwenden, Emacs zu lernen? Ich würde viel lieber eine neue Programmiersprache lernen oder neue Technologien erforschen, als einen alten Editor zu lernen, wenn auch einen mächtigen. Es gibt nur 24 Stunden am Tag, nutzen Sie die Zeit mit Bedacht aus.
Sarsnake

Eine andere Sache, die ich erwähnen möchte, ist, dass es auch von der Technologie abhängt, die Sie verwenden. Hat Emacs Intelligenz? Ich habe es im College auf UNIX-Computern verwendet und bin mir sicher, dass es sich seitdem geändert hat. Aber für .NET ist Intellisence ein MUSS. Es gibt keine Möglichkeit, sich ALLE Funktionsnamen in allen Klassen in allen Namespaces zu merken. Und ich bin mir sicher, dass ich nicht jedes Mal auf MSDN gehe, wenn ich einen Funktionsnamen nachschlagen muss. Wenn Emacs Intelligenz bietet, würde ich das in Betracht ziehen.
Sarsnake

1

Ich glaube, es ist ein großes Missverständnis, dass die Verwendung dieser textbasierten Editoren wie VI und Emacs sehr geschätzt wird oder benötigt wird, um ein "großartiger Programmierer" zu werden. Ich hatte immer das Gefühl, dass IDEs leistungsfähiger sind als früher, und es kommt wirklich auf eine Vorliebe und einen Stil an.


0

Ich habe Emacs im College benutzt. das war vor ungefähr 16 Jahren. Ich habe nicht zurückgeschaut. Ich wünschte, ich könnte mich immer noch mit Emacs wohlfühlen, aber in Wahrheit bin ich mit meiner MS IDE ziemlich produktiv.

Der Text, den Sie gepostet haben, ist nur ein Troll. Ja. Kein anderer Grund dafür, als einen Religionskrieg zu beginnen.


0

Ich begann mit Emacs, wechselte aber zu vi, was für mich wegen seiner Einfachheit eleganter ist. Auch wenn Sie jemals im Einzelbenutzermodus stecken bleiben, sind ed-Befehle eine Teilmenge von vi-Befehlen. Ich weiß nicht, ob Emacs damit umgehen können.

In dieser Hinsicht denke ich, dass vi Sie zu einem besseren Programmierer macht.


Emacs DOES haben einen Mx vi-Modus , obwohl ich , dass den Verdacht , dass eine Art von Witz ...
Brian postów

Die Kenntnis der Grundlagen von vi ist für das Sysadminning von entscheidender Bedeutung. Das ist jedoch keine Programmierung.
Xiong Chiamiov
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.