Деннис Ритчи (1941–2011) — одно из фундаментальных имён современного программирования. Если подумать, человеку пора ставить памятники в технопарках и кампусах IT-компаний. Потому что без него не существовало бы IT-индустрии в нынешнем виде.

Он сыграл ключевую роль в создании языка программирования С и операционной системы Unix. До появления С люди вообще программировали в машинных кодах (по крайней мере, системное программирование выглядело именно так). Такова могла быть современная реальность IT-индустрии.

Роль личности в истории зачастую велика. Если вычеркнуть из истории одного человека, то ключевые события не произойдут. Или случатся иначе. Трудно представить параллельный мир, в котором события пошли по такому альтернативному пути, никогда не изобрели Unix, Linux и C. Уж слишком всё там странное... Хотя жителям того мира странной покажется уже наша реальность.

Начало пути

Деннис Макалистер Ритчи (/dmr) родился в 1941 году в престижном пригороде Нью-Йорка, в семье известного учёного из Bell Labs Алистера Ритчи, соавтора учебника по теории релейных схем. Вскоре семья переехала в Саммит, Нью-Джерси.

Деннис Ритчи с отцом на своём мотоцикле BSA 650, фото конца 60-х
Деннис Ритчи с отцом на своём мотоцикле BSA 650, фото конца 60-х

В те времена Bell Labs была мировым центром исследований в физике, телекоммуникациях и др. За годы своей деятельности компания разработала множество революционных технологий, включая транзистор, лазер, кварцевые часы и др. Так что Деннис в каком-то смысле пошёл по стопам отца, продолжив славные традиции знаменитой компании. ОС Unix и язык C пополнили череду открытий в Bell Labs.

Ритчи получил степень по физике и прикладной математике в Гарварде, а к 1968 году защитил докторскую диссертацию по теме «Вычислительная сложность и структура программ». В ней он описал одно из своих изобретений — программные циклы, как инструмент для вычисления примитивно-рекурсивных функций Гёделя.

Циклы в С
Циклы в С

Ритчи показал, что степень вложенности циклов является мерой их вычислительной сложности, а также показателем того, сколько времени требуется для их вычисления. Далее он показал, что оценка по глубине циклов в точности эквивалентна иерархии Гжегорчика. Скорость роста примитивно-рекурсивных функций действительно связана с их вычислительной сложностью, они идентичны. Научная статья на эту тему была опубликована на конференции ACM'67.

Правда, Ритчи официально не получил степень PhD, потому что не завершил обязательную процедуру передачи рукописи в библиотеку, при этом аспирант обязан оплатить переплёт за свой счёт (сейчас эти правила упразднили). Библиотека выдаёт справку, которая обменивается на диплом PhD. Как в шутку говорили друзья, бывают доктора наук без диссертации, а Деннис был доктором наук «без переплёта».

Страница из докторской диссертации Ритчи, которая считалась потерянной до 2020 года, а после находки стала предметом научных исследований. Специалисты пытаются понять, как она набрана и напечатана с множеством математических символов и многоуровневой типографикой за 16 лет до изобретения PostScript
Страница из докторской диссертации Ритчи, которая считалась потерянной до 2020 года, а после находки стала предметом научных исследований. Специалисты пытаются понять, как она набрана и напечатана с множеством математических символов и многоуровневой типографикой за 16 лет до изобретения PostScript

В те времена он уже подрабатывал исследователем в Bell Labs, занимался крайне увлекательным делом и «не слишком интересовался бытовыми мелочами» (по словам друзей). Этим можно объяснить его безразличие к бюрократическим формальностям Гарварда.

В 1969 году Ритчи официально перешёл на работу в Bell Labs, где продолжил разработку C.

Денниса Ритчи (справа) встречают два сотрудника Bell Labs: его отец Алистер Ритчи (слева) и пионер электронной коммутации Уильям Кейстер, фото примерно 1969 года
Денниса Ритчи (справа) встречают два сотрудника Bell Labs: его отец Алистер Ритчи (слева) и пионер электронной коммутации Уильям Кейстер, фото примерно 1969 года

