Миллиардер из Кремниевой долины. История соучредителя Microsoft - Аллен Пол. Страница 10

Глава 4

Братство

Мы с Биллом оказались самыми стойкими среди лейксайдцев в CCC. Обычно отец заезжал за мной на машине, чтобы отвезти домой пообедать. Я хотел остаться – иногда отец разрешал, иногда нет. Родителей беспокоило, что я начал отставать в школе. Стали появляться низкие отметки, и учителя, похоже, не слишком одобряли мое новое увлечение. Оценивая компьютерное программирование, мистер Маэстретти писал: «Пол добился больших успехов. Он проявляет огромный интерес к работе и достиг мастерства, далеко превосходящего… средний уровень». Но по поводу физики, по которой он поставил мне в середине года «С+» (хотя весной я вытянул «А»), он сожалел, что «все силы [мои] направлены на работу с компьютером – за счет других дисциплин».

Учитель по английскому, мистер Тайлер, огорченный моим хроническим безразличием к домашним заданиям, философски заключал: «Пол – фанатик (в старом религиозном смысле слова) и, охваченный энтузиазмом, почти не замечает ничего остального. Как объяснить ученику пагубность его подхода? Не знаю. А может быть, прав именно он, а не мы?»

На самом деле я бурно развивался в профессиональной среде, работая с тем, что мне нравилось. Чего еще желать для шестнадцатилетнего?

Предоставленные сами себе, мы с Биллом корпели над программами, пока не сводило желудок от голода; тогда мы отправлялись через дорогу в заведение под названием Morningtown Pizza. Рядом пристроился ночной магазин – перед ним парковались полицейские машины, а сами полицейские в задней комнате резались в карты. Мы жадно проглатывали пиццу прямо на месте или приносили обратно в CCC – и старались не закапать маслом телетайпы. Мы работали, пока не уходили все, кроме ночного оператора. Однажды я работал один и вовсе потерял счет времени. Автобусы перестали ходить, и было поздно звонить отцу, чтобы он забрал меня; пришлось идти домой пешком – целый час. Меня всю дорогу провожал бродячий пес; потом родители пристроили его нашим знакомым.

Для меня святым Граалем программного обеспечения была операционная система, нервная система компьютера. Она выполняет распределительную функцию, позволяя центральному процессору считать: переключаться от программы к программе; сохранять информацию в файлах; передавать данные на модемы, внешние диски и принтеры. О ней не думаешь, пока не возникнет ошибка и система не рухнет.

В те времена операционные системы не были черными ящиками, как сегодня. Производители поставляли вместе программное и аппаратное обеспечение; любая компания, приобретая компьютеры DEC, могла модифицировать TOPS-10, как считала нужным. Мы с Биллом знали, что наши наставники приобрели исходные коды TOPS-10 и работают над ее улучшением. Мы знали и то, что нам эта задача не по плечу, – и поэтому она манила нас в десять раз сильнее, чем все, над чем мы трудились. По выходным, оставшись вдвоем, мы с Биллом отправлялись копаться в мусорных контейнерах на заднем дворе. Мы открывали металлическую крышку бака, я сцеплял пальцы, чтобы подсадить Билла, – он весил не больше ста десяти фунтов. Билл свешивался в контейнер и тащил все, что казалось привлекательным. После нескольких попыток мы нашли настоящее сокровище: пачку заляпанных и смятых распечаток. Я помню запах кофейных пятен и помню, что подумал: «Не слишком аппетитно, но мне плевать».

Мы отнесли наш клад в терминальный зал и изучали его часами. У меня не было никакого Розеттского камня, и понимал я в лучшем случае пару строк из десяти, но все равно восхищался элегантностью компактного кода. Я знал: чтобы понять архитектуру такой операционной системы, как TOPS-10, необходимо освоить Ассемблер – язык низкого уровня, который обращается непосредственно к машине. Заметив мой интерес, Стив Расселл отозвал меня в сторону, протянул руководство по Ассемблеру в обложке из блестящего пластика и сказал:

– Тебе нужно это прочесть.

В нашем мире с его принципом «сделай сам» можно было больше ничего не говорить.

Дрожа от возбуждения, я отнес книгу домой и штудировал ее, пока не выучил вдоль и поперек. Спустя неделю и 150 страниц я уперся в стену; руководство описывало, как писать команды, но никак не поясняло, что они делают с компьютером. Я снова пришел к Расселлу и сказал:

– Я не понимаю.

Расселл (с озорным блеском в глазах) ответил:

– Ага, тебе стоит прочесть вот это, – и протянул мне еще 150 страниц в пластиковой обложке: справочник по системе.

Я с трудом одолел текст и понял, что чего-то по-прежнему не хватает. Ужасно не хотелось беспокоить Расселла, но я снова пошел к нему и сказал:

– Я все равно не понимаю. Как можно послать символы на телетайп?

Расселл ответил:

– Ну да, тебе нужно еще кое-что.

Он вынес что-то, что показалось мне телефонным справочником: это было руководство по операционной системе. Я до сих пор не могу решить: кормил меня Расселл с ложечки или морочил голову; мне нужны были все три справочника. Мне потребовалось еще несколько недель, чтобы начать делать первые шаги в Ассемблере, – и месяцы, чтобы обрести уверенность.

– Это просто фантастика, – сказал я Биллу и остальным.

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

В отличие от Бейсика или Фортрана, где в каждой команде объединяется несколько инструкций, Ассемблер – прямое, точное представление двоичного машинного кода, превращенное в текст и символы, которые легче запомнить, чем последовательности нулей и единиц. Например, строчка на Бейсике выглядит так:

А = В + С

На Ассемблере та же самая команда пишется так:

Load <i><b>B.</b></i>

Add <i><b>C.</b></i>

Store in<i><b> A.</b></i>

(Загрузить В. Прибавить С. Сохранить результат в А.)

Ассемблер был менее выразительным и гораздо более трудоемким, чем Бейсик. И если программы, написанные на языках высокого уровня, можно исполнять на разных процессорах почти без изменений (это похоже на близкие диалекты), для каждой аппаратной платформы был свой Ассемблер – и они отличались друг от друга, как немецкий и португальский. С другой стороны, загруженный в машину код Ассемблера исполнялся в сотни раз быстрее. Вы обращались прямо к аппаратному обеспечению, непосредственно к «железу». Быстрее просто некуда.

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

Ничто не вечно под луной, и настал день, когда CCC завершила тестирование PDP-10 и начала брать с нас деньги за машинное время. Поскольку средства «Клуба матерей» истощились, школа заключила контракт с CCC. К тому времени у нас были индивидуальные учетные записи (до сих пор помню их номера: у меня 366-2634, у Билла – 366-2635). CCC выставляла счета на основе сложной формулы, учитывающей время работы центрального процессора и использование диска; мы постоянно переживали, что тратим слишком много. Каждый месяц, прежде чем отправить нашим родителям счет, Фред Райт вывешивал над телетайпом список – по убыванию величины задолженности; и оставалось только молиться, чтобы твоя фамилия не оказалась в первой тройке. Я похолодел от ужаса, поставив рекорд в 78 долларов (сейчас это примерно 500). Как я это объясню? К чести папы, он воспринял известие спокойно:

– Это много, Пол. Я знаю – ты учишься, но мог бы ты сократить расходы?

Мои родители считали программирование моим очередным увлечением – вроде ламповых приемников или печатания фотографий в темной комнате, только гораздо необычнее. Родители Билла думали так же. Мы чувствовали, как истощается их терпение.