Если Вам нужен компилятор для языка X, чтобы получить компилятор для языка X (который написан на языке X), то как написать первый компилятор? Решение проблемы курицы и яйца возможно следующими методами:
1) Создать интерпретатор или компилятор для языка X на языке Y. Никлаус Вирт написал первый компилятор Паскаля на Фортране.
2) Этот интерпретатор или компилятор для полной версии языка X уже может быть написан на языке Y кем-то другим; такая раскрутка часто применяется для языка Scheme.
3) Первая версия компилятора может быть написана на подмножестве языка X, для которого уже существует некий другой компилятор; таким способом были раскручены некоторые подмножества Java, Haskell и Free Pascal.
4) Для создания компилятора языка X можно провести кросс-компиляцию на другой платформе, на которой уже существует компилятор для X; таким способом обычно портируются компиляторы, написанные на Си. Такой же способ используется для Free Pascal после начальной раскрутки.
5) Написание компилятора на языке X; затем компилирование вручную из исходного кода (вероятно всего, без оптимизации) и выполнение полученного кода для получения оптимизированного компилятора. Дональд Кнут использовал этот метод для своей системы грамотного программирования WEB.
Другие языки программирования и технологии
На чем пишут компиляторы? На C? Или, может, С++?
есть старая добрая традиция: писать компилятор на том же самом языке.
Например, Си был изначально написан на Си, Си++ на первых шагах был написан на Си (но Си-же подмножество Си++, так что можете считать, что на Си++), дальше компиляторы писались на самом Си++ прошлого поколения.
В Юниксе исходник был на Си.
А еще: для новой платформы пишется сначала кросс-компилятор на какой-йто другой, старой платформе, то есть компилятор, работающий в старой среде, но делающий программы для новой. Потом он транслируется сам через себя, и получается уже компилятор для новой среды, работающий в ней.
Например, Си был изначально написан на Си, Си++ на первых шагах был написан на Си (но Си-же подмножество Си++, так что можете считать, что на Си++), дальше компиляторы писались на самом Си++ прошлого поколения.
В Юниксе исходник был на Си.
А еще: для новой платформы пишется сначала кросс-компилятор на какой-йто другой, старой платформе, то есть компилятор, работающий в старой среде, но делающий программы для новой. Потом он транслируется сам через себя, и получается уже компилятор для новой среды, работающий в ней.
На чем угодно. Есть такое понятие самокомпиляция
В идеале на Ассемблере.
gcc на Си написан
Да хоть на brainfuck, кто мешает-то? :-)
На чем угодно, хоть на PureBasic.
глупый вопрос. вы думаете это регламентировано?
С
Похожие вопросы
- Проблемы с кодировкой в компиляторе Borland C++ Builder
- Как установить Boost на компилятор Dev C/C++
- Как создать компилятор на C# ? Подкиньте статью или видео по этому вопросу, (желательно русское)
- На какой программе писать на языке C++?
- Возможно ли самостоятельно научится писать программы на C++ без навыков программирования?
- На каком языке программирования писать гостиничную программу? C++, C#, PHP, Java?
- Я пишу проект на C#.
- На чём лучше писать приложения, на C++ или Delphi(на языке, а не на среде разработки)
- Если я хочу писать игры на C++, то мне надо выучить некую подкатегорию языка (игровую) или же хватит и основных знаний?
- C++ как обратиться к элементу находящемуся в privatе? компилятор выдает ошибку