Какова история компилятора C?


23

Когда мы говорим, что «Деннис Ритчи разработал язык C», мы имеем в виду, что он создал компилятор (используя «уже» разработанный другой язык), который может компилировать исходный код, написанный на языке C? если да, на каком языке он писал первый компилятор Си? Я понимаю, что компилятор - это программа, и мы можем создать другой компилятор для языка Си, используя доступный в настоящее время компилятор Си. Это верно?

Ответы:


23

Из вики :

Ритчи наиболее известен как создатель языка программирования C и ключевой разработчик операционной системы Unix, а также как соавтор окончательной книги по C.

Также из вики :

Первый C-компилятор, написанный Деннисом Ритчи, использовал анализатор рекурсивного спуска, включал в себя определенные знания о PDP-11 и полагался на дополнительный машинно-специфический оптимизатор для улучшения кода на языке ассемблера, который он генерировал.

Первый компилятор Си также был написан им в сборке.

Эта страница от Bell-Labs отвечает на большинство ваших вопросов.


Первая ссылка не работает.
Махмуд Хоссам

IIRC, C был основан на более раннем языке под названием B, а Unix был основан на более ранней операционной системе под названием Multics. Было бы очевидным предположение, что они использовались для начальной загрузки разработки - но из того, что я прочитал, это неправильное предположение. Ранняя разработка Unix была на ассемблере, пока C не вступил во владение, например.
Steve314

2
IIRC, B был урезанной версией BCPL, который был ранним языком системного программирования. Я думаю, что большая часть ранней работы Unix была описана с использованием B, но я не уверен, что когда-либо существовал настоящий Unix-компилятор для этого (возможно, кросс-компилятор, который работал на чем-то другом).
TMN

Ой. , , написание компилятора на ассемблере.
комп

6
@compman В какой-то момент кто-то должен написать компилятор на ассемблере - как еще вы можете загрузить компилятор в HLL?
Ричард Гадсден

9

Проверьте это для урока истории: http://www.livinginternet.com/i/iw_unix_c.htm

Когда компьютер PDP-11 прибыл в Bell Labs, Деннис Ритчи построил на B создание нового языка C, который унаследовал вкус Томпсона к лаконичному синтаксису, и имел мощное сочетание функциональности высокого уровня и подробных функций, необходимых для программирования операционной системы. система. Большинство компонентов Unix были в конечном итоге переписаны на C, кульминацией которого стало само ядро ​​в 1973 году.

Также это может быть интересно: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, «построен на» как в «дизайн на основе дизайна» , а не как «скомпилированный с помощью» .
vartec

8

Деннис Ричи использовал начальную загрузку . Самозагрузка - простая идея, когда вы разрабатываете начальный, простой компилятор в сборке, а затем используете этот простой компилятор для компиляции вашего полноценного компилятора, написанного на (подмножестве) вашего целевого языка. Именно так Ритчи создал очень ранний компилятор last1120c .


2

Эта статья должна ответить на ваш вопрос:

http://www.faqs.org/docs/artu/c_evolution.html

История C связана с языком B, для которого Кен Томпсон разработал переводчик. Ричи использовал его для самых первых этапов развития Си.


2

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

Отсюда распространенное высказывание, что «C - это портативный ассемблер». Это отражает то, что C намеренно очень близок к процессору (примерно с 1970 г.) по уровню абстракции, а также является причиной того, что большинство встроенных программ написано на некотором роде C.

Итак, C тесно связан с Unix, и люди Unix написали первый компилятор C, основанный на более ранней работе, чтобы сделать то, что им нужно.

Обратите внимание, что Керниган и Ричи написали отличную книгу по Си, которая, вероятно, является одной из самых влиятельных справочных работ по компьютерному языку, поскольку она была настолько ясной и лаконичной, что большинство читателей могли изучать сложные предметы, такие как указатели и рекурсии из нее.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.