Чтение онлайн

ЖАНРЫ

Кодеры за работой. Размышления о ремесле программиста
Шрифт:

Стил: Отчасти, но там больше преподавали Фортран и другое.

Сейбел: У вас в самом начале были сильные учителя?

Стил: В Латинской школе у меня были хорошие учителя по математике, они меня поощряли как раз в нужном направлении. Когда я был в девятом классе, Ральф Уэллингс — тот, кто дал мне книги накануне Дня благодарения, — предложил сделку. Он сказал: «Я заметил, что ты сдаешь все математические тесты со стопроцентным результатом. И я разрешу тебе четыре урока в неделю проводить в компьютерном классе, если на пятом ты будешь получать стопроцентный результат. Если когда-нибудь получишь меньше, договор отменяется». Это был отличный стимул. И до конца года я продолжал

блестяще сдавать тесты. Чтобы иметь доступ к компьютеру, мне пришлось очень серьезно заниматься математикой. А на следующий год учитель уже ничего не предложил — и правильно, потому что с математикой у меня стало хуже. Так что у меня были хорошие учителя, они дали мне то, что нужно, чтобы все выучить.

Сейбел: А позже, когда вы уже увлеклись компьютерами, кто именно помогал вам в этом?

Стил: Билл Мартин, конечно, который нанял меня. И Джоэль Мозес, который руководил проектом 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 лет, и я прочитал все выпуски довольно быстро.

Сейбел: Должно быть, тогда было проще в том смысле, что если понимаешь, как работает система в целом, то можно охватить умом и целую отрасль знания.

Стил: Именно так: целую отрасль. Было полно одностраничных статей. Например: «Вот новый эффективный метод хеширования». Я много читал такого.

Сейбел: Мне кажется, сейчас понимать старые статьи сложновато, они завязаны на какие-нибудь особенности старых языков или железа.

Стил: Да. Необходимость — мать изобретения: идея появляется, когда в ней есть потребность. И только позже становится понятно, что идея эта очень важна. Чтобы убрать случайные обстоятельства, взглянуть на суть идеи, нужно несколько лет. Допустим, есть эффективный способ изменить порядок битов в слове на обратный, но реализован он на языке ассемблера 7090. В основе — интересная математическая идея, но она еще недостаточно абстрагирована.

Сейбел: Это ведь то, что делает Кнут?

Стил: Верно. Кнут и такие, как он.

Сейбел: Возможно, те, кто изучает компьютерные науки в колледже, проходят все это. Но многие программисты без официального образования учатся прямо в процессе работы. Что вы можете посоветовать в таком случае? От чего вы отталкиваетесь, как вам удается читать и понимать эти статьи? Может быть, надо прочесть все до единого выпуски «САСМ», начиная с первых?

Поделиться с друзьями: