Кодеры за работой. Размышления о ремесле программиста - [12]

Шрифт
Интервал

И это было незабываемое ощущение, потому что индустрия разработки ПО вымотала меня. Я не мог больше выносить всю эту политику как в мире корпораций, так и в среде свободных разработчиков. Я был сыт этим по горло. Я хотел работать над чем-то, где не было бы споров по всяким мелочам, и не хотел видеть, как мой продукт уничтожается бюрократическим решением, перед которым я бессилен.

Сейбел: А не было искушения вернуться и поработать над Mozilla?

Завински: Нет. У меня не было никакого желания снова погружаться в споры и эти долбаные противостояния по Bugzilla. Это совсем не весело. Но это неизбежно при создании больших продуктов. Если для работы над проектом требуется больше одного человека (что естественно для таких проектов, как Mozilla), по-другому не получится. Но я не хочу больше этих баталий, за многие годы это желание полностью выбили из меня. Как программист, я могу пойти работать где-то еще. Но мне это не нужно, да я и не хочу. Как только меня что-то достанет, я сразу ухожу. А если я организую собственную компанию, то не смогу там быть программистом, поскольку придется ею руководить.

Сейбел: Что вам нравится в программировании, кроме того что два миллиона человек пользуются вашим продуктом?

Завински: Трудно сказать. Думаю, поиск решения задачи. Это не совсем то же, что головоломка, да я и небольшой любитель головоломок. Просто пытаешься понять, как попасть из точки А в точку Б, и думаешь, как заставить машину выполнять то, что тебе нужно. Удовольствие от программирования заключается главным образом в этом.

Сейбел: Есть ли для вас понятие красоты кода? Помимо возможности поддержки, существует ли эстетическая составляющая?

Завински: Да, конечно. Когда что-то выражено очень верно - лаконично и по сути, - вроде хорошо сформулированного афоризма или мгновенной карикатуры, выполненной одним росчерком пера и очень похожей на оригинал. Что-то в этом духе.

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

Завински: В каком-то смысле да. Программирование все же гораздо строже. Но они очень близки во всем, что касается способности выражать собственные мысли. Никакого беспорядка: все, что приходит в голову и требует перевода в слова, выражаешь максимально четко. По-моему, именно этим программирование очень близко к сочинению прозы.

Мне кажется, здесь задействованы одни и те же отделы мозга, но выразить это словами нелегко. Я часто читаю код и чувствую, когда в нем что-то не так. Как и в большинстве договоров. Отсутствие гибкости, множество повторений. Смотрю на него и думаю: почему бы не разбить его на подпрограммы (которые мы называем параграфами). И то, что обычно вначале идут такие и такие определения, которые используются бла-бла-бла...

Сейбел: Поговорим о буднях программирования. Как вы проектируете код? Как структурируете его? Может быть, ваша недавняя работа над портированием XScreenSaver под OS X послужит примером?

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

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

На другом уровне, со стороны Мака, начинаем все с самого начала. Как расположить окно на экране? Затем в какой-то момент приходится прибегать к Xcode. При этом сложнее всего понять, как поднять и заставить работать систему сборки нормальным образом. Приходится экспериментировать, крутить то так, то сяк. Потом думаешь, может поместить этот кусок кода выше, чтобы он обращался вот к этому куску? А может быть, стоит вывернуть это наизнанку? Приходится перетасовывать немало кода, пока в голове не сформируется разумный поток управления. Потом я чищу код, перемещаю его в более подходящие файлы, так чтобы вот этот кусок кода был вместе с вот этим куском.

Это как рисовать жирные стрелки на схеме. Потом я перехожу к следующему скринсеиверу, а он использует другие три функции, которых не было в предыдущем, поэтому мне их тоже нужно реализовать. Каждая из этих задач достаточно проста. Но над некоторыми из них приходится попотеть, потому что в API для X11 есть миллион настроек для отображения текста на экране или для поворота прямоугольника. Постепенно этот кусок кода становится все сложнее. Но большинство задач довольно просты.

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

Завински: Конечно. После двух-трех раз вырезания и вставки похожего кода думаешь: ага, пора остановиться и поместить этот код в подпрограмму.

Сейбел: Представим, что вы снова работаете над проектом такого же масштаба, что и почтовый клиент. Вы говорили о том, что пишете несколько абзацев текста и список функциональных возможностей. Это практически все, что вы сделаете до начала работы над кодом?


Рекомендуем почитать
Из России в Китай. Путь длиною в сто лет

Воспоминания Е.П. Кишкиной – это история разорения дворянских гнезд, история тяжелых лет молодого советского государства. И в то же время это летопись сложных, порой драматических отношений между Россией и Китаем в ХХ веке. Семья Елизаветы Павловны была настоящим "барометром" политической обстановки в обеих странах. Перед вами рассказ о жизни преданной жены, матери интернациональной семьи, человека, пережившего заключение в камере-одиночке и оставшегося верным себе. Издание предназначено для широкого круга читателей.


«Мы жили обычной жизнью?» Семья в Берлине в 30–40-е г.г. ХХ века

Монография посвящена жизни берлинских семей среднего класса в 1933–1945 годы. Насколько семейная жизнь как «последняя крепость» испытала влияние национал-социализма, как нацистский режим стремился унифицировать и консолидировать общество, вторгнуться в самые приватные сферы человеческой жизни, почему современники считали свою жизнь «обычной», — на все эти вопросы автор дает ответы, основываясь прежде всего на первоисточниках: материалах берлинских архивов, воспоминаниях и интервью со старыми берлинцами.


Последовательный диссидент. «Лишь тот достоин жизни и свободы, кто каждый день идет за них на бой»

Резонансные «нововзглядовские» колонки Новодворской за 1993-1994 годы. «Дело Новодворской» и уход из «Нового Взгляда». Посмертные отзывы и воспоминания. Официальная биография Новодворской. Библиография Новодворской за 1993-1994 годы.


О чем пьют ветеринары. Нескучные рассказы о людях, животных и сложной профессии

О чем рассказал бы вам ветеринарный врач, если бы вы оказались с ним в неформальной обстановке за рюмочкой крепкого не чая? Если вы восхищаетесь необыкновенными рассказами и вкусным ироничным слогом Джеральда Даррелла, обожаете невыдуманные истории из жизни людей и животных, хотите заглянуть за кулисы одной из самых непростых и важных профессий – ветеринарного врача, – эта книга точно для вас! Веселые и грустные рассказы Алексея Анатольевича Калиновского о людях, с которыми ему довелось встречаться в жизни, о животных, которых ему посчастливилось лечить, и о невероятных ситуациях, которые случались в его ветеринарной практике, захватывают с первых строк и погружают в атмосферу доверительной беседы со старым другом! В формате PDF A4 сохранен издательский макет.


Дедюхино

В первой части книги «Дедюхино» рассказывается о жителях Никольщины, одного из районов исчезнувшего в середине XX века рабочего поселка. Адресована широкому кругу читателей.


На пути к звездам

Из этой книги вы узнаете о главных событиях из жизни К. Э. Циолковского, о его юности и начале научной работы, о его преподавании в школе.