Все существующие в действительности цифровые вычислительные машины обладают лишь конечной памятью. Однако теоретически нетрудно представить себе машину с неограниченной памятью. Разумеется, в любой данный момент времени возможно использование только конечной части запоминающего устройства. Точно так же запоминающее устройство, которое можно физически осуществить, всегда имеет конечные размеры, но мы можем представлять дело так, что по мере надобности к нему пристраиваются все новые и новые части. Такие вычислительные машины представляют особый теоретический интерес, и впредь мы будем их называть машинами с бесконечной емкостью памяти.
Сама идея цифровой вычислительной машины отнюдь не является новой. Чарлз Бэббидж[3], занимавший с 1828-го по 1839 г. Люкасовскую кафедру по математике в Кембридже[4], разработал проект вычислительного устройства, названного им «Аналитической машиной»; создание ее, однако, так и не удалось завершить. Хотя у Бэббиджа были все основные идеи, существенные для создания такого механизма, его машина не имела перспектив. Скорость вычислений, которую позволила бы достичь машина Бэббиджа, оказалась бы, разумеется, выше скорости, достигаемой человеком, однако она была бы почти в 100 раз меньше, чем у той вычислительной машины, которая в настоящее время работает в Манчестере[5] и которая является одной из самых медленных современных машин. Запоминающее устройство в машине Бэббиджа было задумано как чисто механическое, с использованием карт и зубчатых колес.
То, что Аналитическая машина Бэббиджа была задумана как чисто механический аппарат, помогает нам избавиться от одного предрассудка. Часто придают значение тому обстоятельству, что современные цифровые машины являются электрическими устройствами и что нервную систему человека в некотором смысле можно отождествить с электрическим устройством. Но, поскольку машина Бэббиджа не была электрическим аппаратом и поскольку в известном смысле все цифровые вычислительные машины эквивалентны, становится ясно, что использование электричества в этом случае не может иметь теоретического значения. Естественно, что там, где требуется быстрая передача сигналов, обычно появляется электричество, поэтому неудивительно, что мы встречаем его в обоих указанных случаях. Для нервной системы химические явления играют по крайней мере столь же важную роль, что и электрические. В некоторых же вычислительных машинах запоминающее устройство в основном акустическое. Отсюда ясно, что сходство между нервной системой и цифровыми вычислительными машинами, состоящее в том, что в обоих случаях используется электричество, сводится лишь к весьма поверхностной аналогии. Если мы действительно хотим открыть глубокие связи, нам скорее следует искать сходство в математических моделях функционирования нервной системы и цифровых вычислительных машин.
V. Универсальность цифровых вычислительных машин
Рассмотренные в предыдущем разделе цифровые вычислительные машины можно отнести к классу «машин с дискретными состояниями». Так называются машины, работа которых складывается из совершающихся последовательно одна за другой резких смен их состояния. Состояния, о которых идет речь, достаточно отличаются друг от друга, поэтому можно пренебречь возможностью принять по ошибке одно из них за другое. Строго говоря, таких машин не существует. В действительности всякое движение непрерывно. Однако имеется много видов машин, которые удобно считать машинами с дискретными состояниями.
Например, если рассматривать выключатели осветительной сети, то удобно считать, отвлекаясь от действительного положения дела, что каждый выключатель может быть либо включён, либо выключен. То, что выключатель фактически имеет также и промежуточные состояния, несущественно для наших целей, и мы можем об этом забыть. Приведу пример машины с дискретными состояниями. Рассмотрим колесико, способное через каждую секунду совершать скачкообразный поворот (щелчок) на 120°, но которое можно застопоривать с помощью рычажка, управляемого извне. Пусть, кроме того, в момент, когда колесико принимает какое-нибудь определенное положение (одно из трех возможных для него), загорается лампочка. В абстрактном виде эта машина выглядит так. Внутреннее состояние машины (которое задается положением колесика) может быть q1, q2 или q3. На вход машины подается либо сигнал i либо сигнал i1 (положения рычажка). Внутреннее состояние в любой момент определено предыдущим состоянием и сигналом на входе согласно следующей таблице:
Сигналы на выходе, единственно видимые извне проявления внутреннего состояния (загорание лампочки), задаются таблицей
Состояние – q1– q2 – q3
Выход – o1 – o2 – o3
Этот пример типичен для машин с дискретными состояниями. Такие машины можно описывать с помощью таблиц при условии, что они обладают конечным числом возможных состояний.
Очевидно, что при заданном начальном состоянии машины и заданном сигнале на входе всегда возможно предсказать все будущие состояния. Это напоминает точку зрения Лапласа, утверждавшего, что если известны положения и скорости всех частиц во Вселенной в некоторый момент времени, то из такого полного описания ее состояния можно предсказать все ее будущие состояния. Однако то предсказание будущего, о котором у нас идет речь, гораздо ближе к практическому осуществлению, чем то, которое имел в виду Лаплас. Система «Вселенной как единого целого» такова, что даже очень небольшие отклонения в начальных состояниях могут иметь решающее значение в последующем. Смещение одного электрона на одну миллиардную долю сантиметра в некоторый момент времени может явиться причиной того, что через год человек будет убит обвалом в горах. Существенной особенностью тех механических систем, которые мы назвали «машинами с дискретными состояниями», является то, что в них это явление не имеет места. Даже если вместо идеализированных машин взять реальные физические машины, то точное (в разумных пределах) знание о состоянии машины в один момент времени позволяет нам с разумной степенью точности предсказать любое число ее состояний в последующем.
Как мы уже упоминали, цифровые вычислительные машины относятся к классу машин с дискретными состояниями. Но число состояний, в которых может находиться такая машина, обычно велико. Например, число состояний машины, работающей в настоящее время в Манчестере, равно приблизительно 2165000, т.е. почти 1050000. Сравните эту величину с числом состояний описанного выше «щелкающего» колесика. Нетрудно понять, почему число состояний вычислительной машины оказывается столь огромным. В вычислительной машине имеется запоминающее устройство, соответствующее бумаге, которой пользуется человек-вычислитель. Запоминающее устройство должно быть таково, чтобы в нем можно было записать любую комбинацию символов, которая может быть написана на бумаге. Для простоты допустим, что в качестве символов используются только цифры от 0 до 9. Различия в почерках не принимаются во внимание. Допустим, что человек-вычислитель располагает 100 листами бумаги, разграфленными на 50 строк каждый. Строка может вместить 30 цифр. Число состояний в этом случае равно 10100· 50·30, т.е. 10150000. Это приблизительно равно числу состояний трех Манчестерских машин, взятых вместе. Логарифм числа состояний по основанию 2 обычно называют «емкостью памяти» машины. Например, Манчестерская машина обладает емкостью памяти около 165 000, а машина с колесиком из нашего примера – около 1,6. Если две машины соединены вместе, то емкость памяти объединенной машины представляет собой сумму емкостей памяти составляющих машин. Это позволяет формулировать такие утверждения, как «Манчестерская машина содержит 64 магнитных трека (направляющих приспособлений), каждый емкостью по 2560, восемь электронно-лучевых трубок емкостью по 1280. Число различных запоминающих устройств доходит до 300, что в целом приводит к емкости памяти в 174 380 единиц».[6]
3
Чарлз Бэббидж (Charles Babbage) (1792–1871) – английский ученый, работавший в области математики, вычислительной техники и механики. Выступил инициатором применения механических устройств для вычисления и печатания математических таблиц. В 1812 г. у Бэббиджа возникла идея разностной вычислительной машины (Difference Engine). Строительство этой машины, которая должна была вычислять любую функцию, заданную ее первыми пятью разностями, началось в 1823 г. на средства английского правительства, однако в 1833 г. работа была прекращена главным образом в связи с финансовыми затруднениями. К этому времени у Бэббиджа возник проект другой, более совершенной машины. Эта машина, которую Бэббидж назвал «Аналитической машиной» (Analitical Engine), должна была проводить вычислительный процесс, заданный любыми математическими формулами. Бэббидж весь отдался конструированию своей новой машины, однако к моменту его смерти она так и не была закончена. Сын Бэббиджа завершил строительство части машины и провел успешные опыты по применению ее для вычислений некоторого рода.
4
Люкасовская кафедра в Тринити-колледже основана в 1663 г. на средства, пожертвованные Генри Люкасом. Первым люкасовским профессором был учитель Ньютона Барроу, вторым – сам Ньютон. Получение этой кафедры, сохранившейся до нашего времени, считалось всегда большой честью.
5
Манчестерская машина была построена в Манчестерском университете в конце 40-х годов. Конструирование машины происходило под руководством Вильямса (Р.С. Williams) и Килберна (T. Kilburn). В разработке и отладке машины принимал участие Тьюринг, который с этой целью в 1948 г. был приглашен в Манчестерский университет. Тьюринг занимался математическими вопросами, связанными с Манчестерской машиной, и особенно вопросами программирования.
6
Единицы, о которых говорит здесь Тьюринг, получили название «битов» (bits). По причинам, связанным с компьютеростроением, основной единицей измерения емкости машинной памяти стали «байты» (bytes). Ответ на вопрос «Сколько бит[ов] в байте?» с исторической точки зрения довольно темен (байт – емкость памяти, предназначенной для размещения одного символа), но стандартом de facto является соглашение 1 байт = 8 бит. Более крупными производными единицами являются килобайт (Кб) = 210= 1024 байт, мегабайт (Мб) = 210= 1024 Кб. Сейчас уже никого не удивляют гигабайты (Гб) и даже терабайты (Тб). Для более точного выражения единиц памяти (например, в синтезаторостроении) употребляются также единицы килобит (Кбит), мегабит (Мбит) и т.д.