Warum sollte ich eine IDE verwenden? [geschlossen]

391

In einer anderen Frage spricht Mark hoch über IDEs und sagt, "einige Leute wissen immer noch nicht", warum "sie eine verwenden sollten ...". Was sind die Vorteile von IDEs für jemanden, der vim zum Programmieren verwendet und in einer Umgebung arbeitet, in der die meisten meiner Kollegen entweder vim oder emacs für ihre gesamte Arbeit verwenden? Warum sollte ich einen verwenden?

Ich bin mir sicher, dass dies für einige Leute ein kostenpflichtiges Problem ist, und ich bin nicht daran interessiert, einen Flammenkrieg zu beginnen. Bitte antworten Sie nur mit den Gründen, aus denen Sie glauben, dass ein IDE-basierter Ansatz überlegen ist . Ich bin nicht daran interessiert zu erfahren, warum ich keine IDE verwenden sollte. Ich benutze schon keinen. Ich bin daran interessiert, sozusagen von "der anderen Seite des Zauns" zu hören.

Wenn Sie der Meinung sind, dass IDEs für einige Arten von Arbeiten geeignet sind, andere jedoch nicht, bin ich auch interessiert zu erfahren, warum.

Simon Howard
quelle
1
Vielen Dank, dass Sie mich über meinen Blog kontaktiert haben. Auf dieser Website sollte es wirklich ein privates Nachrichtensystem geben!
Mark
11
Emacs ist ein schlechtes Beispiel. Es ist schwer, eine IDE-Funktion zu finden, die Emacs fehlt. Der Unterschied besteht darin, was sofort verfügbar ist und was angepasst werden muss.
JFS
8
IDEs sind nutzlos, echte Programmierer verwenden vim
30
Haben Sie aufgrund der Kommentare angefangen, eine IDE zu verwenden?
Nachbeben
1
Manchmal haben Sie einfach keine andere Wahl, als eine IDE zu verwenden :(
Lorem Ipsum Dolor

Antworten:

537

Es hängt wirklich davon ab, welche Sprache Sie verwenden, aber in C # und Java finde ich IDEs vorteilhaft für:

  • Schnelles Navigieren zu einem Typ, ohne sich um Namespace, Projekt usw. Sorgen zu müssen
  • Navigieren Sie zu Mitgliedern, indem Sie sie als Hyperlinks behandeln
  • Autovervollständigung, wenn Sie sich nicht auswendig an die Namen aller Mitglieder erinnern können
  • Automatische Codegenerierung
  • Refactoring (massiv)
  • Importe organisieren (automatisch entsprechende Importe in Java hinzufügen, mithilfe von Anweisungen in C #)
  • Warnung während der Eingabe (dh einige Fehler erfordern nicht einmal einen Kompilierungszyklus)
  • Bewegen Sie den Mauszeiger über etwas, um die Dokumente zu sehen
  • Behalten Sie die Dateien, Fehler / Warnungen / Konsolen- / Komponententests usw. und den Quellcode gleichzeitig auf nützliche Weise auf dem Bildschirm
  • Einfache Ausführung von Komponententests im selben Fenster
  • Integriertes Debugging
  • Integrierte Quellcodeverwaltung
  • Navigieren Sie direkt aus den Fehlerdetails zu dem Ort, an dem ein Kompilierungsfehler oder eine Laufzeitausnahme aufgetreten ist.
  • Usw!

All dies spart Zeit. Das sind Dinge, die ich manuell tun könnte, aber mit mehr Schmerzen: Ich würde lieber codieren.

Jon Skeet
quelle
90
Ich denke, Emacs ist also eine IDE;)
Svante
97
Wenn es sich so verhält, würde ich sagen, dass Vim dann als IDE zählt.
Jon Skeet
58
Nach meiner Erfahrung ist das größte, was Vim und Emacs in "echten" IDEs fehlen (ja, ich weiß, dass sie eine großartige Entwicklungsumgebung sein können), der Teil "Warnung während der Eingabe". Das würde im Grunde bedeuten, einen fortgeschrittenen Compiler in den Editor einzubetten, und ich glaube nicht, dass sie diesen Integrationsgrad erreichen.
Joachim Sauer
16
saua: hast du dir Flymake angesehen, flymake.sourceforge.net ? Es bietet Emacs zumindest einige Warnungen während der
polyglot
62
Ich gehe davon aus, dass John Skeet dies benötigt, um die IDE zu warnen, die versucht, den folgenden Code zu korrigieren. Dies wäre ein vergeblicher Versuch.
cmcginty
100

Code-Vervollständigung. Es hilft sehr beim Erkunden von Code.

Darren
quelle
107
Ich würde sagen, Code-Vervollständigung anstelle von Intellisense
Hannoun Yassir
2
Andererseits kann ich Strg + P drücken und bekomme eine Dropdown-Liste mit einer ganzen Reihe von Befehlen, die vimich verwenden kann.
new123456
17
Mehr als nur Code erkunden. Wenn ich a tippe. und nichts erscheint, es bedeutet, dass etwas mit meinem Code nicht stimmt; Normalerweise muss ich nicht einmal kompilieren, um es zu finden. Wenn ich a tippe. und verstehe nicht, was ich erwarte, es bedeutet, dass ich den falschen Typ verwende oder vergessen habe, etwas internes oder öffentliches oder ein anderes solches Problem zu machen; Ich muss nicht rennen, um das Problem zu entdecken. Intellisense ist besonders nützlich, um Fehler zum frühestmöglichen Zeitpunkt zu erkennen.
Ryan Lundy
1
Wie ist das eine Antwort? Wenn Sie es laut vorlesen, klingt es wie ein schlechter Microsoft-Slogan ...
Kolob Canyon
Ok ... YouCompleteMe, Deoplete ... wenn Sie diese Art der Code-Vervollständigung wünschen . Ich weiß nichts darüber für Emacs. Außerdem hat Vim eine außergewöhnliche automatische Vervollständigung, die mir bei der Verwendung anderer Editoren fehlt.
JakeD
85

Die kurze Antwort, warum ich eine IDE verwende, ist Faulheit.

Ich bin eine faule Seele, die es nicht mag, Dinge auf schwierige Weise zu tun, wenn es stattdessen eine einfache Möglichkeit gibt, dies zu tun. IDEs machen das Leben einfach und sprechen uns faule Leute an.

Während ich Code eingebe, überprüft die IDE automatisch die Gültigkeit des Codes. Ich kann eine Methode markieren und F1 drücken, um Hilfe zu erhalten. Klicken Sie mit der rechten Maustaste und wählen Sie "Zur Definition gehen", um direkt zu der Definition zu springen. Ich drücke eine Taste und die Anwendung mit dem automatisch angehängten Debugger wird für mich gestartet. Und so geht die Liste weiter. Alle Dinge, die ein Entwickler täglich tut, sind unter einem Dach zusammengefasst.

Es ist nicht erforderlich, eine IDE zu verwenden. Es ist einfach viel schwieriger, nicht zu arbeiten.

David Arno
quelle
Wenn Sie Visual Studio .NET verwenden, ist F12 "Zur Definition wechseln" zugeordnet. (Ich habe das gerade entdeckt) Sie müssen also nicht mit der rechten Maustaste klicken, um dorthin zu gelangen. 8)
Knobloch
@ Knobloch, ich neige dazu, sowohl VS2008 als auch Eclipse zu verwenden. Privat habe ich FlashDevelop viel benutzt. Die Verknüpfung "Zur Definition gehen" ist für alle drei unterschiedlich, daher verlasse ich mich eher auf Rechtsklicks :)
David Arno
Sie können sich mit dem Klicken mit der rechten Maustaste auf die Menüleiste und der Auswahl von Tastenkombinationen zum Anpassen / Tastaturen vertraut machen.
Dkretz
19
Es ist nicht nur eine Frage der Faulheit :) - Eine IDE spart wertvolle Zeit und steigert somit die Produktivität.
Alex Schimp
Darüber hinaus ist eine IDE einsatzbereit. Sie müssen nicht viele schwierige Dinge einrichten, um sie produktiv zu machen.
Akira Yamamoto
56

