Vlastní hostování (překladače) - Self-hosting (compilers)

V počítačovém programování je self-hosting použití programu jako součásti řetězce nástrojů nebo operačního systému, který produkuje nové verze stejného programu-například kompilátor, který dokáže sestavit vlastní zdrojový kód . Self-hosting software je běžný na osobních počítačích a větších systémech. Mezi další programy, které jsou obvykle samoobslužné, patří jádra , assemblery , tlumočníky příkazového řádku a software pro kontrolu revizí .

Pokud je systém tak nový, že pro něj nebyl napsán žádný software, pak je software vyvinut na jiném systému s vlastním hostitelem, často pomocí křížového kompilátoru , a umístěn na úložné zařízení, které nový systém dokáže přečíst. Vývoj pokračuje tímto způsobem, dokud nový systém nemůže spolehlivě hostit svůj vlastní vývoj. Zápis nových nástrojů pro vývoj softwaru bez použití jiného hostitelského systému je vzácný.

Dějiny

První kompilátor s vlastním hostitelem (kromě assemblerů) byl napsán pro Lisp Hartem a Levinem na MIT v roce 1962. Napsali kompilátor Lisp v Lispu a testovali jej uvnitř stávajícího Lisp interpretu . Jakmile vylepšili kompilátor do té míry, že mohl sestavit vlastní zdrojový kód, bylo to vlastní hostování.

Kompilátor, který existuje na standardní pásce kompilátoru, je program strojového jazyka, který byl získán tak, že definice S-výrazu kompilátoru pracuje na sobě prostřednictvím tlumočníka.

-  AI Memo 39

Tato technika je obvykle praktická pouze tehdy, pokud již existuje tlumočník pro stejný jazyk, který má být kompilován; i když je to možné, je extrémně neobvyklé kompilovat lidsky kompilátor sám se sebou. Pojem si půjčuje přímo od a je příkladem širšího pojmu spouštění programu na sobě jako vstupu, použitého také v různých důkazech v teoretické informatice , jako je důkaz, že problém zastavení je nerozhodnutelný.

Příklady

Ken Thompson zahájil vývoj na Unixu v roce 1968 psaním a kompilací programů na GE-635 a jejich přenosem do PDP-7 k testování. Poté, co bylo dokončeno původní jádro Unixu, interpret příkazů , editor, assembler a několik nástrojů, byl operační systém Unix hostující sám-programy bylo možné psát a testovat na samotném PDP-7.

Douglas McIlroy napsal TMG ( kompilátor-kompilátor ) v TMG na kus papíru a „rozhodl se dát svůj kus papíru svému kusu papíru“, sám provedl výpočet, čímž sestavil překladač TMG do sestavy , kterou zadal a sestavené na PDP-7 Kena Thompsona.

Vývoj systému GNU do značné míry závisí na GCC ( kompilátor GNU C ) a GNU Emacs (populární editor), což umožňuje samostatný, udržovaný a trvalý vývoj svobodného softwaru pro projekt GNU .

Mnoho programovacích jazyků má implementace s vlastním hostitelem: překladače, které jsou ve stejném jazyce i pro stejný jazyk. V některých z těchto případů byla počáteční implementace vyvinuta pomocí bootstrapingu , tj. Pomocí jiného vyššího jazyka, assembleru nebo dokonce strojového jazyka .

Seznam jazyků, které mají kompilátory s vlastním hostitelem

Následující programovací jazyky mají kompilátory s vlastním hostitelem:

Viz také

Reference