Co to jest bootstrapping?

Ciągle widzę "bootstrapping" wspomniany w dyskusjach na temat tworzenia aplikacji. Wydaje się to zarówno powszechne, jak i ważne, ale jeszcze nie spotkałem się z nawet słabym wyjaśnieniem, czym tak naprawdę jest bootstrapping; raczej wydaje się, że wszyscy po prostu powinni wiedzieć, co to znaczy. Ale ja nie. Prawie jak mogę się domyślić, ma to coś wspólnego z zadaniami inicjalizacji wymaganymi od aplikacji po uruchomieniu, ale mogę się całkowicie mylić co do tego. Czy ktoś może pomóż mi zrozumieć ten pomysł?

Author: Alex Basson, 2009-08-10

14 answers

"Bootstrapping" pochodzi od terminu " podciąganie się przez własne bootstrapy."Tyle można dostać z Wikipedii.

W komputerach, Bootstrap loader jest pierwszym fragmentem kodu, który działa, gdy maszyna uruchamia się i jest odpowiedzialny za załadowanie reszty systemu operacyjnego. W nowoczesnych komputerach jest przechowywany w pamięci ROM, ale przypominam sobie proces bootstrap na PDP-11, w którym za pomocą przełączników na panelu przednim wczytywano bity w celu załadowania określonego segmentu dysku do pamięci, a potem go uruchom. Nie trzeba dodawać, że ładowarka bootstrap jest zwykle dość mała.

"Bootstrapping" jest również używany jako termin na budowanie systemu używającego samego siebie -- lub bardziej poprawnie, poprzedniej wersji. Na przykład, ANTLR Wersja 3 jest napisana przy użyciu parsera opracowanego w ANTLR Wersja 2.

 334
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 12:21:35

Przykład bootstrappingu znajduje się w niektórych frameworkach internetowych. Zadzwoń do indeksu.php (Bootstrapper), a następnie ładuje helpery frameworków, modele, konfigurację, a następnie ładuje kontroler i przekazuje mu kontrolę.

Jak widać, jest to prosty plik, który rozpoczyna duży proces.

 274
Author: ryeguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 16:13:45

Termin "bootstrapping" zwykle odnosi się do sytuacji, w której system zależy od siebie, aby rozpocząć, rodzaj problemu z kurczakiem i jajkiem.

Na przykład:

  • Jak skompilować kompilator C napisany w C?
  • Jak rozpocząć proces inicjalizacji systemu operacyjnego, jeÅ›li nie masz jeszcze uruchomionego systemu operacyjnego?
  • Jak uruchomić rozproszony (peer-to-peer) system, w którym klienci zależą od swoich obecnie znanych rówieÅ›ników, aby dowiedzieć siÄ™ o nowych rówieÅ›nikach w system?

W takim przypadku bootstrapping odnosi się do sposobu przełamania okrężnej zależności, zwykle za pomocą zewnętrznego podmiotu, np.

  • możesz użyć innego kompilatora C do skompilowania (bootstrap) wÅ‚asnego kompilatora, a nastÄ™pnie możesz go użyć do przekompilowania siÄ™
  • używasz oddzielnego fragmentu kodu, który ustawia poczÄ…tkowy proces bez zależnoÅ›ci od jakichkolwiek funkcji dostarczanych przez system operacyjny
  • używasz hard-zakodowanej listy poczÄ…tkowych rówieÅ›ników lub hard-zakodowanego trackera Adres URL, który dostarcza listÄ™ rówieÅ›ników

Itd.

 62
Author: Ivan Poliakov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-18 17:58:16

Zobacz artykuł na Wikipedii o bootstrapping .

Jest sekcja i linki wyjaśniające, co to znaczy w Computing. Ma cztery różne zastosowania w tej dziedzinie.

Oto kilka cytatów, ale dla bardziej dogłębnego wyjaśnienia i alternatywnych znaczeń, zajrzyj do linków powyżej.

" ... jest techniką, za pomocą której prosty program komputerowy aktywuje bardziej skomplikowany system programów."

