Время UNIX. A History and a Memoir
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Время UNIX. A History and a Memoir

 

Брайан Керниган
Время UNIX. A History and a Memoir
2020

Переводчик И. Рузмайкина

Литературный редактор А. Руденко

Художник В. Мостипан

Корректоры Н. Сулейманова, Г. Шкатова

 

Брайан Керниган

Время UNIX. A History and a Memoir . — СПб.: Питер, 2020.

 

ISBN 978-5-4461-1669-0

© ООО Издательство "Питер", 2020

 

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

 

Памяти Денниса Ритчи (DMR)

Предисловие

В старых воспоминаниях приятно то, что их покрывает розовая дымка времени. В памяти фиксируется все хорошее и то, что прошло проверку временем, а также радость от участия в со­здании того, что сделало жизнь лучше.

Из статьи Денниса Ритчи The Evolution of the Unix Time-sharing System, октябрь 1984

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

Не слишком известные за пределами технического сообщества операционная система Unix и ее производные лежат в основе множества всем знакомых систем. Google, Facebook, Amazon и многие другие сервисы работают на Linux — Unix-подобных ОС, о которых я расскажу позже. Если у вас есть мобильный телефон или компьютер Mac, знайте, что там установлена какая-то версия Unix. Системы семейства Unix обеспечивают работу виртуальных помощников, таких как Alexa, и навигационного программного обеспечения. За всей той рекламой, которой вас засыпают всякий раз при просмотре веб-страниц, тоже стоят системы семейства Unix. Скорее всего, там реализованы механизмы отслеживания действий пользователей, позволяющие сделать рекламу более релевантной.

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

Эта книга стала коктейлем из истории и мемуаров, моим взглядом на процесс зарождения Unix и попыткой объяснить, что это за операционная система, как она появилась и почему приобрела большое значение. Это не научная работа, здесь нет сносок, и, более того, книга получилась менее исторической и более мемуарной, чем я планировал.

Книга написана для всех, кто интересуется компьютерными системами или историей изобретений. В ней присутствует технический материал, но я постарался дать объяснения, позволяющие оценить основные идеи и понять их важность даже людям, далеким от технологий. Впрочем, все, что кажется слишком сложным, можно пропустить — читать каждое слово необязательно. С другой стороны, тем, кто имеет опыт программирования, некоторые объяснения могут показаться очевидными и чрезмерно упрощенными, но я надеюсь, что и такие читатели сочтут полезными рассказы о том, как возникали те или иные идеи.

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

К счастью, многие из участников описываемых событий пока живы и помогли мне внести поправки. Разумеется, они тоже могут помнить не все или помнить что-то не так. Они тоже могут страдать от провалов в памяти или носить розовые очки, но любые ошибки, которые остались в книге, — моя вина, по крайней мере до тех пор, пока я не смогу их на кого-то переложить.

Цель написания этой книги — рассказать замечательную историю самого продуктивного и созидающего периода в истории информационно-вычислительных систем. Важно понять, как эволюционировали привычные для нас технологии. Решения, определявшие пути развития технологий, принимались в условиях давления и временных ограничений. Чем лучше мы узнаем историю, тем выше сможем оценить гениальность людей, которые смогли создать Unix, а возможно, и лучше поймем, почему современные компьютерные системы именно такие, какие есть. Я покажу, что действия, которые с современной точки зрения могут показаться неправильными или ошибочными, часто оказывались естественным следствием господствовавшего в те времена понимания тех или иных вещей, а также ограниченности доступных ресурсов.

Моя история не только о Unix, хотя все повествование строится вокруг нее. Но я расскажу и про язык программирования Си — один из наиболее используемых языков, на котором написаны системы, управляющие интернетом, и множество служб. После появления Unix в Bell Labs возникли и другие языки, в том числе получивший широкое распространение C++. На этом языке написаны такие приложения пакета Microsoft Office, как Word, Excel или Powerpoint, а также большинство знакомых вам браузеров. Пара десятков инструментов, которыми программисты пользуются каждый день и даже не представляют себе, как можно обходиться без них, были написаны практически сразу после появления Unix. При этом сегодня они так же актуальны, как и 40–50 лет назад.

