Wie Staat und Infrastruktur an der Komplexität zerbrechen
Ich beobachte gerade einen schier tödlichen Effekt in mehreren Bereichen der Infrastruktur.
Zur Einleitung erst einmal etwas Informatikerdenke.
Ein Bereich der theoretischen Informatik ist die Berechenbarkeit, zu der auch das Unterthema Komplexität gehört. Ein Thema, an dem viele bitter scheitern, die – aus welchen Gründen auch immer – einen Bogen um dieses Thema gemacht haben. Bachelor, irgendein *-Informatiker, Frauenstudium, linkes Studium, Selbstudium, weiß der Kuckuck warum.
Ein ganz wesentlicher Teil solcher Komplexitätsbetrachtungen ist die Frage, das Überlegen und bestimmen, wie sich ein – scheinbar beherrschter – Algorithmus, oder, allgemeiner, ein Problem, verhält, wenn die Eingabe wächst. In welchem Maße wachsen Rechenzeit und Speicherverbrauch mit?
Wenn ich beispielsweise weiß, dass ein Algorithmus für das verarbeiten von n Zahlen die Zeit t (in Sekunden oder Rechenschritten) braucht, wieviel braucht er dann für 2n oder 10n Zahlen? Braucht er dann zweimal oder zehnmal so viel? Oder noch mehr? Oder etwa weniger?
Man drückt so etwas bevorzugt im sogenannten „O-Kalkül“ aus, das nur eine Funktion angibt, die asymptotisch genauso steigt. Konstante Faktoren oder addierte Werte interessieren nicht, es geht nur darum, wie sich die Funktion bei steigenden Zahlen verhält.
„O(1)“ heißt dann, dass der Algorithmus oder das Problem immer denselben Rechenaufwand haben, dass der sich nicht ändert. „O(n)“ bedeutet, dass der Aufwand linear steigt, also proportional zur Größe der Eingabe: Doppelt so viele Zahlen = doppelt so hohe Rechenzeit. Zehnmal so viele Zahlen = zehnmal so hohe Rechenzeit.
O(log(n)) heißt, dass der Aufwand nur logarithmisch steigt, also weit geringer als die Größe der Daten.
O(n·log(n)) heißt, dass er etwas stärker als linear steigt,
O(n2) ist schon übel, das steigt quadratisch, also bei doppelt so großer Eingabe, vierfache Zeit, und bei zehnfacher die hundertfache. Das wird richtig teuer.
Und O(en), also exponentielle Steigerung, ist eigentlich die Aussage, dass das Verfahren nicht zu gebrauchen ist, weil die Rechenzeit explodiert, wenn man nur etwas mehr Daten eingibt.
- Zahlen zu addieren ist einfach, auf den ersten Blick O(n). Für jede Zahl eine Addition. Doppelt so viele Zahlen, doppelt so viele Additionen. Reingefallen. Denn mit der Zahl der Summanden steigt auch der Wert der Summe, und für die Addition braucht das Rechenwerk normalerweise so viele Rechenstellen, wie log(n), ob nun zur Basis 2 oder 10 oder was auch immer. Wir können mit einem 16-Bit-Rechenwerk nicht 100.000 Zahlen addieren. Das Rechenwerk muss breit genug sein, und zwar ungefähr log(n) breit, und damit braucht jede Addition wegen des Kaskadierungseffekts im Prinzip log(n) Schritte (auch wenn das in der Praxis bei 32 oder 64 Bit in einem Schritt geht – aber was, wenn wir 1000000 Bit brauchen?) Also O(n·log(n)), wenn auch sehr flach, nahe an linear. Was noch nicht einmal reicht, weil nicht nur die Zahl der Summanden eine Rolle spielt, sondern auch deren Breite, aber die nehmen wir als konstant an, ich will das ja auch nur andeuten und keine Vorlesung halten.
- Zahlen zu sortieren ist schon schwerer. Viele einfache Algorithmen brauchen da O(n2), während besondere Verfahren wie der Quicksort im günstigen Fall, bei zufälligen und nicht böswillig vorsortierten Zahlen, die ihn zum degenerieren bringen, O(n·log(n)).
- Schön einfach dagegen ist es, in einem vorsortierten Binärbaum nach Daten zu suchen, eng damit verwandt auch eine Dateien nach Pfad und Namen in einem Dateiverzeichnis zu finden, denn das braucht nur O(log(n)). Weil der Baum selbst immer mehr in die Breite wächst, muss man nur log(n) Etagen durchsteigen, um das gesuchte Datum zu finden. Deshalb kann man weitgehend bedenkenlos Unterverzeichnisse und Dateien auf einer Festplatte anlegen, ohne sich um die Rechenzeit sorgen zu müssen, die es braucht, sie zu finden.
Informatiker schauen sich also gerne an, wie sich etwas verhält, wenn „die Zahl steigt“. Viele Methoden und Verfahren funktionieren – scheinbar – gut, solange die Eingabe, die Zahl der behandelten Objekte, klein genug ist, und viele Leute verlassen sich dann auf den Erfahrungswert „tut doch …“, und plötzlich brennt die Sache an, wenn die Menge ansteigt. Manchmal reicht schon ein wenig.
Es gehört zum Geschäft von Informatikern, so etwas zu erkennen – und zu vermeiden.
Das muss auch nicht immer mathematisch korrekt sein, geht auch nicht immer so ganz korrekt (siehe etwa oben das Additionsbeispiel) und formelhaft, zumal man konstante Faktoren und addierte Grundwerte einfach weglässt, aber es geht so um die „Größenordnung“. Es geht darum abzuschätzen, ob man sich etwa zehnmal oder hundertmal (oder tausendmal) so viele Eingabewerte noch leisten kann. So ein Gefühl dafür zu bekommen, ob einem etwas „abhaut“, „explodiert“.
Und man sieht gerade viele solcher „Aufwandsexplosionen“ – Dinge, die im Kleinen gut funktionierten, im Großen aber auf die Schnauze fallen, weil der Aufwand unerwartet stark steigt.
IT
Ein Bereich ist die IT selbst. Es ist praktisch nicht mehr möglich, sichere IT-Systeme zu bauen, weil die inzwischen so hochkomplex aus enorm vielen Komponenten zusammengenagelt sind, dass kein Mensch mehr durchblickt.
Vor 30 oder 40 Jahren war das alles noch einfach. Da las man sich einfach den Kernighan–Ritchie durch, dann konnte man die Sprache C. Dann noch ein Buch und die man-Seiten über die Laufzeitbibliothek. Fertig. Dann wusste man, wie es geht, und konnte für Jahre damit arbeiten.
Inzwischen aber erleben wir einen solche Wust von Programmiersprachen und Bibliotheken, die immer mehr reinziehen, dass keine Sau mehr durchblickt, was man da an Software gerade baut.
Beispiel: Mein eigener Beruf. IT-Sicherheit. Im Prinzip wurde ich selbst immer ineffizienter, weil ein immer größerer Teil meiner Arbeitszeit für Lesen, Lernen, Debuggen draufging, man sich immer schneller in immer mehr neue Dinge „einarbeiten“ musste – und immer weniger Zeit übrig bleibt, das Wissen auch anzuwenden und damit Geld zu verdienen. Im Prinzip verfilzt die Informatik an sich selbst, weil sie immer mehr Krempel auftürmt, der es immer aufwendiger macht, sich damit noch zu befassen.
Das ist ein arges Problem.
Informatiker haben gerne saftige Gehälter, längst auch Einstiegsgehälter, und wundern sich gerade, warum sie die nicht mehr kriegen. Sie können sie aber auch nicht mehr erwirtschaften, weil die moderne IT zu einem immer größeren Teil nur noch Selbstzweck ist. Man beschäftigt sich immer mehr Zeit nur noch mit Lernen und Nachlesen, und hat immer weniger Zeit, auch noch zu arbeiten.
Das ist übrigens auch der Grund, warum so viele Firmen versuchen, IT-Mitarbeiter durch KI zu ersetzen. Die hat ein anderes Verhältnis von Lern- zu Arbeitszeit (hofft man, könnte aber schief gehen), weil die mehr Wissen ansammeln kann und man nur eine KI braucht, anstatt 20 Mitarbeiter, die redundant wissen und lernen müssen.
Die schiere Geschwindigkeit, mit der neue Sprachen, neue Bibliotheken, neue Anwendungen, neue Protokolle auf den Markt geworfen werden, bringt uns um.
Ich schreibe das zwar schon seit Jahren, gerade heute habe ich aber einen passenden Artikel dazu bei Golem gelesen: Warum Sicherheitslücken exponentiell wachsen
Eine Security-Spezialistin erklärt uns, warum die Zahl der Software-Sicherheitslücken schneller wächst als der eigentliche Programmcode.
Dass die Zahl der Sicherheitslücken nicht nur einfach immer weiter ansteigt, sondern sich exponentiell vergrößert, kommt für Joline Wochnik nicht überraschend. “Bereits zu Beginn unserer Forschung hatten wir die Hypothese, die Zahl der Sicherheitslücken folge einem exponentiellen Trend, wächst also immer schneller und eben nicht gleichmäßig”, sagt Wochnik, 23 Jahre alt und Data-Science-Master-Studentin.
Erforscht hat die Expertin, die neben ihrem Studium noch bei der Agentur für Innovation in der Cybersicherheit GmbH (kurz: Cyberagentur) arbeitet, das gemeinsam mit ihrem damaligen Team an der Hochschule Mittweida sowie besagter Cyberagentur. Software wird also immer komplexer und gleichzeitig immer unsicherer. Warum ist das eigentlich so?
Nun habe ich größte Zweifel daran, dass man mit 23 (ausgerechnet „23“) schon „Sicherheitsspezialistin“ sein kann, und dies Cyberagentur liest sich für mich wie steuergeldmelkendes politiknahes Windbeuteltum, aber der Punkt ist zumindest ungefähr zutreffend: Sicherheitslücken steigen überproportional.
Und wenn sie überlinear, überproportional steigen, dann ist das ein Alarmzeichen: Denn man würde es noch als normal empfinden und erwarten, wenn die Zahl der Sicherheitslücken mit der Zahl der Systeme und Anwendungen proportional stiege: Doppelt so viele Computer haben auch doppelt so viele Sicherheitslücken.
Wenn sie aber überproportional steigen, deutet das auf einen Degenerationsprozess hin: Dann steigt nicht nur die Angriffsfläche mit der Zahl der Systeme, sondern die System an sich werden schlechter.
Wir müssen davon ausgehen, dass uns der ganze IT-Scheiß in den nächsten Jahren um die Ohren fliegt, wenn wir nicht anfangen, ihn systematisch rückzubauen und auf ein Maß zurückzustutzen, das wir noch beherrschen können.
Der Staat
Einen sehr ähnlichen Effekt sehe ich aber auch außerhalb der IT: Beim Staat.
In immer höherem Tempo werden Gesetze, Verordnungen, Behörden, Beauftragte, Steuern, Pflichten, Anforderungen aufeinander gestapelt, ständig kommt irgendetwas Neues. Kein Tag vergeht, an dem nicht irgendwer irgendwo eine neue Steuer, Abgabe oder Enteignung fordert.
Und es wird nicht nur immer mehr, sie werden auch noch ständig geändert.
Nur: Es geht nicht mehr.
Ich beobachte das immer öfter, dass sich Richter, Beamte, Behörden, Bürger immer weniger um bestehendes Recht kümmern, weil sie das auch alles nicht mehr lesen können, weil sie da nicht mehr durchsteigen.
Die halten sich alle nicht mehr an geltendes Recht, die machen alle nur noch, was sie gerade für irgendwie richtig und moralisch halten, und alle klagen darüber, dass die Bürokratie immer mehr wird.
Neulich fand das Ifo-Institut allein auf Bundesebene 502 Sozialleistungen, durch die keiner mehr durchblickt. Und sie sagten selbst, dass sie KI brauchten, um die alle zu finden, aber keineswegs sicher sind, ob die auch alle vollständig sind.
Es gibt also nicht ein Sozialhilfegesetz, in dem alles drin steht, sondern jeder Politheini kackt irgendwo in die Gesetzgebung, um seine Spuren zu hinterlassen und seine Klientel zu bedienen. Und was ich dazu irgendwo gelesen habe: Es gebe da ganz viele unterschiedliche Einkommensbegriffe – Fast jede Sozialleistung hat andere Methoden, das Einkommen zu berechnen.
Es ist zwar nicht strukturell völlig gleich, aber es erinnert mich sehr stark an die Softwaresituation, wo etwas immer mehr verfilzt und keiner mehr durchblickt, das keiner mehr fehlerfrei hinbekommt, weil der Aufwand, die Vernetzung und Verstrickung, überproportional steigen.
Und genauso glaube ich, dass uns der Staats-Scheiß um die Ohren fliegen wird – oder es bereits tut.