Welche Vorteile hat Ubuntu gegenüber Windows als Programmierumgebung?

59

Warum ist das Schreiben eines Programms in Textdateien oder über das Terminal eine bessere Option (wie ich es gelesen habe) als die Verwendung von IDE (s) wie Visual Studio unter Windows? Existieren dort die von einer IDE bereitgestellten Funktionen (z. B. Anzeigen von Kompilierungsfehlern) oder handelt es sich um einen manuellen Vorgang?

Muhammad Charaf
quelle
16
Einige Leute haben lange Zeit programmiert und sind sehr effektiv darin, das zu tun, was sie von einer textgesteuerten Eingabeaufforderung aus tun. Vielleicht finden sie auch Redakteure, die ihnen gefallen vim. Dies ist ein sehr subjektiver Bereich! Viele Leute verwenden IDEs unter Linux, so dass Sie hier mehrere Dinge zusammenführen.
Warren P
3
Ich glaube, IDEs sind nicht der Hauptpunkt der Frage. Es gibt viele IDEs für Linux-Betriebssysteme. Beispielsweise funktionieren alle JetBrains-IDEs (IntelliJ / PyCharm usw.) unter Linux. Eclipse läuft unter Linux. QtCreator läuft unter Linux.
Bakuriu
12
Diese Frage auf dieser Seite wird unter einer Bestätigungsverzerrung leiden .
zzzzBov
5
In dem Bestreben, die Frage von Metadiskussionen frei zu halten, habe ich ein separates Metathema geöffnet , um es speziell zu behandeln .
Oli
4
Bitte formulieren Sie diese Frage neu, um mehr Sinn zu machen, insbesondere den Titel. Ubuntu zwingt Sie nicht dazu, IDEs zu vermeiden und sich bei der Softwareentwicklung an Texteditoren zu halten, genauso wenig wie Windows.
Reinier Post

Antworten:

87

Diese Art von Hypothese könnte für Programmierer besser sein. SE, weil es hier wahrscheinlich ziemlich einseitig ist. Trotzdem war ich einige Jahre lang .NET-Entwickler und bin auf Visual Studio angewiesen. Es tut viel für Sie und ja, ich mag besonders den integrierten Debugger ... Ich glaube jedoch, dass es einige Gründe gibt, warum sich die Leute für Linux entscheiden:

  • Ubuntu ist kostenlos. Windows und VS können extrem teuer sein.

  • Ubuntu ist kostenlos . Windows und VS geben Ihnen nur sehr wenig Kontrolle darüber, wie Sie sie verwenden.

  • Ubuntu ist eine sofort einsatzbereite Programmierumgebung. Tools wie Bash, grep, sed, awk. Windows ist historisch gesehen ein großes Problem, von dem aus Skripte erstellt werden müssen. Batch-Dateien sind furchtbar, und selbst mit PowerShell ist die Befehlszeilenerfahrung in Windows im Vergleich zu Bash und den GNU-Tools von geringer Bedeutung. Sie können einen Teil davon auf Windows portieren, aber es ist nicht dasselbe Erlebnis.

  • Komplizierte Setups sind einfach zu automatisieren und zu replizieren apt-get, mit Tools wie Puppet , Chef , Juju , Fabric und einfachen Skripten.

  • Einige Dinge benötigen keine komplizierten IDEs. Ich bin ein Python-Entwickler in diesen Tagen und ich bin mit seinen eigenen integrierten Tools und Debugger vollkommen zufrieden. Ich benutze einen Texteditor, die Kommandozeile und Fabric ... Und ich habe weit mehr Kontrolle als unter .NET. Ich kann meine Webapps mit einem einzigen Fabric-Befehl erstellen, testen, festschreiben und bereitstellen.

    Das heißt nicht, dass es keine monolithischen IDEs gibt. Eclipse und Netbeans. MonoDevelop. KDevelop4 und QT Creator. Sie alle haben ihre Benutzer, die auf sie schwören.

Ist Ubuntu besser für dich ? Wer weiß. Es ist ein sehr fähiges und sehr anpassbares System. Wenn Sie ihm eine Chance geben und Ihren Workflow so ändern, dass er Ihnen hilft, sollten Sie ihn zum Festhalten bringen können.

Oli
quelle
18
Bei "Kostenlos" geht es sowohl um Kosten als auch um Ärger. Ich benutze einen Mac, aber ein Tool wie Vagrant macht es einfach, eine saubere Linux-VM für jedes Projekt einzurichten und nach Abschluss des Projekts zu verwerfen. "Was will ich?" ist die einzige Überlegung, nicht "Habe ich einen Lizenzschlüssel für dieses Betriebssystem und wie kann ich ihn erkennen ...?"
Nathan Long
14
+1 Um objektiv zu bleiben, wenn es so vielen Menschen leicht fällt, eine "Windoze saugt an allem" -Haltung zu haben.
Phil
2
Eine Sache, die beachtet werden sollte, das Visual Studio ist freier als früher, es unterstützt seit einiger Zeit MAKE-Dateien und Plugins ermöglichen das Schreiben und Debuggen von Cygwin-Anwendungen vollständig in Visual Studio.
Scott Chamberlain
6
even PowerShell scripts lack the power of Bash- Ich würde argumentieren, dass Sie PS dann nicht sehr gut kennen; Es ist immens mächtig und ich habe nichts getroffen, was du in Bash machen kannst, was du nicht in PS machen kannst
Mark Henderson
4
@ MarkHenderson Ja, es ist mit ziemlicher Sicherheit so, dass man es nicht genug benutzt. Es wurde eingeführt, als ich Windows und .NET hinter mir ließ. Ich denke, Bash (und mit "Bash" meine ich wirklich GNU) hat mich mitgenommen, weil Sie es überall und für alles verwenden . PS erforderte jedes Mal so viel Googeln, weil alles einfach immer super spezialisiert war. Es ist ehrlich gesagt schwer, nach so langer Zeit mit Bash zu sagen.
Oli
37

Ich möchte jedoch einen weiteren wichtigen Grund hinzufügen. Ubuntu eignet sich hervorragend zum Experimentieren mit neuen Bibliotheken, Sprachen, IDEs und Compilern. Alles ist nur einen Katzensprung entfernt.

Sie haben also von einer Phantasiesprache namens Haskell gehört :

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

Oh, Sie haben einen schicken Editor für Haskell gehört:

sudo apt-get install <fancy-editor-for-haskell>

Das Gleiche gilt für C / C ++ - Bibliotheken. Sie müssen nur apt-get installdie #includeDateien, die Binärdateien und die Header in die richtigen Ordner verschieben, und Sie können sie auch nur in Ihren Quelldateien speichern, ohne auch nur überprüfen zu müssen, wo sie abgelegt werden.

Im Wesentlichen geht es nicht darum, wie schnell Sie Ihre tägliche Arbeitsumgebung einrichten können. Es geht auch darum, wie extrem schnell Sie eine experimentelle Umgebung einrichten können. Ich glaube, das beschleunigt die Lernerfahrung unter Linux.

Enobayram
quelle
36
apt-getUnd die Einstellung, dass alles auf diese Weise installierbar sein muss, ist vielleicht das Beste an Linux. Weder OSX noch Windows sind hier vergleichbar.
Nathan Long
11
Ja, aber Sie müssen das Installationsprogramm jeder Anwendung manuell abrufen: Die Tatsache, dass im Inneren dasselbe Installationsprogramm verwendet wird, bringt Ihnen nicht viel ein (dies erspart ihnen einige Mühen). Das ist nicht dasselbe wie ein eingebauter Paketmanager.
Useless
2
@ NathanLong Ich habe genau dasselbe mit Macports gemacht: sudo port install ghc. Frisch aus den Quellen zusammengestellt. The MacPorts Project currently distributes 17699 ports. Ein Unterschied ist, dass es immer kompiliert.
Alecail
2
@karadeniz: Und das ist nicht zu erwähnen yum, pacman, emerge, petget, pkgadd...
Aesin
2
Ich mag MacPorts (und verwalte dort und auf Homebrew ein paar Pakete), aber es kann nicht wirklich mit Debian verglichen werden. Diese kleineren Projekte haben einfach nicht die Personalkraft, um ein großes Repository nach demselben Standard zu verwalten. Gleiches gilt für Cygwin und Coapp auf der Windows-Seite. Der Hauptunterschied ist kulturell. Ich denke, die Linux-Paketmanager sind Teil des Systems und werden von jedem für alles verwendet. Sie sind kein leicht vernachlässigter Hintergrund für Add-Ons.
Jcupitt
20

