Frage

In Diskussionen über die Anwendungsentwicklung wird immer wieder von „Bootstrapping“ gesprochen.Es scheint sowohl weit verbreitet als auch wichtig zu sein, aber ich habe bisher noch nicht einmal eine dürftige Erklärung dafür gefunden, was Bootstrapping eigentlich ist;Vielmehr scheint es, als ob jeder einfach wissen sollte, was es bedeutet.Ich allerdings nicht.Soweit ich es mir vorstellen kann, hat es etwas mit den Initialisierungsaufgaben zu tun, die eine Anwendung beim Start ausführen muss, aber da könnte ich mich völlig irren.Kann mir jemand helfen, diese Idee zu verstehen?

War es hilfreich?

Lösung

„Bootstrapping“ kommt aus dem Begriff „Ziehen Sie sich von Ihrem eigenen Schopf aus dem Sumpf.“ So viel können Sie erhalten von Wikipedia .

In der Computersprache ein Bootstraploader ist das erste Stück Code, der ausgeführt wird, wenn eine Maschine gestartet wird, und ist verantwortlich für den Rest des Betriebssystems geladen werden. In modernen Computern ist es im ROM gespeichert ist, aber ich erinnere den Bootstrap-Prozess auf der PDP-11, wo Sie Bits über die Frontplatte Schalter laden ein bestimmtes Festplattensegment in dem Speicher stecken würden, und führen Sie es dann. Unnötig zu sagen, der Bootstrap-Loader ist in der Regel ziemlich klein.

„Bootstrapping“ wird auch als Bezeichnung für den Aufbau eines Systems mit sich selbst verwendet - oder richtiger gesagt, eine Vorgängerversion. Zum Beispiel ANTLR Version 3 geschrieben wird, einen Parser in ANTLR Version 2 entwickelt wird.

Andere Tipps

Ein Beispiel für Bootstrapping ist in einigen Web-Frameworks. Sie rufen index.php (das Bootstrap-Programm) und dann lädt er die Gerüste Helfer, Modelle, Konfiguration und lädt dann den Controller und leitet Aus-Steuerung zu.

Wie Sie sehen, es ist eine einfache Datei, die einen großen Prozess gestartet wird.

Auf dem Wikipedia-Artikel über Bootstrapping .

Es gibt einen Abschnitt und Links zu erklären, was es bedeutet, in Computing . Es verfügt über vier verschiedene Anwendungen im Bereich.

Hier sind einige Zitate, aber für eine genaue Erklärung, und alternative Bedeutungen haben, konsultieren Sie die Links oben.

  

„... ist eine Technik, mit der ein einfaches Computerprogramm ein komplizierteres System von Programmen aktiviert.“

     

"Eine andere Verwendung des Begriff Bootstrapping ist einen Compiler zu verwenden, selbst zu kompilieren, indem zunächst einen kleinen Teil eines Compilers einer neuen Programmiersprache in einer bestehenden Sprach Schreiben mehr Programme des neuen Compiler in den neuen geschrieben zu kompilieren Sprache. "

Der Begriff „Bootstrapping“ gilt in der Regel auf eine Situation, in der ein System auf sich selbst abhängt, beginnen Art ein Huhn-Ei-Problem.

Zum Beispiel:

  • Wie kompilieren Sie einen C-Compiler in C geschrieben?
  • Wie man ein O Initialisierung nicht starten, wenn Sie noch laufen nicht das O haben?
  • Wie starten Sie eine verteilte (Peer-to-Peer-System), wo die Kunden auf ihre derzeit bekannten Peers hängen über neue Kollegen im System, um herauszufinden?

In diesem Fall bezieht sich Bootstrapping auf einen Weg, um die zyklische Abhängigkeit zu brechen, in der Regel mit Hilfe einer externen Einheit, z.

  • Sie können einen anderen C-Compiler verwenden, um (Bootstrap) Ihren eigenen Compiler zu kompilieren, und dann können Sie es verwenden, um sich selbst neu kompilieren
  • Sie verwenden ein separates Stück Code, der erste Prozess auf alle Funktionen, ohne abhängig vom Betriebssystem
  • vorgesehen einrichtet
  • Sie verwenden eine hartcodierte Liste des anfänglichen Peers oder eine hartcodierte Tracker-URL, die die Peer-Liste
  • liefert

