В Лейксайде школьный товарищ однажды сказал, что я читаю коды Ассемблера, как другие читают романы; не думаю, что это было очень легко. Просто я выбрал область для приложения сил. Я начал понимать, как работает компьютер, на самом фундаментальном уровне. Я залез в машинные потроха.
Ничто не вечно под луной, и настал день, когда CCC завершила тестирование PDP-10 и начала брать с нас деньги за машинное время. Поскольку средства «Клуба матерей» истощились, школа заключила контракт с CCC. К тому времени у нас были индивидуальные учетные записи (до сих пор помню их номера: у меня 366-2634, у Билла – 366-2635). CCC выставляла счета на основе сложной формулы, учитывающей время работы центрального процессора и использование диска; мы постоянно переживали, что тратим слишком много. Каждый месяц, прежде чем отправить нашим родителям счет, Фред Райт вывешивал над телетайпом список – по убыванию величины задолженности; и оставалось только молиться, чтобы твоя фамилия не оказалась в первой тройке. Я похолодел от ужаса, поставив рекорд в 78 долларов (сейчас это примерно 500). Как я это объясню? К чести папы, он воспринял известие спокойно:
– Это много, Пол. Я знаю – ты учишься, но мог бы ты сократить расходы?
Мои родители считали программирование моим очередным увлечением – вроде ламповых приемников или печатания фотографий в темной комнате, только гораздо необычнее. Родители Билла думали так же. Мы чувствовали, как истощается их терпение.
В конце весны мы с Биллом заполучили в CCC пароль администратора и вошли в систему в Лейксайде. Вскоре мы обнаружили, что искали: внутренний учетный файл компании – ACCT. SYS. Информация в нем была зашифрована, но мы знали, что там содержатся данные и платных, и бесплатных учетных записей. Мы рассчитывали найти бесплатную учетную запись и пользоваться ею; было понятно, что это нехорошо, но нам позарез требовался беспрепятственный доступ. После тщетных попыток найти специальную программу, которая могла бы читать и исправлять ACCT. SYS, мы скопировали его в свои директории, чтобы разобраться позже.
Но разбираться не пришлось. Через несколько дней нас вызвали в кабинет Фреда Райта, где, к нашему удивлению, оказался Дик Грюн и еще один работник CCC – угрюмый мужчина в темном костюме. Мы надеялись отделаться простой нотацией, ведь мы еще ничего толком не сделали. Но тут суровый мужчина заявил, что манипуляции с коммерческими учетными записями – «преступление». Мы с Биллом затрепетали. Нас исключат из школы?
Все оказалось гораздо хуже.
– Вы украли учетный файл, и мы выгоняем вас, – заявил мужчина в костюме.
Наши права в CCC были аннулированы на лето. Мы потерпели полный крах.
Когда уже казалось, что все потеряно, мой друг рассказал мне, что у одного профессора в университете бесплатная учетная запись в CCC. После окончания весеннего триместра в Лейксайде я чуть ли не каждый день ходил к терминалу на электротехническом факультете. Я продолжил программировать с того места, на котором остановился, и читал руководства, жуя гамбургеры в студенческом центре. Жизнь была прекрасна, но приходилось все лето помалкивать. Сам я уже вымахал под шесть футов, а Билл и Кент все еще выглядели учениками средней школы; я не мог рисковать, что они прискачут и сорвут мое прикрытие. Билл был в ярости, когда я в конце концов признался; мне стало не по себе. Но страсть к программированию была так сильна, что я второй раз поступил бы так же.
Осенью моего третьего года в Лейксайде, когда грехи были прощены, Стив Расселл заключил со мной сделку: в обмен на бесплатное машинное время я пытаюсь улучшить их компилятор Бейсика. По мере роста популярности языков высокого уровня компиляторы стали крайне необходимы. Компилятор – это транслятор, который переводит исходный код на языке высокого уровня в «объектные коды», двоичные биты и байты, понятные компьютеру. Как и все программное обеспечение DEC, компилятор Бейсика для PDP-10 был открыт для изменений и дополнений; можно было свободно добавлять новые функции – это и стало моим заданием. Работа была непростая – для того, кто только еще собирался записаться на первые компьютерные курсы. Полная распечатка кодов компилятора была толщиной с небольшой словарь; у меня ушло много дней, чтобы разобраться во всем и понять, как что работает. Мой ассемблерный код должен был подчиняться логике программы, и я мучительно подбирал слово за словом.
Иногда казалось, что работа мне не по зубам. Упрямство не позволяло обращаться за помощью, и я опирался на комментарии предыдущих программистов. Перед каждым озарением я целые дни сидел, совершенно ничего не понимая в исходнике.
Усталость не имеет значения в семнадцать лет, когда чем-то увлечен. Я торчал в CCC, пока глаза не начинали слипаться; дни превращались в недели, и я начал замечать некоторый прогресс. Замучившись перенабирать целые строки программы на Бейсике из-за малейшей опечатки, я воспользовался идеями строкового редактора Билла Уайера – он позволял быстро находить и вставлять нужные символы. И я фанатично комментировал каждый шаг (как предусматривал договор с нашими наставниками) для любого, кому впоследствии придется пользоваться моей работой.
Напомню, что я работал в детальном коде Ассемблера, как подмастерье часовщика, вглядывающийся в крохотные шестеренки, чтобы понять, как они взаимодействуют. К концу работы я, пожалуй, знал о компиляторе больше, чем кто-либо еще в CCC. Расселл и Грюн, кажется, удивились, что я продвинулся так далеко; особенно их порадовал мой строковый редактор – полезный бонус для покупателей. Я стал настоящим хакером. Все, чему я научился за эти два месяца, стало основой в моей работе с Ассемблером для микропроцессоров, когда ставки неимоверно выросли.
В те времена, как и сейчас, подростков часто недооценивали. Я, Билл, Рик и Кент показали, как может вырасти юноша, если дать ему шанс. До уровня наших наставников нам было еще расти и расти, но мы уже кое-что умели. И продолжали учиться.
Несмотря на наличие талантливых инженеров и первоклассную технологию разделения времени, CCC страдала от никудышной организации бизнеса. Лишь несколько человек хотели и могли разрабатывать собственное программное обеспечение, и лишь несколько программ были им подмогой. Вся система чересчур зависела от «Боинга», крупнейшего работодателя в Сиэтле, чьи менеджеры среднего звена могли позволить себе тратиться на машинное время. В 1970 году «Боинг» пережил двойной удар: спад в авиаперевозках и резкое сокращение расходов на программу NASA «Аполлон». Штаты сократили, финансирование – в том числе и на использование сторонних компьютеров – урезали. Хуже того, «Боинг» организовал собственную службу программирования. За несколько месяцев он превратился из клиента в конкурента.
В начале весны CCC рухнула, и началась процедура банкротства. Мы с Биллом, едва узнав об этом, помчались в терминальный зал – умолять, чтобы нам дали время доделать некоторые программы и все сохранить на DECtape. Не успели мы появиться, перевозчики начали забирать арендованную мебель. Мы как сумасшедшие стучали по клавишам телетайпов, а грузчики ходили из комнаты в комнату, относя столы в грузовики. В конце концов грузчики подошли к нам и сказали: