Die besten Programmiereditoren? Ein endloser Kampf ohne klaren Sieger
Veröffentlicht: 2022-03-11Ungeachtet der offensichtlichen Beweise für das Gegenteil sind Programmierer Menschen. Und wie alle Menschen nutzen wir gerne unsere Entscheidungsfreiheit. Ob es darum geht, die rote oder die blaue Pille zu nehmen, ein Kleid oder eine Hose zu tragen oder eine Entwicklungsumgebung einer anderen vorzuziehen, die Entscheidung, die wir treffen, ordnet uns der einen oder anderen Gruppe von Menschen zu. Die Wahl kommt zwangsläufig nach unserer Bewertung der Optionen. Und nachdem wir eine Wahl getroffen haben, neigen wir dazu zu glauben, dass jeder, der sich anders entscheidet, einen Fehler gemacht hat.
Sie können ganz einfach im Internet suchen und Hunderte von Debatten über Emacs vs. Vim finden. Selbst wenn Sie sie alle lesen, ist es unmöglich, objektiv einen Gewinner auszuwählen. Sagt Ihnen die Wahl der Entwicklungsumgebung jedoch etwas über die Qualität der Arbeit, die ein Entwickler leisten kann? Absolut nicht!
Ein großartiger Entwickler könnte seinen Code in Notepad schreiben und trotzdem großartige Sachen liefern.
Sicherlich gibt es viele Dinge, die Profis bei der Auswahl von Werkzeugen für ihre Arbeit berücksichtigen. Dies gilt für jeden Beruf, einschließlich der Softwareentwicklung. Sehr oft basiert die Auswahl jedoch auf dem persönlichen Geschmack und nicht auf etwas Leicht Greifbarem.
Programmierer verbringen die meiste Zeit damit, sich die Entwicklungsumgebung anzusehen, daher ist es nur natürlich, dass wir etwas Schönes und Funktionales wollen. Jede Entwicklungsumgebung hat ihre Vor- und Nachteile. Insgesamt sind sie eine treibende Kraft der Softwareentwicklungsbranche.
Welche Dinge sollte ein Entwickler bei der Auswahl einer Reihe von Programmierwerkzeugen wie einem Programmiereditor seiner Wahl berücksichtigen? Die Antwort auf diese Frage ist nicht so einfach, wie es klingen mag. Softwareentwicklung ist fast eine Kunst, und es gibt nur wenige „schwammige“ Faktoren, die ein Meisterwerk von einem überteuerten Sammlerstück unterscheiden.
Jede Programmiersprache, sei es Java, C#, PHP, Python, Ruby, JavaScript usw., hat ihre eigenen Entwicklungspraktiken in Bezug auf Projektstruktur, Debugging und Bereitstellung. Eines haben sie jedoch alle gemeinsam: das Bearbeiten von Code. In diesem Artikel werden wir verschiedene Entwicklungsplattformen aus der Perspektive der häufigsten Aufgabe in der Softwareentwicklung bewerten: dem Schreiben von Code.
IDE vs. Allzweck-Texteditor
Eine integrierte Entwicklungsumgebung (IDE) (oder interaktive Entwicklungsumgebung) ist eine Softwareanwendung, die Computerprogrammierern umfassende Möglichkeiten für die Softwareentwicklung bietet. Eine IDE besteht normalerweise aus einem Quellcode-Editor, Build-Automatisierungstools und einem Debugger, und viele unterstützen viele zusätzliche Plugins und Erweiterungen.
Texteditoren sind einfachere Anwendungen. Im Vergleich zu IDEs entsprechen sie normalerweise nur dem Code-Editor-Segment einer IDE. Sie sind jedoch oft viel mehr als das. IDEs werden erstellt, um dem Zweck der Softwareentwicklung zu dienen, während viele Texteditoren auch für die Verwendung durch Nicht-Entwickler konzipiert sind.
Statisch typisierte Sprachen können viele Vorteile aus IDEs ziehen. Aufgrund der strengen Typisierungsregeln ist es der IDE möglich, Fehler und Namensinkonsistenzen zwischen Klassen und Modulen und sogar zwischen Dateien direkt im Editor vor dem Kompilieren zu erkennen. Diese Funktionalität ist bei vielen IDEs standardmäßig enthalten, und aus diesem Grund sind IDEs für statisch typisierte Sprachen sehr beliebt.
Es ist jedoch unmöglich, dasselbe für dynamisch typisierte Sprachen zu tun. Wenn beispielsweise ein Methodenname durch den Code selbst generiert werden kann, der aus einer Reihe von String-Verknüpfungen besteht, erfordert der Versuch, Namensfehler in dynamischen Sprachen zu erkennen, nichts weniger als das Ausführen des eigentlichen Programms. Da einer der Hauptvorteile von IDEs nicht auf Programmierer für dynamische Sprachen zutrifft, neigen sie eher dazu, bei Texteditoren wie Sublime zu bleiben. Als Nebenbemerkung ist dies auch ein Hauptgrund, warum die Bewegung der testgetriebenen Entwicklung um dynamische Sprachgemeinschaften herum gewachsen ist und in statischen Sprachen keine so starke Anhängerschaft hatte.
Was macht einen großartigen Programmiereditor aus?
Abgesehen von einer Reihe unterschiedlicher Funktionen für verschiedene Sprachen muss jeder Programmiereditor über eine gut organisierte und saubere Benutzeroberfläche verfügen. Auch die Gesamtästhetik darf nicht außer Acht gelassen werden. Es ist nicht nur eine Frage des guten Aussehens, denn ein gut gestalteter Editor mit der richtigen Auswahl an Schriftart und Farben trägt dazu bei, die Augenbelastung gering zu halten und Sie produktiver zu machen.
In der heutigen Entwicklungsumgebung ist eine steile Lernkurve eine Belastung, unabhängig vom Funktionsumfang. Zeit ist immer wertvoll, daher sollte ein guter Editor leicht zu gewöhnen sein. Idealerweise sollte der Programmierer sofort mit der Arbeit beginnen können, ohne allzu viele Hürden nehmen zu müssen. Ein Schweizer Taschenmesser ist ein praktisches und nützliches Werkzeug, aber jeder kann es in wenigen Minuten beherrschen. Auch für Programmierer ist Einfachheit eine Tugend.
Benutzeroberfläche, Funktionen und Arbeitsablauf
Werfen wir einen genaueren Blick auf die Benutzeroberfläche, verschiedene Funktionen und Fähigkeiten sowie häufig verwendete Tools, die Teil eines jeden Programmiereditors sein sollten.
Zeilennummern sollten natürlich standardmäßig aktiviert und einfach ein- oder auszuschalten sein.
Snippets sind nützlich, um standardisierte Textblöcke in ein festes Layout einzufügen. Beim Programmieren geht es jedoch in erster Linie darum, Dinge nur einmal zu sagen. Seien Sie also vorsichtig mit Snippets, da sie die Wartung Ihres Codes in Zukunft erschweren können.
Die Möglichkeit, die aktuelle Datei zu linten oder zu überprüfen, ist nützlich, ebenso wie die Möglichkeit, sie zu starten. Ohne diese Einrichtung muss ein Programmierer zu einem externen Befehlszeilenfenster wechseln, den richtigen Befehl auswählen und ausführen und dann Fehlermeldungen durchgehen, um die Fehlerquelle zu finden. Das Fusseln muss jedoch unter der Kontrolle des Programmierers stehen, da die durch das Fusseln verursachte Verzögerung den Codierer in einem entscheidenden Moment unterbrechen könnte.
Ein Inline-Dokument ist nützlich, solange es nicht im Weg steht, aber es ist manchmal nützlicher, eine Browserseite mit den Klassendefinitionen zu öffnen, insbesondere wenn es viele verwandte Klassen gibt, die sich nicht direkt erweitern. Es ist einfach genug, Code aus der Browser-Dokumentation auszuschneiden und in den zu schreibenden Code einzufügen, so dass die zusätzliche Komplexität der Inline-Dokumentation oft weniger nützlich, ja sogar ärgerlicher wird, wenn der Programmierer mehr über die Dokumentation weiß.
Die Wortvervollständigung ist hilfreich, da sie schnell und fast so zuverlässig ist wie eine In-Edit-Dokumentation, während sie weniger aufdringlich ist. Es ist befriedigend, nur ein paar Zeichen eines Wortes einzugeben und dann die Eingabetaste zu drücken, um den Rest zu erhalten. Andernfalls arbeitet man unter der Belastung durch übermäßiges Tippen, was von faulen Programmierern verabscheut wird, die lieber ee
als das längere exponentialFunctionSquared
eingeben möchten. Die Wortvervollständigung überzeugt durch Minimierung des Tippens, Erzwingen einer kohärenten Benennung und dadurch, dass sie nicht im Weg steht.
Das Umbenennen von Variablen und Funktionen im gesamten Programm ist nützlich, aber Sie müssen in der Lage sein, Änderungen zu überprüfen und sicherzustellen, dass Ihr Code nicht beschädigt ist. Auch hier ist die Wortvervollständigung ein nützlicher Zwischenschritt, da sie für alle Sprachen funktioniert; Sie können lange Namen für Elemente mit langer Lebensdauer verwenden, ohne dass ein Tippaufwand entsteht. Sie können lokal über einen kürzeren Namen darauf verweisen, um Ausdrücke zu verkürzen, die sich sonst über zu viele Zeilen erstrecken würden. Wenn Sie umbenennen müssen, sind die langen Namen eindeutig, sodass dieser Ansatz in allen Sprachen und allen Dateien funktioniert.
Quelldateien können manchmal stark anwachsen. Code-Folding ist ein nettes Feature, das das Durchlesen langer Dateien vereinfacht.
Suchen/Ersetzen mit Scope-Beschränkung auf lokal, inkrementell oder global mit Metazeichen und regulären Ausdrücken gehören heute ebenso zur Mindestanforderung wie Syntax-Highlighting.
Überblick über beliebte Programmiereditoren
Im Laufe der Jahre bin ich durch eine Reihe von Editoren gegangen, und das ist, was ich von ihnen halte:

Emacs: Einer der beliebtesten Editoren der Welt. Das größte Merkmal von Emacs ist seine Erweiterbarkeit, trotz der Komplexität seiner Erweiterungssprache (mit
Mx tetris
kann man darin sogar Tetris spielen). Emacs-Fans halten seine terminalbasierte Schnittstelle für ein großartiges Feature, während andere vielleicht darüber diskutieren, dass es ein Nachteil ist. Nach meiner persönlichen Erfahrung fand ich es zu viel, um es anzunehmen und zu lernen. Ich bin mir sicher, dass Sie nie etwas anderes verwenden werden, wenn Sie wissen, wie man Emacs verwendet, aber die gesamte Kultur anzunehmen und zu lernen, war mehr, als ich tun wollte. Dennoch beweist seine Popularität unter Entwicklern, dass es weit davon entfernt ist, ein Relikt aus alten Zeiten zu sein, und auch Teil unserer Zukunft bleibt.Vi/Vim: Vim ist ein weiterer leistungsstarker terminalbasierter Editor und wird standardmäßig mit den meisten xNIX-Betriebssystemen geliefert. Abgesehen davon, dass ich eine andere Schnittstelle als Emacs habe, ist meine Ansicht praktisch dieselbe. Wenn Sie damit aufgewachsen sind, werden Sie sicher nie wieder etwas anderes verwenden. Wenn Sie Vi-Kenntnisse haben, wird Ihr Leben viel einfacher, wenn Sie über SSH und andere enge Stellen arbeiten, und Sie werden keine Probleme mit der Geschwindigkeit haben, sobald Sie sich mit Tastenanschlägen vertraut gemacht haben. Obwohl es nicht so schwer zu knacken ist wie Emacs, ist die Lernkurve immer noch ziemlich steil, und es könnte definitiv ein paar nette Funktionen eines Fenstereditors gebrauchen.
SublimeText: Getreu seinem Namen ist SublimeText ein wunderschöner Texteditor mit unzähligen Funktionen. Im Gegensatz zu einigen ähnlichen Editoren ist SublimeText Closed Source und kann daher nicht auf niedriger Ebene geändert werden. SublimeText bietet die Einfachheit traditioneller Texteditoren mit einer schlanken und schnellen Benutzeroberfläche. Viele Entwickler finden es einfacher zu bedienen als Vim, und das gilt besonders für Neueinsteiger. Die Lernkurve ist einfach nicht so steil. Während die Benutzeroberfläche minimal und unkompliziert ist, bietet SublimeText einige raffinierte Funktionen, wie z. B. einen verkleinerten Anzeigecode auf der rechten Seite der Benutzeroberfläche, mit dem Benutzer schnell durch ihren Code scrollen und relativ einfach navigieren können. Es ist zwar nicht ganz kostenlos, aber die funktionsbeschränkte Demoversion ist es. Das Freischalten aller Funktionen kostet 70 US-Dollar.
Atom ist das Ergebnis einer GitHub-Bemühung, einen Programmiereditor für eine neue Generation von Entwicklern zu entwickeln. Obwohl Atom noch in Arbeit ist, ist es ein sehr fähiger Editor mit einer lebhaften Community von Entwicklern, die sich für neue Erweiterungen, JavaScript-Bibliotheken und mehr interessieren. Zu den Nachteilen gehören einige Macken der Benutzeroberfläche, die Möglichkeit, dass sich einige Add-On-Pakete falsch verhalten, und gemeldete Leistungsprobleme bei der Arbeit mit (sehr) großen Dateien. Das Projekt befindet sich jedoch in aktiver Entwicklung, und derzeitige Mängel werden wahrscheinlich behoben. Atom ist ein Open-Source-Projekt und kann leicht an Ihre Bedürfnisse angepasst werden.
Nano: Ausgezeichnet in einer engen Ecke, aber nicht funktionsreich genug, um den unvermeidlichen Gedanken zu verhindern, dass es einen schnelleren Weg geben muss, dies zu tun, während man sich durch die Tastatureingaben kämpft, um einen Codeblock einzurücken, während man die Kommentare liniert hält oben in Spalte 80! Es hat nicht einmal eine Texthervorhebung und sollte nicht für mehr als Änderungen an Konfigurationsdateien verwendet werden.
TextMate2: Der größte Nachteil von TextMate ist, dass es nur auf Mac läuft. Wie seine Entwickler es ausdrückten: „TextMate bringt Apples Herangehensweise an Betriebssysteme in die Welt der Texteditoren.“ Durch die Verbindung von UNIX-Untermauerung und GUI bietet TextMate das Beste aus beiden Welten, zum Vorteil von erfahrenen Skripterstellern und unerfahrenen Benutzern gleichermaßen. Es ist der Editor der Wahl für viele Ruby-, Python- und JavaScript-Entwickler, mit großartiger Unterstützung für Bash oder Markdown. Zum Zeitpunkt der Veröffentlichung dieses Artikels befindet sich TextMate 2 noch in der Beta-Phase, verfügt jedoch bereits über ein sehr ausgereiftes Plugin-Ökosystem, das verspricht, es sogar über die Erweiterungen von Emacs hinaus zu erweitern.
jEdit: Java-basiert und von einigen als langsam angesehen. Die Out-of-the-Box-Konfiguration mag manche Leute abschrecken, aber jEdit kann extrem schnell sein, wenn es richtig konfiguriert ist, und auch extrem gut aussehen.
Eclipse: Eclipse, eine weitere weit verbreitete IDE, ist bei Java-Entwicklern sehr beliebt, wurde jedoch an viele verschiedene Plattformen angepasst. Wir könnten argumentieren, dass seine monolithische Architektur ein Stein ist, der es unter Wasser ziehen wird, aber es ist immer noch eine der beliebtesten Plattformen unter Entwicklern.
Aptana Studio: Eine umfassende Open-Source-Webanwendungs-IDE. Es ist als Eclipse-Plugin verfügbar, was es bei einigen Java-Entwicklern beliebt macht. Die Standalone-Version ist noch schlanker und bietet eine Reihe verschiedener Themen und Anpassungsoptionen. Die Projektmanagementfunktionen von Aptana können auch für Programmierer nützlich sein, die ihre Fähigkeiten in Eclipse verfeinert haben. Während frühere Versionen auf einigen Hardwareplattformen unter Leistungsproblemen litten, wurden diese Probleme in Aptana Studio 3 behoben und sollten der Vergangenheit angehören.
NetBeans: Eine weitere relativ beliebte Open-Source-IDE mit plattformübergreifender Unterstützung. Es ist beim Start etwas langsamer als schlanke Editoren wie SublimeText, und die Auswahl an Add-Ons ist im Vergleich zu einigen Alternativen begrenzt. Dank der nahtlosen SCM-Integration und der HTML5-Unterstützung haben viele Java-Entwickler NetBeans lieben gelernt. Die NetBeans-Unterstützung für PHP wurde in den neuesten Versionen ebenfalls verbessert.
JetBrains: Bietet eine Familie von IDEs für Java, Ruby, Python und PHP. Sie basieren alle auf der gleichen Kern-Engine. JetBrains IDEs sind an sich schon sehr leistungsfähig und gewinnen eine wachsende Anhängerschaft. Sie sind jedoch keine kostenlosen Open-Source-Lösungen, obwohl eine 30-Tage-Testversion verfügbar ist und die Preise angemessen sind.
Komodo Edit: Komodo Edit hat großes Potenzial, und doch ist es voller lästiger kleiner „Fallstricke“ und Eigenheiten, die durch ihre fehlende Orthogonalität frustrierend sein können. Komodo Edit fühlt sich überladen an, was schade ist, da es eindeutig über immense Fähigkeiten verfügt. Ich gehe immer wieder zu Komodo Edit zurück in der Hoffnung, dass ich ein Organisationsprinzip übersehen habe, und jedes Mal werde ich von einem Wirrwarr unorganisierter Fähigkeiten zurückgeschlagen.
Geany: Geany ist kein großer Powerplayer wie viele der anderen Redakteure in dieser Liste. Es wird mehr durch „was es nicht ist“ als durch „was es ist“ definiert. Es ist nicht langsam, es hat nicht viel Erbe aus alten Tagen, es hat keine Makrofähigkeit oder viel von einer Multi-Fenster-Pufferfähigkeit. Doch die Dinge, die es tut, tut es gut genug. Es ist vielleicht der am wenigsten anspruchsvolle von allen Editoren, die ich ausprobiert habe, und kann immer noch 90 Prozent dessen, was Sie von einem Editor für Programmierer erwarten würden. Geany sieht auf Ubuntu gut genug aus, was einer der Gründe ist, warum ich es als meinen bevorzugten Editor ausgewählt habe.
Meine Schlussfolgerung
Es wäre vermessen, unter diesen großartigen Tools nur einen zum besten Programmiereditor zu erklären. Und es gibt ziemlich viele Editoren, die ich nicht einmal ausprobiert habe. Es gibt keine One-size-fits-all-Lösung. Das hat mich dazu veranlasst, eine Reihe verschiedener Editoren auszuprobieren; Wenn Sie mehr an der Langlebigkeit von Editoren interessiert sind, sollten Sie auch Roben Kleenes Bewertung von Code-Editoren lesen.
Ich verwende derzeit Geany, aber das liegt daran, dass es meinen Anforderungen entspricht. Mit Geany und viel Hilfe von Perl/Gimp/Audacity/Sox bin ich in der Lage, die Java-Codebasis für die von mir entwickelten Android-Apps zu entwickeln und zu pflegen, sie für die Kompilierung in verschiedenen Konfigurationen für mehrere Distributoren vorzubereiten, Quelle, Lint , kompilieren, dexieren und produzieren .apk
Dateien und stellen Sie diese Apps weltweit bereit.
Ihre Entwicklungslinie schreibt möglicherweise andere Anforderungen vor, und ich hoffe, ich habe Ihnen einige Zeit bei der Suche nach den am besten geeigneten Programmiereditoren gespart.