Another misguided effort. EWD917.
Информатика очень мало влияет на практику программирования. Программирование часто выполняется без научного обоснования. Меня беспокоила (и сейчас беспокоит) расширяющаяся пропасть между информатикой и практиками, распространёнными в ИТ, тогда как эта отрасль должна быть высокотехнологичным аналогом информатики в «реальном мире». Меня огорчает то, что отрасль упорно опирается на здравый смысл там, где, как мне известно, необходим научный подход. Я начинал множество крестовых походов, чтобы исправить ситуацию, но они, как я замечаю с сожалением, но без стыда, не принесли больших результатов (на самом деле, результаты настолько скромные, что один из моих коллег в Эйндховене назвал меня Дон Кихотом). Со своей горячностью я подымал этот вопрос среди производственников; они обычно признавали, что пропасть существует, и потом возражали, что их бизнесу информатика не нужна. В это последнее утверждение я так и не смог поверить. И моё неверие подтвердилось в постыдной судьбе следующего промышленного проекта.
Возбуждённые рванувшими вверх ценами на разработку ПО, авторы проекта попытались решить следующую (неоспоримую) проблему: часто бывает трудно разобраться в программе, написанной другим человеком. В качестве решения проблемы они хотели разработать что-то вроде «аниматора алгоритмов», который поможет понять программу, показывая графически, как вычисление протекает во времени. Разумеется, аниматор должен был иметь что-то вроде концептуального зума, который будет демонстрировать вычисление на разных уровнях абстракции. Есть как минимум три причины, по которым этот проект провалится.
(i) Программы — это в высшей степени конденсированный интеллектуальный труд. Например, те эссе, которые я пишу о программах, приблизительно в десять раз длиннее сырого кода (raw code), который венчает эти программы. Невозможно объяснить этот фактор моей словоохотливостью (в этих эссе я пишу довольно сжато). Короче говоря, текст программы лишь верхушка айсберга. Механически реконструировать айсберг по его верхушке — напрасный труд.
(ii) Картинки — самый неадекватный метод записи отношений, которые надо учитывать в рассуждениях о программах, как бы орды педагогов ни пытались убедить нас в обратном. (Где вообще картинки адекватны? Процитирую Мориса Клайна: «Но картинки не являются предметом геометрии (!), и нам запрещено рассуждать, опираясь на картинки. Правда, большинство людей, включая математиков, опираются на картинки, как на костыль, и не могут ходить, когда у них этот костыль отнимают».) Можете провести эксперимент во время лекции. Нарисуйте несколько картинок, и самый тупой студент, который минуту назад не имел ни малейшего представления о предмете лекции, вдруг «понимающе» кивает головой, потому что он видит прямоугольники со стрелками, и их привычный вид даёт ему ложное чувство уверенности. (Кроме того, картинки слишком специфичны даже в геометрии. Если вы рисуете треугольник, то он тупоугольный или нет, хотя эта деталь может быть несущественной для доказательства.)
(iii) Анимация может показать только одно вычисление, тогда как программа есть множество всех вычислений, которые возможны под управлением этой программы. Невозможно познакомиться с большим множеством, рассматривая некоторые его (надеюсь) репрезентативные элементы. Операционное мышление встроено в этот проект, хотя неадекватность операционного мышления хорошо изучена и задокументированна.
* * *
Правда ли, что информатика ничего не может предложить ИТ? Я поделился моим анализом этого проекта с коллегой, и мы быстро поняли, что он провалится. Только Богу известно, сколько миллионов долларов может спасти информатика.
Предлагать такой анализ — щекотливое дело. Как объяснить, что проект совершенно глуп, вежливо, не раня честолюбия? Знать бы, где учились люди, которые берутся за такие проекты, — тогда я смог бы вычеркнуть несколько университетов из своего списка. Но я с большой неохотой задаю этот вопрос, потому что очень часто люди отвечают, что они вообще не учились. Мой коллега всё никак не мог понять, действительно ли эти люди верят в осмысленность своего проекта. Он не мог в это поверить, поэтому пришёл к выводу, что, находясь на работе в офисе, они думают и разговаривают на новоязе (doublespeak), набитом рекламными лозунгами, потому что все его используют и они думают, что это часть работы. У них нет выхода: они вынуждены выбирать между некомпетентностью и нечестностью. Это просто кошмар.
Но, пожалуйста, не обвиняйте нас, когда ИТ рухнет.
Остин, 21 апреля 1985 года.