НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

Пятьсот миллионов чего? (Глава седьмая)

- повторил Маленький принц: спросив о чем-нибудь, он не успокаивался, пока не получал ответа".

'- Три да два - пять. Пять да семь - двенадцать. Двенадцать? да три - пятнадцать. Добрый день. Пятнадцать да семь - двадцать два. Двадцать два да шесть - двадцать восемь. Некогда спичкой чиркнуть. Двадцать шесть да пять - тридцать один. Уф! Итого, стало быть, пятьсот один миллион шестьсот двадцать две тысячи семьсот тридцать один. -	Пятьсот миллионов чего? -	А? Ты еще здесь? Пятьсот миллионов... Уж не знаю, чего... У меня столько работы! Я человек серьезный, мне не до болтовни! Два да пять - семь
'- Три да два - пять. Пять да семь - двенадцать. Двенадцать? да три - пятнадцать. Добрый день. Пятнадцать да семь - двадцать два. Двадцать два да шесть - двадцать восемь. Некогда спичкой чиркнуть. Двадцать шесть да пять - тридцать один. Уф! Итого, стало быть, пятьсот один миллион шестьсот двадцать две тысячи семьсот тридцать один. -
Пятьсот миллионов чего?
- А? Ты еще здесь? Пятьсот миллионов... Уж не знаю, чего... У меня столько работы! Я человек серьезный, мне не до болтовни! Два да пять - семь

Этот отрывок из "Маленького принца" Сент-Экзюпери мы привели здесь потому, что нам самим необходимо срочно научиться считать. Это убедительно следует из всего того, что было сказано в предыдущей главе. Правда, кое-что мы уже умеем. В пятой главе мы научились вычислять интеграл с помощью цилиндра с золотником и брать производную с помощью еще более простого устройства, состоящего из кусочка металла, подвешенного на двух пружинках. Строго говоря, это устройство вычисляло ускорение, т. е. вторую производную по времени. Однако поскольку регулируемым параметром - интересующей нас величиной - была скорость, то отклонение грузика оказывалось пропорциональным первой производной от регулируемого параметра по времени.

Такие вычислительные устройства получили название аналоговых. Названы они так потому, что в своей работе подобные устройства используют метод аналогий. Сущность метода аналогий была хорошо известна Тому Сойеру. Чтобы подтвердить это, приведем еще один маленький отрывок, на этот раз из Марка Твена:

"Он подумал, что, пожалуй, стоило бы отыскать шарик, который он забросил, и терпеливо принялся за розыски. Но найти шарик не мог. Тогда он вернулся к тайнику, стал на то самое место, с которого бросал шарик, вынул из кармана второй шарик и бросил его в том же направлении, приговаривая:

- Брат, ступай ищи брата!

Он заметил, куда упал шарик, побежал туда и стал искать. Должно быть, шарик упал слишком близко или слишком далеко. Том проделал то же самое еще два раза. Последняя проба удалась: шарики лежали в двух шагах друг от друга".

Интересно, как решил бы подобную задачу отдаленный потомок Тома Сойера, если бы он отправился в лес, снабженный последней моделью карманной цифровой вычислительной машины "настоящей Барлоу"? Такая машина могла бы оказать Тому массу неоценимых услуг, особенно на экзаменах в воскресной школе, но помочь найти шарик, брошенный в сторону, она бы, наверное, не смогла. Действительно, для решения подобной "баллистической" задачим - в машину необходимо ввести начальные условия, т. е. направление, в котором брошен шарик, и его начальную скорость. В принципе это, конечно, возможно, но потребовалась бы измерительная аппаратура, во много раз более сложная, чем та примитивная "вычислительная машина", которой пользовался Том. Вот она, сила аналогий!

Все это, конечно, шутка, однако над многим в коротком рассказе, который мы привели здесь, и особенно над тем, что шарик был найден только с третьей попытки, стоит серьезно задуматься. Специалист по аналоговой технике сказал бы, что с помощью своей "вычислительной машины" Том решал "краевую баллистическую задачу со случайными параметрами, используя при этом метод периодизации решений". Но не будем углубляться в терминологию. Заметим только, что аналоговая вычислительная машина, опираясь на существующие в природе аналогии, воспроизводит физический процесс именно так, как он происходит на самом деле. При этом для исследования полета шарика совсем не обязательно, как это делал Том, пользоваться другим таким же точно шариком. Можно использовать любую физическую систему, например электрическую цепь. Требуется только, чтобы процессы в выбранной физической системе описывались математическими уравнениями, которыми описывается исследуемый процесс. Отсюда и название - метод аналогий.

