Сформулирована профессором дисциплины вычислений Дэвидом Уилером и состоит в том, что «Любую проблему в computer science можно решить введением нового уровня косвенности». Иногда к этой формулировке добавляется «кроме проблемы избытка уровней косвенности», но это не самое большое и важное уточнение. Теорема может быть доказана только для самых тривиальных и примитивных определений проблемы и решения.
В жизни действенность такого подхода именно для решения проблем опровергается эмпирическим наблюдением: «Раньше у нас была исходная проблема, для которой мы выбрали это решение. Теперь у нас есть исходная проблема и проблема выбранного решения». Это сквозной сюжет рабочих будней широкого профессионального сообщества разработчиков.
Введением дополнительного уровня косвенности можно добиться только преодоления непосредственного затруднения, блокирующего рабочий процесс частично или полностью. Именно проблемы таким образом только размножаются – была только исходная, теперь есть и исходная, и проблема выбранного решения.
При очевидной пагубности такого подхода дополнительные уровни косвенности во всей человеческой деятельности, не только в computer science, вводятся постоянно и обильно. Необходимость преодолевать блокирующие непосредственные затруднения любым доступным способом никуда не девается. По этому принципу сегодняшние затруднения срочно решаем сегодня, новые завтрашние будут уже завтра.
Сторожа, сторожа сторожей, сторожа сторожей сторожей и так далее. Ответственные, начальники, подрядчики и многие другие сущности делового оборота могут плодиться и ветвиться естественно и обширно. Структурный паттерн «proxy» – наше все.
Так что там про «самое простое объяснение – самое верное»? Где не касалась рука человека, не преодолевалось никакое затруднение, не вводился никакой уровень косвенности – без вопросов. Но часто ли такое встречается? И, в конце концов, насколько полезно может быть такое объяснение?
В реальной жизни познание или хотя бы понимание требует последовательного освоения всех задействованных в выбранной активности уровней косвенности. Способность вникать в последовательность уровней косвенности и осуществлять через них практическую деятельность – важнейшая часть социальной адаптированности и основа навыков коммуникации.
Знакомство с фундаментальной теоремой computer science не сделает освоение какой бы то ни было практической деятельности более простым. Разве что позволит увидеть характерную для этой деятельности последовательность уровней косвенности более ясно.
Некоторые из уровней косвенности могут быть или не быть уровнями абстракции. Но работа с ними – предмет игр состоявшегося, мы рассмотрим это в свое время. Сейчас достаточно знать, что уровни косвенности при определенной формализованности и проработанности начинают работать как уровни абстракции и могут быть полезными в действительном решении практически значимых проблем.