Ich denke nicht, dass es fair ist, den klassischen "Texteditor und Konsolenfenster gegen IDE" zu machen, wenn "Texteditor" wirklich Emacs ist. Die meisten für IDE: s typischen Funktionen sind auch in Emacs enthalten. Oder vielleicht haben sie sogar ihren Ursprung dort, und moderne IDEs sind hauptsächlich Verbesserungen / Vereinfachungen der Benutzeroberfläche.

Dies bedeutet, dass für die ursprüngliche Frage die Antwort nicht so eindeutig ist. Dies hängt davon ab, wie Benutzer auf der betreffenden Site Emacs verwenden, ob sie es hauptsächlich als Texteditor verwenden oder ob sie alles daran setzen, benutzerdefiniertes Scripting zu verwenden, die Befehle für die relevanten Modi zu lernen, sich mit Code-Tagging vertraut zu machen und so weiter.

entspannen
quelle
9
Ja, das ist keine sichere Verallgemeinerung. Ich verwende Emacs für alle in diesen Antworten genannten IDE-Funktionen.
jfm3
21
Ich denke, eine Zeit, die zum Konfigurieren von IDE-ähnlichen Funktionen in einem leistungsstarken Texteditor benötigt wird, könnte besser für die Codierung in einer IDE mit sofort einsatzbereiten Funktionen verwendet werden.
JFS
6
Ich benutze vim wie eine IDE.
12
@JF Sebastian: Das Problem dabei ist, dass Sie, um die Produktion zu verbessern, die Vor- und Nachteile dieser IDE kennenlernen müssen. Wenn Sie die Sprache wechseln und viele verschiedene Tools verwenden, kann dies zu einem Problem werden. Ich habe gerade vim gelernt und obwohl es anfangs schwer zu gewöhnen ist, zahlt es sich schnell aus, wenn ich es in verschiedenen Systemen und für viele verschiedene Sprachen finde.
Isaac Nequittepas
7
@JFSebastian: Ich denke, es ist produktiver, Emacs für IDE-Aufgaben zu konfigurieren, als eine IDE für Emacs-Aufgaben wie Navigation, Tramp, Shell-Modus, Dired ... usw. Zu konfigurieren.
Tikhon Jelvis
51

Ich komme bei dieser Frage aus der entgegengesetzten Richtung. Ich bin mit sehr wenigen Boxenstopps in Makefile + Emacs Land in der Programmierung aufgewachsen. Von meinem frühesten Compiler unter DOS, Microsoft Quick C, hatte ich eine IDE, um Dinge zu automatisieren. Ich habe viele Jahre in Visual C ++ 6.0 gearbeitet und nach meinem Abschluss in Enterprise Java mit Borland JBuilder zusammengearbeitet und mich dann für Eclipse entschieden, das für mich sehr produktiv geworden ist.

