Хакеры: Герои компьютерной революции - Леви Стивен
В конце концов, Госпер определился с тем, где ему взять деньги, чтобы вернуть их флоту. Он должен был их отработать, работая на компанию, в которой была PDP-6. Он выполнил этот жесткий пункт договора, найдя работу в той же фирме, на которую Гринблатт работал весь этот год — Charles Adams. То, что компания Adams никогда работала «правильно» на PDP-6 (Хотя Гринблатт настаивал на том, что он выполнил свою часть подготовки машины к работе «от и до») не слишком беспокоило Госпера. От чего он действительно покрылся пятнами — когда он узнал, что компания Charles Adams свернула проект на PDP-6 и приобрела точную копию неповоротливого гиганта Univac, который был у военных моряков.
К этому времени увеличилось финансирование Project MAC и Билл Госпер нашел способ втиснуться в ведомость расходов. Ему не пришлось менять свои привычки так как, работая в оговоренные часы на Adams, он каждую ночь пропадал на девятом этаже, работая на PDP-6.
* * *Хакерские крылья Гринблатта к этому времени полностью окрепли. Одним из проектов, над которым он работал на PDP-6, был компилятор LISP, что позволило бы использовать на этой машине самую последнюю и наиболее совершенную версию языка, разработанного Джоном Маккарти для искусственного интеллекта. Юный Питер Дейч написал в свое время LISP для PDP— 1, но этот вариант был неэффективен, так как на «единице» было мало памяти. LISP, который работал с символами, а не числами (они легко трансформировались в бинарный вид) пожирал невероятное количество памяти.
Некоторые хакеры, включая Госпера, считали, что реализация LISP на PDP-6 является полной тратой времени. Госпер, который всегда был озабочен тем, что у компьютеров те дни не хватало вычислительной мощности, позднее изумлялся тому, как они были невежественны во время работы в лаборатории ИИ, пытаясь выполнять невозможные задачи и обвиняя в неудачах не те ничтожные машины, которые были в их распоряжении, а самих себя. На старшем курсе, Минский подкинул Госперу задачу, в ходе которой следовало изучить является ли некоторое оптическое явление стереоскопическим или монокулярным. Ему удалось сделать несколько шагов к решению этой задачи, и, в конце концов, создать изящную фигуру в виде клеверного листа, с помощью, которой удалось продемонстрировать это явление. Тем не менее, большую часть времени он бился головой о кирпичную стену, пытаясь выжать из машины больше, чем она была в состоянии сделать. Поэтому одной из задач, которую Госпер считал невозможной, состояла в разработке пригодного компилятора LISP на PDP-6, который мог бы быть полезен в качестве анализа символьных последовательностей, но никак не для полезной работы. Он считал, что это очередная глупость Минского, которую Гринблатт и остальные пытались реализовать.
У Гринблатта было другое видение проблемы. Хотя он понимал, что LISP на PDP-6 будет в некотором роде хаком, не полностью обоснованным с практической точки зрения, он видел необходимость движения в этом направлении. Это был мощный язык, давший возможность уйти вперед исследованиям в области искусственного интеллекта: это был язык, при помощи которого могли выполнять задачи, крайне сложно реализуемые иным способом, и с его помощью системы могли бы действительно обучаться. У Гринблатта только еще начали складываться конкретные очертания будущего; легкий намек на техническую реализацию хакерской мечты. Поэтому он, и еще несколько человек, даже Коток, который периодически приезжал из DEC, начали писать LISP на PDP-6. Они исписали в несколько слоев все классные доски в TMRC, и в конечном счете им удалось запустить его на машине.
Самые ответственные части были написаны Гринблаттом и еще одним хакером. Одновременная работа двух или трех человек над проектом рассматривалась как Правильная Вещь, что было весьма далеко от того, что IBM называла «человеческой волной» в программировании, когда на решение задачи бросались десятки программистов, а в итоге все заканчивалось ничем. Лучше было полагаться на двух-трех человек, чем на одинокого крестоносца, так что когда один хакер заканчивал свою тридцатичасовую сессию, подтягивался кто-нибудь еще и продолжал начатое. Это было что-то вроде команды, работавшей последовательно.
После того как PDP-6 MacLISP (названный в честь Project MAC) был доведен до ума, хакеры начали интегрировать этот компьютерный язык в свои программы, а также в свою собственную речь. Например, соглашение, принятое в LISP и использовавшее букву "p" в качестве предиката, было толчком к созданию хакерской манеры задавать вопрос. Когда кто-нибудь спрашивал «Еда-П?», то любой хакер знал, что его спрашивают, не хочет ли он пойти перекусить. Термы LISP "T" и «nil» означали, соответственно, «да» и «нет». Принятие LISP не означало уменьшения любви хакеров к ассемблерному языку, особенно на PDP-6 с ее элегантным набором инструкций. Но и Гринблатт и даже Госпер позднее поняли, что LISP был мощным средством для построения систем, которое очень хорошо укладывались в принципы Хакерской Этики.
DEC проявил интерес к MacLISP, и Коток договорился с тем чтобы Гринблатта и остальных, поздно вечером допускали в офис DEC в Мэйнарде, где они могли бы работать над программой, набирая и отлаживая код. Это было частью общей договоренности между МТИ и DEC, поэтому ни у кого не возникло никаких вопросов. Правильной Вещью было удостовериться в том, что любая хорошая программа получала максимальное распространение, потому что информация была свободной, и мир мог только выиграть от ее ускоренного распространения.
После работы над MacLISP, Гринблатт был, возможно, самым авторитетным системным хакером на PDP-6. Новый администратор лаборатории ИИ, молодой человек с югозапада страны, по имени Рассел Нофтскер, нанял Гринблатта, в основном, для того чтобы поддерживать и совершенствовать это живое существо, которое было компьютерной операционной системой. Но взгляды Гринблатта не ограничивались только системами, он очень активно интересовался концепциями искусственного интеллекта. Он решил использовать компьютерные системы для того, чтобы действительно сделать что-нибудь полезное в этой области, а так как он всю свою жизнь играл в шахматы, то было логичным, что он работал над программой для игры в шахматы. Программой, которая бы превзошла то, что в свое время написал Коток, а также остальные шахматные проекты ИИ, которые предпринимались в различных лабораториях по всей стране.
Как и любой уважающий себя хакер, он ни с чем не определился, пока не сел и не начал над ней работу. Никто не спросил у него плана работ, а он утруждал себя постановкой в известность своих начальников; Мински не ломал голову над относительными достоинствами проекта. В середине шестидесятых не было каких-то определенных путей для решения подобных задач, но хакеры с первых дней лаборатории ИИ, определили для себя эти пути — это была хакерская этика, приведенная в действие, и Гринблатт максимально следовал ей.
Он видел как играет программа Котока и сделал вывод, что это мусор. Те парни, которые ее писали, не знали как над играть в шахматы. Они были очарованы тем, как компьютер делает ходы, и они как-то упустили из вида, что идея, которая и заключалась в наименовании игры, состоит в том, чтобы рубить фигуры противника. Программа Гринблатта использовала сложные приемы искусственного интеллекта для того, чтобы понять и сделать ходы в соответствии с определенными критериями, которые он считал хорошими шахматами. Работая с двумя другими хакерами, они устроили блиц по программированию. Он сумел получить время на PDP-6 из расчета 4 часа в день, а также продолжал писать программу в оффлайне, когда он не сидел за машиной. Примерно, через неделю программа уже могла играть в шахматы. Еще через некоторое время программа была отлажена. В нее были добавлены нужные свойства, и она была полностью доведена до ума в течение нескольких следующих месяцев. Гринблатту даже был предложено получить диплом МТИ, в случае если он напишет дипломную работу по программе игры в шахматы — до этого он сам никогда бы не додумался.