|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.03.2010, 17:37 | #1 |
Временно — юрист.
Форумчанин
Регистрация: 31.03.2008
Сообщений: 204
|
Как компиляторы для языков программирования пишутся на самих себе?
Вот узнал, что компилятор FASM написан на себе самом.
Не могу представить как это. Ну, всмысле, имея уже готовый копилятор того же FASMа, понятное дело, можно написать еще один, на нем же и для него же. Но как изначально это все выглядит? |
16.03.2010, 17:56 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Ну смотря как глубоко копать. Это ведь не с потолка появилось )) все и сразу. Читать историю надо.
А вариаций как создать первый экземпляр уйма. |
16.03.2010, 18:09 | #3 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
ну как... есть строгое соответствие между инструкцией на асамблере и ее двоичным представлением.
Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 16.03.2010 в 19:15. |
|
16.03.2010, 19:07 | #4 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 558
|
|
16.03.2010, 19:34 | #5 | |
Временно — юрист.
Форумчанин
Регистрация: 31.03.2008
Сообщений: 204
|
Цитата:
Ну ладно, допустим, что компилятор какого-то языка написан на предыдущей версии этого же языка, которая не важно на чем написана. Зачем такое извращение? Что дает такой подход? Я всегда был уверен, что хороший компилятор должен быть написан машинными инструкциями, и ни как иначе. |
|
16.03.2010, 19:43 | #6 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
Цитата:
|
|
16.03.2010, 20:17 | #7 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
16.03.2010, 20:40 | #8 | |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
FASM изначально разрабатывался на TASM-е с режимом IDEAL. С определенной версии он стал способен компилировать самого себя. По правде говоря не так уж и много команд нужно имплементировать что бы получить возможность компилировать такие программы. Это ведь по сути парсер текста.
Цитата:
"Тяжело в учении, легко в бою" - А.В. Суворов
Последний раз редактировалось Ivan_32; 16.03.2010 в 20:47. |
|
17.03.2010, 11:13 | #9 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Думаю, первая программа в этой родословной (какой-нибудь простенький хексовый редактор) была выбита на перфокартах и переписана на такой вот хард:
|
17.03.2010, 12:48 | #10 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Есть определенное правило для языков программирования, ужо и не помню как называется. Это один из показателей "хорошести" языка. В общем язык соответствует там чему-то в том случае, если транслятор с него можно написать на нем самом, например первые бейсики не могли себе этого позволить. Наиболее крут в этом плане Лисп - его на нем самом можно написать на паре страниц кода.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рейтинг популярности языков программирования | Lemo | Свободное общение | 20 | 03.11.2009 21:15 |
Изучение нескольких языков программирования | Neymexa | Свободное общение | 6 | 30.01.2009 15:25 |
Свободная энциклопедия языков программирования | kit1980 | Свободное общение | 0 | 05.06.2007 17:53 |
совмещение 2-х языков программирования | fis | Общие вопросы Delphi | 5 | 30.01.2007 20:13 |