etc.

Im Rahmen der Anwendungsentwicklung „Bootstrapping“ kommt in der Regel nach oben, wenn man über modulare und / oder auto-aktualisierbare Software.

Anstatt die Benutzer die gesamte App herunterladen, einschließlich den Features, die er nicht, und wieder das Herunterladen benötigt und es manuell zu aktualisieren, wenn es ein Update ist, kann der Benutzer nur Downloads und startet eine kleine „Bootstrap“ ausführbare Datei, die wiederum Downloads und installiert die Teile der Anwendung, die der Benutzer benötigt. Zusätzlich wird die Bootstrap-Komponente nach Updates zu suchen ist in der Lage, und installieren Sie sie jedes Mal es gestartet wird.

Für die Vollständigkeit, es ist auch ein ziemlich wichtig (und relativ neu) Verfahren in der Statistik, das Resampling / Simulation verwendet aus einer Probe schließen Bevölkerung Eigenschaften. Es hat seine eigene lange Wikipedia-Artikel über Bootstrapping (Statistik) .

Alex, es ist ziemlich viel, was Ihr Computer tut, wenn er startet. ( 'Booting' ein Computer stammt tatsächlich aus dem Wort Bootstrapping)

Zunächst läuft das kleine Programm im BIOS. Das enthält genügend Maschinencode zu laden und ein größeres, komplexere Programm.

Das zweite Programm ist wahrscheinlich so etwas wie NTLDR (in Windows) oder LILO (in Linux), die dann ausgeführt und ist in der Lage zu laden, dann laufen, um den Rest des Betriebssystems.

Starten Sie die lexikalische Bedeutung Umreifung ist mit einem Minimum an Ressourcen zu starten. Im Kontext eines OS sollte das OS der Lage sein, einmal Self Test (POST) feststellt, dass seine sichere die CPU die Power On zu schnell geladen werden, um aufzuwachen. Der Bootstrap-Code wird vom BIOS ausgeführt werden. BIOS ist ein kleiner Größe ROM. Im Allgemeinen ist es ein Sprungbefehl zu dem Satz von Befehlen, die das Betriebssystem in den RAM geladen werden. Das Ziel des Sprungs ist der Bootsektor auf der Festplatte. Sobald das BIOS-Programm überprüft es ein gültiger Bootsektor ist, die die Startadresse des gespeicherten OS enthält, das heißt, ob es ein gültiger MBR (Master Boot Record) ist oder nicht. Wenn es ein gültiger MBR wird das OS auf dem OS in den Speicher (RAM) von dort kopiert werden nimmt Speicher- und Prozessmanagement.

IMHO es keine bessere Erklärung als die Tatsache, über ist Wie wurde der erste Compiler geschrieben ?

In diesen Tagen Laden des Betriebssystems ist die häufigste Verfahren als Bootstrapping bezeichnet

Im Hinblick auf die es in Bezug auf die Verwendung der populären Twitter Bootstrap Ich mag diese Art von Bootstrapping fühlen, ist die Wirkung einer modularen Komponente in eine Web-Anwendung, ohne die Web-Anwendung zu integrieren, die sogar die modulare Komponente bestätigen existiert, bis er es braucht oder Referenzen es.

Der Entwickler kann nahtlos eine Standard-Kopie des CSS Twitter Bootstrap Themas durch einfachen Laden (Referenzierung) in die Web-Anwendung integrieren. Vuola! Dann müssen Sie möglicherweise einige dieser Änderungen außer Kraft zu setzen, aber man kann so in einer solchen Art und Weise tun, dass die Ressource / Komponente ist unberührt und vollständig wiederverwendbar.