Hier ist eine Meinung eines hauptsächlich von Microsoft entwickelten Plattformentwicklers. Wenn Sie nicht auf das .NET-Ökosystem abzielen, würde ich argumentieren, dass Ihre beste Option Ubuntu ist. Wenn Sie Ubuntu anstelle von Windows verwenden, können Sie Tools für fast alle anderen Plattformen / Sprachen viel einfacher abrufen, konfigurieren und verwenden.

Der Wert von Microsofts Toolchain ist, dass es hochintegriert ist. Von der IDE zur Quellcodeverwaltung, Projektverwaltung, Erstellung, Bereitstellung, Datenbank, Cloud-Infrastruktur, ad nauseum . Microsoft macht es SEHR einfach, wenn Sie die Plattform in vollen Zügen auskosten.

Wie einige bereits erwähnt haben, kann das Abweichen vom Microsoft-Weg schmerzhaft sein. Verwenden Sie .NET für Ihren Code und Oracle für Ihre Datenbank.

Möchten Sie eine .NET-Webanwendung erstellen und für Amazon Web Services bereitstellen? Nicht ganz einfach.

Aber wenn Sie im Microsoft-Ökosystem bleiben ... wird dieses Baby für Sie wie ein Spottvogel singen. In den Händen eines kompetenten Softwareentwicklers ist die Microsoft-Plattform wie ein PED für einen talentierten Athleten. Es wird einem Amateur-Programmierer nicht ermöglichen, das nächste Facebook zu erstellen. Aber es gibt einem talentierten Entwickler einen Vorteil, der versteht, wie die Teile zusammenpassen.

Das Argument für die (wie beim Bier) kostenlosen Kosten für den Einstieg in Ubuntu ist, dass es eine Reihe von Programmen von Microsoft gibt, mit denen Sie kostenlos mit ihren Tools beginnen können. Einschließlich Bizspark, mit dem Ihr Startup-Unternehmen 3 Jahre Lizenzen erhält (einschließlich Produktionslizenzen für seine Tools). Und Traumfunken, der es den Schülern kostenlos gibt.

Wenn Sie jedoch neue Sprachen und Plattformen entdecken und erlernen möchten, finden Sie bessere Tools, um mit Ubuntu zu beginnen, und wenn Sie Arbeit außerhalb des Microsoft-Ökosystems suchen, müssen Sie vertraut sein mit Ubuntu.

Michael Brown
quelle
7
Ja, ich stimme zu. Nachdem ich für eine Weile C / Unix-Code auf niedriger Ebene in einer Linux-Umgebung geschrieben hatte, entschied ich mich, eine Pause einzulegen und etwas C # -Grafik zu entwickeln, um das neue VS zu starten, und es war, gelinde gesagt, befreiend. Es ist nicht so flexibel, aber es macht die Sache sicher einfacher, wenn es Ihnen nichts ausmacht, Ihre Seele an Micr zu verkaufen. Ich meine, Sie erweitern Ihren Horizont!
Thomas
3
Ja, +1 für ein willkommenes Gegenmittel gegen halb informiertes Anti-MS-Sniping.
Alan B
15

Ich benutze beide Tools, IDEs und Text-Editoren mit C ommand- L ine I nterface (unten bezeichnet als CLI ), um Programme zu schreiben.

