Кодеры за работой. Размышления о ремесле программиста
Шрифт:
Сейбел: Отрывка текста, где было слово?
Стил: Отрывка из собственно руководства. Итак, в средней колонке шли слова по алфавиту, а по бокам от них - слова из этих отрывков. Я подумал, что при помощи IBM 1130 справлюсь с этим. А так как в ее оперативной памяти помещалось только 4000 слов, было ясно, что придется работать с данными на диске. Так что мне пришлось изучить методы сортировки данных вне оперативной памяти. Интересной в этой программе была не столько возможность генерации ключевых слов в контексте, сколько именно эта возможность сортировки слиянием вне оперативной памяти. Программа оказалась
Сейбел: А сколько времени прошло с того момента, как вы узнали о компьютере в подвале, до написания этой программы? Месяцы? Недели?
Стил: Это случилось в течение первых двух лет. Не уверен, был ли это первый год. Я выучил Фортран осенью 1968-го. И помню, что APL был моим третьим языком, значит, язык ассемблера я освоил на Рождество или чуть позже. Помню, что APL я выучил весной 1969-го, потому что тогда в Бостоне проходила Весенняя объединенная вычислительная конференция.
У IBM там была выставка, посвященная всем их продуктам, прежде всего APL-360, и я бродил вокруг их стенда. По окончании выставки они собирались выбросить демонстрационные распечатки от терминала Selectric, и тут я подошел и спросил: “Вы хотите это выкинуть?” Женщина, которая этим заведовала, удивленно поглядела на меня и протянула мне эту бумагу - так, словно это был рождественский подарок. Это и был рождественский подарок.
Сейбел: Что за бумага?
Стил: Фальцованная бумага от терминала Selectric, на котором они последние пару дней демонстрировали возможности APL. Небольшие примеры программ и все то, что они там набирали. Вот при помощи этих примеров да еще буклета IBM с этой выставки я и выучил APL.
Сейбел: Значит, в MIT вам было хорошо, но вы все же пошли учиться в Гарвард, и при этом работали в MIT. Почему?
Стил: Когда пришло время подавать документы в колледж, я подал бумаги в MIT, Гарвард и Принстон, но учиться хотел в MIT. Меня приняли во все три. Директором Бостонской латинской школы был Уилфрид О'Лири, классицист старой школы, истинный джентльмен. И он сказал моим родителям: “Вы знаете, что вашего сына приняли в Гарвард, а он собирается пойти в MIT?” То есть он надавил на них, они надавили на меня, и в конце концов я решил пойти в Гарвард.
Родители были за то, чтобы я нашел работу на лето, а не болтался дома, - ну, знаете, этот классический синдром. Мне хотелось программировать и не хотелось работать за копейки. Я пытался наняться оператором клавишного перфоратора, думая, что более-менее квалифицирован для этой работы. Но меня нигде не брали - отчасти потому, что мне еще не было 18-ти. Но это я понял позже. Мне просто отвечали: “Не звоните нам, мы сами вам позвоним” - и все.
Где-то в начале июля я узнал, что Билл Мартин из MIT ищет Лисп-программистов. Я подумал: “Ага, я же знаю Лисп”. Я так часто бывал в MIT, что раздобыл документацию Лиспа в лаборатории искусственного интеллекта MIT. Я пробирался в лаборатории и возился с компьютерами. Везде было открыто - это было еще до протестов в связи с вьетнамской войной, из-за которых им пришлось врезать дверные замки. Так что в выпускном классе я писал свою собственную реализацию Лиспа для IBM 1130.
И вот я пришел в офис
Сейбел: Лисп вы тоже освоили на курсах MIT для школьников?
Стил: Отчасти, но там больше преподавали Фортран и другое.
Сейбел: У вас в самом начале были сильные учителя?
Стил: В Латинской школе у меня были хорошие учителя по математике, они меня поощряли как раз в нужном направлении. Когда я был в девятом классе, Ральф Уэллингс - тот, кто дал мне книги накануне Дня благодарения, - предложил сделку. Он сказал: “Я заметил, что ты сдаешь все математические тесты со стопроцентным результатом. И я разрешу тебе четыре урока в неделю проводить в компьютерном классе, если на пятом ты будешь получать стопроцентный результат. Если когда-нибудь получишь меньше, договор отменяется”. Это был отличный стимул. И до конца года я продолжал блестяще сдавать тесты. Чтобы иметь доступ к компьютеру, мне пришлось очень серьезно заниматься математикой. А на следующий год учитель уже ничего не предложил - и правильно, потому что с математикой у меня стало хуже. Так что у меня были хорошие учителя, они дали мне то, что нужно, чтобы все выучить.
Сейбел: А позже, когда вы уже увлеклись компьютерами, кто именно помогал вам в этом?
Стил: Билл Мартин, конечно, который нанял меня. И Джоэль Мозес, который руководил проектом Macsyma, - для работы над. ним меня и взяли в MIT.
Сейбел: И в итоге вы проработали над этим проектом в течение всей учебы в колледже?
Стил: Да, я работал в MIT все то время, пока учился в Гарварде. Летом это была работа на полную ставку, остальное время - на полставки.
Я очень старался подгадать так, чтобы с утра быть в Гарварде, потом заехать в MIT, поработать там часа два-три, ну, а после этого домой.
Сейбел: И вы работали только над проектом Macsyma на Лиспе?
Стил: Да. В частности, я отвечал за интерпретатор Maclisp. Йонл Уайт, ответственный за интерпретатор и компилятор, к тому времени стал уже чем-то вроде гуру. Я взял интерпретатор, и это разделение труда было почти идеальным. Моим наставником был Йонл Уайт. Но фактически все, кто работал над проектом, взяли меня под крыло. Еще я познакомился кое с кем из лаборатории искусственного интеллекта. Поэтому я без проблем поступил в магистратуру MIT - там уже знали, кто я и чем занимаюсь.
Сейбел: Вы стали бакалавром компьютерных наук?
Стил: Да. Вообще-то я хотел получить диплом по математике, слушал соответствующие лекции, но потом понял, что у меня нет способностей к изучению бесконечномерных банаховых пространств. Я просто изнывал над ними. Но, к счастью, я слушал достаточно лекций по компьютерам, просто из интереса, чтобы сменить специальность. На самом деле диплом был по прикладной математике - компьютерные науки были ее разделом, а прикладная математика относилась к инженерному факультету Гарварда.