Domanda

Continuo a vedere "bootstrapping" menzionata nelle discussioni dello sviluppo di applicazioni. Sembra sia diffuso e importante, ma non ho ancora incontrato anche una povera spiegazione di ciò che realmente è bootstrapping; piuttosto, sembra come se ognuno è solo tenuto a sapere che cosa significa. Io no, però. Vicino come riesco a capire, ha qualcosa a che fare con attività di inizializzazione richieste di un'applicazione sul lancio, ma potrebbe essere completamente sbagliato su questo. Qualcuno può aiutarmi a capire questa idea?

È stato utile?

Soluzione

"bootstrap" deriva dal termine "tirarsi su con le vostre bootstraps." Che molto si può ottenere da Wikipedia .

In informatica, un caricatore di bootstrap è il primo pezzo di codice che viene eseguito quando una macchina si avvia, ed è responsabile del caricamento del resto del sistema operativo. Nel computer moderni è memorizzato nella ROM, ma mi ricordo il processo di bootstrap sul PDP-11, dove si sarebbe colpire bit tramite gli interruttori del pannello frontale per caricare un segmento particolare del disco in memoria, e quindi eseguirlo. Inutile dire che il bootstrap loader normalmente è piuttosto piccolo.

"bootstrap" è anche usato come un termine per la costruzione di un sistema che utilizza per sé - o più correttamente, una versione precedente. Ad esempio, ANTLR versione 3 è scritto utilizzando un parser sviluppato in versione ANTLR 2.

Altri suggerimenti

Un esempio di bootstrap è in alcuni framework web. Si chiama index.php (il programma di avvio automatico), e poi carica il framework aiutanti, modelli, la configurazione, e quindi carica il controller e spaccia il controllo ad esso.

Come si può vedere, si tratta di un semplice file che avvia un grande processo.

Vedere sull'articolo Wikipedia su bootstrap .

C'è una sezione e link che spiegano cosa significa in Computing . Ha quattro diversi utilizzi nel campo.

Ecco alcune citazioni, ma per una più approfondita spiegazione, e significati alternativi, consultare i link qui sopra.

  

"... è una tecnica con cui un programma per computer semplice attiva un sistema più complesso di programmi".

     

"Un uso diverso del termine bootstrap è quello di utilizzare un compilatore per compilare se stesso, in primo luogo scrivendo una piccola parte di un compilatore di un nuovo linguaggio di programmazione in un linguaggio esistente per compilare più programmi del nuovo compilatore scritto nella nuova linguaggio ".

Il termine "bootstrapping" di solito si applica ad una situazione in cui un sistema dipende su se stesso per iniziare, una sorta di problema dell'uovo e della gallina.

Per esempio:

  • Come si compila un compilatore C scritto in C?
  • Come si fa a iniziare un processo di inizializzazione del sistema operativo se non si dispone del sistema operativo in esecuzione ancora?
  • Come si avvia un sistema distribuito (peer-to-peer), dove i clienti dipendono da loro coetanei attualmente conosciuti per scoprire nuovi coetanei nel sistema?

In questo caso, bootstrap riferisce a un modo di rompere la dipendenza circolare, di solito con l'aiuto di un'entità esterna, per es.

  • È possibile utilizzare un altro compilatore C per compilare (bootstrap) il proprio compilatore, e quindi è possibile utilizzarlo per ricompilare sé
  • Si utilizza un foglio di codice che imposta il processo iniziale senza dipendere da eventuali funzioni fornite dal sistema operativo
  • È possibile utilizzare un elenco hardcoded di peer iniziali o di un URL tracker hard-coded che fornisce la lista dei pari

ecc.

Nel contesto dello sviluppo di applicazioni, "bootstrap" viene di solito quando si parla di software modulare e / o auto-aggiornabile.

Piuttosto che l'utente scaricare l'intera applicazione, incluse le funzioni cui non ha bisogno, e a scaricare nuovamente e manualmente aggiornarlo ogni volta che c'è un aggiornamento, l'utente solo download e avvia un piccolo "bootstrap" eseguibile, che in download sua volta e installa quelle parti della domanda che l'utente deve. Inoltre, il componente di bootstrap è in grado di cercare gli aggiornamenti e installarli ogni volta che viene avviato.

Per completezza, è anche una piuttosto importante (e relativamente nuovo) il metodo in statistica che utilizza ricampionamento / simulazione di dedurre le proprietà di popolazione da un campione. Essa ha la sua lunga voci di Wikipedia bootstrapping (statistiche) .

