Питер Сейбел - Кодеры за работой. Размышления о ремесле программиста
Сейбел: Что это были за языки?
Завински: Один из них - APL. Я прочел статью про него и подумал, что это классный язык.
Сейбел: Ну да, не нужно иметь навороченную клавиатуру.[3] А в старших классах были компьютерные уроки?
Завински: В старших классах мы изучали Фортран. И все.
Сейбел: Как же вы пришли к Лиспу?
Завински: Я читал много фантастики. Мне казалось, что искусственный интеллект - это действительно классно, что компьютеры скоро покорят мир. И я решил почитать что-нибудь еще на эту тему. У меня в старших классах был приятель, Дэн Зигмонд, мы обменивались книгами и поэтому оба выучили Лисп. Однажды он пошел на встречу группы пользователей компьютеров Apple в Университете Карнеги-Мел-лон - там можно было просто обменяться программами, и Дэн надеялся добыть кое-что бесплатно. Он разговорился с каким-то студентом колледжа, и тот сказал: “Ого, пятнадцатилетний парень, который знает Лисп, - это фантастика. Спроси Скотта Фальмана насчет работы”. Дэн так и поступил. Фальман взял его на работу. Тогда Дэн сказал: “Возьмите и моего друга”, - то есть меня. Так что в итоге мы оба оказались у Фальмана. Думаю, он размышлял примерно так: “Раз уж эти школьники интересуются такими штуками, не будет большого вреда, если они поболтаются в лаборатории”. Нам поручили самую простую грязную работу - надо было что-то перекомпилировать, когда выходила новая версия компилятора, и попробуй пойми, как это делается. Просто жуть. Представьте: двое ребят-школьников, а вокруг аспиранты занимаются языками программирования и искусственным интеллектом.
Сейбел: Значит, запустить программу на Лиспе вам впервые удалось в Карнеги-Меллоне?
Завински: Пожалуй, да. Какое-то время мы дурачились с языком XLISP, который использовался на Маках. Хотя, думаю, это было позже. Я там по-настоящему научился программировать (на рабочих станциях PERQ, установленных для проекта Spice) на языке Spice Lisp, который затем стал языком CMU Common Lisp. Странное это было место. Мы узнавали, что такое разработка программного обеспечения, на ежедневных собраниях - просто слушали и все. Но встречались и действительно забавные персонажи, например парень, который был кем-то вроде нашего менеджера - присматривал за нами. Звали его Скеф Хоу-ли - этакий белобрысый детина довольно дикого вида. Выглядел просто устрашающе. Говорил он мало. Сколько раз, бывало, сижу я в своем отсеке - работаю, что-то делаю, пишу программу на Лиспе. И тут, шаркая, подходит босой Скеф с кружкой пива и становится позади меня. Я ему: “Привет”, - а он в ответ буркнет что-то или вообще промолчит. Просто стоит и смотрит, как я жму на клавиши. Я что-то делаю, и тут он вдруг: “Пффф, ошибка”, - и уходит. А я остаюсь в полном недоумении. Такой дзэнский подход: учитель стукнул меня палкой - значит, надо помедитировать.
Сейбел: Я связался по электронной почте с Фальманом, и он написал, что вы были талантливы и быстро всему учились. Но он также припомнил вашу недисциплинированность. “Мы потихоньку пытались научить его работать в команде, научить писать такой код, чтобы вы или кто угодно еще мог его понять и через месяц”. Вы помните эти уроки?
Завински: Не помню, чтобы я учился чему-то такому. Конечно, очень важно писать код, к которому потом сможешь вернуться. Но мне сейчас 39, а тогда было 15, и кое-что уже забылось.
Сейбел: В каком году это началось?
Завински: В 1984 или 1985. Думаю, летом, когда я из 10 класса перешел в 11. Занятия в школе заканчивались часа в четыре или около того, я отправлялся туда и оставался там до восьми-девяти вечера, хотя и не каждый день. Так или иначе, я проводил там немало времени.
Сейбел: И после школы вы ненадолго пришли в Университет Карнеги-Меллона?
Завински: Да. Дело в том, что я ненавидел учиться в старших классах. Это было самое жуткое время в моей жизни. И перед выпуском я спросил Фальмана, не возьмет ли он меня на полный день. Он ответил: “Нет, но у меня есть друзья, которые начинают новое дело. Поговори с ними”. Это была фирма Expert Technologies (ETI). Кажется, Фальман был в деле. Они разрабатывали систему автоматической пагинации “желтых страниц” на Лисп, и я уже знал там кое-кого, кто работал с Фальманом. Они взяли меня, и все было хорошо, но через год я запаниковал: “Господи, я же устроился на эти две работы совершенно случайно, такое больше не повторится. Что будет, когда я уйду отсюда?” Без диплома колледжа мне светил разве что Макдональдс. Значит, надо было добывать диплом.
План был такой: я работаю на полставки в ETI, а остальное время учусь, тоже в половинном режиме. На деле же вышло, что работать и учиться пришлось по полной. Так продолжалось недель шесть, может, даже девять. Знаю только, что успел пропустить выбор курсов на семестр, так что деньги было уже не вернуть. Но не успел получить какие-нибудь оценки. В общем, учусь я или нет, непонятно.
Это было ужасно. В школе тебе говорят: мол, у нас тут один отстой и тесты, но в колледже все будет лучше. Поступаешь в колледж, и первый год там все то же самое. И тебе говорят: в магистратуре будет лучше. Все тот же отстой, только в другом месте - не для меня. Вставать в восемь, зубрить. Мне не разрешили пропустить курс “Введение в вычислительную технику”, где объясняли, как пользоваться мышью. “Я полтора года работаю в этом университете, - говорил я, - и знаю, как пользоваться мышью”. “Нет, мы не можем позволить вам, - отвечали мне. - У нас такой порядок”. И все в таком же духе. Я не выдержал и бросил колледж. И рад, что сделал это.
Потом я работал в ETI года четыре или около того, пока компания не стала разваливаться. Мы работали на Лисп-машинах[4] серии TI Explorer, и я - кроме того, что работал над экспертными системами, - тратил массу времени на возню с пользовательским интерфейсом и на понимание того, как они вообще работают, сверху донизу. Я любил их, любил копаться в операционной системе и понемногу осознавать, как это все устроено.
Я написал кучу кода и разместил в нескольких группах новостей объявление о том, что ищу работу, предлагая при этом взглянуть на фрагмент моего кода. Питер Норвиг увидел его и назначил мне собеседование. Моя тогдашняя подружка переехала сюда, в Калифорнию, чтобы учиться в Университете Беркли, и я переехал вместе с ней.
Сейбел: Норвиг тогда был в Беркли?
Завински: Да. Это была очень странная работа. Там был целый выводок практикантов, которые исследовали понимание людьми естественных языков: это были лингвисты по образованию, которые слегка занимались программированием. И нужен был тот, кто собрал бы написанные ими куски и обрывки кода и сляпал бы из них что-то работающее.