Выбираемая для исследования физическая система называется моделью исследуемой системы. Заметим, что процессы в модели оказываются аналогичными процессам в используемой системе лишь приблизительно по той причине, что никакие уравнения не могут описать происходящие в природе явления абсолютно точно со всеми мельчайшими подробностями. Поэтому и получаемое решение лишь приближенно соответствует истине. Не учтенные при описании, как говорят, "малые" параметры выступают здесь в роли случайных возмущений. Из-за их влияния Тому и пришлось бросать шарик три раза.

В настоящее время аналоговая вычислительная техника представляет собой мощнейшее средство для решения сложных задач, сводящихся в основном к дифференциальным уравнениям. Чрезвычайно широко используется она и во всевозможных автоматических системах. Вспомним, однако, что в предыдущей главе мы столкнулись с необходимостью определять вероятности различных явлений, а для этого, как также было установлено выше, надо уметь главным образом складывать и делить. Поэтому всех интересующихся принципом действия и возможностями аналоговых вычислительных машин мы отсылаем к специальной литературе* и переходим к рассмотрению другого класса средств вычислительной техники - цифровых вычислительных машин.

*(А. В. Шилейко, Основы аналоговой вычислительной техники. М., "Энергия", 1971.)

Для того чтобы представить себе принцип действия цифровой вычислительной машины, вернемся еще раз к вступлению. Странствуя по планетам, Маленький принц встретился с Деловым человеком, который считал звезды, толком не зная, что он считает и зачем ему это нужно. Это занятие роднит его с цифровой вычислительной машиной, которая также не знает, что она считает. Разовьем эту идею еще дальше. Представим себе человека, который хочет сосчитать звезды, но не хочет при этом научиться даже складывать. Тогда ему очень поможет устройство, к описанию которого мы и переходим.

Наше устройство представляет собой деревянный ящик, наполненный карточками (рис. 32). Точно такие ящики читатель наверняка встречал в каталоге любой библиотеки. На каждой карточке написан ее порядковый номер, и в ящик они сложены по номерам, т. е. первой по порядку лежит карточка номер 1, а последней - у противоположной стенки ящика - лежит карточка, например, с номером 200.

Рис. 32 Деревянный ящик, наполненный карточками
Рис. 32 Деревянный ящик, наполненный карточками

Посмотрим, как можно использовать подобное устройство для складывания чисел. Условимся, что складывать надо любые числа, состоящие не более чем из девяти цифр. Пусть, например, нужно сложить 29 783 и 37 561. Поступим следующим образом. Вытащим из ящика карточки с порядковыми номерами от 1 до 9 и запишем - на этих карточках первое слагаемое, начиная с младшей цифры. Иными словами, на карточке номер 1 напишем цифру 3, на карточке номер 2 - цифру 8 и так далее, а на карточке номер 5 - цифру 2. На карточках от номера 6 до номера 10 напишем нули.

Положим взятые карточки на место, вытащим карточки с номерами от 11 до 20 и точно таким же образом запишем на них второе слагаемое, т. е. на карточке номер 11 запишем цифру 1 и так далее, а на карточке номер 15 - цифру 3. На карточках от номера 16 по номер 20 записываем нули. Операция, которую мы только что проделали, называется вводом исходных данных.

Поставим карточки 11-20 на место и извлечем из ящика карточку номер 100. На ней написано такое правило:

Достаньте из ящика карточку номер 99 и напишите на ней с левой стороны одно под другим числа 1, 11, 21, 22 и 31. После этого выполняйте правило, написанное на следующей по порядку карточке, т. е. на карточке с номером 101.

Выполним неукоснительно все то, что предписывает это правило. Тогда карточка номер 99 приобретет вид, показанный на рис. 33. Кррме того, выполняя предыдущее правило, мы уже извлекли из ящика карточку номер 101. На ней написано:

Достаньте из ящика карточки, номера которых записаны на карточке номер 99, и разложите их в том же порядке. Затем выполняйте правило, записанное на карточке номер 102.

