Игра в имитацию — страница 80 из 109

Манчестерским инженерам предстояло построить образец компьютера, чтобы в компании Ферранти могли использовать его как прототип. В течение всего 1949 года инженеры, которые теперь могли нанимать новых сотрудников, занимались усовершенствованием малой экспериментальной машины. К апрелю у нее появилось еще три электронно-лучевых трубки для оперативной памяти и устройство умножения, а магнитный барабан к тому времени уже был опробован. Каждое машинное слово на электронно-лучевой трубке теперь содержало 40 бит, 20 из них занимала инструкция.

Ньюман изобрел гениальное решение, как можно во всей красе продемонстрировать машину, у которой крохотная память, зато есть умножающее устройство. Решением был поиск больших простых чисел. В 1644 году французский математик Мерсенн предположил, что числа 217 — 1, 219 — 1, 231 — 1, 267 — 1, 2127 — 1, 2257 — 1 должны быть единственными простыми числами в своем диапазоне. В XIIX веке Эйлер доказал, что одно из них — 231 × 1 = 2,146,319,807 — действительно простое. Но чтобы доказать то же самое в отношении других чисел, нужна была новая теория. В 1976 году французский математик Лукас нашел способ вычислить, является ли простым 2p — 1, с помощью возведения в квадрат и избавления от остатков. Он объявил, что число 2127 — 1 было простым. В 1937 году выяснилось, что в теории Мерсенна была ошибка, поэтому число, найденное Лукасом, так и осталось самым большим простым из известных.

Метод Лукаса был как будто специально создан для компьютера, который оперирует двузначными числами. Ньюман объяснил Тутиллу и Килберну задачу, и в июне 1949 года они создали программу, которая помещалась в четыре запоминающие электронно-лучевые трубки и все еще оставляла место для вычислений до P = 353. По пути они проверили все, что успели сделать Эйлер и Лукас, но больше простых чисел не обнаружили.

В это время между инженерами и математиками был заключен нелегкий договор о союзе, две стороны разделили обязанности. Ньюман начал проявлять немного больше интереса к самой машине, а Алан взял на себя роль математика и составил список команд, которые должен выполнять компьютер, хотя инженеры в итоге этот список сократили. При этом в создании самой логической конструкции он участия не принимал — здесь все сделал Тутилл. Но у Алана был контроль над механизмом ввода и вывода, который предназначался для пользователя.

В НФЛ он занимался перфокартами, поэтому здесь взял на себя задачу создать телетайп, который потом можно будет использовать на принтере. Конечно же, он был очень хорошо знаком с системой телепринта Блэтчли и Хэнслоупа, который работал от батареи и «частенько заменял 1 на 0». Все знали, что перфоленты он взял в месте, о котором нельзя было говорить. После того, как все это было соединено вместе, 32 комбинации из нулей и единиц в ленте телетайпа стали языком Манчестерской машины.

Работа Алана заключалась в том, чтобы сделать машину удобной в использовании, однако его понятия об удобстве не всегда совпадали с понятиями окружающих. Конечно же, он раскритиковал принцип, по которому работал Уилкис: он предполагал, что аппаратура должна быть такой, чтобы пользователю было просто отслеживать команды. Так, буква А была символом для добавления команды. Алан, напротив, считал, что удобство должна обеспечивать программа, а не оборудование. Еще в 1947-м году он говорил о вопросах удобства как о «небольших дополнительных деталях» и подчеркивал, что все можно решить «с помощью бумажной работы». Теперь, в Манчестере, он мог доказать это на практике в работе с машиной, которая не была построена так, чтобы обеспечивать удобство программисту. Как бы то ни было, к 1949 году он уже потерял интерес к такому виду работы. Ему казалось, что не стоит беспокоиться о «маленьких дополнительных деталях» при переводе из двоичной системы исчисления в десятичную. Ему было легко работать с позиционной системой счисления с основанием 32, и Алану казалось, что так же должно быть и для всех остальных.

Чтобы использовать позиционную систему счисления с основанием 32, было необходимо найти 32 символа для 32 разных «цифр». За основу он взял систему, которая уже использовалась инженерами, в ней они передавали 5-битные комбинации, согласно коду Бодо. Таким образом, цифра «двадцать два», соответствующая последовательности 10110 двоичных цифр, была бы записана, как «Р», это буква, которая в последовательности 10110 зашифрована для обычного телепринтера. Работа в этой системе означала запоминание кода Бодо и выраженной в нем таблицы умножения, что он и лишь немногие другие могли сделать с легкостью.

