Джон Брокман - Во что мы верим, но не можем доказать. Интеллектуалы XXI века о современной науке
Программное обеспечение — узкое место рога изобилия высоких технологий. Программа планирования работы для авиакомпании занимает гораздо больше памяти, чем нужно; следовательно, это программное обеспечение представляет собой гораздо большую трудность, чем сама проблема. Неудивительно, что программа назначила на одни самолеты по три пилота, а другие не могли взлететь, потому что в экипаже не оказалось второго пилота. Обратите внимание: дело не в стоимости этой программы — мы можем себе ее позволить. Но использование такого огромного количества памяти указывает на то, что в процессе разработки программы возникла избыточная сложность.
Почему так произошло? Я бы хотел использовать в качестве метафоры криптографию. Мы берем сообщение и зашифровываем его с помощью ключа, при этом для создания кода мы используем функцию, которую трудно воспроизвести. Программисты, следующие современной парадигме, сначала формулируют проблему — например, что Боингу-767 нужен пилот, второй пилот и семь человек экипажа, и каждый из них должен пройти определенную сертификацию. Затем они используют свои знания в сфере компьютерных наук и разработки компьютерного обеспечения. Именно так эти вводные данные можно закодировать на компьютерном языке и превратить в алгоритм. Процесс комбинирования — это и есть процесс программирования. Его результат — исходная программа. Так вот, как известно, программирование — это функция, которую трудно инвертировать, хотя возможно, и не по стандартам криптографии. Можно пошутить, что если авиакомпания хочет сохранить в тайне свои правила планирования рабочего времени, то может опубликовать вместо них код исходной программы, ведь никто никогда его не расшифрует. И даже не поймет, к чему этот код относится — к планированию рабочего времени или к поставкам запасных частей. Он может быть совершенно непонятным.
Самое интересное, что сегодня разработка программного обеспечения сосредоточена именно на создании исходных программ, т.е. на «шифровании» проблем. Что еще хуже, «шифрование» — программирование — делается вручную. А это большие затраты, маленькая скорость и много ошибок. Если полевой генерал понимает, что приказ, который он хочет отдать своим лейтенантам, содержит неверную информацию, он не станет заботиться о том, чтобы отредактировать его после расшифровки (т.е. «исправить код»); он исправит исходный текст, а потом зашифрует его снова. Сообщение может быть ошибочным, но не из-за шифра, и тогда ошибку легко исправить.
Упомянутая выше проблема авиакомпании очевидно упрощена. Но если рассмотреть эту проблему в кривом зеркале кодирования при разработке компьютерных программ, она становится почти неузнаваемой: в тысячу раз более бестолковой, бессвязной, и совершенно искусственной. Что здесь можно сделать? Следовать метафоре криптографии. Во-первых, сформулировать проблему — «первоначальное сообщение», как в нашем примере с полевым генералом. Это ни в коем случае не программа, а просто запись мнений экспертов по данному вопросу, на их профессиональном жаргоне, их собственными словами. Затем нужно поручить программистам разработать не программу для решения проблемы, а генератор программ, который будет комбинировать мнения экспертов с параметрами текущей ситуации и сам создаст окончательный код. Это называется порождающим или генеративным программированием. А генератор — механизированное выражение опыта и знаний программистов, что эффективно отделяет исходную проблему от проблемы разработки программного обеспечения. Поэтому изменения в одной из этих двух сфер не вызывают изменений в другой — ведь вклад другой стороны осуществляется либо посредством генератора, либо через формулирование проблемы. По этой причине я верю, что генеративное программирование — будущее программного обеспечения.
Алан Кэй
АЛАН КЭЙ — известный специалист в сфере компьютерных наук. В 1970 году пришел в исследовательский центр корпорации Xerox в Пало-Альто (PARC) и стал одним из его ведущих сотрудников. Участвовал в разработке прототипов рабочих станций, объединенных в единую сеть, на основе языка программирования Smalltalk. Один из «отцов» идеи объектно-ориентированного программирования и автор концепции Dynabook, ставшей основой для разработки ноутбука. Президент Научно-исследовательского института формирования убеждений и старший партнер Hewlett Packard Laboratories.
Эйнштейн сказал: «Нужно научиться отличать истину от реальности». Наука — это взаимоотношения между тем, что мы можем представить и помыслить, и тем, что происходит «на самом деле»; это нечто вроде картографирования территории. Выдвигая научные гипотезы, мы делаем предположения относительно точности и картографирования по отношению к языку, а не к «истине» — и если мы считаем, что выдвигаем «предположения об истине» или «ищем истину», это значит, что мы не в своем уме и не способны заниматься наукой. За пределами научного мира это понимают не все. К сожалению, некоторые обладатели научной степени тоже этого не понимают.
Например, в компьютерных науках существует очень мало доказательств, заслуживающих внимания. (Известный программист Дон Кнут из Стэнфордского университета любит повторять: «Бойтесь ошибок предложенного кода; я только проверил его правильность, но не применял его».) Нам бы хотелось доказать правильность компьютерных программ, но либо для этого у нас нет достаточной степени свободы или (о чем говорит Кнут) очень сложно быть уверенными в том, что мы учли все возможные ситуации. Поэтому в компьютерных науках догадки часто касаются архитектуры или набора эвристических правил.
Много лет назад я выдвинул одну догадку, которую до сих пор не удалось подтвердить. Она заключается в том, что особые свойства компьютеров аналогичны (и являются продолжением) особенностям письменной речи и далее — печати. Как указывает медиафилософ Маршалл Маклахан, когда мы меняем характер преподнесения материала и аргументации, люди, которые учатся по этим новым методикам, и мыслить начинают на качественно ином уровне (лучше?), и это (обычно) расширяет границы наших представлений о цивилизации.
Все это до сих пор кажется мне хорошей догадкой, но «истина» не имеет к ней никакого отношения.
Стивен Пинкер
СТИВЕН ПИНКЕР — профессор факультета психологии Гарвардского университета, занимается экспериментальной психологией. Автор нескольких книг, в том числе «Язык как инстинкт»[16], «Как работает разум», «Слова и правила» и «Tabula rasa: современное отрицание человеческой природы».
В 1974 году Марвин Мински написал, что «в анатомии и генетике мозга скрыто гораздо больше механизмов, чем сегодня мы можем представить». Сейчас многие сторонники эволюционной психологии и психологии человека готовы предложить те механизмы, о которых говорил Мински 30 лет назад. Например, я верю, что мышление организовано в когнитивные системы, предназначенные специально для суждений об объектах, пространстве, числах, живых существах и другом интеллекте; что у нас есть эмоции, которые пробуждают в нас другие люди (симпатия, чувство вины, гнев, благодарность), или физические явления и объекты (страх, отвращение, благоговение). Что люди, с которыми мы состоим в разных отношениях (родители, братья и сестры, другие кровные родственники, друзья, супруги, любовники, союзники, конкуренты, враги), вызывают у нас мысли и чувства разного рода, и механизмы коммуникации с другими (язык, жесты, выражения лица) индивидуальны.
Я верю в это, но не могу доказать. Но для меня это не вопрос слепой веры или личных предпочтений. В каждом случае я могу назвать причины своей веры — и эмпирические, и теоретические. Но я определенно не могу их доказать или даже продемонстрировать так, как это делают специалисты по молекулярной биологии, то есть настолько убедительно, чтобы даже скептики не смогли ничего возразить и эти выводы стали бы общепризнанными. Идея богатой одаренности человеческой природы до сих пор не убеждает многих разумных людей. Ученые часто указывают на определенные аспекты нейроанатомии, генетики и эволюции, которые, кажется, противоречат этой идее. Я верю, но не могу доказать, что с развитием науки их сомнения будут рассеяны.
С точки зрения нейроанатомии и нейропсихологии критики указывают на очевидную гомогенность коры головного мозга и кажущуюся заменяемость кортикальной ткани. Это обнаружили эксперименты, в которых исследователи перемещали или трансплантировали участки коры мозга животных. Я считаю, что гомогенность коры мозга — это иллюзия. Она вызвана тем фактом, что мозг — система для обработки информации. Для того, кто не знает языка, все книги, написанные на этом языке, выглядят одинаково, и все DVD-диски с фильмами под микроскопом тоже выглядят одинаково. Точно так же кора головного мозга кажется гомогенной, если смотреть на нее невооруженным глазом, но при этом она содержит разные паттерны связей и синаптических смещений, позволяющих мозгу выполнять самые разные функции. Я верю, что эти различия будут обнаружены в разных паттернах проявления генов в развивающейся коре мозга. Также я верю, что кажущаяся заменяемость кортикальной ткани возможна только на ранних стадиях развития систем восприятия, обладающих сходными паттернами связи, например, изолированная передача точных сигналов во времени и пространстве.