Bootstrapping (Programmierung): Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''Bootstrapping''' - Prozess, mit einfachen | '''Bootstrapping''' - Prozess, um mit einfachen Werkzeugen mächtigere zu programmieren | ||
== Beschreibung == | == Beschreibung == | ||
=== Ureingabe === | |||
Die einfachste Umgebung ist etwa ein sehr grundlegender [[Texteditor]] und ein [[Assembler (Informatik)|Assembler]] | |||
* Mit diesen Werkzeugen kann man einen komplexeren Texteditor und einen einfachen [[Compiler]] für eine höhere [[Programmiersprache]] schreiben, und so weiter, bis man eine [[Grafische Benutzeroberfläche|grafische]] [[integrierte Entwicklungsumgebung]] und eine sehr hohe Programmiersprache hat | |||
Compiler für eine Programmiersprache X werden oft in derselben Programmiersprache X geschrieben (Beispiele: Fast alle C-Compiler, [[Free Pascal]], [[PyPy]], [[Glasgow Haskell Compiler]]) | |||
Compiler für eine Programmiersprache X werden oft in derselben Programmiersprache X geschrieben (Beispiele: Fast alle C-Compiler, [[Free Pascal]], [[PyPy]], [[Glasgow Haskell Compiler]]) | |||
* Damit ergibt sich ein [[Henne-Ei-Problem]]: Wie wird der neue Compiler erstmals kompiliert? Mögliche Wege sind: | * Damit ergibt sich ein [[Henne-Ei-Problem]]: Wie wird der neue Compiler erstmals kompiliert? Mögliche Wege sind: | ||
* Ein weiterer Compiler für X wurde in einer anderen Programmiersprache Y geschrieben | * Ein weiterer Compiler für X wurde in einer anderen Programmiersprache Y geschrieben | ||
* Frühere Versionen des Compilers wurden in einer Teilmenge von X geschrieben, für die ein anderer Compiler existierte | * Frühere Versionen des Compilers wurden in einer Teilmenge von X geschrieben, für die ein anderer Compiler existierte | ||
* Der Compiler für X ist ''cross compiled'' von einer anderen Architektur, auf der ein Compiler für X existiert | * Der Compiler für X ist ''cross compiled'' von einer anderen Architektur, auf der ein Compiler für X existiert | ||
* Der Compiler wurde von Hand kompiliert und möglicherweise hinterher auf seinen eigenen Quellcode angewendet | * Der Compiler wurde von Hand kompiliert und möglicherweise hinterher auf seinen eigenen Quellcode angewendet | ||
* Das bedeutet, dass ein Programmierer den Compiler in eine Hardware-nähere Sprache bringt, z. B.. mit Hilfe der [[Befehlssatzarchitektur]] in [[Assemblersprache]] | * Das bedeutet, dass ein Programmierer den Compiler in eine Hardware-nähere Sprache bringt, z. B.. mit Hilfe der [[Befehlssatzarchitektur]] in [[Assemblersprache]] | ||
* Der Compiler hat sich selbst mithilfe eines Interpreters, der in einer anderen Sprache Y geschrieben wurde, kompiliert | * Der Compiler hat sich selbst mithilfe eines Interpreters, der in einer anderen Sprache Y geschrieben wurde, kompiliert | ||
== Notation == | == Notation == | ||
[[Datei:T-diagram.png|mini|Bartman-Diagramm]] | [[Datei:T-diagram.png|mini|Bartman-Diagramm]] | ||
Um den Prozess des Bootstrappings grafisch darzustellen, wird das sogenannte ''Bartman-Diagramm'' verwendet | Um den Prozess des Bootstrappings grafisch darzustellen, wird das sogenannte ''Bartman-Diagramm'' verwendet | ||
* Im nebenstehenden Diagramm wird ein Compiler für [[Ada (Programmiersprache)|Ada]] in [[C (Programmiersprache)|C]] geschrieben, der Code in [[Maschinensprache]] erzeugt | * Im nebenstehenden Diagramm wird ein Compiler für [[Ada (Programmiersprache)|Ada]] in [[C (Programmiersprache)|C]] geschrieben, der Code in [[Maschinensprache]] erzeugt | ||
== Etymologie == | == Etymologie == | ||
Im Englischen existiert spätestens seit dem frühen 19.. Jahrhundert der Ausdruck "to pull oneself up by one's bootstraps" oder "to pull oneself over a fence by one's bootstraps" (sich an den eigenen Stiefelschlaufen hochziehen bzw. über einen Zaun ziehen) als Bezeichnung für die Lösung einer inhärent unlösbaren Aufgabe, insbesondere einer solchen, bei der – wie bei der oben erwähnten Compiler-Kompilierung – ein Henne-Ei-Problem besteht | Im Englischen existiert spätestens seit dem frühen 19.. Jahrhundert der Ausdruck "to pull oneself up by one's bootstraps" oder "to pull oneself over a fence by one's bootstraps" (sich an den eigenen Stiefelschlaufen hochziehen bzw. über einen Zaun ziehen) als Bezeichnung für die Lösung einer inhärent unlösbaren Aufgabe, insbesondere einer solchen, bei der – wie bei der oben erwähnten Compiler-Kompilierung – ein Henne-Ei-Problem besteht | ||
Häufig wird in diesem Kontext auch die Geschichte erwähnt, in der Baron [[Hieronymus Carl Friedrich von Münchhausen|Münchhausen]] sich (unmöglicherweise) selbst aus dem Sumpf zieht, allerdings benutzt er dafür seinen Haarzopf und keine Stiefelschlaufe | Häufig wird in diesem Kontext auch die Geschichte erwähnt, in der Baron [[Hieronymus Carl Friedrich von Münchhausen|Münchhausen]] sich (unmöglicherweise) selbst aus dem Sumpf zieht, allerdings benutzt er dafür seinen Haarzopf und keine Stiefelschlaufe | ||
Der Begriff des [[Booten]]s geht ebenfalls auf "Bootstrapping" zurück | Der Begriff des [[Booten]]s geht ebenfalls auf "Bootstrapping" zurück | ||
<noinclude> | <noinclude> | ||
Aktuelle Version vom 5. April 2024, 11:25 Uhr
Bootstrapping - Prozess, um mit einfachen Werkzeugen mächtigere zu programmieren
Beschreibung
Ureingabe
Die einfachste Umgebung ist etwa ein sehr grundlegender Texteditor und ein Assembler
- Mit diesen Werkzeugen kann man einen komplexeren Texteditor und einen einfachen Compiler für eine höhere Programmiersprache schreiben, und so weiter, bis man eine grafische integrierte Entwicklungsumgebung und eine sehr hohe Programmiersprache hat
Compiler für eine Programmiersprache X werden oft in derselben Programmiersprache X geschrieben (Beispiele: Fast alle C-Compiler, Free Pascal, PyPy, Glasgow Haskell Compiler)
- Damit ergibt sich ein Henne-Ei-Problem: Wie wird der neue Compiler erstmals kompiliert? Mögliche Wege sind:
- Ein weiterer Compiler für X wurde in einer anderen Programmiersprache Y geschrieben
- Frühere Versionen des Compilers wurden in einer Teilmenge von X geschrieben, für die ein anderer Compiler existierte
- Der Compiler für X ist cross compiled von einer anderen Architektur, auf der ein Compiler für X existiert
- Der Compiler wurde von Hand kompiliert und möglicherweise hinterher auf seinen eigenen Quellcode angewendet
- Das bedeutet, dass ein Programmierer den Compiler in eine Hardware-nähere Sprache bringt, z. B.. mit Hilfe der Befehlssatzarchitektur in Assemblersprache
- Der Compiler hat sich selbst mithilfe eines Interpreters, der in einer anderen Sprache Y geschrieben wurde, kompiliert
Notation
Um den Prozess des Bootstrappings grafisch darzustellen, wird das sogenannte Bartman-Diagramm verwendet
- Im nebenstehenden Diagramm wird ein Compiler für Ada in C geschrieben, der Code in Maschinensprache erzeugt
Etymologie
Im Englischen existiert spätestens seit dem frühen 19.. Jahrhundert der Ausdruck "to pull oneself up by one's bootstraps" oder "to pull oneself over a fence by one's bootstraps" (sich an den eigenen Stiefelschlaufen hochziehen bzw. über einen Zaun ziehen) als Bezeichnung für die Lösung einer inhärent unlösbaren Aufgabe, insbesondere einer solchen, bei der – wie bei der oben erwähnten Compiler-Kompilierung – ein Henne-Ei-Problem besteht
Häufig wird in diesem Kontext auch die Geschichte erwähnt, in der Baron Münchhausen sich (unmöglicherweise) selbst aus dem Sumpf zieht, allerdings benutzt er dafür seinen Haarzopf und keine Stiefelschlaufe
Der Begriff des Bootens geht ebenfalls auf "Bootstrapping" zurück