Торжество логики (из книги о зарождении хакерства) [5]

Интересные отрывки из книги Стивена Леви Хакеры: герои компьютерной революции (здесь приведены события, происходящие в конце 50-х - начале 60-х годов):

...но логическая структура мышления, требуемая для программирования, распространялась и на другие события в этой жизни. Вы могли задать хакеру вопрос и почувствовать, как его умственный сумматор обрабатывает биты информации, пока он не выдавал точный ответ.

Марж Сандерс каждую субботу ездила утром к магазину Safeway на своем Фольксвагене, и, после своего возвращения, спрашивала своего мужа, не хотел бы он помочь ей занести то, что она купила в бакалее? На что Боб Сандерс отвечал «Нет». Ошеломленная, Марж затащила продукты самостоятельно. После того как, то же самое произошло несколько раз, она взорвалась, и, разбрасывая проклятия в его адрес, потребовала от него ответа, почему он ответил «нет» на ее вопрос.

«Ты задала глупый вопрос», - сказал он. «Конечно я не хочу помогать тебе заносить продукты. Но если бы ты просто попросила меня принести их, то это было бы совсем другое дело».

Это было так, как будто Марж загрузила программу в TX-0, и программа, как всегда делают программы, когда синтаксис неверен, вылетела бы с ошибкой. И только после того, как она выполнила «отладку» своего вопроса, Боб Сандерс позволил ему успешно выполняться на своем собственном ментальном компьютере.

<...>

Несовершенные системы приводили хакеров в неистовство, так как их основной инстинкт заключался в их отладке. Кстати, это является одной из причин, почему хакеры обычно испытывают крайне неприятные чувства при вождении автомобилей. Система беспорядочно запрограммированных красных огней светофоров и странно размещенных односторонних полос движения вызывает в них чертовское ощущение ненужности всего этого, поэтому у них часто появляется дикое желание переставить все знаки, открыть коробки управления светофорами... и полностью перепроектировать всю схему движения.

<...>

Джеку Деннису нравилось некоторое программное обеспечение, написанное фирмой BBN для прототипа PDP-1, а в особенности ассемблер. Котока, однако, при виде этого ассемблера начинало тошнить. Ассемблер работал в режиме, абсолютно не соответствующем его стилю, в котором он привык все делать «на лету». Так что он, и еще несколько его товарищей сказали Деннису, что им хотелось бы написать свой собственный вариант. «Это плохая идея», — сказал Деннис, который хотел, чтобы ассемблер был запущен на системе как можно скорее. Он понимал, что у хакеров уйдет на это несколько недель.

Коток и остальные были непреклонны: этой программой им предстояло пользоваться каждый день, и она должна быть совершенна. (Конечно, ни одна программа не была совершенна, но это их не останавливало).

«Точно говорю тебе», — сказал Коток, гениальный двадцатилетний программист, с такой же полуулыбкой и такой же полнолицый как сам Будда, в адрес настроенного скептически, но благожелательного Джека Денниса: «Если мы напишем эту программу за выходные, и она будет работать, оплатишь ли ты нам время?».

Стоимость подобного объема работы, в соответствии с действующей сеткой оплаты, составляла чуть меньше пяти сотен долларов. «Это более или менее справедливо», — сказал Деннис, и они ударили по рукам.

Коток, Самсон, Сандерс, Вагнер и еще два человека начали работу вечером в пятницу. Они знали, что работать следует над ассемблером TX-0, оригинал которого был написан Деннисом, и который был поправлен, среди прочих, Питером Дейчем. Они не стали трогать ввод и вывод, и они не хотели переделывать алгоритмы. Вместо этого, каждый хакер брал кусок кода TX–0 и конвертировал его в код PDP-1. Спать они не собирались. Шесть хакеров за выходные наработали 250 человекочасов, создавая код, отлаживая его, и уничтожая попутно коробки с китайской едой и запивая их большим количеством Кока-Колы, приносимой из клубной комнаты TMRC. Это была самая настоящая оргия программирования. Когда Джек Деннис пришел в понедельник, то он поразился, увидев загруженный на PDP-1 ассемблер, который в качестве демонстрации ассемблировал свой собственный код в бинарный.

Под сильным влиянием хакерства, хакеры TX-0, нет, теперь уже хакеры PDP-1, за выходные создали программу, на которую компьютерная индустрия потратила бы недели, а то и месяцы. Это был проект, к которому компьютерная индустрия не приступила бы без длительного и скучного процесса постановки задачи, исследований, многочисленных рабочих встреч и исполнительской нерешительности, и, весьма вероятно – с существенными компромиссами на всём пути разработки. Весьма вероятно, что оно вообще никогда не было бы завершено. В то же время данный конкретный проект был полным триумфом Этики Хакеров.

