The Full Wiki

More info on Self-hosting

Self-hosting: Wikis

Advertisements
  

Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.

Encyclopedia

From Wikipedia, the free encyclopedia

The term self-hosting was coined to refer to the use of a computer program as part of the toolchain or operating system that produces new versions of that same program—for example, a compiler that can compile its own source code. Self-hosting software is commonplace on personal computers and larger systems. Other programs that are typically self-hosting include kernels, assemblers, shells and revision control software.

If a system is so new that no software has been written for it, then software is developed on another self-hosting system and placed on a storage device that the new system can read. Development continues this way until the new system can reliably host its own development. Development of the Linux operating system, for example, was initially hosted on a Minix system. Writing new software development tools "from the metal" (that is, without using another host system) is rare and in many cases impossible.

Contents

Bootstrapping

Several programming languages are self-hosting, in the sense that a compiler for the language can be written in that same language. Self-hosting is an attribute of a particular language implementation and not of the programming language in general. The first compiler for a new programming language can be written in another language (in rare cases, machine language) or produced using bootstrapping. Programming languages which are commonly Self-hosted include Ada, BASIC, C, FASM, Forth, Haskell, Java, Lisp, Modula-2, OCaml, Oberon, Pascal, Python, Scala and Smalltalk.

History

The first self-hosting compiler (excluding assemblers) was written for Lisp by Hart and Levin at MIT in 1962. They wrote a Lisp compiler in Lisp, testing it inside an existing Lisp interpreter. Once they had improved the compiler to the point where it could compile its own source code, it was self-hosting.[1]

The compiler as it exists on the standard compiler tape is a machine language program that was obtained by having the S-expression definition of the compiler work on itself through the interpreter. (AI Memo 39)[1]

This technique is only possible when an interpreter already exists for the very same language that is to be compiled. It borrows directly from the notion of running a program on itself as input, which is also used in various proofs in theoretical computer science, such as the proof that the halting problem is undecidable.

References

See also

Advertisements

Advertisements






Got something to say? Make a comment.
Your name
Your email address
Message