Официальной причиной выбора этого примитивного метода кодирования, которая влекла за собой кропотливую работу для пользователя, стало то, что благодаря электронно-лучевой трубке можно и даже нужно было проверять содержимое запоминающего устройства путем «подглядывания», как говорил Алан. Он настаивал на том, что увиденные пятна на трубке должны были цифра за цифрой соответствовать написанной программе. Для того чтобы поддержать этот принцип последовательности, было необходимо выписать позиционную систему счисления с основанием 32 в обратном порядке, так, чтобы наименее значимая цифра шла впереди. Это делалось по техническим причинам, которые также предполагали считывание электронно-лучевых трубок слева направо. Еще одна проблема возникла из-за 5-битной комбинации, которая не соответствовала никакой букве алфавита в коде Бодо. (Это была та же проблема, что и с системой Rockex). Поэтому Джефф Тутилл уже ввел дополнительные символы. Ноль в позиционной системе счисления с основанием 32 был представлен, как «/». В результате целые страницы программ были покрыты такими чертами, в Кэмбридже говорили, что это соответствовало ливням за окнами в Манчестере.

К октябрю 1949 года манчестерская машина была готова, за исключением деталей, которые должен был сделать Ферранти. Пока машина собиралась, на прототипе для экономии времени было решено написать руководство по использованию, а также основные программы, которые можно было бы использовать на компьютере (в будущем он будет называться Марк I).

Это уже было следующей задачей Алана. Наверняка, он потратил много времени на проверку каждой функции на прототипе и спорил об их эффективности с инженерами. К октябрю он написал программу ввода для того, чтобы при первом включении компьютер мог читать информацию с лент, сохранять ее в нужном месте и начать ее использовать.

Но это была работа не для него, на данном этапе Руководство Handbook7, которое он написал для программистов, содержало множество полезных и практичных советов, а также несколько новых идей. Но на самом деле, в нем не было ничего и близко напоминающего его работу в Национальной физической лаборатории Великобритании (НФЛ) с числами с плавающей точкой. Он также ничего не сделал и с подпрограммами. В манчестерском проекте существовало два вида памяти: на машине Ферранти было восемь электронно-лучевых трубок, каждая из них содержала 1280 цифр и магнитный барабан, который предполагал не менее 655360 цифр, расположенных в 256 рядах по 2560 цифр в каждом. Программирование заключалось в процессе передачи данных и программ из барабана в трубки и обратно. Предполагалось, что каждая подпрограмма будет храниться на новом ряду барабана и будет перемещаться согласно требованиям. Схема Тьюринга затрагивала эту тему, но не вдавался в подробности. В своем Руководстве он небрежно написал:

Подпрограммы любой программы могут иметь подпрограммы. Это можно сравнить с блохами. Думаю, что невозможно представить себе длину паразитарной цепи блох, если только не верить в бесконечно длинные цепи. Такова же ситуация и с подпрограммами. Одна из них в конечном счете всегда сводится к программе без подпрограмм.

Но он это оставил на совести пользователя. Его собственная «Схема А» предполагала существование лишь одного уровня подпрограмм. В Руководстве было выявлено множество проблем с коммуникацией, с которыми он столкнулся в Манчестере. Для Уильямса и других инженеров математик был тем, кто мог делать вычисления, в частности, он показал им двоичную систему в новом свете. Однако для Тьюринга их схемы с позиционной системой счисления и все остальное были лишь простыми иллюстрациями того факта, что математики были вольны использовать систему символов так, как они хотели. Для него было очевидным, что символ не имеет никакой внутренней связи с объектом, который он символизирует, поэтому в начале его Руководства был длинный абзац, объясняющий, почему существовало убеждение, согласно которому последовательность импульсов могла быть истолкована в виде цифр. Эта была более точная, а также более творческая идея, но она не была понятна человеку, который никогда раньше не знал, что цифры могут быть выражены не только в порядке от 1 до 10. Не то, чтобы Алан презирал рутину и детальную работу с системой символов, как этого требовала манчестерская машина: в своем докладе он склонялся от абстрактного к детальному таким образом, что это имело смысл только для него. Создание языков программирования, которое он назвал «очевидным» в 1947 году, могло бы поглотить и его свободное понимание системы символов, а также готовность к простой работе, когда это необходимо. Но это именно то, чего он не сделал, и таким образом он не использовал то преимущество, которое давало ему понимание абстрактной математики.

С октября 1949 года у него появились два ассистента. Одним из них был аспирант Одри Бэйтс. Другой была Сесили Попплвелл, с которой он провел собеседование летом 1949 года. Она была выпускницей Кэмбриджа с опытом работы с перфокартами. Они работали в офисе главного здания университета викторианской эпохи и ждали пока не закончится строительство новой лаборатории, где планировалось использовать машину Ферранти. Но это было не самое удачное сотрудничество, так как он никогда не признавал их права на существование. В первый день Сесили он объявил: «Время ланча!» и вышел из комнаты, так и не показав, где можно поесть. Он охотно разговаривал со всеми, кто заходил в их офис, но ужасно раздражался, если его ассистенты участвовали в разговоре. Иногда ситуация накалялась, однажды в его сторону полетели насмешки, когда Алан пришел в офис в одном лишь пальто. В другой раз он занял десять шиллингов и прикрепил их к шортам по дороге домой. Обычно они были рады, когда он не приходил, а такое случалось довольно часто.