В середине 90-х Деннис Ритчи стал главой отдела исследований ПО Lucent Technologies (его туда перевели в процессе реструктуризации AT&T по судебному решению), прежде чем уйти на пенсию в 2007 году.

Проекты Ритчи

Большинство проектов — и все самые известные, включая C, Unix и «библию по С» — Деннис Ритчи создал совместно с бессменным другом и соратником Кеном Томпсоном.

  • Язык программирования B (1969 г) создан Кеном Томпсоном (с некоторым участием Ритчи) для Multics, предшественника Unix.

  • Язык программирования С (1969–1973 гг). Как несложно заметить, названия Multics и Unix связаны каламбуром, а названия языков продолжают алфавитную последовательность. Здесь Ритчи считается основным разработчиком, а Томпсон помогал. Деннис сконцентрировался на разработке С, а Кен переписывал Unix на новом языке. Работа шла параллельно.

  • ОС Unix (1969–1973 гг), как и Multics, разработана для первых мини-компьютеров. В начале 70-х годов «мини-компьютер» представлял собой ряд шкафов, занимавших комнату. Производительность этих систем была совершенно ничтожна по сравнению с современными. Ограничения памяти и хранилища означали, что для многозадачной ОС требовался очень эффективный язык.

    Первые версии Unix были в основном написаны на ассемблере, но к 1973 году Unix почти полностью переписали на C.

    Unix 7 на PDP-11, директория пользователя /dmr
    Unix 7 на PDP-11, директория пользователя /dmr
  • Ритчи принимал участие в разработке Plan 9, концептуальной ОС с распределёнными ресурсами, которая намного опередила своё время, но так и не была официально выпущена, так же как и некоторые другие концептуальные разработки Bell Labs, в которых принимал участие Ритчи, включая ОС Inferno и язык программирования Limbo для распределённых систем.

  • Взлом шифровальной машины M-209 (1978 г.), совместно с Джеймсом Ридом и Робертом Моррисом. По просьбе АНБ авторы не выложили разработку в открытый доступ, поскольку M-209 ещё использовалась некоторыми иностранными государствами.

  • Книга «Язык программирования C» (1978 г.), широко известная как «K&R», в соавторстве с Брайаном Керниганом. По крайней мере для двух поколений программистов K&R стала введением не только в C, но и в компиляторы и общее структурное программирование. Несмотря на небольшой объём, книга установила стандарт качества как по содержанию, так и по оформлению. Например, отсюда повелась традиция начинать обучение с короткой программы «Hello world».

    Две строки кода с автографом Брайна Кернигана на бумаге от принтера продали с аукциона Algorithm в Нью-Йорке как произведение искусства
    Две строки кода с автографом Брайна Кернигана на бумаге от принтера продали с аукциона Algorithm в Нью-Йорке как произведение искусства
  • 36 научных статей по информатике, там можно почитать про другие разработки Ритчи с коллегами, такие как текстовый редактор QED (1972), макропроцессор М4, архитектуру Styx для распределённых систем (1999), которая реализована в Plan 9.

Как С повлиял на компьютерную технику

В начале 70-х компьютеры были медленные и громоздкие, а программирование ограничивалось машинными инструкциями. Написание кода означало работу с ассемблером. Код было утомительно вводить и тяжело поддерживать.

Операционная система Unix разрабатывалась для переноса на различные аппаратные платформы, поэтому язык C также создавался с учётом аппаратной переносимости.

C был больше, чем просто новым языком. Он сильно повлиял на развитие компьютерных систем. Новый уровень портативности полностью изменил ситуацию. Теперь Unix стала универсальной системой, с открытым кодом, форками, возможностью легко написать новую ОС для новой архитектуры и т. д. Это была настоящая революция. На диаграмме внизу можно оценить плодовитое наследие Unix:

Популярность C была тесно связана с популярностью Unix, а также его многочисленных ответвлений и потомков.

Новый язык программирования позволил писать структурированные, процедурные программы, используя язык высокого уровня, не жертвуя при этом значительной частью эффективности ассемблера. Он обеспечивает низкоуровневый доступ к памяти, практически не требует поддержки ОС и компилируется так, что очень хорошо кладётся на машинные инструкции.

