В примере с маршрутом фигурирует простой набор инструкций. С каждым шагом происходит продвижение от начала к концу перечня. Количество инструкций, которым нужно следовать, соответствует количеству шагов в списке. Как правило, у систематических процессов встречаются более разнообразные структуры. Рассмотрим инструкцию по забиванию гвоздей: (1) Взять гвоздь. (2) Если гвоздя нет, закончить работу, в противном случае продолжить. (3) Забивать гвоздь молотком. (4) Если гвоздь погнулся, выпрямить его и повторить шаг 3, в противном случае начать снова с шага 1.
Здесь содержится такое же количество инструкций, как и в примере с маршрутом, но есть существенное отличие — петли или, как говорят программисты, циклы. Вы повторяете внешний цикл (шаги с 1 по 4), пока не закончатся гвозди, а внутренний «вложенный» цикл (шаги 3 и 4) вступает в дело, если гвоздь согнулся от неумелых ударов молотка. Выполнение начинается с первой инструкции и, возможно, никогда не закончится, если, скажем, после каждого удара гвоздь будет гнуться. Количество выполняемых шагов обычно намного, а иногда и значительно больше, чем количество инструкций.
В инструкции по забиванию гвоздей есть два шага, при которых происходит ветвление, — они представлены в форме «если… тогда… в противном случае…» (шаги 2 и 4). Их называют
Он также избавляет от
Условные переходы — ЕСЛИ систематического процесса — играют ключевую роль в процессе вычислений. Машина, способная выполнять условные переходы, намного мощнее той, которая лишена такой возможности. Она аккуратно и быстро исполнит процесс невообразимой длительности. Она реализует процессы, зацикленные сами на себе, — возможно, одиннадцатьдесят одиннадцать дизиллионов раз — или даже модифицирует саму инструкцию как часть процесса. Любое устройство, претендующее на роль компьютера, должно понимать инструкцию условного перехода. Вычислительная машина может быть высотой в десять этажей, полностью электронной и чрезвычайно быстрой, но без инструкции условного перехода она не станет компьютером.
Если она только выполняет математические операции, это не компьютер. Понятие систематического процесса гораздо шире манипуляций с цифрами. Даже наши примеры с походом в магазин и забиванием гвоздей с математикой не связаны. Неудивительно, что Тьюринг все понял довольно быстро.
Это не значит, что математика не важна. Люди систематически осваивали ее на протяжении тысячелетий. Даже в эпоху вездесущих калькуляторов дети все еще учатся складывать два числа столбиком. Как известно, чтобы это сделать, нужно последовательно сложить каждую пару цифр, начиная справа, и записать их сумму в ответ. Если (это важно!) она равна или больше 10, то 1 переносится на следующий шаг и прибавляется к цифре, стоящей на одну позицию левее. И так далее. В процессе сложения столбиком есть еще одно неявное ЕСЛИ: если закончились цифры и больше нет единицы для переноса, придется остановиться. Это набросок процесса, который обычно называют
В прошлом веке слово «алгоритм» стало синонимом термина «систематический процесс». Оно произошло от искаженного имени персидского математика IX века аль-Хорезми. Он жил в древнем Багдаде и писал о систематических процессах, связанных с десятичной системой счисления — новой, только что появившейся в Индии концепцией, описывающей странную, доселе неведомую штуку под названием «ноль». В позднем Средневековье ее стали называть
Джеффри Чосер в XIV веке использовал фразу