Универсальный код для новичков

Разные люди приходят к программированию разными дорогами. У меня все начиналось не слишком весело: через изучение языков Ассемблер и PL / 1 для ЕС ЭВМ. Если с Ассемблером все было более или менее нормально — его не понимал не только я, но и вся моя группа, то, сидя на семинарах по PL / 1, я с тоской смотрел, как мои сокурсники браво превращают словесные алгоритмы (разные там перемножения матриц и т. п.) в строчки непонятного мне текста. Нет, то есть не совсем непонятного; что означает каждый отдельный оператор, я после некоторого интеллектуального напряжения усвоил, но как это все работает, не понимал, хоть плачь. И вдруг меня осенило: библиотека! Ну как я раньше не додумался поискать там чего-нибудь более понятного, чем наши учебники по PL / 1?
Порывшись основательно в каталоге, я выбрал почти наугад несколько книжек по принципу притягательности названия.

----------------------<cut>----------------------

Одно из пособий называлось как-то вроде "Программирование для новичков"; к сожалению не помню точно ни его названия, ни автора, это была переводная книжка. Но именно благодаря ей я наконец понял, как устроена программа, что такое цикл, условный оператор, как организовать ввод данных с клавиатуры, вывод на экран или (о вершина могущества!) в файл. Это был написанный нормальным человеческим языком самоучитель языка Бейсик.

Универсальный код для новичков

Не вижу ничего смешного. Меня лично Бейсик спас от отчисления. Поняв, как все работает на Бейсике, я один за другим как семечки начал щелкать "взрослые" языки программирования. Даже PL / 1 перестал казаться мне таким ужасным. Впрочем, если бы я не стал программистом, то компьютерный мир этого даже не заметил бы. Но вот существовал бы этот самый компьютерный мир сегодня в таком виде, в каком мы его знаем, без Бейсика, — это большой вопрос. Во всяком случае, именно Бейсику обязан своей массовой популярностью первый в мире персональный компьютер Altair 8800, и именно Бейсик послужил причиной того, что люди из IBM пришли в несерьезную на тот момент фирму Microsoft. А это кое-что да значит. Так что нелишним будет вспомнить тех, кто создавал этот язык.

Математический помощник Эйнштейна
Джон Джордж Кемени (John George Kemeny) родился в 1926 году в Будапеште, столице Венгрии. В 1940 году его семья, спасаясь от нового немецкого порядка (они были евреями), перебралась в США. После окончания средней школы Кемени поступил в престижный Принстонский университет. Будучи еще совсем молодым, он участвовал в Лос-Аламосе в Манхэттенском проекте. Это было время головокружительного развития математики, особенно в областях математической логики и компьютеров. Кемени работал непосредственно с Джоном фон Нейманом (John von Neumann).

Универсальный код для новичков

Томас Курц и Джон Кемени

В 22 года Кемени стал математическим помощником в исследованиях самого Эйнштейна. Когда много позже Джону Кемени задали вопрос: "Зачем Эйнштейну понадобился помощник по математике?" — Кемени с улыбкой ответил: "Эйнштейн никогда не был особенно силен в математике". Словом, это был перспективный молодой доцент Принстонского университета с большим академическим будущим... Но неожиданно для всех Кемени отправился в никому не известный колледж, в котором, как он узнал, только что было открыто новое отделение математики.
В Дартмутском колледже 27-летний Джон Кемени решил заняться новыми разделами математики. К тому времени у него уже вышла первая книга — "Взгляды философа на науку", весьма тепло встреченная в научном мире. Те, кто был знаком с Кемени, отмечали его способность находить блестящие решения трудных проблем, не важно, в математике или даже в политике и социологии. Молодой ученый был уверен, что компьютеры не просто хитрые машины для помощи в сложных расчетах. Еще в 50-х годах XX века он понимал, что в ближайшем будущем компьютеры должны занять центральное место в мире. Он без устали и горячо отстаивал свою точку зрения и ни минуты не сомневался в том, что изучение ПК должно стать обязательной составляющей полноценного образования.
Чтобы сделать ПК доступными для новичков — неслыханная дерзость в то время, — он совместно со своим другом Томом Куртцом (Tom Kurtz) разработал первую в мире компьютерную систему разделенного времени. Предполагая, что компьютерные гуру поднимут его на смех, он привлек к участию в проекте нескольких новичков, которые были так же наивны, как и сам Кемени, и поэтому тоже могли поверить в осуществимость подобной идеи (это было в начале 60-х годов XX века, когда ЭВМ работали в пакетном режиме). Как ни странно, у наивных новичков все получилось.

