Свежий номер №10 (387) / В плену у совершенства
 
Дата публикации: 12.03.2001

Игорь Гордиенко, gordi@computerra.ru

 
Страница 1
Страница 2

Страница 2
 >>

The road to wisdom?
Well it’s plain
and simple to express:

Err
and err
and err again

but less
and less
and less.
Piet Hein


Вполне уместно начать рассказ о Дональде Кнуте с риторического изумления: «И это все - один человек?!» Легендарная персона мировой компьютерной науки, Кнут стоял у основ теории компиляции языков программирования, теории формальных грамматик, методов анализа алгоритмов. Он известен как автор знаменитейшего сериала «Искусство программирования», ставшего азбукой программирования для многих поколений студентов и профессионалов. Прервав на девять лет работу над этим колоссальным проектом, Кнут создал две программные системы для подготовки сложных научных текстов и сопроводил их руководствами и пояснениями в шести книгах. Потом он пришел к созданию двух языков структурированного документирования программ и ассоциировал с ними методологию «просвещенного программирования» («Literate Programming»).

На сей день Кнут опубликовал более 20 книг и более 150 трудов по самым разным вопросам компьютерной науки: от исследования цифровых феноменов в библейских текстах и истории происхождения и изменения начертания буквы «S» до абстрактных математических проблем. Будучи профессором математики, он подготовил немало уникальных учебных курсов. Среди многочисленных премий и наград, коими награжден Дональд Кнут, самые значительные - Премия Тьюринга (1974), Национальная медаль за заслуги в науке (1979), которую традиционно вручает президент США (тогда - Джими Картер), Премия Киото (1996). Он является действительным членом Американской академии искусств и наук, Национальной академии наук, Национальной академии инженерных наук. Более двух десятков университетов (в том числе Санкт-Петербургский) шести стран мира признали Кнута доктором honoris causa. Он - одна из немногих фигур, окруженных мифами еще при жизни.

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

В преддверии

Дональд Кнут родился 10 января 1938 года в Милуоки, штат Висконсин. Пусть вам не покажется патокой: с младых лет Дон был влюблен в книги. В библиотеке его матери недавно обнаружилась первая азбука, в которой он тщательно пересчитал все буквы определенных шрифтов. Кнут гордится тем, что рано научился читать и писать и что был самым младшим в клубе книголюбов публичной библиотеки Милуоки. Столь же рано к нему пришла страсть к книгопечатанию. Он вспоминает, как помогал отцу работать с небольшим ротатором, на котором тиражировались церковные тексты (его отец Эрвин был лютеранским проповедником).

Способность мальчика легко манипулировать символами впервые проявились в восьмом классе. Местная кондитерская фабрика объявила конкурс для школьников: кто предложит больше слов, составленных из букв, образующих название фирменной марки шоколада - «Ziegler’s Giant Bar». У судей был заготовлен список из 2500 слов, и они полагали, что превзойти этот результат невозможно. Дональд предложил 4500 (!) слов, но остался недоволен: судьи не разрешили использовать апостроф. Однако деваться фабрике было некуда: школе подарили телевизор, бывший в те годы большой роскошью, а каждый ученик получил по плитке шоколада.

Плодотворная работа Кнута началась в колледже (Milwaukee Lutheran High School). Его научный доклад был отмечен на конкурсе поиска талантов, регулярно проводившимся фондом Вестингауза. Дональд придумал собственную систему мер, которую назвал «The Portzebie System of Weights and Measures». Базовой единицей длины в ней была избрана толщина недавнего выпуска журнала «MAD Magazine», а главная единица энергии называлась «чтоменябеспокоит». Редакторы «MAD Magazine», оценив неординарность мышления студента, выдали ему гонорар в 25 долларов и опубликовали доклад в 33-м номере журнала за июнь 1957 года. По сути, это и есть первая публикация Кнута.

Надо сказать, в те годы Дон не проявлял особого интереса к математике. Все свое время и силы души он отдавал музыке. Саксофон, туба - вот его роли в ансамбле колледжа, который исполнял модные тогда джазовые композиции. Вспоминая о тех временах, Кнут говорит: «Хорошо, что я ничего не смыслил в копирайтах».

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

Начала

Помыслы о карьере профессионального музыканта сами собой отошли в сторону, когда в 1956 году Дональд поступилв Технологический институт Кейза (Case Institute of Technology, ныне Case Western Reserve), Кливленд, штат Огайо.

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

Это случилось, когда, упустив автобус, он слонялся по станции в ожидании следующего рейса. Простое и изящное решение пришло в голову точно по волшебству: Дональд получил отметку «А» и - свободу от занятий по математике до конца семестра. Испытывая некоторые сомнения в такой оценке своих способностей, Кнут занялся изучением предмета самостоятельно, а в следующем семестре снова получил высшую отметку по курсу абстрактной математики. Кроме того, ему было предоставлено право выбора факультативных курсов - с наибольшим благоприятствованием в углубленных занятиях теперь уже любимой математикой.

Первое знакомство с компьютером состоялось в 1956 году. Это был электронный вычислитель IBM 650. С головой погрузившись в документацию, Кнут денно и нощно сочинял программы. В те времена, когда языки высокого уровня еще не получили распространения, программы составлялись на ассемблерах, мнемонических надстройках над машинными кодами. Безусловно, это занятие для сильных духом. Главный вывод, сделанный Кнутом после тяжких экспериментов, был таков: он способен составлять более качественные программы, чем те, что приведены в руководстве к IBM 650.

Вскоре программист начал осматривать окружающий предметный ландшафт, писать новые программы, в частности, кодировать математические функции. Первая из программ Кнута выполняла разложение на простые множители, а третья - играла в «крестики-нолики» (и не просто играла, а обучалась на основе опыта предшествующих партий). Будучи в институте капитаном баскетбольной команды, Кнут написал программу, которая на основании варьируемого набора признаков ранжировала вклады отдельных игроков в общий успех. Это достижение было с восхищением принято его товарищами по баскетбольной площадке, хотя, разумеется, и не всеми поголовно. Неслыханные в те годы дела нашли отклик на страницах «Newsweek Magazine», где было помещено фото Дональда, его команды и компьютера IBM 650 (а документацию к системе еще несколько лет украшала эта фотография).

В 1960 году Кнут с отличием окончил институт Кейза и получил степень бакалавра. Одновременно, согласно беспрецедентному решению факультета, за значительные достижения он был удостоен степени мастера. Потом, в 1963 году, последовала докторская степень в области математики, заслуженная в Калифорнийском технологическом институте. В CalTech он и пребывал несколько лет в должности профессора математики. Наряду с этим молодой профессор был консультантом по проблемам разработки программного обеспечения в славной Burroughs Corporation. Там за, казалось бы, неплохую по тем временамсумму в 5500 долларов он спроектировал и написал очень компактный компилятор на Алголе. Дональд просто не знал, что за такие программы корпорации готовы выложить сотни тысяч долларов.

В 1968 году Кнут перешел в Стэнфордский университет, где, спустя девять лет, занял кресло первого мэтра в области компьютерных наук. В 1968-69 годах он работал математиком в отделении телекоммуникаций Института оборонных исследований. В 1972-м и 1973 годах в качестве приглашенного профессора читал лекции по математике в университете Осло, Норвегия.

В 1993 году Дональд Кнут ушел в отставку и получил титул почетного профессора Стэнфордского университета в искусстве программирования. В Стэнфорде под руководством профессора Кнута защитили докторские диссертации 28 соискателей. Но после ухода в отставку он больше не руководил аспирантами и соискателями, ибо знал, что 28 - число совершенное.

Дело жизни

Кнут вышел на стезю профессионального программирования примерно в 1962 году, когда институт был позади. В то время он уже начал давать частные консультации, писать компиляторы для языков программирования. Его имя становилось все более известным среди деятелей компьютерной индустрии. Именно в 1962 году издательство Addison-Wesley обратилось к Дональду с предложением написать книгу о компиляторах. В 1966 году Кнут завершил 3000-страничный манускрипт, в процессе написания которого он разработал универсальный метод разбора для формальных грамматик. Вспоминая то время, Кнут замечает: «Это никуда не годится, писать первую главу три с половиной года». Он полагал, что три тысячи страниц рукописи превратятся в 400, максимум в 500 страниц книги.

