Wirthsches Gesetz


#1

Vor einiger Zeit schrieb ich Klemens eine Mail und bat ihn um seine Meinung zum Wirthsches Gesetz. Er machte mich freundlicherweise darauf aufmerksam, dass es ja noch das Forum gibt und vielleicht nicht nur er dazu etwas beizutragen hat. Nun also zur Sache:
Niklaus Wirth ist Träger des Turing Awards und ist u.a. durch sein Buch „Algorithmen und Datenstrukturen“ und als Schöpfer und Implementierer der Programmiersprachen Pascal und Oberon bekannt.
Was ihm zudem weiter anhaftet ist seine Erweiterung des Mooreschen Gesetzes:

“Die Hardware wurde und wird mit der Zeit spürbar schneller. Diese
rapide Entwicklung wird wiederum durch das mooresche Gesetz beschrieben.
Wirths Gesetz fügt dem hinzu, dass die schnellere Hardware dennoch keine
schnellere Abarbeitung von Aufgaben bewirkt, da gleichzeitig die durch
die gestiegenen Anforderungen erhöhte Komplexität der Software diesen
Gewinn mehr als aufhebt.
In seinem Artikel prangert Wirth entsprechende Nachlässigkeiten an, was
unnötig große Software (fatware) angeht, und spricht sich für eine
Rückbesinnung auf einfache Algorithmen und schlichte Werkzeuge aus.” [1]

Verschärft könnte das bedeuten, dass irgendwann eine Operation auf einem i7-8086K unter ungünstigen Umständen langsamer abläuft, als auf einem 8086.

Offen gestanden bin ich aus einer Intuition herraus Fan des KISS-Prinzipes und mag minimalistische Ansätze sehr, die durch Eleganz und Transparenz als durch Bequemlichkeit bestechen.
Aber meine Meinung möchte ich hier in den Hintergrund stellen und bin auf eure Ansichten neugierig. Haltet Ihr das Wirthsches Gesetz für schlüssig ?

[1] https://de.wikipedia.org/wiki/Wirthsches_Gesetz


#2

Ich hatte vorher noch nicht von diesem „Gesetz“ gehört und finde es ehrlich gesagt ziemlich übertrieben. Wozu sollte man denn gestiegene Hardwarekapazitäten verwenden wenn nicht zum Lösen größerer oder komplexerer Probleme? Das ist ja auch überhaupt einer der Treiber der schnellen Entwicklung in diesem Bereich in den letzten 40 Jahren. Nur um vorhandene Programme schneller auszuführen, baut niemand bessere Hardware.

Dass die „Software […] schneller langsamer, als die Hardware schneller wird“ kann ich zumindest persönlich nicht ganz nachvollziehen. Meine gefühlte Anwenderperformance ist im Laufe der Zeit (beginnend bei einem Amiga) immer besser geworden und ich würde sagen mit meinem heutigen Rechner kann ich trotz komplexem Kernel und komplexem Browser am schnellsten im Internet surfen (und damit meine ich nicht meinen DSL-Anschluss :wink:).

Es stimmt natürlich, dass durch schnellere Hardware oft zusätzliche Abstraktionen möglich werden und dann auch umgesetzt werden. Allerdings empfinde ich dies nicht negativ, dann während vor 40 oder 50 Jahren nur wenige Experten Computerprogramme entwickeln konnten, kann heute im Prinzip jeder zB mit Python ohne große Vorkenntnisse programmieren. Und solange Python nicht die einzige Möglichkeit dazu darstellt, sehe ich hier auch kein Problem :sweat_smile:. Im Gegenteil, der Trend geht in letzter Zeit sogar oft wieder zu solchen Abstraktionen, die eben keine Performance kosten (zero-cost abstractions, populär gemacht von C++ und auch Leitlinie von Rust).

Ich finde, dass sich das nicht unbedingt ausschließt. Wobei das natürlich immer auf die Perspektive ankommt.

Hier müsstet du schon genauer spezifizieren, was du mit Operation meinst. Ein add %eax, %ebx ist sicher nicht langsamer. :wink:

PS: Das Thema ist übrigens öffentlich, nur falls du das nicht beabsichtigt haben solltest.