Autosuficiența ( în engleză self-hosting ) în dezvoltarea de software este utilizarea unui program pentru a crea versiuni noi ale aceluiași program. Termenul se aplică cel mai adesea compilatoarelor care își pot compila propriul cod sursă . De asemenea, programele autonome includ de obicei nuclee ale sistemului de operare , interpreți de linie de comandă și sisteme de control al versiunilor.
Primul compilator autonom a fost scris pentru limbajul de programare Lisp de Hart și Levin la MIT în 1962. Ei au scris un compilator pentru codul sursă Lisp în Lisp și l-au testat într-un interpret care exista deja în acel moment . De-a lungul timpului, compilatorul a devenit autosuficient și a putut să-și compila propriul cod sursă.
Când Ken Thompson a început să dezvolte Unix în 1968, el scria și compila programe pe GE-635 și le rula pe PDP-7 . Odată ce prima versiune a nucleului Unix, a interpretorului de comenzi , a editorului, a asamblatorului și a altor câteva utilitare au fost puse în funcțiune, sistemul de operare Unix a devenit autonom - programe noi puteau fi scrise și testate pe PDP-7 însuși fără utilizarea dispozitivelor de la terți. [unu]
Douglas McIlroy a scris un TMG ( Compiler Compiler ) cu TMG pe o bucată de hârtie, convertit manual în codul de mașină și a portat acel cod de mașină pe PDP-7 al lui Ken Thompson. [2]
Dezvoltarea sistemului GNU se bazează în mare parte pe utilizarea GCC (compilatorul GNU C) și GNU Emacs (un editor de text popular), care permite dezvoltarea software-ului liber în cadrul proiectului GNU fără dependențe externe de altele, potențial non-libere. software.
Multe limbaje de programare au implementări autonome: compilatoarele pentru aceste limbaje sunt scrise în limbajele însele. În unele dintre aceste cazuri, implementarea originală a fost dezvoltată folosind un alt limbaj de programare, limbaj de asamblare sau chiar cod de mașină .