Bootstrapping/Computing

Aus Foxwiki

Bootstrapping - In der Computertechnik bezieht sich der Begriff Bootstrapping auf Sprach-Compiler, die in derselben Sprache kodiert werden können.

Beschreibung

Computing

In der Computertechnik bezieht sich der Begriff Bootstrapping auf Sprach-Compiler, die in derselben Sprache kodiert werden können. (Zum Beispiel wird ein C-Compiler jetzt in der Sprache C geschrieben. Sobald der grundlegende Compiler geschrieben ist, können iterativ Verbesserungen vorgenommen werden, wodurch die Sprache an den eigenen Fesseln gezogen wird.) Außerdem bezieht sich Booten in der Regel auf den Prozess des Ladens der Basissoftware in den Speicher eines Computers nach dem Einschalten oder dem allgemeinen Zurücksetzen, wobei der Kernel das Betriebssystem lädt, das sich dann um das Laden anderer Gerätetreiber und Software kümmert.

Software laden und ausführen

Booten | Reboot (Computer) Das Booten ist der Prozess des Startens eines Computers, insbesondere im Hinblick auf das Starten seiner Software. Der Prozess umfasst eine Kette von Schritten, bei denen in jedem Schritt ein relativ kleines und einfaches Programm geladen und dann das größere, kompliziertere Programm des nächsten Schritts ausgeführt wird. In diesem Sinne "zieht sich der Computer an seinen eigenen Fesseln hoch", d. h. er verbessert sich aus eigener Kraft. Das Booten ist eine Kette von Ereignissen, die mit der Ausführung von hardwarebasierten Prozeduren beginnt und dann an die Firmware und Software weitergegeben werden kann, die in den Hauptspeicher geladen wird. Das Booten umfasst häufig Vorgänge wie die Durchführung von Selbsttests, das Laden von Konfigurationseinstellungen, das Laden eines BIOS, residenter Monitore, eines Hypervisors, eines Betriebssystems oder von Dienstprogramm.

Der Begriff "Bootstrap" wurde in den 1950er Jahren als Metapher für das Hochfahren von Computern geprägt. Bei Computern führte das Drücken einer Bootstrap-Taste dazu, dass eine festverdrahtetes Programm ein Bootstrap-Programm aus einer Eingabeeinheit las. Der Computer führte daraufhin das Bootstrap-Programm aus, was dazu führte, dass er weitere Programmanweisungen las. Dies wurde zu einem sich selbst erhaltenden Prozess, der ohne externe Hilfe durch manuell eingegebene Anweisungen ablief. Der Begriff "Bootstrap" wird seit mindestens 1953 in der Informatik verwendet.

Softwareentwicklung

Bootstrapping kann sich auch auf die Entwicklung von immer komplexeren, schnelleren Programmierumgebungen beziehen. Die einfachste Umgebung ist vielleicht ein sehr einfacher Texteditor (z.B., ed) und ein Assembler. Mit diesen Werkzeugen kann man einen komplexeren Texteditor und einen einfachen Compiler für eine höhere Sprache schreiben und so weiter, bis man eine Grafik IDE und eine extrem hohe Programmiersprache.

Historisch gesehen bezieht sich der Begriff Bootstrapping auch auf eine frühe Technik zur Entwicklung von Computerprogrammen auf neuer Hardware. Die in diesem Absatz beschriebene Technik wurde durch die Verwendung eines Cross-Compilers ersetzt, der von einem bereits vorhandenen Computer ausgeführt wird. Das Bootstrapping in der Programmentwicklung begann in den 1950er Jahren, als jedes Programm auf Papier im Dezimalcode oder im Binärcode, Bit für Bit (1s und 0s), erstellt wurde, weil es keine höhere Computersprache, keinen Compiler, keinen Assembler und keinen Linker gab. Für einen neuen Computer (z. B. den IBM 650) wurde ein winziges Assemblerprogramm von Hand geschrieben, das einige Anweisungen in Binär- oder Dezimalcode umwandelte: A1. Dieses einfache Assemblerprogramm wurde dann in der gerade definierten Assemblersprache neu geschrieben, jedoch mit Erweiterungen, die die Verwendung einiger zusätzlicher Mnemonics für komplexere Operationscodes ermöglichten. Das Quellprogramm des erweiterten Assemblers wurde dann vom ausführbaren Programm seines Vorgängers (A1) in Binär- oder Dezimalcode assembliert, um A2 zu erhalten, und der Zyklus wiederholte sich (nun mit den verfügbaren Erweiterungen), bis der gesamte Befehlssatz kodiert war, Verzweigungsadressen automatisch berechnet und andere Annehmlichkeiten (wie bedingte Assemblierung, Makros, Optimierungen usw.) eingeführt waren. Auf diese Weise wurde das frühe Symbolic Optimal Assembly Program (SOAP) entwickelt. Compiler, Linker, Loader und Hilfsprogramme wurden dann in Assemblersprache kodiert, wodurch der Bootstrapping-Prozess der Entwicklung komplexer Softwaresysteme durch die Verwendung einfacherer Software fortgesetzt wurde.

