Warum benutzen Programmierer Linux, wenn die meisten Leute Windows benutzen?

10 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich kann dir als Softwareentwickler nicht sagen ob und falls ja warum andere auf Linux schwören.

Bei mir ist es so, dass ich in der Arbeit an einem Windows 10-Rechner sitze und mit VS entwickel. Dafür werde ich bezahlt. Meine Bedenken bzgl. Windows 10 habe ich der Geschäftsführung mitgeteilt, sie wurden zur Kenntnis genommen und fertig. Ok, es ist ja auch nicht zwingend an mir, die DSGVO einzuhalten, da sollen sich meine Chefin und die Anwälte drum kümmern.

Privat allerdings mache ich diverse Spielchen nicht mehr mit, die Windows so treibt und das ist zu 100% unabhängig davon, ob die meisten Desktopsysteme mit Windows laufen oder nicht und man daher am ehesten für Windows entwickeln sollte oder nicht. Es geht um meinen Rechner, den ich privat verwende und da dulde ich diverse Geschichten nicht:

  • Datenschutz und -sicherheit sind unter Windows nicht gewährleistet. Irgendwelche Placeboeinstellungen in der Registry oder mit Third Party Tools helfen mir da nicht weiter.
  • Der Updateplan von Windows ist eine einzige Katastrophe, da es ja genau genommen keine Updates mehr gibt sondern jedes Mal komplette Upgrades, weshalb das auch immer eine Ewigkeit zum Laden dauert. Und tatsächlich dauerhaft ablehnen (z.B. weil Microsoft mal wieder ein "Update" versaubeutelt hat) kannst du dieses Chaos auch nicht. Dass Windows dann neu bootet, wann es ihm passt, ist da nur noch das Sahnehäubchen oben drauf. In der Arbeit (da, wo ich dafür bezahlt werde, mich mit so etwas herum zu schlagen) ist es mir relativ egal, aber privat gebe ich mir das keinesfalls.
  • Ich brauche auch keine zig verschiedenen Office Suiten. Mir genügt eine einzige, mit der ich vernünftig arbeiten kann. Und dass muss nicht zwingend Microsoft Office sein, ich kann auch mit LibreOffice umgehen.

Ganz generell habe ich mit Linux keine wirklichen Einschränkungen:

  • Entgegen der permanenten anderslautenden Kolportierung kann ich sehr wohl unter Linux wunderbar zocken.
  • Wenn ich privat irgendwelche Programme schreibe, dann sind die für mich. Entsprechend werden sie auch nur von mir verwendet und ich benötige nicht zwingend eine .exe. Ich komme auch mit .jar oder .sh zurecht kommen.
  • Sollte ich tatsächlich mal etwas für jemand anderen basteln, dann wird derjenige mit einem .jar Vorlieb nehmen müssen. Xamarin/Mono habe ich mir angeschaut und war alles andere als begeistert. Wer von mir ein Programm bekommt, kriegt es in Java, das ist dann für alle Plattformen passend. Wem ein .jar zu sperrig ist, braucht auch keine Programme von mir zu verwenden sondern kann in seiner Klickibunti-Maus-und-Menü-Legasthenie verbleiben.

Das sind einige (wenn auch nicht alle) Gründe, weswegen ich privat Linux verwende.

Woher ich das weiß:eigene Erfahrung – Beruf und privat
NicoCrafter 
Fragesteller
 25.10.2020, 21:32

Also würdest Du fürs Entwickeln von Software - Egal ob nur für windows oder auch Linux und co. .NET nicht empfehlen? Also eher Java oder C++ etc?

0
CSANecromancer  25.10.2020, 22:38
@NicoCrafter

Nein, das ist viel zu einfach gegriffen.

