Ich habe vor ungefähr 5 Jahren angefangen zu programmieren. Ich wurde durch Java und Eclipse eingeführt, die beide ein erhebliches Stigma in der Programmiergemeinschaft haben. Eine Reihe von Leuten in der Firma, bei der ich derzeit praktiziere, bevorzugen Emacs oder Vim. Ich kann nicht sehen, wie ein einfacher Texteditor schneller oder einfacher als eine IDE im Allgemeinen ist, obwohl ich es zu schätzen weiß, dass einige Dinge wie das Erstellen über die Befehlszeile schneller sind.
Handelt es sich um den Old-Boys-Club, oder kann es effizienter sein, ein Projekt auf diese Weise zu programmieren?
Können Sie einige Anwendungsfälle zur Demonstration bereitstellen? Wenn ich Eclipse befürworten würde, würde ich sagen, dass Refactoring und automatische Vervollständigung ziemlich nützliche Werkzeuge sind.
Gav
Antworten:
Ich habe in IDEs wie Eclipse angefangen, bin aber vor ungefähr 2 Jahren zu Vim gewechselt.
Gründe, warum Sie möglicherweise einen Textmodus-Editor verwenden möchten:
Wenn Sie wirklich durchhalten, werden Sie feststellen, dass die Arbeit in einem solchen Editor irgendwann schneller sein wird und tatsächlich als eine Art „Muskelgedächtnis“ verankert wird. Dies bedeutet, dass Sie codieren können, ohne langsamer zu werden, um über den Prozess nachzudenken.
quelle
Vim / Emacs
Finsternis
Alle von ihnen
Normalerweise schreibe ich Code-Volumes
vim
durch meine IDE und führe Debugging-Aufgaben durch. Die Vertrautheit mit der Codebasis ist sicherlich ein Faktor, da eine IDE ein großartiges Werkzeug ist, um herumzuspringen und unbekannten Quellcode zu lernen.quelle
Das Argument "Eclipse für Java" ist ein anderes Argument als "Eclipse für [etwas, das nicht Java ist]". Eclipse rockt für Java.
Ich meine, vi ist wie ein Schraubenzieher oder vielleicht ein Schweizer Taschenmesser, und Eclipse ist wie eine große CNC-Kombimühle und ein Asphaltstreuer. Sie vergleichen sie nicht genau, Sie verwenden einfach beide.
Arbeiten Sie auch in etwas Riesigem, von dem Sie wenig wissen, das Eclipse jedoch versteht? Ein Beispiel wäre die Arbeit an Eclipse selbst. Hier bietet Eclipse perfekte Sichtbarkeit und vollständige Sprachunterstützung. Sie benötigen die Toast-Eingabeaufforderungen und die Dokumentationslinks.
Wenn Sie jedoch ein Ruby-Programm mit 100 Zeilen eingeben, um eine SQL-Datenbank zu konvertieren, bietet Eclipse keinen großen Mehrwert, insbesondere angesichts des Gepäcks.
Es ist auch wichtig, vi richtig einzurichten, sonst werden Sie den Appell nicht unterdrücken. Autoindent, Showmatch, Tab-Behandlung und verschiedene andere Optionen sollten festgelegt werden. Sie sollten eine einfache Möglichkeit haben, eine Tag-Datei zu generieren. Google kann Tag-Generatoren finden oder einfach einen von Grund auf neu schreiben, mit ein paar Zeilen Shellcode und sed (1).
Refactoring halte ich nicht für ein Kriterium. Das machen Sie nicht einmal pro Stunde oder sogar einmal am Tag. Starten Sie die große IDE, wenn Sie einen Refactor benötigen. Oh, und erwarten Sie kein automatisiertes Refactoring von etwas anderem als Java.
Schließlich kann vi tatsächlich viele Dinge tun, mit denen die IDE nicht beginnen kann. Die gruppierte globale Substitution mit regulären Ausdrücken ist eine Art verallgemeinerte Refactor-Any-Engine. Um die vi gestalt zu schätzen, müssen Sie den Linienmodus (":") lernen. Kurz gesagt, es ist, als hätte man sed (1) in Ihrem Editor.
quelle
Es hängt alles davon ab, was Sie wollen / erwarten und was Ihr Nutzungsmodell ist.
Wenn Sie nach einer Java-IDE suchen, ist Eclipse schwer zu schlagen. Es ist in Java für Java von Java-Leuten geschrieben.
Wenn Sie nach einem Tool suchen, mit dem Sie Dateien schnell über die Befehlszeile bearbeiten können, sind Emacs oder vi genau das Richtige für Sie.
Wenn Sie nach einem Tool suchen, von dem Sie nie mehr weg müssen, weil es alles kann, was Sie wollen (E-Mails senden / lesen, Projekte verwalten, Aufgabenlisten erstellen, kompilieren, debuggen usw. usw. usw.), dann ist Emacs mehr "effizient".
Wenn Sie nach Gründen suchen, um den Editor zu wechseln, finden Sie heraus, was Sie wollen. Wenn Sie eine bessere Eclipse wollen, vi und Emacs Ihnen das nicht geben, bleiben Sie bei Eclipse.
Wenn Sie nach einem kleinen, flinken Editor suchen, ist vi genau das Richtige für Sie.
Wenn Sie nach dem letztendlich erweiterbaren Editor suchen, ist Emacs der richtige Weg.
Egal für welches Werkzeug Sie sich entscheiden, tauchen Sie ein . Lernen Sie alle Vor- und Nachteile kennen und erweitern Sie sie, um Ihren Anforderungen gerecht zu werden. Verwenden Sie es an seine Grenzen und werden Sie effizient in seiner Verwendung.
quelle
Emacs kann eine mächtige IDE sein, aber nachdem ich von Emacs zu Eclipse gewechselt bin, muss ich sagen, dass ich niemals zurückkehren würde. Eclipse bietet nur so viele Funktionen, dass Sie Emacs nicht nutzen können.
Mylyn- und Bereichsansichten der von mir verwendeten Daten und Dateien, die Debugging-Benutzeroberfläche und die CVS-Benutzeroberfläche sind alle integriert und einfach abzurufen und zu verwenden. Ich werde die Maus ein wenig benutzen, um sie zu bekommen.
quelle
Das wichtigste zuerst. VIM ist für die Programmierung produktiver als Eclipse. Ihre persönliche Produktivität in VIM mag miserabel sein, aber die potenzielle Obergrenze von VIM ist viel höher. Das ist ein Fakt.
VIM ist eine Kampfkunst. Es fühlt sich unnatürlich an, wenn Sie es zum ersten Mal benutzen. Und Sie können es nicht einmal zum Laufen bringen. Es dauert Jahre der Übung, um allmählich produktiv zu werden. Sie konzentrieren sich zunächst darauf, ein kleines Detail zu beherrschen. Langsam addieren sich all diese Bits, die Sie beherrschen, bis mühelos Text aus Ihren Fingerspitzen auf den Bildschirm fließt. Komplizierte Änderungen, die Ihren Kollegen zum Seufzen bringen würden, springen von Ihren Händen, bevor er sein Ausatmen beenden kann. Es gibt nur wenige Leute, die VIM verwenden können. Weniger, die es produktiv einsetzen können. Und vielleicht treffen Sie in Ihrem Leben nie einen Meister. Aber es wird gemunkelt, dass sie existieren.
VIM wurde entwickelt, um Ihre Hände in der Heimreihe zu halten. Das Bewegen Ihrer Hand von der Tastatur zur Maus ist demoralisierend. Es ist eine grobmotorische Bewegung. Das Bewegen Ihres Arms hat eine psychologische Wirkung, die Ihre Motivation beeinträchtigt. Mit VIM könnte jemand Ihre Handgelenke auf die Tastatur schrauben und Sie könnten trotzdem problemlos Dateien öffnen, Fenster teilen, Registerkarten öffnen, das Projekt erstellen, suchen / ersetzen, Schriftarten ändern, Farben ändern usw. Und das alles blitzschnell.
VIM ist modal. Das heißt, Sie müssen keine komplexen Tastenkombinationen ausführen, bei denen Sie Strg + Umschalt + Taste gedrückt halten. Das schmerzt deine Hände auf lange Sicht. Stattdessen führen Sie Befehle aus. Aufgrund des modalen Charakters sind keine Tastenkombinationen erforderlich.
Wir speichern Daten in unserem Speicher wie Computer. Unser Gedächtnis kann jeweils nur wenige Werte enthalten. Sehen Sie, wie viele verschiedene Ganzzahlen Sie in Ihrem Kopf halten können, bevor sie abrutschen. Wir überwinden diese menschliche Einschränkung, indem wir Dinge aufschreiben. Wenn Daten aus unserem Speicher fallen, können wir uns leicht ansehen, was wir aufgeschrieben haben, um sie zurückzubekommen. Wenn Sie Ihre Zeit mit grobmotorischen, physischen Dingen verbringen, verlieren Sie Zeit, die Sie möglicherweise für die Verarbeitung von Daten in Ihrem Gehirn aufgewendet haben. Sie möchten, dass Ihr Geist ohne Anstrengung auf den Bildschirm fließt. Es mag nicht nach viel klingen, aber die Fähigkeit von VIM, Ihre Gedanken mühelos auf den Bildschirm zu übertragen, ist eine GROSSE Produktivitätssteigerung. Es ist schwer in Worte zu fassen, was ich zu sagen versuche.
VIM unterstützt die Code-Vervollständigung. Sowohl textuell als auch nachgeschlagen. Es kann Text aus mehreren Dateien abrufen. Alles, was Sie wünschen, können Sie in VIM haben. Entweder selbst machen oder etwas verwenden, das jemand anderes gekocht hat.
VIM unterstützt die Definition von Definitionen mit ctags. Sie können auch alle Referenzen eines Artikels finden. Auch hier können Sie alles, was Sie wünschen, in VIM haben.
Das Scripting von VIM ist riesig. Sie können Tausende von Farbschemata herunterladen oder erstellen und die Farben sofort ändern. Versuchen Sie, Schriftarten oder Farben in Microsoft Visual Studio zu ändern, und es bleibt 20 Sekunden lang hängen, während Daten geladen werden. Sie können keine Farbschemata speichern, und Sie müssen 30 Minuten damit verbringen, Ihre Farben und Schriftarten jedes Mal zu optimieren, wenn Sie die Landschaft wechseln möchten. In VIM können Sie den Zeilenabstand auf Null setzen, um mehr Codezeilen auf dem Bildschirm anzuzeigen. Ich bekomme über 80 Zeilen. Visual Studio verwendet 2 Pixel Abstand für jede Zeile und Sie können ihn nicht anpassen !!! Weniger Zeilen = mehr Bildlauf = weniger Produktivität = gezwungen, kleine Schriftarten für mehr Zeilen zu verwenden = Augenbelastung.
Geteilte Fenster werden in einer Instanz in VIM geöffnet. Dies ist nützlich, wenn Sie Daten in einem Abschnitt des Codes anzeigen müssen, der weit von der Stelle entfernt ist, an der Sie eingeben (oder in einer anderen Datei). Sie müssen keine Zeit damit verbringen, die Größe von Fenstern zu ändern, oder sich Sorgen machen, dass sich GUI-Fenster überlappen und hintereinander fallen. Nicht verwandte Codefenster können in Registerkarten geöffnet werden, um nicht Platz auf dem Bildschirm zu beanspruchen, sondern um schnell zu wechseln.
VIM als IDE: http://www.youtube.com/watch?v=MQy2rVOf-z0&feature=fvwrel VIM die Rache: http://www.youtube.com/watch?v=lQNFfhC4QI8
quelle
Ich habe vi jahrelang verwendet, um Code in einer Vielzahl von Sprachen zu bearbeiten, und ich liebe ihn wirklich. Aber ich habe festgestellt, dass IDEs wie Eclipse für die Java-Entwicklung noch besser geeignet sind, und jetzt arbeite ich fast ausschließlich in Eclipse. Ich verzichte von Zeit zu Zeit darauf, vi für einige spezielle Aktivitäten zu verwenden, z. B. das Einfügen von Copyright-Hinweisen in großen Mengen, hauptsächlich für bestimmte Arten von Änderungen, die in Eclipse nicht gut automatisiert sind. Ich habe auch meinen Windows-Java-Dateityp auf vi zugeordnet, wenn ich nur eine Quelldatei anzeigen möchte, ohne darauf zu warten, dass Eclipse geöffnet wird.
Einige der attraktiven Funktionen von Eclipse sind:
Ich finde es viel effizienter als vi im Allgemeinen, also sollten Sie es ausprobieren und sehen, ob es auch für Sie gilt.
quelle
Ich erinnere mich, dass ich irgendwo über eine Studie gelesen habe, die zeigte, dass Menschen wahrgenommen haben Tastenkombinationen als effizienter als mousing, wenn in der Tat ist es nicht immer war.
Ein weiterer psychologischer Effekt ist, dass wir Wert auf Dinge legen, die teuer sind, dh da es schwieriger ist, Emacs zu lernen, muss es sein es in irgendeiner Weise besser sein.
Ich denke, diese Effekte könnten viel von der extremen Zuneigung erklären, die manche Menschen zu Emacs / Vi haben.
Im Fall von Eclipse kann es jedoch sehr langsam sein und gelegentlich sogar abstürzen, aber das ist im Allgemeinen kein Fall für IDEs.
Ich benutze regelmäßig Eclipse, VS und Emacs. Ich würde auch TextMate verwenden, aber ich habe keinen Mac mehr. Es hängt davon ab, was ich tue, insbesondere, welches System meine Sprache und Tools am besten unterstützt.
Ich kenne Leute, die wesentlich mehr Zeit damit verbringen, ihren Editor zu programmieren, als etwas Nützliches zu tun. Einige von ihnen geben sogar zu, dass sie es nur für die Herausforderung tun. Andere Leute behaupten oft, dass Emacs / Vi viel mehr kann als IDEs, weil sie skriptfähig sind. Nun, die meisten IDEs (einschließlich Eclipse) können auch per Skript erstellt werden. In diesem Sinne sind fast alle Editoren gleichwertig (obwohl ich zugeben muss, dass einige Editoren einfacher zu skripten sind als andere).
Wenn Sie IDEs mögen, ist mein Rat, weiterhin eine zu verwenden. Es gibt keinen One True Editor .
BEARBEITEN:
Dies scheint der Artikel zu sein, auf den sich Nick Bastin bezieht. Ich stimme zu, dass es weit von einer endgültigen Quelle entfernt ist. Ich denke jedoch immer noch, dass mein Standpunkt, dass wahrgenommene und reale Produktivität nicht dasselbe sind, immer noch gilt.
quelle
Das hängt von den Sprachen ab.
Verwenden Sie für Java oder .NET eine IDE (Eclipse, Netbeans, Visual Studio ...).
Für fast alle anderen Sprachen (C, C ++, Ruby, Python, Haskell, Lisp ...) sind vi und emacs meiner Meinung nach besser.
quelle
Die Effizienz von vim / emacs wird hauptsächlich durch die starke Verwendung der Tastatur erreicht. In diesen Programmen können Sie fast alles direkt über die Tastatur ausführen, anstatt die Maus anhalten und verwenden zu müssen.
quelle
Ich würde sagen, dass die tatsächlichen vim / emacs-Editoren dem Eclipse-Texteditor in Bezug auf die von ihnen angebotenen Verknüpfungen weit überlegen sind. Ich stimme Ihnen jedoch in Bezug auf das Refactoring voll und ganz zu.
Die meisten Leute müssen Skripte schreiben, um die Art von Refactoring durchzuführen, zu der Eclipse in der Lage ist. Ich denke, ein Teil davon ist, mit Rechten zu prahlen oder Menschen tun es einfach so, wie sie es immer getan haben.
quelle
touch
.Ich würde mich jederzeit für Emacs anstatt für Eclipse entscheiden. Ich muss auch sagen, dass Bare-Bone-Emacs nicht so toll sind, aber nach einigen Optimierungen werden Sie es nie mehr loslassen wollen. Insbesondere werde ich Ihnen sagen, wie hilfreich Emacs beim Schreiben meiner Masterarbeit war. Dies sollte deutlich machen, warum Eclipse minderwertig ist, nur weil es weniger vielseitig ist.
Ich habe meine Masterarbeit in den folgenden Programmiersprachen geschrieben: C ++, Python und R. Ergänzend musste ich die Diplomarbeit schreiben, für die ich LaTeX verwendet habe. Außerdem musste ich eine Reihe von Shell-Skripten und cmake-Skripten schreiben. Erraten Sie, was? Emacs hat eine großartige Unterstützung für all das. Insbesondere war es eine Freude, mit AuCTeX zusammenzuarbeiten, um LaTeX-Dokumente zu erstellen. Dann bietet Emacs den großartigen ESS-Modus für die Arbeit mit R. Ebenso bietet es Funktionen für Python. Nachdem ich meine cmake-Skripte zum Erstellen des C ++ - Codes hatte, musste ich nur compile from withing emacs aufrufen und war fertig. Eclipse kann diese Dinge nicht vollständig ausführen, daher müssen Sie lernen, viele verschiedene Programme zu verwenden. Notizen? Dafür gibt es einen Org-Modus, und es ist großartig!
Und dann brauchte mein Programm einen sehr leistungsfähigen Computer (nicht wie jeder Laptop). Also könnte ich einfach alles aus der Ferne aus Emacs heraus machen !!!! Mit tramp habe ich R-Code aus der Ferne interaktiv ausgewertet, C ++ - Code aus der Ferne kompiliert, ausgeführt und debuggt und alles innerhalb des gleichen guten lokalen Emacs-Fensters, das ich verwendet hatte. Im Gegensatz dazu entwickelten meine Freunde, die für alles ein separates Tool verwendeten, viel langsamer Software, die auf einem anderen Computer ausgeführt werden sollte.
So habe ich einige andere Geschichten, aber ich denke, dies gibt Ihnen eine gute Vorstellung davon, was Sie mit Emacs tun können. Alles in allem denke ich, dass die Entscheidung für Emacs (trotz der Lernkurve) die produktivste Entscheidung war, die ich je getroffen habe.
Ich hoffe es hilft.
quelle
Wir haben dieses Argument kürzlich bei der Arbeit gehabt. Meiner Meinung nach war eine einzige Funktion, auf die ich nicht verzichten konnte, die automatische Vervollständigung von Emacs. Die automatische Vervollständigung von Eclipse basiert auf einer syntaktischen Analyse - der Code wird analysiert, und während Sie Code eingeben, wird Ihnen die Wahl der Vervollständigung angeboten. Die automatische Vervollständigung von Emacs basiert auf einer einfachen Textanalyse. Das heißt, es funktioniert im Klartext, in Kommentaren, in der Dokumentation - überall. Ich sage immer wieder, dass die automatische Vervollständigung des Emacs das ist, was IntelliSense sein möchte, wenn es erwachsen wird.
Aktualisieren:
Eclipse bietet Alt- / an, das Emacs ähnlich sein soll. Ich bin mir jedoch nicht sicher, wie gut es funktioniert.
quelle
Der einzige Ort, an dem ich eine IDE bevorzuge, ist das Debuggen. Ich habe meine vim-Umgebung für das Debuggen eingerichtet, aber die Verwendung war so schmerzhaft und umständlich, dass ich jetzt nur noch zu meiner IDE (Netbeans) wechsle, wenn ich debuggen muss. vim eignet sich hervorragend für die Textbearbeitung, die IDE eignet sich hervorragend für komplexere Aufgaben (wie das Debuggen und einige Aufgaben im Zusammenhang mit dem Projektmanagement).
quelle
Wie einige der obigen Beiträge habe ich mit einer IDE (Eclipse) begonnen. Von dort wechselte ich zu Emacs und dann zurück zu einem Rich-Text-Editor (TextMate).
Für mich war die Effizienz die Fähigkeit, einen Editor auf der Schnittstellenebene zu haben. Erlaubt mir, andere Dienste, die ich aufgebaut habe (oder andere), in meine Pseudo-IDE-Umgebung zu integrieren.
quelle