" innym zastosowaniem terminu bootstrapping jest użycie kompilator, aby skompilować się, najpierw pisząc małą część kompilatora nowego języka programowania w istniejącym języku, aby skompilować więcej programów nowego kompilatora napisanych w nowym języku."

 51
Author: HeDinges,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

W kontekście tworzenia aplikacji, "bootstrapping" zwykle pojawia się, gdy mówimy o modularnym i/lub automatycznym aktualizowaniu oprogramowania.

Zamiast pobierać całą aplikację, w tym funkcje, których nie potrzebuje, i ponownie pobierać i ręcznie aktualizować ją za każdym razem, gdy jest aktualizacja, użytkownik pobiera tylko i uruchamia mały plik wykonywalny "bootstrap", który z kolei pobiera i instaluje te części aplikacji, które użytkownik potrzebuje. Dodatkowo bootstrap komponent może szukać aktualizacji i instalować je za każdym razem, gdy jest uruchamiany.

 25
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 12:29:29

Alex, tak robi twój komputer, gdy się uruchamia. ('Uruchamianie' komputera pochodzi od słowa bootstrapping)

Początkowo działa mały program w BIOSie. Zawiera wystarczająco dużo kodu maszynowego, aby załadować i uruchomić większy, bardziej złożony program.

Ten drugi program jest prawdopodobnie czymś w rodzaju NTLDR (w Windows) lub LILO( w Linuksie), który następnie wykonuje i jest w stanie załadować, a następnie uruchomić resztę systemu operacyjnego.

 16
Author: davewasthere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 14:08:38

Dla kompletności, jest to również dość ważne (i stosunkowo nowa) metoda w statystyce, która wykorzystuje resampling / symulacji wnioskować właściwości populacji z próby. Ma swój własny, obszerny artykuł na temat bootstrapping (statystyki) .

 14
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 13:47:33

Boot strapping the dictionary oznacza uruchomienie przy minimalnych zasobach. W kontekście systemu operacyjnego OS powinien być w stanie szybko załadować, gdy Power On Self Test (POST) stwierdzi, że bezpieczne jest obudzenie procesora. Kod paska rozruchowego zostanie uruchomiony z BIOS-u. BIOS to mały ROM. Ogólnie jest to Instrukcja skoku do zestawu instrukcji, które załadują system operacyjny DO PAMIĘCI RAM. Celem skoku jest sektor rozruchowy na dysku twardym. Once the program bios sprawdza, czy jest to prawidłowy sektor rozruchowy, który zawiera adres początkowy przechowywanego systemu operacyjnego, tj. czy jest to ważny rekord rozruchowy MBR (Master Boot Record), czy nie. Jeśli jest prawidłowy MBR, system operacyjny zostanie skopiowany do pamięci (RAM)stamtąd na OS dba o pamięć i zarządzanie procesami.

 4
Author: achoora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-19 05:54:45

IMHO nie ma lepszego wyjaśnienia niż fakt o Jak powstał pierwszy kompilator?

W dzisiejszych czasach ładowanie systemu operacyjnego jest najczęstszym procesem określanym jako Bootstrapping

 2
Author: Ivanzinho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:08

Bootstrapping ma jeszcze inne znaczenie w kontekście wzmacniania uczenia się, które mogą być przydatne dla programistów, oprócz jego wykorzystania w tworzeniu oprogramowania (większość odpowiedzi tutaj, np. przez kdgregory ) i jego wykorzystania w statystykach, jak omówił Dirk Eddelbuettel.

From :

[[0]}Widrow, Gupta, and Maitra (1973) zmodyfikował najmniejszy-średni-kwadrat (LMS) algorytm Widrowa i Hoffa (1960) wzmocnienie uczenie się reguł, które mogą uczyć się na sygnałach sukcesu i porażki zamiast z przykładów szkoleniowych. Nazwali tę formę uczenia się "selektywna adaptacja bootstrap " i opisał ją jako " uczenie się z krytyk "zamiast" nauki z nauczycielem."Przeanalizowali tę zasadę i pokazał, jak można nauczyć się grać w blackjacka. To był odosobniony do nauki wzmacniającej przez Widrowa, którego wkład w nauka nadzorowana była znacznie bardziej wpływowych.