Вместе с Unix распространялся и C. Разработчики поняли, что это великолепный язык системного программирования, который подходят для ОС, СУБД, компиляторов и др. Он нашёл идеальный баланс между низкоуровневым управлением и высокоуровневой структурой. Этот баланс сделал его основным языком для серьёзной разработки.

Влияние на программирование

C стал основой для огромной части софта. После Unix он быстро завоевал популярность и в академических кругах, и в коммерческой индустрии. Университеты начали преподавать его как основной язык для изучения программирования. Компании применяли для создания ОС, встраиваемых систем, сетевых инструментов и др.

C не просто приобрёл популярность. Он сформировал шаблоны того, как разработаны современные языки, такие как C++, Java, C#, Go и Python, все они позаимствовали у него синтаксис и основные идеи. C задал стандарт структуры, стиля и логики в программировании. Разработчикам, знающим C, часто легче изучать и работать с другими языками.

Деннис Ритчи (по центру, в очках и полосатом свитере), на конференции компьютерщиков USENIX 1984
Деннис Ритчи (по центру, в очках и полосатом свитере), на конференции компьютерщиков USENIX 1984

Переносимость оказалась суперспособностью языка C: в конечном итоге хорошо написанная программа на стандартном C могла компилироваться на огромном количестве аппаратных платформ практически без изменений — на самом деле, это верно и сегодня. В результате компиляторы C доступны практически для любой аппаратной платформы, а изучение C по-прежнему является отличным способом начать программировать для огромного количества платформ. C остаётся одним из самых широко используемых языков программирования на планете.

Он до сих пор продолжает играть важную роль в некоторых областях. На языке C написано ядро Linux и значительные части Windows. Во встраиваемых системах его используют для программирования микроконтроллеров и аппаратных устройств, поскольку он обеспечивает скорость и низкое потребление памяти.

В остальной индустрии тоже есть место для С. Например, на нём написаны интерпретаторы для Python, Ruby и PHP, хотя сами разработчики пишут код на языках высокого уровня. Игровые движки типа Unreal Engine сочетают C и C++ для управления графикой и ресурсоёмкими операциями. Также на С пишут базы данных, такие как MySQL и PostgreSQL, чтобы обеспечить быструю и эффективную обработку данных. И это несмотря на то, что С считается небезопасным для памяти, но другой альтернативы нет.

Возможно, это не самый подходящий язык для веб- и мобильной разработки, но он по-прежнему лежит в основе современных программных систем. Разработчики, изучающие C, глубже понимают, как работают компьютеры, и эти знания остаются полезными во всех областях.

Нужно заметить, что C и Unix разработаны для программистов и инженеров, для краткости и эффективности кодирования. Их нельзя назвать дружелюбными или доступными для начинающих. Если вы хотите повергнуть нетехнических пользователей компьютеров в робкое молчание, командная строка Unix или страница кода на C гарантированно справятся с этой задачей.


В одной из прошлых статей серии «Великие программисты» мы рассказывали о Никлаусе Вирте. Его можно сравнить со Стивом Возняком (Apple) в некотором отношении. Оба создали похожие инновационные ПК с графическим дисплеем, мышью и женскими именами — Лиза (Apple) и Лилит (Вирт), первый для массовой публики, второй для обучения студентов.

Никлаус Вирт с графической станцией Lilith (1977−1984 гг.)
Никлаус Вирт с графической станцией Lilith (1977–1984 гг.)

Но каким бы авторитетом ни был Вирт (автор языка Pascal), Джобс или Возняк для компьютерной индустрии, Деннис Ритчи — на порядок более масштабная фигура. Это один из отцов-основателей современного программирования и вообще компьютерной отрасли как таковой, просто легенда. Код Unix сохранился в Linux, он лежит в основе Android, iOS и MacOS от Apple. Вся современная техника — это наследие Ритчи.

Может, только Кен Томпсон равен Деннису Ритчи по масштабу, ведь он был соратником в большинстве проектов.

 Ритчи (стоит) и Томпсон программируют на PDP-11, около 1972 г
Ритчи (стоит) и Томпсон программируют на PDP-11, около 1972 г

