BASIC для Altair

We use cookies. Read the Privacy and Cookie Policy

BASIC для Altair

Гейтс и Аллен задумали создать интерпретатор языка BASIC для процессора Intel 8080, который бы позволил всем любителям писать свои программы для Altair. Так BASIC должен был стать первым коммерческим, созданным для этого микропроцессора, высокоуровневым языком программирования. И так родилась индустрия программного обеспечения для персональных компьютеров.

На старом фирменном бланке Traf-O-Data Гейтс и Аллен написали письмо производителю Altair — молодой компании MITS из Альбукерке. Друзья утверждали, что написали интерпретатор BASIC для Intel 8080 и хотят продавать его копии через MITS55. Они блефовали. У них не было ни строчки кода, но если бы в MITS заинтересовались, они бы мигом взялись за дело.

На письмо им не ответили, поэтому приятели решили позвонить. Гейтс считал, что звонить должен Аллен, так как он старше. Но Аллен настаивал, что Гейтс опытнее в таких вещах. Был найден компромисс: звонит Гейтс, немного изменяет свой голос и представляется Полом Алленом, потому что, если у них все получится, в Альбукерке полетит именно он. “У меня хотя бы щетина уже росла, а Билл все выглядел как второкурсник”56, — вспоминает Аллен.

По телефону им ответил мрачный Эд Робертс. Гейтс сделал голос пониже, представился Полом Алленом из Бостона и сообщил, что они сейчас заканчивают BASIC для Altair и хотели бы его продемонстрировать. Робертс сказал, что получил уже много подобных предложений и подпишет контракт с первым, кто войдет в двери его офиса в Альбукерке с работающим вариантом BASIC. Гейтс повернулся к Аллену и воскликнул: “Боже, срочно начинаем!”

Без Altair они не могли проверить свою работу, поэтому Аллен прибегнул к старой уловке: эмулировал работу Altair на гарвардском PDP-10. Они купили документацию к процессору Intel 8080, и через несколько недель эмулятор и другие необходимые для разработки программы были готовы.

В это время Гейтс с бешеной скоростью писал интерпретатор BASIC в блокнотах с желтыми линованными листами. Когда Аллен закончил эмулятор, Гейтс уже собрал общую структуру программы и написал основную часть кода. Он тогда существовал только в двух режимах: подолгу ходил по комнате или качался на стуле, а затем бросался записывать код на бумагу. “Помню, руки у него были все испачканы маркерами, — рассказывает Аллен. — Когда мой эмулятор был готов и мы получили доступ к PDP-10, Билл сел к терминалу, сначала долго смотрел на свои записки, раскачиваясь взад-вперед, а затем обрушивал на клавиатуру бурный поток компьютерного кода, и так много раз по кругу. Он мог заниматься этим часами напролет”57.

Однажды вечером они ужинали в комнате Гейтса в Currier House, и к ним присоединились другие сильные математики. Кто-то из приятелей стал жаловаться на занудные операции с плавающей запятой, которые, однако, позволили бы программе работать с очень большими и очень маленькими числами, а также с числами, записанными в экспоненциальной форме[86]. Но хорошо быть гиком в Гарварде — внезапно в разговор встрял кучерявый студент из Милуоки по имени Монте Давидофф и заявил, что уже этим занимался58. Гейтс и Аллен засыпали его вопросами о применении операций с плавающей запятой в программировании и удостоверились, что Давидофф знает, о чем говорит. Он согласился выполнить для них работу за 400 долларов, а позднее стал их третьим компаньоном и заработал немалые деньги.

Гейтс совершенно не готовился к экзаменам и даже на время перестал играть в покер. Восемь недель он, Аллен и Давидофф денно и нощно работали в гарвардской Лаборатории имени Айкена, вершили судьбу мира на PDP-10, то есть на деньги Министерства обороны США. Время от времени они выбирались в пиццерию Harvard House of Pizza и ресторан Aku Aku. Бывало, что Гейтс засыпал перед терминалом, обычно ранним утром, иногда недописав строчку с кодом. Он медленно клонился вниз, пока не утыкался носом в клавиатуру, и так дремал час-два. Затем он открывал глаза, косился на экран, пару раз моргал и продолжал писать код ровно с того места, на котором остановился, — такой феноменальный у него был уровень концентрации.

Время от времени приятели устраивали соревнования по программированию — кто быстрее всех напишет в блокноте самое короткое решение какой-нибудь задачки. Один выкрикивал: “Я справлюсь за девять строчек кода”. “А я за пять”, — звучало в ответ. По словам Аллена, все понимали, что каждый сэкономленный байт памяти — подарок пользователю, место под его приложения. Они задались целью уместить свой BASIC в 4 килобайта. (Для справки, у смартфона с памятью 16 гигабайт в четыре миллиона раз больше памяти, чем тогда было у компьютера.) По ночам они раскладывали распечатки с программным кодом на полу и искали, где можно было бы сделать его компактнее, элегантнее и эффективнее59.

После восьми недель интенсивной работы, к концу февраля 1975 года, приятели закончили свой интерпретатор и вписались в идеальные 3,2 килобайта. “Не стоял вопрос, смогу ли я написать эту программу, стоял вопрос, смогу ли я сделать ее достаточно быстрой, но емкой, менее 4 килобайт, — делится Гейтс. — И это была самая крутая программа из мной написанных”60. Он в последний раз проверил все на ошибки, а затем распечатал программу на перфоленте при помощи PDP-10, чтобы отвезти свою работу в Альбукерке.

