This is an old revision of this page, as edited by 199.72.115.66 (talk) at 16:29, 4 September 2007. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 16:29, 4 September 2007 by 199.72.115.66 (talk)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff) For other uses of "bootstrapping", see bootstrapping.pixdfuhopgfuhopfgiuhopifuguifgiufgiuhihuoifhudofuhoduhgioudfhioufghiofg
In computing, bootstrapping refers to a process where a simple system activates another more complicated system that serves the same purpose. It is a solution to the Chicken-and-egg problem of starting a certain system without the system already functioning. The term is most often applied to the process of starting up a computer, in which a mechanism is needed to execute the software program that is responsible for executing software programs (the operating system).
The term "bootstrapping" alludes to a German legend about Baron Münchhausen, who claimed to have been able to lift himself out of a swamp by pulling himself up by his own hair. In later versions of the legend, he used his own boot straps to pull himself out of the sea which gave rise to the term bootstrapping. The term is believed to have entered computer jargon during the early 1950's by way of Heinlein's short story By His Bootstraps first published in 1941.
Booting
Main article: bootingBootstrapping was shortened to booting, or the process of starting up any computer, which is the most common meaning for non-technical computer users. The verb "boot" is similarly derived.
A "bootstrap" most commonly refers to the simple program itself that actually begins the initialization of the computer's operating system, like GRUB, LILO or NTLDR. Modern personal computers have the ability of using their network interface card (NIC) for bootstrapping; on IA-32(x86) and IA-64 (Itanium) this method is implemented by PXE and Etherboot.
Mainframe computers back in the 1970's were bootstrapped by loading software into the machine on a paper tape with holes punched into it (punch tape). The leading edge of the paper tape would become worn and unreadable. To stop this problem a length of leather bootstrap would be connected to the leading edge of the punch tape to stop it wearing out when it is fed into the punch tape reading machine. This process was known as "bootstrapping" the mainframe.
Software bootstrapping
Bootstrapping can also refer to the development of successively more complex, faster programming environments. The simplest environment will be, perhaps, a very basic text editor (e.g. ed) and an assembler program. Using these tools, one can write a more complex text editor, and a simple compiler for a higher-level language and so on, until one can have a graphical IDE and an extremely high-level programming language.
Historically, bootstrapping also refers to early computer program development which has been obviated by emulation software now executed in pre-existing computers. Bootstrapping in program development began during the 1950's when each program was constructed on paper in decimal code or in binary code, bit by bit (1's and 0's), because there was no high-level computer language, no compiler, no assembler, and no linker. A tiny assembler program was written for a new computer (for example the IBM 650) which converted a few instructions into binary or decimal code. This assembler program was then rewritten in its own assembly language that included additional alphabetic mnemonic operation codes. The enlarged assembly program then reassembled itself into binary or decimal code & and so on, until the entire instruction set was coded and branch addresses were automatically calculated. This was how the early assembly program SOAP (Symbolic Optimal Assembly Program) was developed. Compilers, linkers, loaders, and utilities were then coded in assembly language, further continuing the bootstrapping process of developing complex software systems by using simpler software.
Compiler bootstrapping
In compiler design, a bootstrap or bootstrapping compiler is a compiler that is written in the target language, or a subset of the language, that it compiles. Examples include gcc, GHC, OCaml, BASIC, PL/I and more recently the Mono C# compiler.
- For more detail, see Bootstrapping (compilers)
Supervised learning
In machine learning, bootstrapping (also 0,632 bootstrapping) refers to a way of evaluating (estimating) the goodness of a supervised learning model. The method works as follows:
- Several samples, with replacement, are extracted from the original set. Each of them will be used by the inducing algorithm to generate a submodel.
- Every submodel is tested twice: using the very same subset used to induce it and the one resulting from substracting it to the original set. Thus, two groups of accuracies are obtained, being the average of the first and the average of the latter.
- The final accuracy of the model being evaluated is:
See also
- A quine, when executed, produces a copy of its source code. A (self-hosting) compiler, when executed (and fed a copy of its source code), produces a copy of its executable code.
- Self-replication
- Steven Abney. Bootstrapping. 40th Annual Meeting of the Association for Computational Linguistics: Proceedings of the Conference. 2002. http://www.vinartus.net/spa/02a.pdf