Рис. 33 Карточка номер 99 приобретет вид
Рис. 33 Карточка номер 99 приобретет вид

Снова неукоснительно выполняем это правило, т. е. достаем из ящика карточки с номерами 1, И, 21, 22 и 31 и кладем их на стол так, чтобы сверху оказалась карточка номер 1, под ней карточка номер 11, затем карточки с номерами 21 и 22 и, наконец, в самом низу карточка номер 31. Предположим также, что на карточке номер 21 кто-то уже написал 0.

Правило, записанное на карточке номер 102, гласит:

Если на трех карточках, лежащих сверху, записаны нули, то запишите нули также и на двух остальных карточках и выполняйте правило, записанное на карточке номер 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке, т. е. на карточке номер 103.

В нашем случае явно приходится выполнять вторую часть этого правила, т. е. извлекать карточку номер 103 и выполнять то, что на ней написано. На карточке номер 103 и следующих за ней написаны такие правила:

103. Если на трех карточках, лежащих сверху, написаны цифры 1,0,0 (в любом порядке), tta четвертую сверху карточку запишите 0, а на пятую 1, после чего переходите к выполнению правила, записанного на карточке номер 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

104. Если на трех карточках, лежащих сверху, написаны цифры 1, 1, 0 или 2, 0, 0, на четвертую сверху карточку запишите 0, а на пятую 2, после чего переходите к выполнению правила, записанного на карточке номер 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

105. Если на трех карточках, лежащих сверху, написаны цифры 1,1,1, или 2,1,0, или 3,0,0 (в любом порядке), на четвертую сверху карточку запишите 0, а на пятую 3, после чего переходите к выполнению правила, записанного на карточке номер 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

106. Если на трех карточках, лежащих сверху, написаны цифры 2,1,1, или 2,2,0, или 3,1,0, или 4,0,0 (в любом порядке), на четвертую сверху карточку запишите 0, а на пятую 4, после чего переходите к выполнению правила, записанного на карточке номер 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

107. Если на трех карточках, лежащих сверху, написаны цифры 3, 1, 1, или 2, 2, 1, или 3, 2, 0, или 4, 1, 0 или 5, 0, 0 (в любом порядке), на четвертую сверху карточку запишите О, а на пятую 5, после чего переходите к выполнению правила, записанного на карточке номер 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

108. Если на трех карточках, лежащих сверху, написаны цифры 4,1,1, или 3,2,1, или 4,2,0, или 5,1,0, или 6,0,0 (в любом порядке), на четвертую сверху карточку запишите Ot а на пятую 6, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

109. Если на трех карточках, лежащих сверху, написаны цифры 5, 1, 1, или 4, 2, 1, или 3,3,1, или 7,0,0, или 5,2,0, или 4,3,0 (в любом порядке), на четвертую сверху карточку запишите 0, на пятую 7 после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

110. Если на трех карточках, лежащих сверху, написаны цифры 6, 1, 1, или 5, 2, 1, или 4, 3, 1 или 8, 0, 0, или 7, 1, 0, или 6, 2, О, или 5, 3, 0, или 4, 4, 0 (в любом порядке), на четвертую сверху карточку запишите 0, а на пятую 8, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

111. Если на трех карточках, лежащих сверху, написаны цифры 7, 1, 1, или 6, 2, 1, или 5, 3, 1, или 4, 4, 1, или 9, 0, 0, или 8, 1, О, или 7, 2, 0, или 6, 3, 0, или 5, 4, 0 (в любом порядке), на четвертую сверху карточку запишите 0, а на пятую 9, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

