Бутстраповање (компајлери)
Бутстраповање је термин који се користи у рачунарству да се опишу технике укључене у процесс писања компајлера (или асемблера) у циљном програмском језику кога он треба да компајлира.
Неки ће се питати како је проблем „кокошке и јајета” у креирању компајлера решен: ако некоме треба копмајлер за језик 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 и многи други.