Универсальный код для новичков

General Electric 225

Кроме того, Джону Кемени не давала покоя мысль о том, что мощь компьютера малодоступна "непосвященным", поскольку языки программирования того времени были все еще очень сложными для восприятия неподготовленного человека. И тогда он и Том Куртц разработали язык программирования, названный ими Beginner's All-purpose Symbolic Instruction Code ("Код универсальных символических инструкций для начинающих"), или, сокращенно, BASIC. В 1963 году этот язык впервые получил практическое применение и был адаптирован для машины General Electric 225. BASIC действительно получился очень простым и легким для освоения даже людьми, слабо разбирающимися в ЭВМ. Однако настоящий бум популярности этого языка начался с появлением компьютеров на базе микропроцессоров — персональных компьютеров.

Революция в Альбукерке
Одним жарким январским днем 1975 года Эд Робертс (Ed Roberts), глава небольшой компании MITS, находившейся в Альбукерке (штат Нью-Мексико), получил официальное письмо от фирмы Traf-O-Data. В письме сообщалось, что Traf-O-Data обладает интерпретатором Бейсика для всех компьютеров на базе чипа Intel 8080. Авторы послания уведомляли Робертса о том, что намереваются продавать кассеты и дискеты с копиями интерпретатора через MITS. Компания Traf-O-Data просила за каждую проданную копию 50 центов. Незадолго до этого MITS привлекла к себе внимание большого числа компьютерных энтузиастов своим первым в мире ПК Altair 8800 на базе Intel 8080. Интерпретатор Бейсика — это то, чего не хватало системе Altair для настоящего коммерческого успеха. Робертс тут же стал набирать телефонный номер, указанный в письме. К его разочарованию, он попал в какую-то школу в Сиэтле, где никто ничего не знал ни о Traf-O-Data, ни о Бейсике.

Универсальный код для новичков

Intel 8080

"Шутники какие-то", — подумал Эд Робертс и выкинул письмо. Однако спустя несколько дней Traf-O-Data снова дала о себе знать. В компании Traf-O-Data было всего два сотрудника (они же совладельцы): Билл Гейтс (Bill Gates) и Пол Ален (Paul Allen). Гейтсу было 19 лет, Аллену — почти 22. Гейтс изучал юриспруденцию в Гарвардском университете (там он, кстати, подружился со Стивом Баллмером (Steve Ballmer)). Пол Аллен был тут же, рядом — он работал в Бостоне программистом. Именно Аллен увидел номер Popular Electronics с рекламой Altair и, возбужденный, примчался к Гейтсу с криками, что революция началась и если они не предпримут срочно каких-нибудь действий, то не успеют к дележу пирога (официальная историография утверждает, что Аллен, размахивая перед носом Гейтса свежим номером PE, воскликнул: "This is it! It's about to begin!").

Универсальный код для новичков

Для Гейтса и Аллена вариантов не было — нужно было срочно писать интерпретатор Бейсика для компьютера Altair. Оповестив Эда Робертса о том, что Altair 8800 у них уже есть, друзья задумались: а где, собственно, его взять, чтобы приступить к программированию? Компьютер был нужен срочно. Тогда друзья приняли решение — написать эмулятор Altair 8800 для доступной ЭВМ PDP-10, а уж затем на эмулированном Altair создать интерпретатор Бейсика. Эмулятор — программа сама по себе непростая, транслирующая команды одного процессора в команды другого. Чтобы написать эмулятор, нужно хорошо знать эмулируемую машину. Гейтс и Аллен не знали об Altair 8800 ровным счетом ничего. Они приобрели только что вышедшее руководство Дэвида Осборна (David Osborne), подробно описывающее набор команд Intel 8080, и работа закипела. Это была самая настоящая авантюра.

Универсальный код для новичков

Билл Гейтс (Bill Gates) и Пол Ален (Paul Allen)

