6. Несколько слов в защиту BASIC
Пожалуй, ни один язык программирования не удостаивался столь единодушного презрения, как BASIC26. Из всех саркастических выпадов в его адрес можно было бы собрать довольно пухлый томик для туалетного чтения. Наиболее яркая ремарка, на мой взгляд, принадлежит Эдсгеру Вибе Дейкстре27: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации». (Его слова прозвучат еще пафоснее, если прочитать их с голландским – а еще лучше с немецким – акцентом.) Это, безусловно, преувеличение, хотя поводов к таким замечаниям BASIC дает предостаточно. Когда мы в детстве обменивались программами для Commodore 64, фраза «она написана на Бейсике» автоматически означала «отстой». И на сегодняшний день мало что изменилось. Какая среда разработки способна сравниться с Visual BASIC по количеству ужасных программ, созданных в ней? Я, признаться, если узнаю, что программа создана в Visual BASIC, стараюсь ее даже не запускать.
Но несмотря на все это, роль BASIC в истории развития компьютеров и программирования огромна. До его появления компьютерщики делились на два лагеря. Первый был связан с мейнфреймами, прежде всего, производства IBM и немногочисленных ее конкурентов. Приверженцами этого лагеря были программисты на государственных предприятиях и в крупных компаниях. Стивен Леви метко назвал их «жрецами»: представьте себе горстку высокопрофессиональных гуру в белых халатах, поклоняющихся Машине и выполняющих все строго по Писанию (сиречь инструкции от IBM). Никакого творчества и креатива не допускается.
Другой лагерь составляли хакеры. Эта культура возникла в Массачусетском технологическом институте (МТИ) и похожих технических вузах, а также небольших компаниях. В нее входили, как правило, молодые люди, которые предпочитали машинное общество человеческому и для которых программирование и копание в компьютерах (изначальный смысл слова «хакерство») было смыслом жизни. Они презирали коллективизм и консерватизм, навязываемый «айбиэмщиками», а потому испытывали особую любовь к небольшим машинам производства Digital Equipment Corporation (DEC), чья этика была не столь косной. Несмотря на явное противоречие во взглядах, оба лагеря объединяло следующее: ни «жрецы», ни хакеры не стремились сделать компьютеры доступными обычным людям. Те, кто не привык думать в битах, байтах и регистрах, для них просто не существовали.
Ситуация изменилась в 1964 году, когда Джон Кемени и Томас Курц, преподаватели Дартмутского колледжа, разработали Beginner’s All-purpose Symbolic Instruction Code (универсальный код символических инструкций для начинающих), сокращенно BASIC. Они не ориентировались ни на хакеров, ни на ученых-компьютерщиков; их целью было создать инструмент, который дал бы обыкновенным пользователям возможность творить с помощью компьютера. Сегодня идея языка программирования «для широких масс» выглядит бессмысленной. Зачем он, когда мы можем включить компьютер, на котором уже установлена Windows, iOS или еще какая-нибудь операционная система, и пользоваться многочисленными программными пакетами, которые уже кто-то написал за нас? А вот в 60-е – и даже позже – приложений как таковых, по сути, не существовало. Чтобы использовать компьютер для чего-нибудь за рамками самых ходовых (и примитивных) функций – и тем более создавать что-либо с его помощью, – необходимо было уметь программировать. Делая программирование доступным широкой публике, Кемени с Курцем руководствовались не столько техническими, сколько социологическими, политическими и даже идеологическими соображениями.
Итак, в 1964 году в Дартмутском колледже зародился третий лагерь компьютерщиков – я вскользь упоминал о нем в прошлых главах, – и долгие годы его деятельность была связана именно с языком BASIC. Пока «жрецы» занимались своими делами в хорошо освещенных и кондиционируемых дата-центрах, а хакеры уединенно корпели в тесных комнатушках у себя в МТИ, во внешнем мире творилась революция, которая в конце 60-х – начале 70-х годов привела к появлению настоящей программистской контркультуры. Компьютеры перестали быть прерогативой банков и научных институтов – они вышли на улицы. Таким образом, вклад адептов BASIC вполне сопоставим с достижениями хакеров, которые в это же время разрабатывали язык Си, Unix, а также закладывали основы сети Интернет.
Иногда эти два лагеря даже пересекались, и случалось это куда чаще, чем может показаться на первый взгляд (и чаще, чем представители этих лагерей готовы признать). Результатом одного из таких пересечений стала игра Hunt the Wumpus, которой будут посвящены следующие две главы. Исходная концепция зародилась в среде HP-TSB, однако своей новизной она подкупила программистов хакерского склада – и стала предтечей первых произведений так называемой «интерактивной литературы» (ИЛ).
Поэтому давайте не будем забывать, что именно благодаря BASIC компьютеры постепенно стали достоянием общественности и что именно BASIC в немалой степени поспособствовал развитию компьютерного творчества, плоды которого мы наблюдаем и по сей день. С этой точки зрения надменные высказывания элитариев вроде Дейкстры, признаться, выглядят очень некрасиво.
В общем, безусловно, BASIC есть за что уважать… Только не заставляйте меня им пользоваться.
7. «Охота на Вампуса», часть 1
В самый разгар эпохи хиппи программист-аналитик Боб Альбрехт вместе со школьным учителем Лероем Финкелем основал в Сан-Франциско издательство Dymax, чтобы печатать книги по языку BASIC. Интересы Альбрехта, однако, вовсе не ограничивались изданием компьютерной литературы. В те годы широкая публика все еще воспринимала компьютеры как нечто из области научной фантастики: огромные зловещие машины, которые постоянно искрят и сбоят, доставляя массу хлопот капитану Кирку и команде звездолета «Энтерпрайз». Чтобы изменить это представление и сделать компьютер инструментом для развлечения и творчества, был необходим массовый доступ.
Ради реализации этой мечты Альбрехт, обладавший, по всей видимости, большой харизмой и силой убеждения, сумел выпросить у DEC мини-компьютер PDP-8, а у Hewlett-Packard – терминалы с удаленным подключением и выделенное время. Очень скоро офис Dymax в городке Менло-Парк, штат Калифорния (туда издательство переехало после приобретения ЭВМ) превратился в публичный вычислительный центр, куда любой человек мог прийти и поиграться с компьютером.
В конце 1971 года в недрах коммерческого издательства Dymax возникла никак не связанная с ним «Народная компьютерная компания» (People’s Computer Company, или PCC). Это была не совсем «компания» в привычном смысле слова; по крайней мере, задачи извлекать прибыль перед ней не стояло. На самом деле, название было отсылкой к рок-группе Big Brother and the Holding Company28, которая появилась в Сан-Франциско в 1965 году и в которой пела небезызвестная Дженис Джоплин. Одного этого упоминания, в принципе, достаточно, чтобы понять этику РСС. Даже в 1972 году Сан-Франциско продолжал жить идеалами хиппи, несмотря на разочарование, возникшее после Альтамонтского фестиваля 1969 года29, и Альбрехт прекрасно вписался в эту контркультуру.
Целью РСС было сделать компьютеры доступными для широких масс. Для этого служил не только публичный вычислительный центр, но и информационный бюллетень, который начали издавать в октябре 1972 года. Заголовок гласил: «Сейчас компьютеры не служат народу, а используются против него. Используются, чтобы порабощать людей, а не освобождать их. Настало время все изменить. Для этого нужна… Народная компьютерная компания».
Атмосферу в Менло-Парке хорошо описывает Стивен Леви в книге «Хакеры»:
«В помещении непрерывно трещали терминалы, один из которых был подключен к PDP-8, а другой – к телефонной линии, через которую связывался с компьютером в компании Hewlett-Packard, бесплатно предоставлявшей для PCC время. Где-то обязательно играли в новенькую игру, написанную кем-нибудь из все разраставшейся команды хакеров PCC. Иногда приходили мамаши-домохозяйки с детьми и неожиданно увлекались программированием, да так, что мужчины с тревогой отмечали, как лояльные до сего момента жены забрасывали и детей, и готовку в пользу радостей BASIC. Бизнесмены пытались запрограммировать компьютер для предсказания котировок на бирже и тратили на эту химеру несчетное количество времени. Когда двери вычислительного центра открыты настежь, возможно все. Saturday Review цитировал Альбрехта: “Мы хотели бы организовать в каждом районе доступные для публики компьютерные центры, куда любой человек мог бы зайти, как в боулинг или в зал игровых автоматов, и поиграться с компьютером”».
Именно в такую среду и попал однажды 27-летний Грегори Йоб. Произошло это примерно тогда же, когда начал выходить бюллетень РСС. В то время особой популярностью пользовались игры-угадайки на поле, написанные самим Альбрехтом. Первой из них, судя по всему, была игра Hurkle30.
Суть ее в следующем: где-то на координатной сетке 10×10 прячется загадочный Херкл (Харкл? Хуркл?). Игрок вводит в компьютер координаты точки, где, как ему кажется, нужно искать. Отсчет ведется от «базы», которая расположена в точке (0; 0) – в левом нижнем углу сетки. Если игрок не угадал, программа дает подсказку, в какой примерно стороне (севернее/южнее/западнее/восточнее) следует продолжать поиски – и так, пока игрок не отыщет нужную точку. Вместо итогового счета на экран выводится количество попыток и предложение сыграть снова.
Вот так мог выглядеть один заход в Hurkle:
RUN
HURKLE
WANT THE RULES?Y
A HURKLE IS HIDING IN A GRID, LIKE THE ONE BELOW.
________NORTH
______9. . . . . . . . . .
______8. . . . . . . . . .
______7. . . . . . . . . .
______6. . . . . . . . . .
______5. . . . . . . . . .
WEST 4. . . . . . . . . . EAST
______3. . . . . . . . . .
______2. . . . . . . . . .
______1. . . . . . . . . .
______0. . . . . . . . . .
_______0123456789
________SOUTH
TRY TO GUESS WHERE THE HURKLE IS HIDING. YOU GUESS BY TELLING ME THE GRIDPOINT WHERE YOU THINK THAT THE HURKLE IS HIDING. HOMEBASE IS POINT 0,0 IN THE SOUTHWEST CORNER. YOUR GUESS SHOULD BE A PAIR OF WHOLE NUMBERS, SEPARATED BY A COMMA. THE FIRST NUMBER TELLS HOW FAR TO THE RIGHT OF HOMEBASE AND THE SECOND NUMBER TELLS HOW FAR ABOVE HOMEBASE YOU THINK THE HURKLE IS HIDING. FOR EXAMPLE, IF YOU THINK THE HURKLE IS 7 TO THE RIGHT AND 5 ABOVE HOMEBASE, YOU ENTER 7,5 AS YOUR GUESS AND THEN PRESS THE ’RETURN’ KEY. AFTER EACH GUESS, I WILL TELL YOU THE APPROXIMATE DIRECTION TO GO FOR YOUR NEXT GUESS. GOOD LUCK!
THE HURKLE IS HIDING – TRY TO FIND HIM!
WHAT IS YOUR GUESS?5,5
GO NORTH
WHAT IS YOUR GUESS?5,2
GO NORTH
WHAT IS YOUR GUESS?5,1
GO NORTH
WHAT IS YOUR GUESS?5,0
GO NORTH
WHAT IS YOUR GUESS?5,8
YOU FOUND HIM IN 5GUESSES!!!
LET’S PLAY AGAIN.
Позднее появились и более сложные вариации. В игре Snark игрок вводил радиус окружности поиска вокруг некоторой точки на сетке, а компьютер сообщал ему, находится ли Снарк внутри окружности или снаружи. В игре Mugwump (самой сложной из этой подборки) единственной подсказкой было: в скольких клетках по прямой от точки поиска прячется Магвамп, а направление игрок должен был угадывать самостоятельно. Строго говоря, называть эти программы «играми» некорректно. Проиграть в них нельзя – только потратить уйму времени, перебирая варианты, вот и все. Учитывая атмосферу, царившую в РСС, можно было бы предположить наличие соревнований, но поскольку каждый раз поле генерируется случайным образом заново, смысла в подсчете очков никакого.
Йоб отзывался об этих играх так: «Черт-те что! Ладно одна игра на декартовой координатной плоскости 10×10, но три – уже перебор. И тут мне в голову пришло примерно следующее: “Надо придумать компьютерный вариант игры в прятки – и без этой [вырезано цензурой] сетки!” Точно: написать топологическую компьютерную игру, где игровое поле состоит из узлов, соединенных переходами».31
«Топологическая компьютерная игра», в которой игрок перемещается по «узлам, соединенным переходами». Кое-что напоминает, вам не кажется?
8. «Охота на Вампуса», часть 2
Если верить словам Грегори Йоба, источником вдохновения для Hunt the Wumpus стала не столько Hurkle и ей подобные развлечения, сколько ненависть к декартовой координатной плоскости, которая в них использовалась. Для своей вариации «охоты на монстра» Йоб решил использовать свое «любимое платоново тело», а именно додекаэдр – правильный двадцатигранник. Мне подобная страсть к геометрии, признаюсь, чужда (и «любимого платонова тела» у меня тоже нет), поэтому меня больше интересуют другие новации, которые ввел Йоб.
Игру Hunt the Wumpus можно считать прародительницей всех тех «лабиринтов из маленьких запутанных переходов», которые спустя несколько лет заполонят экраны компьютеров и блокноты с миллиметровкой. Игровое поле состоит из двадцати узлов-комнат, каждая из которых связана ровно с тремя другими. По умолчанию комнаты пустые, но в некоторых из них случайным образом размещаются бездонные пропасти (попадание туда – мгновенный проигрыш), «супер-летучие мыши» (переносят игрока в случайную комнату) и, конечно же, сам Вампус. Когда игрок попадает в комнату с Вампусом, возможны четыре варианта развития событий: монстр либо уходит в одну из трех примыкающих комнат,* либо остается на месте и съедает игрока. Убить Вампуса, таким образом, можно только с расстояния, и для этого у игрока есть «искривленная» управляемая стрела, которая может пролететь до пяти комнат.
*При этом, даже если Вампус попадет в комнату с летучими мышами или пропастью, с ним ничего не случится. Во-первых, он слишком тяжелый, и мыши его просто не поднимут. Во-вторых, у него присоски на лапах, поэтому он может обойти пропасть по стене. Вот такая условность.
Управление игрой состоит из двух команд: «идти» (М) и «стрелять» (S). Выигрышная стратегия (у осторожного игрока или новичка вроде меня) примерно следующая: не спеша изучить игровое поле, составить карту, указав на ней все ловушки, затем вычислить местонахождение Вампуса и застрелить беднягу. На распечатке с терминала это выглядело примерно так:
HUNT THE WUMPUS
YOU ARE IN ROOM 20
TUNNELS LEAD TO 131619
SHOOT OR MOVE (S-M)?M
WHERE TO?13
I FEEL A DRAFT
YOU ARE IN ROOM 13
TUNNELS LEAD TO 121420
SHOOT OR MOVE (S-M)?M
WHERE TO?20
YOU ARE IN ROOM 20
TUNNELS LEAD TO 1316 19
SHOOT OR MOVE (S-M)?
Ничего особенного, согласен. Сыграв в первый раз, задаешься вопросом: и что? Однако если дать Hunt the Wumpus второй шанс, то можно увидеть, что это пусть и простенькая, но игра, способная увлечь на несколько партий – до тех пор, пока не будет выработана выигрышная стратегия. Единственный недостаток с точки зрения дизайна, пожалуй, состоит в том, что нередко партия начинается вот так:
I FEEL A DRAFT
YOU ARE IN ROOM 4
TUNNELS LEAD TO 3 5 14
Сообщение «I FEEL A DRAFT» (я чувствую сквозняк) указывает игроку на то, что рядом пропасть, то есть один из трех туннелей ведет к мгновенной гибели. Поскольку игра только началась и никакой дополнительной информации у игрока нет, он вынужден делать ход наугад – и надеяться, что ему повезет. Такую ситуацию едва ли можно назвать честной. (Видимо, на этот случай в игре прописана возможность сыграть повторно на том же поле.)
Впрочем, вопросы игрового дизайна как такового меня интересуют мало. Данная книга посвящена истории интерактивного повествования, и с этой точки зрения Hunt the Wumpus выделяется сразу по двум пунктам.