The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Опубликован код первого компилятора для языка Си

06.03.2013 14:04

Открыт доступ к исходным текстам первого компилятора для языка Си, написанного Дэнисом Ритчи в 1972 году для платформы PDP-11. Код был обнаружен при разборе архивных магнитных лент в рамках инициированной задолго до смерти Дэниса Ритчи инициативы по поиску и восстановлению первых наработок, связанных с языком Си. Код компилятора написан на первом диалекте языка Си, который сильно отличается от современного Си и уже не поддерживается ни одним из компиляторов.

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

  1. Главная ссылка к новости (http://www.theregister.co.uk/2...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/36312-gcc
Ключевые слова: gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (80) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 14:17, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Ждем исходников первой виндуз!
     
     
  • 2.2, Anonimaus (?), 14:21, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • –8 +/
    reactos не?
     
     
  • 3.5, Аноним (-), 14:52, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Reactos — клон NT, о невежественный. Windows 1.0 же — досовское приложение.
     
     
  • 4.78, Anonimaus (?), 09:28, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    какая разница??? что одно, что другое уже НЕ нужно.
     
  • 3.6, Capone (?), 14:54, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Не уверен не подрезай, т.е. не говори. Первая винда вынырнула в октябре(или ноябре не помню точно) 1985 года, хотя по планам должна была выйти еще летом того же года. До реактОС оставалось еще дофига времени.
     
     
  • 4.39, Vaso Petrovich (?), 16:44, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И к чему это сказано?
     
  • 4.63, FractalizeR (ok), 23:56, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это вы о чем?
     
  • 2.4, Max (??), 14:29, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Ради смеха что ли?
     
     
  • 3.51, Какаянахренразница (ok), 18:36, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Наоборот, люди хотят ужастиков.
     
  • 2.14, dq0s4y71 (??), 15:35, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это DOS Shell что ли? Так он валяется где-то на торрентах вместе с исходниками MS-DOS.
     
     
  • 3.31, verus (ok), 16:16, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В том-то и дело, что на торрентах.
     
     
  • 4.35, dq0s4y71 (??), 16:22, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Да они только "на посмотреть", больше ни для чего и не нужны.
     
     
  • 5.54, verus (ok), 20:48, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В том-то и дело, что официально смотреть-то  нельзя (уж простите за тавтологию).
     

  • 1.7, Аноним (-), 15:08, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Just for fun можно попробовать даже скомпилировать его в Unix v7 через SIMH. Это, пожалуй, будет покруче "пропатчить KDE2 на FreeBSD". :)
     
  • 1.9, Аноним (-), 15:12, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    мне чтото эта строчка мозг взорвала:
    i = namsiz;
    sp = symbuf;
    while(i--)
       if ((*sp++ = *s++)=='\0') --s;

    я так понимаю что тут копируется строка а остальные байты забиваются нулями?

     
     
  • 2.10, Аноним (-), 15:20, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    просто копируется до 0
     
  • 2.11, Аноним (-), 15:26, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Скопировать namsiz элементов symbuf в s, пропуская нуль-символы.
     
     
  • 3.12, Аноним (-), 15:29, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Скопировать namsiz элементов symbuf в s, пропуская нуль-символы.

    Хотя, нет, я ошибся. Ваше предположение верно.

     
  • 2.41, noize (ok), 17:05, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    вы почитайте K&R, там подобного добра навалом
     
  • 2.53, Аноним (-), 19:36, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Самая стандартнейшая из Сишных идиом жеп
     
     
  • 3.55, Andrey Mitrofanov (?), 21:21, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Самая стандартнейшая из Сишных идиом же

    Так :/ "стандартнее":

    while(i--)if(*sp++ = *s)s++;

     
     
  • 4.75, Тузя (ok), 07:56, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Имхо нет.
    1) 0 и '\0', строго говоря, это не одно и то же;
    2) Зачем вы делаете s++, уж тогда лучше ++s;
    3) Имо, оригинальный пример проще читался, так как сдвиг указателей происходил в обеих строках одновременно и _после_ операции сравнения.
     
     
  • 5.88, анон (?), 14:15, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    1. с чего это не одно и тоже?
    2. чем лучше? значение инкремента прям тут же не используется.
     
     
  • 6.91, Andrey Mitrofanov (?), 15:52, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > 1. с чего это не одно и тоже?

    В отсутствие знакового расширения [в рассматриваемом случае программ-археологии] в старшем (?)байте может оказаться [ненулевой] мусор.

    > 2. чем лучше? значение инкремента прям тут же не используется.

    Предпочтение же, чего не понятно, утёнок и проч.

     
  • 2.83, x0r (??), 12:25, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    убивать их за такое - ничерта не понятно и неоптимально

    size = nameSize;
    outStr = symbolBuffer;
    while(size-- && *inStr++ != '\0')
         *outStr++ = *inStr++;
    while(size--)
       *outStr++ = '\0';

     
     
  • 3.89, анон (?), 14:16, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    вот уж точно неоптимально
     
  • 3.90, анон (?), 15:44, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    новое поколение знает как программировать лучше создателей языка. Как известный факт: на конкурсе походок а-ля Чарли Чаплин выйграл не Чаплин, а кто-то другой..
     
     
  • 4.92, Andrey Mitrofanov (?), 15:54, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > новое поколение знает как программировать лучше создателей языка.

    Нет-нет, послушайте! Человек же в курсе самых трендОвых оптимизаций для PDP-11.</:>

     
  • 3.95, Аноним (-), 17:49, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У меня подозрение, что второй цикл будет бесконечным.
     
     
  • 4.98, Andrey Mitrofanov (?), 18:48, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > У меня подозрение, что второй цикл будет бесконечным.

    s/будет/может быть/
    Глазастый, молодец! А не "не оптимальненько".

     
  • 4.101, Васька (??), 11:52, 08/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня подозрение, что второй цикл будет бесконечным.

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

     
  • 2.106, евгений (??), 16:41, 09/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Правильно понимаешь, только нулями - это не совсем точно А вот коментарии пр... большой текст свёрнут, показать
     
     
  • 3.107, евгений (??), 16:46, 09/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    И копирует _из_ s _в_ symbuf (s - источник, symbuf - приемник)
     
  • 3.108, Michael Shigorin (ok), 19:33, 09/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > P.S. Не нашел как форматировать код

    [code]...[/code]

     

  • 1.16, Аноним (-), 15:42, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    main(argc, argv)
    int argv[];

    Объясните дебилу, пожалуйста, как argv может быть int?

     
     
  • 2.17, Аноним (-), 15:47, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Указатель это число, ага


     
     
  • 3.20, iZEN (ok), 15:50, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • –13 +/
    > Указатель это число, ага

    http://rewalls.com/pic/201111/1920x1080/reWalls.com-54928.jpg

     
     
  • 4.43, Аноним (-), 17:13, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    что не так?
     
     
  • 5.46, ZloySergant (ok), 17:29, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    >что не так?

    Да не обращай внимания. Ну не понимает человек что такое массив в Си. Либо троллит.

     
     
  • 6.61, pavlinux (ok), 22:37, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>что не так?
    > Да не обращай внимания. Ну не понимает человек что такое массив в
    > Си. Либо троллит.

    Ну-кась, расскажи-ка, как argv[] могет быть целым?

     
     
  • 7.62, Andrey Mitrofanov (?), 22:42, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>>что не так?
    >> Да не обращай внимания. Ну не понимает человек что такое массив в
    >> Си. Либо троллит.
    > Ну-кась, расскажи-ка, как argv[] могет быть целым?

    int того же размера, что и char *. И отсутствие целых _других размеров_. Может, и unsigned int _тоже не было. Иди даже _полное отсутствие 'char *', а то и самоё char.

    printf("avgv0=%s\n",argv[0]);

    +++Впрочем, printf и '\n' тоже не.

     
     
  • 8.69, pavlinux (ok), 03:23, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    1 char и int - одна х я Поэтому пофигу, что int array , что char array 2 ... текст свёрнут, показать
     
     
  • 9.82, цирроз (ok), 11:39, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    я понял, что ты хотел написать, но те, кто совсем не в курсе - совсем уж не пойм... текст свёрнут, показать
     
  • 9.86, iZEN (ok), 14:06, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Ну точно как в бейсике 8212 смешение типов данных Если нет разницы в размера... большой текст свёрнут, показать
     
  • 9.93, Andrey Mitrofanov (?), 15:59, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Началось-то с int против модернового char CODE int main int argc, char... текст свёрнут, показать
     
  • 7.96, ZloySergant (ok), 18:42, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >>>что не так?
    >> Да не обращай внимания. Ну не понимает человек что такое массив в
    >> Си. Либо троллит.
    > Ну-кась, расскажи-ка, как argv[] могет быть целым?

    Цит. "argv is a pointer to an array of pointers".

     
     
  • 8.102, pavlinux (ok), 22:49, 08/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, щаз code ISO IEC 9899 201x 5 1 2 2 1 Program startup 1 The function ca... большой текст свёрнут, показать
     
     
  • 9.103, ZloySergant (ok), 01:11, 09/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Паша, читай вниметельней argv, argv argc - указатели pointer Конструкт типа... текст свёрнут, показать
     
     
  • 10.104, pavlinux (ok), 03:09, 09/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Пля, мой косяк, Я почему-то прочитал как argv is a pointer to pointer - ... текст свёрнут, показать
     
     
  • 11.105, ZloySergant (ok), 13:37, 09/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А что про ремарку То что там написано, что int argc может быть написано как ... текст свёрнут, показать
     
  • 3.67, Аноним (-), 01:27, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Указатель это число, ага

    Более того, это просто адрес в памяти.

     

  • 1.45, Zenitur (ok), 17:19, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    На каком языке написан первый компилятор Си? Стопудово не на Си.
     
     
  • 2.47, slowpoke (?), 17:33, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    изначально видимо на B как и unix, а потом может переписан на C
     
  • 2.48, dq0s4y71 (??), 17:44, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вас удивляет, что самый первый компилятор какого-то языка написан не на том языке? :)
     
  • 2.52, анон (?), 18:44, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Код компилятора написан на первом диалекте языка Си, который сильно отличается от современного Си и уже не поддерживается ни одним из компиляторов"

    новость не читай@херню пиши

     
     
  • 3.56, Аноним (-), 21:37, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вопрос не читай@сразу отвечай. Человек спросил про самый первый компилятор, а не первый компилятор, написанный на Си.
     
  • 2.58, Andrew Kolchoogin (?), 22:18, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Первый компилятор C был написан на языке Ассемблера для PDP-11 -- B на этой платформе не было, его не стали тянуть с PDP-7.
     
     
  • 3.60, Andrew Kolchoogin (?), 22:20, 06/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    "... Первый компилятор С для платформы PDP-11 ..."
    // Obvious fix
     
  • 2.68, Аноним (-), 01:28, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Стопудово не на Си.

    Не, ты явно не в курсе того что программеры любят задачу про Мюнхаузена и подъем самого себя за свои же шнурки из болота ("bootstrap", в память о Мюнхаузене и его ботинках).

     
     
  • 3.70, angra (ok), 04:08, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это называется "слышал звон, но не знает где он". При bootstrap компилятор ЯП может собрать сам себя, или свою новую версию, или первую версию себя для другой архитектуры. Однако это не отменяет необходимость в наличии самой первой версии компилятора, написанной на другом ЯП, ну или в клиническом случае вручную переведенной в машинный код.
     
     
  • 4.72, Аноним (-), 04:36, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > наличии самой первой версии компилятора, написанной на другом ЯП, ну или
    > в клиническом случае вручную переведенной в машинный код.

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

     
     
  • 5.81, Аноним (-), 11:20, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Но в результате все-таки получается что первая версия компилятора которая именно им и считается - таки собрана сама собой.

    Нет. Компилятор вовсе не обязан быть написанным на том же языке, который компилирует.

     

  • 1.57, anonymous (??), 22:17, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Опубликован код первого компилятора для языка Си
    >Код компилятора написан на первом диалекте языка Си

    Но ведь наверное он всё-таки не первый, его ведь чем-то компилили?

     
     
  • 2.65, Аноним (-), 01:11, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Почитай о раскрутке компилятора
     
     
  • 3.74, anonymous (??), 05:59, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Почитал. Раскрутка всё равно предполагает, что сначала должен был использоваться компилятор, написанный на чём-то другом.
     
     
  • 4.80, Аноним (-), 10:35, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Почитал. Раскрутка всё равно предполагает, что сначала должен был использоваться компилятор,
    > написанный на чём-то другом.

    Не подразумевает. Например первую версия компилятора подмножества Паскаля после неудавшейся попытки написать ее на Фортране написали на самом подмножестве. Затем один из разработчиков уединился на пару недель для перевода текста компилятора в машинные коды вручную.

     
     
  • 5.94, Andrey Mitrofanov (?), 16:01, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Затем один из разработчиков уединился на пару недель для перевода текста компилятора в машинные коды вручную.

    Один из разработчиков в качестве первого %) компилятора это готичненько.

     
  • 4.85, qulinxao (?), 13:48, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    http://homepage.ntlworld.com/edmund.grimley-evans/bcompiler.html
     

  • 1.59, Andrew Kolchoogin (?), 22:19, 06/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Кстати. Вот ведь магнитная лента -- мега-носитель! 40 лет прошло -- а хоть бы фиг, читаются!
     
     
  • 2.64, Федя (?), 00:40, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    не чета современным носителям
     
     
  • 3.76, Аноним (-), 08:10, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Магнитная лента же вполне современный носитель, используется для бэкапов. Зато она не обеспечивает произвольный доступ.
     
     
  • 4.84, Аноним (-), 13:15, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Извините, Капитан, не узнал Вас в гриме...
     
  • 2.73, Аноним (-), 04:37, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Кстати. Вот ведь магнитная лента -- мега-носитель! 40 лет прошло -- а
    > хоть бы фиг, читаются!

    Да и флоппики через 40 лет читаться будут, вероятно. Если вы, конечно, сможете найти для них привод и куда его такой хороший подключать.

    Магнитные диски в принципе тоже будут читаться. Ну, если флеш-память с микропрограммой не слетит. Сама по себе магнитная запись - условно-вечная, в том плане что у нее нет поводов исчезать куда-то "просто так".

     
     
  • 3.87, Аноним (-), 14:15, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Такую вещь как "закон возрастания энтропии" в школе Вы успешно проходили?
     
     
  • 4.109, pavlinux (ok), 03:46, 12/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Такую вещь как "закон возрастания энтропии" в школе Вы успешно проходили?

    Флоппик есть адиабатический термопроцесс? :) Бамбук, ты чё, себя курил!?

     
  • 3.99, Michael Shigorin (ok), 02:30, 08/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сама по себе магнитная запись - условно-вечная, в том
    > плане что у нее нет поводов исчезать куда-то "просто так".

    Н-да, то есть про саморазмагничивание, естественное магнитное поле Земли и потоки элементарных частиц мы не подозреваем...

     

  • 1.66, Аноним (-), 01:12, 07/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да уж, на структурное программирование они клали с прибором.
     
     
  • 2.77, Аноним (-), 09:17, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а Попов лоханулся что в своё радио не впаял fm-декодер
     
     
  • 3.79, Аноним (-), 10:26, 07/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Паскаль, вышедший незадолго до Си, создавался в том числе для структурного программирования. Си тоже содержит в себе все необходимое для этого.
     

  • 1.100, _CyberDaemon_ (??), 10:04, 08/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Исходники Windows 1.0 хочется глянуть только из спортивного интереса. Как в том анекдоте - "... только Гейтс может что-то жопой написать..."
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру