Хакеры: Герои компьютерной революции - Леви Стивен. Страница 11
Так произошло и с программой печати десятичных чисел. Эта была подпрограмма [14], иногда использовавшаяся в других программах, и которая позволяла транслировать двоичные числа, которыми оперировал компьютер в обычные десятичные цифры. По словам Сандерса эта проблема являлась «своего рода павлиньим хвостом в программировании, и, если вы могли написать рабочую программу печати десятичных чисел, то вы знали о компьютере достаточно, чтобы расправить хвост и называть себя, в некотором роде, программистом. А если вы были в состоянии написать действительнохорошую процедуру, то вы могли бы попробовать называть себя хакером». Проблема превратилась в больше чем просто состязание, окончательный бамминг процедуры печати десятичных чисел превратился для хакеров в своеобразные поиски Святого Грааля.
В течение нескольких месяцев было изготовлено множество версий процедуры печати десятичных чисел. Если программист был непроходимо глуп, или был полным идиотом и совершенным «лозером», то подпрограмма конверсии отняла бы у него около сотни команд. Но любой хакер, стоивший своего имени, мог уместить ее в меньший объем. В конечном счете, попеременно убирая инструкции то в одном, то в другом месте, процедура была уменьшена до, примерно, пятидесяти инструкций.
После этого дела приняли серьезный оборот. Хакеры тратили многие часы, пытаясь найти путь, как можно было бы сделать все то же самое, но при помощи меньшего количества кода. Это стало больше чем соревнованием — это стало настоящим крестовым походом. Сколько бы сил не было потрачено, никто не был в состоянии преодолеть барьер из пятидесяти команд. Возник вопрос: а можно ли вообще сделать ее меньше? И есть ли предел, ниже которого бамнуть программу просто нельзя?
Среди многих, кто пытался решить эту головоломку, был парень по фамилии Дженсен, высокий и тихий хакер из Мэйна. Он обычно тихо сидел в Клудж Комнате и покрывал своми каракулями распечатки с таким же невозмутимым спокойствием, как живущий в лесной глуши человек неспешно обстругивает ножом деревяшку, сидя на завалинке перед своим домом. Дженсен всегда пытался найти способ как сжать свои программы в объеме и увеличить их скорость. Его код, на первый взгляд, представлял собой беспорядочную последовательность логических и арифметических команд, часто вызывающих производство различных расчетов в разных частях одного и того же 18-битного слова. Если коротко, то его стиль программирования состоял из удивительных вещей и волшебных трюков.
До Дженсена существовала некоторая устоявшаяся точка зрения, что единственным логическим алгоритмом для процедуры печати десятичных чисел является последовательное вычитание, при котором использовались таблицы степеней числа 10 так, чтобы результирующее число попадало в соответствующие столбцы цифр. Дженсен как-то догадался, что таблица со степенями десятки была не нужна. Он придумал алгоритм, который позволял конвертировать числа обратным образом, а при помощи хитрого программного фокуса печатать их в нужном порядке. Кроме того, было дано сложное математическое доказательство всего этого, которое становилось понятным только после того, как хакеры увидели программу Дженсена, пришпиленную к доске объявлений, из которой было видно, что ему удалось преодолеть лимит длины программы для печати десятичных чисел. В ней было сорок шесть команд. Все присутствовавшие, с отпавшими челюстями уставились на код. Марж Сандерс потом припоминала, что хакеры, впервые за много дней, вели себя необычно тихо.
«Мы поняли, что дошли до логического конца», —сказал позднее Боб Сандерс, — «Это была Нирвана».
Компьютеры могут изменить твою жизнь к лучшему.
Данное мнение проявлялось очень незаметно. Хакеры крайне редко пытались объяснить массу преимуществ компьютерного пути познания людям со стороны. Кроме того, данный постулат занимал главенствующее положение в течение всего времени суток хакеров TX-0, также как и среди поколений хакеров, которые пришли за ними.
Но несомненным было то, что компьютер действительно изменил их жизнь, он обогатил ее, показал в ней цель, и сделал ее более яркой и насыщенной. Он сделал их хозяином большей части своей судьбы. Питер Самсон позднее говорил: «Примерно 25-30% процентов из того, что мы делали, было сделано только потому, что мы это могли делать, и делали хорошо. И примерно шестьдесят процентов делалось только ради того, чтобы то, что мы делаем, начинало жить само по себе, словно родное дитя, которое после своего появления на свет, подчиняется собственным правилам. И именно это было самой привлекательной вещью в программировании, своеобразным зовом свыше.… После того как вы решали проблему поведения [железа или программы], она устранялась раз и навсегда, и результат был в точности тем самым, что вы имели в виду и ничем иным».
Как и волшебную лампу Аладдина, компьютер можно было заставлять выполнять желания.
Вне всякого сомнения, от использования этой силы мог выиграть каждый, и каждый мог выиграть от мира, построенного на основах Хакерской Этики. Хакеры молча верили в это, своевольно расширяя общепринятую точку зрения на то, что компьютеры могут делать и что они должны делать, ведя мир к новым способам взаимодействия с компьютером.
Тем не менее, новые идеи пробивали себе дорогу с большим трудом. Даже в таком продвинутом учреждении как МТИ, некоторые профессоры рассматривали маниакальное влечение к компьютерам как весьма легкомысленную трату времени или даже как легкую форму сумашествия. Однажды один из хакеров TMRC по имени Боб Вагнер попытался объяснить профессору инженерного факультета, что представляет собойкомпьютер. Тогда Вагнер испытал на своей шкуре столкновение компьютерных и антикомпьютерных точек зрения, еще более живо и отчетливо, чем когда он слушал курс по численному анализу. Профессор, читавший численный анализ, требовал, чтобы каждый студент выполнял свое домашнее задание на грохочущих и неуклюжих электромеханических калькуляторах. Коток был в той же группе. Его, как и Сандерса, ужаснула перспектива работы с этими низкотехнологичными устройствами. «Почему мы должны это делать, если у нас есть компьютер?», — спросили они друг друга.
После этого Вагнер начал работу над компьютерной программой, которая эмулировала поведение калькулятора. Идея была возмутительной по своей сути. Для кого-то это было абсолютно нецелесообразным использованием дорогостоящего машинного времени. Оно, в соответствии со стандартными представлениями, должно было использоваться только для вещей, максимально полно использовавших возможности компьютеров и для которых в ином случае потребовалось бы множество математиков и масса времени на обсчет результатов. Хакеры считали иначе: все, что выглядело интересным и прикольным, заслужило быть отданным на съедение компьютеру. Они искренне верили в это и занимались этим, используя интерактивные способности машины, когда никто не заглядывает через плечо и не требует допуска для выполнения конкретного проекта. После двух или трех месяцев напряженной работы над тонкостями организации арифметики с плавающей точкой (это необходимо для того, чтобы программа знала, как обращаться с дробными числами) Вагнер написал три тысячи строк кода. Причем это все делалось на машине, которая не имела даже элементарного метода для умножения двух чисел. В результате, Вагнер заставил компьютер чудовищной стоимости выполнять работу, которую в состоянии сделать калькулятор, стоимостью в тысячи раз меньше. Чтобы отдать должное этой иронии, он назвал программу Expensive Desk Calculator [15], после чего с гордостью продемонстрировал всему классу свое задание, сделанное на компьютере, на одном из занятий.
Ему поставили «единицу». «Вы использовали компьютер!», — сказал ему профессор, — «А это не может бытьправильно».
Вагнер даже не попытался что-либо объяснить. Как бы он смог донести до своего учителя, что компьютер только что сделал реальностью то, что до сего момента относилось к разряду невероятных возможностей? Или как он смог бы ему объяснить то, что еще один хакер написал программу, которая называлась Expensive Typewriter [16], которая превращала TX-0 в нечто, на котором можно было набирать строки текста и печатать их на Flexowriter-е. Вы могли бы представить себе профессора, который принимает классную работу, написанную при помощи компьютера?
14
т.е. программа внутри программы
15
Дорогостоящий Настольный Калькулятор
16
Дорогостоящая Пишущая Машинка.