Butstrapovanje (kompajleri)
Butstrapovanje je termin koji se koristi u računarstvu da se opišu tehnike uključene u process pisanja kompajlera (ili asemblera) u ciljnom programskom jeziku koga on treba da kompajlira.
Neki će se pitati kako je problem „kokoške i jajeta” u kreiranju kompajlera rešen: ako nekome treba kopmajler za jezik X da bi dobio kompajler za jezik X, kako je prvi kompajler napisan? Neki od mogućih metoda su:
- Implementirati interpreter ili kompajler za jezik X u jeziku Y. Niklaus Virt (Niklaus Wirth) je pisao prvi kompajler za Paskal u Fortran-u. Takođe, jezik Y može biti ručno pisani mašinski kod ili asemblerski jezik.
- Neki interpreter ili kompajler za X je već napisan u drugom jeziku Y; tako je Shema (Scheme) butstrapovana.
- Ranije verzije kompajlera su bile napisane u nekim podskupovima od X za koje su postojali kompajleri; ovako su neki nadskupovi programskog jezika Java butstrapovani.
- Kompajler za X je kros kompajlovan sa druge arhitekture (platforme) na kojoj već postoji kompajler za X; tako su C kompajleri prebacivani na druge platforme.
- Pisati kompajler u X-u; onda ga ručno kompajlovati iz izvornog koda (najverovatnije na neoptimizovan način) i izvršiti ga na tkodu radi dobijanja optimizovanog kompajlera. Donald Knut (Donald Knuth) se koristio ovim za njegov WEB književni programski sistem.
Metode distribucije kompajlera u izvornom kodu uključuju dostupnost prenosive bajtkod verzije kompajlera kao i butstrapovanje samog procesa kompilacije kompajlera.
Prvi jezik koji je bio butstrapovan je NELIAC. Od komercijalnih jezika, prvi takav je bio PL/I. Danas, veliki deo jezika je butstrapovan, neki od njih su: Basic, C, Pascal, Haskell, Modula-2, Oberon, OCaml, Scheme i mnogi drugi.