[compiler-construction] Как был написан первый компилятор?



Answers

Пожалуйста, прочитайте о bootstrapping и истории написания компилятора

Идея состоит в том, чтобы написать очень простой компилятор непосредственно в машинный код, использовать его для написания более сложного компилятора, использовать второй для создания третьего и так далее, пока у вас не будет полнофункционального компилятора.

Question

Я слышал о цыпленке и яйце и самонакладке. У меня есть несколько вопросов.

Что написал первый компилятор, который что-то преобразовал в двоичные инструкции?

Является сборкой, скомпилированной или переведенной в двоичные инструкции?

... Мне было бы трудно поверить, что они пишут компилятор в двоичном формате.




Первые программы были записаны в машинный код (а не язык ассемблера) - фактические номера подключены к памяти компьютера с помощью переключателей. Мы прошли долгий путь ...

Иногда это все еще происходит в малой степени - исправлять небольшие фрагменты кода или создавать трюки. Я вспоминаю пробивание чисел в основные строки, которые затем выполнялись как небольшие быстрые подпрограммы на ранних микронах. Я также помню, чтобы переключать переключатели на передней панели PDP-11, чтобы ввести программу загрузчика в свою память для университетского курса.

Эти программы иногда использовались для обработки текстовых файлов для создания других программ, а также были созданы языковые языки программирования.




Воз сказал в одном из своих публичных разговоров, что, когда он начал, он не мог позволить себе компилятор, поэтому он скомпилировался в бинарный документ на бумаге. Если вы хотите увидеть что-то еще более дикое, прочитайте об условиях, при которых Билл Гейтс и Пол Аллен написал BASIC для Altair 8800.

Что касается «написания компьютера в двоичном формате» - сделайте шаг назад от программиста и подумайте о том, что такое ранние компьютеры. На самом высоком уровне материал еще не существовал - вы думали обо всем на низком уровне, потому что это все, что было. У вас было аппаратное обеспечение, которое могло бы выполнять базовую логику и арифметику, которые вы манипулируете с помощью машинного кода (который только что скомпилирован сборкой - Amber объясняет, почему эта часть не сложно сделать вручную), и вы хотели, чтобы это аппаратное обеспечение выполняло определенные математические подвиги. Вы не беспокоились о несуществующей операционной системе, вы просто сказали аппаратным средствам (в сборке), как манипулировать номерами, которые вы его кормите. Это был просто большой калькулятор. Компьютер сегодня был построен за одну абстракцию за раз.

Если вы хотите сломать барьер, который заставляет компьютеры чувствовать себя как магия, я настоятельно рекомендую прочитать CODE Чарльзом Петцольдом и / или Элементами вычислительных систем . Имея только базовые знания в программировании, эти чудесно доступные книги помогут вам понять компьютеры сверху донизу. Очевидно, что невозможно получить comp. Sci. или степень EE после всего двух книг, но я могу сказать, как программист-самоучка, который пропустил формальное обучение: эти книги потрясли мой мир!




Related