Wat is bootstrapping?

Ik zie steeds dat “bootstrapping” wordt genoemd in discussies over applicatieontwikkeling. Het lijkt zowel wijdverbreid als belangrijk, maar ik ben nog geen flauwe uitleg tegengekomen van wat bootstrapping eigenlijk is; het lijkt eerder alsof iedereen gewoon zou moeten weten wat het betekent. Ik echter niet. Voor zover ik kan nagaan, heeft het iets te maken met initialisatietaken die vereist zijn voor een applicatie bij het opstarten, maar daar kan ik het helemaal mis hebben. Kan iemand me helpen dit idee te begrijpen?


Antwoord 1, autoriteit 100%

‘Bootstrapping’ komt van de term ‘jezelf omhoog trekken aan je eigen bootstraps’. Zoveel kun je krijgen van Wikipedia.

Bij computergebruik is een bootstrap-lader het eerste stukje code dat wordt uitgevoerd wanneer een machine start, en is verantwoordelijk voor het laden van de rest van het besturingssysteem. Op moderne computers wordt het opgeslagen in ROM, maar ik herinner me het bootstrap-proces op de PDP-11, waarbij je bits via de schakelaars op het voorpaneel zou prikken om een ​​bepaald schijfsegment in het geheugen te laden en het vervolgens uit te voeren. Onnodig te zeggen dat de bootstrap-lader normaal gesproken vrij klein is.

“Bootstrapping” wordt ook gebruikt als een term voor het bouwen van een systeem dat zichzelf gebruikt — of beter gezegd, een voorgaande versie. ANTLR versie 3 is bijvoorbeeld geschreven met behulp van een parser die is ontwikkeld in ANTLR versie 2.


Antwoord 2, autoriteit 84%

Een voorbeeld van bootstrapping is in sommige webframeworks. Je roept index.php (de bootstrapper) aan, en dan laadt het de frameworks helpers, modellen, configuratie, en laadt dan de controller en geeft het de controle door.

Zoals je kunt zien, is het een eenvoudig bestand dat een groot proces start.


Antwoord 3, autoriteit 25%

De term ‘bootstrapping’ is meestal van toepassing op een situatie waarin een systeem van zichzelf afhankelijk is om te starten, een soort kip-en-ei-probleem.

Bijvoorbeeld:

  • Hoe compileer je een C-compiler geschreven in C?
  • Hoe start je een OS-initialisatieproces als het OS nog niet actief is?
  • Hoe start je een gedistribueerd (peer-to-peer) systeem waarbij de clients afhankelijk zijn van hun huidige bekende peers om nieuwe peers in het systeem te ontdekken?

In dat geval verwijst bootstrapping naar een manier om de circulaire afhankelijkheid te doorbreken, meestal met de hulp van een externe entiteit, bijvoorbeeld

  • Je kunt een andere C-compiler gebruiken om je eigen compiler te compileren (bootstrap), en dan kun je hem gebruiken om zichzelf opnieuw te compileren
  • Je gebruikt een apart stuk code dat het eerste proces instelt zonder afhankelijk te zijn van functies die door het besturingssysteem worden geboden
  • U gebruikt een hard-coded lijst van initiële peers of een hard-coded tracker-URL die de peer-lijst levert

enz.


Antwoord 4, autoriteit 15%

Zie het Wikipedia-artikel over bootstrapping.

Er is een sectie en links die uitleggen wat het betekent in Computing. Het heeft vier verschillende toepassingen in het veld.

Hier zijn enkele citaten, maar voor een meer diepgaande uitleg en alternatieve betekenissen, raadpleeg de links hierboven.

“…is een techniek waarmee een eenvoudig computerprogramma een ingewikkelder systeem van programma’s activeert.”

“Een ander gebruik van de term bootstrapping is om een ​​compiler te gebruiken om zichzelf te compileren, door eerst een klein deel van een compiler van een nieuwe programmeertaal in een bestaande taal te schrijven om meer programma’s van de nieuwe compiler te compileren die in de nieuwe taal.”


Antwoord 5, autoriteit 8%

In de context van applicatie-ontwikkeling komt “bootstrapping” meestal naar voren als het gaat om modulaire en/of automatisch te updaten software.

In plaats van dat de gebruiker de hele app downloadt, inclusief functies die hij niet nodig heeft, en deze opnieuw downloadt en handmatig bijwerkt wanneer er een update is, downloadt en start de gebruiker alleen een klein “bootstrap” uitvoerbaar bestand, dat op zijn beurt downloadt en installeert die delen van de applicatie die de gebruiker nodig heeft. Bovendien kan de bootstrap-component naar updates zoeken en deze elke keer installeren wanneer deze wordt gestart.


Antwoord 6, autoriteit 5%

Alex, het is ongeveer wat je computer doet als hij opstart. (‘Een computer opstarten’ komt eigenlijk van het woord bootstrapping)

Aanvankelijk wordt het kleine programma in uw BIOS uitgevoerd. Die bevat voldoende machinecode om een ​​groter, complexer programma te laden en uit te voeren.

