Ciągle widzę „bootstrapping” wspomniany w dyskusjach na temat rozwoju aplikacji. Wydaje się to zarówno powszechne, jak i ważne, ale jeszcze nie spotkałem się nawet z kiepskim wyjaśnieniem, czym tak naprawdę jest bootstrapping; wydaje się, że wszyscy powinni wiedzieć, co to znaczy. Ale ja nie. O ile mi wiadomo, ma to coś wspólnego z zadaniami inicjalizacyjnymi wymaganymi od aplikacji podczas uruchamiania, ale mogę się w tym całkowicie mylić. Czy ktoś może mi pomóc zrozumieć ten pomysł?
bootstrapping
Alex Basson
źródło
źródło
Odpowiedzi:
„Bootstrapping” pochodzi od terminu „ciągnięcie się za własne bootstrapy”. Tyle możesz uzyskać z Wikipedii .
W informatyce moduł ładujący jest pierwszym fragmentem kodu, który jest uruchamiany podczas uruchamiania komputera i jest odpowiedzialny za ładowanie reszty systemu operacyjnego. W nowoczesnych komputerach jest przechowywany w pamięci ROM, ale przypominam sobie proces ładowania początkowego na PDP-11, w którym biłeś bity za pomocą przełączników na panelu przednim, aby załadować określony segment dysku do pamięci, a następnie uruchomić go. Nie trzeba dodawać, że moduł ładujący jest zwykle dość mały.
„Bootstrapping” jest również używany jako termin na zbudowanie systemu z wykorzystaniem samego siebie - lub bardziej poprawnie, poprzedniej wersji. Na przykład ANTLR wersja 3 jest napisana przy użyciu analizatora składni opracowanego w ANTLR wersja 2.
źródło
Przykładem ładowania początkowego są niektóre frameworki internetowe. Wywołujesz index.php (bootstrapper), a następnie ładuje pomocniki 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.
źródło
Zobacz artykuł w Wikipedii na temat ładowania .
Istnieje sekcja i linki wyjaśniające, co to znaczy w informatyce . Ma cztery różne zastosowania w terenie.
Oto kilka cytatów, ale aby uzyskać bardziej szczegółowe wyjaśnienia i alternatywne znaczenia, zapoznaj się z powyższymi linkami.
źródło
Termin „bootstrapping” zwykle odnosi się do sytuacji, w której system zależy od siebie, czegoś w rodzaju problemu z kurczakiem i jajkiem.
Na przykład:
W takim przypadku ładowanie początkowe odnosi się do sposobu przełamania okrągłej zależności, zwykle za pomocą zewnętrznego podmiotu, np
itp.
źródło
W kontekście rozwoju aplikacji zwykle pojawia się „ładowanie”, gdy mówimy o oprogramowaniu modułowym i / lub automatycznej aktualizacji.
Zamiast pobierać całą aplikację, w tym funkcje, których nie potrzebuje, a także ponownie pobierać i ręcznie aktualizować, gdy tylko pojawi się aktualizacja, użytkownik tylko pobiera i uruchamia mały plik wykonywalny „bootstrap”, który z kolei pobiera i instaluje te części aplikacji, których potrzebuje użytkownik. Ponadto składnik bootstrap może wyszukiwać aktualizacje i instalować je przy każdym uruchomieniu.
źródło
Alex, to właściwie to, co robi twój komputer po uruchomieniu. („Uruchamianie” komputer faktycznie pochodzi od słowa bootstrapping)
Początkowo działa mały program w systemie BIOS. Zawiera wystarczającą ilość kodu maszynowego, aby załadować i uruchomić większy, bardziej złożony program.
Ten drugi program jest prawdopodobnie czymś w rodzaju NTLDR (w systemie Windows) lub LILO (w systemie Linux), który następnie uruchamia się i jest w stanie załadować, a następnie uruchomić resztę systemu operacyjnego.
źródło
Dla kompletności jest to również dość ważna (i stosunkowo nowa) metoda w statystyce, która wykorzystuje ponowne próbkowanie / symulację w celu wywnioskowania właściwości populacji z próbki. Ma swój długi artykuł w Wikipedii na temat ładowania (statystyki) .
źródło
Bootowanie pasujące do słownika oznacza uruchomienie z minimalnymi zasobami. W kontekście systemu operacyjnego system operacyjny powinien mieć możliwość szybkiego ładowania, gdy autotest po włączeniu zasilania (POST) ustali, że proces budzenia jest bezpieczny. Kod paska rozruchowego będzie uruchamiany z systemu BIOS. BIOS to mały ROM. Ogólnie jest to instrukcja skoku do zestawu instrukcji, która załaduje system operacyjny do pamięci RAM. Celem skoku jest sektor rozruchowy na dysku twardym. Po sprawdzeniu przez program bios jest to prawidłowy sektor rozruchowy, który zawiera adres początkowy zapisanego systemu operacyjnego, tj. Czy jest to prawidłowy MBR (główny rekord rozruchowy), czy nie. Jeśli jest to prawidłowy MBR, system operacyjny zostanie skopiowany do pamięci (RAM), a stamtąd system operacyjny zajmie się zarządzaniem pamięcią i procesem.
źródło
IMHO nie ma lepszego wytłumaczenia niż to, jak napisano pierwszy kompilator?
Obecnie ładowanie systemu operacyjnego jest najczęstszym procesem zwanym ładowaniem początkowym
źródło
Bootstrapping ma jeszcze inne znaczenie w kontekście uczenia się przez zbrojenie, które może być przydatne dla programistów, oprócz jego wykorzystania w tworzeniu oprogramowania (większość odpowiedzi tutaj, np. Przez kdgregory ) i jego zastosowania w statystykach omówionych przez Dirka Eddelbuettel .
Od Sutton i Barto :
Książka opisuje różne algorytmy zbrojenia, w których wartość docelowa opiera się na poprzednim przybliżeniu jako metodach ładowania początkowego:
Zauważ, że różni się to od agregowania bootstrapu i eksplozji inteligencji, o której wspomniano na stronie wikipedia o ładowaniu.
źródło
Jeśli chodzi o korzystanie z popularnego Bootstrap na Twitterze, wydaje mi się, że ten rodzaj bootstrapowania polega na zintegrowaniu modułowego komponentu z aplikacją internetową, przy czym aplikacja internetowa nie musi nawet potwierdzać, że modułowy moduł istnieje, dopóki go nie potrzebuje lub do którego się odwołuje .
Deweloper może bezproblemowo zintegrować domyślną kopię motywu Bootstrap CSS na Twitterze, po prostu ładując go (odwołując się) do aplikacji sieci Web. Vuola! Następnie może być konieczne zastąpienie niektórych z tych zmian, ale można to zrobić w taki sposób, aby zasób / komponent był nietknięty i można go było ponownie wykorzystać.
Ta sama koncepcja dotyczy sposobu, w jaki Web Devs implementują interfejsy API jQuery i tak dalej, ale nie jest tak naprawdę wyrażany przez Devs jako ładowanie jako takie. To, co robi, poprawia elastyczność i możliwość ponownego użycia, umożliwiając jednocześnie izolację różnych komponentów / zasobów aplikacji w celu swobodnego przebywania na tym samym serwerze lub serwerach CDN.
UWAGA: Podczas obliczania ładowania początkowego zajmuje się MBR, aw UNIX wymaga specjalnego programu ładującego lub menedżera, który jest małym programem w pamięci ROM, który ładuje system operacyjny do pamięci RAM. Jeśli się nad tym zastanowić, to ta sama koncepcja ma miejsce w działaniu modułu ładującego bootstrap sprawdzającego MBR i ładującego system operacyjny na podstawie tej tabeli, co ma miejsce, gdy system operacyjny nie ma pojęcia, że tak się dzieje.
źródło
Należę do generacji, która przerzuciła przełączniki, aby uruchomić program rozruchowy. Na początku lat 80. pracowałem nad mikrokomputerem o nazwie Micro-78, opracowanym przez Electronics Corporation of India Ltd (ECIL). Był to swego rodzaju klon Altair 8800. Pamiętam wyraźnie, co się dzieje, gdy wprowadzono mały program rozruchowy za pomocą przełączników i wykonano go naciskając przycisk. Program odczytuje drugi program rozruchowy zawarty w 1. ścieżce dyskietki i zastępuje go na sobie w taki sposób, że drugi program rozruchowy zaczyna się uruchamiać, aby załadować system operacyjny dysku. Myślę, że termin „bootstrap” odnosi się do procesu pierwszego programu rozruchowego, który odczytuje i nadpisuje drugi program rozruchowy na sobie, w sposób „podciągając się” dzięki dodatkowej funkcjonalności drugiego programu rozruchowego.
źródło
Jako skromny początkujący w świecie programowania i przeglądający wszystkie odpowiedzi tutaj po zobaczeniu tego słowa używanego w pozornie nieco odmienny sposób w różnych miejscach, zacząłem czytać stronę Wikipedii na temat Bootstrapping (duh! Nie myślałem o albo na początku) jest bardzo pouczające, aby zrozumieć różnice w użyciu tego słowa. Czy to możliwe ...... w bardzo rzadkich przypadkach ...... Wikipedia może nawet lepiej wyjaśniać niektóre terminy niż ... (redagowane)? Czy jednak przyniosą punkty przedstawicielskie na Wikipedii?
Wydaje mi się, że wszystkie znaczenia mają coś wspólnego: zacznij od czegoś tak prostego, jak to możliwe, Thing1, zrób coś nieco bardziej złożonego z Thing2, a teraz możesz używać Thing2 do wykonywania niektórych zadań bardziej wydajnie i szybciej niż możesz pierwotnie z Thing1. Następnie powtórz od Thing2 do Thing 3 ad infinitum ...
Widzę to jako ściśle związane zarówno z ewolucją biologiczną, jak i „Warstwami abstrakcji” (nowicjusze tacy jak ja, ahem, Wikipedia, kaszel) - ewolucja komputerów z lat 40. XX wieku z przełącznikami, kodem maszynowym, asemblerem, C, Python, AI, które możesz dać wszelkiego rodzaju skomplikowane instrukcje, aby polubić „zrób obiad w% 4 ^% zgodnie z moimi domyślnymi wymaganiami i ^ $% i oczyść podłogę, którą% $ £" @: ~ "w pijackim slangu w języku angielskim lub dialekcie plemiennym Amazonii, bez zgłaszania wyjątku „(znowu dla początkujących ... zgadłeś) - przegapiłem wiele linków z powodu zwykłej niewiedzy.
Następnie w niektórych konkretnych znaczeniach oprogramowania: Znaczenie 1: Thing1 służy do ładowania najnowszej wersji Thing2 (ponieważ oczywiście Thing2 będzie większy niż Thing1, tak jak Thing3 będzie większy niż Thing2).
Znaczenie 2: Thing1 to język niższego poziomu (bliższy 1001011100 .... 011001 niż print („Witaj”, nazwa użytkownika.)) Użyty do napisania trochę wyższego języka Thing2, to ten kawałek Thing2 jest używane do rozszerzania samej Thing2 z poziomu słownictwa dla dorosłych na poziom słownictwa dla dorosłych (Thing2 zaczyna być przetwarzane lub używa prawidłowego terminu technicznego „skompilowanego” przez samą wersję dla dziecka (to sprytne dziecko!), podczas gdy wersja dla dziecka dla Thing2 sama oczywiście mogłaby zostać skompilowana tylko przez Thing1, ponieważ nie może istnieć, zanim ona istnieje, prawda, duh!), a następnie wersja potomna Thing2 kompiluje wersję Thing2 Surly Teenager, w którym to momencie społeczność programistyczna decyduje, czy „problemy” Surly Teenager ( program i metafora!) warto poświęcić wystarczająco dużo czasu na rozwiązanie problemu, aby zostać zaakceptowanym przez dłuższy czas,lub porzucić je (nie wiem, gdzie wziąć analogię tutaj).
Jeśli tak, to Thing2 ma „Bootstrapped” (być może kilka razy) od dzieciństwa do dorosłości: „dziecko jest ojcem mężczyzny” (Wordsworth, sugeruj, nie próbuj szukać cytatu lub autora na Stack Overflow) .
źródło