Bücher online kostenlos Kostenlos Online Lesen
Gödel, Escher, Bach - ein Endloses Geflochtenes Band

Gödel, Escher, Bach - ein Endloses Geflochtenes Band

Titel: Gödel, Escher, Bach - ein Endloses Geflochtenes Band Kostenlos Bücher Online Lesen
Autoren: Douglas R. Hofstadter
Vom Netzwerk:
soll. Diese geordnete Abfolge kann aber durch Befehle wie SPRING — und noch anderen — durchbrochen werden.
Maschinensprache — Assembler-Sprache
    Dies ist eine ganz kurze Skizzierung der Maschinensprache. In dieser Sprache bilden die verschiedenen Operationen ein endliches Repertoire, das nicht erweitert werden kann. Somit müssen alle Programme, so umfangreich und komplex sie auch sein mögen, aus Zusammensetzungen solcher Befehle bestehen. Die Betrachtung eines in Maschinensprache geschriebenen Programms läßt sich ungefähr damit vergleichen, daß man das DNS-Molekül Atom um Atom mustert. Wenn man noch einmal Abb. 41 vergleicht, die die Nukleotiden-Folge eines DNS-Moleküls zeigt, wenn man dann in Betracht zieht, daß jedes Nukleotid rund zwei Dutzend Atome enthält, und wenn man sich vorstellt, daß man das DNS-Schema für ein kleines Virus (von einem Menschengar nicht zu reden!) Atom um Atom schreibt, dann wird man ein Gefühl dafür erhalten, was es heißt, ein komplexes Programm in Maschinensprache zu schreiben, und zu verstehen zu suchen, was in einem Programm geschieht, wenn man nur zu seiner Beschreibung in Maschinensprache Zugang hat.
    Doch muß erwähnt werden, daß das Programmieren von Computern ursprünglich auf einer wenn möglich noch tieferen Ebene als der der Maschinensprache vorgenommen wurde, indem man nämlich Drähte miteinander verband, so daß die richtigen Operationen starr verdrahtet waren. Nach modernen Vorstellungen ist das so erstaunlich primitiv, daß es weh tut, auch nur daran zu denken. Ohne Zweifel aber haben die Leute, die das als erste taten, soviel Spaß daran gehabt, wie ihn die Pioniere der modernen Computer nur haben können ...
    Wir wollen uns nun auf eine höhere Stufe in der Hierarchie der Beschreibung von Programmen begeben. Das ist die Stufe der Assemblersprache. Zwischen Assemblersprache und Maschinensprache besteht keine große Kluft; vielmehr handelt es sich um einen ganz kleinen Schritt. Im wesentlichen besteht eine ein-eindeutige Beziehung zwischen Befehlen in der Assembler- und solchen in der Maschinensprache. Das der Assemblersprache zugrundeliegende Prinzip ist das der „Ballung“ der einzelnen Befehle in der Maschinensprache, so daß, anstatt die Folge von Bits „010111000“ zu schreiben, wenn man einen Befehl braucht, der eine Zahl zu einer anderen addiert, man einfach ADD schreibt, und dann kann man, anstatt die Adresse in binärer Darstellung zu geben, auf das Wort im Gedächtnis mit einem Namen Bezug nehmen. Deshalb ähnelt ein Programm in Assemblersprache sehr einem Programm in Maschinensprache, das für Menschen lesbar gemacht worden ist. Man könnte die maschinensprachliche Version eines Programms mit einer TNT-Ableitung in der undurchsichtigen Gödel-numerierten Notation vergleichen und die assemblersprachliche Version mit der isomorphen TNT-Ableitung in der ursprünglichen TNT-Notation, die viel leichter zu verstehen ist. Oder — um hier noch einmal auf das Bild der DNS zurückzukommen wir können den Unterschied zwischen Maschinen- und Assemblersprache vergleichen mit dem zwischen der mühsamen Spezifikation — Atom um Atom — jedes Nukleotiden und der Spezifikation eines Nukleotiden, indem man einfach seinen Namen „A“, „G“, „C“ oder „T“) angibt. In dieser einfachen Operation des „Ballens“ steckt eine gewaltige Arbeitsersparnis, obgleich sich begrifflich nicht viel geändert hat.
Programme, die Programme übersetzen
    Vielleicht ist der zentrale Punkt, was die Assemblersprache betrifft, nicht der Unterschied zwischen ihr und der Maschinensprache, sondern lediglich die Schlüsselidee, daß es überhaupt möglich ist, daß Programme auf einer anderen Ebene geschrieben werden können. Man denke einmal darüber nach: Die Hardware ist so gebaut, daß sie maschinensprachliche Programme — Folgen von Bits — „verstehen“ kann, nicht aber Buchstaben und Dezimalzahlen. Was geschieht, wenn die Hardware mit einem Programm in Assemblersprache gespeist wird? Das ist, als versuchte man, eine Zelle dazu zu bringen, ein Stück Papier anzunehmen, auf dem die Nukleotiden-Folge in Druckbuchstabenanstatt in chemischen Stoffen geschrieben wäre. Was fängt eine Zelle mit einem Stück Papier an? Was kann ein Computer mit einem Programm in Assemblersprache anfangen?
    Und das ist der springende Punkt: Man kann in Maschinensprache ein Übersetzungsprogramm schreiben. Dieses Programm, das man Assembler nennt, akzeptiert memotechnische

Weitere Kostenlose Bücher