Dat tweede programma is waarschijnlijk zoiets als NTLDR (in Windows) of LILO (in Linux), dat vervolgens de rest van het besturingssysteem uitvoert en in staat is om te laden en vervolgens uit te voeren.


Antwoord 7, autoriteit 4%

Voor de volledigheid is het ook een vrij belangrijke (en relatief nieuwe) methode in de statistiek die resampling / simulatie gebruikt om populatie-eigenschappen uit een steekproef af te leiden. Het heeft zijn eigen lange Wikipedia-artikel over bootstrapping (statistieken).


Antwoord 8

Opstarten van het woordenboek betekent opstarten met minimale middelen. In de context van een besturingssysteem zou het besturingssysteem snel moeten kunnen laden zodra de Power On Self Test (POST) heeft vastgesteld dat het veilig is om de CPU te activeren. De opstartbandcode wordt uitgevoerd vanuit het BIOS. BIOS is een kleine ROM. Over het algemeen is het een spronginstructie naar de set instructies die het besturingssysteem naar het RAM zal laden. De bestemming van de Jump is de opstartsector op de harde schijf. Zodra het bios-programma controleert of het een geldige opstartsector is die het startadres van het opgeslagen besturingssysteem bevat, dwz of het een geldige MBR (Master Boot Record) is of niet. Als het een geldige MBR is, wordt het besturingssysteem gekopieerd naar het geheugen (RAM) van daaruit zorgt het besturingssysteem voor geheugen- en procesbeheer.


Antwoord 9

Bootstrapping heeft nog een andere betekenis in de context van reinforcement learning die nuttig kan zijn om te weten voor ontwikkelaars, naast het gebruik ervan bij softwareontwikkeling (de meeste antwoorden hier, bijv. door kdgregory) en het gebruik ervan in statistieken zoals besproken door Dirk Eddelbuettel.

Van Sutton en Barto:

Widrow, Gupta en Maitra (1973) hebben de Least-Mean-Square (LMS) aangepast
algoritme van Widrow en Hoff (1960) om een ​​versterking te produceren
leerregel die kan leren van succes- en faalsignalen
in plaats van uit trainingsvoorbeelden. Ze noemden deze vorm van leren
selectieve bootstrap-aanpassing en beschreef het als leren met een
criticus in plaats van leren met een leraar. Ze analyseerden deze regel
en liet zien hoe het blackjack kon leren spelen. Dit was een geïsoleerd
uitstapje naar versterkend leren door Widrow, wiens bijdragen aan
begeleid leren had veel meer invloed.

Het boek beschrijft verschillende versterkingsalgoritmen waarbij de doelwaarde is gebaseerd op een eerdere benadering als bootstrap-methoden:

Ten slotte merken we op:
een laatste speciale eigenschap van DP [Dynamic Programming]-methoden. Ze werken allemaal schattingen bij
van de waarden van staten op basis van schattingen van de waarden van de opvolger
staten. Dat wil zeggen, ze werken schattingen bij op basis van andere
schattingen. We noemen dit algemene idee bootstrapping. Veel versterking
leermethoden voeren bootstrapping uit, zelfs degenen die dat niet doen
vereisen, zoals DP vereist, een volledig en nauwkeurig model van de
omgeving.

Merk op dat dit verschilt van bootstrap-aggregatie en intelligentie-explosie die wordt vermeld op de wikipedia-pagina over bootstrapping.


Antwoord 10

IMHO er is geen betere uitleg dan het feit over Hoe werd de eerste compiler geschreven ?

Tegenwoordig is het laden van het besturingssysteem het meest gebruikelijke proces dat Bootstrapping wordt genoemd


Antwoord 11

Wat betreft het gebruik van de populaire Twitter Bootstrap, heb ik het gevoel dat dit type bootstrapping de actie is van het integreren van een modulaire component in een webtoepassing zonder dat de webtoepassing zelfs hoeft te erkennen dat de modulaire component bestaat totdat deze deze nodig heeft of verwijst ernaar.

De ontwikkelaar kan naadloos een standaardkopie van het CSS Twitter Bootstrap-thema integreren door het simpelweg in de webtoepassing te laden (verwijzen). Vul! Dan moet u misschien enkele van deze wijzigingen overschrijven, maar u kunt dit op zo’n manier doen dat de bron/component onaangetast en volledig herbruikbaar is.

Ditzelfde concept is hoe webontwikkelaars jQuery-API’s enzovoort implementeren, maar het wordt door ontwikkelaars niet echt uitgedrukt als bootstrapping op zich. Wat het doet, is dat het de flexibiliteit en herbruikbaarheid verbetert, terwijl het de isolatie van verschillende componenten/bronnen van een app mogelijk maakt om vrijelijk op dezelfde server(s) of mogelijk op een CDN te staan.

OPMERKING: Bij het berekenen van bootstrapping gaat het om de MBR en in UNIX is een speciale bootloader of manager nodig, een klein programma in het ROM dat het besturingssysteem in het RAM laadt. Als je erover nadenkt, vindt hetzelfde concept plaats in de actie van de bootstrap-lader die de MBR controleert en het besturingssysteem laadt op basis van deze tabel, wat gebeurt zonder dat het besturingssysteem enig idee heeft dat dit gebeurt.


