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

Posted on

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

Я нашёл это выступление от 1986 года в Bell Core - “You and Your Research”.

Через несколько лет после выхода на пенсию Дик выступил с очень занимательной речью, в которой советовал, как сделать успешную карьеру. Эту речь до сих пор можно найти в Интернете под названием «Вы и ваши исследования» («You and Your Research»). Первое выступление состоялось в марте 1986 года в компании Bell Communications Research; Кен Томпсон отвез меня туда, чтобы мы могли послушать его. Я уже много лет рекомендую всем студентам почитать стенограмму или посмотреть одну из версий видео.

Про свободу исследований в Bell Core:

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

Были и такие привилегии, как ковровое покрытие в кабинетах руководителей, начиная с начальника отдела, в то время как у всех остальных на полу был линолеум или виниловая плитка.

Интересно почитать как проходила ежегодная аттестация сотрудников в Bell Labs. По описанию всё очень похоже на процесс оценки сотрудников в крупных российских компаниях, но тут руководители менее формально подходили к процессу и оформлению отчётов:

Написание подобных отчетов и обратная связь дело непростое, а раздел «Области, требующие улучшения» и вообще то и дело норовили оставить незаполненным, пока не пришло распоряжение заполнять его в обязательном порядке. Я придумал фразу «Продолжайте в том же духе», и она выручала меня пару лет, прежде чем мне сказали, что требуется более критический подход, ведь никто не идеален. К счастью, мне не пришлось давать рекомендации по улучшениям такой звезде, как Кен Томпсон. Что я мог ему рекомендовать? Руководители отделов и директор встречались для согласования оценки деятельности каждого сотрудника. Обычно это занимало целый день. Через несколько недель следовало еще одно занимавшее целый день совещание, на котором определялись зарплаты на следующий год. Хотя эти два мероприятия официально назывались оценкой заслуг и пересмотром заработной платы, я всегда считал их «абстрактной оценкой заслуг» и «конкретной оценкой заслуг». Этот процесс повторялся на более высоком уровне: исполнительный директор рассматривал все результаты работы технического персонала с директорами и оценивал работу руководителей отделов. В некоторых отделах обзор заслуг мог носить конкурентный характер, но наши обзоры были исключительно товарищескими. Вместо подчеркивания «мои люди лучше, чем ваши» предпочиталось помнить о том, какую пользу принесли нашему отделу другие. Возможно, я слишком

И вдруг я понял, что до создания операционной системы осталось три недели. Кен Томпсон, на компьютерной выставке Vintage Computer Festival East, 4 мая 2019 года.

Как сделать вторую версию продукта и не переусложнить всё:

Задача стояла крайне сложная, и вскоре возникли проблемы. Можно сказать, что разработчики столкнулись с эффектом второй системы. Этот термин означает ситуацию, когда на волне успеха первой системы (например, CTSS) начинаются попытки не только исправить все ее недочеты, но и добавить всю ту функциональность, которая в нее не вошла. Как следствие одновременного принятия множества решений появляется переусложненная система. Именно так и получилось с Multics.

«В какой-то момент я понял, что от операционной системы меня отделяют три недели. Требовалось написать три программы, по одной в неделю: редактор, в котором будет создаваться код; ассемблер для трансляции этого кода на язык, понятный компьютеру PDP-7; и оверлей ядра, который можно назвать операционной системой». Как раз в то время жена повезла их годовалого сына к родителям Кена в Калифорнию, так что он мог спокойно работать. В интервью 2019 года он описал это так: «Неделя, неделя и еще неделя — и у нас появилась Unix». По всем параметрам это был очень продуктивный результат.

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

Брайан спрашивал своего старого коллегу Кена Томпсона правда ли, что тот перешёл на работу в Гугл:

> Дата: среда, 1 ноября 2006 16:08:31 -0800
> Тема: Re: голос из прошлого
>
> Это правда. На медианный возраст сотрудников Google это сильно не повлияло, а
> вот средний возраст сильно изменился.

Короткие названия команд:

Возможно, причина коротких имен у многих команд в Unix в том, что набор текста на телетайпе модели 33 требовал значительных физических усилий и происходил очень медленно.

Про рабочие пространства в Bell Labs:

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

Давно писал обзор (“Что пишут в разделе BUGS в документации” и “Re: Что пишут в разделе BUGS в документации”) забавных известных проблем из страниц руководств, а тут Брайан описывает историю появления этого раздела в руководствах:

В первых версиях руководства информацию старались умещать в буквальном смысле на одной странице, что сейчас редкость. При этом появился такой новый для того времени раздел, как ОШИБКИ (BUGS). Как своего рода признание того факта, что в программах могут встречаться ошибки или какие-то особенности и недостатки, которые, даже если их сразу не исправляют, должны быть документированы.

Брайан Керниган пользуется Macbook Air:

Для сравнения, мой ноутбук Macbook Air 2015 года выпуска имеет 8 Гбайт оперативной памяти (более чем в 330 000 раз больше) и диск на 500 Гбайт (в полмиллиона раз больше) и при этом стоит всего тысячу долларов.

Как появился термин coredump:

Критичные сбои программы операционная система фиксировала и создавала для помощи программисту файл с содержимым основной памяти, той, что находилась на магнитных сердечниках (magnetic cores). Именно отсюда возникло словосочетание дамп памяти (core dump), которое применяется до сих пор, хотя памятью на магнитных сердечниках давно уже никто не пользуется. Файл с этим дампом так и называется — core.

Почему системный вызов creat() называется именно так:

Между прочим, системный вызов creat действительно пишется именно так: никаких причин для этого нет, просто так захотел Кен Томпсон. Роб Пайк однажды спросил Кена, что бы он поменял, если бы ему пришлось снова создавать Unix. Каким был его ответ? «Я бы написал creat как полагается — с “e” на конце».

Кратко о причинах появления Unix в Bell Labs по версии Брайана:

Для Unix это обычная цепочка действий: реальная практическая задача, глубокие знания соответствующей теории, эффективное проектирование, воплощающее теорию в практику, и постоянное усовершенствование. Все собралось воедино благодаря богатому опыту членов группы, открытой среде и культуре экспериментов с новыми идеями.

Первые линтеры:

Название Lint восходит к слову, означающему снятие ворсинок с одежды. Функциональность этого анализатора теперь часто включается в компиляторы Си, но его базовая идея легла в основу аналогичных инструментов для ряда других языков.

Теперь уже известный принцип того, что должно подлежать автоматизации:

Как говорит Дуг Макилрой, «все, что вам придется делать неоднократно, можно считать готовым к автоматизации».

Как возникло требование предварять команды в Makefile символами табуляции:

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

и

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

Немного истории возникнования программы для форматирования страниц руководств:

Джо Оссанна написал программу Nroff («new roff»), сходную с системой подготовки текстов Roff, которая могла выводить патентные заявки в требуемом формате. Во второй половине 1971 года работа над патентными заявками осуществлялась исключительно в Unix. Подробно о форматировании текстов я расскажу в главе 5.

В 1966 году на стажировке в MIT я столкнулся с программой Джерри Зальцера Runoff. Название восходит к выражению «I’ll run off a copy for you» («Я отпечатаю тебе копию»). Это было простое средство форматирования текста. На ввод подавался обычный текст, перемежающийся начинающимися с точки строками, которые задавали способ форматирования.

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

Когда осенью 1968 года я начал писать диссертацию, то мечтал о программе Runoff, потому что альтернативой был самостоятельный набор на пишущей машинке (причем перепечатывалась вся страница в случае ошибок). Или нужно было кому-то заплатить, чтобы он напечатал все вместо меня. Печатаю я быстро, но неаккуратно, так что первый вариант отпадал. Нанять я тоже никого не мог, потому что был жадным и бедным.

Поэтому я написал простую версию программы Runoff, которую назвал Roff. Вот только в Принстоне не было ни интерактивной компьютерной системы, такой как CTSS, ни компьютерных терминалов. Доступны были перфокарты, поддерживающие только заглавные буквы. Программу Roff я написал на Фортране (вариант не лучший, так как Фортран предназначался для научных вычислений, а не для управления символами, но других попросту не было), добавив туда функцию преобразования только в нижний регистр, с автоматическим сохранением верхнего регистра для первой буквы в предложении. Полученный таким способом текст был распечатан на принтере IBM 1403, который умел печатать буквы в обоих регистрах. Вот так выглядели передовые технологии того времени! Моя диссертация заняла три коробки, по две тысячи перфокарт в каждой. Длина коробки составляла примерно 35 см и весила 4,5 кг. Первые тысячу карт занимала программа, а остальные пять были отданы под собственно диссертацию в формате Roff.

Теги: books