В течение двух недель Аллен написал эмулятор для PDP-10, и Гейтс начал ваять интерпретатор Бейсика. Поскольку память Altair 8800 имела объем 4 кбайт, максимальный размер интерпретатора не должен был превышать 3 кбайт (чтобы оставалось место для программ на Бейсике). Работа над интерпретатором длилась около месяца и велась почти круглосуточно — компаньоны очень боялись, как бы кто-нибудь не опередил их и не предложил MITS свою версию Бейсика. Одной из проблем оказался ввод данных. У Altair 8800 не было ни клавиатуры, ни каких-либо иных средств ввода, кроме тумблеров на передней панели. Не было и систем хранения результатов: введенная программа исчезала после обесточивания. Гейтс и Аллен решили воспользоваться устройством ввода с бумажной перфоленты.

Универсальный код для новичков

Универсальный код для новичков

Наконец, в феврале все было закончено. Пол Аллен, как более солидно выглядящий (Гейтс вообще был похож на тинейджера), полетел в Альбукерк в штаб-квартиру MITS, взяв с собой перфоленту с интерпретатором Бейсика. Уже поднявшись в воздух, он вспомнил, что они совершенно упустили из виду загрузчик — небольшую программу, которая входит в состав любой операционной системы. Единственная, но очень важная его функция — считывание какой-либо программы в память и ее запуск. Пришлось Аллену в самолете вручную писать загрузчик, без которого, понятное дело, было не обойтись.
В Альбукерке он высадился, находясь в довольно подавленном состоянии: интерпретатор языка был написан на эмуляторе, без каких-либо тестов на реальном Altair, а загрузчик вообще делался "на коленке", и как он должен был работать, одному богу известно. Эд Робертс, встретивший Пола Аллена, отвез его в опытно-конструкторскую лабораторию MITS, оказавшуюся небольшой мастерской, расположенной между прачечной самообслуживания и массажным кабинетом. Аллен слегка удивился: они с Гейтсом почему-то были уверены, что MITS — крупная фирма. Войдя в "лабораторию", Аллен впервые увидел Altair. Это была усовершенствованная модель с памятью в 6 кбайт. Тестирование отложили до следующего утра, и Аллен с Гейтсом провели очень беспокойную ночь.

Универсальный код для новичков

На следующий день Пол Аллен подключил к Altair считывающее устройство и запустил программу начальной загрузки. После долгих минут ожидания компьютер напечатал на подключенном к нему телетайпе одно слово: "Ready". "Работает!" — удивленно сказал Эд Робертс. Но ему было далеко до удивления Пола Аллена: ни разу не видев машину, они с Гейтсом создали для нее работающую программу. Однако нужно было еще проверить, насколько безошибочно работает интерпретатор. Первой программой, с помощью которой тестировали его работу, была небольшая софтина из учебника по Бейсику, моделирующая приземление космического корабля. Тест прошел идеально. Позднее, правда, Гейтс убрал из интерпретатора кое-какие шероховатости, довел его до полной кондиции.

Универсальный код для новичков

Универсальный код для новичков

Бейсик Гейтса и Аллена имел огромное значение не только для Altair 8800, но и для развития всей микрокомпьютерной промышленности. Теперь на ПК можно было разрабатывать коммерческие программы — основу могущества микрокомпьютеров. Вскоре для переговоров с MITS Гейтс и Аллен организовали в Альбукерке товарищество. Не мудрствуя лукаво, они назвали его Microcomputer Software, или, сокращенно, Micro-Soft. Товарищество заключило с MITS контракт, по которому MITS получала лицензию на распространение интерпретатора Бейсика, с оговоркой, что ни MITS, ни конечный пользователь не будут полными собственниками интерпретатора, иначе говоря, не получат права на его самостоятельную продажу или копирование.

Универсальный код для новичков

Первый коммерческий продукт Micro-Soft получил название 4K BASIC. А 3 февраля 1976 года Билл Гейтс написал открытое письмо в компьютерные клубы, обвинив компьютерную общественность (вернее, микрокомпьютерную) в том, что большинство людей не желают покупать 4K BASIC. Согласно его данным, лишь 10% владельцев Altair купили 4K BASIC. Он призвал компьютерщиков прекратить безобразие с присвоением собственности Micro-Soft. Впрочем, это уже совсем другая история.
Журнал UPgrade
Автор: Дмитрий Румянцев