Für mich kommt es beim Entwickeln primär auf folgende Faktoren an:

  • Für wen ist das Programm? Ist es ein einfacher Benutzer, der eine setup.exe erwartet (das ist ja per se nichts schlimmes) oder kann der Kunde auch mit technisch etwas weiter gefassten Sachen (z.B. Services und deren manuelle Verwaltung) umgehen?
  • Für welche Plattform ist das Programm? Das beeinflusst natürlich ganz stark, welche Entwicklungswerkzeuge zum Einsatz kommen. Auf Windows 8+ ist das .net Framework eine Kernkomponente des Betriebssystems. Selbstverständlich bietet es sich dann an, auch damit und dafür zu entwickeln. Auf Linux müsste ich erst einmal schauen, was für Bibliotheken und Funktionalität ich benötige (Stichwort SDL). Wenn ich "nur" schnell etwas hinzurotzen brauche, dann kann ich das auch mit Python machen.

Was ist Sinn und Zweck des Programms, im wesentlichen: Ist es grafik- bzw. datenintensiv und/oder zeitkritisch? Je zeitkritischer, desto weniger kann ich mit Laufzeitumgebungen wie .net oder JRE arbeiten. und desto eher werde ich zu Objective C oder C++ mit Eclipse greifen.

Ein einfaches "ich programmiere für Windows also IMMER .net!" mag im Hobbybereich funktionieren, aber nicht im professionellen Bereich. Ob Visual Studio, Eclipse, NetBeans oder eine ganz eigene work chain mit Notepad++ und Make entscheidet sich von Projekt zu Projekt.

In der Arbeit verwende ich Windows 10, VS und C#, da das vom Arbeitgeber und den Projekten so vorgegeben ist. Manchmal kommt auch C++ zum Einsatz und natürlich jede Menge kleinere Scriptsprachen (u.a. JavaScript und ja, im Vergleich zu den anderen Sachen ist das für mich eine kleinere Scriptsprache).

Private arbeite ich mit NetBeans und Java, da ich dort am ehesten mit der plattformübergreifenden GUI-Entwicklung zurecht komme, ohne mir für jede Plattform eine eigene chain mit QT Designer frickeln zu müssen.

Wenn ich mir schnell etwas zusammen schustern muss ohne dass ich in irgendeiner Weise Wert auf Sauberkeit oder GUI legen muss, verwende ich auch mal Python mit PyCharm oder Lazarus.

1
NicoCrafter 
Fragesteller
 26.10.2020, 17:36
@CSANecromancer

Okay, ich hätte doch noch eine kleine Frage bezüglich Java und C++. Also mit C++ und Qt muss man mehr Arbeit für GUIs für die einzelnen OS aufwenden und mit Java geht das einfacher/allgemeiner? Und ich hab gehört, dass man mit Java für das gleiche mehr Zeilen code braucht als mit C++. Stimmt das? Dauert es dann auch länger etwas in Java zu Programmieren (Wenn man mal die GUI weglässt)?

0
CSANecromancer  26.10.2020, 20:42
@NicoCrafter

Hmmm... das ist wieder nicht ganz so einfach zu beantworten, aber ich will's versuchen.

Es geht nicht alleine um die Programmiersprachen sondern auch das Ganze "Drumherum" wie Framework und IDE. Was mich an Qt und dem Qt Designer ein wenig stört ist, dass ich zum Bauen der Oberfläche ein eigenständiges Programm habe und somit immer zwischen dem Qt Designer und meinem Editor hin- und herswitchen muss, wenn ich damit etwas bauen will. Welche konkrete Sprache ich dabei verwende, ist erst einmal egal. (Merke: Eine Programmiersprache ist einfach nur ein Werkzeug, nicht mehr, nicht weniger).

Ich könnte (rein theoretisch) den Qt Designer wohl auch in Eclipse so ein"basteln", dass er recht direkt zu bedienen ist. Aber ich bin nie dazu gekommen, das auszuprobieren, da ich vorher auf meiner Suche nach Werkzeugen, die mir gepasst haben, über NetBeans gestolpert bin. Und das hat einen visuellen Oberflächendesigner direkt integriert. Also brauchte ich nicht weiter suchen. Tatsächlich bin ich so eher nebenbei bei Java gelandet, weil NetBeans eben für Java ist.