Antwoord 12

Ik behoor tot de generatie die schakelaars omdraaide om een ​​opstartprogramma te openen. Begin jaren tachtig werkte ik aan een microcomputer genaamd Micro-78, ontwikkeld door Electronics Corporation of India Ltd (ECIL). Het was een soort kloon van Altair 8800. Ik herinner me nog goed wat er gebeurde als een klein opstartprogramma werd ingevoerd met behulp van de tuimelschakelaars en werd uitgevoerd door op een knop te drukken. Het programma leest een tweede opstartprogramma in het 1e spoor van de diskette en overschrijft het op zichzelf op zo’n manier dat het tweede opstartprogramma begint te lopen om een ​​schijfbesturingssysteem te laden. Ik denk dat de term “bootstrap” verwijst naar dit proces waarbij het eerste opstartprogramma het tweede opstartprogramma leest en overschrijft, op een manier die “zichzelf optrekt” met de extra functionaliteit van het tweede opstartprogramma. Dat kan de oorsprong zijn van de oorspronkelijke betekenis van “het bootstrap-programma”.


Antwoord 13

Als de vraag wordt beantwoord. Voor webontwikkeling.
Ik kwam zo ver en vond een goede uitleg over bootsrapen in Laravel doc. Hier is de link

Over het algemeen bedoelen we het registreren van dingen, inclusief het registreren van service
containerbindingen, gebeurtenislisteners, middleware en zelfs routes.

ik hoop dat het iemand zal helpen die de ontwikkeling van webapplicaties leert.


Antwoord 14

Als een bescheiden beginner in de wereld van programmeren, en ik bladerde door alle antwoorden hier nadat ik zag dat dit woord veel werd gebruikt op schijnbaar iets verschillende manieren op verschillende plaatsen, vond ik het lezen van de Wikipedia-pagina over Bootstrapping (duh! Ik deed het niet’ denk er in eerste instantie ook niet aan) is zeer informatief om verschillen in het gebruik van dit woord te begrijpen. Zou het kunnen zijn… in zeer zeldzame gevallen… Misschien heeft Wikipedia zelfs betere uitleg van bepaalde termen dan….(geredigeerd)? Zullen ze rep-punten op Wikipedia binnenhalen?

Voor mij lijken alle betekenissen iets te maken te hebben met: begin met iets zo eenvoudig mogelijk Thing1, maak iets iets ingewikkelder met dat Thing2, en nu kun je Thing2 gebruiken om bepaalde taken efficiënter en sneller uit te voeren dan je oorspronkelijk kon met Thing1. Herhaal dan van Thing2 tot Thing 3 tot in het oneindige…

Ik zie het als nauw verbonden met zowel biologische evolutie als ‘Layers of Abstraction’ (nieuwelingen zoals ik zie, ahem, Wikipedia, hoest) – de evolutie van computers uit de jaren 40 met schakelaars, machinecode, assemblage, C, Python, AI’s je kunt allerlei complexe instructies geven, zoals “maak het %4^%-diner volgens mijn standaard & ^$%-vereisten en maak de vloer schoon jij %$?”@:~” in dronken jargon Engels of Amazon tribal dialect zonder hen ‘een uitzondering opwerpen’ (weer voor nieuwelingen … je raadt het al) – heb daar veel links gemist vanwege eenvoudige onwetendheid.

Dan in bepaalde specifieke softwarebetekenissen:
Betekenis1: Thing1 wordt gebruikt om de nieuwste versie van Thing2 te laden (omdat Thing2 natuurlijk groter zal zijn dan Thing1, net zoals Thing3 groter zal zijn dan Thing2).

Betekenis2: Thing1 is een taal van een lager niveau (dichter bij 1001011100….011001 dan print(“Hallo”, “gebruikersnaam)) die wordt gebruikt om een ​​klein beetje van de hogere taal van Thing2 te schrijven, dan dit kleine beetje van Thing2 wordt gebruikt om Thing2 zelf uit te breiden van baby-vocabulaire naar volwassen-vocabulaire (Thing2 begint te worden verwerkt, of om de juiste technische term ‘gecompileerd’ te gebruiken, door de babyversie van zichzelf (het is een slimme baby!), terwijl de baby versie van Thing2 zelf kan natuurlijk alleen worden gecompileerd door Thing1, want het kan niet bestaan ​​voordat het bestaat, toch!), dan compileert de kindversie van Thing2 de Surly Teenager-versie van Thing2, waarna de programmeergemeenschap beslist of Surly Teenager’s ‘ ‘issues’ (softwareterm en metafoorterm!) zijn het waard om voldoende tijd te besteden aan het oplossen ervan om op lange termijn geaccepteerd te worden, of om ze aan over te laten (niet zeker waar ik de analogie hier vandaan moet halen).

Zo ja, dan heeft Thing2 zichzelf (mogelijk een paar keer) van de babytijd tot de volwassenheid ‘opgestart’: “het kind is de vader van de man” (Wordsworth, raad aan om het citaat of de auteur niet op te zoeken op Stack Overflow).

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes