Шрифт:
Интервал:
Закладка:
Рассмотрим шахматную программу, написанную на высокоуровневом языке программирования Common Lisp, запущенную на операционной системе Windows 7, запущенной на компьютере. Этот компьютер притворяется машиной Windows, которая притворяется машиной Lisp, которая притворяется машиной для игры в шахматы. Если рассмотреть детали программы на высшем уровне, они будут более или менее понятны подкованному в компьютерах и шахматах наблюдателю (“Ага! Эта подпрограмма генерирует все возможные ответы на перемещение слона, а затем запускает подпрограмму оценки, которая…”). Настоящий программный код той же программы – последовательность нулей и единиц, которая помещается в регистр инструкций аппаратного обеспечения, – напротив, способен свести любого с ума, поэтому мы благоразумно сосредотачиваем внимание на высших уровнях. На каждом уровне мы видим лес за деревьями, поскольку детали низших уровней весьма кстати скрыты от наших глаз. Параллель между каскадом виртуальных машин на компьютере и каскадом гомункулов в гомункулярнофункционалистском представлении о сознании не просто совпадение. Именно необычайный успех виртуальных машин, которые помогли нам понять, как решать немыслимые ранее задачи (бронирование авиабилетов, игру в шахматы, прогнозирование погоды, письмо под диктовку и т. д.), дает повод надеяться, что мы сумеем провернуть подобный – всего лишь подобный – фокус, когда осуществим обратное проектирование мозга.
В таком случае, возможно, сходства мозга людей, говорящих по-французски, несмотря на все наблюдаемые анатомические различия, лучше всего объяснить на уровне виртуальной машины: все франкоговорящие люди имеют в голове ту или иную версию ФВМ, французской виртуальной машины, системы взаимосвязанных диспозиций, или микропривычек, каким-то образом хранящихся в миллиардах регистров мозга. Мозг русскоговорящих людей будет отличаться наличием подобной системы надежных шаблонов, РВМ. Если сказать франкоговорящему человеку: Donnez-moi le sel, s’il vous plait, – ФВМ гарантированно проконтролирует то же самое поведение, которое у русскоговорящего человека можно вызвать посредством введения в РВМ в его голове следующих данных: “Передай мне соль, пожалуйста”. Как же создаются ФВМ и РВМ, которые функционируют в нашем мозге?
Мы пока не знаем, как описать разные уровни активности мозга людей, играющих в шахматы или говорящих по-французски[32]. Несомненно, не стоит и надеяться на появление подробной схемы наподобие той, что позволяет программистам создавать свои творения на высшем уровне, имея полную уверенность, что компилятор (программа, которая берет инструкции высшего уровня и преобразует их в код, понятный аппаратному обеспечению) выдаст работающую программу. Но теперь у нас есть прекрасный экспериментальный образец: мы знаем по крайней мере один способ объяснить высокоуровневые способности машины с триллионами подвижных частей, не прибегая к концепции чудо-ткани.
В книге “Опасная идея Дарвина” (1995а) я предложил такой взгляд на великую идею Дарвина:
Жизнь на Земле рождалась на протяжении миллиардов лет посредством ветвления единственного древа – Древа жизни – под воздействием тех или иных алгоритмических процессов.
И что же такое алгоритм? Существует несколько конкурирующих определений этого термина, и мое, пожалуй, самое широкое. Далее следует переработанный фрагмент моей книги.
Дарвин открыл силу алгоритма. Алгоритм – это формальный процесс определенного типа, который должен – по идее – выдавать определенный результат всякий раз, когда он “запущен” или инстанцирован. Алгоритмы нам не в новинку. Они не были в новинку и во времена Дарвина. Многие знакомые арифметические операции, например деление в столбик и сведение баланса, на самом деле представляют собой алгоритмы. Алгоритмами также являются процедуры принятия решений при игре в крестики-нолики и расстановке слов по алфавиту. Относительно новыми можно назвать теоретические рассуждения математиков и логиков двадцатого века о природе и силе алгоритмов в целом – именно эти рассуждения позволили нам в ретроспективе оценить открытие Дарвина и привели к рождению компьютера, которое, в свою очередь, привело к еще более глубокому и осмысленному пониманию силы алгоритмов в целом.
Термин “алгоритм” восходит через латынь (algorismi) и раннеанглийский (algorism и ошибочной производной algorithm) к имени персидского математика Аль-Хорезми, в девятом веке написавшего книгу об арифметических операциях, которая в одиннадцатом веке была переведена на латынь либо Аделардом Батским, либо Робертом Честерским. Представление об алгоритме как надежной и в некоторой степени “механической” процедуре существовало веками, но в современной трактовке термин более или менее закрепился в 1930-х гг., когда его использовали в своей новаторской работе Алан Тьюринг, Курт Гёдель и Алонзо Черч. Нам важны три ключевых свойства алгоритмов, причем дать каждому из них определение непросто.
(1) Нейтральность носителя. Процедура деления в столбик одинаково хорошо работает при использовании карандаша и ручки, бумаги и пергамента, неоновых огней и конденсационного следа самолета. Система символов может быть любой. Сила процедуры объясняется ее логической структурой, а не особенностями материалов, используемых при инстанцировании, при условии, что эти особенности позволяют в точности следовать пошаговой инструкции.