Während meiner anfänglichen Autodidakt-, College- und jetzt beruflichen Karriere habe ich gelernt, dass jede größere Softwareentwicklung, die ausschließlich innerhalb der IDE durchgeführt wird, kontraproduktiv wird. Ich sage das, weil die meisten IDEs möchten, dass Sie in ihren arbeiteneigenartiger I-Control-How-the-World-Works-Stil. Sie müssen Ihre Projekte nach ihren Vorstellungen schneiden und würfeln. Sie haben Ihre Projekterstellungen mithilfe ihrer ungeraden Dialogfelder verwaltet. Die meisten IDEs verwalten komplexe Build-Abhängigkeiten zwischen Projekten schlecht, und es kann schwierig sein, Abhängigkeiten zu 100% zum Laufen zu bringen. Ich war in Situationen, in denen IDEs keinen funktionierenden Build meines Codes erzeugen würden, wenn ich nicht alle bereinigen / neu erstellen würde. Schließlich gibt es selten eine saubere Möglichkeit, Ihre Software von einer IDE aus der Entwicklung in andere Umgebungen wie Qualitätssicherung oder Produktion zu verlagern. Normalerweise ist es ein Kinderspiel, alle Ihre Bereitstellungseinheiten zu erstellen, oder Sie haben ein umständliches Tool, das Ihnen der IDE-Anbieter zum Bündeln von Dingen zur Verfügung stellt. Aber wieder,

Ich habe gelernt, dass wir für eine groß angelegte Entwicklung mit einem Team am produktivsten sein können, wenn wir unseren Code mithilfe einer IDE entwickeln und alle Builds mit manuell geschriebenen Befehlszeilenskripten ausführen. (Wir mögen Apache Ant für die Java-Entwicklung.) Wir haben festgestellt, dass das Ausführen unserer Skripte aus der IDE nur ein Klickfest oder ein Automatisierungs-Albtraum für komplexe Builds ist. Es ist viel einfacher (und weniger störend), Alt + Tab auf a zu setzen Shell und führen Sie die Skripte dort aus.

Bei manuellen Builds müssen wir einige der Feinheiten der modernen IDE wie die Hintergrundkompilierung verpassen, aber was wir gewinnen, ist viel kritischer: saubere und einfache Builds, die in mehreren Umgebungen leben können. Der "One-Click-Build", über den all diese agilen Typen sprechen? Wir haben es. Unsere Build-Skripte können auch von kontinuierlichen Integrationssystemen direkt aufgerufen werden. Durch die Verwaltung von Builds durch kontinuierliche Integration können wir Ihre Codebereitstellungen formeller inszenieren und in verschiedene Umgebungen migrieren und fast sofort wissen, wenn jemand fehlerhaften Code eincheckt, der den Build oder die Komponententests unterbricht.

In Wahrheit hat es mich nicht allzu sehr verletzt, die Rolle des Aufbaus von der IDE zu übernehmen. Die Intellisense- und Refactoring-Tools in Eclipse sind immer noch vollständig nützlich und gültig - die Hintergrundkompilierung dient lediglich zur Unterstützung dieser Tools. Und Eclipse's eigentümliches Aufteilen von Projekten hat als eine sehr gute Möglichkeit gedient, unsere Problemstellungen auf eine Weise mental aufzuschlüsseln, die jeder verstehen kann (immer noch ein bisschen ausführlich für meinen Geschmack). Ich denke, eines der wichtigsten Dinge bei Eclipse sind die hervorragenden SCM-Integrationen. Das macht die Teamentwicklung so angenehm. Wir verwenden Subversion + Eclipse, und das war sehr produktiv und sehr einfach, unsere Mitarbeiter zu Experten auszubilden.

Davew
quelle
2
+1, die Komplexität des Bauens (zumindest normalerweise) ist einer der Hauptgründe, warum ich IDEs eher verabscheue
Scott Schulthess,
24

Als Autor der Antwort, die Sie in Ihrer Frage hervorheben, und zugegebenermaßen etwas spät zu dieser Frage, muss ich sagen, dass unter den vielen aufgeführten Gründen die Produktivität eines professionellen Entwicklers einer der größten ist hoch angesehene Fähigkeiten.

Mit Produktivität meine ich die Fähigkeit, Ihre Arbeit effizient und mit den bestmöglichen Ergebnissen zu erledigen. IDEs ermöglichen dies auf vielen Ebenen. Ich bin kein Emacs-Experte, aber ich bezweifle, dass ihm eines der Merkmale der wichtigsten IDEs fehlt.

Das Entwerfen, Dokumentieren, Verfolgen, Entwickeln, Erstellen, Analysieren, Bereitstellen und Warten, wichtige Sprungbretter in einer Unternehmensanwendung, kann innerhalb einer IDE erfolgen.

Warum würden Sie nicht etwas so Mächtiges verwenden, wenn Sie die Wahl hätten?

Verpflichten Sie sich als Experiment, eine IDE beispielsweise 30 Tage lang zu verwenden, und sehen Sie, wie Sie sich fühlen. Ich würde gerne Ihre Gedanken über die Erfahrung lesen.

