Верно ли, что первый компилятор C был написан в самой C? Затем, как это было выполнено и скомпилировано? Или, был ли этот компилятор написан на ассемблере?
Как был написан первый компилятор C?
Ответ 1
Это хорошо описано в Dennis Ritchie writeup истории языка C.
Давая просто краткое изложение того, что он там написал, используйте его статью для более тонких деталей. C начался с языка BCPL, у Кена Томсона был доступ к компилятору, который работал на основном кадре General Electrics 635. Недовольный языком, Томсон использовал BCPL для написания компилятора для языка B, эволюционного шага вне BCPL, который устранил некоторые технические проблемы в BCPL.
Они использовали B для создания программ на миникомпьютере PDP-7, хотя большинство из них были немного больше, чем игрушечные программы, у машины были очень ограниченные аппаратные возможности. Одним из важных шагов, предпринятых Thomson, было переписать компилятор B в самой B. Обычный шаг начальной загрузки.
Затем этот компилятор постепенно изменялся через непродолжительный промежуточный шаг под названием NB (New B), чтобы начать напоминать C. Миникомпьютер PDP-11 сыграл важную роль в этом шаге, предоставляя им достаточно места для улучшения языка и компилятора.
Ответ 2
Первый компилятор C не был написан на языке C, как правило, при написании компилятора мы используем либо язык ассемблера, либо другой язык программирования, и общепризнано, что после первой компиляции компилятор переписан на нем на родном языке.
Там много языков программирования, которые были написаны на C, переписаны на их родном языке: Java, например, Ada...
Ответ 3
Чтение примечания Денниса Ритчи на primevalC указывает, что, скорее, как цыпленок и яйцо, C развился из языка предшественника вместе с его собственный компилятор при загрузке. Временные шкалы видообразования были быстрее, чем для Gallus gallus domesticus.
Можно даже увидеть исходный код компилятора, попавший в разгар эволюционных потрясений. Заметка связана с двумя моментальными снимками, полученными из резервных копий. Этот код также размещен на github. Эти снимки представляют собой промежуточные окаменелости за несколько лет до синтаксиса K & R. Описание Денниса одной из лент показывает, что это замораживающий кадр строящихся структур:
"prestruct-c" - это копия компилятора непосредственно перед тем, как я начал меняться это использовать сами структуры.
Другими словами, компилятор был расширен для поддержки структур, но еще не использовал их. Хорошее время для создания резервной копии на магнитной ленте...