Ich sehe immer wieder "Bootstrapping", das in Diskussionen über die Anwendungsentwicklung erwähnt wird. Es scheint sowohl weit verbreitet als auch wichtig zu sein, aber ich habe noch keine schlechte Erklärung dafür gefunden, was Bootstrapping eigentlich ist. Vielmehr scheint es, als ob jeder nur wissen soll, was es bedeutet. Ich aber nicht. Soweit ich das beurteilen kann, hat dies etwas mit Initialisierungsaufgaben zu tun, die für eine Anwendung beim Start erforderlich sind, aber ich könnte völlig falsch liegen. Kann mir jemand helfen, diese Idee zu verstehen?
bootstrapping
Alex Basson
quelle
quelle
Antworten:
"Bootstrapping" kommt vom Begriff "Ziehen Sie sich an Ihren eigenen Bootstraps hoch". So viel kann man von Wikipedia bekommen .
Beim Rechnen ist ein Bootstrap-Loader der erste Code, der beim Starten eines Computers ausgeführt wird und für das Laden des restlichen Betriebssystems verantwortlich ist. In modernen Computern ist es im ROM gespeichert, aber ich erinnere mich an den Bootstrap-Prozess auf dem PDP-11, bei dem Sie Bits über die Schalter auf der Vorderseite steckten, um ein bestimmtes Festplattensegment in den Speicher zu laden und dann auszuführen. Natürlich ist der Bootstrap-Loader normalerweise ziemlich klein.
"Bootstrapping" wird auch als Begriff für das Erstellen eines Systems verwendet, das sich selbst verwendet - oder genauer gesagt, eine Vorgängerversion. Beispielsweise wird ANTLR Version 3 mit einem in ANTLR Version 2 entwickelten Parser geschrieben.
quelle
Ein Beispiel für Bootstrapping finden Sie in einigen Webframeworks. Sie rufen index.php (den Bootstrapper) auf, laden dann die Framework-Helfer, Modelle und Konfigurationen, laden den Controller und geben die Steuerung an ihn weiter.
Wie Sie sehen können, ist es eine einfache Datei, die einen großen Prozess startet.
quelle
Siehe den Wikipedia-Artikel zum Bootstrapping .
Es gibt einen Abschnitt und Links, die erklären, was es in Computing bedeutet . Es hat vier verschiedene Anwendungen auf dem Gebiet.
Hier sind einige Zitate, aber für eine ausführlichere Erklärung und alternative Bedeutungen konsultieren Sie die obigen Links.
quelle
Der Begriff "Bootstrapping" bezieht sich normalerweise auf eine Situation, in der ein System zum Starten von sich selbst abhängt, eine Art Henne-Ei-Problem.
Zum Beispiel:
In diesem Fall bezieht sich Bootstrapping auf eine Möglichkeit, die zirkuläre Abhängigkeit zu brechen, normalerweise mit Hilfe einer externen Entität, z
usw.
quelle
Im Zusammenhang mit der Anwendungsentwicklung tritt normalerweise "Bootstrapping" auf, wenn es sich um modulare und / oder automatisch aktualisierbare Software handelt.
Anstatt dass der Benutzer die gesamte App einschließlich der nicht benötigten Funktionen herunterlädt und sie bei jedem Update erneut herunterlädt und manuell aktualisiert, lädt der Benutzer nur eine kleine ausführbare "Bootstrap" -Datei herunter und startet sie, die diese wiederum herunterlädt und installiert Teile der Anwendung, die der Benutzer benötigt. Darüber hinaus kann die Bootstrap-Komponente bei jedem Start nach Updates suchen und diese installieren.
quelle
Alex, es ist so ziemlich das, was dein Computer macht, wenn er hochfährt. ('Booten' eines Computers kommt eigentlich vom Wort Bootstrapping)
Zunächst wird das kleine Programm in Ihrem BIOS ausgeführt. Das enthält genug Maschinencode, um ein größeres, komplexeres Programm zu laden und auszuführen.
Dieses zweite Programm ist wahrscheinlich so etwas wie NTLDR (unter Windows) oder LILO (unter Linux), das dann den Rest des Betriebssystems ausführt und laden und dann ausführen kann.
quelle
Der Vollständigkeit halber ist es auch eine ziemlich wichtige (und relativ neue) Methode in der Statistik, die Resampling / Simulation verwendet, um Populationseigenschaften aus einer Stichprobe abzuleiten. Es gibt einen eigenen langen Wikipedia-Artikel zum Thema Bootstrapping (Statistik) .
quelle
Das Bootstrapping des Wörterbuchs bedeutet, mit minimalen Ressourcen zu starten. Im Kontext eines Betriebssystems sollte das Betriebssystem in der Lage sein, schnell zu laden, sobald der Power On Self Test (POST) feststellt, dass es sicher ist, die CPU aufzuwecken. Der Bootstrap-Code wird im BIOS ausgeführt. Das BIOS ist ein kleines ROM. Im Allgemeinen ist es eine Sprunganweisung zu dem Befehlssatz, der das Betriebssystem in den RAM lädt. Das Ziel des Sprunges ist der Bootsektor auf der Festplatte. Sobald das BIOS-Programm überprüft hat, handelt es sich um einen gültigen Bootsektor, der die Startadresse des gespeicherten Betriebssystems enthält, dh ob es sich um einen gültigen MBR (Master Boot Record) handelt oder nicht. Wenn es sich um einen gültigen MBR handelt, wird das Betriebssystem von dort in den Speicher (RAM) kopiert. Das Betriebssystem kümmert sich um die Speicher- und Prozessverwaltung.
quelle
IMHO gibt es keine bessere Erklärung als die Tatsache, wie der erste Compiler geschrieben wurde?
Heutzutage ist das Laden des Betriebssystems der häufigste Prozess, der als Bootstrapping bezeichnet wird
quelle
Bootstrapping hat im Kontext des verstärkenden Lernens eine weitere Bedeutung , die für Entwickler nützlich sein kann, zusätzlich zu seiner Verwendung in der Softwareentwicklung (die meisten Antworten hier, z. B. von kdgregory ) und seiner Verwendung in Statistiken, wie von Dirk Eddelbuettel diskutiert .
Von Sutton und Barto :
Das Buch beschreibt verschiedene Verstärkungsalgorithmen, bei denen der Zielwert auf einer vorherigen Näherung als Bootstrap-Methode basiert:
Beachten Sie, dass dies von der Bootstrap-Aggregation und der Intelligenz-Explosion abweicht, die auf der Wikipedia-Seite zum Bootstrapping erwähnt werden.
quelle
In Bezug auf die Verwendung des beliebten Twitter-Bootstraps denke ich, dass diese Art des Bootstrapings die Integration einer modularen Komponente in eine Webanwendung ist, ohne dass die Webanwendung die vorhandene modulare Komponente bestätigen muss, bis sie benötigt wird oder auf sie verweist .
Der Entwickler kann eine Standardkopie des CSS Twitter Bootstrap-Themas nahtlos integrieren, indem er es einfach in die Webanwendung lädt (referenziert). Vuola! In diesem Fall müssen Sie möglicherweise einige dieser Änderungen überschreiben. Sie können dies jedoch so tun, dass die Ressource / Komponente unberührt und vollständig wiederverwendbar ist.
Mit demselben Konzept implementieren Web Devs jQuery-APIs usw., aber es wird von Devs nicht wirklich als Bootstrapping an sich ausgedrückt. Dies verbessert die Flexibilität und Wiederverwendbarkeit und ermöglicht gleichzeitig die Isolierung verschiedener Komponenten / Ressourcen einer App, die sich entweder auf demselben Server oder möglicherweise auf einem CDN frei befinden können.
HINWEIS: Bei der Berechnung von Bootstrapping-Geschäften mit dem MBR und unter UNIX ist ein spezieller Bootloader oder Manager erforderlich, bei dem es sich um ein kleines Programm im ROM handelt, das das Betriebssystem in den RAM lädt. Wenn Sie darüber nachdenken, findet das gleiche Konzept in der Aktion des Bootstrap Loader statt, der den MBR überprüft und das Betriebssystem basierend auf dieser Tabelle lädt, ohne dass das Betriebssystem eine Ahnung davon hat, dass dies geschieht.
quelle
Ich gehöre zu der Generation, die Schalter umgelegt hat, um ein Boot-Programm aufzurufen. In den frühen 1980er Jahren arbeitete ich an einem Mikrocomputer namens Micro-78, der von der Electronics Corporation of India Ltd. (ECIL) entwickelt wurde. Es war eine Art Klon von Altair 8800. Ich erinnere mich genau, was passiert, wenn ein kleines Boot-Programm mit den Kippschaltern eingegeben und per Knopfdruck ausgeführt wird. Das Programm liest ein zweites Startprogramm, das in der ersten Spur der Diskette enthalten ist, und überschreibt es auf sich selbst, so dass das zweite Startprogramm ausgeführt wird, um ein Festplattenbetriebssystem zu laden. Ich denke, der Begriff "Bootstrap" bezieht sich auf diesen Prozess des ersten Bootprogramms, das das zweite Bootprogramm auf sich selbst liest und überschreibt, in einer Weise, die sich mit der zusätzlichen Funktionalität des zweiten Bootprogramms "hochzieht".
quelle
Als bescheidener Anfänger in der Welt des Programmierens und durchblätternd alle Antworten hier, nachdem ich gesehen hatte, dass dieses Wort an verschiedenen Stellen auf scheinbar leicht unterschiedliche Weise verwendet wurde, fand ich das Lesen der Wikipedia-Seite über Bootstrapping (duh! Ich habe nicht daran gedacht es ist entweder zunächst sehr informativ, Unterschiede in der Verwendung dieses Wortes zu verstehen . Könnte es sein, dass ...... in äußerst seltenen Fällen ...... Wikipedia möglicherweise sogar bessere Erklärungen für bestimmte Begriffe hat als .... (redigiert)? Werden sie jedoch Wiederholungspunkte auf Wikipedia einbringen?
Mir scheint, dass alle Bedeutungen etwas damit zu tun haben: Beginnen Sie mit etwas so Einfachem wie möglich, Ding1, machen Sie etwas etwas Komplexeres mit diesem Ding2, und jetzt können Sie mit Thing2 einige Aufgaben effizienter und schneller erledigen, als Sie könnten ursprünglich mit Thing1. Dann wiederholen Sie von Thing2 bis Thing 3 ad infinitum ...
Ich sehe es als eng verbunden sowohl mit der biologischen Evolution als auch mit 'Layers of Abstraction' (Neulinge wie ich, ahem, Wikipedia, Husten) - die Evolution von Computern aus den 1940er Jahren mit Schaltern, Maschinencode, Assembly, C, Python, AIs, die Sie geben können Alle Arten von komplexen Anweisungen, wie "Machen Sie das% 4 ^% Abendessen zu meinen Standard- & ^ $% -Anforderungen und reinigen Sie den Boden, den Sie% $ £" @: ~ "in betrunkenem Slang-Englisch oder Amazonas-Stammes-Dialekt, ohne dass sie eine Ausnahme auslösen '(wieder für Neulinge ... Sie haben es erraten) - habe dort aufgrund einfacher Ignoranz viele Links verpasst.
Dann in bestimmten spezifischen Software-Bedeutungen: Bedeutung1: Mit Thing1 wird die neueste Version von Thing2 geladen (da Thing2 natürlich größer als Thing1 ist, genauso wie Thing3 größer als Thing2 ist).
Bedeutung2: Thing1 ist eine niedrigere Sprache (näher an 1001011100 .... 011001 als print ("Hallo", Benutzername)), die verwendet wird, um ein wenig von der höheren Sprache von Thing2 zu schreiben, dann ist dies ein kleines bisschen von Thing2 wird verwendet, um Thing2 selbst von der Baby-Vokabelebene zur Erwachsenen-Vokabelebene zu erweitern (Thing2 wird von der Baby-Version von sich selbst verarbeitet (oder es ist ein cleveres Baby!), während die Baby-Version von Thing2 den korrekten Fachbegriff "kompiliert" verwendet selbst könnte natürlich nur von Thing1 kompiliert werden, weil es nicht existieren kann, bevor es existiert, richtig duh!), dann kompiliert die Kinderversion von Thing2 die Surly Teenager-Version von Thing2, und an diesem Punkt entscheidet die Programmier-Community, ob Surly Teenagers 'Probleme' ( Software-Begriff und Metapher-Begriff!) sind es wert, genügend Zeit für die Lösung aufzuwenden, um langfristig akzeptiert zu werden.oder sie aufzugeben (nicht sicher, wohin man die Analogie hier nehmen soll).
Wenn ja, dann hat sich Thing2 (möglicherweise einige Male) von der Kindheit bis zum Erwachsenenalter "gebootet": "Das Kind ist der Vater des Mannes" (Wordsworth, schlagen Sie vor, nicht das Zitat oder den Autor von Stack Overflow nachzuschlagen). .
quelle