Яка історія компілятора С?


23

Коли ми говоримо, що "Денніс Річі розвинув мову С", чи маємо на увазі, що він створив компілятор (використовуючи "вже" розроблену іншу мову), який може компілювати вихідний код, написаний мовою С? якщо так, то якою мовою він писав перший компілятор C? Я розумію, що компілятор - це програма, і ми можемо створити інший компілятор для мови C, використовуючи наявний компілятор C. Це правильно?

Відповіді:


23

З вікі :

Річі найвідоміший як творець мови програмування на С та ключовий розробник операційної системи Unix та як співавтор остаточної книги про C.

Також із вікі :

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

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

Ця сторінка з лабораторій дзвоників відповідає на більшість ваших запитань.


Перша ланка розірвана.
Махмуд Хоссам

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

Денніс Річі користувався завантажувальним завантаженням . Запуск завантаження - це проста ідея, коли ви розробляєте початковий, простий компілятор у складанні, тоді ви використовуєте цей простий компілятор для складання повноцінного компілятора, написаного (підмножиною) вашої цільової мови. Ось як Ritchie створив дуже ранній компілятор last1120c .


2

Ця стаття повинна відповісти на ваше запитання:

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

Історія C пов'язана з мовою B, для якої Кен Томпсон розробив перекладача. Річчі використовував його на перших етапах розвитку С.


2

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

Звідси поширена приказка, що "C - це портативний асемблер". Це свідчить про те, що C навмисно дуже близький до центрального процесора (приблизно з 1970 року) за рівнем абстракції, а також є причиною того, що більшість вбудованих програмних засобів написані на якомусь С.

Отже, C тісно пов'язаний з Unix, і люди Unix написали перший компілятор C на основі попередньої роботи, щоб зробити те, що їм потрібно.

Зверніть увагу, що Керніган та Річі написали чудову книгу про С, яка, мабуть, є однією з найвпливовіших довідкових праць на комп'ютерній мові, оскільки вона була настільки чіткою і стислою, що більшість читачів могли вивчати такі теми, як покажчики та рекурсії з неї.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.