Важную роль играет и теория компьютерных наук (computer science), зачастую позволяющая реализовывать очень удобные инструменты. Изучение аппаратного обеспечения приводило к появлению инструментов проектирования, интегральных микросхем, различных вариантов архитектуры вычислительных систем и необычных устройств специального назначения. Благодаря комбинации всего этого часто рождались неожиданные изобретения. Именно она обеспечила продуктивность Bell Labs в самых разных областях.

Кроме того, история возникновения технологических инноваций всегда интересна и актуальна. Bell Labs, где появилась Unix, не просто послужили колыбелью для множества хороших идей, но и смогли извлечь из них выгоду. Они стали источником меняющих мир изобретений, и мы можем многому научиться, внимательно рассмотрев, как все это происходило.

История Unix наглядно показывает, как нужно проектировать и создавать программное обеспечение и как эффективно использовать компьютеры. В своем рассказе я попытался подчеркнуть эти моменты. К примеру, философия Unix позволила решить множество задач объединением существую­щих программ. Такой подход избавлял от необходимости писать новое программное обеспечение. Фактически это давно известная стратегия: разделяй и властвуй. Крупную задачу можно разбить на ряд более мелких и проще решаемых, а полученные фрагменты объединить неожиданным образом.

Операционная система Unix оказалась наиболее заметным программным обеспечением, созданным в Bell Labs, но это далеко не единственный их вклад в информационные технологии. Исследовательский центр компьютерных наук — легендарное подразделение 1127 — был необычайно продуктивным в течение двух или трех десятилетий. Его деятельность обусловливалась операционной системой Unix, которая служила основой, но достигнутые результаты выходят далеко за пределы Unix. Книги, написанные сотрудниками 1127, много лет служили базовыми учебниками по информатике и справочниками для программистов. Подразделение 1127 было влиятельной научно-исследовательской лабораторией, одной из наиболее продуктивных как в то время, о котором пойдет речь, так и позднее.

Почему Unix и все, что было с ней связано, ждал такой успех? Как эксперимент двух человек вырос в проект, в буквальном смысле слова изменивший мир? Был ли это уникальный случай, настолько редкий, что ничего подобного больше не повторится? Ответ на вопрос, можно ли спланировать такие колоссальные результаты, я дам в конце книги. Хотя мне кажется, что своим успехом Unix обязана случайному сочетанию факторов: два исключительно талантливых человека, отличный вспомогательный персонал, талантливое и компетентное руководство, стабильное финансирование в корпорации, в которой умели работать на перспективу, и отсутствие препятствий для любой исследовательской деятельности. Кроме того, внедрению новой операционной системы способствовало быстрое развитие технологий, в процессе которого размеры оборудования уменьшались, а оно дешевело при экспоненциальном росте мощности.

Первые годы работы над Unix для меня и многих других сотрудников Bell Labs были поразительно продуктивными и веселыми. Я надеюсь, эта книга сможет передать вам ощущение радости творчества и счастья от того, что мы делаем жизнь лучше, как говорится в эпиграфе Денниса Ритчи в начале этого раздела.

Благодарности

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

Биографические материалы разбросаны по всей книге, причем их основная часть посвящена трем людям, без которых не случилось бы Unix, — Кену Томпсону, Деннису Ритчи и Дугу Макилрою. Кен и Дуг дали мне бесценные отзывы о книге. Разумеется, они никоим образом не несут ответственности за сведения, в которых я ошибся или которые непреднамеренно исказил. Чрезвычайно важные комментарии и советы я получил и от братьев Денниса — Джона и Билла. Его племянник Сэм подробно прокомментировал несколько черновиков.

Как он много раз делал это в прошлом, Джон Бентли поделился со мной бесценными идеями, дал полезные советы по структурированию материала и расстановке акцентов, рассказал множество историй и подробно разобрал по крайней мере с полдюжины черновиков. Я в очередной раз в огромном долгу перед Джоном.