W książce opisano różne algorytmy wzmocnienia, w których wartość docelowa jest oparta na wcześniejszym przybliżeniu jako metody bootstrap:

Wreszcie zauważamy ostatnia specjalna właściwość metod DP [Programowanie dynamiczne]. Wszystkie aktualizują szacunki wartości stanów na podstawie szacunków wartości następcy Stany. Oznacza to, że aktualizują szacunki na podstawie innych szacunki. Nazywamy to ogólną ideą bootstrapping . Wiele wzmocnień metody uczenia się wykonują bootstrapping, nawet te, które nie wymagają, zgodnie z wymaganiami DP, kompletnego i dokładnego modelu środowisko.

Zauważ, że różni się to od agregacji bootstrap i eksplozji inteligencji, o której jest mowa na stronie Wikipedii na temat Bootstrap.

 2
Author: Scipio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-31 10:47:58

Jeśli chodzi o to w odniesieniu do korzystania z popularnego Twitter Bootstrap mam wrażenie, że tego typu bootstrapping jest działaniem integrującym modułowy komponent z aplikacją internetową bez konieczności nawet uznać modułowy komponent istnieje, dopóki go nie potrzebuje lub odwołuje się do niego.

Programista może bezproblemowo zintegrować domyślną kopię motywu CSS Twitter Bootstrap, po prostu ładując go (odwołując się) do aplikacji internetowej. Vuola! W takim przypadku konieczne może być nadpisać niektóre z tych zmian, ale można to zrobić w taki sposób, że zasób/komponent jest nietknięty i całkowicie wielokrotnego użytku.

Ta sama koncepcja polega na tym, jak Programiści www implementują interfejsy API jQuery i tak dalej, ale nie jest tak naprawdę wyrażana przez programistów jako bootstrapping per se. To, co robi, to poprawia elastyczność i możliwość wielokrotnego użytku, pozwalając na izolację różnych komponentów / zasobów aplikacji, aby swobodnie przebywać na tym samym serwerze / s lub ewentualnie na CDN.

Uwaga: w informatyce bootstrapping zajmuje się MBR i w UNIX wymaga specjalnego bootloadera lub menedżera, który jest małym programem w ROM, który ładuje system operacyjny DO PAMIĘCI RAM. Jeśli się nad tym zastanowić, ta sama koncepcja ma miejsce w akcji Bootstrap loader sprawdzający MBR i ładujący system operacyjny oparty na tej tabeli, która ma miejsce bez systemu operacyjnego o tym nie ma pojęcia.

 1
Author: yardpenalty.com,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-05 07:36:08

Należę do pokolenia, które przełączyło przełączniki, aby wejść do programu rozruchowego. Na początku lat 80. pracowałem nad mikrokomputerem o nazwie Micro-78, opracowanym przez Electronics Corporation of India Ltd (ECIL). Był to rodzaj klonu Altair 8800. Wyraźnie pamiętam, co się dzieje, gdy mały program rozruchowy został wprowadzony za pomocą przełączników i wykonany przez naciśnięcie przycisku. Program odczytuje drugi program rozruchowy zawarty w 1. ścieżce dyskietki i nadpisuje go na sobie w takim sposób, w jaki drugi program rozruchowy uruchamia się w celu załadowania systemu operacyjnego dysku. Myślę, że termin " bootstrap "odnosi się do tego procesu odczytu pierwszego programu rozruchowego i nadpisania drugiego programu rozruchowego na siebie, w sposób" podciągający się " z dodatkową funkcjonalnością drugiego programu rozruchowego. To może być pochodzenie pierwotnego znaczenia "programu bootstrap".

 0
Author: Murthy KVM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-13 19:25:08

