понедельник, 9 июня 2008 г.

Выдержки из интервью с Дональдом Кнутом, 25 апреля 2008г.

Для справки:
Дональд Кнут.
Д. Кнут является почетным профессором Стенфордского Университета,автором 4-х томника "Искусство Программирования" и разработчиком текстового процессора TeX. Также ему принадлежит идея грамотного программирования. Подробнее о личности Д.Кнута см. википедию.








Эндрю Бинсток.
Интервью у Д.Кнута брал Эндрю Бинсток. Бинсток является главным аналитиком в Pacific Data Works, обозревателем в SD Times и старшим действующим редактором в журнале InfoWorld.









Об интервью.

"... Эндрю Бинсток и Дональд Кнут беседовали об успехе ПО с открытым исходным кодом, проблемах мультиядерной архитектуры, неутешительной нехватке интереса к грамотному программированию, опасности повторно используемого кода и той городской легенде о победе в конкурсе по программированию с одной компиляции."

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

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

http://www.webplanet.ru/interview/soft/2008/05/06/knuth.html
http://citcity.ru/18573/?comments_page=
или, если позволяет уровень владения английским, оригинал:
http://www.informit.com/articles/article.aspx?p=1193856

Здесь я постараюсь привести выдержки из ответов Д.Кнута на некоторые, показавшиеся мне наиболее интересными, вопросы:

О перспективах открытого ПО и коммерческого софта.

"Я продолжаю считать, что некоторые программы, такие как Adobe Photoshop, всегда будут превосходить по качеству конкурентов, таких как Gimp - по каким-то причинам, я действительно не знаю почему! Я действительно готов платить хорошие деньги за действительно хороший софт, если я верю, что его сделали самые лучшие программисты.

Тем не менее, помните, что мое мнение по экономическим вопросам весьма сомнительное, ведь я всего лишь преподаватель и ученый. Я ничего не понимаю в рынке."

Об использовании Unit-тестов.

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

О проблемах перехода обычного ПО на многоядерную архтектуру современных процессоров.



"Для меня это выглядит более или менее так: разработчики техники исчерпали идеи, и они дают разработчикам ПО компьютеры, которые работают быстрее всего на нескольких из ключевых тестов. Таким образом производители компьютеров пытаются переложить вину за будущую кончину закона Мура на программистов!"

"Я совершенно не буду удивлен, если вся идея мультитрединга обернется большей неудачей, чем направление "Itanium". Это направление предполагалось таким прекрасным - пока не выяснилось, что желанные компиляторы было попросту невозможно написать."

"Позвольте мне сказать так: в течение последних 50-ти лет, я написал более 1000 программ, многие из которых имели приличный размер. Я не думаю что даже 5 из них можно существенно улучшить, применив параллелизм или мультитрединг."

"Так почему я должен быть так доволен будущим, которое обещают производители компьютеров? Они думают, что "волшебная пуля" прилетит и сделает так, чтобы при помощи мультиядерности ускорились приложения, которые я использую?

Я думаю, что это несбыточная мечта (англ. pipe dream). Нет! Это неправильная метафора! "Pipeline"-ы действительно работают, а вот треды - нет. Возможно мне следовало использовать слово "пузырь"

О победе в соревновании по программированию Стенфорде в 1971-м году.



"Вот что действительно произошло:

В 1971 году Джон МакКартли решил устроить соревнования по программированию в Стенфорде.

Все, кроме меня, участники соревнования работали в его Лаборатории AI (выше на холмах вокруг Стенфорда). Они использовали WAITS систему тайм-шаринга.

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

Я использовал систему Вирта ALGOL W (предшественницу Паскаля). Моя программа не заработала с первого раза, но я мог использовать, к счастью, отличную систему Эда Саттерсвейта для оффлайновой отладки в ALGOL W. Так что мне было нужно всего 2 запуска.

Тем временем, ребята работавшие на WAITS не могли получить достаточно машинных циклов, потому что их машина была сильно перегружена.

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

Это не было честным соревнованием."

О нехватке интереса к грамотному программированию.


"Джон Бентли, вероятно, попал в точку когда его спросили, однажды, почему грамотное программирование не взяло мир штурмом.

Он заметил, что маленький процент населения является хорошими программистами, и маленький процент - хорошими писателями; вероятно, я прошу всех оказаться в обоих подмножествах."

"Пока что традиционные программы в основном хорошие - я бы дал им оценку С (или С++), но не F; поэтому, традиционные методы остаются. "

О своем стиле работы и рабочем месте.


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

О используемом для работы софте.



ОС:

- Ubuntu Linux - на отдельном лэптопе, не подключенном к сети;
- Mac - для работы в сети и графики;
- "..но фамильные драгоценности я доверяю только Linux."

ПО:

- Emacs, tex, dvips, gv, Mathematica, отладчик GDB;
- MetaPost, Adobe Photoshop или Illustrator на Mac;
- backupfs.

Дополнительные инструменты:

- собственная проверка орфографии для TeX и CWEB;
- собственный растровый шрифт для Emacs ("..потому что я ненавижу то, как изменились апостроф и левая открывающаяся кавычка в ASCII, став независимыми символами, которые более визуально не соответствуют друг другу.");

О выпуске Тома 5 Искусства Программирования к 2015 году.


"Точное время оценить невозможно, потому что, пока я не погружусь в каждый раздел, я не могу сказать, какая часть собранного материала является действительно фундаментальной, а какая - не относится к моей книге или является слишком сложной."

Об экстремальном программировании.



"экстремальное программирование", звучало как нечто неправильное... за одним исключением.

Исключение состоит в идее работы в команде и чтения исходных кодов друг друга. Эта идея очень важна, и она может даже перекрыть все те ужасные аспекты экстремального программирования, которые беспокоят меня."

Об опасности повторно используемого кода.



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

На мой взгляд, "повторного редактируемый код" гораздо, гораздо лучше, чем неприкасаемые черный ящик или набор программных инструментов."

О своем восприятии жизни.

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

О здоровье.

"У меня замечательные доктора. Сейчас я чувствую себя таким же здоровым, как всегда, несмотря на то, что мне уже 70 лет."

Комментариев нет: