Хотя некоторая «утечка» между иерархическими уровнями наук присутствует всегда, и химик не может полностью игнорировать низшие уровни физики, или биолог — полностью игнорировать химию, утечки между далекими уровнями почти не происходит. Именно поэтому мы можем понимать других людей, не имея при этом глубокого понимания модели кварков, структуры ядра, природы орбит электронов, химических связей, структуры белков, органоидов в клетках, путей межклеточного сообщения, физиологии различных органов человеческого тела, или сложных взаимодействий между органами. Все, что нам необходимо, — это блочная модель действия высших уровней; и, как мы все знаем, подобные модели весьма реалистичны и успешны.
Однако у блочной модели есть и значительная негативная сторона; обычно она не дает точных предсказаний. Это значит, что хотя блочные модели спасают нас от невыполнимой задачи воспринимать людей как набор кварков (или того, что в них имеется на низшем уровне), они дают нам только вероятностные оценки того, как другие люди чувствуют, реагируют на наши слова и поступки и так далее. Короче, используя блочную модель, мы приносим в жертву детерминизм и выигрываем в простоте. Несмотря на то, что мы не знаем, как люди среагируют на наш анекдот, мы все же рассказываем его; при этом мы скорее ожидаем, что они засмеются (или не засмеются), чем, скажем, полезут на ближайший столб. (Конечно, мастер дзена запросто мог бы сделать именно это!) Блочная модель определяет «интервал» возможного поведения и вероятность того, что определенное поведение будет лежать в той или иной области этого интервала.
Эти идеи могут быть приложены не только к сложным физическим системам, но и к компьютерам. Известно высказывание: «Компьютеры могут делать только то, что им приказано». В каком-то смысле это верно, но при этом не учитывается следующий факт: последствия ваших инструкций неизвестны вам заранее, поэтому поведение компьютера может быть так же удивительно и непредсказуемо для вас, как и поведение человека. Обычно вам заранее известен тот приблизительный
Это старое высказывание неверно и в другом смысле. Дело в том, что, программируя на языках все высших уровней, вы все с меньшей и меньшей точностью можете сказать, что именно вы приказываете компьютеру! Многие прослойки переводов могут отделять «передний конец» сложной программы от действительных команд на машинном языке. На уровне, на котором вы думаете и программируете, ваши высказывания могут быть более похожи на утверждения и предложения, чем на команды. При этом внутренняя «возня», вызванная вводом высказывания высшего уровня, обычно остается для вас невидима, так же, как, когда вы едите бутерброд, вы не думаете о пищеварительных процессах, которые при этом начинаются у вас внутри.
Так или иначе, мнение, что «компьютеры могут делать только то, что им приказано», впервые высказанное лэди Лавлэйс в ее знаменитых мемуарах, настолько распространено и так связано с мнением о том, что «компьютеры не могут думать», что мы вернемся к нему в следующих главах, когда сможем обсудить этот вопрос на более высоком уровне.
Системы, построенные из многих частей, бывают двух типов. Первый их них характеризуется тем, что поведение одних частей аннулирует поведение других. В подобных системах не столь важно, что делается на низшем уровне, поскольку результатом любых происходящих там событий будет почти одинаковое поведение высшего уровня. Примером такой системы может служить баллон с газом, молекулы которого сталкиваются друг с другом в результате множества сложных микроскопических процессов; однако макроскопическое целое — это стабильная система в спокойном состоянии, в которой определены температура, давление и объем. В системах второго типа микроскопические изменения на низшем уровне могут возрасти до такой степени, что в результате заметно изменится макроскопический уровень. Примером такой системы является сборочный конвейер. Если один из сборщиков ошибется, с конвейера сойдет бракованная деталь.