Игра в имитацию
Шрифт:
Метод Лукаса был как будто специально создан для компьютера, который оперирует двузначными числами. Ньюман объяснил Тутиллу и Килберну задачу, и в июне 1949 года они создали программу, которая помещалась в четыре запоминающие электронно-лучевые трубки и все еще оставляла место для вычислений до P = 353. По пути они проверили все, что успели сделать Эйлер и Лукас, но больше простых чисел не обнаружили.
В это время между инженерами и математиками был заключен нелегкий договор о союзе, две стороны разделили обязанности. Ньюман начал проявлять немного больше интереса к самой машине, а Алан взял на себя роль математика и составил список команд, которые должен выполнять компьютер, хотя инженеры в итоге этот список сократили. При этом в создании самой логической конструкции он участия не принимал — здесь все сделал Тутилл. Но у Алана был контроль над механизмом ввода и вывода, который предназначался для пользователя.
В НФЛ он занимался
Работа Алана заключалась в том, чтобы сделать машину удобной в использовании, однако его понятия об удобстве не всегда совпадали с понятиями окружающих. Конечно же, он раскритиковал принцип, по которому работал Уилкис: он предполагал, что аппаратура должна быть такой, чтобы пользователю было просто отслеживать команды. Так, буква А была символом для добавления команды. Алан, напротив, считал, что удобство должна обеспечивать программа, а не оборудование. Еще в 1947-м году он говорил о вопросах удобства как о «небольших дополнительных деталях» и подчеркивал, что все можно решить «с помощью бумажной работы». Теперь, в Манчестере, он мог доказать это на практике в работе с машиной, которая не была построена так, чтобы обеспечивать удобство программисту. Как бы то ни было, к 1949 году он уже потерял интерес к такому виду работы. Ему казалось, что не стоит беспокоиться о «маленьких дополнительных деталях» при переводе из двоичной системы исчисления в десятичную. Ему было легко работать с позиционной системой счисления с основанием 32, и Алану казалось, что так же должно быть и для всех остальных.
Чтобы использовать позиционную систему счисления с основанием 32, было необходимо найти 32 символа для 32 разных «цифр». За основу он взял систему, которая уже использовалась инженерами, в ней они передавали 5-битные комбинации, согласно коду Бодо. Таким образом, цифра «двадцать два», соответствующая последовательности 10110 двоичных цифр, была бы записана, как «Р», это буква, которая в последовательности 10110 зашифрована для обычного телепринтера. Работа в этой системе означала запоминание кода Бодо и выраженной в нем таблицы умножения, что он и лишь немногие другие могли сделать с легкостью.
Официальной причиной выбора этого примитивного метода кодирования, которая влекла за собой кропотливую работу для пользователя, стало то, что благодаря электронно-лучевой трубке можно и даже нужно было проверять содержимое запоминающего устройства путем «подглядывания», как говорил Алан. Он настаивал на том, что увиденные пятна на трубке должны были цифра за цифрой соответствовать написанной программе. Для того чтобы поддержать этот принцип последовательности, было необходимо выписать позиционную систему счисления с основанием 32 в обратном порядке, так, чтобы наименее значимая цифра шла впереди. Это делалось по техническим причинам, которые также предполагали считывание электронно-лучевых трубок слева направо. Еще одна проблема возникла из-за 5-битной комбинации, которая не соответствовала никакой букве алфавита в коде Бодо. (Это была та же проблема, что и с системой Rockex). Поэтому Джефф Тутилл уже ввел дополнительные символы. Ноль в позиционной системе счисления с основанием 32 был представлен, как «/». В результате целые страницы программ были покрыты такими чертами, в Кэмбридже говорили, что это соответствовало ливням за окнами в Манчестере.
К октябрю 1949 года манчестерская машина была готова, за исключением деталей, которые должен был сделать Ферранти. Пока машина собиралась, на прототипе для экономии времени было решено написать руководство по использованию, а также основные программы, которые можно было бы использовать на компьютере (в будущем он будет называться Марк I).
Это уже было следующей задачей Алана. Наверняка, он потратил много времени на проверку каждой функции на прототипе и спорил об их эффективности с инженерами. К октябрю он написал программу ввода для того, чтобы при первом включении компьютер мог читать информацию с лент, сохранять ее в нужном месте и начать ее использовать.
Но это была работа не для него, на данном этапе Руководство Handbook7, которое он написал для программистов, содержало множество полезных и практичных советов, а также несколько новых идей. Но на самом деле, в нем не было ничего и близко напоминающего его работу в Национальной физической лаборатории Великобритании (НФЛ) с числами с плавающей точкой. Он также ничего не сделал и с подпрограммами. В манчестерском проекте существовало два вида памяти: на машине Ферранти было восемь
Подпрограммы любой программы могут иметь подпрограммы. Это можно сравнить с блохами. Думаю, что невозможно представить себе длину паразитарной цепи блох, если только не верить в бесконечно длинные цепи. Такова же ситуация и с подпрограммами. Одна из них в конечном счете всегда сводится к программе без подпрограмм.
Но он это оставил на совести пользователя. Его собственная «Схема А» предполагала существование лишь одного уровня подпрограмм. В Руководстве было выявлено множество проблем с коммуникацией, с которыми он столкнулся в Манчестере. Для Уильямса и других инженеров математик был тем, кто мог делать вычисления, в частности, он показал им двоичную систему в новом свете. Однако для Тьюринга их схемы с позиционной системой счисления и все остальное были лишь простыми иллюстрациями того факта, что математики были вольны использовать систему символов так, как они хотели. Для него было очевидным, что символ не имеет никакой внутренней связи с объектом, который он символизирует, поэтому в начале его Руководства был длинный абзац, объясняющий, почему существовало убеждение, согласно которому последовательность импульсов могла быть истолкована в виде цифр. Эта была более точная, а также более творческая идея, но она не была понятна человеку, который никогда раньше не знал, что цифры могут быть выражены не только в порядке от 1 до 10. Не то, чтобы Алан презирал рутину и детальную работу с системой символов, как этого требовала манчестерская машина: в своем докладе он склонялся от абстрактного к детальному таким образом, что это имело смысл только для него. Создание языков программирования, которое он назвал «очевидным» в 1947 году, могло бы поглотить и его свободное понимание системы символов, а также готовность к простой работе, когда это необходимо. Но это именно то, чего он не сделал, и таким образом он не использовал то преимущество, которое давало ему понимание абстрактной математики.
С октября 1949 года у него появились два ассистента. Одним из них был аспирант Одри Бэйтс. Другой была Сесили Попплвелл, с которой он провел собеседование летом 1949 года. Она была выпускницей Кэмбриджа с опытом работы с перфокартами. Они работали в офисе главного здания университета викторианской эпохи и ждали пока не закончится строительство новой лаборатории, где планировалось использовать машину Ферранти. Но это было не самое удачное сотрудничество, так как он никогда не признавал их права на существование. В первый день Сесили он объявил: «Время ланча!» и вышел из комнаты, так и не показав, где можно поесть. Он охотно разговаривал со всеми, кто заходил в их офис, но ужасно раздражался, если его ассистенты участвовали в разговоре. Иногда ситуация накалялась, однажды в его сторону полетели насмешки, когда Алан пришел в офис в одном лишь пальто. В другой раз он занял десять шиллингов и прикрепил их к шортам по дороге домой. Обычно они были рады, когда он не приходил, а такое случалось довольно часто.
Работа с прототипом проходила не так гладко. Согласно Сесили Попплвелл, это требовало огромной физической подготовки. В начале работы ты должен был предупредить инженеров и включить ручные переключатели, чтобы ввести входную программу. Светлая полоса на контрольной электронно-лучевой трубке показывала, что цикл ожидания запущен. Когда цель была достигнута, нужно было бежать наверх, чтобы вставить ленту в устройство считывания, а потом вернуться к машине. Если все шло по плану, ты должен был позвонить инженерам, чтобы они включили ток записи и очистили аккумулятор. Если все сложилось удачно, то лента считывалась. Как только рисунок на мониторе показывал, что процесс окончен, инженеры переключали ток записи на барабан. Как и любое устройство, машина была потенциальным источником ложных показаний, кроме этого было сложно вставить ленту с первого раза, каждый раз нужно было бежать в другую комнату.
На самом деле, на прототипе запись с трубок на магнитный барабан была практически невозможной. Алан писал:
Если судить с точки зрения программиста, наименее надежной частью машины являются магнитные объекты письма. Неизвестно, насколько записи были неправильными, как и их чтение. Последствия неправильных записей были куда более катастрофическими, нежели другие ошибки, совершенные машиной. Автоматические записи практически никогда не делались. Другими источниками ошибок было неправильное хранение трубок и множительного устройства.