наняться оператором клавишного перфоратора, думая, что более-менее квалифицирован для этой работы. Но меня нигде не брали - отчасти потому, что мне еще не было 18-ти. Но это я понял позже. Мне просто отвечали: “Не звоните нам, мы сами вам позвоним” - и все.
Где-то в начале июля я узнал, что Билл Мартин из MIT ищет Лисп-программистов. Я подумал: “Ага, я же знаю Лисп”. Я так часто бывал в MIT, что раздобыл документацию Лиспа в лаборатории искусственного интеллекта MIT. Я пробирался в лаборатории и возился с компьютерами. Везде было открыто - это было еще до протестов в связи с вьетнамской войной, из-за которых им пришлось врезать дверные замки. Так что в выпускном классе я писал свою собственную реализацию Лиспа для IBM 1130.
И вот я пришел в офис к Биллу Мартину, такой тощий парень из ниоткуда, сунул голову в дверь и спросил: “Я слышал, вы ищете Лисп-программистов?” И он не рассмеялся мне в лицо, а посмотрел на меня и сказал: “Вам придется пройти мой тест по Лиспу”. “ОК, прямо сейчас?” Я уселся и два часа разбирался со всеми вопросами и задачами. Закончив, я протянул ему бумаги, он минут десять смотрел то, что я понаписал, и наконец сказал: “Я вас беру”.
Сейбел: Лисп вы тоже освоили на курсах MIT для школьников?
Стил: Отчасти, но там больше преподавали Фортран и другое.
Сейбел: У вас в самом начале были сильные учителя?
Стил: В Латинской школе у меня были хорошие учителя по математике, они меня поощряли как раз в нужном направлении. Когда я был в девятом классе, Ральф Уэллингс - тот, кто дал мне книги накануне Дня благодарения, - предложил сделку. Он сказал: “Я заметил, что ты сдаешь все математические тесты со стопроцентным результатом. И я разрешу тебе четыре урока в неделю проводить в компьютерном классе, если на пятом ты будешь получать стопроцентный результат. Если когда-нибудь получишь меньше, договор отменяется”. Это был отличный стимул. И до конца года я продолжал блестяще сдавать тесты. Чтобы иметь доступ к компьютеру, мне пришлось очень серьезно заниматься математикой. А на следующий год учитель уже ничего не предложил - и правильно, потому что с математикой у меня стало хуже. Так что у меня были хорошие учителя, они дали мне то, что нужно, чтобы все выучить.
Сейбел: А позже, когда вы уже увлеклись компьютерами, кто именно помогал вам в этом?
Стил: Билл Мартин, конечно, который нанял меня. И Джоэль Мозес, который руководил проектом Macsyma, - для работы над. ним меня и взяли в MIT.
Сейбел: И в итоге вы проработали над этим проектом в течение всей учебы в колледже?
Стил: Да, я работал в MIT все то время, пока учился в Гарварде. Летом это была работа на полную ставку, остальное время - на полставки.
Я очень старался подгадать так, чтобы с утра быть в Гарварде, потом заехать в MIT, поработать там часа два-три, ну, а после этого домой.
Сейбел: И вы работали только над проектом Macsyma на Лиспе?
Стил: Да. В частности, я отвечал за интерпретатор Maclisp. Йонл Уайт, ответственный за интерпретатор и компилятор, к тому времени стал уже чем-то вроде гуру. Я взял интерпретатор, и это разделение труда было почти идеальным. Моим наставником был Йонл Уайт. Но фактически все, кто работал над проектом, взяли меня под крыло. Еще я познакомился кое с кем из лаборатории искусственного интеллекта. Поэтому я без проблем поступил в магистратуру MIT - там уже знали, кто я и чем занимаюсь.
Сейбел: Вы стали бакалавром компьютерных наук?
Стил: Да. Вообще-то я хотел получить диплом по математике, слушал соответствующие лекции, но потом понял, что у меня нет способностей к изучению бесконечномерных банаховых пространств. Я просто изнывал над ними. Но, к счастью, я слушал достаточно лекций по компьютерам, просто из интереса, чтобы сменить специальность. На самом деле диплом был по прикладной математике - компьютерные науки были ее разделом, а прикладная математика относилась к инженерному факультету Гарварда.
Сейбел: С какими машинами вы имели дело в Гарварде?
Стил: С DEC PDP-10. В кампусе была PDP-10, но, кажется, к ней допускали только магистров. А нам давали доступ к телетайпным терминалам коммерческой системы, которую Гарвард арендовал или что-то в этом роде.
Сейбел: Вы бы хотели что-то изменить в том, каким путем пришли к программированию? Может быть, вы что-то упустили?
Стил: У меня никогда не было четко поставленной цели. И я не жалею о своем пути. Думаю, в моей жизни было много интересных совпадений и полезных напутствий.
Сейчас я понимаю, что посещать одновременно MIT и Гарвард было довольно необычно. Я курсировал туда-сюда и говорил, например: “Профессор с того берега утверждает то-то и то-то”. А мне отвечали: “Чепуха, на самом деле вот как все обстоит”. Так что я за короткий срок получил обширные знания.
Необычным было и то, что связь с MIT у меня появилась уже в старших классах. В 15 лет я мог возиться с компьютером за миллион долларов, а тогда миллион долларов был немалой суммой. Поэтому у меня нет сожалений насчет того, что жизнь могла бы сложиться иначе. И потом, я принимаю все таким, как есть.
Сейбел: В чем больше всего изменились ваши взгляды на программирование по сравнению с теми годами? Кроме того, что теперь вы понимаете, что пузырьковая сортировка - не лучший способ?
Стил: Пожалуй, вот что: сейчас невозможно знать абсолютно все, что происходит внутри компьютера. Есть вещи, вам неподвластные, - сегодня невозможно знать все о всем программном обеспечении. В 1970-е память компьютера вмещала только 4000 слов. Можно было сделать дамп ядра и проверить каждое слово. По распечаткам исходного кода операционной системы можно было понять, как она работает. Я изучал утилиты для работы с диском и с устройством для чтения перфокарт, создавал свои варианты. И мне казалось, что я понимаю, как работает вся IBM 1130. Ну, или понимал в этом достаточно для себя. Сейчас все не так.
Сейбел: Вам помогали книги?
Стил: В 1970-е - конечно, да. Например, “Искусство программирования” Кнута.
Сейбел: Вы прочли ее от корки до корки?
Стил: Почти. Я делал столько упражнений, сколько мог. Некоторые требовали знаний, которых у меня было, - скажем, высшей математики. Такие я пропускал или делал кое-как. Но первые два тома и солидный кусок третьего я прочел очень внимательно. Сортировке я учился по книге алгоритмов Ахо, Хопкрофта и Ульмана. Что до остальных, то надо поглядеть в моей библиотеке. Я ведь настоящий старьевщик и храню все свои книги. Но те, которые я назвал, сразу всплывают в памяти. И еще книги по Лиспу. Например, та, что издали Беркли и Бо-броу: это скорее собрание отдельных статей, но я многое вынес из него. Потом я начал читать журнал “SIGPLAN” и ежемесячный журнал “Communications of the ACM” (“CACM”). Тогда в “САСМ” было полно технических подробностей, их интересно было читать.
Вспоминаются два эпизода. В Латинской школе я участвовал в научных конкурсах, делал кое-какие компьютерные проекты. И вот член жюри одного из конкурсов спросил меня: “А почему бы тебе не вступить в АСМ?” Не помню, как звали этого человека, но я последовал его совету, за что ему очень благодарен.
А в Гарварде, если у меня было утром окно, я шел в библиотеку и делал одно из двух: читал “Scientific American”, узнавая что-нибудь из истории науки, или “САСМ”, заглядывая в будущее. Я не пропускал ни одной колонки Мартина Гарднера про математические игры. А в “САСМ” я читал то, что меня интересовало. В1972 году журналу исполнилось только 15 лет, и я прочитал все выпуски довольно быстро.
Сейбел: Должно быть, тогда было проще в том смысле, что если понимаешь, как работает система в целом, то можно охватить умом и целую отрасль знания.
Стил: Именно так: целую отрасль. Было полно одностраничных статей. Например: “Вот новый эффективный метод хеширования”. Я много читал такого.
Сейбел: Мне кажется, сейчас понимать старые статьи сложновато, они завязаны на какие-нибудь особенности старых языков или железа.
Стил: Да. Необходимость - мать изобретения: идея появляется, когда в ней есть