112. Если на трех карточках, лежащих сверху, написаны цифры 8, 1, 1, или 7, 2, 1, или 6, 3, 1, или 5, 4, 1, или 5, 5, 0, или 6, ,4, О, или 7, 3,0, или 8, 2, 0, или 9, 1, 0 (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 0, после чего переходите к выполнению правила 200. В противном случае выполняйте правивило, записанное на следующей по порядку карточке.

113. Если на трех карточках, лежащих сверху, написаны цифры 9, 1, 1, или 8, 2, 1, или 7, 3, 1, или 6, 4, 1, или 5, 5, 1, или 9, 2, О, или 8, 3, 0, или 7, 4, 0, или 6, 5, 0 (в любом порядке), на четвертую сверху карточку запишите 1, на пятую 1, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

114. Если на трех карточках, лежащих сверху, написаны цифры 9, 2, 1, или 8, 3, 1, или 7, 4, 1, или 6, 5, 1, или 9, 3, 0, или 8, 4, О, или 7, 5, 0, или 6, 6, 0 (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 2, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

115. Если на трех карточках, лежащих сверху, написаны цифры 9, 3, 1, или 8, 4, 1, или 7, 5, 1, или 6, 6, 1, или 9, 4, 0, или 8, 5, 0, или 7, 6, 0 (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 3, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

116. Если на трех карточках, лежащих сверху, написаны цифры 9, 4, 1, или 8, 5, 1, или 7, 6, 1, или 9, 5, 0, или 8, 6, 0, или 7, 7, О (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 4, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

117. Если на трех карточках, лежащих сверху, написаны цифры 9, 5, 1, или 8, 6, 1, или 7, 7, 1, или 9, 6, 0, или 8, 7Л 0 (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 5, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

118. Если на трех карточках, лежащих сверху, написаны цифры 9, 6, 1, или 8, 7, 1, или 9, 7, 0, или 8, 8, 0 (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 6, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

119. Если на трех карточках, лежащих сверху, написаны цифры 9, 7, 1, или 8, 8, 1, или 9, 8, 0 (в любом порядке); на четвертую сверху карточку запишите 1, а на пятую 7, после чего переходите к выполнению правила 200. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

120. Если на трех карточках, лежащих сверху, написаны цифры 9, 8, 1, или 9, 9, 0 (в любом порядке), на четвертую сверху карточку запишите 1, а на пятую 8, после чего переходите к выполнению правила 206. В противном случае выполняйте правило, записанное на следующей по порядку карточке.

121. Если на трех карточках, лежащих сверху, написаны цифры 9, 9, .1, на четвертую сверху карточку запишите 1, а на пятую 9, после чего переходите к выполнению правила 200.

На карточке номер 200 записано следующее сложное правило, которое для удобства мы подразделим на ряд последовательных пунктов:

а) пять карточек, лежащих на столе, положите в ящик на свои места;

б) на карточке номер 99 запишите новую колонку цифр правее предыдущей колонки так, чтобы каждая новая цифра равнялась предыдущей, увеличенной на единицу (старые цифры после этого зачеркните);

в) если новые цифры на карточке номер 99 меньше, чем 10, 20, 30 и 40 соответственно, переходите к выполнению правила, записан ного на карточке номер 101. В противном случае ваша работа завершена.

Попробуем теперь проделать все то, что нам предписывают только что сформулированные правила применительно к рассмотренному выше примеру. Перед нами на столе лежат пять карточек, на верхней из них написана цифра 3, на следующей за ней цифра 1 и затем цифра 0. Остальные две карточки пустые. Кроме того, на столе лежит карточка номер 99, на которой слева записана колонка цифр 1, 11, 21, 22, 31 (см. рис. 33).

Начинаем перебирать карточки с номерами 102-121 до тех пор, пока не дойдем до карточки номер 106. Правило, записанное на этой карточке, предписывает нам начертать на карточке, лежащей четвертой сверху (карточка номер 22), цифру 0, а на следующей за ней (карточка номер 31) - цифру 4. После этого, следуя правилу, записанному на карточке 200, мы расставляем пять лежащих перед нами карточек на свои места в ящике. Затем на карточке номер 99, которая остается лежать на столе, мы зачеркиваем 1 и пишем рядом с ней, правее, цифру 2, зачеркиваем цифру 11 и пишем правее ее цифру 12 и т. д. Карточка номер 99, после того как на ней проделано все, что предписывают правила, изображена на рис. 34.

Рис. 34 Карточка номер 99, после того как на ней проделано все, что предписывают правила
Рис. 34 Карточка номер 99, после того как на ней проделано все, что предписывают правила

Продолжаем выполнять правила. Извлекаем из ящика пять карточек с номерами 2, 12, 22, 23 и 32 и раскладываем их друг под другом. Перед нами цифры (в порядке сверху вниз) 8, 6, 0 и две пустые карточки. Это заставляет нас снова начать перебор карточек с номера 102 до тех пор, пока мы не дойдем до карточки номер 116. Выполняя записанные на ней правила, изображаем на карточке номер 23 цифру 1, а на карточке номер 32 - цифру 4. Переходим к выполнению правила, записанного на карточке номер 200, и т. д.

Если читатель не поленится довести начатый нами анализ до конца, то он убедится, что на карточках от номера 31 до номера 40 окажется записанным число 0 000 067 344. Мы записали это число так, что крайняя справа - цифра, зафиксированная на карточке номер 31, а крайняя слева - цифра, зафиксированная на карточке номер 40. Ясно также, что это число есть не что иное, как сумма чисел 29 783 и 37 561. Добавим еще, что после всего проделанного карточку номер 99 имеет смысл выбросить и заменить чистой карточкой с таким же точно номером.

То же самое следует проделать и с карточками от номера 1 по номер 40, однако уже после того, как полученный результат будет использован. Теперь наш ящик с карточками подготовлен для сложения следующей пары чисел,

Заметим, что карточки понадобились нам только для того, чтобы записывать на них или, другими словами, запоминать некоторые сведения. Поэтому ящик с карточками мы назовем запоминающим устройством или, еще короче, памятью, а отдельные карточки запоминающего устройства - ячейками.

Заметим также, что отдельные карточки в ящике использовались нами, вообще говоря, по-разному. Так, карточки от номера 1 по номер 20 можно назвать ячейками для хранения исходных данных, или условий задачи. Данные, записанные на этих карточках, нужны лишь до тех пор, пока задача не будет полностью решена. После этого их можно выбросить и. заменить пустыми с такими же номерами. К слову сказать, эта операция называется стиранием, или очищением ячеек памяти. Карточки от номера 22 по номер 30 можно назвать ячейками, хранящими промежуточные результаты вычислений. Каждая из них была нам нужна только один раз, когда складывалась соответствующая пара цифр. Поэтому здесь вместо девяти карточек можно было воспользоваться одной, зачеркивая на ней всякий раз предыдущую цифру и записывая новую, но тогда усложнились бы соответствующие правила.

Карточки с номера 31 по номер 40 называют ячейками для хранения результатрв. Эти карточки нельзя выбрасывать до тех пор, пока результат не будет тем или иным способом использован. Заметим, что результат может быть использован, в частности, и при решении следующей задачи. Тогда карточки остаются на своих местах.

Интересна роль карточки номер 21. На ней всегда записан 0. Такие карточки мы назовем ячейками, хранящими константы.

На карточке номер 99 мы записывали, зачеркивали и снова записывали цифры, которые непосредственно не участвовали в вычислениях, но использовались нами для установления порядка дейстзий. Такие карточки мы назовем рабочими ячейками.

Наконец, на карточках с номера 100 по номер 121, а также на карточке номер 200 записаны правила или, как сейчас принято говорить, программа вычислений. Читатель уже давно понял, что правила, записанные на карточках с номера 102 по номер 121, есть не что иное, как хорошо известная ему с первого класса таблица сложения. Эту таблицу, а также другие правила, позволяющие решать подчас неизмеримо более сложные задачи, принято называть алгоритмом. Алгоритм вместе с другими вспомогательными правилами, записанными в нашем случае на карточках с номерами 100, 101 и 200, и составляет программу.

Карточки с записанной на них программой играют совершенно исключительную роль. Действительно, если бы на этих карточках ничего не было записано, наша затея потеряла бы всякий смысл, так как никому не известно, что надо делать с ящиком, заполненным карточками. С другой стороны, достаточно изменить хотя бы одно правило программы, как будет решаться совершенно иная задача.

Но в рассмотренном нами примере, кроме ящика с карточками, в решении задачи принимал участие также и человек. Посмотрим подробнее, к чему сводилось это участие.

Во-первых, он должен был что-то записывать на карточках. Во-вторых, он должен был вытаскивать карточки из ящика либо по порядку, либо так, как это предписывалось правилами. Наконец, он должен был читать все, что написано на карточках, и выполнять правила. Если все организовать именно так, как было описано выше, то чтение и выполнение правил практически не требует никаких специальных знаний и способностей.

Действительно, возьмем на выбор какое-нибудь правило, например правило, записанное на карточке номер 114, и разобьем его на пункты, как это уже делалось выше. Тогда правило 114 приобретет следующий вид:

а) определите, имеются ли на трех карточках, лежащих сверху, цифры 9, 2, 1, или 8, 3, 1, или 7, 4, 1, или 6, 5, 1, или 8, 4, 0, или 7, 5, 0, или 6, 6, 0 (в любом порядке);

б) если результат, полученный при выполнении п. а), положителен на четвертую сверху карту напишите 1, а на пятую 2, после чего переходите к выполнению правила 200;

