Бутстраповање (компајлери)

С Википедије, слободне енциклопедије

Бутстраповање је термин који се користи у рачунарству да се опишу технике укључене у процесс писања компајлера (или асемблера) у циљном програмском језику кога он треба да компајлира.

Неки ће се питати како је проблем „кокошке и јајета” у креирању компајлера решен: ако некоме треба копмајлер за језик X да би добио компајлер за језик X, како је први компајлер написан? Неки од могућих метода су:

  • Имплементирати интерпретер или компајлер за језик X у језику Y. Никлаус Вирт (Niklaus Wirth) је писао први компајлер за Паскал у Фортран-у. Такође, језик Y може бити ручно писани машински код или асемблерски језик.
  • Неки интерпретер или компајлер за X је већ написан у другом језику Y; тако је Схема (Scheme) бутстрапована.
  • Раније верзије компајлера су биле написане у неким подскуповима од X за које су постојали компајлери; овако су неки надскупови програмског језика Јава бутстраповани.
  • Компајлер за X је крос компајлован са друге архитектуре (платформе) на којој већ постоји компајлер за X; тако су C компајлери пребацивани на друге платформе.
  • Писати компајлер у X-у; онда га ручно компајловати из изворног кода (највероватније на неоптимизован начин) и извршити га на ткоду ради добијања оптимизованог компајлера. Доналд Кнут (Donald Knuth) се користио овим за његов WEB књижевни програмски систем.

Методе дистрибуције компајлера у изворном коду укључују доступност преносиве бајткод верзије компајлера као и бутстраповање самог процеса компилације компајлера.

Први језик који је био бутстрапован је NELIAC. Од комерцијалних језика, први такав је био PL/I. Данас, велики део језика је бутстрапован, неки од њих су: Basic, C, Pascal, Haskell, Modula-2, Oberon, OCaml, Scheme и многи други.