Bootstrapping (computing)
From Wikipedia, the free encyclopedia
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.[1] The term is believed to have entered computer jargon during the early 1950s by way of Heinlein's short story By His Bootstraps first published in 1941.[citation needed]
Contents |
Bootstrapping 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 1970s 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.[citation needed]
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 1950s when each program was constructed on paper in decimal code or in binary code, bit by bit (1s and 0s), 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.
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)
- 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 (2002). "Bootstrapping", Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics.