Брайан Керниган — живая легенда компьютерных наук, чьё имя неразрывно связано с созданием операционной системы UNIX и языка программирования C. В этой беседе с Лексом Фридманом он погружается в историю «золотого века» Bell Labs, рассуждает об эволюции языков программирования и делится своим видением будущего, где ИИ и алгоритмы всё плотнее вплетаются в ткань человеческого бытия.
🕰️ От перфокарт к разделению времени: истоки UNIX 4:20
История UNIX началась более 50 лет назад, но её корни уходят ещё глубже — в эпоху мейнфреймов 1950-х и начала 1960-х годов . В то время программирование было медленным и итеративным процессом: программист набивал колоду перфокарт, отдавал её оператору и ждал часами, а иногда и днями, чтобы получить распечатку с ошибкой .
Ситуация начала меняться с появлением систем разделения времени (time-sharing). Керниган вспоминает:
- CTSS (Compatible Time-Sharing System): Создана в MIT под руководством Фернандо Корбато. Керниган использовал её летом 1966 года .
- Ресурсы CTSS: Система работала на модифицированном IBM 7094 с двумя банками памяти по 32 тысячи 36-битных слов (всего около 300 КБ), что по тем временам было огромным объёмом .
- Иллюзия владения: Основная идея разделения времени заключалась в том, чтобы давать каждому пользователю крошечный квант времени процессора, создавая иллюзию, что вся машина принадлежит ему одному .
Затем последовал проект Multics, амбициозная попытка создать «информационную утилиту», подобную электрической сети . Однако к 1969 году Bell Labs вышла из проекта, посчитав его слишком сложным и дорогим. Это оставило группу талантливых исследователей, включая Кена Томпсона и Денниса Ритчи, без комфортной среды для работы .
🐣 Рождение UNIX: трехнедельный подвиг Кена Томпсона 14:54
Когда Bell Labs прекратила работу над Multics, Кен Томпсон начал искать альтернативы. Он нашёл малоиспользуемый мини-компьютер PDP-7 с 16 тысячами 16-битных слов памяти .
Легендарный момент создания UNIX произошёл, когда жена Томпсона уехала в Калифорнию на три недели с их годовалым сыном. За это время Кен в одиночку написал:
По словам Брайана Кернигана, Томпсон является «сингулярностью» среди программистов, обладая способностью видеть всю картину целиком и реализовывать её с невероятной скоростью . Несмотря на то что первые версии были написаны на ассемблере, система заложила основы современной вычислительной архитектуры .
🧪 Культура Bell Labs: магия Мюррей-Хилл 11:46
Bell Labs была уникальным научным хабом в Нью-Джерси. В здании Мюррей-Хилл работали тысячи специалистов, многие из которых имели докторские степени в физике, химии и математике .
Особенности среды, по воспоминаниям Кернигана:
- Открытость: Двери офисов всегда были открыты, а коридоры способствовали случайным встречам и обмену идеями .
- Общая комната: Исследователи UNIX занимали пространство примерно 15 на 15 метров с кофемашиной, где и происходило основное обсуждение кода .
- Свобода от бюрократии: Хотя бюрократия существовала, руководство часто закрывало глаза на «бунтарский» дух программистов, пока те создавали полезные инструменты .
Керниган отмечает, что успех UNIX — это результат «ошибки выжившего». Если бы этого не произошло в Bell Labs, нечто подобное могло бы родиться в Xerox PARC или MIT, но именно лицензионная политика AT&T (бесплатная раздача исходного кода университетам) позволила UNIX захватить мир .
🛠️ Философия программирования и язык AWK 29:53
Фундаментальная философия UNIX заключалась в создании среды, удобной прежде всего для самих программистов. Керниган считает, что программирование — это сплав искусства, науки и инженерии :
- Искусство: Понимание того, что именно нужно пользователю.
- Наука: Выбор правильных алгоритмов и структур данных.
- Инженерия: Работа в условиях ограничений памяти и времени .
Сам Брайан стал соавтором языка AWK (вместе с Альфредом Ахо и Питером Вайнбергером) . Этот язык предназначен для быстрой обработки текстовых данных. Его преимущество в «умолчаниях»: он автоматически проходит по строкам файла, разбивает их на поля и применяет шаблоны . Керниган признаётся, что до сих пор пишет на AWK больше, чем на любом другом языке, когда нужно быстро проанализировать данные .
📖 Язык C и «Библия» программирования 52:08
Язык C стал «золотой серединой» между выразительностью и эффективностью . Он позволил писать переносимые операционные системы, что раньше считалось невозможным (системы писались только на ассемблере под конкретное железо) .
В 1978 году Брайан Керниган и Деннис Ритчи опубликовали книгу «The C Programming Language» (известную как K&R). Керниган скромно оценивает свою роль, утверждая, что он просто «выкрутил Деннису руки», чтобы тот согласился написать книгу .
- Hello World: Именно в этой книге впервые появился пример программы, выводящей «hello, world», ставший каноническим для всех последующих учебников .
- Сила примеров: Керниган настаивает, что хороший пример должен быть не просто демонстрацией синтаксиса, а реалистичной задачей, которую программист захочет решить .
♾️ Математика, AMPL и P vs NP 1:10:46
Помимо языков общего назначения, Керниган участвовал в создании AMPL — языка алгебраического моделирования для задач крупномасштабной оптимизации . AMPL позволяет отделять математическую модель (объективную функцию и ограничения) от конкретных данных и используемых решателей (solvers) .
Рассуждая о фундаментальных вопросах информатики, Брайан делает ставку на то, что P не равно NP (P ≠ NP), основываясь на интуиции своих коллег, хотя сам признаёт, что больше склонен к практическому написанию кода, чем к чистой теории . Его докторская диссертация была посвящена разбиению графов, где он разрабатывал эвристики для задачи, оказавшейся NP-полной .
🤖 Искусственный интеллект: лето 1964-го и сегодня 1:22:26
Керниган застал «лето ИИ» ещё в 1964 году, когда будучи студентом в Торонто, читал оптимистичные прогнозы о машинном переводе и доказательстве теорем . Он отмечает, что люди склонны переоценивать технологии в краткосрочной перспективе и недооценивать в долгосрочной (цитируя Артура Кларка) .
Относительно современного ИИ и машинного обучения гость высказывает следующие опасения:
- Предвзятость данных: Системы учатся на данных, созданных людьми, и если в данных заложены исторические ошибки или предубеждения, ИИ их усилит .
- Surveillance Capitalism: Компьютеры и социальные сети позволяют собирать об индивидах гораздо больше данных, чем правительство или бизнес должны знать .
🎓 Образование и будущее вычислительной техники 1:32:58
Сейчас Брайан Керниган преподает в Принстоне курс «Компьютеры в нашем мире» для студентов гуманитарных специальностей . Он считает, что не каждый должен уметь программировать, но каждый обязан понимать логику работы систем, которые управляют их жизнью .
Его взгляд на будущее умеренно оптимистичен, но полон предостережений. Он видит, как технологии одновременно сближают людей (он чаще общается с семьёй через почту) и отдаляют их (студенты на кампусе не отрываются от смартфонов) .
В конце беседы Керниган возвращается к золотому веку Bell Labs 1970-х, называя его временем «низко висящих фруктов» и невероятного счастья от того, что созданные тобой инструменты немедленно находят применение у коллег .