Der Begriff wurde auch von Doug Engelbart verwendet, um auf seine Überzeugung zu verweisen, dass sich Organisationen besser entwickeln können, wenn sie den Prozess, den sie zur Verbesserung einsetzen, verbessern (und so im Laufe der Zeit einen Compounding-Effekt erzielen). Sein SRI-Team, das das NLS-Hypertextsystem entwickelte, wandte diese Strategie an, indem es das von ihm entwickelte Werkzeug zur Verbesserung des Werkzeugs einsetzte.

Compilers

Bootstrapping (Compiler) Die Entwicklung von Compilern für neue Programmiersprachen, die zunächst in einer bestehenden Sprache entwickelt, dann aber in der neuen Sprache umgeschrieben und selbst kompiliert werden, ist ein weiteres Beispiel für den Bootstrapping-Gedanken.

Installationsprogramme

Installation (Computerprogramme) Bei der Installation von Computerprogrammen ist es manchmal notwendig, das Installationsprogramm oder den Paketmanager selbst zu aktualisieren. Das übliche Muster hierfür ist die Verwendung einer kleinen ausführbaren Bootstrapper-Datei (z. B. setup.exe), die das Installationsprogramm aktualisiert und nach der Aktualisierung die eigentliche Installation startet. Manchmal installiert der Bootstrapper auch andere Voraussetzungen für die Software während des Bootstrapping-Prozesses.

Overlay-Netzwerke

Bootstrapping-Knoten Ein Bootstrapping-Knoten, auch als Rendezvous-Host bezeichnet, ist ein Knoten in einem Overlay-Netz, der neu hinzukommenden Knoten anfängliche Konfigurationsinformationen zur Verfügung stellt, damit diese dem Overlay-Netz erfolgreich beitreten können.

Diskrete-Ereignis-Simulation

Diskrete-Ereignis-Simulation Eine Art der Computersimulation, die ereignisdiskrete Simulation, stellt den Betrieb eines Systems als chronologische Abfolge von Ereignissen dar. Dabei wird eine Technik verwendet, die als Bootstrapping des Simulationsmodells bezeichnet wird und bei der anfängliche Datenpunkte mit Hilfe eines Pseudozufallszahlengenerators gebootstrappt werden, um eine anfängliche Reihe anstehender Ereignisse zu planen, die weitere Ereignisse planen, und mit der Zeit nähert sich die Verteilung der Ereigniszeiten ihrem Fließgleichgewicht an - das Bootstrapping-Verhalten wird vom Fließgleichgewichtsverhalten überlagert.

Künstliche Intelligenz und maschinelles Lernen

Bootstrap-Aggregation | Intelligenzexplosion Bootstrapping ist eine Technik zur iterativen Verbesserung der Leistung eines Klassifikators. In der Regel werden mehrere Klassifikatoren auf verschiedenen Eingabedatensätzen trainiert, und bei Vorhersageaufgaben werden die Ergebnisse der verschiedenen Klassifikatoren kombiniert.

Seed AI ist eine hypothetische Art von künstlicher Intelligenz, die zur rekursiven Selbstverbesserung fähig ist. Nachdem sie sich selbst verbessert hat, würde sie sich selbst immer weiter verbessern, was zu einem exponentiellen Anstieg der Intelligenz führen könnte. Es ist nicht bekannt, dass es eine solche KI gibt, aber sie bleibt ein aktives Forschungsgebiet. Seed-KI ist ein wichtiger Bestandteil einiger Theorien über die technologische Singularität: Befürworter glauben, dass die Entwicklung von Seed-KI schnell zu immer besserer Intelligenz (durch Bootstrapping) und damit zu einer neuen Ära führen wird.


Anhang

Siehe auch

Links

Weblinks