views:

765

answers:

7

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?

+14  A: 

See on the Wikipedia article on bootstrapping.

There is a section and links explaining what it means in Computing. It has four different uses in the field.

Here are some quotes, but for a more in depth explanation, and alternative meanings, consult the links above.

"...is a technique by which a simple computer program activates a more complicated system of programs."

"A different use of the term bootstrapping is to use a compiler to compile itself, by first writing a small part of a compiler of a new programming language in an existing language to compile more programs of the new compiler written in the new language."

HeDinges
Could you please quote or paraphrase so readers won't have to traverse multiple websites to get their answer?
Kurt W. Leucht
+14  A: 

"Bootstrapping" comes from the term "pulling yourself up by your own bootstraps." That much you can get from Wikipedia.

In computing, a bootstrap loader is the first piece of code that runs when a machine starts, and is responsible for loading the rest of the operating system. In modern computers it's stored in ROM, but I recall the bootstrap process on the PDP-11, where you would poke bits via the front-panel switches to load a particular disk segment into memory, and then run it. Needless to say, the bootstrap loader is normally pretty small.

"Bootstrapping" is also used as a term for building a system using itself -- or more correctly, a predecessor version. For example, ANTLR version 3 is written using a parser developed in ANTLR version 2.

kdgregory
Wow, I'd almost forgotten about front panel switches on the PDPs. Thanks for the memories!!
Jeff Hornby
+2  A: 

For completeness, it is also a rather important (and relatively new) method in statistics that uses resampling / simulation to infer population properties from a sample. It has its own lengthy Wikipedia article on bootstrapping (statistics).

Dirk Eddelbuettel
Relatively new? It was part of my statistics education at least 15 years ago.
Gamecat
Which is why I said 'relatively': Efron's initial articles are from the early 1980s as opposed to say the beginning of the robustness literature from the 1960s.
Dirk Eddelbuettel
+3  A: 

In the context of application development, "bootstrapping" usually comes up when talking about modular and/or auto-updatable software.

Rather than the user downloading the entire app, including features he does not need, and re-downloading and manually updating it whenever there is an update, the user only downloads and starts a small "bootstrap" executable, which in turn downloads and installs those parts of the application that the user needs. Additionally, the bootstrap component is able to look for updates and install them each time it is started.

Michael Borgwardt
I never heard the term “bootstrapping” used in that particular context.
Bombe
+1  A: 

Forget links: here's the wikipedia section :D

Computing Main article: Booting

The computer term bootstrap began as a metaphor in the 1950s. In computers, pressing a bootstrap button caused a hardwired program to read a bootstrap program from an input unit and then execute the bootstrap program which read more program instructions and became a self-sustaining process that proceeded without external help from manually entered instructions. As a computing term, bootstrap has been used since at least 1958.[5]

The bootstrap concept was used in the IBM 701 computer (1952-1956) which had a "load button" which initiated reading of the first 36-bit word from a punched card in a card reader, or from a magnetic tape unit, or drum unit (predecessor of the hard disk drive). The left 18-bit half-word was then executed as an instruction which read additional words into memory.[6]

  • See Bootstrapping (compilers), writing a compiler for a computer language using the computer language itself to code the compiler.
  • See Bootstrapping (computing), a summary of the process of a simple computer system activating a more complicated computer system.
  • See Installation (computer programs), for the bootstrapping process as part of the software installation process
  • See Bootstrapping node, a network node that helps newly joining nodes successfully join a P2P network.
CrazyJugglerDrummer
A: 

Alex, it's pretty much what your computer does when it boots up. ('Booting' a computer actually comes from the word bootstrapping)

Initially, the small program in your BIOS runs. That contains enough machine code to load and run a larger, more complex program.

That second program is probably something like NTLDR (in Windows) or LILO (in Linux), which then executes and is able to load, then run, the rest of the operating system.

davewasthere
A: 

An example of bootstrapping is in some web frameworks. You call index.php (the bootstrapper), and then it loads the frameworks helpers, models, configuration, and then loads the controller and passes off control to it.

As you can see, it's a simple file that starts a large process.

ryeguy