Убедитесь в том, что в каждом модуле что-то локализовано.

Ввод и вывод выделяйте в подпрограммы.


Второй принцип отражен в следующей максиме:


Выбирайте такое представление данных, которое упрощает программу[9].

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

А если вас привлекает интеллектуальная стратосфера, в которой объединены «сложные системы» всех типов, вас, вероятно, заинтересует аргумент Герберта Саймона о том, что модульная структура компьютера и мозга – это лишь частный случай модульной, иерархической организации всех сложных систем. Тела состоят из тканей, сделанных из клеток, состоящих из органелл; вооруженные силы включают в себя армии, каждая из которых состоит из дивизий, разделенных на батальоны, состоящие из взводов; книги состоят из глав, разделенных на части, разделы, абзацы и предложения; империи состоят из стран, областей и территорий. Эти «почти разложимые» системы определяются масштабными взаимодействиями между элементами одного и того же компонента и менее многочисленными взаимодействиями между элементами разных компонентов. Сложные системы представляют собой иерархии модулей, потому что только элементы, увязанные друг с другом в пределах одного модуля, могут оставаться стабильными достаточно долго, чтобы монтироваться в более крупные и еще более крупные модули>88. Саймон приводит аналогию с двумя часовщиками, которых звали Хора и Темпус:

Каждые часы, изготовленные мастерами, состояли примерно из 1000 деталей. Темпус сконструировал свои таким образом, что если одни часы были частично собраны и ему приходилось отложить их – скажем, чтобы ответить на звонок, – они тут же рассыпались на части, и приходилось собирать их сначала…

Часы, которые изготавливал Хора, были не менее сложными, чем у Темпуса. Но он спроектировал их таким образом, что мог собирать узлы, состоящие примерно из десяти элементов каждый. Десять таких узлов, опять же, можно было объединить в более крупный узел, а система из десяти больших узлов составляла готовые часы. Таким образом, когда Хора был вынужден отложить незаконченные часы, чтобы ответить на телефонный звонок, он терял лишь малую часть своей работы, и на сборку у него уходила лишь часть того времени, которое затрачивал Темпус>89.

Наша сложная умственная деятельность подобна мудрости Хоры. Проживая свою жизнь, нам совсем не нужно продумывать каждую закорючку и планировать каждое сокращение мышц. Благодаря словесным символам, любой шрифт может пробудить в сознании какой угодно элемент знаний. Благодаря символам целей, любой признак опасности может активизировать любой способ защиты.

Смею надеяться, что вознаграждением за долгие рассуждения о ментальных вычислениях и ментальных репрезентациях, через которые я вас провел, стало понимание того, на какую сложность, тонкость и гибкость способен человеческий разум, даже если он – всего лишь машина, всего-навсего бортовой компьютер робота, сделанного из живых тканей. Нам не нужны духи или оккультные силы, чтобы объяснить интеллект. Не нужно нам и игнорировать очевидное в надежде сделать свое объяснение более научным, утверждая, что человек – всего лишь куча обусловленных ассоциаций, марионетка генов или раб примитивных инстинктов. Мы можем