I keep seeing "bootstrapping" mentioned in discussions of application development. It seems both widespread and important, but I've yet to come across even a poor explanation of what bootstrapping actually is; rather, it seems as though everyone is just supposed to know what it means. I don't, though. Near as I can figure, it has something to do with initialization tasks required of an application upon launch, but I could be completely wrong about that. Can anyone help me to understand this idea?


当前回答

恕我冒昧,没有比第一个编译器是如何编写的更好的解释了?

现在,操作系统加载是最常见的过程,称为引导

其他回答

为了完整起见,它也是统计学中一个相当重要的(相对较新的)方法,它使用重采样/模拟从样本中推断总体属性。它在维基百科上有一篇关于自我引导(统计)的长篇文章。

“Bootstrapping”来源于“靠自己的力量把自己拉起来”这个词。这些你可以从维基百科上得到。

在计算中,引导加载程序是机器启动时运行的第一段代码,负责加载操作系统的其余部分。在现代计算机中,它存储在ROM中,但我记得PDP-11上的引导过程,你可以通过前面板开关插入位来将特定的磁盘段加载到内存中,然后运行它。不用说,引导加载程序通常非常小。

“Bootstrapping”也被用作一个术语,用于构建一个使用自身的系统——或者更准确地说,是一个前身版本。例如,ANTLR版本3使用在ANTLR版本2中开发的解析器编写。

亚历克斯,这和你的电脑启动时做的差不多。('Booting' a computer实际上来自于单词bootstrapping)

最初,运行BIOS中的小程序。它包含足够的机器代码来加载和运行一个更大、更复杂的程序。

第二个程序可能是类似于NTLDR(在Windows中)或LILO(在Linux中)的程序,然后执行并能够加载,然后运行操作系统的其余部分。

As a humble beginner in the world of programming, and flicking through all the answers here after seeing this word used a lot in apparently slightly different ways in different places, I found reading the Wikipedia page on Bootstrapping (duh! I didn't think of it either at first) is very informative to understand differences in use of this word. Could it be......on extremely rare occasions......Wikipedia might even have better explanations of certain terms than....(redacted)? Will they bring in rep points on Wikipedia though?

对我来说,似乎所有的意义都与:从尽可能简单的东西开始,用Thing2做一些稍微复杂的东西,现在你可以用Thing2比原来的Thing1更有效、更快地完成某些任务。然后从第二件事重复到第三件事,直到无限……

I see it as closely connected to both biological evolution and 'Layers of Abstraction' (newbies like me see, ahem, Wikipedia, cough) - the evolution from 1940's computers with switches, machine code, Assembly, C, Python, AIs you can give all kinds of complex instructions to like "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...you guessed it) - missed out lot of links there due to simple ignorance.

那么在某些特定的软件意义上: 含义1:Thing1用于加载Thing2的最新版本(因为Thing2当然会比Thing1大,就像Thing3会比Thing2大一样)。

Meaning2: Thing1 is a lower level language (closer to 1001011100....011001 than print("Hello, ", user.name)) used to write a little bit of the higher language of Thing2, then this little bit of Thing2 is used to expand Thing2 itself from baby vocabulary level towards adult vocabulary level (Thing2 starts to be processed, or to use correct technical term 'compiled', by the baby version of itself (it's a clever baby!), whereas the baby version of Thing2 itself could of course only be compiled by Thing1, cause it can't exist before it exists, right duh!), then child version of Thing2 compiles Surly Teenager version of Thing2, at which point programming community decides whether Surly Teenager's 'issues' (software term and metaphor term!) are worth spending enough time resolving to be accepted long term, or to abandon them to (not sure where to take the analogy here).

如果是,那么Thing2已经“bootstrap”自己(可能有几次)从婴儿到成年:“孩子是男人的父亲”(华兹华斯,建议不要试图在Stack Overflow上查找引用或作者)。

参见维基百科关于引导的文章。

有一个部分和链接解释了它在计算中的含义。它在这个领域有四种不同的用途。

这里有一些引用,但要更深入的解释和其他含义,请参考上面的链接。

"...是一种技术,通过一种简单的计算机程序激活一个更复杂的程序系统。” “自举一词的另一种用法是使用编译器来编译自己,首先用现有语言编写一种新编程语言的编译器的一小部分,然后用新语言编写更多的新编译器程序。”

推荐文章