Кроме ценных советов Джерард Хольцманн предоставил мне архивные материалы и оригинальные фотографии, которые помогли сделать книгу визуально насыщенной. Пол Керниган прочитал несколько черновиков и нашел множество опечаток. Он также предложил несколько отличных названий, хотя я, к сожалению, так и не решился использовать вариант «История людей, говорящих на Unix».

Свою критику и рассказы о периоде становления Unix мне предоставили Аль Ахо, Майк Бьянки, Стю Фельдман, Стив Джонсон, Майкл Леск, Джон Линдерман, Джон Мэши, Петер Нойман, Роб Пайк, Ховард Трики и Питер Вайнбергер. Многое из этого материала я цитировал или перефразировал.

Множество полезных комментариев и сведений я получил и от Майкла Бачанда, Дэвида Брока, Грейс Эмлин, Майи Хамин, Билла Джоя, Марка Кернигана, Мег Керниган, Уильяма Макграта, Питера Макилроя, Арнольда Роббинса, Ионы Синовица, Бьёрна Страуструпа, Уоррена Туми и Джанет Вертеси. Я глубоко благодарен за оказанную мне щедрую помощь и готов лично нести ответственность за любые ошибки или неверные толкования. За последние 50 лет значительный вклад в Unix внесли и многие другие, и я приношу извинения всем, чью работу не упомянул.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу: comp@piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информа­цию о наших книгах.

Глава 1. Bell Labs

Одна политика, одна система, универсальный сервис.

Миссия компании AT&T, 1907 год

При беглом осмотре расположенные в удивительной сельской местности Телефонные Лаборатории Белла напоминали большую современную фабрику; да они ею и были. Но это фаб­рика идей, производственные линии которой невидимы глазу.

Цитата из книги Артура Кларка «Голос через океан» 1974 года, вставленная в книгу Джона Гертнера «Фабрика идей», 2012 год

Чтобы понять, как появилась идея Unix, нужно понять, как работали Bell Labs, и прочувствовать существовавшую там творческую среду.

Американская телефонно-телеграфная компания AT&T появилась путем слияния множества телефонных компаний из разных штатов. Вскоре после ее создания стало понятно, что для решения научных и инженерных проблем, с которыми сталкивалась компания в попытках создать национальную телефонную сеть, требуется отдельное подразделение. Так в 1925 году появилась дочерняя компания, занимающаяся исследованиями и разработками, — Bell Telephone Laboratories (Телефонные Лаборатории Белла). Ее название регулярно сокращали до Bell Labs, BTL или просто Labs, но главной задачей всегда оставалась телефония.

Первоначально она располагалась в Нью-Йорке по адресу 463 West Street, но после начала Второй мировой войны AT&T стала предоставлять военным экспертные услуги по системам связи, компьютерному управлению зенитными орудиями, радарам и криптографии. Эта работа частично осуществлялась в Нью-Джерси, в 33 км западнее Нью-Йорка, в районе Мюррей-Хилл, который был частью небольших городов Нью-Провиденс и Беркли-Хайтс.

Эти локации отмечены точками на карте (рис. 1.1). Первоначально компания находилась на берегу Гудзона, недалеко от выезда на шоссе 9А. В Мюррей-Хилл Bell Labs оказались на границе городов Нью-Провиденс и Беркли-Хайтс, к северу от магистрали 78.

 

Рис. 1.1. Из Нью-Йорка в Мюррей-Хилл, Нью-Джерси

Постепенно деятельность Bell Labs все сильнее концентрировалась в Мюр­рей-Хилл, и к 1966 году состоялся полный переезд. В результате в Мюррей-Хилл оказалось более 3000 человек, из которых по крайней мере тысяча обладали докторскими степенями в области физики, химии, математики и различных инженерных специальностей.

На рис. 1.2 вы видите аэрофотоснимок комплекса в Мюррей-Хилл в 1961 году. Тогда существовало три основных здания. Первое — в правом нижнем углу, второе — в верхнем левом, третье — квадратное с открытым внутренним двором. До появления в 1970-х годах еще двух зданий был 400-метровый проход из первого здания во второе.

 

