Стивен Леви - Хакеры: Герои компьютерной революции
Госпер восторгался тем, как компьютер находил решение для игры в HI-Q, потому что его подход был «контринтуитивным». Он испытывал большое уважение к программам, которые использовали способы, которые на первый взгляд выглядели невозможными, но на самом деле использовали все преимущества глубокой математической логики лежащей в основе проблемы. Контринтуитивное решение возникало из понимания магических связей между вещами в широкой массе численных связей, на которых, в конечном счете, и основывалось хакерство. Открытие этих взаимоотношений, которые составляли новую математику, стало крестовым походом, главной задачей для Госпера, и он стал все больше и больше тратить время на PDP-1 и в TMRC. Эти его изыскания, сделали его незаменимым и главным «матхакером», который не сильно интересовался системными программами, но был в состоянии разрабатывать удивительно красивые (не интуитивные!) алгоритмы, которые могли бы помочь системным хакерам выкинуть несколько инструкций из процедуры, или преодолеть умственный затык, мешавший работе программы.
Госпер и Гринблатт представляли два подхода к процессу хакерства, существовавших в TMRC и PDP-1: Гринблатта интересовала прагматическая сторона построения систем, а Госпера занимали математические методы их обоснования. Каждый из них уважал сильную сторону другого, и они часто вдвоем принимали участие в различных проектах, совместно работая над теми вещами, которые наилучшим образом раскрывали способности каждого из них. Более того, они сделали существенный вклад во все еще находившуюся в зачаточном состоянии культуру, которая начала цвести полным цветом на девятом этаже ТехСквера. По различным причинам, именно здесь, в этом месте с «горячими» технологиями, эта культура начала буйно расти, доводя Хакерскую Этику до ее наивысшей точки.
Ходу пьесы было суждено поменяться уже через несколько актов. Клудж Комната, в которой работала PDP-1 под управлением системы с разделением времени, которую Джек Деннис писал в течение года, все еще пользовалась популярностью при необходимости ночного хакинга, и в особенности для игры в «Космические войны». Но истинные хакеры все больше и больше предпочитали иметь дело с компьютером, работавшим в составе Project MAC. Он располагался среди других машин, на ярко освещенном и плохо обставленном девятом этаже ТехСквера, где избежать непрерывного гула от работавших компьютерных кондиционеров можно было, только нырнув в один из нескольких крошечных офисов. Здесь же находился клуб TMRC, со своей никогда не иссякающей машиной, полной Кока-Колы, машиной по размену денег, созданной в свое время Сандерсом. По соседству с клубом находилась Инструментальная Комната, где всю ночь заседали хакеры, споря о том, что для непосвященных выглядело сложно понимаемыми и загадочными вещами.
Эти споры были движущей жизненной силой хакерского сообщества. Иногда спорщики срывались на крик, когда кто-нибудь настаивал на определенном виде схемы кодирования для ассемблера или специфическом виде интерфейса, или о каком-нибудь особенном свойстве компьютерного языка. Именно этиразличия заставляли хакеров стучать по доске, или кидать мел через всю комнату. Это было не столько битвой различных эго, сколько попыткой понять, что же является Правильной Вещью. Этот термин для хакеров имел особый смысл. Под Правильной Вещью при решении любой проблемы, будь то вопросы программирования, несоответствие аппаратных интерфейсов, проблемы в программной архитектуре, подразумевалось такое решение, которое… в общем, которое этой Правильной Вещью и было. Совершенный алгоритм. Вы могли бы разбиться в лепешку, но найти такое решение, что любой, у которого была хотя бы одна извилина в голове, мог увидеть его очевидность, словно прямую линию, прочерченную между двумя точками, после которого не было никакого смысла пытаться сделать это лучше. «Правильная Вещь», —как объяснял позднее Госпер, «весьма четко означает уникальное, корректное и элегантное решение… Оно удовлетворяет всем ограничениям, существующим на этот момент. Предполагается, что такое решение, существует для большинства проблем».
И у Госпера и у Гринблатта были свои сильные доводы в пользу именно своего видения проблемы, но обычно Гринблатт быстрее уставал от «этих разъедающих сознание человеческих интерфейсов» и удалялся для того, чтобы действительно реализовать что-нибудь, элегантное или не очень. По его мнению, вещи надо было создавать, и если их никто не будет хакерить, то тогда это сделает он. Он будет сидеть с карандашом и бумагой, или иногда за консолью PDP-1 и пытаться родить в муках свой код. Программы, которые писал Гринблатт, были очень устойчивы в работе, что также означало, что и принципы, которыми он пользовался, также были весьма твердыми и устойчивыми. В его программах были встроены различные обработчики, которые предотвращали вылет целой программы из-за одной единственной ошибки. Время от времени Гринблатт полностью погружался в процесс тщательной отладки своей программы. Госпер считал что Гринблатт, больше чем кто-либо, очень любит находить и устранять ошибки, и он иногда подозревал, что тот специально пишет глюкавый код того, чтобы потом его можно было спокойно пофиксить.
Госпер предпочитал публичный стиль хакинга. Ему нравилось работать при стечении народа, и часто начинающие хакеры подтаскивали стулья и садились за его спиной, для того чтобы можно было смотреть на консоль, на которой он создавал свои искусные хаки, и которые весьма часто содержали небольшие, но интересные математические фокусы. С дисплейными хаками он делал практически все, что было возможно, применяя самые неожиданные алгоритмы, вызывавшие непредсказуемые серии пиротехнических эффектов на CRT. Госпер вел себя как экскурсовод, объясняя все, что он делал по мере своего продвижения, иногда подчеркивая, что даже клавиатурные ошибки могут представлять собой интересный численный феномен. Он непрестанно удивлялся тому, как компьютер возвращал назад что-нибудь неожиданное. Он воспринимал все, что выдавал компьютер с бесконечным уважением. Иногда выглядящее случайным событие могло отвлечь его в сторону удивительным проявлением иррациональных корней квадратного уравнения или трансцендентной функции. Некоторые колдовские манипуляции над процедурами в программе Госпера могли со временем могли превратиться в ученые записки, подобные вот этой, начинавшейся такими словами:
«Известно что, из-за слабой изученности, непрерывные дроби используются достаточно редко. Я предлагаю нижеследующую демонстрацию относительных преимуществ использования непрерывных дробей в сравнении с другими численными представлениями.»
Споры в Инструментальной Комнате перестали быть просто тусовками. Здесь часто бывал Коток, и на этих собраниях принимались весьма важные решения, касавшиеся компьютера, который он разрабатывал для DEC. Этой новой машиной была PDP-6. Еще на стадии своей разработки PDP-6 рассматривалась в TMRC как абсолютно Правильная Вещь. Коток иногда подвозил Госпера домой в Нью-Джерси, во время каникул или праздников, разговаривая за рулем о том, что компьютер будет иметь целых шестнадцать независимых регистров. (Регистр (аккумулятор) — это место, в котором компьютер производит вычисления. Шестнадцать подобных регистров давали машине не виданную ранее гибкость). У Госпера перехватывало дыхание: Он думал: «Это будет величайший компьютер в мировой истории!».
DEC полностью завершил работы над PDP-6 и передал первый прототип в Project MAC. Все пришли на нее посмотреть. И хотя по всем признакам он выглядел как компьютер для коммерческих пользователей, в своей основе это все-таки была хакерская машина. И Коток, и его шеф — Гордон Белл, постоянно держали в уме свои дни на TX-0, а потому старались в PDP-6 реализовать все то, что их связывало по рукам и ногам на TX-0. Кроме того, Коток внимательно слушал все, что говорили ребята из TMRC, а в особенности он прислушивался к Питеру Самсону, который предложил использовать 16 регистров. В наборе команд у PDP-6 было все что нужно, общая архитектура машины тоже выглядела очень хорошо. Доступ до этих 16 регистров производился тремя различными способами, которые можно было между собой комбинировать, что позволяло много сделать при помощи всего одной команды. В PDP-6 был также реализован «стек», делавший возможным совмещение подпрограммы, программы и кода. Для хакеров, знакомство с PDP-6 и ее восхитительным и прекрасным набором команд означало, что отныне они имеют весьма мощный словарь, которым теперь можно выражать тонкие оттенки настроений, для которых ранее использовались грубые и неуклюжие слова.
Минский усадил хакеров за написание нового системного программного обеспечения для PDP-6, прекрасной машины цвета морской волны, с тремя большими стойками оборудования, более рационально организованной управляющей панелью, по сравнению с «Единицей», с рядами блестящих тумблеров и мерцающей матрицей огоньков. Вскоре они проникли в психологию этой новой машины также глубоко, как это было на PDP-1. Но на «шестерке» можно было идти еще дальше. Однажды хакеры игрались в Инструментальной Комнате в TMRC с процедурой печати десятичных чисел, небольшой программой, которая позволяла компьютеру печатать арабские цифры. Кто-то предложил использовать для этой цели новые, так бросающиеся в глаза, команды PDP-6, те самые, которые использовали стек. Ранее эти команды в своем коде никто не использовал. По мере того как программа, после использования инструкции PUSH-J начала печатать на экране десятичные цифры, то оказалось, что к всеобщему удивлению, вся процедура печати десятичных чисел, занимавшая обычно не менее страницы кода, поместилась в последовательность из шести инструкций длиной. После этого, весь TMRC, единодушно, согласился с тем, что команда PUSH-J, несомненно, является Правильной Вещью, которая стоила того, чтобы ее реализовали в PDP-6.