Плоды непонимания
The fruits of misunderstanding. EWD854.
Такое впечатление, что некоторые вещи возможны только в мире ИТ (computing). Объявлено о разработке новой продукции, и все глотают слюни в предвкушении её увидеть. Но, когда продукция готова, люди начинают пользоваться ею и видят, что она самым бесстыдным образом не способна выполнять своё предназначение. Это значит провал, и это должно быть ясно каждому. Даже в голове не укладывается такое развитие событий: все забывают о первоначальной цели и считают продукцию удачной. Читать далее
Читать Дейкстру всегда интересно, но кроме сочных и образных определений... из его писем/статей ничего полезного не извлечёшь. Эта статья пример того... Намешано всего много, а кроме бурчания... ничего нет.
Грубые факты состоят в том, что большая часть истории ИТ состоит из многомиллионных провалившихся проектов.
В какой другой отрасли не так?.. Сколько многомиллионных провалившихся проектов в космонавтике, авиации, судостроении и пр. и пр.? Любой проект несёт в себе риски, финансовые риски, в том числе. Чем выше новизна, тем выше риски. Что в этом нового, причём здесь ИТ?
Большое количество провалов можно объяснить тем, что мир ИТ наводнён сознательными лжеучёными и мошенниками, но я отвергаю это объяснение потому, что оно, во-первых, слишком горькое, чтобы быть здравым, во-вторых, неправильное: в общем и целом люди искренне надеются на успех. Очевидно, что мы столкнулись с распространённым непониманием, настолько стойким, что его невозможно игнорировать.
К сожалению, "сознательны лжеучёные" - это основа современно официальной науки. ИТ расхлёбывает то же самое, что и любые другие отрасли знаний/промышленности.
Вышеизложенное показывает самый известный способ справиться с новизной; когда мы сталкиваемся с чем-то новым и неизвестным, мы пытаемся связать его с тем, что нам знакомо. Чтобы достичь этого, мы придумываем аналогии.
"Связать" - это очень неточно... Дело в том, что любое новое надо объяснить образами существующего языка, но новое, оно и потому новое, что таких (адекватных) образов в языке нет. Поэтому новый образ вынужденно формируется с помощью аналогий. Любое определение - ничто иное, как попытка объяснить новое понятие с помощью "старых" образов. Но выражение нового с помощью выстраивания аналогий - это не есть "попытка справится с новизной", это строительство нового здания с помощью "старых" кирпичей и блоков. Когда образ нового (здания) утвердится в сознании, то не будет потребности в "старых" образах. Утверждение в сознании - это получение осмысленного образа.
Наоборот, человек подходит к новинке с разумом настолько чистым, насколько возможно, и пытается понять эту новинку, исходя только из её внутренних закономерностей. (Когда вы учите иностранный язык, не переводя слова с иностранного языка на родной язык и наоборот, вы применяете этот подход. Это единственный выход, если языки предназначены для выражения разных мыслей: человек должен научиться «думать» на новом языке.) Я полагаю, что ИТ является настолько беспрецедентным явлением, что только второй подход адекватен, и поэтому мы обязаны прекратить подходить к ИТ с помощью аналогий.
В пределе... каждая новая задача должна порождать новый язык... Это то самое проклятие, которое пало на головы строителей "вавилонской башни"... Невозможным стало решение практических задач... ни одной...
Когда мы пытаемся понять программу, мы не должны смотреть на отдельные вычисления, в идеале (то есть ради эффективного мышления) мы должны работать с целой программой, временно забывая, что можно интерпретировать исполняемый код. Всё это хорошо известно, и это называется «аксиоматический метод». Я хочу сказать, что использование антропоморфных терминов возводит стену на пути этого метода. Антропоморфизм приводит к тому, что наиболее эффективный способ разработки программ и рассуждений о программах отвергается как «контринтуитивный» или «слишком абстрактный». Это уже очень серьёзно.
А здесь затрагивается совсем другая проблема... Да, целое (программу в данном случае) нужно понимать, до того, как приступаем к разбору частностей (структуры программы). Но это не имеет ничего общего с предыдущим тезисом. Поскольку целое (программу) мы всё равно будем выражать с помощью того языка, на котором происходит общение (языки программирования - частное средство общения). То есть, новые программа или самолёт выражаются с помощью "старых" языков (будь то язык программирования или язык конструкторского чертежа).
и т.д. (в общем, всё тот же "цикл Дейкстры"... заумно, запутанно, местами правильно...)