Ich werfe meine Antwort in den Ring (obwohl ich glaube, dass dies alles auch gute sind).
Die grundlegendste Antwort ist, dass es um Philosophie geht.
In der Microsoft-Welt ist es ein bisschen religiös - Sie haben die Götter auf dem Berg. Redmond, der eine Petition erhalten muss, wenn etwas implementiert werden soll. Manchmal werden sie zuhören, andere Male werden Ihre Opfer und Bitten auf taube Ohren stoßen. Vielleicht waren sie auf der Jagd. Microsoft kontrolliert das gesamte Ökosystem - sie besitzen das Betriebssystem, sie besitzen die IDE und sie koppeln sie auf eine Art und Weise, über die in einem SE-Netzwerk wahrscheinlich nicht gesprochen werden kann. Auch innerhalb der IDE sind Teile eng miteinander verbunden - man kann es als integriert bezeichnenaber ich denke gekoppelt ist genauer. Wenn Sie etwas ändern möchten, verbietet Gates, dass Sie etwas auf eine Weise ändern möchten, die die Designer von Windows oder Visual Studio nicht ausdrücklich zugelassen haben. Und dann werfen Sie Technologien wie IE und IIS, Microsoft-Server und MS SQL Server und Office ... und alles ist eine schöne, große, glückliche Familie. Aber wenn Sie einen Teil der Familie hinter sich lassen wollen? schaudern !
Auf der anderen Seite haben Sie Linux, das aus der Unix-Philosophie hervorgeht, dass jedes Stück für seinen eigenen kleinen Verantwortungsbereich verantwortlich sein sollte. Es sollte eines tun und es gut machen. Und vorzugsweise sollte die Kommunikation über Textfolgen erfolgen. Wie andere haben darauf hingewiesen, sed
, awk
, grep
, etc. sind perfekte Beispiele dafür. Sie machen das , wofür sie entwickelt wurden, und sie machen es sehr gut. Wenn Sie zwei Dinge tun müssen , kombinieren Sie die beiden Werkzeuge. Welches ist sehr einfach zu tun.
Da sed
erwartet wird, dass nichts außer der eingegebenen Eingabe Text ist, bedeutet dies, dass alles , was Text erzeugen kann, das Rad nicht neu erfinden muss. Sie können einfach verwenden sed
. Und da sed
Text erzeugt wird, kann jeder, der Text lesen kann, die Ausgabe von verwenden sed
. Text ist sehr universell (es gibt einige Ausnahmen) und es ist sehr einfach, diese Arten von Dingen miteinander zu kombinieren.
Es ist nicht nur einfach, sie zu kombinieren, sondern auch sehr einfach, sie zu trennen. Wenn ich entscheide, dass ich keinen Stream mehr bearbeiten muss, sondern die Ergebnisse filtern möchte, anstatt meinen Text an zu übergeben sed
, kann ich übergeben es grep
stattdessen.
Nun, dies ist die grundlegende Philosophie hinter der Entwicklung in einer Linux-Umgebung. Selbst wenn Sie von dort aufsteigen, bieten viele Tools ähnliche Arten von Schnittstellen. Mit ihnen können Sie sie in Teile zerlegen oder über die Befehlszeile, Ports oder HTTP eine Schnittstelle zu ihnen herstellen.
Und selbst wenn das nicht der Fall wäre, haben Sie auch Open-Source-Software. Die meiste (wenn nicht die gesamte) Software auf der Linux-Plattform ist Open Source. Wenn Sie also nicht mögen, wie es geschrieben ist, können Sie die Software vollständig, vollständig und absolut selbst ändern. Das ist unglaublich ermächtigend. Können Sie diese IDE nicht so aufteilen, wie Sie es möchten? Nehmen Sie die Änderungen vor und übermitteln Sie sie erneut, oder geben Sie das Projekt an. Nicht sicher, warum sich etwas so verhält wie es ist? Benutze die Quelle, Luke! Müssen Sie in der Lage sein, etwas über die Befehlszeile zu automatisieren? Hacken Sie das Projekt und nehmen Sie Änderungen vor. Stoßen Sie auf einen Fehler oder ein Sicherheitsproblem? Hey rate mal was - du kannst das selbst beheben, du musst nicht warten, bis SP3.432vb89234.startdate1eQ herauskommt.
Sie können die gewünschten und benötigten Tools kombinieren. Und wenn Ihnen etwas im Weg steht, können Sie dies zu 100% ändern. Selbst wenn Sie nicht über die Fähigkeiten verfügen, können Sie jemanden dafür bezahlen, diese Änderung zu entwickeln - oder sie sogar jemand anderem vorschlagen, der über das Know-how verfügt.
Der Grund, warum dies für die Programmierung besser ist, ist, dass Sie Reibungspunkte aus Ihrem Workflow entfernen können, wenn Sie auf Reibungspunkte stoßen . Weil die Entwicklung schwierig ist, gibt es viele Dinge, über die man nachdenken muss, um ein erfolgreicher Programmierer zu sein, und je mehr man nachdenken muss, desto schwieriger ist es, über andere Dinge nachzudenken .
Die Beseitigung von Reibung ist der Schlüssel.
Wenn Sie sich also in der Microsoft- Religion des Ökosystems wie zu Hause fühlen und die Tools so gut finden, dass Sie kaum Reibungspunkte haben ... dann ist das wahrscheinlich in Ordnung.
Wenn Sie jedoch die zum Patent angemeldete Microsoft Mould (TM) nicht einbauen, kommt es zu Reibungsverlusten. Entwicklung wird ein Schmerz sein. Jedes Mal, wenn Sie möchten, dass Sie etwas tun können, aber nicht, wird dies wertvolle kognitive Ressourcen erschöpfen. Und wenn das der Fall ist, ist eine Linux-Entwicklungsumgebung wahrscheinlich das Richtige für Sie.
vim
. Dies ist ein sehr subjektiver Bereich! Viele Leute verwenden IDEs unter Linux, so dass Sie hier mehrere Dinge zusammenführen.