PascalDragon hat geschrieben: Do 25. Apr 2024, 22:28
Es ist unfair ein „minimales, aber funktionales Linux System” mit der Standardinstallation von Windows zu vergleichen, da Windows vieles jenseits von „minimal” mitbringt (ja, auch durchaus einiges an Müll).
Man muss vor allem dazu sagen, Windows ist nicht ein Betriebsystem sondern viele. Windows besteht allein schon aus zwei Windows versionen, 64 bit (System32) und 32 bit (SysWoW64). Da werden einmal praktisch alle SystemAPIs und viele hintergrundysteme doppelt mitgeliefert. Die kommen dann die Kompatibilitätsmodi, bei denen dann Spezielle Versionen von API calls für alte Windows versionen.
Für den Nutzer ist das natürlich absolut top, ich kann heute noch alte Software für Windows 95 laufen lassen und muss mich um nix kümmern. Es bläht alles aber nicht nur auf, sondern hat man dann immer wieder Probleme mit Deprecated APIs die z.B. von manchen Bibliotheken oder alten Code Bases verwendet werden, die dann mit neueren APIs nicht mehr Kompatibel sind (MDI ist hier ein schönes Beispiel).
Windows hat definitiv seine Stärken, und für den Casual Nutzer machen viele der Entscheidungen Sinn. Für den Entwickler gibts aber sehr oft Kopfschmerzen
KodeZwerg hat geschrieben: Fr 26. Apr 2024, 00:12
Ich werde hier bestimmt keinen Kampf beginnen und die Vorteile aufzählen einer ausgereiften API gegenüber einem (Hobby) Betriebssystem das eben solches nicht hat.
Die Linux API besteht im Grunde aus zwei Teilen, dem C Standard und dem POSIX Standard. Der C Standard wird von der ISO geschrieben, der POSIX Standard von der IEEE. Bei beiden werden Expertengremium einberufen um die Dokumente in festen Revisionen und Meetings zu entwickeln deren Zusammenfassungen sowie alle Diskissionen, Entscheidungen und Rationale veröffentlicht werden. Ich kann mir für jede Funktion der API ganz genau anschauen wer die Idee eingebracht hat, mit welcher Begründung, durch welche Revisionen sie gegangen ist und warum sie Angenommen wurde. Das würde ich nicht als Hobbyprojekt zu bezeichnen, vor allem da in den Gremien viele Unternehmen wie Microsoft drinsitzen.
Microsoft auf der anderen Seite macht einfach hinter verschlossenen Türen was sie wollen und manchmal hat man Glück das sie sich in einem Pressestatement 4 Jahre später erklären.
Ich hab sehr lange auf Windows entwickelt. Ich hab auch einige Jahre auf MacOS entwickelt, und ich hab sehr lange auf Linux entwickelt, sogar auf Kernel level. Und POSIX Entwicklung auf MacOS und Linux gewinnt Hands Down immer über Windows, da es deutlich einfacher ist an alle Infromationen zu kommen was welche Funktion macht, warum sie existiert und wie sie einzusetzen ist.
af0815 hat geschrieben: Fr 26. Apr 2024, 07:35
Man müsst eigenlich von Windows x, Debian x, Ubuntu x, Mint x, Suse x, Android x, MacOs,x,....
Debian, Ubuntu, Mint und Suse sind alles Linux Distributionen die auf GNU software und systemd setzen. Der Unterschied zwischen den Systemen ist geringer als der Zwischen Windows 7 und Windows 11. Android im gegensatz dazu ist seine ganz eigene Welt das stimmt schon.
Aber selbst mit Android, MacOS und den GNU/Linux Distros hat man immer noch die POSIX API und die LibC. Wenn du z.B. einen Multithreaded Webserver bauen willst, nur mit Raw C und den POSIX APIs, ist die Codebase absolut identisch. Windows nicht...
Auch die Grafischen Bibliotheken sehen vielleicht Komplizierter aus, sind im Konzeptionell aber viel einfacher. Unter Linux ists ganz einfach, alle Programme sind gleich, und GUI anwendungen müssen halt irgendwie was auf den Bildschirm Zeichnen und benutzen dafür normalerweise eine Bibliothek. Dafür gibt es Cross Plattform Bibliotheken. Wenn du deine App mit QT schreibst läuft sie auf allen Betriebsystem ziemlich identisch.
Wenn du von Windows kommst, sind GUI anwendungen Win32 Form anwendungen die die spezielle Win32 API benutzen mit der du auf Linux und MacOS verloren hast. MacOS hat Cocoa was das selbe spiel ist.
Wobei natürlich der Hauptpunkt bei Linux ist normalerweise das Tooling. Ich habe Jahre lang mit tmux, vim und command line debugger entwickelt, was bedeutet hat ich konnte auf jedem GNU system (also Linux ohne Android dafür aber plus MacOS) entwickeln ohne zusatzsoftware installieren zu müssen. Unter Windows sind IDEs zwangsläufig notwendig. Sogar wenn man Kommandozeilenentwicklung machen will muss man sich oft VisualStudio runter laden, da viele der gängigen Entwickler tools nicht eigenständig bereitgestellt werden, sonder über Visual Studios Entwicklungsshell bereitgestellt werden.
Auf meinem Windows ist Visual Studio ein must have, ohne das ich auch nur ein einziges mal darin Code bearbeitet habe.