|
|
Zeile 9: |
Zeile 9: |
| ===== Weblinks ===== | | ===== Weblinks ===== |
|
| |
|
|
| |
| = TMP =
| |
| '''Bootstrapping''' (auch '''Ureingabe'''<ref>{{cite web
| |
| | accessdate = 2011-03-17
| |
| | location = http://www.dict.cc
| |
| | publisher = dict.cc
| |
| | title = Bootstrapping
| |
| | url = http://www.dict.cc/?s=Bootstrapping
| |
| }}</ref>) bezeichnet in der [[Programmierung]] den Prozess, mit einfachen [[Entwicklungswerkzeug]]en mächtigere zu programmieren.
| |
|
| |
| 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]]). 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]].<ref name="compilerdesign">{{Internetquelle | url= http://hjemmesider.diku.dk/~torbenm/Basics/basics_lulu2.pdf#page=293 | titel=Basics of Compiler Design | sprache=en | zugriff=2018-10-22}}</ref>
| |
| * Der Compiler hat sich selbst mithilfe eines Interpreters, der in einer anderen Sprache Y geschrieben wurde, kompiliert.<ref name="compilerdesign"/>
| |
|
| |
| == Notation ==
| |
| [[Datei:T-diagram.png|mini|Bartman-Diagramm]]
| |
| 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.<ref name="compilerdesign"/>
| |
|
| |
| == 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 [[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.
| |
|
| |
|
| [[Kategorie:Programmierung]] | | [[Kategorie:Programmierung]] |