в) если результат, полученный при выполнении п. а), отрицательный, выполняйте правило, записанное на следующей по порядку карточке.

Рассмотрим сначала п. а). Ясно, что цифры, которые надо искать на трех карточках, лежащих на столе, записаны на карточке номер 114. Следовательно, действия, которые надо выполнять в соответствии с п. а), - сравнение цифр, записанных на двух различных карточках. Такое сравнение выполнить исключительно, просто, если предположить, что карточки прозрачные, а все записанные на них цифры имеют одинаковые размены и одинаковый шрифт. Тогда достаточно наложить одну карточку ца другую и посмотреть их на просвет. Автоматизировать такую операцию проще простого.

Результатом выполнения п. а) может быть только один из двух ответов - либо да, если искомая тройка цифр действительно обнаружена, либо нет - в противном случае. Каждый из этих ответов побуждает в свою очередь выполнять либо ц. б), либо п. в). Иными словами, возникает ситуация, когда в зависимости от результата выполнения первого действия осуществляется переход к выполнению либо второго, либо третьего пункта. Действие, выполняемое в подобной ситуации, называется переходом по точному совпадению. При этом совершенно неважно, что с чем совпадает, ведь вместо цифр на карточках могут быть изображены любые значки.

Пункт б) требует записать на четвертую карточку 1, а на пятую 2. Подобная операция легко может быть автоматизирована - это ясно без слов. Отметим только, что, выполняя данную операцию, мы как бы пересылаем, например, цифру 1 с карточки номер 114 на карточку, лежащую на столе четвертой сверху. Поэтому рассмотренная операция и получила название операции пересылки.

