3 Punkte von GN⁺ 2024-02-11 | 1 Kommentare | Auf WhatsApp teilen

Ein Plädoyer für schlanke Software im Jahr 2024

  • Das Anwachsen von Software, also sogenannter „Bloat“, ist weiterhin eine der größten Schwächen von Software.
  • Die Entwicklung schlanker Software ist wichtig, um die User Experience zu verbessern, Sicherheitsrisiken zu verringern und die Effizienz von Systemen zu erhöhen.
  • Entwickler sollten Software so entwerfen, dass sie mit weniger Code mehr Funktionen bietet.

Meinung von GN⁺

  • Das Phänomen des „Bloat“ bei Software kann zu Leistungsabfällen und Sicherheitslücken in Systemen führen; daher sollten sich Entwickler auf Code-Optimierung und effizientes Design konzentrieren.
  • Da Nutzer schnellere und sicherere Software-Erlebnisse wünschen, kann schlanke Software auf dem Markt wettbewerbsfähig sein.
  • Dieser Artikel kann Entwicklern helfen, aktuelle Trends in der Softwareentwicklung zu überdenken, und sie motivieren, bessere Software zu entwickeln.

1 Kommentare

 
GN⁺ 2024-02-11
Hacker-News-Kommentar
  • In Vernor Vinges Roman „A Deepness in the Sky“ hat sich die Menschheit bereits zwischen den Sternen ausgebreitet, obwohl sie noch keine Technologie besitzt, die schneller als das Licht ist. Die Raumschiffe sind sehr alt, und die Technik verschiedenster Systeme und Zivilisationen ist miteinander vermischt.

    • Computersysteme haben sich über lange Zeit weiterentwickelt, sodass fast niemand den Großteil des Codes wirklich versteht. Die Menschen benutzen den Code einfach und bauen Neues darauf auf.
    • Eine Figur ist schon sehr lange unterwegs und befindet sich im Stasiszustand, weshalb sie vermutlich zu den ältesten Menschen überhaupt gehört. Er war in der Vergangenheit Systemingenieur und kennt die Funktionsweise und Schwachstellen der damaligen Systeme, was ihm in der Zukunft einen großen Vorteil verschafft, wenn andere viele Schichten darauf aufgebaut haben und nicht genau wissen, was sie eigentlich tun.
    • Ich denke, Vernor hat da einen wichtigen Punkt.
  • Die meisten Bibliotheken bei npm haben unnötig viele Funktionen. Die Autoren kennen kein gutes Design, und jede Bibliothek versucht, alles zu machen.

    • Zum Beispiel enthält eine Bibliothek zur Umwandlung von Zeichenkodierungen gleich auch Funktionen zum Laden und Speichern von Dateien, zum Herunterladen über das Internet, ein Kommandozeilen-Tool und mehr. Eine Bibliothek sollte genau eine Sache tun.
    • Auch bei Rust scheint die Lage nicht besser zu sein. Wenn man an der Rust-Dokumentation mitarbeiten will, muss man ungefähr 1000 Crates installieren.
    • Das Problem ist nicht die Sprache, sondern dass jeder Bibliotheken veröffentlichen kann und das auch tatsächlich tut. Menschen, die „einfach etwas erledigen wollen“, wählen die Bibliothek mit den meisten Funktionen und verlangen noch mehr Features, weil sie zu bequem sind, ein paar Zeilen Code zu schreiben, die sich auch außerhalb der Bibliothek lösen ließen.
    • Ich weiß nicht, wie man dieses Problem lösen sollte. Eine Idee wäre, eine Gruppe zu gründen, die sich für „wenige Abhängigkeiten“ einsetzt, Menschen dazu zu ermutigen, dieses Abzeichen an ihre Bibliotheken zu hängen, und andere dazu zu bringen, beim Auswählen von Bibliotheken gezielt nach diesem Abzeichen zu suchen.
  • In Antoine de Saint-Exupérys „Terre des Hommes“ wird gefragt, ob man beim Anblick eines modernen Flugzeugs, wenn man die Linie seiner jährlichen Weiterentwicklung verfolgt, jemals an alles gedacht hat, was der Mensch erschafft.

    • Alle industriellen Anstrengungen, Berechnungen, Entwürfe und Nachtschichten über Blaupausen konzentrieren sich letztlich darauf, einen Gegenstand hervorzubringen, der das letztgültige Prinzip der Einfachheit in sich trägt.
    • Damit die Kurve eines Möbelstücks, der Kiel eines Schiffs oder der Rumpf eines Flugzeugs allmählich den grundlegenden reinen Kurven einer menschlichen Brust oder Schulter ähnelt, müssen Generationen von Handwerkern experimentieren.
    • Perfektion ist nicht dann erreicht, wenn es nichts mehr hinzuzufügen gibt, sondern wenn es nichts mehr wegzunehmen gibt.
  • Die Menge an Code, die wir heute verwenden, ist enorm. Zum Beispiel können zum Öffnen eines Garagentors mehr als 50 Millionen Zeilen aktiven Codes nötig sein.

    • Obwohl so viel Code ausgeführt wird, ist es sehr wahrscheinlich, dass der Großteil davon nie gründlich geprüft wurde.
    • Und trotzdem kehrt man wieder zum Alltag zurück und installiert npm-Abhängigkeiten.
  • Software gilt als gefährlich, deshalb wird den Menschen geraten, sie nicht selbst auszuführen, sondern einem „X as a Service“-Anbieter oder der „Cloud“ zu überlassen.

    • Das ist in etwa so, als würde man sagen, Autos brennen leicht, deshalb solle man das Fahren einem Experten überlassen, der von Fachleuten und professionellen Feuerwehrleuten begleitet wird.
  • Dass Software nicht kompakter wird, liegt daran, dass das Zeit, Können und teure Fachkräfte erfordert.

    • Als unabhängiger Entwickler kann jemand, der letztes Jahr node.js gelernt hat, node.js, Container, verschiedene gehostete AWS-Datenbankdienste, Lambda-Dienste, Objektspeicher, Cloudflare, yaml, react, vite und Ähnliches kombinieren und an einem Tag eine angreifbare Web-App bauen.
    • Schnelle Software mit geringen Wartungskosten zu schreiben, die dabei auch noch profitabel ist, ist schwierig.
  • Früher wollte man vom System bereitgestellte Hooks standardisieren, sodass alle Entwickler sie für Interfaces und Ähnliches verwenden und sich die eigentliche Arbeit der Entwickler auf die Programmlogik konzentrieren würde.

    • Diese Systemaufrufe sollten auch dann dieselbe Aufgabe erfüllen, wenn sich der Code ändert, und dafür sorgen, dass alter Code problemlos kompiliert und ausgeführt werden kann, während neue Software mehr Funktionen erhält.
    • Dieser Traum brach schnell zusammen (zum Beispiel durch DLL-Probleme), und ein Großteil des Paketmanagements konzentriert sich darauf, die richtigen Bibliotheken verfügbar zu machen.
    • Inzwischen gibt es viel gesammelte Erfahrung, aber es bleibt die Frage, ob dieser Traum überhaupt realisierbar war oder ob wir uns in der heutigen chaotischen Lage tatsächlich auf schnelle, schlanke, stabile und besser abgesicherte Software zubewegen.
  • Eine Meinung zu Rust: Selbst wenn Rust im Vergleich zu C++ 70 % weniger Schwachstellen pro Zeile hätte, könnte die absolute Zahl der Schwachstellen trotzdem höher sein, wenn man in Rust Hunderte Pakete hineinzieht und der Codeumfang zehnmal so groß ist.

  • Wenn ich vor 20 Jahren gewusst hätte, dass Software heute so aussehen würde, hätte ich mich nicht dafür entschieden, Programmierer zu werden. Alles ist riesig, Hardware und Software liefern sich einen endlosen Wettlauf, und nichts wird besser, einfacher oder schlichter.

  • Sobald man auf den Link klickt, erscheinen ein CTA-Banner, Google-Werbung und ein Cookie-Banner. Sobald man das Cookie-Banner schließt, erscheint noch eine weitere Google-Anzeige, die einem beim Scrollen folgt. Während man den Artikel liest, sieht man mindestens drei weitere Werbeanzeigen.

    • Unter solchen Umständen fällt es schwer, den Inhalt ernst zu nehmen.