Manifeste der Softwareentwicklung
9 Pflicht-Ressourcen für Entwickler
"Heureka!"-Momente kommen meist überraschend und verändern den Lauf der Dinge in der Folge grundlegend - auch im Bereich Software Development. Die wichtigsten Paradigmenwechsel in der Welt der Computertechnologie manifestieren sich dabei in einigen, historisch wertvollen Abhandlungen, die jeder Entwickler und Dev-Aspirant einmal gelesen haben sollte.
Dieser Artikel stellt Ihnen die folgenden Manifeste der Softwareentwicklung vor (die Verlinkung führt jeweils zu einer PDF-Version):
Alan Turing: On Computable Numbers, with an Application to the Entscheidungsproblem
John von Neumann: First Draft of a Report on the EDVAC
John Backuss et al.: Specifications for the IBM Mathematical FORmula TRANSlating System
Edgar Dijkstra: Go To Statement Considered Harmful
Whitfield Diffie/Martin E. Hellman: New Directions in Cryptography
Richard Stallman: The Gnu Manifesto
Roy Fielding: Architectural Styles and the Design of Network-based Software Architectures
Satoshi Nakamoto: Bitcoin: A Peer-to-Peer Electronic Cash System
Martin Abadi et al.: TensorFlow: A System for Large-Scale Machine Learning
1. On Computable Numbers with an Application to the Entscheidungsproblem (1936)
Alan Turings Werk ist der Archetyp eines paradigmatischen Dokuments. Er wagt sich auf unsicheres Terrain und findet Orientierungspunkte, um eine Karte zu entwickeln. Dabei ist eine "Map" herausgekommen, die uns bald hundert Jahre gute Dienste leistet.
Turings Aufsatz ist dabei gut lesbar und versprüht beinahe ein erzählerisches Flair - wenn man bedenkt, dass es sich um eine technische Abhandlung handelt. Im Kern beschäftigt sich Turing mit diversen komplexen, mathematischen Fragen - unter anderem, was eine Zahl berechenbar macht. Mit seinem allgemeinen Modell, bei dem ein Tape durch eine Maschine läuft, hat Turing die Grundlage für die Welt der Informationstechnologie gelegt. Die Turing-Maschine ist deshalb so elegant, weil sie Mathematik in Computer und Computer in Mathematik transformieren kann. Sie ist bis heute ein nützliches Modell, um die Komplexität von Systemen zu beschreiben.
"On Computable Numbers with an Application to the Entscheidungsproblem" ist daher in vielerlei Hinsicht eine Pflichtlektüre. Turings Entscheidungsproblem bietet zudem einen interessanten Einblick in die Schnittmenge von Mathematik, Logik und Informatik. Dabei geht es darum, eine universelle Methode zu finden, um die Ja/Nein-Wahrheit innerhalb einer gegebenen Menge von Axiomen für einen gegebenen Input abzuleiten.
2. First Draft of a Report on the EDVAC (1945)
John von Neumanns Vorschlag für die EDVAC (Electronic Discrete Variable Automatic Computer) -Architektur stellt die Art von Durchbruch dar, die man für offensichtlich halten könnte. Allerdings lag es im Jahr 1945 nicht unbedingt auf der Hand, dass die Memory eines Computers sowohl Daten als auch Anweisungen speichern kann. Der Übergang von Turings weitgehend philosophisch-mathematischer Diskussion zu von Neumanns praktischer Erörterung über Informationen, die "magnetisch auf Stahlband oder Draht aufgeprägt" sind, markiert einen Quantensprung.
Schließlich wirft von Neumanns Werk zahlreiche interessante Überlegungen auf - etwa Ideen dazu, wie Fehler bei Berechnungen zu behandeln sind. Von Neumann beschreibt an der Schwelle zum modernen Computer auf halb reale, halb spekulative Art das Wesen der Devices, die wir heute benutzen. Deshalb ist der grundlegende Aufbau von Computern heute als Von-Neumann-Architektur bekannt.
Von Neumann arbeitete auch am Manhattan-Projekt mit und leistete Pionierarbeit im Bereich der Game Theory sowie der Quantenmechanik. Seine Vorstellung, dass Hochgeschwindigkeitsrechner mit Vakuumröhren arbeiten sollten, erfährt heutzutage eine Renaissance.
3. Specifications for the IBM Mathematical FORmula TRANSlating System (1954)
FORTRAN zählt zu den Urgesteinen der Programmiersprachen und markierte zu ihrer Zeit als erste echte Allzwecksprache einen wesentlichen Durchbruch - obwohl sie nicht öffentlich zugänglich gemacht wurde. FORTRAN übte wesentlichen Einfluss auf das Design von Programmiersprachen und Software im Allgemeinen aus. Die Bedeutung der Sprache zeigt sich unter anderem daran, dass Turing den Computer erst 28 Jahre zuvor erdacht hatte.
Die FORTRAN-Spezifikation vermittelt, welche neuen Möglichkeiten im Jahr 1954 mit Hardware und Software entstanden und diente als Grundlagenmodell für viele weitere Programmiersprachen.
4. Go To Statement Considered Harmful (1968)
Edgar Dijkstras Werk aus dem Jahr 1968 hat uns das Considered-Harmful-Meme beschert:
#ComputerNerd Snowclone meme "GOTO Considered Harmful" from Dijkstra used in the wild https://t.co/PfshwhmyxE
— Peter Dimitrios (@PeteDaGuru) November 29, 2020
Doch damit nicht genug. Das Forschungspapier hat auch aufgezeigt, warum Loops und konditionale Control Flows dem Go-To-Statement überlegen sind und maßgeblich verändert, wie Softwareentwickler über Codequalität denken. Dijkstras eineinhalbseitige Arbeit vermittelt eine Attitüde für den Bereich Software Development. Es geht also nicht nur um Struktur von Software zu Write- und Runtimes, sondern um den Charakter der Dev-Arbeit und der Rolle des Menschen in ihr.
Dijkstras Abhandlung definiert die Kultur des Software Engineering als ein leidenschaftliches Unterfangen und hat zudem dazu beigetragen, dass weitere High-Level-Programmiersprachen entwickelt wurden.
5. New Directions in Cryptography (1976)
Das Diffie-Hellman-Paper ist in dreierlei Hinsicht bemerkenswert:
Der Vorschlag scheint auf den ersten Blick unmöglich.
Die Lösung ist elegant und leicht zu verstehen.
Es hat den Lauf der Geschichte verändert.
Wenn Sie mit der Funktionsweise des Diffie-Hellman-Schlüsselaustausch vertraut sind, wissen Sie, warum dieses Werk hier gelistet ist. Die asymmetrische Verschlüsselung mit Public Keys legte den Grundstein für sichere Kommunikation im Netz (etwa HTTPS) und bildete ausserdem auch 32 Jahre später die Grundlage für Bitcoin.
Das Forschungspapier markiert nicht nur einen außergewöhnlichen Meilenstein im Bereich der Software(entwicklung) sondern der Geschichte im Allgemeinen.
6. The Gnu Manifesto (1985)
Das GNU Manifesto aus dem Jahr 1995 ist - in gewisser Weise - das Manifest der Open Source Software und definiert zahlreiche Prämissen in diesem Bereich. Das Papier beschreibt ein kühnes Projekt - ein allgemein verfügbares, hochwertiges Betriebssystem für jedermann - untermauert von einer leidenschaftlich geprägten Philosophie, die sich gegen das damals in der Branche vorherrschende Closed-Source-Modell wandte.
Eine Rebellion, die Erfolg hatte - schließlich ist Open-Source-Software heutzutage allgegenwärtig. Das Gnu-Manifesto liest sich dabei auch heute noch so frisch, als handle es sich um ein aktuelles GitHub-Projekt.
7. Architectural Styles and Design of Network-based Software Architectures (2000)
Roy Fieldings Arbeit, die den REST-Architekturstil einführte, erschien zwar im Jahr 2000. Allerdings fasste er hier die Erkenntnisse zusammen, die die verteilten Programmierumgebungen der 1990er Jahre gebracht hatten, um dann einen Weg in die Zukunft vorzuschlagen. Man könnte also sagen, dass Fieldings Forschungspapier stellvertretend für zwei Jahrzehnte der Softwareentwicklungsgeschichte steht.
REST ist darüber hinaus essenziell, weil es einen wesentlichen Beitrag dazu leistet, die Komplexität moderner Software zu reduzieren. Fieldings Erörterungen über Komplexität und Design in Sachen Webarchitektur sind auch heute für Entwickler relevant.
8. Bitcoin: A Peer-to-Peer Electronic Cash System (2008)
Wer hinter dem berühmt gewordenen Nakamoto-Papier steckt, ist bis heute nicht bekannt. Die Arbeit fasst den Stand der Technik im Bereich der digitalen Währungen zusammen und bietet eine Lösung für deren Hauptprobleme. Es handelt sich im Wesentlichen um ein kurzes, leicht verständliches Dokument, das auch einige Implementierungsdetails enthält.
Neben der Idee für die Kryptowährung Bitcoin enthält das Paper mit dem Konzept der verteilten virtuellen Maschinen auch die Grundlage für Ethereum.
9. TensorFlow: A System for Large-Scale Machine Learning (2015)
Dieses Whitepaper stellt einen wichtigen Meilenstein auf dem Weg zu modernen KI-Systemen auf der Basis von Large Language Models (LLMs) dar. Dabei diskutiert es ein generalisiertes Machine Learning Framework und führt TensorFlow als Flaggschiff-KI-Plattform ein.
Darüber hinaus konzentriert sich dieses Werk auf die Besonderheiten von TensorFlow. Dabei bietet es einen ausgezeichneten Überblick über den Stand der ML-Technik (auf hohem Niveau). Eine großartige Lektüre für ML-Neugierige und diejenigen, die einen verständlichen Einstieg ins Thema suchen. (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.