Читать книгу Миллиардер из Кремниевой долины. История соучредителя Microsoft - Пол Аллен - Страница 7
Глава 5
Ваззу
ОглавлениеКонечно, было приятно оказаться вольной птицей Университета штата Вашингтон (мы называли его Ваззу), в трех сотнях миль от дома, но жизнь в колледже не оправдала моих ожиданий. Первые занятия не слишком впечатляли. Я скучал по семье, по своей девушке и тяготился кипением жизни вокруг. Некоторые расцветают, оказавшись впервые на свободе. Я не из таких.
Скучал я и по PDP-10. Сначала я проводил ночи, набивая программы на перфокартах для большого компьютера IBM. «Работать на IBM – совсем другое, но, в конце концов, не так уж плохо», – писал я в ноябре Рику Уэйланду, стараясь сделать хорошую мину при плохой игре. Новые компьютеры всегда меня интриговали – даже чудные, медленные и неповоротливые. Я читал и пытался придумать, как улучшить обычное программирование для IBM. Дело продвигалось медленно.
Куда более приятным оказалось то, что мой круг общения стал шире – особенно в «Фи Каппа Тета». Небольшой корпус аутсайдеров, самый последний в ряду, примостился на склоне – таком крутом, что траву на нем приходилось стричь двоим: один толкал косилку, а другой держал канат, чтобы косилка не съехала с холма. Чуть ли не к самому зданию примыкала железнодорожная сортировочная станция, где в три утра формировали составы. Первые две недели мне не удавалось уснуть, но впоследствии я мог спать в любых условиях.
Все же место мне нравилось. Все эти хиппи, неформалы, кадеты-резервисты – мне было интересно наблюдать за ними. Там были Майк Флуд, президент студенческого братства и едкий шутник, который назначил меня мыть посуду; Гэри Джонсон, который экономил на плате за комнату, потому что жил с двумя собаками в грузовичке; Саймон Карроум – «Большой Сириец» – добрый малый, чей английский был окончательно испорчен за лето работы в портлендских доках. Нам приходилось исправлять его контрольные и вычеркивать матерные слова – других он почти не знал.
Я был «компьютерщик» и с радостью помогал отладить заданную на дом программу; мне достаточно было взглянуть на код Фортрана, чтобы понять, где ошибка. Еще я часами бросал мяч в корзину на задворках здания – мой знаменитый бросок «матадора» мало кто мог повторить; и играл центра в команде по флаг-футболу. Наш квотербек, Джерри Морс, играл прежде за дубль «Нью-Йорк янки» и обладал пушечным броском. Я не блистал высокой скоростью, так что Джерри говорил мне: «Десять ярдов и обернись». Если Саймон и Майк были прикрыты, Джерри выпуливал мяч прямо мне в грудь. Я редко ронял мяч.
Возвратившись от компьютера в комнату в час или два ночи, я оттягивался со своей электрогитарой – эта привычка раздражала многих моих собратьев. Майк Флуд просил меня прекратить, и я после пары заключительных аккордов откладывал гитару. Но однажды ночью здоровяк по имени Джордж Ши в ярости ворвался в комнату и, подняв меня в воздух за шкирку, прижал к стене. Я глядел на Джорджа, на его сжатый кулак, не в состоянии представить ожидающей меня расправы. В нашей семье не принято было даже демонстрировать гнев, и я не знал, что такое, когда тебя бьют.
– Отпусти его.
Это сказал Майк Хасперт (мы вместе играли на гитарах), встав в позу каратиста. Поговаривали, что у Майка был черный пояс. Джордж прикинул шансы, с отвращением поставил меня на пол и потопал прочь.
Обычный день в «Фи Каппа Тета» проходил гораздо спокойнее: нескончаемые карты и шахматы, «Стартрек» в подвальной телевизионной комнате, «Пицца Шак» и «Тако Тайм». Ездили до границы штата Айдахо – там официально спиртное продавали с 19 лет и было дешевое пиво. По субботам я ходил со всей толпой смотреть, как местных «Кугуаров» порвут южнокалифорнийские «Троянцы». Я не ведал забот, пока мне не выпал номер 99 в «призывной лотерее» 1972 года – этот номер мог послать меня во Вьетнам. Война тогда уже казалась мрачной, гибнуть на ней не хотелось. Но если бы меня призвали, я пошел бы служить, как мой отец во время Второй мировой.
Как выяснилось, мой призыв отложили до окончания студенческой отсрочки.
28 мая 1972 года мой друг по Лейксайду, Кент Эванс, с другими альпинистами пересекал снежное поле на горе Шуксан и поскользнулся. Он шел без страховки и, не сумев затормозить, пролетел по склону больше шестисот футов, ударившись несколько раз о скалы. Вертолет ВМС эвакуировал Кента, но он умер по дороге в больницу. Ему было 17.
Эта смерть потрясла Билла, он был раздавлен. Через несколько дней после похорон родители Кента позвали нас посмотреть, не пригодятся ли нам его компьютерные документы – несколько руководств, ничего важного. Мы были благодарны родителям Кента, но чувствовали себя странно, роясь в его вещах. Мы не стали задерживаться надолго.
По контракту со школой Билл за летние каникулы должен был написать на Фортране программу, составляющую расписание.
– Я собирался делать ее с Кентом, – сказал Билл мне. – Одному мне будет трудно. Поработаешь со мной над программой?
Хотя денег обещали не много, я с радостью согласился и вернулся к старой доброй PDP-10. Билл оставался в подавленном состоянии неделями, но приходил в себя по мере того, как мы втягивались в проект – с полной самоотдачей, как когда-то в Макаллистер-холле. Часто мы засиживались за полночь и спали на раскладушках, которые привезли в кампус. Программа оказалась сложной, требовалось учитывать много разных переменных: обязательные курсы, секции, факультативы, сдвоенные уроки для лабораторных работ. Меня восхищало, как четко Билл разбивал работу на составляющие, а еще больше – как он «загрузил» самого себя в группу по английскому: он, десяток девчонок и больше ни одного парня.
Мы с Биллом сблизились в то лето. Разница в возрасте перестала иметь значение; между нами установилось, как я это называю, высокоскоростное соединение. Погружаясь в проблему, мы начинали выщелкивать идеи «в режиме стека» (на компьютерном жаргоне это режим выполнения подпрограмм центральным процессором по принципу «последний пришел – первый ушел»). В наших разговорах эта фраза означала, что мы перескакивали от одной темы к предыдущей, не обращая внимания на последующий контекст. Слушая нас со стороны, понять что-то было невозможно:
– Тогда можно перенести эту строку сюда…
– Верно, если значение – «истина», вторая не выполняется…
– Точно! Мы же в прошлый раз использовали эту переменную.
Много общего было и в том, как мы воспринимали абсурд. Однажды, после и без того почти бессонных ночей, мы несколько часов отлаживали какой-то кусок программы – и не могли поймать ошибку. Билл молча уставился на загадочную страницу и вдруг воскликнул:
– Икс! – и залился беспомощным хохотом.
Я взглянул на страницу и понял, что имел в виду Билл: прямо посреди строки болталась бессмысленная переменная.
– Икс! – заорал я.
Теперь уж мы оба принялись кататься по полу в пустом здании, истерически выкрикивая «икс!».
Чтобы отдохнуть, мы ходили в кино; вдвоем мы за все годы посмотрели, наверное, больше полутысячи фильмов. Моим любимым кинотеатром был «Кокусай» в международном районе Сиэтла. Там за сеанс показывали два фильма с английскими субтитрами; второй фильм был обязательно про самураев. Билл не особо жаловал все иностранное, но как-то вечером согласился посмотреть кино: «Если только не очередную тупость про маленькую собачку…». Едва мы уселись в кресла, чтобы посмотреть драму из современной японской жизни, по экрану промчался тявкающий терьер.
– Опять собачка… – громко застонал Билл.
Мы замечательно проводили лето, но ни на минуту не переставали думать, чем будем заниматься дальше. Билл получил работу по обработке информации от компании, изучавшей транспортные потоки: подсчитывалось, сколько раз колеса автомобилей нажимают на резиновые трубы, реагирующие на давление. На специальной шестнадцатидорожечной перфоленте автомат набивал с интервалом в 15 минут набор отверстий, обозначающих количество автомобилей. Приходилось считывать перфоленту вручную, затем записывать результат обычными цифрами и переносить на перфокарты. Работа была нудная, неэффективная и убийственная для глаз; Билл поручил ее младшеклассникам в Лейксайде и платил им по 15 центов за ленту, чтобы они изображали живые считывающие устройства. Однажды Билл сказал:
– Детишки ослепнут, разбирая эту ерунду. Надо как-то автоматизировать.
Я сказал, что можно попробовать использовать новый мини-компьютер. Последние модели Texas Instruments были особенно компактными, и цена ограничивалась четырехзначной суммой – но все же неподъемной для нас. Тогда у меня появилась другая идея: как насчет нового восьмибитного процессора Intel – 8008-го? Судя по тому, что я читал, чип мог управлять калькуляторами, лифтами, даже маленькими терминалами. С весны, когда он впервые появился, его почти не пытались применить для анализа данных. Но если он работал в соответствии со спецификациями, 8008-й – то, что нам нужно.
– Мы можем сами построить систему на этом чипе – так дешевле всего, – добавил я.
Биллу понравилось предложение, и я указал на слабое место:
– Нужно найти кого-то, кто построит машину.
Мы не были сильны в аппаратном обеспечении, и нам нужен был третий партнер.
Наш общий знакомый рассказал про Пола Гилберта, студента университета по электротехнике; мы разыскали его в конце лета. Мы несколько раз встретились, и Пол построил рабочую схему машины – мы назвали ее (и наше партнерство) Traf-O-Data (много позже я спросил Билла, откуда он взял такое название; он ответил, что от «jack-o’-lantern» – фонаря-тыквы. Мне это показалось странным). Чувствуя себя предпринимателями, мы мечтали о том, как к нам потекут денежные реки. Ведь, имея на руках наши удобные таблицы данных о дорожном движении, муниципалитеты смогут решить, где устанавливать светофоры, а где в первую очередь ремонтировать дороги. Разве не пожелают департаменты общественных работ во всем мире приобрести машину Traf-O-Data?
Пол Гилберт как-то добился университетской скидки, и мы заказали 8008-й в местном магазине электроники. Мы с Биллом наскребли 360 долларов и поехали за чипом. Продавец протянул нам картонную коробочку, которую мы немедленно открыли – и впервые в жизни увидели микропроцессор. Завернутый в алюминиевую фольгу, вдавленный в маленькую пластину из черной резины, внутри покоился тонкий прямоугольник длиной в дюйм. Для двух парней, чья юность прошла среди громадных компьютеров, это было чудо.
– Кучу денег за такую фитюльку, – сказал Билл.
Но я понимал, о чем он думает: в этой коробочке умещается мозг целого компьютера. Мы отвезли чип Полу Гилберту на кафедру физики, и он принялся за работу.
Создавая программы для Traf-O-Data, мы столкнулись с проблемой. Мы знали, что будет мучительно и даже бессмысленно писать программы на самом 8008-м. Нужно было на пустом месте создавать средства разработки, включая адаптированный Ассемблер, программу, которая будет переводить команды Ассемблера в реальные байты. Хотя 8008-й мог адресовать 16 килобайт памяти, мы могли использовать на платах памяти только четверть этого объема – совершенно недостаточно для разработки.
Как же программировать такой ограниченный микропроцессор на еще не существующей машине? Для меня ответ был очевиден: нужно имитировать окружение 8008-го на большой машине. Описание симуляторов впервые появилось в литературе в середине 1960-х, когда инженер Дари Мосс разработал способ, позволяющий компьютеру IBM 360 «эмулировать» предыдущие модели компьютеров и выполнять программы, написанные для них. Работа Мосса продемонстрировала техническую идею, в теории сформулированную еще Аланом Тьюрингом в 1930-х: любой компьютер можно запрограммировать так, чтобы он вел себя как другой компьютер. Программа подчиняла «железо». Хотя мне не приходилось читать, чтобы кто-нибудь симулировал микропроцессор, я понял, что это будет несложно – просто нужно заставить большой компьютер действовать как маленький. При этом мы можем использовать громадную память мейнфрейма и развитые средства разработки.
Мы и представить не могли, сколько трудностей нас ждет. В университетской лаборатории Пол Гилберт конструировал жутко запутанный прототип: больше тысячи медных проводов вились вокруг десятков золоченых клемм на двух монтажных платах. Дизайн и разводка машины постепенно вырисовывались, но Полу потребовался год, чтобы заставить работать капризные чипы памяти. Все это время я, вернувшись в штат Вашингтон, бился над симуляцией на IBM 360. Отладка на компьютере «пакетной обработки» – буквально сизифов труд: два шага вперед – полтора назад.
В ту зиму Билл выбрался ко мне в Пуллман во время жуткого похолодания; мы пешком прошли две мили до университетского компьютерного центра; термометр на здании банка застыл на минус тринадцати. Воздух так обжигал, что говорить было больно. Когда добрались до цели, моя борода покрылась льдом. Билл, дрожа, спросил:
– В Пуллмане что – всегда так холодно?
Больше зимой он не приезжал.
На Рождество Биллу позвонил Бад Пемброк – тот, что нанимал нас делать расчетную программу для Information Services Inc. Затевался большой программный проект для Бонневильского энергетического управления, и Бад прочесывал местность в поисках программистов, понимающих в PDP-10. Мне еще не исполнилось 20, а Биллу было всего 17, но возраст не имел значения.
– И будете получать оклад, – добавил Бад.
– Сколько? – поинтересовался Билл.
– Сто шестьдесят пять долларов в неделю.
Четыре доллара в час – крохи для опытного программиста даже по тем временам, но мы с Биллом не верили своему счастью. Появилась возможность снова работать вместе на PDP-10, да еще и за деньги! Я был рад отдохнуть от штата Вашингтон. Билл закончил обязательные курсы в Лейксайде и получил разрешение работать над проектом последнего триместра вне стен школы. Мы ответили Баду, что участвуем.
Мы с Биллом влезли в его «Мустанг» 1967 года с откидывающимся верхом и поехали на юг – в Ванкувер, штат Вашингтон, край длинных торговых рядов, автомоек и автозакусочной A&W Root Beer, где мы стали завсегдатаями. Мы недорого сняли квартиру с двумя спальнями и пошли на работу в понедельник, в январе 1973 года. Нашим работодателем был TRW – большой аэрокосмический концерн, который по контракту с Министерством внутренних дел создавал оперативно-диспетчерскую систему реального времени – RODS, первую в стране, как нам объяснили. Уже существовала программа, управляющая генераторами Бонневильской ГЭС на реке Колумбия, снабжавшей электроэнергией восемь западных штатов. Задачей системы RODS было обновлять информацию ежесекундно и более рационально реагировать на изменения потребности в энергии.
Руководство TRW предполагало, что нескольким программистам хватит двух лет на завершение работы; они сильно ошибались. Превратить DEC-овскую систему TOPS-10 в систему реального времени – все равно что превратить яблоко в апельсин; вдобавок – в новый сорт апельсина. Работа над проектом шла уже дольше года, штрафы за затяжку росли, а новая программа TRW все еще была полна ошибок. Оказавшись на грани кризиса, руководство было готово набирать любых соображающих программистов, чтобы заставить RODS работать. Когда появились мы, там трудились круглосуточно уже больше сорока человек.
Бункер управления станцией находился через реку от Портланда, и большая часть его скрывалась под землей. Там даже была душевая – смывать радиоактивную пыль, на случай если кто-нибудь нажмет кнопку. Мы с Биллом спустились на лифте – куда-то в бесконечные глубины под армированным бетоном. Пройдя несколько дверей – каждая с кодовым замком, – мы очутились в компьютерном зале с фальшполом и кондиционированием; здесь нам предстояло тестировать и отлаживать наши программы. Я с восторгом увидел рядом с собой двойные PDP-10; никогда еще мне не приходилось работать так близко от компьютера.
Дальше по коридору располагался зал управления – размером с четыре баскетбольных поля. Громадная, подсвеченная сзади схема занимала две стены (сразу вспомнился фильм «Доктор Стрейнджлав»); на ней отображалось состояние каждой плотины на Северо-Западе. В случае любой неисправности соответствующая лампочка меняла цвет с зеленого на красный. В Бонневиле операторы работали на консолях с цветными дисплеями и колоссальными клавиатурами; они могли вызвать на экран изображение любой подстанции. Приборы показывали мощность станций в мегаваттах, что меня просто потрясло.
Программисты составляли дружный, хоть и пестрый коллектив – от классических корпоративных служащих в белых рубашках с коротким рукавом и галстуках-«бабочках» до разгильдяйского вида Боба Барнетта, ветерана Вьетнама, который все растолковывал нам с видом чокнутого профессора. Билл получал маленькие задания, а мне сразу дали крупное поручение – разработать восстанавливающий модуль, чтобы сделать новую автоматическую систему безотказной (когда речь идет о производстве энергии для миллионов потребителей, остановка станции – не вариант). Если первичная PDP-10 даст сбой, моя система должна скомандовать резервному компьютеру взять управление.
Стараясь обезопасить себя от случайностей, TRW проводила всевозможные экстремальные испытания – например, проверялось, как повлияет серьезное короткое замыкание на компьютеры под землей. Присоединив стальной кабель сечением в четверть дюйма к линии 250 киловольт и к вкопанному в землю столбу, мы пошли смотреть, кто повернет рубильник. Внезапный жуткий треск заставил нас подпрыгнуть. Кабель превратился в полоску испарившейся стали и исчез. Компьютеры, к счастью, продолжали работать.
– Ух ты, – воскликнул я. – Вот это да!
На что менеджер TRW заметил:
– Нет, «ух ты» было, когда Джо забыл опустить люльку на ремонтной машине и въехал в линию электропередачи.
– И что с ним?
– Искры – дождем, шины в землю вплавились, – рассказал менеджер. – А Джо просто очумел. Но с ним все в порядке – грузовик сработал как клетка Фарадея.
(В 1830-е годы британский физик Майкл Фарадей показал, что электрический ток, протекая по поверхности проводящей структуры, не оказывает влияния на внутреннюю область.)
Ребята из TRW захохотали, а я подумал: «Господи, вот это уже серьезное электричество!»
Бок о бок с чудными работниками, в лишенных солнечного света подвалах, я порою чувствовал, что попал в очень странное место.
Мы с Биллом были младшими в группе и, естественно, получали меньше всех, но Боб и остальные начальники не давали нам ни малейшей поблажки. Работая над RODS, мы убедились, что не уступаем лучшим местным программистам. Мне пришлось написать тысячу строк на Ассемблере – не слишком тяжелая работа, но достаточно хитрая. Два других программиста пытались меня обойти, однако их программа не справлялась с «критическими случаями» вроде одновременного отказа двух и более устройств. Я с самого начала писал структурированно и с полными комментариями, как привык в CCC. Я долгие часы проводил, проверяя написанное, – в программе не должно было быть ошибок. Впервые в жизни я писал прямо на работающей операционной системе. И мне очень понравилось.
Мы с Биллом, свободные от школы и от требований семьи, радостно ныряли в программирование и тестирование – циклы проверки занимали по 12 часов и больше. Мы оба от природы были «совами» – работоспособность достигала пика в десять-одиннадцать вечера и оставалась на уровне еще долго. Когда требовалось найти последнюю ошибку, мы не обращали внимания на время. Если Билл чувствовал, что слабеет, он хватал банку растворимого напитка «Танг», сыпал немного порошка на ладонь и слизывал, получая чистый сахарный кайф (в то лето его ладонь приобрела устойчивый оранжевый оттенок). Мы могли проработать двое суток кряду, а потом рухнуть часиков на восемнадцать – двадцать. Билл называл это «успаться».
Но сон был не главным. Необходимо было закончить работу для Лейксайда к началу семестра, и ночная смена в RODS казалась нам идеальным решением. Программа школьного расписания сильно нагружала центральный процессор, и порой Боб Барнетт, зайдя вечерком, обнаруживал, что PDP-10 ползает со скоростью улитки. Он топал ногами и кричал, изображая негодование:
– Гейтс и Аллен, вы где прячетесь? Немедленно выключите свое расписание!
Если я не писал программы, я играл на акустической гитаре дома или слушал последние новости по поводу Уотергейта. Вечерние и ночные развлечения в Ванкувере сводились в основном к «классическому завтраку» у Дэнни, нашей главной еде в три утра: яйца, бекон, блин, картофельные оладьи. Чтобы добавить острых ощущений, Билл ездил с Бобом на собачьи бега в Грешеме; они выбирали, на кого ставить, по номерам машин на стоянке. Я несколько раз съездил в Портланд Мидоуз – Боб от надежных людей слышал о жеребце Ред Робби, совершенно безнадежном на дистанции в четверть мили. Однажды его выставили на длинную дистанцию, и Боб уговорил нас рискнуть нашими кровными. Ред Робби, как всегда, неспешно трусил последним, затем, к середине дистанции, набрал ход и пришел первым. Мы сорвали солидный куш.
Мы с Биллом постоянно ходили в кинотеатр на северо-востоке Портленда на фильмы «про черных». Мы с восторгом смотрели «Суперфлай» и подобные, пока однажды кто-то не подкатил к нам во время заключительных титров:
– А чего тут делают белые парни?
Нас выкинули, но через неделю мы вернулись. Эти фильмы казались нам захватывающими.
Живя в одной квартире с Биллом, я открыл в нем нечто новое. Моя мама по-своему называла адреналиновых наркоманов, людей, любящих риск ради риска.
– Это человек, – говорила она, – ходящий по краю.
Билл Гейтс ходил по краю. Он гордился, что как-то ночью на своем «Мустанге» сделал сто шестьдесят миль от Сиэтла до Ванкувера меньше чем за два часа, вдавив педаль в пол. Я сторонился физической опасности, а Билл, казалось, наслаждался ею. Однажды он появился на пороге с загипсованной ногой. Я спросил, что случилось.
– Катались на водных лыжах с Барнеттом, – ответил Билл.
Они с обеда поехали на озеро Лакамас. По словам Барнетта, он сделал последний круг и собрался возвращаться в RODS, но Билл решил проехать еще раз – на одной лыже. Второпях он и не подумал подогнать оборудование – а это важно, если желаешь прыгать на волнах от катера. Билл упал и сломал ногу; врачи сказали, что ему придется на шесть недель отправиться в Сиэтл лечиться. Билл объявился в Ванкувере – с синей ногой, но без гипса, – через три.
– Я поеду кататься на водных лыжах с Бобом, – заявил он.
Отговорить его мне не удалось. Нога каким-то образом осталась цела.
В основном мы жили довольно дружно, но иногда Билл раздражался, особенно за шахматной доской. Я играл более системно и пользовался строгими дебютами; Билл агрессивно импровизировал. Как-то, проиграв, он от злости смахнул фигуры на пол и закричал:
– Это был самый идиотский ход в моей жизни!
После нескольких подобных случаев мы вовсе перестали играть.
Определившись с подходом, я мог настрочить код для системы управления достаточно быстро. Слабым звеном оказался глючный модуль связи, который не позволял протестировать мою программу в реальном времени, пока я не вернулся осенью в штат Вашингтон (RODS официально запустят лишь через год с лишним, в декабре 1974-го, после бесчисленных штрафов со стороны TRW). До моего отъезда я успел получить одобрительный отзыв от Джона Нортона, легендарного системного программиста, объявившегося однажды с инспекцией. Нортон мог взять пачку распечаток в дюйм толщиной, проглотить все за день и отложить в сторону. После этого, стоило обратиться к нему с вопросом, он прикрывал глаза и говорил:
– Посмотри 57-ю страницу, там нужная подпрограмма.
Когда моя работа выдержала его проверку, я был счастлив.
В свободное время я продолжал работать с симулятором Traf-O-Data. Центральный процессор PDP-10 весил почти тонну, но для моей программы он должен был действовать как чип размером с полпачки жвачки. Для начала мне нужно было определить набор примерно из трех десятков «макросов» – словесных команд, которые должны генерировать управляющие байты для процессора Intel 8008. За несколько дней я провел успешную «пересадку мозгов». Ассемблер PDP-10 не догадывался, что стал теперь Ассемблером для 8008-го.
Следующим шагом было создание собственно симулятора – программы, которая заставит работать «пересаженные мозги». Симулятор, написанный на Ассемблере для PDP-10, будет имитировать команды микрочипа. Программирование шло гладко; словно все, что я усвоил в CCC и Information Services Inc., вело меня к этой точке. К счастью, я мог завершить мое недельное задание от Боба Барнетта за двадцать часов и переключиться на Traf-O-Data. После недели упорных трудов все было готово.
Оставался третий, последний шаг – модифицировать отладчик PDP-10, чтобы Билл мог остановить программу на середине и проследить источник ошибки. Отладчик представлял собой неуклюжий участок кода, полный ловушек и тупиков, но через три недели у нас на руках было несравненное средство разработки для 8008-го чипа (мой метод оказался настолько эффективным, что Microsoft использовала его и в 1980-е годы – до тех пор, пока микропроцессоры не стали достаточно быстрыми и мощными, чтобы поддерживать собственные средства разработки). Незадолго до начала учебного года Билл завершил программу анализа дорожного движения. Мы тестировали ее на PDP-10 с выдуманными данными; симулятор распечатал впечатляющую диаграмму. Осталось только посмотреть, заработает ли программа Билла на железе Пола Гилберта Traf-O-Data.
Наши мечты ширились; Билл заговорил об организации настоящей компании. У меня были похожие фантазии, но меня больше тянуло к технологии. Я понимал, что недорогие компьютеры изменят будущее. Но что мы можем сделать нового и иного? Куда все движется? Как-то Рита приехала в Ванкувер, и я повел ее на трансляционную башню TRW; я рассказывал про возможности передачи информации, о том, как их можно использовать. Скоро, сказал я, появится высокоскоростная связь между людьми во всем мире.
В другой раз, когда мы с Биллом обедали в местной пиццерии, я подумал вслух:
– А что, если бы можно было читать новости с компьютерного терминала, а не в газете? Можно ведь даже запрограммировать его искать те статьи, которые нужны. Правда, здорово?
– Брось, Пол, – ответил Билл. – Аренда телетайпа стоит семьдесят пять долларов в месяц, а газету доставят за пятнадцать центов. Как тут можно конкурировать?
Здесь он меня поймал. Но я уже не мог перестать думать о времени, когда каждый получит цифровую связь – и мгновенный доступ к информации и услугам. Пройдут годы, прежде чем мы с Биллом сформулируем нашу цель в таких словах: «Компьютер на каждом столе в каждом доме». Однако семена этого девиза – и мое представление о глобальной сети, объединяющей все компьютеры, – были посеяны тем летом среди длинных торговых рядов и фастфудов в Ванкувере, штат Вашингтон.
Работа над RODS была в разгаре, когда Билл, позвонив домой, узнал, что его приняли в Гарвардский университет. Билл не удивился; он метил высоко еще с тех пор, как получил почти наивысшие баллы на Путнамской олимпиаде по математике, где мерялся силами со студентами колледжей всей страны. Я попытался дать мудрый совет:
– Смотри, Билл, когда попадешь в Гарвард, там будут и люди, которые гораздо сильнее тебя в математике.
– Вряд ли, – ответил он. – Это вряд ли.
– Поживем – увидим, – заключил я.
Я знал математику неплохо, Билл – блестяще; но я судил по опыту Ваззу. Однажды я смотрел, как профессор покрывает доску узорами дифференциальных уравнений в частных производных – с равным успехом это могли быть древнеегипетские иероглифы. В такие моменты осознаешь: «Это мне не по плечу». Было немного грустно, однако я признал свои границы. Мне хватало того, что я универсал.
С Биллом было иначе. Когда я снова увидел его после рождественских праздников, он выглядел подавленным. Я поинтересовался, как прошел первый семестр, и Билл угрюмо ответил:
– Мой профессор по математике получил степень в 16 лет.
Курс содержал сплошную теорию, и домашняя работа отнимала до тридцати часов в неделю. Билл лез из кожи вон – и получил только хорошо. В высшей математике он был, пожалуй, один на сто тысяч студентов или больше. Но кто-то был один на миллион или даже на десять миллионов, и кто-то из них оказался в Гарварде. Билл уже не чувствовал себя самым умным, и, думаю, это повлияло на его выбор. В конце концов, он бросил все силы на прикладную математику.
Впрочем, тогда у нас были амбиции и помимо учебы. В декабре мы с Биллом обновили наши резюме. В свои неполные двадцать лет я указывал на «опыт работы» с десятком компьютеров, знание десяти языков высокого уровня, девяти – низкого и трех операционных систем. В качестве желаемой должности я указал «системный программист», оклад – «по договоренности», хотя в скобках добавил «15 000 долларов». Место работы: «Где угодно». Я указал, что буду доступен с 1 июня 1974 года, – значит, я готов был снова при хорошей возможности бросить университет. Думаю, я знал, чего хочу; мне не хватало только четкого плана.
Относительно нашей работы над Traf-O-Data мое резюме гласило: «Разработка и сборка системы для дорожных служб для изучения транспортных потоков. Система построена на микрокомпьютере MCS-8008 фирмы Intel. Программное и аппаратное обеспечение полностью протестированы с помощью прототипа. Демонстрации для покупателей запланированы на май 1974-го».
Заключение было оптимистичным. На самом деле Полу Гилберту удалось справиться с чувствительными чипами памяти. И машина Traf-O-Data действительно выглядела настоящей (мы сумели добиться этого, потратив всего 1500 долларов); Пол сделал ее по образцу популярного мини-компьютера PDP-8, с тем же расположением переключателей и светодиодов (внутренности – мешанина клемм и проводов – другая история). Мы привезли телетайп через перевал Сноквалми в кузове пикапа (машину нам дал брат одного из членов «Фи Каппа»); я прикрепил аппарат к рукомойнику на нашей кухне в Пуллмане. Потом я с помощью переключателей на передней панели загрузил маленькую тестовую программу – она успешно отработала. Но мы еще не были уверены, что программа Билла по анализу дорожного движения у нас пойдет, – нам не удалось найти устройство для чтения громадных шестнадцатидорожечных перфолент.
В отчаянии мы обратились к местному изобретателю, который создал хитрый аппарат, читающий отверстия перфоленты с помощью прижимного ролика из токопроводящей резины. Ролик приходилось постоянно придерживать, ленту все время перекашивало, но лучшего у нас не было. На демонстрации в мае в Техническом департаменте Сиэтла и округа Кинг считыватель не сработал – полный провал. Билл наконец сломался и потратил серьезные деньги на более надежный считыватель от Enviro-Labs.
«Traf-O-Data все-таки заработала!» – написал я Рику Уэйланду в августе 1974 года.
Тратя по два доллара в день на сбор данных, мы нашли трех клиентов: два маленьких округа недалеко от Сиэтла и район в Британской Колумбии. Они отправляли по почте ленты с записями домой Полу Гилберту, и он строил графики потока транспорта по часам. Но стоило нам начать раскручиваться, многие штаты, в том числе и Вашингтон, стали предлагать те же услуги муниципалитетам бесплатно. Мы не собирались сдаваться запросто и даже пытались (безуспешно) продать наш продукт в Южную Америку. Судя по налоговым декларациям за шесть лет – с 1974-го до 1980-го, – Traf-O-Data принесла 6631 доллар валового дохода при чистых потерях в 3494 доллара. В 1982 году я закрыл наш текущий счет и получил на руки 794 доллара 31 цент. К тому времени все наши были мысли заняты созданием новой компании в Сиэтле.
Сейчас можно сказать, что Traf-O-Data создавалась на хорошей идее, но по никудышной бизнес-модели. Мы не провели исследования рынка. Не подумали, как сложно будет добиться капиталовложений от муниципалитетов, как неохотно чиновники будут покупать машины у студентов. Для Билла неудача с Traf-O-Data стала еще одной сказкой с моралью. Самое главное – мы усвоили, как сложно конкурировать с «бесплатным» (Билл запомнил урок на всю жизнь: годы спустя его «заклинило» на Linux – свободно распространяемой операционной системе).
Но были и положительные моменты. Traf-O-Data укрепила мою уверенность в том, что вскоре микропроцессоры начнут выполнять те же программы, что и большие компьютеры – мейнфреймы, только за меньшие деньги. Забегая вперед, добавлю, что мои средства разработки для 8008-го дали нам бесценный фундамент для работы с чипами следующего поколения. В 2002 году я купил у Пола Гилберта единственную машину Traf-O-Data и установил ее в нашем зале «Начало» в Музее естественной истории и науки в Альбукерке. Мне хотелось оказать честь бестолковой железяке, сыгравшей решающую роль в программной революции для микропроцессоров.
По своему опыту могу сказать, что каждое поражение содержит семена будущего успеха – если готов извлечь урок. Нам с Биллом пришлось признать, что наше будущее – не в аппаратном обеспечении или перфолентах. Нужно было найти что-то другое.