Mark
quelle
10
Es gibt Funktionen, die Emacs hat, die Eclipse zumindest entweder fehlt oder sich sehr gut versteckt. Zum Beispiel die Möglichkeit, einen Zeilenblock auszuwählen und an Ort und Stelle zu sortieren. Der Füllabsatz von Emacs ist auch beim Bearbeiten von Kommentaren schwer zu übertreffen. Eclipse hat eine ähnliche Funktion, ist aber im Vergleich extrem schwach.
Porculus
17
Ich denke, ein großer Grund, warum Menschen sich nicht für IDEs entscheiden, ist ihre Blähungen. Wenn Sie nur ein Sandwich machen wollen, brauchen Sie nicht den gesamten Supermarkt.
9
Nach meiner Erfahrung können Sie mit IDEs nicht so gründlich und konsistent mit allem über die Tastatur interagieren. Außerdem verfügt Emacs über eine Reihe großartiger Funktionen, die IDEs nicht bieten. Diese reichen von kleinen, aber nützlichen Funktionen (rechteckige Bereiche, Hippie-Erweiterung, umfangreiche Tastaturnavigation) bis hin zu eher umfangreichen Funktionen (Tramp, dired, transparente Anpassung mit Elisp). Tastaturmakros). Ich bin sicher, dass einige der IDEs einige dieser Funktionen haben, aber ich habe sie nicht gesehen.
Tikhon Jelvis
20

Eine IDE hat folgende Vorteile:

  • Das Kompilieren erfolgt normalerweise "on the fly", was bedeutet, dass Sie nicht mehr zur Kompilierung in die Befehlszeile wechseln müssen
  • Das Debuggen ist integriert. Wenn dies in einer IDE enthalten ist, verwendet der Step-Debugger tatsächlich Ihren In-Place-Editor, um Ihnen visuell anzuzeigen, welcher Code ausgeführt wird
  • IDEs verfügen normalerweise über mehr semantische Kenntnisse der Sprache, in der Sie arbeiten, und können Ihnen mögliche Probleme beim Tippen aufzeigen. Refactoring ist viel leistungsfähiger als das "Suchen ersetzen".

Es gibt noch viel mehr, vielleicht sollten Sie es versuchen.

Rolf
quelle
Ich kann nicht für jeden minimalen Editor sprechen, aber Vim verfügt über Makros, mit denen Sie Skripte erstellen können, die viele Dinge wie Kompilieren und Ausführen ausführen.
@Corey der Punkt ist, dass Sie sie skripten müssen. Es sollte bereits verfügbar sein.
Crush
20

IDEs sind im Grunde:

  • Editor mit Code-Vervollständigung, Refactoring und Dokumentation
  • Debugger
  • Dateisystem-Explorer
  • SCMS-Client
  • Werkzeug erstellen

alles in einem einzigen Paket.

All dies (und noch einige mehr) können Sie mit separaten Tools oder einfach mit einem großartigen programmierbaren Editor und zusätzlichen Tools wie Emacs (Vim ebenfalls, aber mit etwas weniger IDEbility IMO) haben.

Wenn Sie häufig zwischen einem Dienstprogramm und dem nächsten wechseln, das in die Umgebung integriert werden könnte, oder wenn Sie einige der hier aufgeführten Fähigkeiten (und vollständiger in anderen Beiträgen) vermissen, ist es möglicherweise an der Zeit, zu einer IDE (oder) zu wechseln um die IDEbility Ihrer Umgebung durch Hinzufügen von Makros oder was nicht zu verbessern). Wenn Sie sich mit mehr als einem Programm eine 'IDE' (in dem oben erwähnten Sinne) erstellt haben, müssen Sie nicht zu einer tatsächlichen IDE wechseln.

Vinko Vrsalovic
quelle
12

Finsternis:

Code-Higlighting, Kompilieren im Hintergrund, Aufzeigen meiner Fehler im weiteren Verlauf.

Integration mit Javadoc, wobei Variablennamen mit Strg-Leertaste vorgeschlagen werden.

Wenn ich kompiliere, bekomme ich genau dort Fehler. Ich kann auf einen Fehler doppelklicken und er zeigt die entsprechende Zeile an.

Ctrl-F11 ist wirklich gut in JUnit integriert und führt den Test aus. Es zeigt mir, dass die Tests fehlgeschlagen sind. Wenn es im Ausgabefenster eine Ausnahme gibt, kann ich auf eine Zeile doppelklicken und mich zu der fehlgeschlagenen Zeile führen. Darüber hinaus stellt Strg-F11 sicher, dass alles kompiliert wird, bevor die Tests ausgeführt werden (was bedeutet, dass ich das nie vergesse).

Integration mit ant. Ein Befehl zum Erstellen und Bereitstellen der Anwendung.

Integration mit Debuggern, einschließlich Remote-Debugging von Webservern.

FANTASTISCHE Refactoring-Tools, die nach Verweisen auf einen Codeabschnitt suchen. Hilft mir, die Auswirkungen einer Änderung zu erkennen.

Alles in allem macht es mich produktiver.

Matthew Farwell
quelle
Die Sache ist, dass Emacs so ziemlich alles macht, für mehr Sprachen als Eclipse.
Tikhon Jelvis
11

Ich habe Emacs ungefähr 10 Jahre lang (1994-2004) als meine primäre Umgebung für Entwicklung und Mail / News verwendet. Ich entdeckte die Leistungsfähigkeit von IDEs, als ich mich 2004 zwang, Java zu lernen, und zu meiner Überraschung, dass mir die IDE ( IntelliJ IDEA ) wirklich gefallen hat .

