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

Разные люди приходят к программированию разными дорогами. У меня все начиналось
не слишком весело: через изучение языков Ассемблер и PL / 1 для ЕС ЭВМ. Если с
Ассемблером все было более или менее нормально - его не понимал не только я, но
и вся моя группа, то, сидя на семинарах по PL / 1, я с тоской смотрел, как мои
сокурсники браво превращают словесные алгоритмы (разные там перемножения матриц
и т. п.) в строчки непонятного мне текста. Нет, то есть не совсем непонятного;
что означает каждый отдельный оператор, я после некоторого интеллектуального
напряжения усвоил, но как это все работает, не понимал, хоть плачь. И вдруг меня
осенило: библиотека! Ну как я раньше не додумался поискать там чего-нибудь более
понятного, чем наши учебники по PL / 1?
Порывшись основательно в каталоге, я выбрал почти наугад несколько книжек по
принципу притягательности названия. Одно из пособий называлось как-то вроде
"Программирование для новичков"; к сожалению не помню точно ни его названия, ни
автора, это была переводная книжка. Но именно благодаря ей я наконец понял, как
устроена программа, что такое цикл, условный оператор, как организовать ввод
данных с клавиатуры, вывод на экран или (о вершина могущества!) в файл. Это был
написанный нормальным человеческим языком самоучитель языка Бейсик.
Не вижу ничего смешного. Меня лично Бейсик спас от отчисления. Поняв, как все
работает на Бейсике, я один за другим как семечки начал щелкать "взрослые" языки
программирования. Даже PL / 1 перестал казаться мне таким ужасным. Впрочем, если
бы я не стал программистом, то компьютерный мир этого даже не заметил бы. Но вот
существовал бы этот самый компьютерный мир сегодня в таком виде, в каком мы его
знаем, без Бейсика, - это большой вопрос. Во всяком случае, именно Бейсику
обязан своей массовой популярностью первый в мире персональный компьютер Altair
8800, и именно Бейсик послужил причиной того, что люди из IBM пришли в
несерьезную на тот момент фирму Microsoft. А это кое-что да значит. Так что
нелишним будет вспомнить тех, кто создавал этот язык.
Математический помощник Эйнштейна
Джон Джордж Кемени (John George Kemeny) родился в 1926 году в Будапеште,
столице Венгрии. В 1940 году его семья, спасаясь от нового немецкого порядка
(они были евреями), перебралась в США. После окончания средней школы Кемени
поступил в престижный Принстонский университет. Будучи еще совсем молодым, он
участвовал в Лос-Аламосе в Манхэттенском проекте. Это было время
головокружительного развития математики, особенно в областях математической
логики и компьютеров. Кемени работал непосредственно с Джоном фон Нейманом (John
von Neumann).
В 22 года Кемени стал математическим помощником в исследованиях самого
Эйнштейна. Когда много позже Джону Кемени задали вопрос: "Зачем Эйнштейну
понадобился помощник по математике?" - Кемени с улыбкой ответил: "Эйнштейн
никогда не был особенно силен в математике". Словом, это был перспективный
молодой доцент Принстонского университета с большим академическим будущим... Но
неожиданно для всех Кемени отправился в никому не известный колледж, в котором,
как он узнал, только что было открыто новое отделение математики.
В Дартмутском колледже 27-летний Джон Кемени решил заняться новыми разделами
математики. К тому времени у него уже вышла первая книга - "Взгляды философа на
науку", весьма тепло встреченная в научном мире. Те, кто был знаком с Кемени,
отмечали его способность находить блестящие решения трудных проблем, не важно, в
математике или даже в политике и социологии. Молодой ученый был уверен, что
компьютеры не просто хитрые машины для помощи в сложных расчетах. Еще в 50-х
годах XX века он понимал, что в ближайшем будущем компьютеры должны занять
центральное место в мире. Он без устали и горячо отстаивал свою точку зрения и
ни минуты не сомневался в том, что изучение ПК должно стать обязательной
составляющей полноценного образования.
Чтобы сделать ПК доступными для новичков - неслыханная дерзость в то время, -
он совместно со своим другом Томом Куртцом (Tom Kurtz) разработал первую в мире
компьютерную систему разделенного времени. Предполагая, что компьютерные гуру
поднимут его на смех, он привлек к участию в проекте нескольких новичков,
которые были так же наивны, как и сам Кемени, и поэтому тоже могли поверить в
осуществимость подобной идеи (это было в начале 60-х годов XX века, когда ЭВМ
работали в пакетном режиме). Как ни странно, у наивных новичков все получилось.
Кроме того, Джону Кемени не давала покоя мысль о том, что мощь компьютера
малодоступна "непосвященным", поскольку языки программирования того времени были
все еще очень сложными для восприятия неподготовленного человека. И тогда он и
Том Куртц разработали язык программирования, названный ими 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, ни о Бейсике.
"Шутники какие-то", - подумал Эд Робертс и выкинул письмо. Однако спустя
несколько дней 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, и работа закипела. Это была самая настоящая авантюра.
В течение двух недель Аллен написал эмулятор для 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. Впрочем, это уже совсем другая история.
UP
|