# История UNIX, языка C и магия Bell Labs в рассказе Брайана Кернигана

Источник: https://www.youtube.com/watch?v=O9upVbGSBFo
Канал: Lex Fridman
Опубликовано: 18.07.2020

---

Брайан Керниган — живая легенда компьютерных наук, чьё имя неразрывно связано с созданием операционной системы UNIX и языка программирования C. В этой беседе с Лексом Фридманом он погружается в историю «золотого века» Bell Labs, рассуждает об эволюции языков программирования и делится своим видением будущего, где ИИ и алгоритмы всё плотнее вплетаются в ткань человеческого бытия.

## 🕰️ От перфокарт к разделению времени: истоки UNIX
[[JUMP:04:20]]

История UNIX началась более 50 лет назад, но её корни уходят ещё глубже — в эпоху мейнфреймов 1950-х и начала 1960-х годов [05:31]. В то время программирование было медленным и итеративным процессом: программист набивал колоду перфокарт, отдавал её оператору и ждал часами, а иногда и днями, чтобы получить распечатку с ошибкой [05:45].

Ситуация начала меняться с появлением систем разделения времени (time-sharing). Керниган вспоминает:

*   **CTSS (Compatible Time-Sharing System):** Создана в MIT под руководством Фернандо Корбато. Керниган использовал её летом 1966 года [07:18].
*   **Ресурсы CTSS:** Система работала на модифицированном IBM 7094 с двумя банками памяти по 32 тысячи 36-битных слов (всего около 300 КБ), что по тем временам было огромным объёмом [07:32].
*   **Иллюзия владения:** Основная идея разделения времени заключалась в том, чтобы давать каждому пользователю крошечный квант времени процессора, создавая иллюзию, что вся машина принадлежит ему одному [06:51].

Затем последовал проект **Multics**, амбициозная попытка создать «информационную утилиту», подобную электрической сети [09:21]. Однако к 1969 году Bell Labs вышла из проекта, посчитав его слишком сложным и дорогим. Это оставило группу талантливых исследователей, включая Кена Томпсона и Денниса Ритчи, без комфортной среды для работы [14:54].

## 🐣 Рождение UNIX: трехнедельный подвиг Кена Томпсона
[[JUMP:14:54]]

Когда Bell Labs прекратила работу над Multics, Кен Томпсон начал искать альтернативы. Он нашёл малоиспользуемый мини-компьютер PDP-7 с 16 тысячами 16-битных слов памяти [15:57].

Легендарный момент создания UNIX произошёл, когда жена Томпсона уехала в Калифорнию на три недели с их годовалым сыном. За это время Кен в одиночку написал:

1.  Операционную систему (ядро).
2.  Файловую систему.
3.  Ассемблер для PDP-7.
4.  Текстовый редактор [17:47].

По словам Брайана Кернигана, Томпсон является «сингулярностью» среди программистов, обладая способностью видеть всю картину целиком и реализовывать её с невероятной скоростью [19:07]. Несмотря на то что первые версии были написаны на ассемблере, система заложила основы современной вычислительной архитектуры [18:14].

## 🧪 Культура Bell Labs: магия Мюррей-Хилл
[[JUMP:11:46]]

Bell Labs была уникальным научным хабом в Нью-Джерси. В здании Мюррей-Хилл работали тысячи специалистов, многие из которых имели докторские степени в физике, химии и математике [12:26].

Особенности среды, по воспоминаниям Кернигана:

*   **Открытость:** Двери офисов всегда были открыты, а коридоры способствовали случайным встречам и обмену идеями [25:11].
*   **Общая комната:** Исследователи UNIX занимали пространство примерно 15 на 15 метров с кофемашиной, где и происходило основное обсуждение кода [25:37].
*   **Свобода от бюрократии:** Хотя бюрократия существовала, руководство часто закрывало глаза на «бунтарский» дух программистов, пока те создавали полезные инструменты [21:49].

Керниган отмечает, что успех UNIX — это результат «ошибки выжившего». Если бы этого не произошло в Bell Labs, нечто подобное могло бы родиться в Xerox PARC или MIT, но именно лицензионная политика AT&T (бесплатная раздача исходного кода университетам) позволила UNIX захватить мир [27:29].

## 🛠️ Философия программирования и язык AWK
[[JUMP:29:53]]

