Выдержки из книги "Время UNIX"

Автор Керниган Б.
Почему Unix и все, что было с ней связано, ждал такой успех? Как эксперимент нескольких людей вырос в проект, в буквальном смысле слова изменивший мир?
Первая мысль, которая меня посетила, когда я взял книгу в руки: «345 страниц?! Серьезно?» Я ожидал увидеть труд, соизмеримый с чем-то грандиозным, типа книги «Добыча» Д. Ергина на три тысячи страниц — это же UNIX и Bell Labs. По всей видимости, автор ожидал подобной реакции и с первых страниц предупреждает, что более подробную историю следует искать в официальном издании от Bell Labs (а точнее — семь томов и почти пять тысяч страниц) «A History of Science and Engineering in the Bell System», а также «Фабрика идей» Джона Гертнера и «Информация» Джеймса Глейка, отлично описывающая, что происходило в области информатики.
Bell Labs
В 1966 году в Bell Labs работало 3000 человек, из которых по крайней мере тысяча обладали докторскими степенями в области физики, химии, математики и различных инженерных специальностей. И от 15 000 до 25 000 принадлежали к различным группам разработчиков оборудования и систем для Bell System
Сначала большинство исследований в Bell Labs проводилось в областях физики, химии, материаловедения и систем связи. Сотрудники могли сами выбирать тему исследований, ведь актуальных задач было так много, что не составляло труда найти что-то интересное и одновременно полезное как для Bell System, так и для всего мира
Научно-технические достижения Bell Labs изменили мир. Первым из них стал транзистор, изобретенный в 1947 году Джоном Бардином, Уолтером Браттейном и Уильямом Шокли, которые пытались совершенствовать усилители для междугородных телефонных линий. Транзистор появился в результате фундаментальных исследований свойств полупроводниковых материалов при поиске менее энергоемких и более устойчивых физических приборов, чем радиолампы, которые в 1940-х годах безальтернативно применялись для изготовления коммуникационного оборудования и, между прочим, стали элементной базой компьютеров первого поколения
В 1956 году изобретение транзистора было отмечено Нобелевской премией по физике. Это одна из девяти Нобелевских премий, присужденных за работу, хотя бы частично выполненную в Bell Labs
Другие важные изобретения — это усилители с отрицательной обратной связью, солнечные элементы, лазеры, мобильные телефоны, спутники связи и приборы с зарядовой связью (которые обеспечивают работу встроенных в телефоны камер)
Компания AT&T обладала монополией на предоставление телефонной связи в большей части США. При этом цены на ее услуги регулировались федеральными и государственными органами, кроме того, компания не могла заниматься бизнесом, не имеющим прямого отношения к предоставлению телефонной связи. Услуги компании AT&T должны были предоставляться любому, независимо от сложности доступа и выгодности. В качестве компенсации компания имела стабильную и предсказуемую общую норму прибыли. В рамках этой договоренности часть своего дохода AT&T направляла в Bell Labs с целью дальнейшего совершенствования услуг связи. По сути, Лаборатории оплачивались скромным налогом на все телефонные звонки в стране. Согласно документу А. Майкла Нолла, около 2,8% своих доходов AT&T тратила на исследования и разработки, а около 0,3% — на фундаментальные исследования. Я не знаю, будет ли такая схема работать сегодня, но десятилетиями эта договоренность порождала как постоянные улучшения в системе телефонной связи, так и значительное количество фундаментальных научных открытий. Определяющим фактором было стабильное финансирование. Компании AT&T оно обеспечивало долгосрочную перспективу, а сотрудникам Bell Labs давало возможность заниматься исследованиями, не приносящими быстрой отдачи. В современном мире ничего подобного нет — при планировании зачастую не заглядывают дальше нескольких месяцев, зато масса усилий тратится на обдумывание финансовых показателей в следующем квартале
Bell Labs стали пионером в проектировании, создании и совершенствовании систем связи. Этот общий термин охватывает все — от проектирования бытовых устройств, таких как телефоны, до инфраструктуры коммутационных систем, радиорелейных вышек и оптоволоконных кабелей
Иногда бывает так, что решение такого спектра практических задач порождает прогресс в фундаментальных науках
Компьютерами в Bell Labs стали заниматься с 1930-х годов, а к концу 1950-х там появились большие компьютерные центры
UNIX
В 1964 году повсеместно использовали систему CTSS (Compatible Time-Sharing System), разработанную в MIT. Операционная система CTSS оказалась настолько продуктивной средой программирования, что в MIT решили создать ее усовершенствованную версию и привлекли к проектированию системы Multics (Multiplexed Information and Computing Service) Bell Labs, у которой с начала 1950-х был большой опыт создания собственных систем
Multics поддерживалась и использовалась до 2000 года, хотя и не получила широкого распространения. Она породила множество хороших идей, но самый весомый ее вклад оказался неожиданным: то, как она повлияла на скромную операционную систему Unix, разработка которой отчасти явилась реакцией на сложность Multics, так как после выхода из проекта сотрудникам Bell Labs, работавшим над этой операционной системой, пришлось искать себе новое занятие. Многие хотели продолжить разработку операционных систем, но руководство Bell Labs, разочарованное результатом с Multics, не было заинтересовано в покупке оборудования под аналогичный проект
По мнению автора, подобная осторожность начальства оказывала позитивное влияние на разработку UNIX, ведь в этом случае для получения ресурса людям приходится продумывать свои предложения и концентрироваться на продвигаемой идее. Ограниченность ресурсов зачастую заставляет идеально планировать рабочий процесс
В попытках уговорить начальство профинансировать покупку оборудования команда UNIX пошла на хитрость. Bell Labs как крупная и продуктивная научно-исследовательская компания генерировала множество патентных заявок — примерно по патенту в день. Такая заявка представляла собой текстовый документ с жесткими требованиями к формату, например нумерации строк на странице. Ни одна существующая система не умела оформлять документы таким способом, поэтому патентный отдел планировал закупить оборудование у компании, обещавшей программное обеспечение, которое со временем позволит решать подобные задачи. В тот момент нумерация строк еще не была реализована. Джо Оссанна предложил другой план. Патентный отдел сможет пользоваться для подготовки патентных заявок компьютером PDP-11, потому что группа Unix напишет программное обеспечение для вывода заявок в нужном формате. Про работу над операционными системами речи не шло. Этот комбинированный вариант позволил обойти остаточные возражения руководства. Деньги на PDP-11 пришли от директора Центра речевых и акустических исследований (Speech and Acoustics Research Center) Макса Мэтьюса. Дело в том, что один из его начальников, Ли Макмэхон, очень интересовался обработкой текста и содействовал продвижению плана Оссанны
1969 год — начало разработки системы UNIX
Разработчики: Кен Томпсон, Деннис Ритчи и Дуг Макилрой
Автор утверждает, что один из драйверов успеха UNIX — это внятная документация
Деннис превосходно разрабатывал техническую документацию. У него был собственный элегантный стиль, он умел прекрасно выражать мысли и обладал неподражаемым остроумием. Без сомнения, успех языка Си и операционной системы Unix можно частично объяснить писательским мастерством Денниса
Первая редакция Unix была запущена к концу 1971 года. Следующие несколько лет примерно каждые полгода выходило новое издание руководства, каждый раз с описанием нового функционала, новых инструментов и новых языков. Шестая редакция операционной системы, руководство по которой датируется маем 1975 года, стала первой, вышедшей за пределы Bell Labs и сильно повлиявшей на окружающий мир
В первой редакции Unix было чуть больше 30 системных вызовов, половина которых была связана с файловой системой
Все инструменты UNIX, конечно, были написаны на Си, так как это был выразительный и эффективный язык. Сегодня уже мало кто знает и помнит, что в те времена, когда емкость запоминающих устройств компьютеров выражалась в килобайтах, а не в гигабайтах, эффективность как во времени, так и в пространстве имела решающее значение. Подсчитывался каждый байт, имело значение, на каком уровне выполнялась каждая инструкция, поэтому язык, позволяющий учитывать оба этих аспекта, был практической необходимостью
После нескольких лет эксплуатации внутри подразделения 1127 операционная система Unix начала распространяться по Bell Labs и за ее пределы, причем в основном через университеты, которые могли получить исходный код, подписав соглашение о коммерческой тайне. Про открытый исходный код речи еще не шло. Системой можно было пользоваться только в образовательных целях, а владельцы лицензий могли обсуждать свой опыт работы с Unix только с другими лицензированными пользователями. Однако сообщество быстро росло, по всему миру появлялись группы пользователей и добавлялись крупные технические инновации, например порты для различного оборудования и новые механизмы доступа к интернету
Рынок рабочих станций возник благодаря технологическим усовершенствованиям, которые позволили упаковать серьезные вычислительные мощности в небольшой блок и продавать его по скромной цене. Полная цена системы стала приемлемой отчасти по причине доступности программного обеспечения, в том числе операционной системы. Новым производителям уже не требовалось создавать операционную систему с нуля, достаточно было портировать Unix и сопутствующие программы под используемый процессор. Таким образом, развитию рынка рабочих станций сильно способствовала доступность Unix
Прототипом инструмента, который заставил воспринимать «инструменты» как нечто большее, чем «программы», стала утилита grep, предназначенная для поиска шаблонов. Автором первой версии был Кен Томпсон
Название утилиты grep даже попало в Оксфордский английский словарь
Для Unix характерно представление о программах как об инструментах. Написание небольших программ, хорошо выполняющих одну задачу, вместо больших программ, которые пытаются выполнять много задач, имеет много преимуществ. Конечно, бывают случаи, когда большие программы имеют смысл, но куда удобнее иметь под рукой набор маленьких инструментов, которые можно комбинировать новыми способами, причем эта операция доступна даже обычным пользователям.
По сути, речь идет о модульности на уровне программ, сходной с модульностью функций внутри программы. Такой подход можно сформулировать как «разделяй и властвуй», поскольку отдельные компоненты не взаимодействуют друг с другом. Он дает пользователю возможность сочетать инструменты по своему вкусу, которую трудно реализовать в большой программе, пытающейся решить слишком много задач в рамках одного пакета.
Забавная история, связанная с утилитой grep, случилась в 1972 году. Один из сотрудников Bell Labs заметил, что если перевернуть карманный калькулятор вверх ногами, некоторые выводимые на дисплее цифры становятся похожи на буквы. Например, 3 превращается в E, 7 становится L. Так как на нашем компьютере был словарь, нас попросили составить список слов, которые можно набрать на перевернутом калькуляторе. Как члену подразделения исследований мне было приятно помочь в решении практической задачи. Я спросил, какие буквы можно получить из перевернутых цифр. Оказалось, что это буквы BEHILOS. Тогда я набрал команду grep 'ˆ[behilos]*$' /usr/dict/web2. Файл /usr/dict/web2 содержит второе издание международного словаря Уэбстера, то есть 234 936 слов, по одному на строку. Заключенная в кавычки строка символов — регулярное выражение или шаблон, который задает строки, состоящие из произвольных комбинаций семи указанных букв. Я получил список из 263 слов. Английский — мой родной язык, но в этом списке немало слов, которых я никогда раньше не видел. Я распечатал список и отдал коллеге. Думаю, результат его удовлетворил, потому что дальнейших вопросов и просьб не было. Зато у меня осталась эта история как прекрасная демонстрация ценности таких инструментов, как утилита grep и регулярные выражения
Несомненно, рынок для продаж Unix существовал. Можно даже сказать, что его непреднамеренно создала AT&T, раздавая лицензии университетам. Ведь студенты, привыкшие работать в этой ОС, хотели продолжать и после выпуска, уже устроившись в коммерческие компании, которые могли позволить себе покупать лицензии за деньги. С 1984 года USL прилагала массу усилий для превращения Unix в профессиональный коммерческий продукт. Кульминацией стала версия System V Release 4, или SVR4. Компания AT&T инвестировала значительные ресурсы в то, чтобы сделать эту версию стандартной реализацией и тщательно определить совместимость как кода, так и объектных модулей. Я думаю, важным было именно внимание к стандартам и совместимости. Не все попытки AT&T извлечь из Unix коммерческую выгоду оказывались успешными, но стандартизация Unix стала большим подарком всему сообществу
Оглядываясь назад, можно сказать, что все эти правовые споры были побочным следствием скороспелого и почти случайного решения AT&T сделать Unix доступной для университетов. Ведь распространившись из университетов, где ее использовали бесплатно, в компании, которые готовы были за нее платить, Unix приобрела коммерческий потенциал. При этом для эффективной охраны авторских прав было уже слишком поздно. Даже после того, как AT&T наложила ограничения на исходный код, в открытом доступе оставался интерфейс системных вызовов, а члены сообщества обладали достаточным опытом, чтобы обычным делом стало создание новых версий, не обремененных лицензиями AT&T. Аналогичная ситуация сложилась с прикладным программным обеспечением, таким как компиляторы, редакторы и все прочие инструменты. Метафорически выражаясь, AT&T пыталась запереть сейф после того, как оттуда унесли все деньги
Еще Unix стала главной движущей силой развития интернета. Калифорнийский университет в Беркли разработал Berkeley Software Distribution (BSD) — расширенную версию Unix, реализованную с использованием набора протоколов интернета TCP/IP. Разработка базировалась на шестой редакции Unix, которую Bell Labs вместе с исходным кодом распространяли среди университетов и исследовательских институтов в 1975 году, что породило культуру «открытого исходного кода». Операционная система BSD Unix помогла в реализации интернета
Из-за попыток AT&T заработать на программном обеспечении лицензия на Unix включала в себя все больше ограничений. В числе прочего она ограничивала использование Unix в университетах, что открывало дорогу BSD. В то же время продолжающиеся войны между AT&T и университетом Беркли побудили других попробовать свои собственные Unix-подобные системы. Независимо создаваемые версии были свободны от коммерческих ограничений, так как использовали только интерфейс системных вызовов, а не чужой код
Как я уже говорил в предисловии, рождение Unix, которое изменило мир компьютеров, вероятно, было сингулярностью, возникшей благодаря уникальной комбинации обстоятельств. Сомневаюсь, что в области ОС мы снова увидим что-то подобное, но наверняка будут и другие случаи, когда горстка талантливых людей с хорошими идеями и благоприятной средой изменит мир своими изобретениями
Linux
Линус не ожидал для своей любительской системы замечательного будущего, так же как Кен и Деннис не предвидели успеха Unix. То, что началось с нескольких тысяч строк кода, теперь насчитывает более 20 миллионов строк
На данный момент Linux — стандартная ОС, способная работать на любом компьютере. Она установлена на миллиардах устройств (например, на всех телефонах Android). Она управляет значительной частью интернет-инфраструктуры, в том числе серверами таких гигантов, как Google, Facebook, Amazon и т. п. Она находится во многих устройствах, реализующих концепцию Интернета вещей (Internet of Things, IoT): под управлением Linux работают мой автомобиль, мой телевизор, ваши Alexa и Kindle и термостаты Nest. Рассмотрев другой конец спектра вычислительных мощностей, вы обнаружите эту ОС на 500 лучших суперкомпьютерах в мире. При этом на рынке ноутбуков и ПК она представлена слабо — они в большинстве своем работают под управлением Windows и MacOS
Интересные факты
- Все набираемое на телетайпе отправлялось на компьютер, а ответная информация печаталась (в верхнем регистре) на длинном рулоне бумаги

В 1980-х годах компания Microsoft распространяла версию Unix, которая называлась Xenix
Интересно, в каком мире мы бы сейчас жили, если бы вместо собственной операционной системы MS-DOS компания Microsoft начала продвигать Xenix и если бы поладить с AT&T было проще. По данным сообщества The Unix Heritage Society, впоследствии Xenix купила компания Santa Cruz Operation (SCO), и с середины до конца 1980-х это был наиболее распространенный вариант Unix, если брать количество машин, на которых он был установлен
Суть общего доступа к вычислительным ресурсам не в том, чтобы вводить программы не с перфокарт, а нажимая клавиши, а в том, чтобы стимулировать тесное общение