Читаем Во что мы верим, но не можем доказать полностью

Самое интересное, что сегодня разработка программного обеспечения сосредоточена именно на создании исходных программ, т. е. на «шифровании» проблем. Что еще хуже, «шифрование» — программирование — делается вручную. А это большие затраты, маленькая скорость и много ошибок. Если полевой генерал понимает, что приказ, который он хочет отдать своим лейтенантам, содержит неверную информацию, он не станет заботиться о том, чтобы отредактировать его после расшифровки (т. е. «исправить код»); он исправит исходный текст, а потом зашифрует его снова. Сообщение может быть ошибочным, но не из-за шифра, и тогда ошибку легко исправить.

Упомянутая выше проблема авиакомпании очевидно упрощена. Но если рассмотреть эту проблему в кривом зеркале кодирования при разработке компьютерных программ, она становится почти неузнаваемой: в тысячу раз более бестолковой, бессвязной, и совершенно искусственной. Что здесь можно сделать? Следовать метафоре криптографии. Во-первых, сформулировать проблему — «первоначальное сообщение», как в нашем примере с полевым генералом. Это ни в коем случае не программа, а просто запись мнений экспертов по данному вопросу, на их профессиональном жаргоне, их собственными словами. Затем нужно поручить программистам разработать не программу для решения проблемы, а генератор программ, который будет комбинировать мнения экспертов с параметрами текущей ситуации и сам создаст окончательный код. Это называется порождающим или генеративным программированием. А генератор — механизированное выражение опыта и знаний программистов, что эффективно отделяет исходную проблему от проблемы разработки программного обеспечения. Поэтому изменения в одной из этих двух сфер не вызывают изменений в другой — ведь вклад другой стороны осуществляется либо посредством генератора, либо через формулирование проблемы. По этой причине я верю, что генеративное программирование — будущее программного обеспечения.

Алан Кэй

АЛАН КЭЙ — известный специалист в сфере компьютерных наук. В 1970 году пришел в исследовательский центр корпорации Xerox в Пало-Альто (PARC) и стал одним из его ведущих сотрудников. Участвовал в разработке прототипов рабочих станций, объединенных в единую сеть, на основе языка программирования Smalltalk. Один из «отцов» идеи объектно-ориентированного программирования и автор концепции Dynabook, ставшей основой для разработки ноутбука. Президент Научно-исследовательского института формирования убеждений и старший партнер Hewlett Packard Laboratories.

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

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

Много лет назад я выдвинул одну догадку, которую до сих пор не удалось подтвердить. Она заключается в том, что особые свойства компьютеров аналогичны (и являются продолжением) особенностям письменной речи и далее — печати. Как указывает медиафилософ Маршалл Маклахан, когда мы меняем характер преподнесения материала и аргументации, люди, которые учатся по этим новым методикам, и мыслить начинают на качественно ином уровне (лучше?), и это (обычно) расширяет границы наших представлений о цивилизации.

Все это до сих пор кажется мне хорошей догадкой, но «истина» не имеет к ней никакого отношения.

Стивен Пинкер

Перейти на страницу:

Похожие книги