#GenealogieDesCodes
#Binär #Computing #Zahlensystem #Babel
Die Geschichte des maschinellen Rechnens beginnt nicht erst mit dem Aufkommen des Personal Computers oder seinen direkten Vorläufern im 20. Jahrhundert. Um den Grundlagen, auf denen heutige Berechnungsverfahren beruhen, auf die Spur zu kommen, muss man zumindest bis ins Mittelalter zurückgehen.
Ramon Llull (1232–1316), ein mallorquinischer Gelehrter, versuchte ein System zu entwickeln, mit dem man grundlegende theologische und philosophische Fragen lösen konnte. Mithilfe dynamischer Diagramme wollte er alle existierenden Kombinationsmöglichkeiten verschiedener Konzepte finden und untersuchen. Diese Vorgehensweise, seine sogenannte Ars Magna oder »Große Kunst«, beschrieb er in seinem gleichnamigen Werk »Ars magna« (1274–1308). [1] Angeregt durch Llull formulierte Gottfried Wilhelm Leibniz (1646–1716) 1666 in seiner Schrift »Dissertatio de arte combinatoria« [Dissertation über die Kunst der Kombinatorik] Parallelen zwischen Logik und Metaphysik. [2]
1679 beschrieb Leibniz in einem unveröffentlichten Brief ein binäres System (»Arithmetica binaria« bzw. »dyadica«), in dem nur die Zahlen 0 und 1 verwendet werden (#Binär). Im selben Jahr erdachte er die erste Rechenmaschine (#Computing), die mit dem Binärsystem arbeitet. Die Beschreibung wurde nie veröffentlicht und die Maschine zu seinen Lebzeiten nicht gebaut. [3]
Zwei Jahrhunderte später arbeitete Charles Babbage an seiner Difference Engine (Differenzmaschine), auf welche die Analytical Engine (analytische Maschine) folgte. Aufgrund fehlender finanzieller Mittel wurde keiner der beiden Entwürfe unter seiner Leitung je vollständig realisiert. Die Analytical Engine wäre der erste universell einsetzbare Computer gewesen, aber immer noch ein mechanischer. »Die Grenzen der ›Arithmetik‹ wurden jedoch in dem Augenblick überschritten, als die Idee aufkam, die Karten zu verwenden; und die Analytical Engine steht nicht auf einer Stufe mit bloßen ›Rechenmaschinen‹« [4], schrieb Ada Lovelace (1815–1852), die heute als die erste programmierende Person gilt, in ihren Anmerkungen zu Babbages Rechenautomat. Dieser frühe Apparat arbeitete mit einem dezimalen #Zahlensystem. Für heutige Computer wird ausschließlich ein binäres Zahlensystem verwendet, wie es zuerst von Leibniz benutzt und dann von George Boole (1815–1864) wieder eingeführt wurde.
Boole war der Erste, welcher der Logik eine mathematische Form gab: Mit seinem Buch »Die mathematische Analyse der Logik« (1847) führte er die Boolesche Algebra ein. [5] Das Binärsystem Booles basiert auf drei grundlegenden Verknüpfungen, die als logische Operatoren verwendet werden: UND, ODER und NICHT. [6]
Benutzt wurde dieses System aber erst, als »Claude Shannon (1916–2001) 1937 in der wohl folgenreichsten Masterarbeit, die je geschrieben wurde, bewies, dass sich durch einfache Telegrafenrelais und ihre verschiedenen Verbindungen untereinander die gesamte Boolesche Algebra umsetzen lässt.« [7] Ebenfalls 1937 realisierte Alan Turing (1912–1954) ein Schaltnetz auf Grundlage der Booleschen Algebra und formulierte eine Berechenbarkeitstheorie in seinem Aufsatz über das »Entscheidungsproblem«. [8] Die Abhandlung hatte er bereits im Jahr zuvor geschrieben, während er an seiner berühmten Turing-Maschine arbeitete. Dabei handelt es sich nicht um einen Computer, der physisch existiert, sondern um ein mathematisches Rechenmodell. Mit seinem an der Booleschen Logik orientierten Schaltnetz versuchte Turing »der logischen Gestalt einer Turing-Maschine mit einem Netzwerk aus relaisgesteuerten Schaltern eine konkrete Form zu geben« [9]. Kurz darauf, ab den 1940erJahren, entstanden mit dem Aufkommen elektronischer Computer unterschiedliche Programmiersprachen. Zu den ersten zählte Assembler (asm). Diese einfache Programmiersprache kann in einem Schritt in ausführbaren Maschinencode übersetzt werden, da sich diese Sprache und die Maschinensprache stark ähneln. Ab den 1950erJahren begannen höhere Programmiersprachen ihre »niederen« Vorgänger zu ersetzen. Dutzende Programmiersprachen wurden seitdem geschrieben und entwickelt, angefangen mit ALGOL (ALGOrithmic Language), gefolgt von Fortran, Pascal, C++, Java und Python, um nur einige zu nennen. »Dieser Turm von Babel reicht von einfachen Befehls-Codes, deren linguistische Extension noch eine Hardwarekonfiguration ist, über Assembler, dessen Extension genau jene Befehls-Codes sind, bis zu sogenannten Hochsprachen, deren Extension nach allen möglichen Umwegen über Interpreter, Compiler und Linker wiederum Assembler heißt.« [10] (#Babel)
All diese Sprachen basieren auf einem binären Zahlensystem, einer Abfolge von »an« und »aus«, wodurch der Strom in den Schaltkreisen fließen kann oder unterbrochen wird. Obwohl ihre Grundbestandteile so einfach sind, können Programmiersprachen äußerst komplexe Vorgänge beschreiben. Alle oben erwähnten Rechenmaschinen funktionieren mit binärem Code – bis auf die Maschinen von Babbage, für die das Dezimalsystem genutzt wurde. Durch Shannons Arbeit und den Einsatz von Transistoren wurde das Binärsystem im Bereich des maschinengestützten Rechnens allgegenwärtig.
Neben Algorithmen (siehe #Algorithmus Themenbereich #Codierung) und Berechnungen kann alles, was decodiert werden kann, durch binären Code beschrieben werden. Das beste Beispiel dafür ist wohl der ASCII-Code (American Standard Code for Information Interchange), mit dem Buchstaben auf einem Computerbildschirm dargestellt werden. Er wurde ab 1960 auf der Basis von Codes aus dem Bereich der Telegrafie entwickelt.
Aktuelle Computer sind womöglich nicht leistungsfähig genug, um die Menge und Komplexität zukünftiger Berechnungsaufgaben zu bewältigen. Moderne Computer haben sich jedoch erstaunlich schnell entwickelt, wenn man beispielsweise die Entwicklung ihrer Leistungsfähigkeit mit der von Autos vergleicht. Wenn Autos sich seit 1971 im selben Tempo wie Computerchips verbessert hätten, dann könnten die aktuellen Modelle eine Höchstgeschwindigkeit von rund 680 Millionen km/h erreichen. [11]
»Quantencomputing« könnte die Antwort auf die aktuelle und scheinbar unausweichliche Bedarfssteigerung sein. Ein Quantencomputer führt logische Operationen auf atomarer Ebene aus. Und Atome können mehr leisten als Bits: Da sie den Zustand von 0 und 1 gleichzeitig annehmen und damit zwei Berechnungen zur selben Zeit ausführen können, sind Quantenbits (oder Qubits) leistungsfähiger als die klassischen Bits. [12]
»Wie lange kann das maschinengestützte Rechnen noch im Universum bestehen? Aktuelle Beobachtungsergebnisse legen nahe, dass sich das Universum bis in alle Ewigkeit ausdehnen wird. Mit seiner Ausdehnung wird sich die Menge der ausgeführten Operationen und die Menge der Bits, die bis zum Ende des Horizonts verfügbar sind, weiter wachsen.« [13]
Lívia Nolasco-Rózsás
[1] Raimundus Llullus, »Opera«, 2 Bde., Frommann-Holzboog, Stuttgart-Bad Cannstatt, 1996, S. 228–663. Siehe auch Anthony Bonner, »The Art and Logic of Ramon Llull: A User’s Guide«, Brill, Leiden, Boston, 2007.
[2] Vgl. Ana H. Maróstica, »Ars Combinatoria and Time: Llull, Leibniz and Peirce«, in: »Studia Lulliana«, Bd. 32, 1992, S. 105–134, hier S. 111.
[3] Vgl. Hermann J. Greve, »Entdeckung der binären Welt«, in: »Herrn von Leibniz’ Rechnung mit Null und Eins«, Siemens Aktiengesellschaft, Berlin, München, 1966, S. 21–31.
[4] L. F. Menabrea, »Sketch of the Analytical Engine Invented by Charles Babbage«, übersetzt aus dem Französischen und mit Anmerkungen von Ada Lovelace, Richard und John E. Taylor, London, 1843, S. 696f. Übersetzt aus dem Englischen von PK.
[5] Vgl. George Boole, »The Mathematical Analysis of Logic: Being an Essay Towards a Calculus of Deductive Reasoning«, Macmillan, Cambridge, 1847.
[6] Vgl. Paul J. Nahin, »The Logician and the Engineer: How George Boole and Claude Shannon Created the Information Age«, Princeton University Press, Princeton (NJ), Oxford, 2013.
[7] Friedrich Kittler, »There Is No Software«, in: »Stanford Literature Review«, Bd. 9, Nr. 1, Frühjahr 1992, S. 81–90, hier S. 88. Übersetzt aus dem Englischen von PK.
[8] Vgl. Alan Turing, »On Computable Numbers, with an Application to the Entscheidungsproblem«, in: »Proceedings of the London Mathematical Society«, Reihe 2, Band 42, Nr. 1, Januar 1937, S. 230–265.
[9] Vgl. Andrew Hodges, »Alan Turing: The Enigma«, Princeton University Press, Princeton (NJ), Oxford, 2014, S. 177.
[10] Kittler 1992, S. 82.
[11] Vgl. Tim Cross, »Vanishing point: The rise of the invisible computer«, in: »The Guardian«, 26.01.2017, online: https://www.theguardian.com/technology/2017/jan/26/vanishing-point-rise…, 13.09.2017.
[12] Vgl. Seth Lloyd, »Programming the Universe: A Quantum Computer Scientist Takes on the Cosmos«, Vintage Books, New York, 2007, S. 136–139.
[13] Ebd., S. 206. Übersetzt aus dem Englischen von PK.
Brief History of Computer Programming
4:07 Min.
CHM (Computer History Museum) Live│The History (and the Future) of Software
69:27 Min.
Keynote session: The History of Programming - Mark Rendle [DevCon 2016]
65:25 Min.
The Machine that Changed the World (Documentary)
Part I: Giant Brains, 55:41 Min. (BBC)
Part II: Inventing The Future, 57:28 Min.
Part III: The Paperback Computer, 55:16 Min. (NBC Universal)
Part IV: The Thinking Machine, 56:57 Min.