Soběstačnost ( anglicky self-hosting ) ve vývoji softwaru je použití programu k vytvoření nových verzí stejného programu. Tento termín se nejčastěji používá pro kompilátory , které mohou kompilovat svůj vlastní zdrojový kód . Samostatné programy také obvykle zahrnují jádra operačního systému , interprety příkazového řádku a systémy správy verzí.
První samostatný kompilátor byl napsán pro programovací jazyk Lisp Hartem a Levinem na MIT v roce 1962. Napsali kompilátor pro zdrojový kód Lisp v Lisp a otestovali jej v interpretu , který v té době již existoval . Postupem času se kompilátor stal soběstačným a byl schopen sestavit vlastní zdrojový kód.
Když Ken Thompson začal v roce 1968 vyvíjet Unix , psal a kompiloval programy na GE-635 a spouštěl je na PDP-7 . Jakmile byla spuštěna první verze unixového jádra, interpreter příkazů , editor, assembler a několik dalších utilit, operační systém Unix se stal samostatným – nové programy bylo možné psát a testovat na samotném PDP-7 bez používání zařízení třetích stran. [jeden]
Douglas McIlroy napsal TMG ( Compiler Compiler ) s TMG na kus papíru, ručně převedený na strojový kód a portoval tento strojový kód do PDP-7 Kena Thompsona. [2]
Vývoj systému GNU je z velké části založen na použití GCC (překladač GNU C) a GNU Emacs (oblíbený textový editor), který umožňuje vyvíjet svobodný software v rámci projektu GNU bez externích závislostí na jiných, potenciálně nesvobodných software.
Mnoho programovacích jazyků má samostatné implementace: kompilátory pro tyto jazyky jsou napsány v jazycích samotných. V některých z těchto případů byla původní implementace vyvinuta pomocí jiného programovacího jazyka, assembleru nebo dokonce strojového kódu .