Alex, è più o meno ciò che il computer fa quando si avvia su. ( 'Avvio' un computer in realtà deriva dalla parola bootstrap)

Inizialmente, il piccolo programma nel BIOS viene eseguito. Che contiene il codice macchina abbastanza per caricare ed eseguire un programma più ampio, più complesso.

Questo secondo programma è probabilmente qualcosa come NTLDR (in Windows) o LILO (in Linux), che poi esegue ed è in grado di caricare, quindi eseguire, il resto del sistema operativo.

boot reggette il significato dizionario è quello di iniziare con risorse minime. Nel contesto di un sistema operativo del sistema operativo dovrebbe essere in grado di caricare rapidamente una volta che l'On Self Test di potenza (POST) determina che il suo sicuro per svegliare la CPU. Il codice di boot strap sarà eseguito dal BIOS. BIOS è un piccolo ROM dimensioni. In generale si tratta di un'istruzione di salto per l'insieme di istruzioni che caricherà il sistema operativo nella RAM. La destinazione del salto è il settore di avvio del disco rigido. Una volta che il programma di BIOS controlla si tratta di un settore di avvio valido che contiene l'indirizzo di partenza del sistema operativo memorizzato, cioè se si tratta di una valida MBR (Master Boot Record) oppure no. Se la sua una valida MBR il sistema operativo verrà copiato nella memoria (RAM) da lì sul sistema operativo si occupa di memoria e dei processi.

IMHO, non c'è una spiegazione migliore del fatto che riguarda Come è stato il primo compilatore scritto ?

In questi giorni il caricamento del sistema operativo è il procedimento più comune di cui come bootstrap

In termini di esso in quanto riguarda usando il popolare Twitter Bootstrap mi sento come questo tipo di bootstrap è l'azione di integrare un componente modulare in un'applicazione Web, senza l'applicazione Web dover riconoscere anche esiste la componente modulare fino a quando ne ha bisogno o fa riferimento.

Lo sviluppatore può integrare senza una copia di default del CSS Twitter Bootstrap tema semplicemente caricando (riferimento) in l'applicazione Web. Vuola! Quindi potrebbe essere necessario sostituire alcuni di questi cambiamenti, ma è possibile farlo in modo tale che la risorsa / componente è intatta e completamente riutilizzabile.

Questo stesso concetto è come web Devs implementare le API jQuery e così via, ma non è in realtà espressa da Devs come bootstrapping per sé. Ciò che fa è che migliora la flessibilità e la riutilizzabilità, consentendo l'isolamento di diversi componenti / risorse di un app per soggiornare liberamente sia sullo stesso server / s o, eventualmente, su un CDN.

NOTA: In informatica offerte bootstrap con il MBR e in UNIX richiede un bootloader speciale o manager, che è un piccolo programma nella ROM che carica il sistema operativo nella RAM. Se ci pensate bene lo stesso concetto si svolge nell'azione del bootstrap loader controllando il MBR e il caricamento del sistema operativo basato su questa tabella, che avviene senza il sistema operativo avere alcuna idea che ciò avvenga.

bootstrap ha ancora un altro significato nel contesto di apprendimento per rinforzo che può essere utile conoscere per gli sviluppatori, in aggiunta al suo utilizzo nello sviluppo di software (la maggior parte delle risposte qui, ad esempio da kdgregory ) e il suo utilizzo nelle statistiche come discusso da Dirk Eddelbuettel .

Sutton e Barto :

  

Widrow, Gupta, e Maitra (1973) ha modificato il meno quadratico medio (LMS)   Algoritmo di Widrow e Hoff (1960) per la produzione di un rinforzo   regola di apprendimento che potrebbero imparare da segnali di successo e fallimento   anziché da esempi di addestramento. Hanno chiamato questa forma di apprendimento   “ bootstrap adattamento selettivo ” e descritto come “l'apprendimento con un   critico”al posto di‘imparare con un insegnante.’Essi hanno analizzato questa regola   e ha mostrato come potrebbe imparare a giocare a blackjack. Questo è stato un caso isolato   incursione in rinforzo learning by Widrow, i cui contributi alla   apprendimento supervisionato erano molto più influente.

Il libro descrive vari algoritmi di rinforzo in cui il valore bersaglio è basata su un'approssimazione precedente come metodi bootstrap:

  

Infine, notiamo    un ultimo speciale di proprietà di DP metodi [Programmazione Dinamica]. Tutti di loro stime aggiornamento   dei valori di stati basati su stime dei valori del successore   stati. Cioè, che aggiornano le stime sulla base di altri   stime. Chiamiamo questa idea generale bootstrap . molti di rinforzo   metodi di apprendimento eseguire il bootstrap, anche quelli che non lo fanno   richiedere, come DP richiede, un modello completo e accurato della   ambiente.