Ich werde nicht auf bestimmte Gründe eingehen, da viele von ihnen hier bereits erwähnt wurden - denken Sie daran, dass die verschiedenen Menschen unterschiedliche Funktionen lieben. Ich und ein Kollege verwendeten dieselbe IDE, wir beide verwendeten nur einen Bruchteil der verfügbaren Funktionen, und wir mochten die Art und Weise, wie die IDE verwendet wurde, nicht (aber wir mochten beide die IDE selbst).

IDEs bieten jedoch einen Vorteil gegenüber Emacs / Vim-bezogenen Umgebungen, auf die ich mich konzentrieren möchte: Sie verbringen weniger Zeit mit der Installation / Konfiguration der gewünschten Funktionen.

Mit Wing IDE (für Python) kann ich 15 bis 20 Minuten nach der Installation mit der Entwicklung beginnen. Keine Ahnung, wie viele Stunden ich benötigen würde, um die Funktionen, die ich mit Emacs / Vim verwende, zum Laufen zu bringen. :) :)

Eigir
quelle
2
Der Start dauert länger, aber danach ist es besser, ihn zuzuschneiden.
Sjas
3
Zum Konfigurieren von Emacs / Vim müssen lediglich die entsprechenden Dateien an einen Ort kopiert werden, an dem das Programm sie finden kann. Es ist wirklich nicht so schwierig, wenn Sie Ihre Konfigurationsdateien in einem Verzeichnis übersichtlich aufbewahren. Anschließend können Sie sie auf einem Flash-Laufwerk, im Internet oder in einem Repository aufbewahren, damit Sie sie jederzeit clonebei der Einrichtung Ihrer Arbeit verwenden können Umgebung. :)
Gordon Gustafson
10

Dies führt definitiv zu einer Verbesserung der Produktivität für mich. Bis zu dem Punkt, an dem ich sogar Linux-Anwendungen in Visual Studio unter Vista codiere und sie dann mit einer virtuellen Linux-Maschine erstelle.

Sie müssen sich nicht alle Argumente für einen Funktions- oder Methodenaufruf merken. Sobald Sie mit der Eingabe beginnen, zeigt Ihnen die IDE, welche Argumente benötigt werden. Sie erhalten Assistenten zum Festlegen von Projekteigenschaften, Compileroptionen usw. Sie können im gesamten Projekt nach Dingen suchen, anstatt nur nach dem aktuellen Dokument oder den aktuellen Dateien in einem Ordner. Wenn Sie einen Compilerfehler erhalten, doppelklicken Sie darauf und Sie gelangen direkt zur fehlerhaften Zeile.

Integration von Tools wie Modelleditoren, Herstellen einer Verbindung zu und Durchsuchen externer Datenbanken, Verwalten von Sammlungen von Code- "Snippets", GUI-Modellierungswerkzeugen usw. All diese Dinge können separat ausgeführt werden, aber alle in derselben Entwicklungsumgebung zu haben, spart viel Zeit und hält den Entwicklungsprozess effizienter.

Gerald
quelle
8

Es kann verschiedene Gründe für verschiedene Menschen geben. Für mich sind das die Vorteile.

  1. Verleiht dem Projekt ein integriertes Gefühl. Zum Beispiel werde ich alle zugehörigen Projektdateien in einer einzigen Ansicht haben.
  2. Bietet erhöhte Codeproduktivität wie
    1. Satzstellung markieren
    2. Überweisung von Baugruppen
    3. Intellisense
    4. Zentralisierte Ansicht der Datenbank und der zugehörigen UI-Dateien.
    5. Debugging-Funktionen

Am Ende des Tages hilft es mir, schneller zu codieren, als ich es mit einem Notizblock oder einem Wordpad tun kann. Das ist ein ziemlich guter Grund für mich, eine IDE zu bevorzugen.

vikramjb
quelle
8

Eine IDE kann eine überlegene Wahl sein, je nachdem, was ein Entwickler erreichen möchte.

Ein Texteditor kann "überlegen" sein, da IDEs normalerweise auf eine (oder eine kleine Auswahl) von Sprachen ausgerichtet sind.