Ich habe mir also damals für meinen Privatbereich nicht zwingend die Programmiersprache ausgesucht und dann IDE, Laufzeitumgebungen, Designer und alles dazu, sondern bin den umgekehrten Weg gegangen und habe geschaut, dass mir die IDE und sonstigen Werkzeuge möglichst gut gefallen und habe dann Wert auf Rahmenparameter gelegt. Die tatsächlich verwendete Sprache war mir völlig egal, das hätten auch Forth oder Rust werden können.

Ganz konkret zu deiner Frage: Persönlich finde ich schon, dass ich mit NetBeans viel schneller und vor allem bequemer GUIs hinbekomme, als mit dem Qt Designer. Aber wenn man vom Visual Studio kommt, dann hat auch NetBeans aufgrund von Java so die eine oder andere Tücke, mit der man sich auseinander setzen muss.

Ganz generell: Ja, in Java schreibt man mehr Zeilen Code als in C++. Dafür finde ich Java-Code auch deutlich einfacher zu lesen. Da wir aber hier nicht von (FIKTIV!) 10.000 Zeilen Java vs. 100 Zeilen C++ reden sondern von viel kleineren Größenordnungen, ist das tatsächlich ein Aspekt, über den ich noch nie großartig nachgedacht habe.

Lediglich Lazarus mit seinem Pascal kommt mir deswegen nicht mehr so häufig unter die Finger, da das dann wirklich viel lästige Tipparbeit ist, die mir auf den Zeiger geht. Aber bei Java vs. C++? Also wenn dich das kleine bisschen Mehr stört, das du in Java tippen musst, dann lern' einfach das 10-Finger-System, dann löst sich dieser Unterschied schon in Luft auf. :)

1

es gibt unterschiedliche Typen von Programmieren.

Die einen können ohne IDE (Integrierte Entwicklungsumgebung) nicht das kleinste Programm schreiben, andere bevorzugen Editor, Compiler, Debugger und Gehirn.

Programmierer erstellen (wenn auch manchmal nur im Kopf) einen Plan, wie sie ihr Programm auf mehrere Dateien verteilen und die dann z.B. mit include oder source oder ... zusammen fügen.
Wer das mit Windows und dessen Dateimanager oder anderen grafischen Tools macht, kann schon verzweifeln.
Quelldateien, Objektdateien, .... haben in Dateimanager alle den gleichen Namen, die Dateinamen-Erweiterungen sind dann weg, heißt durch irgendeine Bezeichnung ersetzt.

Anders der das mit Linux macht.
Der einfache Befehl ls zeigt alles so überschaubar an, das kein Zweifel besteht.

Hinz kommt, dass durch mehrere virtuelle Desktops eine viel bessere Übersicht besteht. Auf einem wird editiert, auf dem anderen compiliert und einen dritten Desktop getestet.
Wer das unter Windows machen muss, sollte sich vorher schon mal Handschellen bereitlegen, um nicht Körperverletzung am PC zu riskieren.

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995
Von Experte XGamer11208 bestätigt

Programmiere seit 30 Jahren ... wäre mir neu, dass die meisten Leute Linux benutzen!

Es gibt Sprachen, die unabhängig vom Betriebssystem funktionieren ... Wenn ich etwas in Java programmiere, dann läuft das auf jedem gängigen OS! Sogar auf dem Smartphone! ^^+gg

Woher ich das weiß:Hobby – Programmierer, EDV, ... seit den 80er :)

Der allergrößte Teil der Computer auf dieser Welt läuft nicht auf Windows.

Diese Dominanz gibt es nur bei einem einzigen (eher schrumpfenden) Teilmarkt: dem Desktop-Computer. Wer also für Desktop-Computer entwickelt, für den ist Windows als Zielsystem sicherlich wichtig.

Auf Mobilgeräten sieht es ganz anders aus: weder auf Android- noch auf iOS-Geräten läuft Windows (Windows Phone/Mobile sind bekanntlich kläglich abgesoffen). Im ganzen Embedded-Bereich ist Windows allenfalls eine Randerscheinung.

