Термин алгоритм
восходит – через латинское слово algorismus – к раннеанглийскому algorisme (с ошибочным написанием algorithm), образованному от имени персидского математика, Мусы аль-Хорезми, чья написанная примерно в 835 году н. э. книга о математических действиях в XII веке была переведена на латынь Аделардом Батским или Робертом Честерским. Идея, что алгоритм является надежной и в некотором роде «механической» процедурой, существовала на протяжении столетий, но лишь в 1930‐х годах в новаторской работе Алана Тьюринга, Курта Гёделя и Алонзо Черча было в первом приближении зафиксировано современное понимание этого термина. Нам будут важны три основные особенности алгоритмов, и каждую не так-то просто определить. Более того, каждая усугубила замешательство (и тревогу), все еще мешающие нам размышлять о революционном открытии Дарвина, так что на страницах этой книги нам неоднократно придется возвращаться к этим вводным замечаниям и переосмыслять их.1. Безразличие к материалу
: деление в столбик можно с равным успехом осуществлять, используя карандаш или ручку, бумагу или пергамент, неоновые огни или дымовой след самолета – и прибегая к какой угодно системе символов. Осуществимость процедуры основана на ее логической структуре, а не на конкретных особенностях использованных в данном случае материалов и лишь пока эти конкретные особенности позволяют в точности выполнять предписанные действия.2. Базовая неразумност
ь: хотя сам проект процедуры может быть блестящим или приводить к великолепным результатам, каждый конкретный ее шаг, а также переходы между ними чрезвычайно просты. Насколько они просты? Достаточно просты, чтобы их мог осуществить прилежный дурак – или попросту механическое устройство. Согласно известной «школьной» аналогии, алгоритмы – это своего рода рецепты, составленные так, чтобы им могли следовать поварята. В кулинарной книге, предназначенной для шеф-поваров, мы можем прочитать: «Варите рыбу в подходящем вине на медленном огне до полуготовности», – но описывающий тот же процесс алгоритм начнется так: «Выберите белое вино со словом „сухое“ на этикетке; возьмите штопор и откупорьте бутылку; налейте на дюйм вина в сковороду; включите конфорку под сковородой…» – утомительное расчленение процесса на элементарные шаги, не требующие от читателя принятия мудрых решений, или вынесения тонких суждений, или проявления интуиции.3. Гарантированный результат
: что бы ни делал алгоритм, при безошибочном исполнении он всегда приводит к ожидаемому результату. Алгоритм – рецепт надежный.Легко видеть, как эти характеристики делают возможным создание компьютера. Любая компьютерная программа является алгоритмом
, в конечном счете составленным из простых шагов, которые тот или иной простой механизм может выполнять с невероятной надежностью. Обычно для этого используют электронные микросхемы, но мощность компьютера никак (если не считать скорости вычислительных процессов) не зависит от конкретных особенностей электронов, ударяющихся о силиконовые чипы. Те же самые алгоритмы могут выполняться (и даже еще быстрее) с помощью приборов, в которых фотоны перемещаются по стекловолокну, или (гораздо, гораздо медленнее) командами людей, вооруженных бумагой и карандашами. И, как мы увидим, способность компьютеров с потрясающей скоростью и надежностью выполнять алгоритмы сегодня позволяет ученым-теоретикам исследовать опасную идею Дарвина доселе невозможными методами – и приходить к удивительным результатам.По сути дела, Дарвин обнаружил не один
алгоритм, а скорее большой класс взаимосвязанных алгоритмов, которые он не мог четко различить. Теперь мы можем переформулировать его фундаментальную идею следующим образом:На протяжении миллиардов лет жизнь на Земле развивалась как единое дерево со множеством ветвей – Древо Жизни; ее развитию способствовали те или иные алгоритмические процессы.
Со временем постепенно (по мере того как мы будем узнавать, какими способами разные люди выражали эту мысль) станет ясно, что означают эти слова. Некоторые формулировки абсолютно пусты и бессодержательны, другие – очевидным образом ложны. Посередине находятся те, что и в самом деле объясняют происхождение видов – и сулят множество других объяснений. Благодаря как упорной критике откровенных ненавистников идеи эволюции как алгоритма, так и опровержениям ее поклонников, такие формулировки становятся все точнее.
5. Процессы как алгоритмы