Si noti che sia diversa dalla bootstrap aggregazione ed esplosioni intelligenza menzionato nella wikipedia pagina sul bootstrap.

Appartengo alla generazione che capovolto interruttori di entrare in un programma di boot. Nei primi anni 1980, ho lavorato su un microcomputer chiamata Micro-78, sviluppato da Electronics Corporation of India Ltd (ECIL). Era una sorta di clone di Altair 8800. ricordo chiaramente cosa succede quando un piccolo programma di boot è stato inserito utilizzando gli interruttori a leva e eseguita premendo un pulsante. Il programma legge un secondo programma di avvio contenuto nella prima traccia del disco floppy e sovrascrive su se stesso in modo tale che il secondo programma di avvio inizia l'esecuzione di caricare un sistema operativo del disco. Credo che il termine "bootstrap" si riferisce a questo processo di prima lettura programma di avvio e sovrascrivere il secondo programma di boot su se stesso, in modo "si tira" con le funzionalità aggiuntive del secondo programma di avvio. Questo potrebbe essere l'origine del significato originale di "programma di bootstrap".

Come un umile principiante nel mondo della programmazione, e sfogliando tutte le risposte qui dopo aver visto questa parola usata molto in modi apparentemente leggermente diversi in luoghi diversi, ho trovato leggendo la pagina di Wikipedia su bootstrap (stato derubato! I didn' t pensare che sia in un primo momento) è molto istruttiva per comprendere differenze in uso di questa parola. Potrebbe essere ...... sul estremamente rare occasioni ...... Wikipedia potrebbe anche avere migliori illustra alcuni termini di .... (Redacted)? Saranno in grado di portare in punti rep su Wikipedia però?

A me, sembra tutti i significati che fare con: iniziare con qualcosa di semplice come possibile Thing1, fare qualcosa di un po 'più complesso, con quel Thing2, e ora è possibile utilizzare Thing2 fare qualche tipo di attività in modo più efficiente e rapido di quanto si potrebbe inizialmente con Thing1. Quindi ripetere da Thing2 a Thing 3 all'infinito ...

Lo vedo come strettamente collegato sia l'evoluzione biologica e 'livelli di astrazione' (i neofiti come me vedono, ahem, Wikipedia, tosse) - l'evoluzione dal 1940 computer con interruttori, codice macchina, montaggio, C, Python, AIS si può dare tutti i tipi di istruzioni complesse di come "fare il% cena di 4 ^% ai miei predefiniti & ^% esigenze $ e pulire il pavimento si% $ £" @: ~" in ubriaco slang o Amazon dialetto tribale senza di loro ' sollevando un'eccezione'(di nuovo per i neofiti ... avete indovinato) - mancato fuori sacco di link lì a causa di semplice ignoranza

.

Quindi in certi significati software specifici: Meaning1:. Thing1 viene utilizzato per caricare la versione più recente di Thing2 (perché naturalmente Thing2 sarà più grande di Thing1, proprio come Thing3 sarà essere più grande Thing2)

Meaning2: Thing1 è un linguaggio di basso livello (più vicino a 1.001.011,1 mila .... 011.001 di stampa ( "Ciao,", user.name)) utilizzato per scrivere un po 'di linguaggio più elevato di Thing2, allora questo po' di Thing2 viene utilizzato per espandere Thing2 sé dal livello del vocabolario del bambino verso il livello di vocabolario per adulti (Thing2 comincia ad essere trasformati, o per usare corretto termine tecnico 'compilato', dalla versione baby di se stesso (è un bambino intelligente!), mentre il bambino versione di Thing2 si potrebbe naturalmente essere compilato solo da Thing1, perché non può esistere prima che esista, duh destra!), allora la versione bambino di Thing2 compila versione Surly Adolescente di Thing2, al quale comunità dei programmatori punto decide se Burbero per adolescenti ' questioni (termine software e metafora termine!) sono la pena di spendere abbastanza tempo per risolvere per essere accettato a lungo termine, o ad abbandonarli a (non sono sicuro dove portare l'analogia qui).

Se sì, allora Thing2 ha 'bootstrap' stessa (forse un paio di volte) dalla prima infanzia all'età adulta: "il bambino è il padre dell'uomo" (Wordsworth, suggeriscono non provate guardando la citazione o l'autore su Stack Overflow).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top