Мне нравится решето, смоделированное в игре «Жизнь», поскольку из древнегреческого математического инструмента оно превратилось в межгалактическую перестрелку между флотилиями глайдеров и космических кораблей. Наблюдать за данной конфигурацией — это как будто смотреть батальную сцену в фантастической эпопее или, возможно, отслеживать эволюцию колонии муравьев, поведение которых носит сугубо математический характер. Не забывайте: как только вы построите исходную конфигурацию, вам не нужно вмешиваться в дальнейший процесс. Эта фигура может продолжать свою жизнь до бесконечности, отстреливая космические корабли и оставляя в живых лишь те из них, порядковый номер которых представляет собой простое число.
«Уровень мастерства реально поражает, — сказал Госпер о самых лучших конфигурациях. — Люди, которые пытаются [создавать фигуры], быстро осознают, насколько это сложно, а удачные образцы приводят их в неописуемый восторг. Для того чтобы сосредоточиться на игре в достаточной степени, нужно находиться почти в состоянии невменяемости». За период с семидесятых годов до наших дней построены сотни удивительных конфигураций, в том числе и вычисляющая значение числа π, которую изобрел британский подросток по имени Адам Гаучер. К чему еще стремиться? «Жизнь — неистощимый источник вопросов и задач», — резюмировал Госпер.
Игра «Жизнь» подвергает сомнению наши предвзятые представления о том, как работает этот мир, поскольку она показывает, как простой набор локальных правил может генерировать невероятно сложное общее поведение. При взгляде на такую идеально интегрированную систему, как решето Эратосфена, удивляет то, что каждая клетка взаимодействует всего с восемью соседними клетками.
Игра «Жизнь» демонстрирует также существование разных реальностей на разных уровнях игры. Решето Эратосфена — это конфигурация, разработанная на основе физических свойств глайдерных ружей с использованием технологии столкновений и космических кораблей. Однако на более детальном уровне таких вещей, как «столкновение» или «космический корабль», нет. Есть лишь неподвижные клетки, которые могут быть либо «живыми», либо «мертвыми».
По мере создания все более сложных фигур возникает вопрос: каков предел того, что может сделать конфигурация в игре «Жизнь»? Да буквально все, на что способен ваш ПК, планшет или смартфон. Если задача выполнима с помощью компьютера, тогда это можно сделать и посредством конфигурации в игре «Жизнь».
Конвей доказал истинность этого утверждения, продемонстрировав, что можно создать компьютер «Жизни», другими словами — исходную конфигурацию живых клеток, имитирующую внутреннюю схему компьютера. Вам придется поверить мне на слово (или прочитать книгу по информатике), но внутренняя схема компьютера на базовом уровне состоит из следующих компонентов: проводники, логические элементы и регистр памяти. Генератор тактовых импульсов порождает электронные импульсы, представляющие двоичные числа. Наличие импульса — это 1, а его отсутствие — 0. Конвей понял, что глайдеры могут выполнять функции импульсов, передающихся по проводникам. Следовательно, поток глайдеров может представить любое число, состоящее из нолей и единиц, как показано на рисунке ниже. Поскольку глайдеры двигаются по диагонали, я разместил сетку под углом 45 градусов.
Поток глайдеров
Конвей разработал логический элемент простейшего типа, выполняющий операцию НЕ (операцию отрицания) [7]. Логический элемент — это устройство, имеющее несколько входов и выходов. У логического элемента, выполняющего операцию НЕ, только один вход и один выход. Сигнал на выходе противоположен сигналу на входе: он меняется с 1 на 0 и с 0 на 1. Следовательно, логический элемент отрицания в игре «Жизнь» должен превратить наличие глайдера во входящем потоке в его отсутствие в исходящем потоке и наоборот. Конвей понял, что эту функцию может выполнить стратегически правильно размещенное глайдерное ружье, как показано на рисунке ниже. Входящий поток перемещается горизонтально, слева направо. Глайдерное ружье стреляет по глайдерам вертикально вниз. Если во входящем потоке появляется глайдер, его уничтожает глайдер, порожденный ружьем. Но если во входящем потоке глайдера нет, глайдер из ружья проходит невредимым, поскольку ему не с чем сталкиваться. Таким образом, исходящий поток содержит 1, если входящий поток содержит 0, и 0 — если 1. Это и есть логический элемент, выполняющий операцию НЕ. Исходящий поток находится под прямым углом к входящему потоку, но это не имеет значения, так как мы можем изменить направление потока в дальнейшем в случае необходимости.
Все логические элементы выполняют операции трех базовых типов: НЕ, И и ИЛИ. Конвей сконструировал также состоящие из ружей и пожирателей конфигурации, имитирующие логические элементы для операций И и ИЛИ. Он показал, что можно сделать так, чтобы потоки глайдеров меняли направление движения, что моделировало изгибы проводников. Конвей также продемонстрировал, как сделать потоки глайдеров разреженными, чтобы два потока могли пересечься, избежав при этом столкновения глайдеров, что изображало пересечение проводников. Кроме того, он показал, как сделать регистр памяти из блоков. Каждый блок представляет собой какое-то число в зависимости от его расстояния от определенной точки. Глайдеры, которые врезаются в блок, перемещают его ближе к этой точке или дальше от нее, меняя значение блока. Это подтвердило правильность выдвинутой Конвеем гипотезы: построив в игре «Жизнь» проводники, логические элементы и регистр памяти, он доказал, что игра, ставшая его математическим хобби, теоретически способна (при наличии достаточно большой сетки) имитировать любой существующий в нашем мире компьютер.
Получив приведенное выше доказательство, Джон Конвей потерял интерес к игре «Жизнь». (В 1986 году он переехал в Принстон, чтобы возглавить кафедру математики вместо Джона фон Неймана.) Однако многие ее поклонники были настолько ею увлечены, что у них появилась зависимость, которая со временем лишь усиливалась. Международное сообщество любителей игры «Жизнь» насчитывает около сотни членов; к их числу относился и Пол Чэпмен, решивший на рубеже столетий построить компьютер в игре «Жизнь». «Знать, что что-то можно сделать, и сделать это — совершенно разные вещи», — заявил он.
Логический элемент отрицания содержит ружье, которое выстреливает в глайдеры, движущиеся перпендикулярно входящему потоку
Подобно многим любителям игры «Жизнь», Пол не был научным сотрудником. В 1970-х он изучал математику в Кембридже (и слушал лекции Конвея), а затем стал консультантом по информационным технологиям. В настоящее время Пол живет в центре Лондона, неподалеку от ресторана, в котором мы с ним встретились. Он предпочел столик на улице, несмотря на плохую погоду, поскольку ему не нравился запрет на курение внутри заведения. Когда мы разговаривали, Пол скручивал собственные сигареты. «Я люблю “Жизнь” потому, что она полна сюрпризов, — признался он. — Каждый раз, когда вы ищете способ сделать что-то лучше, вы найдете десятки таких способов».
У обычного компьютера есть аппаратное и программное обеспечение; точно так же и созданная в игре «Жизнь» конфигурация, имитирующая работу ПК, имела «железо» и «программы». Первое моделировало кабели машины, а второе — программу, которую она должна читать. В своем прототипе компьютера в игре «Жизнь» Пол использовал не созданную Конвеем сеть из ружей, глайдеров и пожирателей, а более современную и эффективную технологию, основанную на исходном шаблоне из семи клеток под названием «Гершель». Его конфигурация состояла из нескольких миллионов живых клеток и программы, содержащей инструкции по поводу того, как вычислить сумму 1 + 2. «Для поиска суммы 2 + 3 понадобилось бы слишком много времени», — объяснил Пол. Конфигурация начиналась с космического корабля, поражающего устойчивую фигуру, которая порождала сигнал о столкновении с разными элементами, а те, в свою очередь, порождали другие сигналы, и маршрут перемещения сигналов по всей системе напоминал гигантскую игру в одну из разновидностей бильярда. В конце концов блок в регистре вывода показывал число 3. «Я был в восторге, — сказал Пол. — Если я могу сложить один и два, это говорит о том, что эта же машина может рассчитать миллионную цифру числа π, управлять системой Windows или, если ввести правильные параметры, смоделировать жизненный цикл звезды!»
Безусловно, компьютер, построенный Полом в игре «Жизнь», был неприменим на практике для выполнения всех этих задач. Но он вернул «Жизнь» к ее истокам. Джон фон Нейман выдвинул идею клеточного автомата во время изучения процесса самовоспроизведения. Конфигурация Пола открыла заманчивую возможность создания самовоспроизводящихся сущностей в игре «Жизнь».