アプリケーション開発の議論で言及されている「ブートストラップ」をよく見かけます。広く普及していて重要なように思えますが、ブートストラップが実際に何であるかについての貧弱な説明さえまだ見つけていません。むしろ、誰もがそれが何を意味するかを知っているだけのようです。しかし、私はしません。私が理解できる限りでは、アプリケーションの起動時に必要な初期化タスクと関係がありますが、それについては完全に間違っている可能性があります。誰かがこの考えを理解するのを手伝ってくれますか?
14 に答える
「ブートストラップ」は、「自分のブートストラップで自分を引き上げる」という用語に由来します。ウィキペディアから得られるのはそれだけです。
コンピューティングでは、ブートストラップ ローダーは、マシンの起動時に実行される最初のコード部分であり、オペレーティング システムの残りの部分をロードする役割を果たします。最近のコンピューターでは ROM に保存されていますが、PDP-11 のブートストラップ プロセスを思い出します。このプロセスでは、フロント パネルのスイッチを介してビットを挿入し、特定のディスク セグメントをメモリにロードしてから実行していました。言うまでもなく、通常、ブートストラップ ローダーは非常に小さいです。
「ブートストラップ」は、それ自体を使用してシステムを構築するための用語としても使用されます。より正確には、以前のバージョンです。たとえば、ANTLRバージョン 3 は、ANTLR バージョン 2 で開発されたパーサーを使用して記述されています。
ブートストラップの例は、いくつかのWebフレームワークにあります。index.php(ブートストラッパー)を呼び出すと、フレームワークヘルパー、モデル、構成が読み込まれ、コントローラーが読み込まれ、制御が渡されます。
ご覧のとおり、これは大きなプロセスを開始する単純なファイルです。
ブートストラップに関するウィキペディアの記事を参照してください。
Computingでそれが何を意味するかを説明するセクションとリンクがあります。フィールドでは 4 つの異なる用途があります。
ここにいくつかの引用がありますが、より詳細な説明と別の意味については、上記のリンクを参照してください。
「...単純なコンピューター プログラムが、より複雑なプログラム システムを起動する技術です。」
「ブートストラップという用語の別の使い方は、コンパイラを使用してそれ自体をコンパイルすることです。最初に新しいプログラミング言語のコンパイラの小さな部分を既存の言語で記述して、新しい言語で記述された新しいコンパイラのより多くのプログラムをコンパイルします。」
アプリケーション開発のコンテキストでは、モジュラーおよび/または自動更新可能なソフトウェアについて話すときに、「ブートストラップ」が通常出てきます。
ユーザーが必要のない機能を含むアプリ全体をダウンロードし、更新があるたびに再ダウンロードして手動で更新するのではなく、ユーザーは小さな「ブートストラップ」実行可能ファイルをダウンロードして開始するだけで、それらの実行可能ファイルをダウンロードしてインストールします。ユーザーが必要とするアプリケーションの部分。さらに、ブートストラップ コンポーネントは、起動するたびに更新を探してインストールすることができます。
アレックス、それはあなたのコンピューターが起動したときに行うこととほとんど同じです. (コンピュータの「ブート」は、実際にはブートストラップという言葉から来ています)
最初に、BIOS の小さなプログラムが実行されます。これには、より大規模で複雑なプログラムを読み込んで実行するのに十分なマシン コードが含まれています。
その 2 番目のプログラムは、おそらく NTLDR (Windows の場合) や LILO (Linux の場合) のようなもので、オペレーティング システムの残りの部分を実行してロードし、実行することができます。
完全を期すために、リサンプリング/シミュレーションを使用してサンプルから母集団のプロパティを推測するのは、統計においてかなり重要な (そして比較的新しい) 方法でもあります。ブートストラップ (統計) に関する独自の長いウィキペディアの記事があります。
辞書の意味をブートストラップすることは、最小限のリソースで起動することです。OS のコンテキストでは、Power On Self Test (POST) が CPU を安全にウェイクアップできると判断すると、OS は迅速にロードできる必要があります。ブート ストラップ コードは BIOS から実行されます。BIOS は小型の ROM です。通常、これは、オペレーティング システムを RAM にロードする一連の命令へのジャンプ命令です。ジャンプ先はハードディスクのブートセクタです。BIOS プログラムは、格納された OS の開始アドレスを含む有効なブート セクタであること、つまり、有効な MBR (マスター ブート レコード) であるかどうかを確認します。有効な MBR の場合、OS はそこからメモリ (RAM) にコピーされ、OS がメモリとプロセスの管理を行います。
質問に答えたとおりです。ウェブ開発用。ここまで来て、Laravel doc でブートストラップに関する適切な説明を見つけました。ここにリンクがあります
一般に、登録とは、サービス コンテナー バインディング、イベント リスナー、ミドルウェア、さらにはルートの登録を含むものを登録することを意味します。
Web アプリケーション開発を学んでいる人の助けになれば幸いです。
プログラミングの世界の謙虚な初心者として、この単語がさまざまな場所で明らかにわずかに異なる方法で多く使用されているのを見て、ここにあるすべての回答をめくって、ブートストラップに関するウィキペディアのページを読んでいるのを見つけました (当たり前!この単語の使用の違いを理解するのに非常に有益です。それは……ごくまれに……ウィキペディアの方が特定の用語について、……(編集済み)よりも優れた説明をしているかもしれません。しかし、彼らはウィキペディアにレップポイントをもたらしますか?
私には、すべての意味が関連しているように思えます: できるだけ単純なものから始めて、その Thing2 で少し複雑なものを作成すると、Thing2 を使用して、ある種のタスクをより効率的かつ迅速に実行できるようになります。元は Thing1 でした。その後、モノ 2 からモノ 3 までを無限に繰り返します...
私はそれが生物学的進化と「抽象化のレイヤー」の両方に密接に関連していると考えています(私のような初心者は、エヘム、ウィキペディア、咳)-スイッチ、マシンコード、アセンブリ、C、Python、AIを備えた1940年代のコンピューターからの進化「%4^% ディナーをデフォルトの &^$% 要件に合わせて、床を掃除して %$£"@:~" 酔ったスラング英語または Amazon 部族の方言で例外を発生させずに」など、あらゆる種類の複雑な指示' (再び初心者向け... ご想像のとおり) - 単純な無知のためにそこにある多くのリンクを見逃していました。
意味 1: Thing1 は、Thing2 の最新バージョンをロードするために使用されます (もちろん、Thing3 が Thing2 よりも大きくなるのと同様に、Thing2 は Thing1 よりも大きくなるからです)。
意味 2: Thing1 は低レベル言語 (print("Hello, ", user.name) よりも 1001011100....011001 に近い) であり、Thing2 の高次言語を少し記述するために使用されます。Thing2 のこの小さな部分は、 Thing2 自体を赤ちゃんの語彙レベルから大人の語彙レベルに拡張するために使用されます (Thing2 は、それ自体の赤ちゃんバージョンによって処理されるか、正しい専門用語「コンパイル済み」を使用し始めます (それは賢い赤ちゃんです!)、一方、Thing2 の赤ちゃんバージョンはそれ自体はもちろん、Thing1 によってのみコンパイルできます。なぜなら、存在する前に存在することはできないからです!)、Thing2 の子バージョンは Thing2 の Surly Teenager バージョンをコンパイルします。この時点で、プログラミング コミュニティは、Surly Teenager の「問題」(ソフトウェア用語と比喩用語!) は、長期的に受け入れられるように解決するのに十分な時間を費やす価値があります。またはそれらを放棄します(ここでどこに類推するかわかりません)。
はいの場合、Thing2 は乳児期から成人期まで (おそらく数回) 自身を「ブートストラップ」しています。「子供は男の父親です」(ワーズワース、スタック オーバーフローで引用や著者を調べないことをお勧めします)。 .