Butstrapovanje (kompajleri)

S Vikipedije, slobodne enciklopedije

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.