Выбрать главу

Эдсгер Вибе Дейкстра

Научная фантастика и научная реальность в информатике

Как среди практиков информатики, так и среди широкой публики бытует масса недоразумений касательно информатики, и цель данной беседы — прояснить эти недоразумения, поскольку они вредят нам всеми мыслимыми способами.

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

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

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

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

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

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

Ранее я говорил, что достижения информатики, к сожалению, игнорируются. Что же, если бы это было именно так, не было бы повода для тревоги: разрыв между полезными достижениями в лаборатории и их практическим применением неизбежен. В нашем случае, однако, есть повод бить тревогу, поскольку на протяжении последних десятилетий разрыв между информатикой и практическим использованием компьютеров только расширился. В то время как информатика делала большие шаги к превращению в строгую, точную науку, компьютерная практика в основном пребывала в застое. Я не преувеличиваю: физики до сих пор убеждены, что ORTRAN — последнее слово в информатике, химики продолжают использовать BASIC, COBOL стал для бакалавра тем же, что и APL для инженера-электронщика. Человеческая склонность привязываться к источнику своих бед зарекомендовала себя как важный стабилизирующий фактор во многих браках и религиях, однако из-за своей болезненной склонности к неадекватным инструментам эти дисциплины переступили черту, а которой им уже не помочь.

Эти наблюдения обычно относятся к «случайному пользователю», но в последнее время проблема усилилась из-за того, что она повлияла на многие университетские учебные курсы таким образом, что вместо первоклассных учёных они теперь готовят третьесортных программистов.

Что же, вы можете возразить, что эти люди сами себя считают не программистами, а физиками, химиками и т. д., но и в профессиональной области картина столь же безрадостна. Мы все слышали о «Шаттле», который не был запущен из-за ошибки в программном обеспечении синхронизации, поэтому я должен привести вам другой пример. Недавно Британская железная дорога установила свою первую компьютерную систему сигнализации на одной из веток, и они разрекламировали в надежде продать её другим железнодорожным компаниям, что во избежание риска от использования компилятора в целях безопасности система была написана в машинных кодах. Очевидно, даже не ставилось од сомнение, что промышленные компиляторы сыграют с вами злую шутку. Другая область, полная страшных историй, — разработка VLSI (СБИС, сверхбольшие интегральные схемы — прим. перев.). В арсенале разработчиков среди прочих инструментов имеется программа — очень дорогая в эксплуатации, — которая пытается восстановить схему по фотошаблону, поскольку программа, производящая фотошаблон, ненадёжна. Но алхимия коммуникационных протоколов превосходит их всех, вместе взятых; первоначально разработанные телекоммуникационными инженерами для компенсации случайных аппаратных сбоев, они стали настолько громоздкими, что вызывают гораздо больше ошибок передачи, чем те, которые они должны были бы исправлять, и проверка их реализации стала сложной задачей: распутывание этого лубка может стать темой диссертации. И всех этих несуразностей можно было бы избежать, поскольку информатика начала углублённое и успешное изучение проблем компиляции и синхронизации двадцать с лишним лет назад. Слишком много для разрыва между наукой и практикой.