Das gleiche Konzept ist, wie Web Devs jQuery APIs implementieren und so weiter, aber es ist nicht wirklich von Devs als Bootstrapping per se ausgedrückt. Was sie tut, ist es Flexibilität und Wiederverwendbarkeit verbessert, während der Isolation der verschiedenen Komponenten ermöglicht / Ressourcen einer App frei wohnen entweder auf dem gleichen Server / s oder möglicherweise auf einem CDN.

Hinweis: In Bootstrapping Angebote Berechnung mit dem MBR und in UNIX es einen speziellen Bootloader oder Manager benötigt, die ein kleines Programm in ROM ist, die das Betriebssystem in den Arbeitsspeicher lädt. Wenn man darüber nachdenkt das gleiche Konzept findet in der Wirkung des Bootstraploader den MBR überprüft und das Betriebssystem auf dieser Tabelle basiert Laden, die ohne das Betriebssystem tritt eine Idee haben, dass dies geschieht.

Bootstrapping hat noch eine andere Bedeutung im Kontext von Verstärkung Lernen , die zusätzlich für Entwickler, zu wissen, kann nützlich sein, hier auf seine Verwendung in der Softwareentwicklung (die meisten Antworten, zB durch kdgregory ) und seine Verwendung in der Statistik als von Dirk diskutiert Eddelbuettel .

Sutton und Barto :

  

Widrow, Gupta und Maitra (1973) modifiziert die Least-Mean-Square (LMS)   Algorithmus von Widrow und Hoff (1960), um eine Verstärkung zu erzeugen,   Lernregel, die von Erfolg und Misserfolg Signalen lernen könnte   statt aus Trainingsbeispielen. Sie nannten diese Form des Lernens   „ selektive Bootstrap-Anpassung “ und bezeichnete sie als „mit einem Lern   Kritiker“statt‚mit einem Lehrer zu lernen.‘Sie analysierten diese Regel   und zeigte, wie es lernen könnte, Blackjack zu spielen. Dies war ein isoliertes   Ausflug in die Verstärkung Lernen durch Widrow, deren Beiträge zu   wachtes Lernen war viel mehr Einfluss.

Das Buch beschreibt verschiedene Verstärkungsalgorithmen, wo der Zielwert auf einer früheren Angleichung als Bootstrap-Verfahren basiert:

  

Schließlich stellen wir fest,    eine letzte besondere Eigenschaft DP [Dynamische Programmierung] Methoden. Alle von ihnen Update Schätzungen   der Werte von Staaten auf Schätzungen der Werte der Nachfolger basiert   Zustände. Das heißt, aktualisieren sie Schätzungen auf der Grundlage anderer   schätzt. Wir nennen diese allgemeine Idee Bootstrapping . viele Verstärkung   Lernmethoden durchführen Bootstrapping, auch solche, die dies nicht tun   erfordern, als DP erfordert, ein vollständiges und genaues Modell der   Umwelt.

Beachten Sie, dass diese von Bootstrap unterscheidet Aggregation und Intelligenzexplosion, die auf der Wikipedia-Seite erwähnt wird, auf Bootstrapping.

Ich gehöre zu der Generation, die Schalter blätterte ein Boot-Programm aufzurufen. In den frühen 1980er Jahren arbeitete ich an einem Mikrocomputer namens Micro-78, entwickelt von Electronics Corporation of India Ltd (ECIL). Es war eine Art Klon von Altair 8800. Ich weiß noch genau, was passiert, wenn ein kleines Boot-Programm eingegeben wurde, um die Kippschaltern mit und ausgeführt durch Drücken einer Taste. Das Programm liest ein zweites Boot-Programm in der ersten Spur der Diskette enthalten sind, und überschreibt sie sich selbst in einer Weise, dass das zweite Boot-Programm startet die Ausführung eines Plattenbetriebssystem zu laden. Ich denke, der Begriff „Bootstrap“ bezieht sich auf diesen Prozess des ersten Programmlese Boot und auf sich selbst das zweite Boot-Programm überschrieben wird, in einer Weise, mit der zusätzlichen Funktionalität des zweiten Boot-Programm „selbst nach oben ziehen“. Das mag der Ursprung der ursprünglichen Bedeutung des Begriffs „Bootstrap-Programm“ sein.

