Тем не менее, пишущая машинка обладала еще одним свойством, необходимым для ее функционирования. Ее каретка могла передвигаться, эти перемещения соотносились с листом бумаги, и печать символов происходила независимо от его положения на странице. Алан включил и эту идею тоже в свое представление машины более общего вида. Она должна была обладать «заложенными» конфигурациями и возможностью перемещать свою позицию на линии печати. Действие машины не зависело от своей позиции.
Не принимая во внимание остальные ненужные детали вроде полей, контроля за линией печати и другие, эти основные идеи давали достаточное представление об устройстве пишущей машинки. Ограниченное количество возможных конфигураций и позиций, и то, каким образом клавиша знака соотносилась с печатным символом, клавиша переключения регистра – смену положения от «нижнего» к «верхнему» регистру, а также клавиша пробела и функция возврата каретки на одну позицию назад, – все эти функции являлись наиболее важными для устройства машинки. Если бы любой инженер получил подобное описание функций устройства, в результате у него получилась бы типичная пишущая машинка, не учитывая ее цвет, вес, форму и другие признаки.
Но пишущая машинка обладала слишком ограниченным набором функций, чтобы служить моделью. Несомненно, она оперировала символами, но могла лишь записывать их, а также требовала присутствия машиниста, отвечающего за выбор символов и изменения конфигураций и позиций устройства, по одному за раз. Так какой же, задавался вопросом Алан Тьюринг, была бы машина наиболее общего вида, которая могла оперировать символами? Чтобы быть машиной, она должна обладать свойством пишущей машинки: иметь заданное количество конфигураций и четко определенное действие, закрепленное за каждой из них. И при этом она должна была иметь возможность выполнять намного больше. Таким образом, он представил в своем воображении машины, которые по сути представляли собой более мощные пишущие машинки.
Для простоты описания он представил машины, имеющие лишь одну рабочую строку. Это было лишь технической особенностью устройства, которая позволяла не учитывать наличие полей и контроля линии письма. Между тем, оставалось важным, чтобы количество поступаемой бумаги было неограниченным в обе стороны. В представлении Алана каретка его супер-пишущей машинки могла перемещаться на неограниченное количество позиций вправо и влево. Для большей определенности он представил бумагу в виде ленты, разделенной на ячейки таким образом, чтобы в каждую ячейку мог записан один символ. Так машины Тьюринга обладали конечным количеством действий, при этом сохраняя возможность работать на неограниченном пространстве.
Следующей необходимой функцией для машины была возможность считывать информацию или, по словам самого Алана, «сканировать» ячейку ленты, на которой остановилось считывающее устройство. Также она должна была обладать функцией не только записи символов, но и уметь их стирать. При этом она могла переместиться только на одну ячейку за раз. В таком случае какие действия оставались для машиниста пишущей машинки? Алан действительно отметил в своей работе возможность того, что он сам называл «машинами выбора», в которых внешний оператор должен принимать решения в определенных моментах работы устройства. Вместе с тем целью его работы было создание именно автоматических машин, для работы которых не потребуется вмешательство человека. С самого начала он хотел всесторонне изучить так называемую «сверхъестественную машину». Существенной идеей для подобного устройства оставалась возможность производить решение без вмешательства человеческого суждения, воображения или интеллекта.
Любая «автоматическая машина» должна была работать сама по себе, производя считывание и запись информации, перемещаясь вперед и назад, в соответствии с тем, как она была задумана. На каждом этапе ее работы действия должны быть строго определены текущей конфигурацией и считанным символом. Для большей точности конструкция машины должна была уметь определять свое действие в случае каждой комбинации конфигурации и считанного символа:
– записать новый (заданный) символ в пустую ячейку, или оставить уже записанный символ в неизменном виде, или стереть символ и оставить ячейку пустой;
– остаться в прежней конфигурации или сменить ее на другую (заданную) конфигурацию;
– переместиться на ячейку влево, или вправо, или остаться в текущей позиции.
Если всю эту информацию, определяющую действия машины, записать, получится «таблица переходов», имеющая конечное количество действий. Такая таблица может полностью описать работу машины, и независимо от того, была ли машина сконструирована или нет, такая таблица могла представить всю необходимую информацию о ее работе. С абстрактной точки зрения, именно таблица и являлась самой машиной.
С изменениями, вносимыми в таблицу, изменялось бы и поведение самой машины. Бесконечное множество таблиц соответствовало бы бесконечному множеству возможных машин. Алану удалось воплотить неясную идею «определенного метода» или «механического процесса» в чем-то более точном – «таблице переходов».
Но даже такая простая машина могла выполнять не только суммирование. Такая машина могла производить действие распознавания, например, «найти первый символ справа». Машина с более сложной программой могла производить умножение, повторяя действие копирования одной группы единиц, при этом стирая по одной единице из другой группы, и распознавая, когда необходимо прекратить производить данные действия. Такая машина могла также производить действие принятия решений, например, она могла решить, является ли число простым или составным, делится ли оно на другое заданное число без остатка. Совершенно очевидно, что этот принцип мог быть использован самыми различными способами, чтобы представить вычисления в механистическом виде.
Более того, Алан пришел к другому важному удивительному выводу: в такой «машине» между «числами» и производимыми с ними операциями не было никакого существенного различия. С точки зрения современной математики, все они представляли собой лишь символы.
Из этого следовало, что одна машина могла воспроизводить действия, выполняемые любой другой машиной. Такое устройство Алан и назвал универсальной машиной. Она должна была считывать дескриптивные числа, зашифровывать их в таблицы, а затем производить действия этих таблиц. Универсальная машина могла выполнять любые действия, которые производила любая другая таблица… Такая машина могла выполнять любые действия, и этого было достаточно, чтобы на время крепко задуматься. Более того, такая машина имела совершенно определенный вид, и Алан разработал соответствующую таблицу для универсальной машины.
И самое главное – Алану удалось доказать, что математика никогда не будет исчерпана никаким конечным множеством операций.
Дальше он выразил наиболее важную идею для своего исследования: «Действия компьютера в любой момент времени строго определены символами, которые он считывает также, как и его «состояние» в текущий момент. Мы можем предположить, что существует некоторый предел B для числа символов или ячеек, которые компьютер может считывать за одну единицу времени. Чтобы считать следующие символы, ему придется сделать шаг к следующей ячейке. Также предположим, что число подобных состояний, которые должны быть приняты во внимание, также конечно. Причины тому по своей природе схожи с теми, что возникают при ограничении количества символов. Если мы допустим бесконечное число состояний, некоторые из них будут «в некоторой степени похожими» и вследствие этого могут быть перепутаны. Следует еще раз подчеркнуть, что подобное ограничение не оказывает серьезного влияния на производимое вычисление, поскольку использования более сложных состояний можно попросту избежать, записав больше символов на рабочую ленту».