Welche Vorteile bietet die Verwendung der Befehlszeile für die Softwareentwicklung? [geschlossen]

8

Welche Vorteile bietet die Verwendung der Befehlszeile für die Softwareentwicklung gegenüber der Verwendung einer alternativen Benutzeroberfläche? Ist die Befehlszeile für bestimmte Aufgaben schneller? Sind bestimmte Tools nur über die Befehlszeile verfügbar?

br3w5
quelle
Meinen Sie die Verwendung von Befehlszeilen-Compilern im Vergleich zu einer IDE? Oder sprechen Sie über die Benutzeroberfläche der von Ihnen erstellten Programme?
Lord Tydus
1
@ LordTydus Ich bezog mich auf Befehlszeilen-Compiler und andere Befehlszeilen-Tools und wie sie zum Verwalten von Datenbanken usw. im
Vergleich zu
4
Bis Eclipse seinen Begrüßungsbildschirm anzeigen kann, hat ein CLI-Master vieine Datei gestartet , einen kleinen Fehler behoben und die aktualisierte Datei gespeichert. Vielleicht makeist auch in Arbeit.
Mouviciel
1
Wir werden nicht erwähnen, was passiert, wenn der UI-Typ auf der halben Welt aus der Ferne in eine kaputte Maschine
schießt

Antworten:

28

Zu den Vorteilen der Befehlszeile gegenüber GUI-Anwendungen gehören:

  1. Wenn Sie solche Tools schreiben, anstatt sie zu verwenden, ist die Befehlszeile einfach zu entwickeln. Das Akzeptieren von Argumenten in der Befehlszeile ist trivial und die Ausgabe in einen Textstrom ist ähnlich einfach.
  2. Befehlszeilenanwendungen können problemlos in Batchdateien oder Skripten verwendet werden, was sich hervorragend für automatisierte Tests oder Builds eignet. Die meisten Build-Tools wie make, ant und msbuild bieten eine gute Unterstützung für das Aufrufen von Befehlszeilentools.
  3. Die Eingabe-, Ausgabe- und Fehlerströme können einfach umgeleitet werden, sodass Informationen aus Dateien oder anderen Anwendungen gesendet oder empfangen werden können. Dies kann bedeuten, dass Testdaten einfach geliefert oder ausgegeben werden können.
  4. Es gibt einen einfachen, aber standardmäßigen Fehlerrückgabemechanismus (Rückkehrcode und Fehlerstrom). Das Erkennen eines Fehlers in einer GUI erfordert möglicherweise eine Automatisierung der Benutzeroberfläche.
  5. Die Verwendung über eine Remote-Shell oder ähnliche Verbindungen erleichtert die Remote-Ausführung von Aufgaben erheblich, z. B. wenn ein Entwickler eine Verbindung von zu Hause oder unterwegs herstellt. Remotedesktopverbindungen sind heutzutage häufiger anzutreffen, erfordern jedoch mehr Bandbreite und eine Verbindung mit geringerer Latenz.
  6. Es gibt definierte Standards für die Hilfe (wie den Unix- manBefehl oder das Übergeben -? Als Argument). Wenn jemand eine Funktion nicht kennt, kann er leicht sehen, was das Tool bietet. In ähnlicher Weise gibt es definierte Platzhalter-Syntaxstandards für die Angabe mehrerer Dateien, die auf wahrscheinlich vorhandenem Entwicklerwissen basieren.

Befehlszeilenanwendungen weisen jedoch im Vergleich zu GUI-Anwendungen die folgenden Nachteile auf:

  1. Befehlszeilenanwendungen sind schwieriger zu erlernen, insbesondere für diejenigen, die nicht an sie gewöhnt sind. Dies ist normalerweise kein Problem für die Softwareentwicklung, da Entwickler häufig an Befehlszeilentools gewöhnt sind, dies jedoch für weniger an der Entwicklung beteiligte technische Mitarbeiter wie Junior QS, Lokalisierung und technische Redakteure problematisch sein kann.
  2. Befehlszeilenanwendungen erfordern eine Tastatur und sind daher für einige Geräte wie Telefone oder Tablets unpraktisch.
akton
quelle
1
Vielen Dank für eine so umfassende Antwort (ich lasse die Frage etwas reifen und wähle dann eine ausgewählte Antwort aus, aber Ihre ist sehr hilfreich). Gibt es Ressourcen, die Sie empfehlen würden, um gründliche Kenntnisse der Befehlszeile zu erlangen (vorzugsweise Linux-Terminal)?
br3w5
1
@ssbrewster Die Kunst der Unix-Programmierung ( catb.org/esr/writings/taoup ) gibt Ihnen eine gute Vorstellung davon, warum die Linux-Befehlszeile so funktioniert, wie sie funktioniert. Was für das Erlernen der Verwendung viel wichtiger ist als die Funktionsweise . Es ist wichtig zu wissen, welche Konventionen zugrunde liegen und wie neue Funktionen entdeckt werden. Sobald Sie diese beiden Dinge kennen, wird sich alles andere mit der Zeit auf natürliche Weise entfalten. Es ist auch eine verdammt gute Lektüre.
Racheet
8