Was Linux anbietet, ist eine nützliche CLI ab der Standardinstallation. Wenn Sie das nicht brauchen und trotzdem nur eine IDE verwenden, gibt es keinen großen Unterschied mehr (IMHO).

IDEs

  • IDEs sind sehr gut, wenn es darum geht, viele Funktionen zu integrieren und in einer grafischen Benutzeroberfläche darzustellen.
  • Der Nachteil ist, dass es jemanden überwältigen kann, der neu in diesem Bereich ist. Nun müssen Sie zwei Dinge lernen: die IDE und die Programmiersprache.

Texteditoren und CLI-Tools

  • Das Erlernen von Texteditoren und CLI-Tools dauert nicht lange.
  • Wenn etwas nicht funktioniert, ist leicht zu erkennen, welches Tool nicht wie erwartet funktioniert.
  • Es ist auch einfacher, Probleme mit Google zu suchen, da alles textbasiert ist.
  • Das Programmieren mit Texteditoren und CLI-Tools ist schneller und reaktionsschneller, insbesondere beim Vergleich mit älterer Hardware.
  • Sie können damit auch auf Bildschirmen mit niedriger Auflösung arbeiten.
  • Es ermöglicht Ihnen das Programmieren und Debuggen mit minimalen Ressourcen auf einem Remote-Server.

Ich mache mein Prototyping oft mit textbasierten Tools. Wenn später mehr Dateien zu verwalten sind, schätze ich die Refactoring- Tools, die mir eine IDE bietet.

MadMike
quelle
8
CLI ist eine Abkürzung für Command Line Interface (Befehlszeilenschnittstelle). CLI bezieht sich normalerweise auf eine Oberfläche wie aptitude, die einer GUI ähnelt, jedoch in Textform. Vim wäre ein CLI-Editor, aber grepnicht CLI, es hat keine Schnittstelle (es wäre nur ein Befehlszeilen-Tool)
kiri
Die Begriffsklärung ist gut. Von einem Windows-Programmierhintergrund kommend könnte CLI für Common Language Infrastructure stehen .
Jltrem
Ich benutze eine GUI, um GUIs zu entwickeln, und einen Texteditor, um CLI oder textbasierte Programme / Inhalte zu entwickeln. Ich würde niemals versuchen, eine GUI-lastige Geschäftsanwendung in Vim zu schreiben. Visual C # macht das Prototyping solcher Dinge mühelos. Ebenso würde ich niemals eine Webentwicklung (PHP / HTML / CSS / JS usw.) in einer IDE unter Windows durchführen, da dies in Vim auf meinem Webserver unendlich effizienter und praktischer ist.
Dan
@ minerz029 CLI ist ein Programm im Grep-Stil (jeweils ein Befehl [Zeile]). Sie denken an "Konsolenanwendungen", die aptitude / vim-style sind.
Izkata
4
@ minerz029 Die Schnittstelle für grepist die Argumente, stdin und stdout - das Wort impliziert nichts Grafisches oder Pseudografisches. Andere Arten von Schnittstellen umfassen Web-APIs, serielle Protokolle usw.
Izkata
12

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 sederwartet 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 sedText 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 grepstattdessen.

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.

Wayne Werner
quelle
1
Ich habe die von Ihnen verlinkten Aufsätze wirklich genossen, danke.
Gareth Davidson
3
Lob Balmer und möge all seine Paritätsbits richtig eingestellt sein. ACK. ACK. ACK.
Warren P
9

Ich möchte meine allgemeineren Gedanken zu der Frage geben:

"Warum ist Linux eine bessere Umgebung für die Programmierung?"

Ich denke, der wichtigste Grund für die Entwicklung unter Linux ist, dass Sie einen umfassenden Einblick in die meisten Software-Interna haben. Sie können lernen, wie die Dinge tatsächlich funktionieren, wenn Sie interessiert sind. Auf diese Weise können Sie gute oder schlechte Praktiken lernen und anpassen, indem Sie sie in Aktion sehen. Dies ermöglicht mehr Vielfalt für Ihre Ideen.

