Oberon space

General Category => Общий раздел => Тема начата: valexey_u от Март 06, 2013, 10:23:02 am

Название: Опубликован код первого компилятора для языка Си
Отправлено: valexey_u от Март 06, 2013, 10:23:02 am
http://www.opennet.ru/opennews/art.shtml?num=36312
Цитировать
Открыт доступ к исходным текстам первого компилятора для языка Си, написанного Дэнисом Ритчи в 1972 году для платформы PDP-11. Код был обнаружен при разборе архивных магнитных лент в рамках инициированной задолго до смерти Дэниса Ритчи инициативы по поиску и восстановлению первых наработок, связанных с языком Си. Код компилятора написан на первом диалекте языка Си, который сильно отличается от современного Си и уже не поддерживается ни одним из компиляторов.

Работа по выявлению архивного кода проведена энтузиастами нового направления истории - индустриальной палеонтологии, в рамках которого осуществляется анализ истоков развития тех или иных технологий. Первым успехом нового направления было восстановление в 2010 году кода первой редакции Unix.

Сам код:
https://github.com/mortdeus/legacy-cc
История обнаружения:
http://cm.bell-labs.com/cm/cs/who/dmr/primevalC.html

Глянул - язык действительно существенно отличается от стандартного Си. Ну и вообще, любопытно посмотреть как писали в 1972 году, особенно как писали компиляторы.
Название: Re: Опубликован код первого компилятора для языка Си
Отправлено: valexey_u от Март 06, 2013, 10:33:29 am
На что бы хотел обратить внимание:
пример функции:
error(s, p1, p2) {
extern printf, line, fout, flush, putchar, nerror;
int f;

nerror++;
flush();
f = fout;
fout = 1;
printf("%d: ", line);
printf(s, p1, p2);
putchar('\n');
fout = f;
}

Во-первых в исходниках нет никаких хедеров - изначально их никто не планировал, и они были не нужны. Зато каждая функция, ЯВНО указывает какие именно другие функции и внешние/глобальные она в своем теле использует (в данном случае это printf, line, fout, flush, putchar, nerror).

Таким образом, единицей инкапсуляции, и, потенциально, компиляции а также загрузки и выгрузки является Функция. Кстати, ровно то же самое мы наблюдаем и в Алголе-68.
Название: Re: Опубликован код первого компилятора для языка Си
Отправлено: Geniepro от Март 06, 2013, 11:10:07 am
прикольно )
Название: Re: Опубликован код первого компилятора для языка Си
Отправлено: Губанов Сергей Юрьевич от Март 06, 2013, 11:44:44 am
Во-первых в исходниках нет никаких хедеров - изначально их никто не планировал, и они были не нужны.
Структур ещё не было? Замучились бы структуры описывать в каждой процедуре...
Название: Re: Опубликован код первого компилятора для языка Си
Отправлено: valexey_u от Март 06, 2013, 12:12:21 pm
Во-первых в исходниках нет никаких хедеров - изначально их никто не планировал, и они были не нужны.
Структур ещё не было? Замучились бы структуры описывать в каждой процедуре...
Конкретно в том, что я смотрел - нет, еще не было (не даром оно зовется prestruct). Подробней про то что там выложено сказано тут: http://cm.bell-labs.com/cm/cs/who/dmr/primevalC.html

Кстати, безхедерный стиль жил очень долго. В прошлом году я работал с кодом писанным где-то в 1985 году, и там хедеров не было. А структуры были :-)