Рис. 1.2. Bell Labs в 1961 году (из архива Bell Labs)

Во втором здании я провел более 30 лет, с момента прихода на стажировку в 1967-м до ухода на пенсию в 2000-м. На снимке точками отмечены мои кабинеты, занимавшие два крыла на пятом (верхнем) этаже. В дальнем конце здания находилась лестница 9, а лестница 8 была на одно крыло ближе к центру. Между этими лестницами, на шестом этаже, в мансарде, и располагалась комната Unix.

На рис. 1.3 предоставленное Google спутниковое изображение Лабораторий в 2019 году. Здания 6 (внизу слева, с пометкой) и 7 (вверху справа) появились в начале 1970-х годов.

 

Рис. 1.3. Bell Labs в 2019 году; здание 6 внизу слева

С 1996 года несколько лет в здании 6 располагалась штаб-квартира компании Lucent Technologies. Обратите внимание, как на присваиваемых Google ярлыках отражается корпоративная история. Здание, помеченное как Bell Labs, и въездная дорога называются Alcatel-Lucent Bell Labs, выезд — Lucent Bell Labs, а пирамидальную крышу административного корпуса в здании 6 украшает пометка Nokia Bell Labs.

Мне не хватит знаний для изложения подробной истории Bell Labs, более того, уже есть люди, которые ее написали. Особенно мне нравятся посвященная естественным наукам «Фабрика идей» Джона Гертнера и «Информация» Джеймса Глейка, отлично описывающая, что происходило в области информатики. Интерес представляет и огромное (семь томов и почти пять тысяч страниц) официальное издание от Bell Labs A History of Science and Engineering in the Bell System.

1.1. Естественные науки в Bell Labs

Сначала большинство исследований в Bell Labs проводилось в областях физики, химии, материаловедения и систем связи. Сотрудники могли сами выбирать тему исследований, ведь актуальных задач было так много, что не составляло труда найти что-то интересное и одновременно полезное как для Bell System, так и для всего мира.

Научно-технические достижения Bell Labs изменили мир. Первым из них стал транзистор, изобретенный в 1947 году Джоном Бардином, Уолтером Браттейном и Уильямом Шокли, которые пытались совершенствовать усилители для междугородных телефонных линий. Транзистор появился в результате фундаментальных исследований свойств полупроводниковых материалов при поиске менее энергоемких и более устойчивых физических приборов, чем радиолампы, которые в 1940-х годах безальтернативно применялись для изготовления коммуникационного оборудования и, между прочим, стали элементной базой компьютеров первого поколения.

В 1956 году изобретение транзистора было отмечено Нобелевской премией по физике. Это одна из девяти Нобелевских премий, присужденных за работу, хотя бы частично выполненную в Bell Labs. Другие важные изобретения — это усилители с отрицательной обратной связью, солнечные элементы, лазеры, мобильные телефоны, спутники связи и приборы с зарядовой связью (которые обеспечивают работу встроенных в телефоны камер).

По приблизительным оценкам, в 1960–1980-х исследованиями в Bell Labs (в основном в Мюррей-Хилл) занималось 3000 человек. Кроме того, от 15 000 до 25 000 принадлежали к различным группам разработчиков оборудования и систем для Bell System. Кто оплачивал их труд?

По сути, компания AT&T обладала монополией на предоставление телефонной связи в большей части США. При этом цены на ее услуги регулировались федеральными и государственными органами, кроме того, компания не могла заниматься бизнесом, не имеющим прямого отношения к предоставлению телефонной связи.

Такой режим регулирования применялся много лет. Услуги компании AT&T должны были предоставляться любому (всеобщий охват), независимо от сложности доступа и выгодности. В качестве компенсации компания имела стабильную и предсказуемую общую норму прибыли.