Издатели смогли оценить амбициозность проекта, предложенного в качестве первого тома: 3000 рукописных страниц превращались почти в 2000 страниц печатного текста! И в Addison-Wesley решили запустить грандиозную серию - энциклопедию алгоритмов и программирования в семи томах. Так было принято решение о Magnum Opus Дональда Кнута - «Искусство программирования для ЭВМ» (как в свое время называлась книга в переводе нашего издательства «Мир»). В 1968 году был опубликован первый том, в 1969-м - второй том, в 1973-м - третий.

Надо заметить, что книги этой серии уже больше двадцати лет остаются заветным источником знаний для программистов всех стран. В одном из интервью Билл Гейтс заявил, что каждый «хороший программист» просто обязан прочитать первый том главного произведения Кнута. Самый богатый человек мира рассказывал, что сам проявил невероятное усердие и дисциплину, усвоив за несколько месяцев все три тома. Тогда же Гейтс сделал заманчивое предложение: те, кому удастся то же самое, могут смело присылать ему свои резюме - о дальнейшей судьбе счастливчиков он позаботится.

По словам самого Дональда Кнута, работая над книгой «Искусство программирования», он осознал, что это главное дело его жизни. Он ощутил потребность «организовать и суммировать знания о программировании компьютеров, дать этой науке строгие исторические и математические основания». К 1976 году были написаны три тома, которые разошлись общим тиражом не менее миллиона экземпляров.

Девять лет одного года

После нескольких лет невероятно интенсивной подготовки книг «Искусства программирования» Кнут прервал работу над сериалом, и неожиданно для самого исследователя перерыв продлился до 1986 года. За это время были созданы две системы подготовки текстов, а именно издательская система TеX (универсальный редактор) и конструктор шрифтов Metafont. Побочными продуктами этого процесса стали языковые системы WEB и CWEB - средства структурного документирования программ в сочетании с примыкающей методологией Literate Programming.

Название редактора Кнут составил из букв древнегреческого слова «искусство» - TеX (тау-эпсилон-хи) 1. Считается, что TеX был одной из первых серьезных программ, которые распространялась с открытыми исходниками. Ходит легенда, что заняться редактором для публикации научных текстов Кнута побудила тогдашняя попытка Xerox монополизировать подобные средства. Сам же он рассказывает, что ему просто захотелось облегчить жизнь себе и своим секретарям. Он и написал первую версию, которая распространялась в Стэнфорде свободно для всех желающих.

Все было спокойно до тех пор, пока в 1978 году в Стэнфорд не попал студент из Массачусетского технологического (как выяснилось впоследствии, это был нынешний Заслуженный инженер Sun Microsystems профессор Гай Стил [Guy Steele]). Возвратившись в MTI, он транслировал исходники редактора на мэйнфрейм. Тут все и началось… Сначала было десять пользователей, потом сто, потом тысяча, потом… «Это стало настоящим кошмаром, - рассказывает Кнут. - По мере увеличения числа пользователей выявлялось все больше ошибок, которые все труднее было исправлять». На подходе к десяти тысячам пользователей Кнут принял твердое решение: сообщил о прекращении поддержки версии и начал все с чистого листа. Позднее он пришел к выводу, что деградация первого ТеХ и возникновение нового, более совершенного продукта были объективной необходимостью - частью мирового замысла и порядка.

Итак, на протяжении почти девяти лет Дональд Кнут занимался главным образом своим редактором и его дополнениями и расширениями. Наконец, он понял, что в этих занятиях может пройти вся жизнь. А как же Magnum Opus? И Кнут составил план, рассчитанный на четыре года, в течение которых намеревался постепенно отойти от работ над TеX. Что и было успешно и почти безболезненно сделано.

В 1990 году, после выхода версии 3.0, Кнут объявил, что его роль завершена. Сопровождение редактора переходит к ученикам и приверженцам, а участие Кнута в проекте ограничивается исправлением ошибок, которые представляются ему достойными интереса. Кроме того, после каждого достаточно серьезного исправления Кнут добавляет к номеру версии один знак после точки. Теперь номера версий выглядят, например, так: 3.14159. Догадались? С устранением каждой ошибки номер версии редактора становится все ближе к числу p.

[i38724]


1 (обратно к тексту) - Читается, соответственно, по-гречески, а не по-латыни, то есть «тех», а не «текс». - Ред.

 
Страница 1
Страница 2

Страница 2
 >>


Игорь Гордиенко
gordi@computerra.ru
 


<< Ирина Маховая: «…Было обидно наблюдать общий упадок»
Все материалы номера
Структура подвига >>