Уже в самолете Аллен осознал, что не взял программу загрузки, то есть последовательность команд, которая должна сообщить Altair, как переписать BASIC к себе в память. Перед посадкой он взял блокнот и написал двадцать одну строчку на машинном коде, который использовали процессоры Intel, в каждой строчке было трехзначное число в восьмеричной системе счисления. Он так запарился в своем бронзово-коричневом синтетическом костюме, что вспотел еще до выхода из аэропорта. Его должен был ждать Эд Робертс. Аллен ожидал увидеть энергичного топ-менеджера из прогрессивной корпорации наподобие тех инновационных компаний, что расположились вдоль шоссе 128[87], кольцевой дороги вокруг Бостона. А его встретил мужчина весом 130 килограммов в джинсах и галстуке-ленточке.

Головной офис MITS тоже не совсем оправдал ожидания Аллена. Это было помещение в непрезентабельном торговом центре, а единственный Altair, у которого хватило бы памяти для запуска BASIC, только тестировался. Было решено запустить интерпретатор на следующее утро. Робертс и Аллен пошли в мексиканскую забегаловку Pancho’s, где вы получали именно то, за что заплатили свои три доллара. Что называется, дешево и сердито. Робертс отвез гостя в ближайшую гостиницу сети Sheraton, где на ресепшене Аллену сообщили стоимость его ночлега — 50 долларов. У Аллена с собой было на 10 долларов меньше, и он многозначительно посмотрел на Робертса, которому пришлось раскошелиться. Аллен понял, что Робертс тоже ожидал увидеть кого-то другого61.

На следующее утро Аллен пришел в MITS, чтобы опробовать интерпретатор BASIC. Пока компьютер десять минут загружал программу, Робертс и коллеги оживленно переглядывались, предвидя провал. Но Altair внезапно ожил и запросил объем памяти устройства. Кто-то из MITS аж подпрыгнул: “Смотрите, он что-то напечатал!” Аллен и сам был поражен. Он набрал ответ: “7168”. Altair ответил: “ОК”. Аллен вбил: “PRINT 2+2”. Команда была элементарная, но именно она могла продемонстрировать, что Гейтс написал блестящий код, а Давидофф хорошо поработал над операциями с плавающей запятой. Altair выдал ответ: “4”.

До этого момента Робертс молчал. Он загнал свою компанию в огромные долги ради дерзкой мечты создать доступный каждому домашний компьютер. Теперь он сидел и смотрел, как решалась судьба человечества. Впервые в истории на персональном компьютере была запущена программа. “О боже мой, он ответил — 4!” — радостно вопил Робертс62.

Он пригласил Аллена к себе в офис, где они договорились, что интерпретатор BASIC будет установлен на всех компьютерах Altair. Позднее Аллен признается, что никак не мог стереть улыбку с лица. В Кембридж он вернулся с их новым личным Altair, который они установили в общежитии Гейтса и пошли праздновать. Гейтс, по обыкновению, пил коктейль “Ширли Темпл”, имбирный эль с соком из вишни мараскино63.

Через месяц Робертс предложил Аллену должность директора программного обеспечения MITS. Коллеги Аллена считали, что даже рассматривать это предложение — сумасшествие: “Ты отлично устроился в Honeywell. Ты сможешь работать здесь еще много лет”, — говорили они. Но бунтарей и революционеров не интересует карьерная лестница. Поэтому весной 1975 года Аллен переехал в Альбукерке, город, про который он только недавно узнал, что он не в штате Аризона.

Гейтс решил на какое-то время остаться в Гарварде, где ему пришлось пройти своеобразный обряд инициации: его, как это случалось со многими из лучших студентов, вызвали на встречу с Административным советом университета из-за дисциплинарных проступков. Вспоминать об этом если и было весело, то только много лет спустя. Неприятности Гейтса начались после того, как аудиторы из министерства обороны решили проверить, как используется финансируемый ими PDP-10. Оказалось, что больше всего времени на нем работает второкурсник Уильям Генри Гейтс.

Он очень волновался. В свою защиту он написал объяснительную, в которой рассказал, как при помощи PDP-10 разработал интерпретатор BASIC. Его не стали наказывать за использование компьютера, однако сделали выговор за то, что из-под своего имени он пускал в систему Пола Аллена, который не был студентом Гарварда. Гейтс признал свою вину и согласился выложить в открытый доступ раннюю версию BASIC, но не улучшенный вариант, который они с Алленом разработали позднее64.

В то время Гейтс был больше сосредоточен на их с Алленом бизнесе, чем на учебе в Гарварде. Он закончил второй курс весной 1975 года, а затем улетел в Альбукерке на все лето и остался там на осень, решив пропустить семестр в Гарварде. Затем он вернулся в университет еще на два семестра, на весну и осень 1976 года, но бросил учебу за два семестра до диплома. В июне 2007 года Гейтс получил почетную ученую степень Гарварда. На церемонии вручения он начал свою речь с обращения к отцу, который сидел в аудитории: “Я более тридцати лет ждал, чтобы сказать это: «Отец, я же говорил, что вернусь и получу свой диплом»”65.

Данный текст является ознакомительным фрагментом.