Наконец, п. в), предписывает нам вытащить карточку, стоящую в ящике следующей по порядку или, другими словами, увеличить номер предыдущей карточки на единицу. Эту операцию также чрезвычайно просто автоматизировать, если номера карточек, например, не записывать цифрами, а пробивать на карточках отверстия, количество которых совпадает с порядковым номером карточки. Тогда увеличить номер на единицу, значит, просто пробить одно дополнительное отверстие. Порядковый номер карточкой принято называть ее адресом, поэтому и сама только что рассмотренная операция получила название операции переадресации на единицу.

Снабдим наш ящик с карточками автоматом, способным выполнять три перечисленные выше операции: операцию перехода по точному совпадению, операцию пересылки и операцию переадресации на единицу. Если этот автомат работает в соответствии с еще одним правилом, а именно всегда начинает работу с просмотра карточки номер 100, то мы сможем полностью избавиться от услуг человека. Точнее, на долю человека выпадет теперь только необходимость записывать на отведенных для этого карточках исходные данные. Сам автомат, очевидно, относится к числу простейших. Согласно той классификации, которую мы провели в предыдущих главах, это автомат разомкнутого типа, выполняющий заданную раз и навсегда последовательность деислтай. Но чэдлй автомат, соединенный с ящиком, заполненным карточками, - это и есть цифровая вычислительная машина.

Чтобы устранить возможные недоразумения, торжественно заверяем читателя в том, что мы ничего не упрощали, во всяком случае в той части, которая касается принципа действия современных цифровых вычислительных машин. Цифровая вычислительная машина действительно не содержит ничего другого, кроме памяти и автомата, способного выполнять перечисленные выше операции. Если что и добавляется, так это устройства, позволяющие автоматически вводить исходные данные или извлекать результаты вычислений, но эти устройства не оказывают непосредственного влияния на процесс вычислений.