schmijos
quelle
2
Guter Punkt. Open Source ist ein natürlicher Vorteil für alle Entwickler, die neugierig sind. An Fenstern sind es Schildkröten bis ganz nach unten!
Warren P
Das ist ein guter Punkt. Sie haben hier einen Einblick in die Interna einer Software
Anwar
Viele Windows-Entwickler werden ihr gesamtes Arbeitsleben auf der Windows-Plattform arbeiten und gegen eine API programmieren, die sie nie auf der anderen Seite sehen werden. Eine Art Gefängnis für den Verstand, meinst du nicht auch?
Warren P
@WarrenP Wenn eine API ordnungsgemäß dokumentiert ist, erfahren Sie im Quellcode nicht mehr darüber. (Obwohl ich
zugebe
8

Warum ist Linux besser für die Programmierung

IDEs

Neben Visual Studio und Xcode, die ihren spezifischen Zwecken dienen, sind die beliebtesten IDEs plattformübergreifend. Es scheint, als gäbe es Millionen IDEs für Dutzende von Sprachen, aber letztendlich basieren die meisten davon entweder auf Eclipse , IntelliJ IDEA oder NetBeans . Gemeinsam ist ihnen, dass sie alle Java-basiert sind. Java funktioniert unter Linux effizienter als unter jedem anderen Betriebssystem auf derselben Hardware. Tatsächlich ist Java unter Linux bis zu 20% schneller als unter OS X auf derselben Hardware. Viele dieser IDEs können mit einem Klick im Ubuntu Software Center installiert werden.

Compiler

GCC ist zum Industriestandard geworden. Ohne Zweifel ist Linux die wichtigste Plattform, auf der es am besten unterstützt wird. Und es ist kostenlos und lizenzfrei.

Zusätzliche Tools

Linux bietet einzigartige Tools, die auf anderen Plattformen nicht verfügbar sind, wie zum Beispiel Valgrind (ein Tool für Speicher-Debugging, Speicherleckerkennung und Profilerstellung). Linux wird auch mit Debugging-Tools wie strace und ltrace ausgeliefert , mit denen auch Produktionscode debuggt werden kann (dh nicht mit Debugging-Symbolen kompiliert). Entsprechende Tools für Windows sind entweder nicht vorhanden oder sehr teuer und bieten nicht dieselbe Funktionalität.

Einfache Installation von OSS

Ubuntu hat einen exzellenten Paketmanager. In den meisten Fällen ist die Installation der Software einfach apt-get install package-name(Sie können sie auch mit der grafischen Benutzeroberfläche (Ubuntu Software Center oder Synaptic) ausführen). Einmal installiert, werden sie vom System automatisch mit Bugfix-Releases aktualisiert. Das Paketsystem verfolgt außerdem automatisch die Abhängigkeiten, sodass Sie sich nicht um andere benötigte Pakete kümmern müssen. Sie werden automatisch installiert.

Auf der anderen Seite müssen Sie unter Windows Pakete manuell herunterladen und installieren. Wenn andere Pakete erforderlich sind, müssen Sie dies auch manuell tun. Es gibt auch keine systemweite Aktualisierung, jedes Softwarepaket implementiert entweder einen eigenen lästigen Updater oder aktualisiert überhaupt nicht.

Produktionsmaschinen sind sehr wahrscheinlich Linux

Wenn Sie für das Back-End, für das Web, für die Cloud usw. programmieren, ist es sehr wahrscheinlich, dass Ihre Zielcomputer Linux sind. Es gibt viel weniger böse Überraschungen, wenn Sie auf demselben Betriebssystem wie Ihr Zielcomputer entwickeln.

Natürlich könnten Sie eine Desktop-Anwendung für Windows entwickeln, aber heutzutage ist dies eine Art Nischenmarkt für Programmierer.

vartec
quelle
Desktop-Apps für Windows sind ein Nischenmarkt? Was?
Alan B
2
@ AlanB: Nein, Programmierer von Windows-Apps für Desktops sind Nischen. Schätzungsweise 90-95% der Programmierer entwickeln intern, und dies sind meist keine Desktop-Apps. Denken Sie auch einmal darüber nach, wann Sie das letzte Mal eine Windows-Anwendung gekauft haben (wie in tatsächlich bezahltem Geld), die kein Spiel war (und auch kein Adobe-Produkt).
Vartec
Soweit ich sehe, ist fast alles im Geschäftsbereich immer noch konsequent desktopbasiert und wird bezahlt, obwohl Cloud-zentrierte Unternehmen immer wieder etwas anderes behaupten.
Alan B
4
@ AlanB: Ich spreche nicht über den Markt der Endbenutzer. Ich spreche über den Arbeitsmarkt für Programmierer . Eine der Anwendungen, über die Sie sprechen, ist beispielsweise MS Office. Das gesamte Office-Team von MS besteht jedoch nur aus etwa 2.500 Programmierern, von denen viele nicht einmal an der Desktop-Version arbeiten.
Vartec
7

Warum ist das Schreiben eines Programms in Textdateien oder über das Terminal eine bessere Option (wie ich es gelesen habe) als die Verwendung von IDE (s) wie Visual Studio unter Windows?

Es ist nicht so, ich kann behaupten, dass es ganz im Gegenteil ist. Im Allgemeinen bevorzugen die Leute jedoch Werkzeuge, in denen sie besser sind. Die Art der Werkzeuge, die Sie verwenden, kann das Schreiben von Programmen erleichtern. So kann ich zum Beispiel Java-Programme problemlos mit vim schreiben, aber es ist wirklich kontraproduktiv im Gegensatz zu einer vollwertigen IDE wie Eclipse oder IntelliJ. Jon Skeet gab eine großartige Antwort auf die Frage, warum eine IDE verwendet wird .

Zurück zu Ihrer ursprünglichen Frage, das einzige, was Linux besser kann, ist die C-Programmierung. Alles andere, was Sie unter Linux tun können, können Sie auch unter Windows tun und umgekehrt (programmiertechnisch). C-Programmierung ist unter Linux aus historischen Gründen besser. Es bietet eine Reihe großartiger Tools (die Sie unter Windows BTW bekommen können, aber es ist viel einfacher, Linux dafür einzurichten). Wenn Sie C # schreiben und .NET mögen, ist Windows aus offensichtlichen Gründen die bessere Wahl. Alles andere ist völlig subjektiv und Sie werden die Vor- und Nachteile beider Seiten hören.

Daniel
quelle
5
Bitte versuchen Sie, in Windows eine Umgebung einzurichten, in der es keine andere Programmiersprache als MS hier gibt. Lassen Sie uns sehen, wie weit es geht.
Braiam
1
@Braiam habe ich, Java: P.
Daniel
6
Linux kann besser alles ausführen, was Unix ähnelt. Die GCC-Toolchain (die einen C- und C ++ - Compiler und andere Komponenten enthält) hat ein langjähriges Unix / Posix-Erbe. Wenn Sie jedoch der Meinung sind, dass alle Unix-ähnlichen Programme C-Programme sind, sind Sie der großen Vielfalt des Erbes und der Werkzeuge von Unix / Posix / Linux leider nicht ausgesetzt.
Warren P
2
Java ist ein Sonderfall, da Sie schnell tief verschachtelte Ordner und viele Dateien generieren. Und sobald Sie Klassen oder Pakete umbenennen, müssen Sie die Dateinamen bzw. Ordner synchronisieren. Spaß Spaß Spaß :)
MadMike
1
Ich weiß nicht, ob Linux und die CLI für die C- Programmierung unbedingt besser sind (VS ist großartig in C ++, aber es fehlt die C99-Unterstützung, Posix ist möglicherweise etwas sauberer als Win32). Aber es apt-getist großartig, wenn es um C-Entwicklung geht. Sie können schnell Tools, Bibliotheken und Debug - Symbole für zB bekommen sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbgUnd die Dinge versuchen leicht aus.
Alex Jasmin
6

