Кодеры за работой. Размышления о ремесле программиста
Шрифт:
Эти разговоры отражают состояние данной области на определенном этапе, и, конечно, отдельные вопросы, затронутые в книге, с течением времени станут представлять лишь исторический интерес. Но даже в такой молодой области, как программирование, история сможет многому нас научить. Кроме того, думаю, все поднятые в книге темы раскрывают глубинный смысл того, что же такое разработка программного обеспечения, как мы можем лучше создавать его и что будет полезно программисту сегодня и через несколько поколений.
В заключение о названии книги: мы назвали ее “Кодеры за работой” по аналогии с уже упомянутой серией “Писатели за работой” журнала “Paris Review” и книгой “Founders at Work” (Учредители за работой) издательства Apress, которая применяет к основанию технологической компании примерно тот же подход, какой эта книга пытается применить к компьютерному программированию.
Я пониманию,
1. Джейми Завински
Лисп-хакер [2] , один из первых разработчиков Netscape и владелец ночного клуба, Джейми Завински (Jamie Zawinski, JWZ) принадлежит к той избранной группе хакеров, которых узнают как по настоящим именам, так и по трехбуквенным инициалам.
Завински начал программировать еще подростком - поступил в лабораторию искусственного интеллекта при университете Карнеги-Меллона в качестве программиста на языке Лисп. Пробыв в колледже ровно столько, чтобы его возненавидеть, он около десяти лет проработал в мире Лиспа и искусственного интеллекта, удивительным образом погрузившись в умирающую хакерскую субкультуру, пока другие программисты, его сверстники, вырастали на микрокомпьютерах.
2
Хакер - ИТ-специалист высшей квалификации, в совершенстве изучивший работу компьютерных систем и ПО. Хакерами часто называют взломщиков программ, что в общем случае неверно.
– Прим. науч. ред.
Он работал в Калифорнийском университете в Беркли с Питером Норвигом, который описал его как “одного из лучших программистов, которых он когда-либо нанимал”, а затем в Лисп-компании Lucid, где участвовал в разработке редактора Lucid Emacs, позже переименованного в XEmacs, которая в итоге пришла к большому расколу проекта Emacs - одному из самых известных в истории свободного ПО.
В 1994 году он наконец покинул компанию Lucid и мир Лиспа и перешел в Netscape, где стал одним из первых разработчиков UNIX-версии броузера Netscape Navigator, а позже - почтового клиента Netscape.
В 1998 году Завински, как и Брендан Айк, стал одним из основателей mozilla.org - организации, которая занималась переводом броузера Netscape в проект с открытым исходным кодом. Однако год спустя, разочарованный в отсутствии прогресса на пути к выпуску продукта, он покинул проект и приобрел ночной клуб DNA Lounge в Сан-Франциско, которым владеет до сих пор. В настоящее время Завински отдает все свои силы борьбе с Калифорнийским управлением по контролю за потреблением алкоголя, рассчитывая превратить клуб в место встречи любителей живой музыки всех возрастов.
В этом интервью мы среди прочего говорим о том, почему C++ - отвратительный язык программирования, о радости оттого, что миллионы людей используют созданные тобой программы, а также о том, как важно “пинать” подающих надежды программистов.
Сейбел: Как вы научились программировать?
Завински: О, это было так давно, что я едва помню. Впервые я использовал компьютер для программирования, наверное, в восьмом классе. У нас было несколько компьютеров TRS-80, и мы дурачились с Бейсиком. По-моему, это вообще были внеклассные занятия. Помнится, невозможно было даже сохранять программы, так что мы просто вводили те, что печатались в журналах и так далее. Затем я прочел стопку книг. Помню, я читал книги по языкам, которые не мог использовать на наших компьютерах, и писал на бумаге программы на языках, о которых только прочитал.
Сейбел: Что это были за языки?
Завински: Один из них - APL. Я прочел статью про него и подумал, что это классный язык.
Сейбел: Ну да, не нужно иметь навороченную клавиатуру. [3] А в старших классах были компьютерные уроки?
Завински: В старших классах мы изучали Фортран. И все.
Сейбел: Как же вы пришли к Лиспу?
Завински:
3
Язык программирования APL отличается очень короткой нотацией (большинство операций обозначаются одним-двумя символами), что делает программы крайне непонятными для чтения, но достаточно простыми для записи.
– Прим. науч. ред.
Сейбел: Значит, запустить программу на Лиспе вам впервые удалось в Карнеги-Меллоне?
Завински: Пожалуй, да. Какое-то время мы дурачились с языком XLISP, который использовался на Маках. Хотя, думаю, это было позже. Я там по-настоящему научился программировать (на рабочих станциях PERQ, установленных для проекта Spice) на языке Spice Lisp, который затем стал языком CMU Common Lisp. Странное это было место. Мы узнавали, что такое разработка программного обеспечения, на ежедневных собраниях - просто слушали и все. Но встречались и действительно забавные персонажи, например парень, который был кем-то вроде нашего менеджера - присматривал за нами. Звали его Скеф Хоу-ли - этакий белобрысый детина довольно дикого вида. Выглядел просто устрашающе. Говорил он мало. Сколько раз, бывало, сижу я в своем отсеке - работаю, что-то делаю, пишу программу на Лиспе. И тут, шаркая, подходит босой Скеф с кружкой пива и становится позади меня. Я ему: “Привет”, - а он в ответ буркнет что-то или вообще промолчит. Просто стоит и смотрит, как я жму на клавиши. Я что-то делаю, и тут он вдруг: “Пффф, ошибка”, - и уходит. А я остаюсь в полном недоумении. Такой дзэнский подход: учитель стукнул меня палкой - значит, надо помедитировать.
Сейбел: Я связался по электронной почте с Фальманом, и он написал, что вы были талантливы и быстро всему учились. Но он также припомнил вашу недисциплинированность. “Мы потихоньку пытались научить его работать в команде, научить писать такой код, чтобы вы или кто угодно еще мог его понять и через месяц”. Вы помните эти уроки?
Завински: Не помню, чтобы я учился чему-то такому. Конечно, очень важно писать код, к которому потом сможешь вернуться. Но мне сейчас 39, а тогда было 15, и кое-что уже забылось.
Сейбел: В каком году это началось?
Завински: В 1984 или 1985. Думаю, летом, когда я из 10 класса перешел в 11. Занятия в школе заканчивались часа в четыре или около того, я отправлялся туда и оставался там до восьми-девяти вечера, хотя и не каждый день. Так или иначе, я проводил там немало времени.
Сейбел: И после школы вы ненадолго пришли в Университет Карнеги-Меллона?
Завински: Да. Дело в том, что я ненавидел учиться в старших классах. Это было самое жуткое время в моей жизни. И перед выпуском я спросил Фальмана, не возьмет ли он меня на полный день. Он ответил: “Нет, но у меня есть друзья, которые начинают новое дело. Поговори с ними”. Это была фирма Expert Technologies (ETI). Кажется, Фальман был в деле. Они разрабатывали систему автоматической пагинации “желтых страниц” на Лисп, и я уже знал там кое-кого, кто работал с Фальманом. Они взяли меня, и все было хорошо, но через год я запаниковал: “Господи, я же устроился на эти две работы совершенно случайно, такое больше не повторится. Что будет, когда я уйду отсюда?” Без диплома колледжа мне светил разве что Макдональдс. Значит, надо было добывать диплом.