Oberon space
General Category => Общий раздел => Тема начата: 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 году, особенно как писали компиляторы.
-
На что бы хотел обратить внимание:
пример функции:
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.
-
прикольно )
-
Во-первых в исходниках нет никаких хедеров - изначально их никто не планировал, и они были не нужны.
Структур ещё не было? Замучились бы структуры описывать в каждой процедуре...
-
Во-первых в исходниках нет никаких хедеров - изначально их никто не планировал, и они были не нужны.
Структур ещё не было? Замучились бы структуры описывать в каждой процедуре...
Конкретно в том, что я смотрел - нет, еще не было (не даром оно зовется prestruct). Подробней про то что там выложено сказано тут: http://cm.bell-labs.com/cm/cs/who/dmr/primevalC.html
Кстати, безхедерный стиль жил очень долго. В прошлом году я работал с кодом писанным где-то в 1985 году, и там хедеров не было. А структуры были :-)