Раскрутка компилятора: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
LEMeZza (обсуждение | вклад) гм |
GAG (обсуждение | вклад) м викификация |
||
Строка 1: | Строка 1: | ||
'''Раскрутка компилятора''' ({{lang-en|bootstrapping}}) — метод создания [[компилятор]]а некоторого [[Язык программирования|языка программирования]], позволяющий использовать для написания компилятора сам этот язык (не прибегая к программированию на [[Низкоуровневый язык программирования|языке низкого уровня]]). Раскрутка также используется для переноса компиляторов на новые [[Аппаратная платформа компьютера|платформы]]. Основные идеи раскрутки появились в середине [[1950-е|1950-х]] годов, а впервые метод был применён для реализации языка [[Neliac]] в [[1960 год]]у. С помощью этого метода было реализовано большое количество языков, в том числе [[BASIC]], [[Си (язык программирования)|С]], [[Pascal]], [[Haskell]], [[Modula-2]], [[Oberon]], [[OCaml]], [[Common Lisp]], [[Scheme]] и [[Nemerle]]. |
'''Раскрутка компилятора''' ({{lang-en|bootstrapping}}) — метод создания [[компилятор]]а некоторого [[Язык программирования|языка программирования]], позволяющий использовать для написания компилятора сам этот язык (не прибегая к программированию на [[Низкоуровневый язык программирования|языке низкого уровня]]). Раскрутка также используется для переноса компиляторов на новые [[Аппаратная платформа компьютера|платформы]]. Основные идеи раскрутки появились в середине [[1950-е|1950-х]] годов, а впервые метод был применён для реализации языка [[Neliac]] в [[1960 год]]у. С помощью этого метода было реализовано большое количество языков, в том числе [[BASIC]], [[Си (язык программирования)|С]], [[Pascal]], [[Haskell]], [[Modula-2]], [[Оберон (язык программирования)|Oberon]], [[OCaml]], [[Common Lisp]], [[Scheme]] и [[Nemerle]]. |
||
Раскрутка компилятора имеет свои преимущества:<ref>{{книга |
Раскрутка компилятора имеет свои преимущества:<ref>{{книга |
Версия от 22:37, 27 февраля 2012
Раскрутка компилятора (англ. bootstrapping) — метод создания компилятора некоторого языка программирования, позволяющий использовать для написания компилятора сам этот язык (не прибегая к программированию на языке низкого уровня). Раскрутка также используется для переноса компиляторов на новые платформы. Основные идеи раскрутки появились в середине 1950-х годов, а впервые метод был применён для реализации языка Neliac в 1960 году. С помощью этого метода было реализовано большое количество языков, в том числе BASIC, С, Pascal, Haskell, Modula-2, Oberon, OCaml, Common Lisp, Scheme и Nemerle.
Раскрутка компилятора имеет свои преимущества:[1]
- это своеобразный тест компилируемого языка;
- разработчику компилятора необходимо знать только язык компилятора;
- это всесторонняя проверка самосогласованности, так как компилятор должен уметь обработать свой объектный код.
Принцип работы
Создание компилятора языка L для платформы M методом раскрутки подразумевает последовательность некоторых шагов.
- На первом шаге из языка L выделяется подмножество L0, которое не требует больших усилий для реализации, но является достаточно богатым для написания компилятора самого себя.
- На втором шаге, используя какой-либо существующий для платформы M язык (например, C) программируется компилятор L0—С—M.
- Затем на языке L0 для платформы M пишется компилятор самого языка L0, то есть L0—L0—M, который можно скомпилировать с помощью компилятора, полученного на втором шаге. После этого шага у программиста имеется компилятор L0, способный обработать свой исходный код.
- Далее начинается постепенное расширение L0 до L: добавляется какая-либо ранее не реализованная возможность языка L, после чего предыдущей версией компилируется новая, а вновь добавленную возможность можно использовать в компиляторе для последующего расширения языка. Именно этот процесс и называют раскруткой.
Примечания
- ↑ Patrick D. Terry. Compilers and Compiler Generators: An Introduction With C++. — International Thomson Computer Press, 1997. — ISBN 1850322988.
Литература
- Альфред Ахо, Рави Сети, Джеффри Ульман. Раскрутка // Компиляторы: принципы, технологии и инструменты = Compilers: Principles, Techniques, and Tools. — М.: Вильямс, 2003. — С. 681—684. — 768 с. — ISBN 5-8459-0189-8.
- С. З. Свердлов. Самокомпилятор. Раскрутка // Языки программирования и методы трансляции. — СПб.: Питер, 2007. — С. 427—431. — 638 с. — ISBN 5-469-00378-7.
Это заготовка статьи по информатике. Помогите Википедии, дополнив её. |