Если парное программирование даёт синергетический эффект и оно многократно эффективнее, то работать в одиночку мало смысла. В результате программисты постоянно программируют вместе, как Джефф Дин и Санджай Гемават в Google.

Ритчи сохранил живость ума до преклонных лет
Ритчи сохранил живость ума до преклонных лет

Факт в том, что Unix и C породили невероятно широкую и разнообразную технологическую экосистему. Микроконтроллеры, GPS, спутники, автомобильные системы, светофоры, интернет-маршрутизаторы, синтезаторы, цифровые камеры, телевизоры, приставки, веб-серверы, компьютеры, смартфоны и планшеты — и компоненты внутри них, всё это производные от работ Ритчи.

Деннис Ритчи ушёл из жизни 12 октября 2011 года в возрасте 70-ти лет на одной неделе с Джобсом. Он прожил долгую, плодотворную жизнь и оставил колоссальное наследие. Каждый из современных разработчиков может позавидовать ему в этом смысле. Впрочем, все мы ещё живы — и теоретически способны совершить нечто даже более великое (тут почему-то вспоминается мем про Гагарина и потомков...).

Несмотря на своё гигантское наследие, Ритчи никогда не стремился к публичности, власти или богатству. По общему мнению, он был тихим, скромным человеком с сильной трудовой этикой и «сухим чувством юмора».

© 2025 ООО «МТ ФИНАНС»