Конечно, технически все выглядит иначе. Так, память вычислительной машины - это не ящик с карточками, а устройство, состоящее из очень большого числа крохотных сердечников, способных намагничиваться и сохранять состояние намагниченности. Ряд таких сердечников составляет ячейку.Количество времени, затрачиваемого на то, чтобы записать что:нибудь в ячейку или прочесть ее содержимое, составляет у современных цифровых вычислительных машин одну десятимиллионную долю секунды. За такое же количество времени выполняются и операции перехода по точному совпадению, пересылки и переадресации на единицу. Для того чтобы выполнить сложение двух девятизначных цифр по изложенным выше правилам, современной вычислительной машине потребовалось бы около 10 мксек. Вряд ли можно предположить, что даже самый опытный и тренированный человек - вычислитель сумеет сложить два девятизначных числа быстрее чем за 10 сек. Следовательно, цифровая вычислительная машина работает примерно в миллион раз быстрее человека. Это одно из обстоятельств, объясняющих чудеса, творимые современной вычислительной техникой.

Есть и второе важное обстоятельство. Дело в том, что процесс работы по правилам, подобный описанному выше, приведет к успеху в том и только в том случае, если все правила будут выполняться неукоснительно: ни одно из них не будет пропущено и при их выполнении не будут допущены ошибки. Здесь вычислительная машина также обладает несомненными преимуществами. Современные машины могут работать без единой ошибки примерно в течение месяца. Иными словами, одна ошибка допускается за

30 X 24 X 60 X 60 X 10 000 000 - 25 920 000 000 000

операций. Исследования показали, что поставленный в такие же условия специально натренированный человек делает одну ошибку в среднем на каждую тысячу операций. Значит, машина ошибается в 25 920 000 000 раз реже, чем человек.

Количество ячеек в памяти современных цифровых вычислительных машин достигает нескольких миллиардов. В этой части машины пока еще уступают человеку, объем памяти которого значительно больше. Однако по мере развития технологии разрыв между объемом памяти машины и объемом памяти человека все более сокращается.

И все же наиболее поразительным, на наш взгляд, является тот факт, что каковы бы ни были быстродействие, объем памяти и надежность, самая сложная и самая совершенная цифровая вычислительная машина есть не что иное, как память, т. е. тот же самый ящик с карточками, только более усовершенствованный, и автомат, выполняющий над содержимым ячеек памяти простейшие операции.

Если память машины пуста, то она не может делать ничего, даже складывать. Все, что может цифровая вычислительная машина, это выполнять программу, записанную в соответствующих ячейках ее памяти.

С каким ликованием прочтет эти строки тот, кто до сих пор убежден, что машина лишь слепой исполнитель программы, введенной в нее человеком. Но подождите радоваться. Из всего сказанного выше с очевидностью следует, что цифровая вычислительная машина способна решить любую задачу, если только процесс решения можно описать в форме алгоритма, т. е. последовательности правил, подобной описанной выше. Составление программы - задача, которая решается также по определенным правилам. Следовательно, нет никаких препятствий к тому, чтобы машина сама составляла для себя программу. Чтобы пояснить, как это делается, вернемся еще раз к описанному выше примеру.

Заметим, что правила, начиная с записанного на карточке номер 102 вплоть до карточки с номером 121, в одинаковой мере пригодны для сложения любой пары цифр, взятых из двух слагаемых. Назовем эту часть программы стандартной программой сложения двух цифр. Правила, записанные на карточках с номерами 100, 101 и 200, обеспечивают повторение стандартной программы сложения двух цифр столько раз, сколько это нужно, пока не будет завершена операция сложения двух чисел.

Разовьем теперь эту идею дальше. Предположим, что мы хотим научить машину умножать числа. Известно, что операцию умножения можно выполнять, как ряд последовательных сложений. Следовательно, мы вправе рассматривать всю описанную нами программу как стандартную программу сложения на этот раз двух чисел. А чтобы научить машину умножать, достаточно добавить лишь несколько карточек, содержащих правила повторения стандартной программы сложения.

Но то, что получится после добавления этих карточек, это снова стандартная программа - программа умножения, а например, возведение в степень суть повторение операции умножения.

Подойдем теперь к тому же вопросу с несколько иных позиций. Перед началом работы в машине были карточки с записанными на них исходными данными задачи, в нашем примере это два числа. Но легко понять, что на карточках не обязательно писать цифры, можно писать все, что угодно, например слова, составленные из букв русского или латинского алфавита, или же какие-либо другие символы. Работа машины при этом никак не изменится, поскольку все, что делает машина, это выполнение операций сравнения. А операция сравнения будет выпол