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