Welche Tools (Texteditor oder IDE) Sie für die Programmierung verwenden, ist eine Frage der Wahl. Generell kann man sagen: Anfänger und sehr kleine Projekte neigen dazu, bessere Texteditoren zu verwenden, wie erhabenen Text oder eine modifizierte Version von gedit. Nur weil Sie beim Verwenden von Nur-Text-Editoren mehr lernen. IDEs können Ihren Lernprozess beschleunigen, indem sie Dinge automatisieren (wie Visual Studio;)).

Wenn es um Profis geht, die mit vielen Tools und Sprachen zu tun haben, sind IDEs nützlich, weil sie viel mehr für Sie tun können, wenn Sie es zulassen. Abhängig von der Sprache, in der Sie programmieren möchten, stehen viele IDEs zur Auswahl. Es gibt bessere und auch weniger praktische.

Meine persönliche Erfahrung ist, dass ein Ubuntu-Betriebssystem wesentlich schneller und einfacher für die Entwicklung eingerichtet werden kann als Windows. Ich vermute, das liegt daran, dass die meisten von mir verwendeten Tools und Programme auf Linux basieren und ich nicht im Internet nach Download-Links zu meinen Lieblingsprogrammen suchen muss. Es ist nur ein "apt-get install program1 program2 program3" entfernt. Zum Vergleich: Ich benötige 3 Arbeitstage für die Installation und Konfiguration einer neuen Windows-Installation mit allem, was ich für die Programmierung benötige (Firma, nicht privat, das wäre schneller), aber es ist nur ein Tag für die gleiche Aufgabe in Ubuntu.

