
Деннис Ритчи (1941–2011) — одно из фундаментальных имён современного программирования. Если подумать, человеку пора ставить памятники в технопарках и кампусах IT-компаний. Потому что без него не существовало бы IT-индустрии в нынешнем виде.
Он сыграл ключевую роль в создании языка программирования С и операционной системы Unix. До появления С люди вообще программировали в машинных кодах (по крайней мере, системное программирование выглядело именно так). Такова могла быть современная реальность IT-индустрии.
Роль личности в истории зачастую велика. Если вычеркнуть из истории одного человека, то ключевые события не произойдут. Или случатся иначе. Трудно представить параллельный мир, в котором события пошли по такому альтернативному пути, никогда не изобрели Unix, Linux и C. Уж слишком всё там странное... Хотя жителям того мира странной покажется уже наша реальность.
Начало пути
Деннис Макалистер Ритчи (/dmr) родился в 1941 году в престижном пригороде Нью-Йорка, в семье известного учёного из Bell Labs Алистера Ритчи, соавтора учебника по теории релейных схем. Вскоре семья переехала в Саммит, Нью-Джерси.

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

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

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

В середине 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 Ритчи принимал участие в разработке Plan 9, концептуальной ОС с распределёнными ресурсами, которая намного опередила своё время, но так и не была официально выпущена, так же как и некоторые другие концептуальные разработки Bell Labs, в которых принимал участие Ритчи, включая ОС Inferno и язык программирования Limbo для распределённых систем.
Взлом шифровальной машины M-209 (1978 г.), совместно с Джеймсом Ридом и Робертом Моррисом. По просьбе АНБ авторы не выложили разработку в открытый доступ, поскольку M-209 ещё использовалась некоторыми иностранными государствами.
-
Книга «Язык программирования C» (1978 г.), широко известная как «K&R», в соавторстве с Брайаном Керниганом. По крайней мере для двух поколений программистов K&R стала введением не только в C, но и в компиляторы и общее структурное программирование. Несмотря на небольшой объём, книга установила стандарт качества как по содержанию, так и по оформлению. Например, отсюда повелась традиция начинать обучение с короткой программы «Hello world».

Две строки кода с автографом Брайна Кернигана на бумаге от принтера продали с аукциона 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, часто легче изучать и работать с другими языками.

Переносимость оказалась суперспособностью языка C: в конечном итоге хорошо написанная программа на стандартном C могла компилироваться на огромном количестве аппаратных платформ практически без изменений — на самом деле, это верно и сегодня. В результате компиляторы C доступны практически для любой аппаратной платформы, а изучение C по-прежнему является отличным способом начать программировать для огромного количества платформ. C остаётся одним из самых широко используемых языков программирования на планете.
Он до сих пор продолжает играть важную роль в некоторых областях. На языке C написано ядро Linux и значительные части Windows. Во встраиваемых системах его используют для программирования микроконтроллеров и аппаратных устройств, поскольку он обеспечивает скорость и низкое потребление памяти.
В остальной индустрии тоже есть место для С. Например, на нём написаны интерпретаторы для Python, Ruby и PHP, хотя сами разработчики пишут код на языках высокого уровня. Игровые движки типа Unreal Engine сочетают C и C++ для управления графикой и ресурсоёмкими операциями. Также на С пишут базы данных, такие как MySQL и PostgreSQL, чтобы обеспечить быструю и эффективную обработку данных. И это несмотря на то, что С считается небезопасным для памяти, но другой альтернативы нет.
Возможно, это не самый подходящий язык для веб- и мобильной разработки, но он по-прежнему лежит в основе современных программных систем. Разработчики, изучающие C, глубже понимают, как работают компьютеры, и эти знания остаются полезными во всех областях.
Нужно заметить, что C и Unix разработаны для программистов и инженеров, для краткости и эффективности кодирования. Их нельзя назвать дружелюбными или доступными для начинающих. Если вы хотите повергнуть нетехнических пользователей компьютеров в робкое молчание, командная строка Unix или страница кода на C гарантированно справятся с этой задачей.
В одной из прошлых статей серии «Великие программисты» мы рассказывали о Никлаусе Вирте. Его можно сравнить со Стивом Возняком (Apple) в некотором отношении. Оба создали похожие инновационные ПК с графическим дисплеем, мышью и женскими именами — Лиза (Apple) и Лилит (Вирт), первый для массовой публики, второй для обучения студентов.

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

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

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