Als bescheidener Anfänger in der Welt des Programmierens und als ich alle Antworten hier durchblätterte, nachdem ich gesehen hatte, dass dieses Wort an verschiedenen Orten auf scheinbar leicht unterschiedliche Weise verwendet wurde, habe ich die Wikipedia-Seite über Bootstrapping gelesen (duh!Daran habe ich zunächst auch nicht gedacht) ist sehr aufschlussreich zu verstehen Unterschiede im Gebrauch dieses Wortes.Könnte es sein...in extrem seltenen Fällen...Wikipedia könnte sogar bessere Erklärungen für bestimmte Begriffe haben als...(redigiert)?Werden sie aber Reputationspunkte auf Wikipedia einbringen?

Für mich scheinen alle Bedeutungen etwas damit zu tun zu haben:Beginnen Sie mit etwas möglichst Einfachem, Thing1, machen Sie etwas etwas Komplexeres mit Thing2, und jetzt können Sie Thing2 verwenden, um bestimmte Aufgaben effizienter und schneller zu erledigen, als Sie es ursprünglich mit Thing1 konnten.Dann wiederholen Sie den Vorgang von Ding2 bis Ding 3 bis ins Unendliche ...

Ich sehe es als eng mit der biologischen Evolution und den „Ebenen der Abstraktion“ verbunden (Neulinge wie ich sehen, ähm, Wikipedia, hüstel) – die Entwicklung von Computern aus den 1940er Jahren mit Schaltern, Maschinencode, Assembly, C, Python und KIs, die Sie angeben können alle möglichen komplexen Anweisungen wie „Machen Sie das %4^% Abendessen gemäß meinen &^$% Anforderungen zu und reinigen Sie den Boden, %$£“@:~“ in betrunkenem Slang-Englisch oder Amazonas-Stammesdialekt, ohne dass sie eine Ausnahme auslösen ' (wieder für Neulinge ... Sie haben es erraten) - viele Links dort aus schlichter Unwissenheit verpasst.

Dann in bestimmten spezifischen Softwarebedeutungen:Bedeutung1:Thing1 wird zum Laden der neuesten Version von Thing2 verwendet (da Thing2 natürlich größer als Thing1 sein wird, genauso wie Thing3 größer als Thing2 sein wird).

Bedeutung2:Thing1 ist eine Sprache niedrigerer Ebene (näher an 1001011100....011001 als print("Hallo, ", Benutzername)), die zum Schreiben eines kleinen Teils der höheren Sprache von Thing2 verwendet wird, dann ist dieser kleine Teil von Thing2 gewohnt Erweitern Sie Thing2 selbst von der Baby-Vokabularebene zur Erwachsenen-Vokabularebene (Thing2 beginnt mit der Verarbeitung oder, um den richtigen Fachbegriff zu verwenden, „kompiliert“ durch die Babyversion von sich selbst (es ist ein kluges Baby!), wohingegen die Babyversion von Thing2 selbst dies könnte natürlich nur von Thing1 kompiliert werden, weil es nicht existieren kann, bevor es existiert, richtig duh!), dann kompiliert die untergeordnete Version von Thing2 die Surly Teenager-Version von Thing2, woraufhin die Programmiergemeinschaft entscheidet, ob Surly Teenagers „Probleme“ (Softwarebegriff) auftreten Es lohnt sich, genügend Zeit in die Lösung zu investieren, um langfristig akzeptiert zu werden oder sie aufzugeben (ich bin mir nicht sicher, wo ich die Analogie hier hinführen soll).

Wenn ja, dann hat sich Thing2 (möglicherweise ein paar Mal) von der Kindheit zum Erwachsenenalter „gebootet“:„Das Kind ist der Vater des Mannes“ (Wordsworth empfiehlt, nicht zu versuchen, das Zitat oder den Autor auf Stack Overflow nachzuschlagen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top