Фундаментальная философия UNIX заключалась в создании среды, удобной прежде всего для самих программистов. Керниган считает, что программирование — это сплав искусства, науки и инженерии [32:18]:

*   **Искусство:** Понимание того, что именно нужно пользователю.
*   **Наука:** Выбор правильных алгоритмов и структур данных.
*   **Инженерия:** Работа в условиях ограничений памяти и времени [33:10].

Сам Брайан стал соавтором языка **AWK** (вместе с Альфредом Ахо и Питером Вайнбергером) [35:24]. Этот язык предназначен для быстрой обработки текстовых данных. Его преимущество в «умолчаниях»: он автоматически проходит по строкам файла, разбивает их на поля и применяет шаблоны [37:51]. Керниган признаётся, что до сих пор пишет на AWK больше, чем на любом другом языке, когда нужно быстро проанализировать данные [36:44].

## 📖 Язык C и «Библия» программирования
[[JUMP:52:08]]

Язык **C** стал «золотой серединой» между выразительностью и эффективностью [53:04]. Он позволил писать переносимые операционные системы, что раньше считалось невозможным (системы писались только на ассемблере под конкретное железо) [53:41].

В 1978 году Брайан Керниган и Деннис Ритчи опубликовали книгу *«The C Programming Language»* (известную как K&R). Керниган скромно оценивает свою роль, утверждая, что он просто «выкрутил Деннису руки», чтобы тот согласился написать книгу [55:28].

*   **Hello World:** Именно в этой книге впервые появился пример программы, выводящей «hello, world», ставший каноническим для всех последующих учебников [56:35].
*   **Сила примеров:** Керниган настаивает, что хороший пример должен быть не просто демонстрацией синтаксиса, а реалистичной задачей, которую программист захочет решить [57:41].

## ♾️ Математика, AMPL и P vs NP
[[JUMP:1:10:46]]

Помимо языков общего назначения, Керниган участвовал в создании **AMPL** — языка алгебраического моделирования для задач крупномасштабной оптимизации [1:10:58]. AMPL позволяет отделять математическую модель (объективную функцию и ограничения) от конкретных данных и используемых решателей (solvers) [1:11:49].

Рассуждая о фундаментальных вопросах информатики, Брайан делает ставку на то, что **P не равно NP** (P ≠ NP), основываясь на интуиции своих коллег, хотя сам признаёт, что больше склонен к практическому написанию кода, чем к чистой теории [1:18:24]. Его докторская диссертация была посвящена разбиению графов, где он разрабатывал эвристики для задачи, оказавшейся NP-полной [1:20:02].

## 🤖 Искусственный интеллект: лето 1964-го и сегодня
[[JUMP:1:22:26]]

Керниган застал «лето ИИ» ещё в 1964 году, когда будучи студентом в Торонто, читал оптимистичные прогнозы о машинном переводе и доказательстве теорем [1:22:51]. Он отмечает, что люди склонны переоценивать технологии в краткосрочной перспективе и недооценивать в долгосрочной (цитируя Артура Кларка) [1:24:34].

Относительно современного ИИ и машинного обучения гость высказывает следующие опасения:

*   **Предвзятость данных:** Системы учатся на данных, созданных людьми, и если в данных заложены исторические ошибки или предубеждения, ИИ их усилит [1:25:54].
*   **Surveillance Capitalism:** Компьютеры и социальные сети позволяют собирать об индивидах гораздо больше данных, чем правительство или бизнес должны знать [1:28:50].

## 🎓 Образование и будущее вычислительной техники
[[JUMP:1:32:58]]

Сейчас Брайан Керниган преподает в Принстоне курс «Компьютеры в нашем мире» для студентов гуманитарных специальностей [1:32:58]. Он считает, что не каждый должен уметь программировать, но каждый обязан понимать логику работы систем, которые управляют их жизнью [1:33:36].

Его взгляд на будущее умеренно оптимистичен, но полон предостережений. Он видит, как технологии одновременно сближают людей (он чаще общается с семьёй через почту) и отдаляют их (студенты на кампусе не отрываются от смартфонов) [1:37:51].

В конце беседы Керниган возвращается к золотому веку Bell Labs 1970-х, называя его временем «низко висящих фруктов» и невероятного счастья от того, что созданные тобой инструменты немедленно находят применение у коллег [1:41:10].