Питер Сейбел «Кодеры за работой»
Похоже, что за границей пользуются популярностью книги, которые представляют собой сборники интервью у людей определенных профессий. Когда-то мне уже попадалась книга Пионеры программирования, для которой автор интервьюировал (бррр, ну и словечко) создателей различных языков программирования, на этот раз хочу рассказать про еще одну подобную книгу — «Кодеры за работой. Размышления о ремесле программиста» за авторством Питера Сайбела, который сам является «программистом-писателем или писателем-программистом», как написано во введении. В ней представлены 15 интервью с известными в определенных кругах программистами, которые внесли заметный вклад в развитие IT и языков программирования. Не все фамилии мне были знакомы до чтения этой книги, тем полезнее было чтение «Кодеров» в плане ознакомления с историей IT.
Некоторые программисты, у которых брал интервью Питер Сейбел, имеют почтенный возраст и начинали свою программерскую деятельность еще в 60-ые годы прошлого века, продолжая заниматься этим увлекательным делом и сейчас. В интервью они рассказывают о том, что из себя представляло программирование в то время, когда компьютеры были большие, как они подсели на этот наркотик, и что из этого получилось. Затем разговор переходит о современном программировании. Интервьюируемые (еще раз бррр) рассказывают о том, как они проектируют программы прежде чем писать код (или сразу начинают писать код), чем пользуются для отладки (используют ли отладчики или пользуются просто выводом на печать), рассказывают о том, чем пользуются для написания кода.
Пишешь программу, потом наступает озарение, все переписываешь — написание программы может занять год. Поэтому теперь я предпочитаю целый год думать над ней. Просто я ничего не набираю на клавиатуре.
Джо Армстронг
Но это все общие для всех интервью моменты, самое интересное начинается, когда Сейбел начинает разговаривать о том, в чем «кодеры» особенно преуспели. Здесь надо перечислить тех, у кого же он брал интервью, и чем они знамениты.
Все начинается с Джейми Завински (aka JWZ), которого во введении представляют как лисп-хакера (хакер не в смысле «взломщик», а в смысле «ИТ-специалист высшей квалификации»). Он работал над форком Emacs — Lucid Emacs. Он также работал в Netscape. До чтения этой книги я думал, что код браузера Netscape Navigator был основан на коде браузера Mosaic, но оказалось, что это не так.
Большинство основателей компании Netscape были разработчиками броузера NCSA/Mosaic. Они разрабатывали разные версии, которые по сути представляли собой три разные программы. И все шестеро, делавших это, оказались в Netscape. Они не использовали повторно старый код, но уже решали подобную задачу ранее.
…
Я никогда не видел код броузера Mosaic (кстати, я до сих пор его не видел).
Джейми Завински рассказал о том, как проходила работа в Netscape, о проблеме «второй системы», о которой писал Фредерик Брукс в Мифическом человеко-месяце. В конце интервью он размышляет о том, как можно учить программированию, что для освоения профессии нужно читать чужой качественный код (об этом будут говорить и другие собеседники автора).
Программирование на Си, как вы наверное знаете, малоприятное занятие, поэтому я старался как можно дольше держаться подальше от всего этого. А C++ — просто гадость. С ним все не так.
Большинство собеседников автора вряд ли знакомы не программистам, единственном исключением может быть Брэд Фицпатрик — создатель Живого Журнала. Хотя сейчас он уже никаким образом не связан с ЖЖ, но это первое, что приходит на ум, когда кто-то произносит его фамилию. В данный момент он работает в Google. В своем интервью он рассказывает в основном о том, как создавался ЖЖ, как происходит работа в Google и как он обычно проводит собеседования при приеме на работу.
Все в Живом Журнале было чем-то вроде игры. Все, что связано с безопасностью — вроде постов только для друзей и закрытых постов, — появилось после того, как приятель описал, как пошел на вечеринку, а на следующий день проснулся пьяный в канаве. Его родители прочли это и подняли шум: «Как? Ты пьешь?» Вот он и предложил: «Брэд, надо сделать возможность блокировать чтение этого дерьма». А я ему: «Будет сделано!» У нас уже была система френдов (друзей), и мы сделали так, чтобы некоторые сообщения были доступны только друзьям, — оставалось не добавлять в друзья своих родителей, и все.
Очень интересное интервью получилось с Дугласом Крокфордом — создателем JSON, а также человеком, участвующем в развитии JavaScript. Удивительно, что сам язык JavaScript он воспринимает как одну большую ошибку, с которой теперь приходится считаться и пытается ее как-то выправить.
В 1999 году развитие этого языка замерло, все должны были его забыть, и он должен был умереть. Но вместо этого совершенно случайно возник Ajax, и теперь JavaScript — самый важный язык программирования в мире.
Крокфорд был сторонником того, чтобы не принимать стандарт ECMAScript 4 с кардинальными и мало продуманными, на его взгляд, изменениями. Вместо этого была принята версия ECMAScript 3.1 с менее масштабными изменениями, эта версия стала называться ECMAScript 5.
В качестве продолжения разговора с Дугласом выступает интервью с Бренданом Айком — непосредственно создателем JavaScriprt и сторонником отвергнутой версии стандарта ECMAScript 4. В данный момент Брендан Айк работает в Mozilla Foundation и отвечает за разработку браузера Firefox. Он также как и Джейми Завински когда-то работал в Netscape. В своем интервью он рассказал о возможном будущем JavaScript, о том, какие языки повлияли на его создание, про инструменты отладки.
Пожалуй, самым известным из представленных в книге людей можно назвать Дональда Кнута — автора многотомника по алгоритмам «Искусство программирования», а также автором системы верстки TeX. В интервью он говорит про оптимизацию кода, когда это надо делать, а когда от оптимизации получается только вред, рассказывает о тестировании программ. У него получилось очень насыщенное по полезности интервью, из него можно надергать много интересных и полезных цитат, пока ограничусь лишь двумя.
Никогда нельзя с точностью утверждать, что программа корректна. У вас может быть достаточно причин, чтобы в это верить, но при этом вы никогда не добираетесь до конца цикла. Это теоретически невозможно.
…
Я всю жизнь был придирчивым. И чтобы получить удовольствие от обнаружения ошибок, мне нужно просто забыть, что программу написал я сам. Я пытаюсь представить, что это чья-то чужая программа.
Кстати, при разговоре с другими программистами Питер Сейбел часто задавал вопросы относительно того, читали они «Искусство программирования» Кнута от корки до корки, выборочно или просто купили эти книги и поставили на полку. Ответы были разные. 🙂
Еще один сравнительно известный человек, у кого брал интервью Сейбел — это Кен Томпсон — один из авторов UNIX. Оказывается, он же предложил кодировку UTF-8.
Нет смысла подробно описывать интервью каждого «кодера», поэтому просто перечислю тех, кого еще не упомянул в посте.
- Джошуа Блох. Главный Java-архитектор в Google.
- Джо Армстронг. Создатель языка Erlang.
- Саймон Пейтон-Джонс. Один из инициаторов проекта, в результате которого появился язык программирования Haskell, ведущий разработчик Glasgow Haskell Compiler (GHC).
- Питер Норвиг. Глава исследовательского отделения Google.
- Гай Стил. Как написано во введении: «Участвовал в работе комитета по стандартам, определивших облик языков Common Lisp, Фортран, Си, ECMAcript и Scheme».
- Дэн Ингаллс. «Участвовал в реализации семи поколений Smalltalk — от первого прототипа до нынешней версии с открытым исходным кодом — Squeak».
- Питер Дойч. Автор Ghostscript.
- Френ Аллен. Единственная женщина, среди представленных в книге «кодеров». Она проработала в IBM 45 лет, занимается автоматической параллелизацией программ.
- Берни Козелл. Участвовал в создании софта для первых узлов сети ARPANET.
Книжка мне понравилась. С одной стороны ее можно читать, чтобы чуть подробнее узнать историю развития IT, о том, какие неудобные были раньше компьютеры и все такое прочее. С другой стороны, можно узнать «секреты» того, как работали великие программисты, написавшие уже чуть ли не в школе программу для игры в шахматы, и усугубить чувство собственного ничтожества, но одновременно найти интересные мысли по организации работы для себя (взгляды на процесс программирования у некоторых интервьюируемых полностью противоположны). Заодно можно узнать их отношение к современному программированию и чем плох C++ (чуть ли не каждый «кодер» в интервью пнул этот язык), зато многие, кто упомянул Python, говорят о нем в положительном ключе. Удивительно, но большинство собеседников автора используют Emacs.
На мой взгляд, главный недостаток книги — это отсутствие фотографий и дат рождения тех, у кого берут интервью. Сама книга читается легко, может быть за исключением тех мест, где идут рассуждения о функциональных языках и монадах в Haskell. Да и Столлмана почему-то упорно называют Стеллменом, но это уже вопрос переводчику.
В завершение приведу еще несколько цитат.
Тратьте 20% своего времени на узнавание чего-нибудь нового.
Джо Армстронг
Если бы можно было забраться в прошлое и изменить только одну вещь, я бы попробовал убедить первобытных людей не использовать для счета пальцы. Насколько стало бы легче жить их потомкам. Хотя, с другой стороны, мы много вынесли из своих попыток совместить десятичную систему счета со степенями двойки.
Гай Стил
Сегодняшнее программирование, по большей части, совсем не интересно, поскольку сводится к подбору волшебных заклинаний — нужно просто совмещать части чужих программ, делая из них новые программы
Дональд Кнут
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Leave a comment