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