Деннис Ритчи ушёл из жизни 12 октября 2011 года в возрасте 70-ти лет на одной неделе с Джобсом. Он прожил долгую, плодотворную жизнь и оставил колоссальное наследие. Каждый из современных разработчиков может позавидовать ему в этом смысле. Впрочем, все мы ещё живы — и теоретически способны совершить нечто даже более великое (тут почему-то вспоминается мем про Гагарина и потомков...).
Несмотря на своё гигантское наследие, Ритчи никогда не стремился к публичности, власти или богатству. По общему мнению, он был тихим, скромным человеком с сильной трудовой этикой и «сухим чувством юмора».
© 2025 ООО «МТ ФИНАНС»
Комментарии (18)

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

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).

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

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

ahabreader
30.12.2025 14:11Идея при должном развитии на миллион, но не взлетело.
Скорее на миллион багов. Зачем нужны сигнатуры функции, которые теряют информацию об аргументах? Низачем, но
B был маленький и нетипизированный
запихивать типы где-то сбоку было принято в Алголе 60.
ANSI C догонял Алгол 68, переняв синтаксис функций из C++ ("using syntax borrowed from C++" - Ритчи-93).
Перед телом функции можно поместить второстепенные аннотации (например). Можно целиком вынести аргументы в тело функции, если на них много атрибутов накладывается (
param (...)в теле функции в PowerShell).
victor_1212
30.12.2025 14:11ANSI C догонял Алгол 68 ...
это слегка преувеличено, обычно считается С89/90 просто развитие K&R на основе накопленного опыта, тем более, что K&R оба принимали участие в работе над стандартом, но конечно Алгол 68 повлиял на многое что было после него

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++.
... это создало заметно лучший язык

APh
30.12.2025 14:11Ошибок в тексте не одна. Плюс много притянуто за уши. Клюква...
Код патентованного Unix реально в свободном ядре Linux есть? Ну, тогда в суд давно пора некоторым. ))
Си с GPS'ом как-то породнили. Типа, если расчёты координат вести на Фортране, то ничего бы не получилось? ))
А, так-то Си — образец! Мой любимый язык. И, во что его превратили, весьма неплохо. В 70-е он был сыроват немного.

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

S_gray
30.12.2025 14:11До появления С люди вообще программировали в машинных кодах (по крайней мере, системное программирование выглядело именно так)
То есть, те кто программировали до появления C не в машинных кодах или не занимались системным программированием - не люди... Смело... Свежо...

vanxant
30.12.2025 14:11Да и циклов, по "мысли" нейросети, ни в Фортране, ни в Алголе, ни в Паскале, ни в Бейсике (все перечисленные языки появились раньше С, некоторые на десятки лет раньше), видимо, не было. Дийкстра так вообще в шоке:)
С рекурсией конечно тоже пальцем в небо, Джордж Чёрч и язык Лисп передают привет. Впрочем, как и Никлас Вирт с Паскалем. Идея использовать стек для хранения аргументов как бы активно использовалась, Ритчи придумал класть аргументы в обратном порядке.
Это всё не умаляет заслуг Денниса Ритчи. Только вот на хабре можно было бы описать их нормально. Впрочем, это же старина Ализар:)

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

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

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]
Хотя мне интересно, как и из-за чего Ритчи не стал разглашать это

ulovka22
30.12.2025 14:11Статья - эталонный пример, как легко ИИ позволяет компаниям засирать интернет выдуманными фактами ради своего "продвижения". Надеюсь, в ближайшем будущем за такое будут банить. RUVDS внёс в свой персональный черный список.
SysManOne
Дедушка умер, дело живёт!
Лучше бы было наоборот!
КВН