В рамках этой договоренности часть своего дохода AT&T направляла в Bell Labs с целью дальнейшего совершенствования услуг связи. По сути, Лаборатории оплачивались скромным налогом на все телефонные звонки в стране. Согласно документу А. Майкла Нолла, около 2,8% своих доходов AT&T тратила на исследования и разработки, а около 0,3% — на фундаментальные исследования. Я не знаю, будет ли такая схема работать сегодня, но десятилетиями эта договоренность порождала как постоянные улучшения в системе телефонной связи, так и значительное количество фундаментальных научных открытий.

Определяющим фактором было стабильное финансирование. Компании AT&T оно обеспечивало долгосрочную перспективу, а сотрудникам Bell Labs давало возможность заниматься исследованиями, не приносящими быстрой отдачи. В современном мире ничего подобного нет — при планировании зачастую не заглядывают дальше нескольких месяцев, зато масса усилий тратится на обдумывание финансовых показателей в следующем квартале.

1.2. Коммуникации и computer science

Bell Labs стали пионером в проектировании, создании и совершенствовании систем связи. Этот общий термин охватывает все — от проектирования бытовых устройств, таких как телефоны, до инфраструктуры коммутационных систем, радиорелейных вышек и оптоволоконных кабелей.

Иногда бывает так, что решение такого спектра практических задач порождает прогресс в фундаментальных науках. Например, в 1964 году Арно Пензиас и Роберт Вильсон пытались выяснить, чем обусловлена избыточная шумовая температура антенны, которую Bell Labs применяли для обнаружения радиосигналов, отражаемых спутниковыми ретрансляторами «Эхо». В конце концов они пришли к выводу, что шум вызывался фоновым излучением, оставшимся от Большого взрыва, давшего начало расширению Вселенной. За это открытие в 1978 году Пензиас и Вильсон получили Нобелевскую премию по физике. Арно прокомментировал это так: «Большинство получает Нобелевскую премию за то, что ищет. Мы же получили ее за то, от чего пытались избавиться».

Другая задача, которую ставили в Bell Labs, — математически описать принципы работы систем связи. В результате Клод Шеннон заложил основы теории информации. Отчасти базой для этого послужила криптография, которую он изучал в годы Второй мировой войны. Статья Шеннона «Математическая теория связи», опубликованная в 1948 году в реферативном журнале компании Bell System, объясняла границы возможностей систем передачи информации и исходные принципы их разработки. В Мюррей-Хилл Шеннон работал с начала 1940-х до 1956 года, затем вернулся в качестве преподавателя в Массачусетский технологический институт (MIT), где в свое время учился в аспирантуре. Умер Шеннон в 2001 году в возрасте 84 лет.

По мере роста компьютерных мощностей и снижения их стоимости компьютеры все чаще стали применять для анализа данных, а также для моделирования и симуляции физических систем и процессов. Компьютерами в Bell Labs стали заниматься с 1930-х годов, а к концу 1950-х там появились большие компьютерные центры.

В начале 1960-х годов была образована группа, специализирующаяся в области компьютерных наук. Туда вошли как сотрудники, ранее занимавшиеся исследованиями в сфере математики, так и сотрудники, которые управляли большим центральным компьютером в Мюррей-Хилл. Новый коллектив получил название Исследовательского центра компьютерных наук (Computing Science Research Center), и хотя еще некоторое время они предоставляли компьютерные услуги всем обитателям Мюррей-Хилл, это была уже не группа обслуживания, а научно-исследовательский отдел. В 1970 году группа, управляющая компьютерным оборудованием, была преобразована в отдельную организацию.

1.3. BWK1 в Bell Labs

Этот раздел — по большей части моя личная история, которая, я надеюсь, даст представление о том, как череда счастливых случаев сделала меня программистом в таком идеально подходящем для этого занятия месте, как Bell Labs.

Я учился в университете своего родного города Торонто. В те годы существовала программа «Инженерная физика» (которая позже стала называться «Технические науки»), подходящая для тех, кто не знал, в какой области он хотел бы специализироваться. Я окончил университет в 1964 году, на заре компьютерных технологий: первый компьютер я увидел на третьем курсе. Это был огромный IBM 7094, единственный компьютер на весь университет, передовое чудо техники. Он имел 32 Кбайт памяти (32 768 слов по 36 битов) на магнитных сердечниках (сегодня мы бы сказали, что это 128 Кбайт) и дополнительное хранилище в виде больших механических дисков. В то время такой компьютер стоил 3 миллиона долларов США, устанавливался в большой комнате с кондиционером и обслуживался профессиональными операторами. У обычных людей (и уж тем более у студентов) доступа к нему не было.