Jako odpowiedź na pytanie. Dla webmasterów. Doszedłem tak daleko i znalazłem dobre wyjaśnienie o bootsrapowaniu w Laravel doc. Oto link

Ogólnie rzecz biorąc, mamy na myśli rejestrowanie rzeczy, w tym rejestrowanie usługi wiązania kontenerów, słuchacze zdarzeń, oprogramowanie pośredniczące, a nawet trasy.

Mam nadzieję, że pomoże to komuś, kto uczy się tworzenia aplikacji internetowych.

 0
Author: Sword I,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-13 06:56:23

Jako skromny początkujący w świecie programowania i przeglądając wszystkie odpowiedzi tutaj po zobaczeniu tego słowa używanego w pozornie nieco inny sposób w różnych miejscach, znalazłem czytanie strony wikipedii na Bootstrapping (duh! Nie pomyślałem o tym na początku) jest bardzo pouczające, aby zrozumieć różnice w użyciu tego słowa. Możliwe......w bardzo rzadkich przypadkach......Wikipedia może mieć nawet lepsze wyjaśnienia niektórych terminów niż....(ZREDAGOWANO)? Czy jednak wprowadzą punkty rep na Wikipedii?

Wydaje mi się, że wszystkie znaczenia mają coś wspólnego: zacznij od czegoś tak prostego, jak to tylko możliwe Thing1, zrób coś nieco bardziej skomplikowanego z tym Thing2, a teraz możesz użyć Thing2, aby wykonać jakieś zadania bardziej wydajnie i szybko niż pierwotnie z Thing1. Następnie powtórz od Rzeczy2 Do Rzeczy 3 w nieskończoność...

Widzę to jako ściśle związane zarówno z ewolucją biologiczną, jak i "warstwami abstrakcji" (newbies jak ja zobaczyć, ahem, Wikipedia, kaszel) - ewolucja z 1940 komputerów z przełącznikami, kod maszynowy, Assembly, C, Python, AIs można dać wszelkiego rodzaju skomplikowane instrukcje jak " make the% 4^ % dinner to my default & ^ $ % requirements and clean the floor you%$£"@: ~ " in drunken slang English or Amazon Tribal dialect without them 'raising an exception' (for newbies again...zgadłeś) - przegapiłeś tam wiele linków z powodu zwykłej ignorancji.

Wtedy w pewnych specyficznych znaczenie oprogramowania: Znaczenie 1: Thing1 jest używany do załadowania najnowszej wersji Thing2 (ponieważ oczywiście Thing2 będzie większy niż Thing1, tak jak Thing3 będzie większy niż Thing2).

Meaning2: Thing1 jest językiem niższego poziomu (bliżej 1001011100....011001 niż druk ("Hello", user.name)) używany do napisania trochę wyższego języka Thing2, następnie ten kawałek Thing2 jest używany do rozszerzenia Thing2 się z poziomu słownictwa dziecka do poziomu słownictwa dorosłych (Thing2 zaczyna być przetwarzane, lub używać poprawnego terminu technicznego "skompilowany", przez samą wersję dziecka (to sprytne dziecko!), podczas gdy sama dziecięca wersja Thing2 może być oczywiście skompilowana tylko przez Thing1, ponieważ nie może istnieć zanim nie istnieje, prawda duh!), następnie dziecięca wersja Thing2 kompiluje Gburowatą wersję Thing2, w którym to momencie społeczność programistyczna decyduje, czy Gburowata Nastolatka ma "problemy" (termin software i termin metafora!) czy warto poświęcić wystarczająco dużo czasu, aby długo akceptować termin, lub porzucić je do (Nie wiem, gdzie wziąć analogię tutaj).

Jeśli tak, to Thing2 samo się "Bootstrapowało" (prawdopodobnie kilka razy) od dzieciństwa do dorosłości: "dziecko jest ojcem człowieka" (Wordsworth, sugeruj, nie próbuj szukać cytatu lub autora na Stack Overflow).

 -4
Author: Will Croxford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 16:47:02