Хакеры: Герои компьютерной революции - Леви Стивен. Страница 22
Эти споры были движущей жизненной силой хакерского сообщества. Иногда спорщики срывались на крик, когда кто-нибудь настаивал на определенном виде схемы кодирования для ассемблера или специфическом виде интерфейса, или о каком-нибудь особенном свойстве компьютерного языка. Именно этиразличия заставляли хакеров стучать по доске, или кидать мел через всю комнату. Это было не столько битвой различных эго, сколько попыткой понять, что же является Правильной Вещью. Этот термин для хакеров имел особый смысл. Под Правильной Вещью при решении любой проблемы, будь то вопросы программирования, несоответствие аппаратных интерфейсов, проблемы в программной архитектуре, подразумевалось такое решение, которое… в общем, которое этой Правильной Вещью и было. Совершенный алгоритм. Вы могли бы разбиться в лепешку, но найти такое решение, что любой, у которого была хотя бы одна извилина в голове, мог увидеть его очевидность, словно прямую линию, прочерченную между двумя точками, после которого не было никакого смысла пытаться сделать это лучше. «Правильная Вещь», —как объяснял позднее Госпер, «весьма четко означает уникальное, корректное и элегантное решение… Оно удовлетворяет всем ограничениям, существующим на этот момент. Предполагается, что такое решение, существует для большинства проблем».
И у Госпера и у Гринблатта были свои сильные доводы в пользу именно своего видения проблемы, но обычно Гринблатт быстрее уставал от «этих разъедающих сознание человеческих интерфейсов» и удалялся для того, чтобы действительно реализовать что-нибудь, элегантное или не очень. По его мнению, вещи надо было создавать, и если их никто не будет хакерить, то тогда это сделает он. Он будет сидеть с карандашом и бумагой, или иногда за консолью 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.
Разговоры и споры из Инструментальной Комнаты часто переносились на обед. Предпочтительной кухней практически всегда оказывалась китайская кухня. Она была дешевой, изобильной и хорошо доступной ночью. (Вторым, более худшим вариантом, была находившаяся неподалеку тошниловка под названием F&T Diner, располагавшаяся в старом железнодорожном вагоне, отделанном красно-коричневыми панелями. Хакеры прозвали ее «Красная Смерть»). В большинство субботних вечеров, а иногда и посреди недели, обычно поздно вечером, после десяти часов, группа хакеров направлялась куда-нибудь в бостонский Чайнатаун, иногда на синем Chevy 1954 года с откидным верхом, принадлежавшем Гринблатту.
Китайская кухня также была системой, и хакерское любопытство было применено к этой системе с тем же усердием, с каким оно применялось к новому компилятору LISP. Самсон был ее ревностным поклонником, начиная с его первого знакомства с ней в TMRC, и периодических посещений ресторанчика «Joy's Pong», что на центральной площади университетского городка. В начале шестидесятых, он даже выучил достаточное количество китайских иероглифов, для того чтобы самостоятельно разбираться в меню и заказывать эти таинственные блюда. Госпер относился к этой кухне еще энергичней; он рыскал по всему Чайнатауну в поисках ресторана, работавшего после полуночи, и однажды он нашел нечто подходящее — маленький ресторан, размещавшийся в небольшом подвальчике, которым владела семья китайцев. На первый взгляд, все что там готовилось, было ничем не примечательной едой, но он заметил, что некоторые китайцы из числа посетителей едят блюда, выглядящие весьма странно и необычно. Он решил привести сюда Самсона.