Комментарии (18)


  1. SysManOne
    30.12.2025 14:11

    Дедушка умер, дело живёт!

    Лучше бы было наоборот!

    КВН


  1. defecator
    30.12.2025 14:11

    Я думаю, что дедушка Ритчи был бы в ужасе от того, во что превратили язык C


    1. ahabreader
      30.12.2025 14:11

      Например? Что интересного он пропустил?

      Ритчи-88 говорил, что если что - люди как-нибудь выживут. Это перекликается с определением некоторых UB флагами компилятора (strict aliasing, знаковое переполнение).

      people will somehow survive. C has, after all,survived the vararg and the extern problems.

      Ритчи-93 сказал, что стандарт вышел неплохой.

      Ритчи-00 считал, что вклад нового стандарта уступает прежнему, но тоже ничего. Слишком много фич.

      I certainly don't desire additional ones [features], and the most obvious reaction is that I wish they [committee] had resisted more firmly.

      Ритчи-00 овладевала индифферентность - он называл "вероятно полезной" вещь, которую Ритчи-88 запретил даже переизобретать (noalias из черновика C89 => restrict из C99).


    1. CrashLogger
      30.12.2025 14:11

      А во что его превратили ? Булевский тип добавили, nullptr, инициализацию массивов нулями, юникод строки... вроде ничего больше и не поменялось.


      1. vanxant
        30.12.2025 14:11

        Во времена K&R аргументы функций описывались между круглыми и фигурными скобками. Идея при должном развитии на миллион, но не взлетело.


        1. ahabreader
          30.12.2025 14:11

          Идея при должном развитии на миллион, но не взлетело.

          Скорее на миллион багов. Зачем нужны сигнатуры функции, которые теряют информацию об аргументах? Низачем, но

          • B был маленький и нетипизированный

          • запихивать типы где-то сбоку было принято в Алголе 60.

          ANSI C догонял Алгол 68, переняв синтаксис функций из C++ ("using syntax borrowed from C++" - Ритчи-93).

          Перед телом функции можно поместить второстепенные аннотации (например). Можно целиком вынести аргументы в тело функции, если на них много атрибутов накладывается (param (...) в теле функции в PowerShell).


          1. victor_1212
            30.12.2025 14:11

            ANSI C догонял Алгол 68 ...

            это слегка преувеличено, обычно считается С89/90 просто развитие K&R на основе накопленного опыта, тем более, что K&R оба принимали участие в работе над стандартом, но конечно Алгол 68 повлиял на многое что было после него


            1. ahabreader
              30.12.2025 14:11

              Догонял в единственном обсуждаемом аспекте, Алгол же не сверхъязык.

              Алгол 60 / 68:

              boolean procedure isperfect(n);
                value n; integer n;
              ...
              PROC isperfect = (INT n) BOOL: ...

              Старый синтаксис в Си не выделялся относительно Алгола 60. Ритчи в той статье в 1993 клонит к тому, что недочёт.

              Комитет X3J11 внёс лишь одно действительно важное изменение в сам язык: в сигнатуру типа функции были включены типы формальных аргументов с использованием синтаксиса, заимствованного из C++.

              ... это создало заметно лучший язык


  1. APh
    30.12.2025 14:11

    Ошибок в тексте не одна. Плюс много притянуто за уши. Клюква...

    Код патентованного Unix реально в свободном ядре Linux есть? Ну, тогда в суд давно пора некоторым. ))

    Си с GPS'ом как-то породнили. Типа, если расчёты координат вести на Фортране, то ничего бы не получилось? ))

    А, так-то Си — образец! Мой любимый язык. И, во что его превратили, весьма неплохо. В 70-е он был сыроват немного.


  1. vvzvlad
    30.12.2025 14:11

    Если парное программирование даёт синергетический эффект и оно многократно эффективнее, то работать в одиночку мало смысла. В результате программисты постоянно программируют вместе, как Джефф Дин и Санджай Гемават в Google.

    “Один миллионер не ел огурцы и вот где он сейчас. Есть огурцы мало смысла."


  1. S_gray
    30.12.2025 14:11

    До появления С люди вообще программировали в машинных кодах (по крайней мере, системное программирование выглядело именно так)

    То есть, те кто программировали до появления C не в машинных кодах или не занимались системным программированием - не люди... Смело... Свежо...


    1. vanxant
      30.12.2025 14:11

      Да и циклов, по "мысли" нейросети, ни в Фортране, ни в Алголе, ни в Паскале, ни в Бейсике (все перечисленные языки появились раньше С, некоторые на десятки лет раньше), видимо, не было. Дийкстра так вообще в шоке:)

      С рекурсией конечно тоже пальцем в небо, Джордж Чёрч и язык Лисп передают привет. Впрочем, как и Никлас Вирт с Паскалем. Идея использовать стек для хранения аргументов как бы активно использовалась, Ритчи придумал класть аргументы в обратном порядке.

      Это всё не умаляет заслуг Денниса Ритчи. Только вот на хабре можно было бы описать их нормально. Впрочем, это же старина Ализар:)


      1. victor_1212
        30.12.2025 14:11

        идеи использование стека это ранние 1950е,

        на хабре можно было бы ...

        уважаемый автор наработал на habr примерно 7.8К статей, что по объему приближается к БСЭ, таки хорошо что бумагу теперь мало используют, типа сколько деревьев пришлось бы спилить :)


    1. Yuuri
      30.12.2025 14:11

      А ещё Python позаимствовал синтаксис у С!


  1. Ileots
    30.12.2025 14:11

    Здравствуй племя, младое, незнакомое (с)


  1. Belarus
    30.12.2025 14:11

    Интересно, почему на картинке с цыклами у while лишняя скобка, а у do while пропущена точка с запятой?


  1. LanskoyGames
    30.12.2025 14:11

    • Взлом шифровальной машины M-209 (1978 г.), совместно с Джеймсом Ридом и Робертом Моррисом. По просьбе АНБ авторы не выложили разработку в открытый доступ, поскольку M-209 ещё использовалась некоторыми иностранными государствами.

    Ошибки в известных фактах заметить легче, а этот просто решил уточнить: https://en.wikipedia.org/wiki/M-209:

    Американсый исследовательДеннис Ричи описал сотрудничество 1970-х годов с Джеймсом Ридсом иРоберт Моррис на атаке только шифротекста на M-209, которая может разрешать сообщения не менее 2000–2500 букв.[3]Ричи рассказывает, что после обсуждений сАгентство национальной безопасности (АНБ), авторы решили не публиковать его, так как им сказали, что этот принцип применим к машинам, которые в то время все еще использовались иностранными правительствами.[3]

    Хотя мне интересно, как и из-за чего Ритчи не стал разглашать это


  1. ulovka22
    30.12.2025 14:11

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