Wenn ein Entwickler die meiste Zeit in einer einzigen Sprache oder einem "Cluster" verwandter Sprachen (wie C # und T-SQL) in einem Betriebssystem verbringt, werden die von ihm angebotenen Tools für GUI-Design, Debug, Intellisense, Refactoring usw. angeboten Eine gute IDE kann sehr überzeugend sein. Wenn Sie zum Beispiel die meiste Zeit in VB.NET arbeiten, vielleicht ab und zu ein wenig T-SQL, in einer Windows-Umgebung, wäre es ziemlich dumm, sich Visual Studio oder eine vergleichbare IDE nicht anzusehen .

Ich habe keine Vorurteile gegenüber denen, die IDEs oder Texteditoren bevorzugen. Beide können sehr produktiv und nützlich sein wenn sie gut gelernt werden !

TMealy
quelle
7

Ich denke, das hat hauptsächlich mit dem Bekanntheitsgrad des Entwicklers zu tun. Die IDE bietet eine makroskopische Ansicht des Arbeitskontexts des Entwicklers. Sie können gleichzeitig Klassenhierarchien, referenzierte Ressourcen, Datenbankschemata, SDK-Hilfereferenzen usw. anzeigen. Bei so vielen Dingen, die von Ihren Tastenanschlägen und dem wachsenden Volumen an Architekturen und architektonischen Schnittpunkten betroffen sind, wird dies immer schwieriger Arbeiten Sie jeweils nur von einer Code-Insel aus.

OTOH, "nur ich und vim und die Manpages" gibt mir einen viel schlankeren mikroskopischen - aber intensiven und präzisen - Blick auf meine Arbeit. Dies ist in Ordnung, wenn ich eine gut gestaltete, gut partitionierte, spärlich gekoppelte, hoch zusammenhängende Codebasis habe, die in einer Sprache mit einem Satz statischer Bibliotheken erstellt wurde - nicht Ihre typische Situation, insbesondere wenn die Größe des Entwicklerteams wächst und die Codestruktur umformt im Laufe der Zeit, Entfernung und persönliche Präferenz.

Ich arbeite derzeit an Projekten in Flex und .NET. Eines der schönsten Dinge an Flex ist, wie wenig verschiedene Möglichkeiten es gibt, um eine Standardaufgabe zu erreichen - Daten aus einer Datenbank abrufen, eine Datei öffnen / schließen / lesen / schreiben usw. (Ich verwende jedoch die Flex Builder / Eclipse-IDE - Ein typisches Beispiel für schweres Gewicht wie VS, weil ich noch die Grundlagen lerne und die Stützräder brauche. Ich gehe davon aus, dass ich mich wieder zu Vim entwickeln werde, sobald ich von meinen Mustern überzeugt bin.) In dieser Ansicht kann ich was tun Ich muss professionell arbeiten, indem ich ein paar Dinge wirklich sehr gut kenne.

OTOH, ich kann mir nicht vorstellen, mit .NET an diesen Punkt zu gelangen, da die Ansicht, die ich beibehalten soll, ständig erweitert und verschoben wird. Es gibt viel weniger konzeptionelle Integrität und über mehrere Entwickler hinweg ein Projekt über mehrere Monate hinweg, viel weniger Konsistenz - aber die IDE unterstützt dies und fördert es möglicherweise. Der Entwickler muss also wirklich (und kann es leichter) viel mehr Dinge angemessen wissen. Dies hat auch den Vorteil, dass sie einen viel höheren Prozentsatz der Fragen zu StackOverflow beantworten (oder sogar verstehen) können. Das heißt, wir können einen tieferen Wissensstapel haben. Und wir können auf eine größere Auswahl an Hilfesuchanzeigen reagieren.

Die Dinge können in beide Richtungen zu weit gehen. Vielleicht ist es mit dem "Nur-Editor" -Bereich wie "Wenn Sie nur einen Hammer haben, sieht alles aus wie ein Nagel". Mit dem IDE-Ansatz haben Sie für alles, was Sie aneinander befestigen möchten, eine breite Auswahl an Befestigungselementen und zugehörigen Werkzeugen zur Auswahl - Klemmen / Hämmer, Schrauben / Schraubendreher, Bolzen / Schraubenschlüssel, Klebstoffe / Klebepistolen / Klemmen, Magnete und weiter und weiter - alles an Ihren Fingerspitzen (mit einem Assistenten, der Ihnen den Einstieg erleichtert).

le dorfier
quelle
5

Betrachten Sie es nicht als exklusiv. Verwenden Sie die IDE für die Vorteile, die sie bietet, und wechseln Sie zu vim / bevorzugter Texteditor, wenn Sie ernsthafte Aufmerksamkeit benötigen.

Ich finde die IDE besser zum Umgestalten, Durchsuchen und Debuggen und um herauszufinden, was zu tun ist. Kleine Dinge werden dann direkt in der IDE erledigt, große Dinge drehe ich zu vim, um den Job zu beenden.

Daniel Bungert
quelle
5

Zusätzlich zu den anderen Antworten liebe ich es, die Entwicklungskraft einer IDE mit der Bearbeitungskraft von Vim zu kombinieren, indem ich so etwas wie das ViPlugin für Eclipse verwende .

nayfnu
quelle
5

IntelliSense , der integrierte Debugger und das unmittelbare Fenster machen mich enorm produktiver ( Visual Studio 2008 ). Mit allem, was mir zur Verfügung steht, kann ich den größten Teil eines riesigen Projekts beim Schreiben von Code in meinem Kopf behalten. Microsoft lässt zwar immer wieder den Ball auf seinen Betriebssystemen fallen, aber Visual Studio ist eines der besten Produkte, die jemals entwickelt wurden.

Peter Mortensen
quelle
4

Ich verstehe nicht was du fragst. Sie fragen "Soll ich eine IDE anstelle von ... verwenden?", Aber ich verstehe nicht, was die Alternative ist - Vim und Emacs erfüllen viele Funktionen, die Ihnen jede IDE bietet . Der einzige Aspekt, den sie nicht behandeln, dass eine größere IDE möglicherweise UI-Designer sind. Dann läuft Ihre Frage darauf hinaus, einfach "welche IDE soll ich verwenden" mit Argumenten für das einfachere Reich von Vim und Emacs.

Peter Mortensen
quelle
3

Für mich ist eine IDE besser, weil sie eine schnellere Navigation im Code ermöglicht, was wichtig ist, wenn Sie etwas im Kopf haben, das implementiert werden soll. Angenommen, Sie verwenden keine IDE, dauert es länger, bis Sie das Ziel erreichen. Ihre Gedanken können öfter unterbrochen werden. Dies bedeutet, dass mehr Klicks / mehr Tasten gedrückt werden müssen. Man muss sich mehr auf den Gedanken konzentrieren, wie man Dinge umsetzt. Natürlich können Sie auch Dinge aufschreiben, aber dann muss man zwischen Design und Implementierung springen. Auch ein GUI-Designer macht einen großen Unterschied. Wenn Sie dies von Hand tun, kann es länger dauern.

Nachbeben
quelle
3

GUI-basierte IDEs wie Visual Studio und Eclipse bieten aufgrund ihrer Anzeigefunktionen mehrere Vorteile gegenüber textbasierten IDEs wie Emacs oder vim:

  • WYSIWYG-Vorschau und Live-Bearbeitung für das GUI-Design
  • Effiziente Eigenschafteneditoren (z. B. Farbauswahl mithilfe einer GUI-Palette, einschließlich Positionierungsgradientenstopps usw.)
  • Grafische Darstellung von Codeumrissen, Dateizusammenhängen usw.
  • Effizientere Nutzung von Bildschirmflächen zur Anzeige von Haltepunkten, Lesezeichen, Fehlern usw.
  • Bessere Drag & Drop-Unterstützung für Betriebssysteme und andere Anwendungen
  • Integrierte Bearbeitung von Zeichnungen, Bildern, 3D-Modellen usw.
  • Anzeigen und Bearbeiten von Datenbankmodellen

Grundsätzlich können Sie mit einer GUI-basierten IDE sofort weitere nützliche Informationen auf dem Bildschirm abrufen und grafische Teile Ihrer Anwendung genauso einfach anzeigen / bearbeiten wie Textteile.

Eines der coolsten Dinge, die Sie als Entwickler erleben können, ist das Bearbeiten einer Methode, mit der einige Daten berechnet werden, und das Anzeigen der Live-Ausgabe Ihres Codes in einem anderen Fenster, so wie es Ihr Benutzer beim Ausführen der App sieht. Das ist WYSIWYG-Bearbeitung!

Textbasierte IDEs wie Emacs und vim können Funktionen wie Code-Vervollständigung und Refactoring im Laufe der Zeit hinzufügen. Auf lange Sicht besteht ihre Hauptbeschränkung also in ihrem textbasierten Anzeigemodell.

Ray Burns
quelle
3

Ich benutze auch fast ausschließlich Vim (fast weil ich jetzt versuche, Emacs zu lernen) für all meine Entwicklungssachen. Ich denke, reine Intuitivität (natürlich über die GUI) ist der Hauptgrund, warum Menschen IDEs gerne verwenden. Durch die intuitive Bedienung ist wenig bis gar kein Lernaufwand für das Tool erforderlich. Je geringer der Lernaufwand ist, desto mehr können sie arbeiten.

Avendael
quelle
3

Mit einer IDE kann man schneller und einfacher arbeiten ... Ich habe festgestellt, dass ich viel Zeit damit verbracht habe, in einem einfachen Texteditor im Code zu navigieren ...

In einer guten IDE verkürzt sich diese Zeit, wenn die IDE das Springen zu Funktionen, zur vorherigen Bearbeitungsposition, zu Variablen unterstützt. Außerdem reduziert eine gute IDE die Zeit zum Experimentieren mit verschiedenen Sprachfunktionen und -projekten als Startzeit kann klein sein.

Nachbeben
quelle
3

Einige Gründe für die Verwendung einer IDE:

  • Integrierte Hilfe ist ein Favorit.
  • Der integrierte Refactor mit Vorschau des Visual Studio
  • IntelliSense , Syntax-Hightlighting, einfache Navigation für große Projekte, integriertes Debugging usw. (obwohl ich weiß, dass Sie mit Addins wahrscheinlich viel davon mit Emacs und erhalten können Vim bekommen können ).
  • Ich denke auch, dass IDEs heutzutage eine breitere Benutzerbasis haben und wahrscheinlich mehr Leute Add-Ins für sie entwickeln, aber ich könnte mich irren.

Und ehrlich gesagt mag ich meine Maus. Wenn ich reine textbasierte Editoren verwende, wird es einsam.

Furis
quelle
2

Spart Zeit für die Entwicklung
Erleichtert das Leben durch Funktionen wie integriertes Debugging und Intellisense.

Es gibt viele, aber es wird empfohlen, eine zu verwenden, sie sind mehr als offensichtlich.

Nrj
quelle
2
Vielen Dank für die Antwort, aber wenn ich gedacht hätte, dass sie offensichtlich sind, hätte ich die Frage überhaupt nicht gestellt!
Simon Howard
2

Ich bin mir nicht sicher, ob es eine klare Trennlinie zwischen einem Texteditor und einer IDE gibt. Sie haben Notepad an einem Ende der Skala und die besten modernen IDEs am anderen, aber dazwischen gibt es eine Menge Dinge. Die meisten Texteditoren verfügen über eine Syntaxhervorhebung. Editoren, die sich an Programmierer richten, verfügen häufig über verschiedene andere Funktionen wie einfache Code-Navigation und automatische Vervollständigung. Mit Emacs können Sie sogar einen Debugger integrieren. Die IDEs von vor zehn Jahren hatten weit weniger Funktionen, um Programmierern zu helfen, als Sie es heutzutage von einem seriösen Texteditor erwarten würden.

Mark Baker
quelle
+1 für die Feststellung, dass die "Editoren" von heute mehr Funktionen haben als die "Ides" von gestern.
Sean McMillan
2

Mein Hauptgrund für die Verwendung ist, wenn der Code über 100 Dateien hinausgeht.

Obwohl ctags die Arbeit erledigen können, haben einige IDEs eine ziemlich gute Möglichkeit, schnell und einfach durch die Dateien zu navigieren.

Es spart Zeit, wenn Sie viel zu tun haben.

OscarRyz
quelle
2

Für mich ist es nur die GUI-Version von allem, was wir in den guten alten Tagen des Terminals getan haben. Ich werde immer zustimmen, dass IDE nicht sehr überlegen sind, weil sie viele Dinge verbergen, insbesondere was das Verknüpfen betrifft, aber sie haben in einigen Fällen einen bemerkenswerten Vorteil, zum Beispiel bei bestimmten Entwicklungsplattformen wie Qt.

Einige IDE wie Visuals anderer scheinen Ihren Code sogar während der Eingabe zu analysieren und Fehler zu erkennen, bevor Sie überhaupt kompilieren: Es scheint logisch, dass nur eine IDE eng mit einem Compiler zusammenarbeiten kann, um Probleme in der eingegebenen Quelle sofort zu erkennen.

Meine wilde Antwort, dass der IDE / Command-Line-Flammenkrieg existiert, ist nur, weil das ausführbare C / C ++ - Gebäude im Gegensatz zur D-Sprache unter standardisierten Gesichtspunkten nicht sehr gut gehandhabt wird. Jede Plattform behandelt das Kompilieren / Verknüpfen / usw. auf ihre eigene Weise. Um es weniger chaotisch zu machen, erstellen sie eine IDE.

Aus Ihrer Sicht ist es möglicherweise einfacher, die Befehlszeile zu verwenden. Wenn es nur einen Compiler mit Standardoptionen gegeben hätte, wäre dies einfach gewesen, aber die Wahrheit ist, dass C / C ++ flexibel ist, sodass letztendlich alle Plattformen Mach es auf ihre eigene Art und Weise, daher die IDE, um nicht zu verschwenden, zu erklären, wie es geht.

Wenn Sie lernen können, wie eine ausführbare Datei mit dem Kernel kommuniziert, oder wenn Sie etwas über das Compiler-Design wissen, gibt es vielleicht eine Möglichkeit, mit einer richtigen Befehlszeile zu arbeiten, aber ich bezweifle, dass Sie dies getan haben.

Microsoft oder Apple, so böse sie auch sein mögen, müssen einen einfachen Weg vorschlagen, um eine Anwendung zu erstellen, ohne die Details einzugeben, und da das Erstellen einer Anwendung direkt von der Architektur des Betriebssystems abhängt, wird es kaum "Standard" sein Kommandozeile ist.

Um es einfach auszudrücken: große, komplexe und komplexe Anwendungen, bei denen Sie nicht zu tief in die Funktionsweise eintauchen möchten -> IDE, kleine Software oder einfaches System-Software-Design -> Befehlszeile. Außer natürlich den raffinierten Bibliotheken, in die ein Makefile eingebettet ist, aber das ist eine andere Geschichte.

Ich denke auch, dass IDE verwendet werden, wenn die gelieferte Anwendung etwas mit einer GUI oder etwas zu tun hat, das eine Schnittstelle hat oder direkt an ein Betriebssystem gebunden ist. Auch dies ist also auch für Leute gedacht, die eine UI / GUI verwenden, ohne es zu wissen wie es funktioniert, während Leute, die Systeme programmieren, nicht alles brauchen.

IDE ist nur moderne Scheiße, aber ich denke, in 100 Jahren wird die Kommandozeile noch existieren.

Jokoon
quelle
1

Ich mag eine IDE, weil sie mir viele Funktionen zur Verfügung stellt. Bearbeiten / Kompilieren / Sichtbarkeit von Dateien im Projekt sind alles Dinge, die ich in einer IDE schätze. Ich benutze jetzt Visual Studio, aber in einem früheren Leben habe ich SlickEdit verwendet und festgestellt, dass mein Entwicklungsprozess dadurch rationalisiert wurde, als wenn ich es nicht verwendet hätte.

itsmatt
quelle
1

Bei der Entscheidung, ob eine IDE verwendet werden soll oder nicht, muss nur eines berücksichtigt werden, und zwar, ob Sie dadurch produktiver werden oder nicht.

Kurze Frage so kurze Antwort :)

Nick Pierpoint
quelle
Vielen Dank für die Antwort, aber es war offensichtlich, dass einige Leute dies glauben, bevor ich die Frage einreichte. Ich möchte wirklich wissen, warum Sie denken, dass es Sie produktiver machen könnte? Macht es Sie in einigen Szenarien produktiv, in anderen jedoch nicht?
Simon Howard
1

Es hängt stark davon ab, was Sie tun und in welcher Sprache Sie es tun. Persönlich verwende ich normalerweise keine IDE (oder "meine IDE besteht aus 3 xterms, auf denen vim ausgeführt wird, einem, auf dem ein Datenbankclient ausgeführt wird, und einem mit einem Bash-Eingabeaufforderung oder Tailing-Protokolle ", je nachdem, wie weit Sie" IDE "definieren) für den größten Teil meiner Arbeit. Wenn ich jedoch eine plattformeigene GUI entwickeln würde, würde ich nach einer sprachgerechten IDE in greifen Sofort - IMO, IDEs und die Bearbeitung grafischer Formulare sind eindeutig aufeinander abgestimmt.

Dave Sherohman
quelle