Aber noch viel wichtiger: auf den vielen, vielen, vielen Servern dieser Welt (mitunter als "die Cloud" betitelt) läuft eher selten Windows. Weder Google noch Amazon noch Facebook noch Instagram noch Netflix...wahrscheinlich auch Gutefrage betreiben ihre Systeme auf Windows. Warum sollten sie auch? Windows ist dort außerhalb einer kleinen Nische (vor allem "Corporate IT") völlig irrelevant.

NicoCrafter 
Fragesteller
 25.10.2020, 19:36

Danke für die Antwort! Ich meinte auch die Desktop Betriebssysteme. Also für Software Entwicklung für Desktop benutzt man Windows?. Und auf Mobile Geräten dann entweder Linux oder Mac OS? Und was ist dann mit Visual Studio und Xamarin, wo man crossplattform für mobile entwickeln kann? läuft doch auch am besten auf Windows.

0
alfredo153  25.10.2020, 19:45
@NicoCrafter

Wenn mein Zielsystem nur Windows ist, werde ich auf Windows entwickeln. Nicht weil das so toll ist, sondern weil die Entwicklungswerkzeuge von Microsoft nun mal perfekt darauf laufen und die lokalen Testzyklen damit kürzer sind. "Kreuzentwicklung" ist immer etwas mühsamer.

Natürlich gibt es Unternehmen und Entwickler, die mit Windows großgeworden sind und das eher verwenden, selbst wenn sie (auch) andere Zielsysteme haben. Ich kenne aber wenige - die meisten Werkzeuge für professionelle Entwicklung, die nicht MS-spezifisch sind, laufen auf Windows eher schlechter als auf unixartigen Betriebssystemen wie Linux oder MacOS.

Was Xamarin betrifft: das ist ein kleines Nischenprodukt, auch wenn es die glühenden Fans in der MS-Blase anders sehen. Aber so eine Blase sieht von innen immer ganz anders aus als von außen...ich erinnere mich noch sehr gut an die flammenden Plädoyers, dass Windows Phone dank UWP bald die Weltherrschaft übernehmen würde. Ist nicht gar so lange her. Derzeit wird ja auch (wieder mal) die Weltherrschaft von .net (Core!) propagiert, mit bislang überschaubarem Erfolg.

2
NicoCrafter 
Fragesteller
 25.10.2020, 20:06
@alfredo153

Also Wenn nur für Windows, dann auf Windows, und wenn auf Linux oder mehreren Plattformen dann besser auf Linux? Was würde man nehmen, wenn man mit Unity arbeiten würde? und wenn man doch gleichzeitig für IOS und Android entwickeln möchte ist da Xamarin nicht die beste lösung? Sorry, wenn ich zu viele Fragen stelle XD, aber ich möchte wissen, ob es sich lohnen würde auf Linux ummzusteigen, wenn ich Hauptsächlich mit Unity und Software für Windows entwickeln würde

0
Von Experte PeterP58 bestätigt

Weil man auch auf Linux/GNU Programme entwickeln kann, die unter Windows oder MacOS laufen?

Außerdem programmieren so viele garnicht auf Linux/GNU?

Einige mögen einfach das Betriebssystem und die Oberfläche und Freiheiten, die das ganze bietet!

Und mit z.B. WINE laufen auch Windows-Programme und Spiele mit geringem Leistungsverlust.

NicoCrafter 
Fragesteller
 25.10.2020, 19:44

Danke, das mit Wine ist natürlich ein guter Punkt. Aber wenn man für Windows entwickelt, ist es nicht Logischer auch auf Windows zu Entwickeln, um die Programme besser Testen zu können? Oder reicht da eine VM für aus? Und Welche IDEs oder Frameworks würde man dann auf Linux für die Windows oder Crossplatform Entwicklung benutzen?

0
Waldelb3  25.10.2020, 19:53
@NicoCrafter

Also wenn du für Windows entwickeln willst, dann ist Windows zum entwickeln wahrscheinlich keine so schlechte Wahl. Aber wenn du irgendwas anderes machen willst (Server, Cloud, Embedded, Machine Learning, etc.) dann ist Linux besser.

1