Ich habe die Erfahrung gemacht, dass Programmierer, die zum Programmieren auf Linux umsteigen, (meistens) ein tieferes Verständnis der technischen Zusammenhänge und der Funktionsweise der Grundlagen haben. Mac- und Windows-Benutzer wissen in der Regel nicht, warum etwas so funktioniert oder warum nicht. Ich bin mir nicht sicher, ob Sie tatsächlich etwas aus der Arbeit mit Linux lernen können oder ob nur diejenigen, die lernen wollen, auf Linux umsteigen.

Hoffe mein "blafasel" hilft ein bisschen ...

Mondjunge
quelle
1

Ich würde argumentieren , dass eine Linux - Distribution ist eine IDE.

Zunächst wurde Unix von Anfang an als Entwicklungsumgebung konzipiert. Es wurde von Programmierern für Programmierer geschrieben. Die meisten Unixe und Linux werden weiterhin mit Entwicklungswerkzeugen in ihrer Standardkonfiguration ausgeliefert. Und fehlende Teile sind nur ein apt-get(oder das Äquivalent) entfernt. Windows hingegen ist eine schreckliche Entwicklungsumgebung, bis Sie eine nicht billige oder triviale IDE installieren.

Eine IDE ist in dem Sinne integrierter, dass IDEs enger gekoppelt sind als beispielsweise GCC, Git und Vi. Durch die enge Kopplung können Dinge wie "Intellisense" besser funktionieren. Andererseits hat die lose Kupplung viele Vorteile (z. B. Flexibilität, Austauschbarkeit, fehlende Verriegelung).

Und Fortschritte im Compiler-Design (Compiler mit leicht zu trennenden Frontends wie LLVM) könnten letztendlich eine bessere Unterstützung für Funktionen wie das Hervorheben von Syntaxfehlern bedeuten, selbst in locker gekoppelten Umgebungen.

david25272
quelle
Sie sagen also im Grunde, dass Linux eine integrierte Entwicklungsumgebung ist, die eigentlich nicht viel integriert ist? :-)
Svick
1

Zur Philosophie: Ubuntu / Linux ermöglicht dem Computerprogrammierer den direkten Zugriff auf Interna und Hardware, während Windows eine Art Gatekeeper ist. Dies ist eine wichtige philosophische Frage in Bezug auf die Programmierung. Philosophisch gesehen hängt dieses Merkmal als Vorteil davon ab, ob der Benutzer über ausreichende Kenntnisse verfügt oder sich seiner Bedeutung technisch bewusst ist.

Zum Thema Programmierung: Die gesamte Systemarchitektur von Ubuntu / Linux basiert auf der Unix-Tradition, dass kleine, einfache Programme eines tun und diese dann zu komplexeren Dingen zusammenfügen. Für einen Programmierer ist diese Architektur unglaublich leistungsfähig und aus meiner Sicht der Grund, warum sich Unix langfristig gegen jede andere Softwarearchitektur auf jeder Plattform durchsetzen wird. Einer der wenigen Orte, an denen Unix derzeit keine dominierende Rolle spielt, ist der Desktop. Dies wird sich jedoch im Laufe der Zeit ändern. Distributionen wie Ubuntu helfen, diese Entwicklung durchzuhalten.

Ich bestreite jedoch nicht, dass es unter Windows einige sehr gute Programmierumgebungen gibt. Bei der Programmierung in einem Unternehmensumfeld dominieren diese häufig.

AsymLabs
quelle
0

Geschwindigkeit ist die Antwort.

Ich finde, dass ich mit einer grafischen IDE wie Visual Studio oder QtCreator die Maus zu oft benutze, wenn ich Abkürzungen verwenden sollte. Jedes Mal, wenn Sie den Kontext wechseln, müssen Sie Ihr Gehirn anhalten, sich auf Ihr Ziel konzentrieren und auf die Aktion warten. Während das Drücken von F5 unendlich schneller geht.

Wenn Sie jetzt Vim, Emacs oder etwas anderes verwenden, das keine gut aussehenden Tasten hat, werden Sie sich auf das Drücken von Tasten konzentrieren. Sie haben eine Methode und werden schneller, weil es Routine ist.

Die Fehler werden ausführlicher mit einer Befehlszeilenschnittstelle dargestellt, die ich bevorzuge, und sie geben auch Feedback während der Kompilierung. Eine Sache, die ich an Visual Studio hasse, ist, dass die Standardeinstellung ein kleines Symbol ist, das angibt, dass eine Kompilierung durchgeführt wird. Dann wird eine Fehlerliste ausgegeben.

Bei einer schmalen Ansicht bleiben Sie bei der Breite von 80 Spalten, was die Lesbarkeit verbessert. Ich habe Code gesehen, der sich auf die Breite von 200 Spalten erstreckt. Mit der Codeanpassung auf 80 Spalten können 4/5 Fenster gleichzeitig geöffnet sein.

Mit einem CLI-Editor können Sie remote codieren, ohne dass eine langsame (im Vergleich zu Text) RDP-Sitzung für Ihr Visual Studio erforderlich ist. Sie könnten über eine GSM-Verbindung codieren.

Entwicklung der visuellen Form ist zum Kotzen. Ein Vorteil einer GUI-IDE ist, dass Sie Ihre Bildschirme schneller zeichnen können. Meiner Erfahrung nach ist es für einen Prototypen in Ordnung, aber häufig erzielen Sie bessere Ergebnisse, wenn Sie ihn manuell im Code ausführen. Der VS2012 Code Analyzer warnte mich heute Morgen nur vor über 200 Problemen mit Code, der von Visual Studio automatisch generiert wurde?!?!?

Phil Hannent
quelle
0

Ich denke, Ihre eigentliche Frage könnte lauten: "Gibt es Visual Studio-Alternativen, die unter Ubuntu ausgeführt werden, da dies nicht der Fall ist?"

MonoDevelop.

Es funktioniert, aber Sie werden es hassen, wenn Sie VS und alle Funktionen gewohnt sind.

Die Verwendung eines Texteditors bietet KEINEN Vorteil. Erinnerst du dich an das nette Ding namens Intellisense? Nicht geschehen (aber MonoDevelop hat so etwas). Hoffe das hilft.

Xavier J
quelle