Работая день и ночь сменами по восемь часов, дешифровщики из Блетчли-парка сконструировали прототип машины, идентичной той, что находилась в руках у на цистов, однако успех предприятия был бы невозможен без юного английского математика, которого многие студенты Кембриджа сравнивали с греческим «богом из машины»: он появился словно из ниоткуда, чтобы помочь выиграть войну. Без Алана Тьюринга (1912–1954) было бы нелегко понять, что во всех сообщениях обязательно упоминались дата и время, к которым они относились, и именно с этого следовало начинать их расшифровку.
Статуя Алана Тьюринга из угольного сланца работы британского скульптора Стивена Кеттла рядом с портретом Тьюринга, который хранится в Национальном музее компьютеров в Блетчли-парке
(источник: Джон Каллас).
Тьюринг также предложил сконструировать огромный компьютер «Бомба», который позволял моделировать работу десяти «Энигм» одновременно. Да, Тьюринг видел дальше своих коллег, и происходило это не потому, что он обучался в лаборатории с новейшим оборудованием, а потому, что он долгое время исследовал границы теоремы Гёделя — прекраснейшего, по его мнению, творения человеческого разума.
* * *
ДИАЛОГ ИЗ ФИЛЬМА «ВЗЛОМАТЬ КОД»
(РЕЖИССЕР ХЕРБЕРТ УАЙЗ, АВТОР СЦЕНАРИЯ ХЬЮ УАЙТМОР, 1996)
Дилли Нокс: Я ознакомился с некоторыми подробностями вашей работы, господин Тьюринг, и должен признаться, что многие из них мне непонятны.
Тьюринг: Меня это не слишком удивляет.
Дилли Нокс: Когда я был молод, я был неплохим математиком, но некоторые фразы совершенно сбивают меня с толку. Например, вот эта: «О вычислимых числах в приложении к проблеме разрешения». Можете сказать что-либо по этой теме?
Тьюринг: Что именно?
Дилли Нокс: Не знаю, что-нибудь, несколько слов, объясните в общих чертах.
Тьюринг: Несколько слов?
Дилли Нокс: Да.
Тьюринг: В общих чертах?
Дилли Нокс: Да, если это возможно…
Тьюринг: Хорошо. В общих чертах — речь идет об истинном и ложном. Это техническая статья по математической логике, в которой также рассматривается, как трудно отличить истинное и ложное. Люди, то есть многие люди, думают, что в математике всегда известно, что истинно, а что нет, но это не так! И это никогда не будет так! Это проблема, над которой математики работают уже сорок или пятьдесят лет. Как вам это объяснить? Нужно понять, как отличить истинное отложного, понимаете? […]
Дилли Нокс: На самом деле не совсем, но теперь мне кое-что понятно. Ваши идеи кажутся мне весьма оригинальными, и я убежден, что вы станете ценным членом нашей команды или группы — называйте ее как угодно.
* * *
Постройка «Бомбы», или «Колосса», первого программируемого компьютера, также изготовленного в Блетчли-парке, вписывалась в череду открытий, восходящую как минимум ко второму десятилетию XVII века, когда немецкий астроном Вильгельм Шиккард (1592–1635) создал первые «часы для счета» — хитроумный механизм, способный выполнять сложение, вычитание, умножение и деление.
За Шиккардом следовал Блез Паскаль (1623–1662), в девятнадцать лет начавший работу над своей вычислительной машиной, чтобы облегчить труд отца — сборщика налогов в Руане. Его «Паскалина» произвела фурор в аристократических салонах, вызвав удивление ученых и членов знатных семейств. Там же ее увидел и Готфрид Лейбниц (1646–1716). Он был убежден, что «терять время на вычисления, подобно рабам, недостойно выдающихся людей», поэтому неудивительно, что «Паскалина» вызвала у Лейбница большой энтузиазм и желание немедленно ее усовершенствовать. Ученый мечтал создать машину, способную распознавать все истинные высказывания.
«Паскалина», придуманная французским ученым Блезом Паскалем, стала первой вычислительной машиной в истории.
В начале XIX века вычислительные машины Паскаля и Лейбница вдохновили английского математика Чарльза Бэббиджа (1791–1871) и его ученицу Аду Байрон (1815–1852) на исследования по теории вычислений. Для создания аналитической машины (Analytical Engine) Бэббидж и Байрон выделили обязательные элементы всех процессов в информатике. Во-первых, должна существовать программа, указывающая операции, которые нужно выполнить. Она представляет собой ряд инструкций, которые на основе множества входных данных позволяют вычислить результат, возвращаемый пользователю на выходе программы. Например, на вход программы «умножить» подаются пары чисел вида (2, 3), выводом является их произведение — в этом случае 2·3 = 6. Чтобы программа (далее мы будем называть ее алгоритмом) могла быть исполнена, необходимы процессор, выполняющий инструкции, и память, в которой хранятся входные данные, инструкции и все промежуточные расчеты. В аналитической машине Бэббиджа входные данные вводились с помощью перфорированных карт, которые использовались в ткацком станке Жаккара, предназначенном для автоматического создания узоров.