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