andy_m4
Admiral
- Registriert
- Aug. 2015
- Beiträge
- 9.769
Ja. Verstehe.Deinorius schrieb:Mich zipft diese Diskussion einfach an und zwar primär, weil ich als Laie beide Seiten anhöre/durchlese und letztendlich nicht weiß, ob die Argumente der einen und anderen Seite überhaupt stimmen und sich gelegentlich bis öfter widersprechen.
Und ich finde gut, das Du Dich da so in der Weise äußerst.
Das macht es leichter Dein Posting einzusortieren.
Die Frage ist einfacher gestellt als beantwortet. Ich versuchs mal - mit Hilfe von Vereinfachungen - trotzdem verständlich zu machen.Deinorius schrieb:Wie definiert man eine Software als "zu komplex"?
Eine simple Metrix um Komplexität zumindest grob(!!!) zu erfassen, kann der Umfang des Quelltextes sein. Und ja. Das ist unvollkommen und hat auch seine Lücken und ist auch immer im Vergleich schwierig.
Aber generell und grob kann man sagen:
Umso größer der Codeumfang, umso höher die Anzahl der (potentiellen) Bugs. Und da so eine Codezeile nicht nur für sich steht, sondern ja auch immer potentiell mit allem anderen interagiert, steigt die Zahl der Bugs mit dem Codeumfang auch nicht linear, sondern eher exponentiell.
Und genau das ist ja auch, was sich so in der Anzahl Bug-Reports zu verschiedenen Projekten grob widerspiegelt. Ist also nicht nur ein reines "das hab ich mir jetzt mal so überlegt".
Es macht daher Sinn die Komplexität auf ein notwendigen Umfang zu reduzieren.
(Randbemerkung:
Modularität kann helfen, damit umzugehen. Beseitigt aber nicht unbedingt das Problem)
Und klar. Wenn Software mehr kann, wird sie natürlich auch tendenziell komplexer.
Die Frage nach dem "zu komplex" stellt sich dann eigentlich erst, wenn man auf der anderen Seite schaut, was man so braucht.
Um mal bei dem Office-Beispiel zu bleiben:
Wenn ich nur 20% der Funktionalitäten brauche und da stecken aber die restlichen 80% (die mir potentiell ja Probleme bereiten können selbst wenn ich sie nicht nutze) mit drin, dann ist das aus der Sicht "zu komplex".
Und so ähnlich kann man den Blick natürlich auch auf systemd werfen. Brauch ich die Funktionalitäten die das Ding bietet? Wie ist es sonst das Handling.
Ich vergleiche das jetzt mal exemplarisch mit FreeBSDs rc. Ganz einfach, weil ich das kenne und daher dazu auch was sagen kann.
Und das ist im wesentlichen ein Shellskript. Und selbst wenn man die ausführende Shell noch als Bestandteil sehen würde, ist summa-summarum der Umfang überschaubar, wenn man jetzt mal bei systemd guckt.
Also jetzt nicht das ganze systemd, sondern nur mal ganz rudimentären systemd-stuff:
https://github.com/systemd/systemd/tree/main/src/basic
Selbst der liegt im Umfang schon deutlichst(!) über Shell+rc-Skript zusammen. Und da bist du immer noch weit entfernt auch nur ein minimales Init mit systemd gebaut zu haben, selbst wenn Du es entsprechend kompilierst.
Und klar kann man einwenden: "Voll unfair. Selbst ein abgespecktes systemd macht mehr."
Aber genau das ist der Punkt. Brauche ich dieses "mehr"? Und rechtfertigt dieses "mehr können" auch den gesteigerten Codeumfang (oder lässt sich das ggf. auch mit weniger Aufwand realisieren)?
Hinzu kommen noch Nebenaspekte. Dadurch, das das rc im Wesentlichen Shell-Skripte sind, lässt es sich auch schneller mal fixen, wenns dann doch mal ein Problem gibt. Und Du musst nix kompilieren. Und ein Shell-Skript erschließt sich dem Admin auch ohne das der großartig C programmieren können muss.
Ich möchte an der Stelle auch gar nicht irgendwie was in besser/schlechter werten oder so. Und das ist auch eine vereinfachte Sicht auf die Dinge.
Es ging nur darum, klarzumachen, das sich die geäußerte Kritik schon (technisch) verargumentieren lässt und es nicht (immer nur) reines Hate-Speech ist