<...>

Питеру Самсону также понравилась идея «Космических войн», но он не мог вынести вид случайно сгенерированных точек в качестве звездного неба. На настоящем небе звезды располагались в строго определенном порядке. «Мы сделаем то, что есть на самом деле», —дал себе обещание Самсон. Он взял толстый атлас звездного неба и начал вводить данные в написанную им процедуру, в результате работы которой генерировались настоящие созвездия, которые были видны в ясную ночь наблюдателю на экваторе. Присутствовали все звезды до пятой величины включительно. Самсон даже повторил их относительную яркость, управляя частотой зажигания на экране точки, представлявшей собой звезду. С помощью программного трюка он добился, чтобы по мере игры, после того как экран занимал 45 процентов неба, небо сдвигалось в нужную сторону. Помимо добавления правдоподобия, данная программа «Дорогостоящего Планетария», дала игрокам карту, по которой они могли производить стрельбу ракетами. Поэтому данную игру можно было также назвать «Стрельбы по Кассиопее».

Еще один программист по имени Дэн Эдвардс, был неудовлетворен безостановочным движением двух сражающихся кораблей, что делало игру больше похожей на тест на быстроту пальцев. Он понимал, что добавление гравитации придаст игре стратегическую компоненту. Поэтому он создал в центре экрана звезду-солнце. В том случае если вы пролетали мимо, вы могли использовать притяжение солнечной гравитации для придания скорости, но если вы были не слишком осторожны и приближались к звезде слишком близко, то солнце вас притягивало, что было неминуемой гибелью.

До того как были освоены все стратегические приемы данного усовершенствования, Шэг Гаретц, один из троицы Хайэмовского Института, разработал еще одно интересное новшество. В одном из романов Дока Смита он вычитал, что эти космические рейдеры могли исчезать в одной галактике и появляться в другой посредством «гиперпространственного тоннеля», который переводил вас в загадочное N-ное измерение. Он добавил в игру возможность перехода в «гиперпространство», позволяя игроку в отчаянный момент избежать неприятной ситуации, нажав на «паническую» кнопку, которая перебрасывала его корабль в гиперпространство. За всю игру гиперпространством было разрешено пользоваться трижды, причем, вы никогда не могли заранее знать, куда вы попадете. Иногда вас выбрасывало в непосредственной близости от солнца, и оставалось только наблюдать за тем, как ваш корабль безнадежно притягивается к звезде и находит свою безвременную кончину на ее поверхности. Отдавая должное оригинальному хаку Марвина Минского, Гаретц запрограммировал вхождение в гиперпространство так, что корабль оставлял после себя «фотонную ударную волну» — световое пятно в виде следа, часто остававшегося на дисплее в результате работы Минскитрона.

Вариации были бесконечными. Изменив несколько параметров, вы могли играть в «поливаловку», в которой торпеды выбрасывались потоками, вместо того чтобы выстреливаться по одной. «Давайте включим звездный ветер!», — восклицал кто-нибудь, и тут же хачил игру. После чего появлялся искажающий фактор (warping factor), который заставлял игроков подстраивать свои положения каждый раз после выполнения перемещений. Хотя принимались все улучшения игры, сделанные хакерами, считалось крайне плохой формой поведения никому не сообщать о «странных модификациях» игры. Поэтому эффективное общественное давление, которое вдобавок было усилено Хакерской Этикой, стимулировало изготовление новшеств, а не разрушительных свойств и предотвращало появление подобного беспорядка. В любом случае, хакеры уже занимались этими невероятными изменениями в системе, и они использовали дорогостоящий компьютер для того, чтобы играть в самую великую игру в мире.

В «Космические войны» играли до одури. Для некоторых она стала пристрастием. Хотя никто не мог официально записаться на сеанс времени, чтобы посвятить его игре, всю эту весну, каждый свободный момент на машине был занят какой-нибудь версией игры. С бутылками Коки в руке (а иногда и с деньгами на кону), хакеры пускались в марафонские турниры. Рассел написал процедуру, которая вела подсчет очков и количество общих выигранных игр, которые печатались на экране в восьмеричном виде. Машинная форма записи не представляла никакой проблемы, так как все легко читали восьмеричные числа. Через некоторое время стал очевиден главный недостаток игры: переключателями на консоли PDP-1 было крайне неудобно управлять, потому что приходилось болезненно выворачивать локти, чтобы держать руки под определенным углом. Именно по этой причине Коток и Сандерс однажды пришли в клубную комнату TMRC и начали подбирать запчасти, из которых впоследствии был собран один из первых компьютерных джойстиков. В течение, примерно, часа вдохновенной работы конструкторской мысли, они сумели собрать из частей лежавших, а то и просто валявшихся по клубной комнате, систему управления. Верхняя ее часть была из масонита, а сама корпусная коробка была изготовлена из дерева. На них были закреплены переключатели для поворота и ускорения, а также кнопка для перехода в гиперпростраство. Все кнопки управления работали бесшумно, так что вы могли тайком подобраться к вашему противнику или, в случае необходимости, скрытно нырнуть в N-е измерение.

Первая компьютерная игра Spacewar! (Звёздные войны) написанная в 1962 году для компьютера DEC PDP-1. Её рождение подробно описано в книге

Игру было принято играть с полностью потушенными верхним светом. Слева направо: возможности CRT-дисплея PDP-1; создатели Spacewar! за игрой в своё детище (наше время); фрагмент игры

<...>

Кроме того, работа с улучшенной версией системы дает вам возможность узнать о еще большем количестве задач, которые вам следует решить. Например, Марвин Минский может появиться и сказать: "Вот роботизированный манипулятор. Я хочу управлять этой рукой при помощи компьютера". После этого в мире не остается ничего существенного, кроме изготовления соответствующего интерфейса между машиной и роботизированным манипулятором, реализации управления роботом и придумывание способа создания системы, где эта роботизированная рука будет знать, что она делает. Затем вы начинаете наблюдать, как ваше детище начинает двигаться. Разве может с этим сравниться нудная лекция по инженерным методам? Каковы шансы на то, что ваш профессор, который читает эту лекцию, делал в своей жизни хотя бы нечто наполовину столь же интересное, как проблемы, которые вы решаете на PDP-1 каждый день. И кто из вас прав в этом случае?

<...>

После того как вы в действительности начинали работать, таким небольшим мелочам как сон не следовало придавать большого значения. Главным за эти тридцать часов было максимально отдаться своему делу, сгореть, достичь полного опустошения, затем пойти домой, добраться до койки и отрубиться часов на двенадцать. Альтернативой было отключиться прямо здесь — в лаборатории. Небольшой недостаток именно такого расписания, заключался в том, что было необходимо выполнять все то же самое, что делали другие люди: приходить на свидания, принимать пищу и посещать занятия. Хакеры выясняли, чем он занимается, спрашивая: "В какой фазе Гринблатт находиться сейчас?" И, кто-нибудь из тех, кто видел его недавно, говорил: "Я думаю, что он сейчас находиться в ночной фазе и должен появиться около девяти или около того". Его преподаватели не подстраивались под эти фазы, и поэтому Гринблатт не уделял должного внимания их занятиям.

<...>

Примерно в 1965 году по МТИ ходил по рукам нашумевший документ, рожденный в Rand Corporation, под названием "Алхимия и Искусственный Интеллект". Его автор, академик которого звали Герберт Дрейфус, устроил публичную порку этой области и тем, кто в ней работал. Для хакеров, его критика была в особенности непереносима, так как компьютер был для них неявной моделью поведения, по крайней мере в их теориях распространения информации, справедливости и действия. Дрейфус делал упор на до смешного ограниченную структуру компьютера (по сравнению со структурой человеческого мозга). Его завершающим убийственным доводом было резкое заявление о том, что компьютерная программа никогда не будет играть в шахматы даже на уровне десятилетнего ребенка.

После того как Гринблатт завершил работу над шахматной программой, которую он назвал MacHack, МТИ пригласил Дрейфуса для того, чтобы он сыграл с PDP-6. Хакеры собрались вокруг для того чтобы посмотреть как компьютерный заместитель Ричарда Гринблатта будет играть с этим самоуверенным, худым, рыжеволосым очкариком, резко настроенным против компьютеров. Один из пионеров в области ИИ Герберт Симон, наблюдавший за матчем, позднее вспоминал что "это было захватывающее действо… двое непримиримых, бьющихся друг с другом…". Справедливости ради стоит сказать, что Дрейфус играл очень хорошо, и, в итоге, он сделал ход, с помощью которого он мог взять ферзя своего противника. Единственное что в этом случае оставалось делать компьютеру – поставить своим ферзем шах королю Дрейфуса, так чтобы взять в вилку одновременно и короля и ферзя Дрейфуса, после чего пойти на размен ферзей. Программа повторила все в точности так как и предполагалось. После этого игра Дрейфуса развалилась, и через некоторое время ему был поставлен мат прямо в центре доски.

Цитировать книгу можно долго, так много в ней интересного: истории возникновения знаменитых хакерских журналов (и поныне действующих), легендарные личности и не менее легендарные аппараты... Главное - вовремя остановиться :) Лучше взять и прочитать книгу целиком.