Поэтому во время учебы я не имел дела с компьютерами, хотя и пытался учить язык программирования Фортран. Сочувствую всем, кто когда-либо писал свою первую программу. Я прочитал о Фортране II превосходную книгу Дэниеля Маккракена, назубок выучил все правила, но это никак не помогало. Подозреваю, что на подобный концептуальный барьер наталкивались многие.

Летом перед последним годом обучения в колледже я получил работу в компании Imperial Oil, в группе, которая разрабатывала программное обеспечение для оптимизации нефтеперерабатывающих заводов. Компания Imperial Oil частично принадлежала корпорации Standard Oil, Нью-Джерси, которая в 1972 году превратилась в корпорацию Exxon.

Честно признаюсь, как стажер я оказался не на высоте. Все лето я писал на языке Кобол (COBOL, COmmon Business Oriented Language) гигантскую программу для анализа данных нефтеперерабатывающего завода. Уже не помню, зачем она требовалась, но точно знаю, что работать она так и не начала. Программировать я попросту не умел. Язык Кобол практически не давал возможности хорошо структурировать программу, да и структурированное программирование на тот момент еще не было изобретено, поэтому мой код состоял из множества операторов IF, которые то и дело ветвились, потому что требовалось добавить очередную операцию.

Еще я пытался писать программы на Фортране для мейнфрейма IBM 7010, так как этот язык я знал лучше, чем Кобол, кроме того, он больше подходил для анализа данных. После нескольких недель борьбы с JCL (Job Control Language, именно на этом языке осуществлялось управление заданиями) я пришел к выводу, что на нашем 7010 отсутствует компилятор Фортрана. Сообщения об ошибках, которые выдавал компилятор, были настолько непостижимыми, что их не мог понять никто.

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

В 1964 году, завершив свое обучение, я понятия не имел, что делать дальше, и поэтому, как и многие студенты, решил поступать в аспирантуру. Разослал заявления в полдюжины американских заведений (в то время в Канаде подобное не очень практиковалось), и мне повезло. Меня приняли в несколько вузов, в том числе в MIT и в Принстон. В Принстоне докторскую степень обычно получали за три года, в то время как в MIT это занимало семь лет. Принстон предложил полную стипендию, а в MIT мне пришлось бы по 30 часов в неделю отрабатывать лаборантом. Выбор был очевидным, тем более в Принстоне уже учился мой хороший друг Аль Ахо, который был старше меня на год. Это решение оказалось невероятно удачным.

В 1966 году мне снова повезло. Я попал на летнюю стажировку в MIT. Это произошло отчасти благодаря тому, что годом ранее там очень результативно поработал другой аспирант из Принстона, Ли Вариан. Тем летом я писал на MAD (Michigan Algorithm Decoder, диалект языка Algol 58) в системе разделения времени (Compatible Time-Sharing System, CTSS) инструменты для новой операционной системы Multics. О ней мы подробно поговорим в главе 2. Вообще, конечно, она называлась MULTICS, но запись в нижнем регистре не так раздражает глаза, как и Unix вместо UNIX. Так что я буду и дальше использовать такой не совсем исторически корректный вариант написания.

Номинально моим руководителем в MIT был профессор Фернандо Корбато, которого все называли Корби. Истинный джентльмен, создатель программного пакета CTSS и человек, отвечающий за Multics. В 1990-м он получил премию Тьюринга за фундаментальную работу над системами разделения времени. Корби умер в июле 2019 года в возрасте 93 лет.

Помимо разработки и внедрения CTSS и Multics Корби изобрел пароли для доступа к компьютеру. В пакетных вычислениях в то время не было особой необходимости, зато требовался механизм безопасности для защиты личных файлов на компьютерах с разделением времени и общей файловой системой.

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