Ich nehme an, Sie meinen die Verwendung eines Befehlszeilen-Compilers anstelle einer IDE. Hinterlasse einen Kommentar wenn nicht und ich werde meine Antwort löschen.

Lernen. Erfahren Sie, wie Codeeinheiten in Ihrer Sprache kompiliert, verknüpft oder zugeordnet werden. Normalerweise müssen Sie dem Compiler explizit mitteilen, welche Dateien kompiliert und verknüpft werden sollen. So erhalten Sie ein besseres Verständnis dafür, wie es funktioniert. Eine IDE wird zaubern, um Ihnen das Leben zu erleichtern, aber Sie ignorieren.

Sie gehen dann noch einen Schritt weiter und lernen, Ihre eigene Make-Datei zu erstellen. Dies ist eine wertvolle Fähigkeit. Ihre Make-Datei macht den Build-Zyklus-Ansatz zum Komfort von "IDE Magic", während das volle Verständnis und Lernen erhalten bleibt.

Darüber hinaus ist Ihr Build-Prozess einfach in die Quellcodeverwaltung zu integrieren. Und es ist einfach, Ihren Erstellungsprozess für die Arbeit mit einer Vielzahl von Compilern zu portieren. Manchmal geht es nur darum, eine Zeile in der Make-Datei für den Compilernamen zu ändern.

Sie entwickeln Fähigkeiten, mit denen Sie auf vielen Plattformen arbeiten können. Texteditoren und Befehlszeilen-Compiler sind von allen Anbietern und auf allen Plattformen sehr ähnlich. Mit diesen grundlegenden Tools können Sie jederzeit und an jedem Ort rund um die Uhr auf jedem System entwickeln. Wenn Sie Ihr ganzes Leben in Visual Studio verbracht haben, wird es viel schwieriger sein, außerhalb von Visual Studio zu arbeiten.

Wenn Sie diesen Weg beschreiten, möchten Sie vielleicht einen erweiterten Texteditor wie VIM erlernen. Es ergänzt die Fähigkeit, auf jeder Plattform zu arbeiten, da es fast überall unterstützt wird. Es hat eine enorme Lernkurve, aber der Gewinn ist die Fähigkeit, Text mühelos mit hoher Geschwindigkeit zu bearbeiten, ohne die Hände zur Maus zu bewegen.

Übrigens bin ich nicht gegen IDEs.

Lord Tydus
quelle
Vielen Dank an LordTydus. Die Empfehlung zum Erstellen von Dateien ist sehr hilfreich. Ich lerne gerne, wie die Dinge auf niedrigen Ebenen funktionieren
br3w5
2
Ein weiterer Vorteil der Verwendung der Befehlszeile besteht darin, dass es viel einfacher ist, mehrere Dateien mithilfe von Platzhaltern wie * .c anzugeben. Die einzige Möglichkeit, dies mit GUIs zu tun, besteht darin, ein Pseudo-Befehlszeilen-Bearbeitungsfeld bereitzustellen.
Tcrosley
4

GUIs haben den Vorteil, erweiterte Visualisierungen verwenden zu können. Dies kann äußerst nützlich sein, um komplexe Daten aussagekräftig zu machen.

Befehlszeilen hingegen sind häufig leistungsfähiger (z. B. vollständig skriptfähig) und in der Regel auch schneller. Die anderen Antworten haben das erweitert - hier möchte ich nur erwähnen, dass GUIs für einige Aufgaben keinen Vorteil bieten:

In der Entwicklung benötigen viele Aufgaben keine Visualisierung, die nicht über eine Befehlszeilen- / Textschnittstelle ausgeführt werden kann. Nehmen Sie das Kompilieren: Gute Texteditoren (Vim, Emacs) unterstützen das Parsen von Fehlermeldungen und springen direkt zum Fehler im Code. Grafische IDEs bieten nicht mehr. Einfach gesagt, für solche Aufgaben gibt es keine Notwendigkeit für eine grafische Oberfläche, und Sie würden die Flexibilität und Effizienz einer Befehlszeilenschnittstelle verlieren.

Andererseits kann eine interaktive Visualisierung sehr nützlich sein, wenn Sie mit einer komplexen Dateninteraktion zu tun haben. Versionskontrollsoftware, die Verzweigungsdiagramme anzeigen kann, schlägt hier häufig die Textschnittstellen. Dies ist beispielsweise eine Momentaufnahme aus einem meiner Repositorys:

Verzweigungsdiagramm

Dies ist viel praktischer als die Textoberfläche, obwohl dies nicht einmal eine besonders leistungsstarke Visualisierung ist. Beachten Sie jedoch erneut, dass die eigentliche Bearbeitung des Repositorys über die Befehlszeile schneller ist (zumindest für mich). Ich benutze die GUI nur, um die Zweige anzuzeigen.

Beachten Sie auch, dass Github kürzlich eine Befehlszeilenschnittstelle hinzugefügt hat, um zu erkennen , dass viele Aufgaben durch Eingabe eines Befehls schneller ausgeführt werden können als durch Klicken auf eine Webseite.

Konrad Rudolph
quelle