прилагаться к другому коду. То есть мы на это надеемся. Задача-то трудная.

Сейбел: Вам нравится работать в Google?

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

Сейбел: То есть вы главным образом заняты производством. Можете ли вы сравнить работу в Google Labs с вашей прежней деятельностью в Bell Labs? Что между ними общего?

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

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

Томпсон: Да, но меня не проверяли.

Сейбел: Не проверяли! Вы не можете вносить код в репозиторий?

Томпсон: Да, не могу.

Сейбел: Вы просто не стали этим заниматься или у вас есть какие-то философские возражения относительно стандарта кодирования Google?

Томпсон: Не занимался. А потом понял, что мне это не нужно.

Сейбел: То есть вы работаете в своей песочнице? Большей частью пишете на Си?

Томпсон: Да, в основном на Си. И тестирование, и так поиграться - на Си, а стандарт Google - C++, и только C++. Не велико искусство программировать на C++, но мне не нравится. Вызывает внутреннее сопротивление.

Сейбел: Вы работали в AT&T с Бьерном Страуструпом. Вы каким-то образом участвовали в разработке C++?

Томпсон: Похоже, у меня сейчас будут проблемы.

Сейбел: Не без того.

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

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

Сейбел: Как вы сейчас считаете: хороший это язык или плохой?

Томпсон: Безусловно, у него есть сильные стороны. Но в принципе я считаю, что этот язык плохой. Многое он делает только наполовину, к тому же это просто куча взаимоисключающих идей. Все, кого я знаю лично или по работе в компании, выбирают подмножество этого языка, и это разные подмножества. Так что это не лучший язык для передачи алгоритма - для того чтобы сказать: “Вот, я написал, пользуйтесь”. Он слишком велик, слишком сложен. И, очевидно, порожден комиссиями.

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

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

Томпсон: Скорее второе, чем первое.

Сейбел: Похоже, многие говорят: “Черт возьми, C++ - это ужас!” При этом все его используют. Например, это один из четырех официальных языков Google. Почему же тогда его продолжают использовать, раз он так плох?

Томпсон: Не знаю. Думаю, он доживает последние дни в Google. Сейчас здесь больше его противников, чем сторонников.

Сейбел: И они переходят на Java?

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

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

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

Сейбел: А с какими инструментами разработки вам больше всего нравилось работать?

Томпсон: Я люблю уасс. Мне очень нравится уасс. Она делает как раз то, чего от нее хочешь. А вот ее дополнение Lex - просто ужас. Не делает ничего из того, что надо.

Сейбел: А вы им все равно пользуетесь или пишете лексические анализаторы вручную?

Томпсон: Пишу вручную. Так намного проще.

Сейбел: Доводилось ли вам заниматься литературным программированием по примеру Дональда Кнута?

Томпсон: Нет. Это отличная идея, но на практике реализовать ее почти невозможно.

Сейбел: Почему?

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

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

Томпсон: Вот вы сделали два варианта. Один из них - реальный, тот, который исполняет машина. А второй - нет. И он нужен, только когда он значительно короче первого. Если же объем одинаковый, то можно читать тот, который работает. Если один вариант значительно короче, менее детализирован и из него можно извлечь все что надо - отлично. Но очень часто его недостаточно, и за деталями приходится обращаться к другому. В зависимости от того, что вам нужно, вы читаете либо один, либо второй. Но пытаться сделать два микроскопических описания алгоритма - на языке программирования и на английском - может, Кнут это и умеет, а я так не могу.

Сейбел: Вы читали какую-нибудь из его литературных программ?

Томпсон: Только то, что было в его ранних статьях. Из недавнего - ничего.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату