![](https://habrastorage.org/getpro/habr/upload_files/f76/6c9/45b/f766c945bf43d84eb2ffb0c4c5a108ab.png)
Создатель.
Точнее всего описывает Денниса Ритчи именно это слово. Он не стал выдающимся учёным, породившим целые научные школы. Он не блистал на каждой обложке, и его имя не приходит на ум людям при словах «компьютер», «сайт». Однако, именно этот милый карапуз, детскую фотографию которого вы видите рядом с текстом, обессмертил себя, создав язык программирования С, вписав себя в систему UNIX и историю компьютерных систем, чем действительно изменил наше время. Из его рук вышла технология, которая используется уже многие десятки лет и не планирует терять своё место в истории.
Товарищ Ритчи обладал ещё одной важной чертой, он умел находить хороших, верных друзей, с которыми шёл к вершине. Сегодня мы с вами поговорим не только о операционной системе, языке программирования и их совместном развитии, но и о двух друзьях, Деннисе Ритчи и Кене Томпсоне, которые на протяжении многих лет вместе создавали цифровое будущее.
Денис Маккалистер Ритчи однажды был вынужден дать ответ, какое из своих творений он любит больше, С или UNIX. Мы решили тоже поставить вас в условия выбора и подготовили аудиоверсию статьи, вы можете сами выбрать, читать статью или слушать.
![Деннис, Джон, Линн, Билл Деннис, Джон, Линн, Билл](https://habrastorage.org/getpro/habr/upload_files/229/a8e/c4e/229a8ec4e41f2d2ada24541abaf5c0a2.jpeg)
![Деннис с матерью Деннис с матерью](https://habrastorage.org/getpro/habr/upload_files/75c/b0e/103/75cb0e10346465410124feb7a08a1afa.jpeg)
Деннис Ритчи был достаточно обычным ребёнком для будущего великого программиста. Его отец работал компьютерным специалистом в фирме Bell Labs, в которой будет блистать его сын до конца своей жизни. Его отец – один из авторов книги «Проектирование коммутационных схем», вышедшей в 1951 году. Книга была посвящена основным методам проектирования коммутационных схем: методам, которые применимы к цифровым компьютерам и другим сложным системам управления, а также к телефонным коммутационным системам. Сложно говорить, насколько работа отца сказалась на пути юного Денниса, но семья внесла свой вклад в его жизнь. Он был старшим ребёнком в своей большой семье (состоящей из матери, отца, двух братьев и сестры) и единственный из детей выбрал путь своего отца.
Деннис учился в старшей школе Саммита, прежде чем поступить в Гарвардский университет. В Гарварде он познакомился со своим первым компьютером, решив изменить свою специализацию (изначально он шёл по направлению изучения физики). Первый компьютер, который увидел Деннис, был им описан как «большая квадратная коробка-кубик». Заканчивал обучение в Гарварде он уже будучи аспирантом по прикладной математике, успешно написавшим диссертацию в 1968 году о «субрекурсивных иерархиях функций».
![Деннис Ритчи в годы учебы в аспирантуре. Его отец, Алистер Э. Ритчи (который также работалв Bell Labs) сидит сзади на мотоциклеДенниса Ритчи BSA 650. Деннис Ритчи в годы учебы в аспирантуре. Его отец, Алистер Э. Ритчи (который также работал в Bell Labs) сидит сзади на мотоцикле Денниса Ритчи BSA 650.](https://habrastorage.org/getpro/habr/upload_files/d84/303/e80/d84303e80d449e98823576882b7af52a.jpeg)
С диссертацией вышла большая сложность. Дело в том, что он её не защитил. Случилась не самая редкая для мира учёных ситуация, Деннис просто «забил» на некоторые формальности и не стал подавать подшитый вариант своей диссертации в университет. История была подробно раскрыта уже после смерти Денниса. Диссертация сохранилась у вдовы Пэта Фишера [руководителя Ритчи в Гарварде]. В то время было правило: нужно было предоставить переплетённую копию диссертации в Гарвард для получения сертификата из библиотеки, чтобы получить докторскую степень. Деннис диссертацию предоставил, она была одобрена диссертационным комитетом, он был готов предоставить напечатанную рукопись диссертации, когда услышал, что библиотека хочет, чтобы она была переплетена и передана им. И плата за переплёт была чем-то значительным в то время, не невозможной, но нетривиальной суммой. И как сказал Пэт, позиция Денниса была такой: «Если Гарвардская библиотека хочет переплетённую копию для себя, они должны заплатить за книгу, потому что я не собираюсь этого делать!» И, по всей видимости, он остался при своём мнении, в результате так и не получил докторскую степень. Удивительно похоже на ситуацию, когда немецкий учёный Конрад Цузе попросту отказался перечислять плату за то, чтобы его диссертация была принята.
Вполне вероятно, что были ещё какие-то сложности у Денниса, о которых мы не узнаем, но очень похоже на то, что он ушёл в коммерческую деятельность и к науке попросту охладел. Как раз в тот год, когда должна была состояться его защита, он вышел на работу в фирму Bell Labs, на тот момент это был Исследовательский центр вычислительной науки Bell Labs, в которой проработал с 1967 по 2007 годы.
На Хабре есть перевод статьи Дэвида Брока, историка технологий и директора Центра истории программного обеспечения Музея компьютерной истории. Это достаточно объёмный текст под названием «Утерянная диссертация Денниса Ритчи». Этот текст примечателен тем, что автор даёт интересный анализ диссертации, её теоретико-математического и прикладного значения, в частности подробно рассказывает о специфических решениях циклических программ и той значимости, которой обладало решение, созданное Ритчи. Мы рекомендуем ознакомиться с оригинальным или переводным текстом, посвящённым найденной диссертации. Это отдельная большая тема, которая требует погружения в сферу математики.
![Профессор Массачусетского технологического института Альберт Мейер, который был в одном классе с Деннисом Ритчи Профессор Массачусетского технологического института Альберт Мейер, который был в одном классе с Деннисом Ритчи](https://habrastorage.org/getpro/habr/upload_files/489/5bd/7a9/4895bd7a9fbfc3fc25d564b53c136131.jpeg)
В рамках данного текста мы лишь подчеркнём, что Ритчи отказался самостоятельно публиковать свои научные исследования, но поспособствовал их сохранению в публикации своего знакомого, Альберта Мейера.
Несмотря на то, что Деннис статью о своих диссертационных исследованиях не писал, он, со слов Альберта, прочитал его работу, сделал комментарии и подробно объяснил суть циклических программ, которыми занимался в рамках диссертации. Эта статья называлась «Сложность циклических программ», и с неё начиналась научная карьера Альберта Мейера, она же стала важной чертой в карьере и Денниса Ритчи, только вот с небольшим отличием. Когда Альберт решил продолжить активную совместную работу с Деннисом, у него ничего не вышло, ведь Ритчи был очень занят, работал и поигрывал в Spacewar!
![Алан Коток, Стив Рассел, Мартин «Шэг» Грец играют в Spacewar! в Computer Musuem, Бостон. Алан Коток, Стив Рассел, Мартин «Шэг» Грец играют в Spacewar! в Computer Musuem, Бостон.](https://habrastorage.org/getpro/habr/upload_files/1dd/0c7/d47/1dd0c7d473e0d86ceb773d61a476a3b3.jpeg)
К компьютерным играм мы ещё вернёмся, диссертация и научная деятельность Ритчи несколько увлекли нас, но на дворе 1967 год, Деннис заканчивает Гарвард и начинает свой путь к созданию языка программирования С и системы Unix, с которыми будет связана вся его последующая жизнь, а ещё он познакомится с Кеном Томпсоном, с которым будет работать и близко дружить до конца своих дней. И вместе с ним создаст Unix.
❯ Рождение и жизнь Unix
Как и любая другая система, Unix не появилась на пустом месте. Её корни уходят в 1957 год, к Виктору Высоцкому, создателю внутренней операционной системы BESYS, которая в дальнейшем идейно переродилась в Multics в 1964 году. Это был единый проект между MIT, General Electric и Bell Labs. А к 1969 году Bell Labs из проекта вышла, т. к. Multics не приносила коммерческого успеха. И вот тут начинается новый этап нашей истории…
Multics, технология разделения времени, позволяющая нескольким людям одновременно использовать один компьютер, была изобретена достаточно давно. В целом она была удобна, например позволяла звонить на компьютер с удалённых терминалов, а затем читать электронную почту, редактировать документы, выполнять вычисления и так далее. Этот проект глобально принадлежал AT&T, в нём работал целый ряд сотрудников Bell Telephone Laboratories, включая Томпсона и Ритчи. Самое главное – система была для них привычна. Однако, после начала коммерческих трудностей, когда AT&T перестала спонсировать проект, менеджеры Bell Labs начали сворачивать систему. Как воспоминал Ритчи, это был удобный интерактивный вычислительный сервис, который сформировал определённое сообщество и… исчез!
![Радд Канадей Радд Канадей](https://habrastorage.org/getpro/habr/upload_files/206/594/854/206594854dc775e93e8557112fcedbba.jpeg)
![Малкольм Дуглас Макилрой Малкольм Дуглас Макилрой](https://habrastorage.org/getpro/habr/upload_files/46f/f47/4bd/46ff474bdaeebaf13a4e50910efaa233.png)
В этот момент Ритчи и Томпсон пошли на интеллектуальное хулиганство, они попросту проигнорировали своё непосредственное руководство и начали разрабатывать собственную систему. Кроме Ритчи и Томпсона в разработке участвовали Радд Канадей и Дуглас Макилрой.
Они начали писать проект файловой системы, Томпсон сначала делал ставку на GE-645, но после полного отказа от Multics эта идея заглохла.
Причём она не просто «заглохла» в теории, она умерла на практике. Томпсон успел разработать большую часть дизайна. Ритчи внёс идею о файловых системах, которая позже будет реализована. Томпсон создаст симуляцию производительности предполагаемой конструкции файловой системы и поведения подкачки страниц программ. Более того, он дойдёт до написания ассемблера для машины и элементарного ядра операционной системы, величайшим достижением которого, как вспоминал Ритчи, было набрать приветственное сообщение. Сложность машины была такова, что даже простое сообщение уже было довольно заметным достижением… однако, в тот момент стало известно, что срок службы GE-645 начал исчисляться месяцами, и работу остановили. И тут снова заговорили компьютерные игры!
Томпсон работал над Space Travel, игрой, в которой симулировались все основные тела Солнечной системы вместе с космическим кораблём, который мог летать вокруг них. Но игра невероятно дорого обходилась, и Томпсон стал искать варианты для её изменения. Таким вариантом стал мини-компьютер PDP-7 от Digital Equipment Corp. Игра была переписана для запуска на нём. Через год, когда жена Томпсона уехала к своим родителям с их новорождённым сыном, Томпсон полностью посвятил себя программированию. Он писал суть кода будущей Unix для PDP-7.
![Man Men: Томпсон (ken) и Ритчи (dmr) являются авторами первого руководства по Unix или страниц «man», одна из которых показана здесь.Первое издание руководства было выпущено в ноябре 1971 года. Man Men: Томпсон (ken) и Ритчи (dmr) являются авторами первого руководства по Unix или страниц «man», одна из которых показана здесь. Первое издание руководства было выпущено в ноябре 1971 года.](https://habrastorage.org/getpro/habr/upload_files/592/d0e/966/592d0e966f3984b0ecbc59af862b2ff6.jpeg)
Само название стало профессиональной шуткой. Новая операционная система поддерживала только одного пользователя (Томпсона), он увидел в ней специфическую версию Multics [Multiplexed Information and Computer Services] и окрестил её Unics [Uniplexed Information and Computing Service], которая стала позже Unix. Разработка Unix имела единственную движущую цель — «сделать вычисления настолько простыми, насколько это возможно».
Изначально код писался для GE-645, к концу 1969 года Томпсон смог написать код операционной системы на самом PDP-7. Однако компьютер уже устарел, нужно было финансирование. Томпсон и Ритчи решили продолжить свои хулиганские действия.
Они написали боссам фирмы заявку на покупку новейшего на тот момент мини-компьютера производства DEC, PDP-11. Они указали, что будут создавать инструменты для редактирования и форматирования текста. Они совершенно спокойно умолчали о том, что им нужно будет сначала написать операционную систему для машины, которая будет поддерживать необходимое ПО для работы с текстом. Хотя даже не умолчали, просто сделали это малозаметной сноской. И их идея удалась, им купили новую машину!
![Joseph Frank Ossanna Joseph Frank Ossanna](https://habrastorage.org/getpro/habr/upload_files/bff/0c8/fe0/bff0c8fe02953fe6c92a833efe98e24d.jpeg)
Ещё шесть месяцев разработка велась на PDP-7 из-за отсутствия необходимой периферии, а позже система была перенесена. Вместе с этим, Джозеф Оссанна помог перенести текстовый форматировщик roff. Unix начал свои первые шаги на практических испытаниях.
Машинистки из патентного отдела использовали системы для редактирования и формирования патентных заявок и никаких эксцессов не случилось. Было получено разрешение на покупку следующей машины, Unix продолжил развиваться. Первая версия в ноябре 1971 года имела единственный редактор, строчно-ориентированный ed.
![Unix Engine: Ранние версии Unix работали на миникомпьютерах PDP-11 компании Digital Equipment Corp. Unix Engine: Ранние версии Unix работали на миникомпьютерах PDP-11 компании Digital Equipment Corp.](https://habrastorage.org/getpro/habr/upload_files/020/805/b6e/020805b6e1a58141b837439bfd2eb820.jpeg)
В первом издании Unix был блэкджек, шахматы и крестики-нолики, для менее важных вещей были инструменты для дампа и восстановления образов дисков на магнитной ленте, для чтения и записи бумажных лент, а также для создания, проверки, монтирования и размонтирования сменных дисковых пакетов.
Система предлагала интерактивную среду, которая к тому моменту позволяла разделять время. Пользователям были доступны языки программирования включая BASIC, Fortran, скрипты команд Unix, язык ассемблера и B. B, потомок BCPL (Basic Combined Programming Language), будет превращён в C, который Ритчи создал, одновременно работая над Unix. Первая редакция Unix позволяла программистам вызывать 34 различные низкоуровневые подпрограммы, встроенные в операционную систему, все они до сих пор доступны и активны в современных системах Unix и Linux. Первая версия содержала всего 4200 строк кода в своей основе и занимала 16 КБ основной памяти при запуске.
Одним из наиболее широко признанных вкладов Unix в культуру операционных систем и командных языков является конвейер, используемый в конвейере команд. Каналы появились в Unix в 1972 году, намного позже того, как версия системы PDP-11 была введена в эксплуатацию, по предложению (или, возможно, по настоянию) Макилроя, давнего сторонника неиерархического потока управления, характерного для сопрограмм. Прорыв конвейера Unix заключался в том, что он построен из одних и тех же команд, постоянно используемых в симплексном режиме, что потребовало невероятного выхода за рамки привычного программирования своего времени.
![Кен Томпсон (сидит) печатает, а Деннис Ритчи наблюдает в 1972 году, вскоре после того, как они с коллегами из Bell Labs изобрели Unix. Кен Томпсон (сидит) печатает, а Деннис Ритчи наблюдает в 1972 году, вскоре после того, как они с коллегами из Bell Labs изобрели Unix.](https://habrastorage.org/getpro/habr/upload_files/5c5/1f2/281/5c51f2281a7509371fb268547f1a2db8.jpeg)
При этом, Unix осталась лишь исследовательским проектом Bell Labs, да ещё и не совсем официальным. Лишь в 1973 году авторы решили, что система готова, и представили её разработку и реализацию на симпозиуме Ассоциации вычислительной техники. Этот доклад был опубликован в 1974 году в Communications of the ACM. Его появление вызвало множество запросов на копии программного обеспечения. Кажется, успех! Греби деньги лопатой, но не всё так просто.
Дело в том, что разработка находилась под крылом AT&T. Корпорация являлась монополистом во всех вопросах, связанных с телекоммуникациями и телефонными сетями, особенно в рамках междугородней связи. Её положение было прямо подчёркнуто законодательством, и ей было запрещено продавать сторонние продукты. Unix продавать было попросту невозможно.
Поэтому было принято решение раздавать исходный код всем желающим по лицензии за совсем небольшую плату. При этом, оказывать полноценную поддержку было тоже нельзя. В течение многих лет исследователи Bell Labs с гордостью демонстрировали свою политику Unix на конференциях с помощью слайда, на котором было написано: «Никакой рекламы, никакой поддержки, никаких исправлений ошибок, оплата авансом».
Уникальная ситуация законодательного плана сформировала не менее уникальную ситуацию среди пользователей. Они были вынуждены объединяться между собой, создавая свободную сеть, которая занималась исправлением ошибок и написанием новых инструментов под запросы формирующегося свободного сообщества.
Выглядело это фантастически: люди отправляли магнитные ленты с новым ПО или исправлениями системы, сформировалась группа пользователей Usenix, которые были центром обмена. Эти группы были международными! В Австралии университет Нового Южного Уэльса и Сиднейский университет создали свою версию Australian Unix Share Accounting Method, более стабильную и более производительную. К середине 1970-х гг. движение приобрело размах, пользователи передавали свои улучшения в Bell Labs, для улучшения системы, но тут зашевелились юристы AT&T, который попытались вмешаться в процесс работы.
![Джон Лайонс Джон Лайонс](https://habrastorage.org/getpro/habr/upload_files/7a5/705/442/7a5705442516f958b06a547acd13e2e5.jpeg)
Учёный из университета Южного Уэльса Джон Лайонс в 1977 году опубликовал одну из самых известных книг Lions' Commentary on UNIX 6th Edition, with Source Code. Комментарии Лайонса к 6-й версии UNIX, с исходным кодом Она содержала аннотированный список центрального исходного кода для Unix. Через два года юристы по какой-то не совсем понятной причине решили разобраться с данной книгой и запретить её публикацию. Что же могло пойти не так?
Полностью свободное сообщество Unix со всем своим максимализмом отказалось учитывать решение юристов и книга пошла в самиздат. Подобную популярность и нарочно было не вызвать, очень плохие фотокопии книги были даже у создателей Unix. Забавно, но для создателей «класть» на своих юристов тоже стало совершенно обычным явлением. В промежутке между 1975 и 1979 годами были собраны ключевые проблемы, которые требовали первоочередных изменений. Юристы посчитали, что это будет поддержка продукта (которую осуществлять нельзя), и в итоге совершенно неожиданно (!) формальному руководителю сообщества Usenix абсолютно анонимно попала в руки магнитная лента с исправлением всех актуальных проблем версии. Причём место, где он «нашёл» ленту удивительно близко располагалось к офису Bell Labs, которая совсем не занимались поддержкой своего продукта.
К концу 1970-х гг. Unix продолжала оставаться полуофициальной системой, только уже представленной во всей компьютерной индустрии, от лабораторий до айти-компаний. После 1990-х Unix начала сдавать свои позиции, потеряв эффективность в условиях существенного роста требований к ОС. Далее был целый ряд судебных разборок между гигантами рынка, которые приостановили развитие свободного ПО. Удивительно, что эти разборки происходили над Unix, изначально создаваемой и поддерживаемой фактически вопреки воле власть имущих, бескорыстно или, как минимум, без цели озолотиться.
❯ Язык программирования С
![Та самая «Белая книга» Та самая «Белая книга»](https://habrastorage.org/getpro/habr/upload_files/8e1/63e/bf3/8e163ebf39fa4b27ee4ff0afdbbbe5a5.jpeg)
Мы много говорили про Unix, но у Денниса Ритчи было две любимых игрушки: Unix и «С». Их развитие было переплетено, но мы решили их разделить. Поэтому снова отправляем вас 1972 год, когда, со слов Ритчи, ковался «С», ведь язык появился в 1969–1973 годах, параллельно с ранним развитием операционной системы Unix; наиболее творческий период пришёлся на 1972 год. Второй всплеск развития языка был в период с 1977 по 1979 годы, когда на практике была продемонстрирована переносимость системы Unix и вышла книга «The C Programming Language», она же «Белая книга» или «K&R» (Керниган и Риччи). Чуть позже язык был официально стандартизирован комитетом ANSI X3J11, после чего язык стал одним из самых распространённых и «оторвался» от системы Unix.
Через многие годы Деннис Ритчи пошутит в своём интервью, отвечая на вопрос «кого он больше любит, маму или папу, Unix или С?»: «Конечно С, ведь он был более прибыльным творением. Книга «The C Programming Language» (на 2011 год) все ещё приносит гонорары. Unix – творение очень многих людей, а С – куда более «моё» детище».
Изначально в 1986 году Uniх, как вам известно, писался не на самом PDP-7. Вместо этого использовался набор макросов для ассемблера GEMAP на машине GE-635. Постпроцессор генерировал бумажную ленту, читаемую PDP-7. Эти ленты переносились с машины GE на PDP-7 для тестирования, пока не были завершены примитивное ядро Unix, редактор, ассемблер, простая оболочка (командный интерпретатор) и несколько утилит (вроде команд Unix rm, cat, cp).
Ассемблер PDP-7 Томпсона превзошёл даже DEC по простоте; он оценивал выражения и выдавал соответствующие биты. Не было ни библиотек, ни загрузчика, ни редактора связей: весь исходный код программы представлялся ассемблеру, а выходной файл – с фиксированным именем, – который появлялся, был непосредственно исполняемым.
Вскоре после того, как Unix впервые запустился на PDP-7, в 1969 году Макилрой создал первый высокоуровневый язык новой системы: реализацию TMG МакКлура. TMG – это язык для написания компиляторов (в более общем смысле, TransMoGrifiers) в стиле сверху вниз, рекурсивного спуска, который сочетает в себе контекстно-свободную синтаксическую нотацию с процедурными элементами.
![Томпсон и Ритчи Томпсон и Ритчи](https://habrastorage.org/getpro/habr/upload_files/76d/968/734/76d968734b8a3ce97ead33eddaf37d5e.jpeg)
Испытанный подвигом Макилроя в воспроизведении TMG, Томпсон решил, что Unix нуждается в языке системного программирования, и создал свой собственный язык, который назвал B. B можно представить как C без типов; точнее, это BCPL, сжатый в 8 Кбайт памяти и пропущенный через мозг Томпсона, по словам самого Денниса Ритчи.
В системе PDP-7 Unix только несколько вещей были написаны на B, кроме самого B, потому что машина была слишком маленькой и слишком медленной, чтобы делать что-то большее, чем эксперимент, переписывание операционной системы и утилит полностью на B было слишком дорогим шагом. Томпсон и Ритчи раздумывали об использовании Fortran, PL/I или Algol 68, но отказались от этого по двум причинам. Первая – им не хватало ресурсов. Вторая – было веселее делать всё самостоятельно:
«К 1971 году наш миниатюрный компьютерный центр начал обзаводиться пользователями. Мы все хотели, чтобы создавать интересное программное обеспечение было проще. Использование ассемблера было настолько унылым, что B, несмотря на его проблемы с производительностью, был дополнен небольшой библиотекой полезных сервисных процедур и использовался для все большего количества новых программ».
В том же году Ритчи начал расширять язык B, добавив символьный тип, а также переписал его компилятор для генерации машинных инструкций PDP-11 вместо потокового кода. Так начался переход от B к С, который пока выглядел лишь как слегка расширенный язык B, получивший название NB, от «new B». NB существовал так недолго, что не было написано его полного описания.
Решение составило решающий скачок в эволюционной цепочке между бестиповым BCPL и типизированным C. Оно устранило материализацию указателя в хранилище и вместо этого вызвало создание указателя, когда имя массива упоминается в выражении. Правило, которое сохранилось в сегодняшнем C, заключается в том, что значения типа массива преобразуются, когда они появляются в выражениях, в указатели на первый из объектов, составляющих массив. Что ещё важнее, новый язык сохранил связное и работоспособное (хотя и необычное) объяснение семантики массивов, одновременно открывая путь к более полной структуре типов. Второе нововведение, которое наиболее четко отличает C от его предшественников, – это более полная структура типов и особенно её выражение в синтаксисе объявлений.
Схема композиции типов, принятая в C, во многом обязана Algol 68, хотя, возможно, она не появилась в форме, которую одобрили бы приверженцы Algol. Центральным понятием, которое Деннис Ритчи позаимствовал из Algol, была структура типов, основанная на атомарных типах (включая структуры), составленных в массивы, указатели (ссылки) и функции (процедуры).
После создания системы типов, соответствующего синтаксиса и компилятора для нового языка Деннис решил, что появившийся язык заслуживает нового имени, он решил следовать однобуквенному стилю и назвал его C. Далее был целый ряд изменений 1973 года, но самым важным было введение препроцессора, отчасти по настоянию Алана Снайдера и в знак признания полезности механизмов включения файлов, доступных в BCPL и PL/I. Его первоначальная версия была чрезвычайно простой и предоставляла только включенные файлы и простые замены строк: #include и #define макросов без параметров.
![Брайан Керниган выступает на церемонии памяти Денниса Ритчи в Bells Labs. Брайан Керниган выступает на церемонии памяти Денниса Ритчи в Bells Labs.](https://habrastorage.org/getpro/habr/upload_files/2d7/ef5/77e/2d7ef577e22d06e8286fa6dacf586e86.jpeg)
К началу 1973 года основы C были завершены. Язык и компилятор были достаточно сильны, чтобы позволить Ритчи и Томпсону переписать ядро Unix для PDP-11 на C летом того же года. В 1978 году Брайан Керниган и Деннис Ритчи опубликовали « Язык программирования C». При написании книги соблюдалось чёткое разделение труда: Керниган написал почти весь пояснительный материал, а Ритчи приложение, содержащее справочное руководство и главу об интерфейсе с системой Unix.
В 1973–1980 годах язык немного разросся: структура типов приобрела типы unsigned, long, union и enumeration, а структуры стали почти первоклассными объектами (не хватало только нотации для литералов). Написание ядра Unix на языке C дало авторам достаточно уверенности в полезности и эффективности языка, после чего было принято решение перекодировать утилиты и инструменты системы, а затем перенести самые интересные из них на другие платформы.
Именно переход на другие платформы станет одной из наиболее важных степеней в жизни и Unix, и языка С. В 1978 году авторы начали переносить систему Unix на компьютер Interdata 8/32. Перенос завершился успехом и этот успех оказался заразительным. И его повторили Том Лондон и Джон Райзер, перенеся Unix на DEC VAX 11/780, этот «зверь» был заметно популярнее и стал шире использоваться, вместе с ним, естественно, шире использоваться стал и сам С. Далее были System III и System V, серия релизов BSD Калифорнийского университета в Беркли.
После этого началась эпоха использования С в проектах с государственным и коммерческим регулированием, что потребовало получения официального стандарта. Макилрой инициировал этот процесс, и сертификация закончилась к 1989 году. X3J11 также ввел множество небольших дополнений и корректировок, например, квалификаторы типов const и volatile, а также немного иные правила продвижения типов. Тем не менее, процесс стандартизации не изменил характер языка. Таким образом, ядро языка C почти не пострадало от процесса стандартизации, и стандарт появился скорее как лучшая, тщательная кодификация, чем как новое изобретение.
Язык С стал куда успешнее, чем могли ожидать его создатели. Несомненно, успех самого Unix был одним из самых важных факторов. Он сделал язык доступным для сотен тысяч людей. И наоборот, конечно, использование Unix языка C и его последующая переносимость на широкий спектр машин были важны для успеха системы.
C стал простым и небольшим языком, переводимым с помощью простых и небольших компиляторов. В то же время язык достаточно абстрагирован от деталей машины, что позволяет добиться переносимости программ. Не менее важно, что C и его центральная библиотечная поддержка всегда оставались в контакте с реальной средой. Он не был разработан изолированно, чтобы доказать точку зрения или служить примером, а как инструмент для написания программ, которые делали полезные вещи; он всегда предназначался для взаимодействия с более крупной операционной системой и рассматривался как инструмент для создания более крупных инструментов. Экономный, прагматичный подход повлиял на то, что вошло в C: он охватывает основные потребности многих программистов.
Наконец, несмотря на изменения, которые он претерпел с момента своего первого опубликованного описания, которое, по общему признанию, было неформальным и неполным, фактический язык C, как его видят миллионы пользователей, использующих множество различных компиляторов, остался на удивление стабильным и унифицированным.
❯ Признание, заслуги, память
Ритчи и Томпсон получили огромное мировое признание не только среди специалистов, но и в общественной среде. Даже просто перечислять их совместные премии сложно.
![Ритчи и Томпсон получают Национальную медаль США в 1998 году от Билла Клинтона. Ритчи и Томпсон получают Национальную медаль США в 1998 году от Билла Клинтона.](https://habrastorage.org/getpro/habr/upload_files/1da/bc3/3fb/1dabc33fb9c492944790832646c59e84.jpeg)
Есть смысл назвать лишь самые основные. 1982 год, Ритчи и Томсон получили Премию Эмануэля Пиора за выдающийся вклад в развитие информатики и систем обработки информации. Через год –премия Тьюринга за их разработку общей теории операционных систем и в частности за создание Unix. 1989 год, опять совместная премия C&C Prize, награда вручается NEC «за выдающиеся достижения в исследовании, разработке или пионерской работе в областях полупроводников, компьютеров, телекоммуникаций и связанных с ними технологий». Ещё через год, опять совместно с Томпсоном, Ритчи получает медаль Ричарда Хэмминга «за создание операционной системы Unix и языка программирования C». Спустя девять лет, 27 апреля 1999 года, Ритчи и Кен Томпсон вместе получили Национальную медаль США за достижения в области технологий и инноваций 1998 года от президента Билла Клинтона за изобретение операционной системы UNIX и языка программирования C, которые привели к огромным продвижениям в компьютерных аппаратных, программных и сетевых системах и стимулировали рост промышленности в целом, закрепив таким образом лидерство Америки в информационном веке.
В 2003 году опять совместная награда – Премия Гарольда Пендера, высшая награда факультета инженерного дела и прикладной науки Пенсильванского университета. Вручается выдающемуся инженеру за значительный вклад в образ жизни общества. Не могу не перечислить некоторых «коллег» по премии Пендера: Роберт Кан, Винтон Серф, Джордж Данциг, Дэн Скотт, Герберт Саймон, Морис Уилкис, Клод Шеннон, Джон Мокли, Джордж Эккерт… Хотелось бы перечислить всех, но это не имеет смысла. Ритчи и Томпсон получили не просто «признание», их признание в профессиональном мире было настолько существенным, насколько это может быть для «технаря», когда тебя ставят в один ряд с основоположниками современного цифрового мира, это дорогого стоит.
Даже последнюю свою награду Ритчи получил вместе со своим другому Томпсоном. Это была Премия Японии, вручаемая «за выдающиеся новые достижения в науке и технологии, расширившие кругозор знаний и послужившие делу мира и процветания человечества», которую Ритчи получил в 2011 году, уже незадолго до своей смерти. Смерть Ритчи «совпала» со смертью Стива Джобса, из-за чего в публикациях в СМИ не могут перестать сравнивать этих людей, но в этом сравнении нет практически никакого смысла.
Ритчи не был «забытым» или «неизвестным», Ритчи был признан, уважаем и любим, всю жизнь посвятив своему любимому делу, не отказываясь от него до самого конца. 12 октября 2011 года он был найден мёртвым в своём доме, при этом точные причины его смерти так и не были названы. После его смерти осталось его научное наследие и память миллионов программистов, в том числе и тех, кто работал вместе с Ритчи и хорошо помнил этого бунтующего и невероятного талантливого мужчину, достигшего пика информационного Олимпа.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
![Перейти ↩ Перейти ↩](https://habrastorage.org/r/w1560/getpro/habr/upload_files/5fc/4de/cda/5fc4decdad5e03afac9916f691a1aae1.png)