Выбрать главу

Одним из вкладов Минского в растущее количество канонических хаков была дисплейная программа для PDP-1 под названием Алгоритм Построения Окружности (Circle Algoritm). Он был открыт в результате ошибки; во время попытки бамнуть несколько инструкций из короткой программы, которая превращала прямые линии в кривые и спирали. Минский случайно напечатал вместо символа «Y» символ «Y со штрихом»[19] и вместо того чтобы начать чертить, как ожидалось, тильдообразные незавершенные спирали, компьютер нарисовал окружность. Это было несколько неожиданное открытие, при дальнейшем исследовании которого родилось сложное математическое описание процесса. Хакеря программу дальше, Минский использовал алгоритм построения окружности как отправную точку для более сложной программы моделирования, в которой три частицы взаимодействовали друг с другом и оставляли удивительные завитки на экране, создавая нечто похожее на розы с переменным количеством листьев[20]. «Силы, приводившие частицы в движение были полностью неземными», —позднее вспоминал Боб Вагнер, — «Это была симуляция нарушения законов природы». Позднее Минский назвал этот хак «Три-Поз: Трехпозиционное Изображение», но хакеры любовно назвали его «Минскитроном».

Слаг Рассел этим был очень вдохновлен. На собраниях в Хайэмовском Институте несколько месяцев назад, он и его друзья обсудили критерии самого радикального дисплейного хака. Так как они все были фанами дешевой научной фантастики, особенно романов, где действие происходило в космосе и автором которых был Е.Е. «Док» Смит, то они решили, что PDP-1 будет весьма неплохим компьютером для объединения фильма категории "B" и игрушки стоимостью в $120,000. Результатом этого объединения должна быть игра, в которой два игрока могли бы биться друг с другом в открытом космосе. В Хайэмовском Институте была немедленно организована Группа Изучения Космических Военных Конфликтов, которая вынесла авторитетное решение о том, что Слаг Рассел должен быть автором этого исторического хака.

Прошло несколько месяцев, а Рассел еще и не думал приступать. Вместо этого он разглядывал картинки, рождаемые Минскитроном, и щелкал переключателями, когда программу начинало клинить. Поначалу он был восхищен ею, но вместе с тем продолжал считать, что этот хак является слишком абстрактным и математическим. Через некоторое время он сделал окончательный вывод: "Эта демка — полная фигня! Около тридцати двух или около того команд, которые в реальности ничегоне делают".

Слаг знал, что его игра про войну в открытом космосе, должнакое-что делать. Если использовать для описания этого доморощенные научно-фантастические термины, то она должна была это сделать таким способом, который никто и никогда раньше не использовал. Чувство, которое поначалу привело Слага к компьютерам заключалось в ощущении силы, которые вы получали при запуске всех этих чертовых штуковин. Вы могли приказать компьютеру сделать что-либо, а он начинал упрямиться и биться с вами, но, в конечном счете, вы одерживали верх, и он делал то, что вы ему говорили. Конечно, он всего-навсего отражал вашу глупость, и часто то, что вы приказывали ему сделать, приводило к абсолютно другому результату — отвратительному и безвкусному. Но, в конце концов, после пыток и несчастий, он делал в точности то, что вы хотели. Чувство, получаемое в результате этого, было несравнимо ни с какими эмоциями в мире. Оно могло сделать из вас наркомана. Именно к этому пристрастился Слаг Рассел, и он видел, что с остальными, кто сидел до рассвета в Клудж Комнате, было то же самое. Похоже, он догадывался, что их всех там держит — это было ощущение силы.

Слаг испытывал подобное, хотя и менее яркое чувство при чтении романов Дока Смита. В его воображении рисовались образы белого ракетного крейсера несущегося в пространстве под рев двигателей, и он страстно хотел, чтобы ему удалось реализовать это же ощущение за консолью PDP-1. Это были именно те «Космические войны», о которых он мечтал. И он еще раз поклялся написать их.

Но позднее.

Слаг не был столь же обуреваем процессом написания программ как другие хакеры. Иногда ему нужен был толчок. После того как он сделал ошибку, раскрыв свой большой рот и обмолвившись о программе, которую он собирался написать, хакеры PDP-1, всегда страстно желавшие посмотреть на новый хак, который будет добавлен к куче лент лежащих в ящике стола, начали его подгонять. После бормотания под нос разных оправданий, он еще раз подтверждал, что он ее пишет, вот только он никак не может понять, как написать процедуры расчета синусов— косинусов, столь необходимых для отрисовки движения корабля.

Коток знал, что это препятствие может быть легко преодолено. На этот момент, Коток был в весьма тесных отношениях с инженерами из DEC, офис которой был расположен в нескольких милях от Мэйнарда. DEC была фирмой внутри которой были весьма неформальные отношения. В отличие от большинства компьютерных фирм, в ней не считали хакеров из МТИ потрепанными и легкомысленными компьютерными рейдерами, за которых их, возможно, принимала IBM. Например, однажды, когда один из компонентов вышел из строя, Коток позвонил в Мэйнард, и сообщил об этом сотрудникам DEC. Они сказали: «Приезжайте и заберите замену». За то время, пока Коток до них добрался, уже было много позже пяти вечера, и офис был закрыт. Тем не менее, ночной сторож позволил ему войти внутрь, найти стол инженера с которым он разговаривал и позволил покопаться в его столе, до тех пока он не нашел нужную запчасть. Это было весьма неформально, что и привлекало хакеров. Поэтому для Котока не было большой проблемы в том, чтобы прийти в Мэйнард, где кто-нибудь наверняка имел готовую процедуру расчета синусов и косинусов, которая работала бы на PDP-1. Несомненно, она была обнаружена у одного из сотрудников DEC, а так как информация была свободной, Коток без всяких проблем принес ее в здание №26.

«Вот она, Рассел», — сказал Коток, держа в руке ленту с программой. «Ну что ты теперь скажешь?».

Теперь у Рассела не было никаких отговорок. Так что он потратил все свободное время на написание этой фантастической игры для PDP-1, игры, которой никто никогда ранее не видел. Уже в скором времени он тратил на нее все свое время, в том числе и рабочее. Он начал ее в первых числах декабря. Приближалось Рождество, а он все еще занимался ее хакингом. Когда календарь на стене сменился на 1962 год, он все еще хачил программу. К этому моменту Рассел был в состоянии поставить точку на экране, которой можно было управлять, нажимая на крошечные переключатели контрольной панели. Точка могла ускоряться и менять свое направление.

Затем он начал работать над формами двух ракетных крейсеров: оба были классическими космическими кораблями из мультфильмов. Для того чтобы отличать их друг от друга, он сделал один корабль в виде короткой сигары с утолщением по середине, а второй — в форме тонкой трубы. Процедуры синуса и косинуса Рассел использовал для того, чтобы управлять движением кораблей в разных направлениях. Затем он написал процедуру стрельбы торпедой (маленькой точкой). Она вылетала из носа космического корабля, после того как Рассел нажимал на специальный переключатель. Компьютер выполнял определение положения космического корабля и торпеды, если они оба находились в одной точке, программа вызывала процедуру, которая заменяла несчастный корабль случайным месивом из точек, которые представляли собой взрыв. (Этот процесс назывался «обнаружением столкновений»).

вернуться

19

видимо имелась ввиду первая производная, а программа представляла собой программное построение сплайнов — пр.перев.

вернуться

20

Скорее всего, имелась в виду задача моделирования взаимодействия трех тел — пр. перев.