Ansicht umschalten
Avatar von SheepRuleWorld
  • SheepRuleWorld

mehr als 1000 Beiträge seit 23.05.2021

Die Komplexität macht Microsoft zu schaffen ...

Was sehe ich bei Microsoft? Mit der Zeit in Funktionalität extrem aufgeblähte Dienste / Systeme, die immer komplexere Aufgaben zu übernehmen hatten.

Statistisch gesehen (laut IBM) findet sich in 1 Milliarden Zeilen Code 1 million Bugs (1:1000). Und das fast unabhängig von den verwendeten (zum Zeitpunkt der damaligen Studie meist noch imperativen, OO) Programmiersprachen. Funktionale Programmiersprachen haben da (by design) übrigens erheblich weniger Fehler / Probleme. Zudem sind die - auch wieder by design - formal verifizierbar. Siehe F*, OCaml, Isabelle/HOL, Coq, MirageOS ... neuerdings auch Dart2.

Aber das ist nur die halbe Wahrheit. Statistisch nimmt die Komplexität auch mit der Größe der Programme quadratisch mit LoC, also dem Kopplungsgrad der Funktionen untereinander, zu. Die Fehlersuche wird also - zunehmend mit der Größe des Monolithen - immer komplizierter. Siehe die Emotet Einfallstore (zumeist Sicherheitslücken in Exchange), seit 2014 bekannt und bis heute sind viele davon immer noch offen und von Ransomware genutzt. Es werden zudem ständig neue Sicherheitsprobleme in Exchange entdeckt.

Und hier steht der Elefant im Raum: Microsoft kann nicht mehr zurück, ohne massivst Kompatibilität zu brechen.

Das bedeutet: Ein funktionales Rewrite aller Dienste wäre notwendig, dafür aber fehlt nicht unbedingt das Geld, wohl aber das (qualifizierte) Personal und der politische Wille. Motto der Amis: Profits, Profits, Profits!

Was sehe ich bei Linux? Kleine, oft unter dem Aspekt der Sicherheit programmierte Dienste, alle sauber voneinander entkoppelt. Die Kopplung der Dienste erfolgt typischerweise mit gut lesbaren und verstehbaren Python - Skripten. Python hat sich zur "glue language" in Linux / FreeBSD / NetBSD / OpenBSD - Systemen entwickelt. Es gibt quasi nichts, was man mit den mächtigen Python Libraries nicht lösen könnte. Als untypisierte, interpretierte Programmiersprache kennt Python gleich mehrere Klassen von Sicherproblemen nicht. Python ist aber auch typisierbar und zudem mit Cython nach C übersetzbar. Die Zeiten, daß Python mit "langsam" assoziiert wurde, sind lange vorbei.

Sicherlich hat Linux auch Bugs, aber dank Open Souce und dem Linus - Prinzip "Given enough eyeballs, all bugs are shallow!" bleibt kein Bug länger verborgen. Patches sind meist Stunden nach Entdeckung verfügbar.

Das Fenster zwischen Entdeckung und Beseitigung eines Bugs ist - dank der Modularität - extrem kurz. Ganz im Gegensatz zu Microsoft, wo jeder Patch wegen seiner möglichen Querschläger nochmal einem intensiven Test unterzogen werden muß. Und das dauert mitunter mehrere Monate. In heutigen Zeiten ist das so nicht mehr gangbar.

Es möge nun jeder selber seine Schlüsse ziehen! ;-)

Bewerten
- +
Ansicht umschalten