- PVSM.RU - https://www.pvsm.ru -

Деннис Ритчи. Человек, который подарил нам циклы и рекурсию

Деннис Ритчи. Человек, который подарил нам циклы и рекурсию - 1

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

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

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

Начало пути

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

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

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

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

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

Циклы в С

Циклы в С

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

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

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

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

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

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

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

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

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

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

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

Деннис Ритчи. Человек, который подарил нам циклы и рекурсию - 6
  • Язык программирования B [12] (1969 г) создан Кеном Томпсоном (с некоторым участием Ритчи) для Multics [13], предшественника Unix.

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

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

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

    Unix 7 на PDP-11, директория пользователя /dmr

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

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

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

    Две строки кода с автографом Брайна Кернигана на бумаге от принтера продали с аукциона Algorithm в Нью-Йорке как произведение искусства

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

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

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

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

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

Деннис Ритчи. Человек, который подарил нам циклы и рекурсию - 9

Популярность 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 гарантированно справятся с этой задачей.


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

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

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

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

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

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

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

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

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

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

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

Деннис Ритчи. Человек, который подарил нам циклы и рекурсию - 14

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

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

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

Автор: alizar

Источник [29]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/unix-2/440535

Ссылки в тексте:

[1] Деннис Ритчи: https://en.wikipedia.org/wiki/Dennis_Ritchie

[2] престижном пригороде Нью-Йорка: https://en.wikipedia.org/wiki/Bronxville,%5C_New%5C_York

[3] теории релейных схем: https://en.wikipedia.org/wiki/Switching_circuit_theory

[4] Саммит: https://en.wikipedia.org/wiki/Summit,_New_Jersey

[5] фото конца 60-х: https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/

[6] «Вычислительная сложность и структура программ»: https://www.computerhistory.org/collections/catalog/102784979/

[7] программные циклы: https://www.geeksforgeeks.org/c/c-loops/

[8] примитивно-рекурсивных функций Гёделя: https://en.wikipedia.org/wiki/Primitive_recursive_function

[9] иерархии Гжегорчика: https://en.wikipedia.org/wiki/Grzegorczyk_hierarchy

[10] опубликована на конференции ACM'67: https://dl.acm.org/doi/10.1145/800196.806014

[11] предметом научных исследований: https://www.cs.princeton.edu/~bwk/dmr/doceng22.pdf

[12] Язык программирования B: https://en.wikipedia.org/wiki/B_(programming_language)

[13] Multics: https://en.wikipedia.org/wiki/Multics

[14] Язык программирования С: https://www.nokia.com/bell-labs/about/dennis-m-ritchie/chist.html

[15] ОС Unix: https://www.opengroup.org/unix-systems

[16] Plan 9: https://p9f.org/

[17] ОС Inferno: https://en.wikipedia.org/wiki/Inferno_(operating_system)

[18] Limbo: https://en.wikipedia.org/wiki/Limbo_(programming_language)

[19] Взлом шифровальной машины M-209: https://:

[20] M-209: https://www.cryptomuseum.com/crypto/hagelin/m209/

[21] «Язык программирования C»: https://s3-us-west-2.amazonaws.com/belllabs-microsite-dritchie/cbook/index.html

[22] продали : https://www.artsy.net/artwork/brian-kernighan-hello-world

[23] текстовый редактор QED: https://scholar.google.com/citations?view_op=view_citation&hl=en&user=w1WB5d0AAAAJ&cstart=20&pagesize=80&citation_for_view=w1WB5d0AAAAJ:hC7cP41nSMkC

[24] М4: https://scholar.google.com/citations?view_op=view_citation&hl=en&user=w1WB5d0AAAAJ&citation_for_view=w1WB5d0AAAAJ:_FxGoFyzp5QC

[25] Styx: https://scholar.google.com/citations?view_op=view_citation&hl=en&user=w1WB5d0AAAAJ&citation_for_view=w1WB5d0AAAAJ:roLk4NBRz8UC

[26] рассказывали о Никлаусе Вирте: https://habr.com/ru/companies/ruvds/articles/968706/

[27] Джефф Дин и Санджай Гемават в Google: https://habr.com/ru/articles/432324/

[28] на одной неделе с Джобсом: https://www.digitaltrends.com/tablets/was-dennis-ritchie-more-important-than-steve-jobs/

[29] Источник: https://habr.com/ru/companies/ruvds/articles/980620/?utm_source=habrahabr&utm_medium=rss&utm_campaign=980620