Помню, как единолично пользовался кабинетом, который принадлежал профессору Джозефу Вейценбауму, так как летом его не было. В начале 1966 года Вейценбаум написал программу «Элиза», которая пародировала диалог с психотерапевтом. Это была одна из первых попыток использовать естественный язык для взаимодействия с компьютером. Программа произвела огромное впечатление, особенно в первый раз, и мне нравилось показывать ее посетителям. Сегодня в Сети есть множество подобных программ, и с ними по-прежнему интересно поиграть, хотя их слабые стороны быстро становятся очевидными.

Элиза: Пожалуйста, скажи, что тебя беспокоит?

Я: Я пытаюсь написать книгу про Unix.

Элиза: Ты пришел ко мне, потому что пытаешься написать книгу про Unix?

Я: Да.

Элиза: Ты уверен?

Я: Да.

Элиза: Да, кажется, ты действительно уверен.

Я: Да.

Элиза: Понятно.

Летом 1967 я вытянул счастливый билет: стажировку в Bell Labs, в Исследовательском центре компьютерных наук. Я начал работать на Дуга Макилроя (рис. 1.4). Дуг предложил мне заняться оценкой распределителей памяти. Это был один из его долгосрочных проектов. В лучших традициях стажеров я действовал невпопад и в конце концов решил совсем другую задачу — создал библиотеку функций, облегчающих обработку списка в программах на Фортране. В то лето я плотно программировал на ассемблере для мейнфрейма GE 635, который представлял собой в чистом виде компьютер IBM 7094. В то же время это была упрощенная версия GE 645, специально под операционную систему Multics. Наверное, это был последний раз, когда я писал на ассемблере. И хотя мой код содержал множество ошибок, процесс мне настолько понравился, что я увлекся программированием.

 

Рис. 1.4. Дуг Макилрой, примерно 1981 год (из архива Джерарда Хольцманна)

1.4. Рабочее помещение

Иногда судьбу определяет география.

Как стажер я получил кабинет на пятом этаже здания 2 рядом с лестницей 8. В те старые добрые времена даже у стажеров были личные кабинеты. В первый рабочий день я сидел там и не знал, что делать. В 11 утра в дверях возник мужчина и сказал: «Привет, я Дик (далее неразборчиво). Пойдем пообедаем».

Я не помню, как прошел этот обед, зато помню, что потом, когда Дик с неразборчивой фамилией куда-то ушел, я отправился читать табличку с фамилией на двери его кабинета. Ричард Хэмминг! Мой дружелюбный сосед оказался знаменитостью, изобретателем самоконтролирующихся и самокорректирующихся кодов и автором учебника по методам численного анализа, по которому я в то время учился.

Дик (рис. 1.5) стал моим хорошим другом. Он был человеком твердых убеждений и не боялся их высказывать, что, как я думаю, отталкивало некоторых людей, но я наслаждался его компанией и много лет с пользой применял его советы. Он был начальником отдела, где не было сотрудников, что казалось странным. По словам Дика, он приложил массу усилий для достижения подобной комбинации, то есть достойной должности без сопутствующей ответственности. Оценить это я смог, только став начальником отдела с десятком подчиненных.

Летом 1968 года он узнал, что получил премию Тьюринга, которая в сфере информационных технологий считается эквивалентом Нобелевской премии. В то время Нобелевская премия составляла 100 000 долларов, а премия Тьюринга — 2000, так что Дик язвительно заметил, что получил 2 % Нобелевской премии. Это была третья премия Тьюринга; первые две получили другие пионеры компьютерных технологий, Алан Перлис и Морис Уилкс. Дик был номинирован на нее за работы в области численных методов, систем автоматического кодирования, кодов определения и корректировки ошибок.

Благодаря Дику я начал писать книги. Он был невысокого мнения о большинстве программистов, считая, что они плохо подготовлены, если подготовлены вообще. Я до сих пор слышу, как он говорит:

Мы даем им словарь и грамматические правила и говорим: «Теперь ты отличный программист, малыш».

...