Omavaraisuus ( englanniksi self-hosting ) ohjelmistokehityksessä on ohjelman käyttöä uusien versioiden luomiseen samasta ohjelmasta. Termiä käytetään useimmiten kääntäjiin , jotka voivat kääntää oman lähdekoodinsa . Myös itsenäiset ohjelmat sisältävät yleensä käyttöjärjestelmän ytimiä , komentorivitulkkeja ja versionhallintajärjestelmiä.
Hart ja Levin kirjoittivat ensimmäisen itsenäisen kääntäjän Lisp -ohjelmointikielelle MIT:ssä vuonna 1962. He kirjoittivat Lisp-lähdekoodin kääntäjän Lispissä ja testasivat sitä tulkin sisällä, joka oli jo olemassa tuolloin . Ajan myötä kääntäjästä tuli omavarainen ja pystyi kääntämään oman lähdekoodinsa.
Kun Ken Thompson aloitti Unixin kehittämisen vuonna 1968, hän kirjoitti ja käänsi ohjelmia GE-635:lle ja suoritti niitä PDP-7 :llä . Kun Unix-ytimen, komentotulkin , editorin, assemblerin ja muutamien muiden apuohjelmien ensimmäinen versio oli otettu käyttöön, Unix-käyttöjärjestelmästä tuli itsenäinen – uusia ohjelmia voitiin kirjoittaa ja testata itse PDP-7:llä ilman kolmannen osapuolen laitteiden käyttöä. [yksi]
Douglas McIlroy kirjoitti TMG:n ( Comiler Compiler ) TMG:llä paperille, muunnettiin manuaalisesti konekoodiksi ja siirsi konekoodin Ken Thompsonin PDP-7:ään. [2]
GNU-järjestelmän kehitys perustuu suurelta osin GCC :n (GNU C-kääntäjä) ja GNU Emacsin (suosittu tekstieditori) käyttöön, mikä mahdollistaa ilmaisten ohjelmistojen kehittämisen GNU-projektissa ilman ulkoisia riippuvuuksia muista, mahdollisesti ei-vapaista. ohjelmisto.
Monilla ohjelmointikielillä on omat toteutukset: näiden kielten kääntäjät on kirjoitettu itse kielillä. Joissakin näistä tapauksista alkuperäinen toteutus on kehitetty käyttämällä toista ohjelmointikieltä, kokoonpanokieltä tai jopa konekoodia .