Другие языки программирования и технологии

На чем пишут компиляторы? На C? Или, может, С++?

Илья Янкин
Илья Янкин
6 774
Если Вам нужен компилятор для языка X, чтобы получить компилятор для языка X (который написан на языке X), то как написать первый компилятор? Решение проблемы курицы и яйца возможно следующими методами:

1) Создать интерпретатор или компилятор для языка X на языке Y. Никлаус Вирт написал первый компилятор Паскаля на Фортране.
2) Этот интерпретатор или компилятор для полной версии языка X уже может быть написан на языке Y кем-то другим; такая раскрутка часто применяется для языка Scheme.
3) Первая версия компилятора может быть написана на подмножестве языка X, для которого уже существует некий другой компилятор; таким способом были раскручены некоторые подмножества Java, Haskell и Free Pascal.
4) Для создания компилятора языка X можно провести кросс-компиляцию на другой платформе, на которой уже существует компилятор для X; таким способом обычно портируются компиляторы, написанные на Си. Такой же способ используется для Free Pascal после начальной раскрутки.
5) Написание компилятора на языке X; затем компилирование вручную из исходного кода (вероятно всего, без оптимизации) и выполнение полученного кода для получения оптимизированного компилятора. Дональд Кнут использовал этот метод для своей системы грамотного программирования WEB.
АТ
Александр Тусеев
28 402
Лучший ответ
есть старая добрая традиция: писать компилятор на том же самом языке.

Например, Си был изначально написан на Си, Си++ на первых шагах был написан на Си (но Си-же подмножество Си++, так что можете считать, что на Си++), дальше компиляторы писались на самом Си++ прошлого поколения.

В Юниксе исходник был на Си.

А еще: для новой платформы пишется сначала кросс-компилятор на какой-йто другой, старой платформе, то есть компилятор, работающий в старой среде, но делающий программы для новой. Потом он транслируется сам через себя, и получается уже компилятор для новой среды, работающий в ней.
Малик Раджапов
Малик Раджапов
51 433
На чем угодно. Есть такое понятие самокомпиляция
Дмитрий Уткин
Дмитрий Уткин
68 014
В идеале на Ассемблере.
gcc на Си написан
Да хоть на brainfuck, кто мешает-то? :-)
На чем угодно, хоть на PureBasic.
глупый вопрос. вы думаете это регламентировано?
Ілля Ларін
Ілля Ларін
2 179
С
Юрий Карасёв
Юрий Карасёв
1 152