Чтение онлайн

на главную - закладки

Жанры

Кодеры за работой. Размышления о ремесле программиста
Шрифт:

Сейбел: Но вам ведь все еще интересно программировать самому?

Кнут: Разумеется, да. Мне просто необходимо программировать. Я просыпаюсь утром, и у меня уже готово несколько предложений литературной программы. Перед завтраком — уверен, поэтам это знакомо — я должен сесть за компьютер и записать этот абзац, и только потом могу идти есть, и я счастлив. Без этого я не могу, должен это признать.

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

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

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

Кнут: Ситуация похожа на качели. В 1960-х наука сильно опережала промышленность, и программы, создаваемые в промышленных компаниях — кроме разве что системы заказа авиабилетов, — были абсолютно смехотворны для людей из университетов.

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

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

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

Сейбел: В 1974 году вы писали о том, что к 1984 году у нас будет «Утопия 84» — идеальный язык программирования, который вытеснит Кобол и Фортран; кроме того, вы говорили о явных признаках того, что такой язык постепенно обретает реальные очертания. С 1984 года прошло уже два десятилетия — похоже, ваши прогнозы не сбылись.

Кнут: Нет, ничего такого не было.

Сейбел: Это в вас тогда говорил ваш юношеский оптимизм?

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

дальше.

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

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

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

Сейбел: Вы и сами создали несколько языков, пожалуй, самый популярный из них — ТеХ.

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

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

Кнут: Не знаю. Наверное, да. Мне по-своему очень не нравится, что считается, будто каждый язык должен быть универсальным, потому что они будут универсальными — но по-разному. Как в UNIX есть 30 определений регулярных выражений в одном флаконе — в зависимости от того, какую часть UNIX вы используете, вам предлагается немного отличное представление о регулярных выражениях. Если внутри каждого вашего инструмента находится машина Тьюринга — разве это нормально? Я на самом деле думал про ТеХ, что чем больше в нем языка программирования, тем меньше в нем того, что непосредственно связано с версткой.

Вводя расчет простых чисел в руководство по использованию ТеХ, я не считал это должным использованием ТеХ. Я представлял себе это так: «Да, кстати, глядите-ка: собаки могут стоять на задних лапах, а ТеХ может вычислять простые числа».

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

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

Во время работы над ТеХ я обращался к сотням лет истории человечества, не желая отказываться от всего того, до чего дизайнеры книг дошли за многие века, и начинать заново, сказав: «В общем, забудьте тех ребят; знаете, мы будем рассуждать логически». В этом случае суть дела сводилась, в основном, к тому, чтобы выбрать чудовищно сложную задачу и найти сравнительно небольшой набор базисных элементов для ее поддержки. Вместо 1000 элементов у меня 100 базисных элементов или около того. Но пойти дальше, сведя все к 50 или 10 элементам — что нужно было бы сделать для математической ясности, — мне кажется, такой путь просто не сработает. Задача изготовления книг очень сильно взаимосвязана со сложностью реального мира, который просто противится любым упрощениям.

Поделиться:
Популярные книги

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Кай из рода красных драконов

Бэд Кристиан
1. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов

Хозяйка Проклятой Пустоши. Книга 2

Белецкая Наталья
2. Хозяйка Проклятой Пустоши
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка Проклятой Пустоши. Книга 2

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Потусторонний. Книга 2

Погуляй Юрий Александрович
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Потусторонний. Книга 2

Чапаев и пустота

Пелевин Виктор Олегович
Проза:
современная проза
8.39
рейтинг книги
Чапаев и пустота

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

Лютая

Шёпот Светлана Богдановна
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Лютая

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5