Bestes Betriebssystem für Programmierung?
Ich will mir ein Laptop kaufen. Was ist eurer Meinung nach das beste Betriebssystem zum Arbeiten und zum Programmieren.
12 Antworten
Hier ein Tip von mir:
Möchte man in C++ programmieren empfehle ich den Qt-Creator. Damit kann man C++ Programme programmieren ohne den Quellcode ändern zu müssen beim Portieren. Das gibt es für Windows, Mac und Linux. Dazu wird die plattformunabhängige Qt-Klassenbiliothek verwendet. Das ganze kann man sowohl unter einer kostenlosen Open Source Lizenz (GNU GPL, GNU LPGL) oder unter einer kostenpflichtigen propritären Lizenz lizenzieren. Der Funktionsumfang ist bei beiden Lizenzen identisch. Hier die benötigten Downloads:
für Windows:
- Zuerst muss man die GCC Compiler installieren: Builds/mingw-builds/installer/mingw-w64-install.exe/download Das enthält die 32bit und die 64bit Version.
- Qt-Creator: https://www.qt.io/download Scrolle herunter und gehe auf Download Qt for open source use
- Qt Installer Framework, damit kann man nachdem man sein Projekt kompiliert hat das in ein Installationspaket (setup.exe) verpacken: https://download.qt.io/official_releases/qt-installer-framework/4.5.2/QtInstallerFramework-windows-x64-4.5.2.exe
für Mac:
- Zuerst installiert man sich die GCC Compiler. Dazu einfach die Xcode Command Line Tools installieren.
- Qt-Creator: https://www.qt.io/download Scrolle herunter und gehe auf Download Qt for open source use
- Qt Installer Framework, damit kann man nachdem man sein Projekt kompiliert hat das in ein DMB-Paket verpacken: https://download.qt.io/official_releases/qt-installer-framework/4.5.2/QtInstallerFramework-macOS-x64-4.5.2.dmg
Linux-Nutzer installieren sich die GCC Compiler und den Qt-Creator über die Paketverwaltung der jeweiligen Distro. Das ist die Open Source Lizenz. Das Qt Installer Framework gibt es nicht für Linux, dort erstellt man mit den Bordmitteln je nach Distro DEB oder RPM Installationspakete. Das gilt auch für den Raspberry Pi unter Raspberry Pi OS.
Die Zukunft ist die indem man von Anfang an plattformunabhängig programmiert. Damit hat man auch die besten beruflichen Chancen.
Hier einige Beispiele was mit dem Qt-Creator programmiert wurde. Damit war es dann auch für die Programmierer leicht das für Windows, Mac und Linux anzubieten weil man beim Portieren nicht den Quellcode ändern muss.
- VLC Player
- SMPlayer
- Audacity
- Google Earth
- Spotify Client
- Skype
- Microsoft Teams
- Discord
- FreeCAD
- Blender 3D
Ich würde das dann so machen:
Windows und eine Linux-Distro (z.B. Linux Mint) auf dem PC/Laptop installieren und den Qt-Creator auf beiden Systemen. Dann können sie ihre Programme für beide Systeme anbieten.
Zu MacOS und BSD kann ich nichts sagen, das habe ich noch nie genutzt.
Was Linux vs Windows angeht: Ganz klar Linux. Windows kann da nicht ansatzweise mithalten, auch nicht mit WSL. Die einzige Ausnahme wäre, wenn du Software spezifisch für Windows schreiben willst, dann solltest du natürlich Windows nutzen. Würde ich allerdings nicht empfehlen, wenn dir deine geistige Gesundheit am Herzen liegt.
Das Problem ist: Was willst du programmieren?
Davon hängt immens die Wahl des Betriebssystems ab. Beispiele:
- Willst du eine Windows-native App schreiben -> das auf Linux programmieren wäre unnötig, da du es eh testen musst und dafür dann Windows brauchst.
- Willst du eine Web-Anwendung auf einem Server programmieren -> Windows steht dir dabei nur im Weg - unter Linux ist es deutlich einfacher, einen lokalen Webserver zum Testen zu betreiben.
Also erste Überlegung ist: Was willst du programmieren? Danach schaut man, was da am besten passt.
Ich denke aber, dass Linux die beste Wahl sein wird, wenn du nicht gerade eine Windows- oder macOS-native App schreiben willst. Hier würde ich Linux Mint, Ubuntu oder Fedora zum Entwickeln nutzen. Gerade die letzten beiden haben viele Programmier-Bibliotheken und halten diese auch recht aktuell. V.a. unter Fedora.
Was willst du denn Programmieren?
(Grob zusammengefasst + Eigene Erfahrung)
- MAC → Gut für Apple Software + Websites
- Linux → Websites + Linux Software
- Windows → Gut für Windows Software, wie auch Linux Software (Dank WSL) + Android (Dank WSA) + Websites
- Android → Naja, sitzt in Bus und Bahn, dann zum Probieren, aber sonst eher NEIN.
während der Entwicklung (Ausnahme GUI), reicht WSL total aus
Dem kann ich einfach nicht zustimmen. Wie gesagt, ich nutze Windows+WSL täglich zum Entwickeln, und es ist einfach ein einziger Krampf, weil nichts richtig funktioniert. Ständig gibt es irgendwelche Probleme, die du mit einer richtigen Distribution nicht hättest. Das fängt mit falschen Zeilenendungen an, geht mit ssh-Problemen und inkompatiblen Schlüsseln weiter, und hört irgendwo mit einer völlig verbuggten GUI auf, wo dein Cursor auf eine Weise durch die Gegen springt, die geeignet wäre, davon Epilepsie zu bekommen, und wo du auf Knöpfe drücken kannst ohne das was passiert. Dazwischen sind natürlich noch riesige Mengen weiterer Bullshit, den man sich auch einfach sparen kann. Von dem Mangel an Integration mit dem restlichen System will ich gar nicht anfangen zu reden. WSL ist mit einer richtigen Distribution überhaupt nicht zu vergleichen, und taugt höchstens als einfache Möglichkeit ein paar Linux-Werkzeuge zu installieren.
Es kommt halt auch drauf an, was genau du machen willst. Ein Skript, das nicht mit dem Rest vom System interagieren soll, kann ich auch in WSL schreiben und dann ausführen. Da merkt man den Unterschied nicht. Ist halt im Endeffekt eine Linux-VM. Mein Problem mit WSL ist die Integration in Windows. Das ist die Stelle, wo plötzlich alles verbuggt ist.
Es geht mir nicht darum, wer "Schuld" ist, sondern es geht mir darum, dass das ein kompletter Krampf ist, das zu benutzen.
Also ich klone (mit dem Schlüssel, den ich mir in WSL erstellt habe) ein repo von git. Auf das Repo kann ich mit Eclipse nicht zugreifen, weil der Ordner in meinem Home-Directory in WSL ist. Also kopiere ich den Ordner irgendwo nach C://. Jetzt importiere ich das Projekt mit Eclipse. Geht nicht, weil Eclipse keinen Zugriff auf meinen SSH-Key hat.
Also generiere ich mir einen zweiten Key mit Putty. Den muss ich natürlich manuell nochmal in Git hinzufügen, und ich muss Eclipse manuell konfigurieren, dass es den nutzt (In Linux würde das automatisch gehen). Jetzt kann ich aber endlich mein Repo importieren.
Ich drücke ein paar Knöpfe, und will jetzt mit WSL nochmal schauen, was verändert wurde. Ich mache also einen git-diff. Der zeigt mir jede einzelne einzelne Zeile in jeder Datei an, weil überall die Zeilenenden verändert wurden.
Völlig unbrauchbar.
Hmm ... Naja, gut. Das kann ich so nicht nachvollziehen, da ich nicht WSL für genau diesen Einsatz verwende. Wenn ich mit Git arbeite, dann nutze ich die Windows CMD. Genauso für SSH und andere Dinge. Ich sehe den Sinn nicht, dass man dafür die Linux CMD benutzt, wenn Windows das auch kann
Der Sinn ist, dass ich in WSL alles zusammen habe, und tools viel einfacher zu installieren sind. Ich habe da zsh, was um Größenordnungen besser als CMD ist, ich habe eine vernünftige History, ich habe fzf, vim, bat, ssh, ich kann mir da meine Keys generieren, etc. Wenn ich mir Dateien anschaue, habe ich code-highlighting, egal welche Datei, egal womit, etc. Ich kann grep nutzen, und so weiter. Es ist halt ein kleines bisschen so, als ob man Linux nutzen würde. Mit dem kleinen Problem, dass, sobald ich mit dem Rest des Systems interagiere, nichts so funktioniert, wie es funktionieren sollte.
Klar könnte ich auch die anderen Windows-Tools nutzen. Aber dann nutze ich eben wieder Windows. Da brauche ich für jeden Scheiß ein eigenes Programm mit eigener GUI, muss anfangen den Pfad manuell für alles mögliche anzupassen, habe keine vernünftigen Logs, muss mich manuell durch Installer und irgendwelche Updates klicken, etc. Das macht die Sache halt auch nicht besser.
Im Endeffekt brauche ich auf Windows regelmäßig mehrere Stunden für etwas, was in Linux in wenigen Sekunden möglich wäre. Ein mal habe ich sogar mehrere Tage gebraucht.
Naja, gut. Dann keine Chance. Dann musst du damit leben. Ich glaube auch, dass WSL nicht dafür gemacht ist, wie du es benutzt ... Dadurch hast du dann auch diese Probleme. Aber allgemein für die Frage zum Programmieren, eignet sich die WSL gut. Man nutzt die ja dann eher zum testen
Ich habe halt auch Probleme, wenn ich es auf Windows-Art benutze. Damit werden die Probleme eigentlich nur noch schlimmer. Probiere mal, eine Bibliothek zu compilieren und zu installieren. Damit bist du deutlich länger beschäftigt, als einfach kurz apt install (bzw. pacman -S oder was auch immer), oder im schlimmsten Fall make && make install zu tippen.
Eine IDE habe ich auch. Mein Punkt ist, dass das einrichten vor dem Compilieren deutlich länger dauert, als einfach ein Paket zu installieren, oder make zu nutzen. Da musst du dich erstmal durch irgendwelche dummen Menüs klicken. Und funktionieren tut das danach auch nur, wenn du Glück hast. Und wenn es nicht funktioniert, kannst du dich mit nichtssagenden Fehlermeldungen rumschlagen. Fehlermeldungen bei Windows sind sowieso der größte Witz überhaupt.
Naja, da kann ich nicht mitreden. In C# starte ich das Projekt, Stelle die Bibliotheken wieder her und drücke bauen... Wenn die Open source software gut ist, lässt sie sich auch direkt bauen. Wenn nicht, wurde nicht alles bereitgestellt, um möglicherweise Dinge von der closed source version zu verstecken
Die folgenden gängigen sind zu empfehlen.
- Linux: Linux ist ein kostenloses und quelloffenes Betriebssystem. Es bietet viele Tools, Bibliotheken und Compiler, die für Programmierungszwecke verwendet werden können. Es ist auch leicht anpassbar und stabil.
- MacOS: MacOS ist ein proprietäres Betriebssystem von Apple, das auf UNIX basiert, da es eine benutzerfreundliche Oberfläche, eine integrierte Terminalanwendung und viele Entwicklertools bietet.
- Windows: Windows ist ein weit verbreitetes Betriebssystem, weil es eine breite Drittanbieter-Software unterstützt.
Wählen nach deinen Wünschen
Nein. Einfach nein. WSL ist ein großer Haufen Müll, und nicht einmal im Ansatz mit einer richtigen Linux-Distribution zu vergleichen. Und bevor wir uns falsch verstehen: Ich nutze WSL jeden Tag zum Arbeiten.