ЭЛЕКТРОННЫЕ ВЫЧИСЛИТЕЛЬНЫЕ МАШИНЫ

К оглавлению
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 

Человек создает машины, чтобы облегчить труд. И они безотказно помогают шахтерам и кузнецам, колхозникам и землекопам. Но вот могут ли они принести пользу математикам, приняв на себя хотя бы часть их работы?

Еще 25—30 лет назад в ответ на такой воп­рос последовало бы решительное «нет»: уж

очень трудно было вообразить себе машину на поприще умственного труда!

Теперь положение изменилось. С каж­дым днем повышается роль науки — она стала уже непосредственной производитель­ной силой общества. Работникам умственного труда приходится сталкиваться теперь с та­кими проблемами, которые для «невооружен­ного» мозга не только отдельного человека, но даже и целого коллектива оказываются непо­сильными. Если раньше для ускорения вычислений довольствовались такими простыми при­способлениями, как счеты, арифмометр, лога­рифмическая линейка, то теперь этого уже недостаточно. Ведь считая на арифмометре, не сделаешь в минуту больше трех действий над многозначными числами, а расчет атомного реактора включает в себя более 6 млрд. ариф­метических действий. Значит, на этот расчет понадобится 2 млрд. минут; а ведь первый мил­лиард минут с начала нашей эры истек только 29 апреля 1902 года! Еще труднее поспевать вычислителям при запуске космических кораб­лей: они должны выдавать результат очень сложных расчетов почти мгновенно, пока ра­кета не успела еще значительно отклониться от заданной траектории.

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

На помощь приходят электронные вычис­лительные машины (рис. 1).

Создать электронный арифмометр!

Электронная вычислительная машина по сравнению с простым арифмометром — это все равно, что современный завод по сравнению с напильником.

Прежде всего, арифмометр и подобные ему простые вычислительные приборы слишком мед­лительны. Колеса с зубьями и другие механи­ческие детали чересчур инерционны и даже при использовании моторов не могут срабатывать с желательной быстротой. Вот если бы удалось заменить механические детали какими-нибудь электронными приборами, тогда работа ариф­мометра стала бы молниеносной. Ведь успе­вает же электронный луч прочертить на экране телевизора 625 строк за 0,04 секунды!

Электроника умеет уже заменять быстро­действующими электронными лампами медли­тельные механические устройства. Но сразу же нужно принять во внимание одно существен­ное различие между зубчатым колесом и элек­тронной лампой. Колесо с 10 зубцами имеет 10 четко фиксированных положений, которые могут быть сопоставлены с цифрами от 0 до 9. У электронной же лампы есть только два резко различных состояния: как говорят радисты, она может быть «заперта» или «открыта». За­пертая лампа совсем не пропускает тока, так как на ее управляющую сетку подано доста­точно большое отрицательное напряжение; от­крытая лампа пропускает через себя макси­мально возможный ток (благодаря наличию на сетке достаточного положительного потен­циала). Все промежуточные состояния лампы (когда она «полуоткрыта») недостаточно устой­чивы и не могут служить для изображения цифр (изменение свойств лампы с течением времени или от внешних причин привело бы к за­мене одной цифры другой).

Используя два резко различных состояния электронной лампы, возможно изобразить толь­ко две цифры: например, 0 (лампа заперта) и 1 (лампа открыта). Поэтому при замене зуб­чатых колес арифмометра электронными лам­пами естествен также и переход от десятичной системы нумерации к двоичной (позволяющей записать любое число в виде определенной ком­бинации нулей и единиц).

Двоичная нумерация

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

Число «один» записывается как обычно — «1». Но число «два» составляет уже единицу второго разряда и потому записывается так: «10» (одна двойка и нуль единиц). Число «три» изображается: «И» (одна двойка и одна едини­ца). Число «четыре» представляет собой еди­ницу третьего разряда и потому записывается «100» (одна четверка, нуль двоек и нуль еди­ниц). Дальнейшие числа в двоичной записи имеют вид:

пять — «101» (одна четверка, нуль двоек и одна единица),

шесть — «110» (одна четверка, одна двойка и нуль единиц),

семь — «111» (одна четверка, одна двойка и одна единица).

Восьмерка — это опять новый разряд — «1000» (нули указывают на отсутствие четве­рок, двоек и единиц). Далее идут:

девять — «1001» (одна восьмерка и одна единица),

десять — «1010» (одна восьмерка и одна двойка),

одиннадцать — «1011» (т. е. 8+2+1),

двенадцать — «1100» (т. е. 8+4),

тринадцать — «1101» (т. е. 8+ 4+1) и т. д.

Вот перед нами «загадочное» число:

1001011 записанное в двоичной нумерации. Его легко «разгадать», подписав (справа налево) под каж­дым разрядом его значение:

Как видим, заинтересовавшее нас число скла­дывается из единицы, двойки, восьмерки и шес­тидесяти четырех (1+2+8 + 64). Очевидно, оно равно 75. Читатель, вероятно, теперь уже сам сможет определить, что двоичной записью 10110011 изображается число 179.

Одно из преимуществ двоичной записи — удобство изображения чисел разнообразными средствами и быстрой передачи их из одного места в другое. Например, пробитый квадратик особой картонной карточки (ее называют пер­фокартой) может изображать единицу, а це­лый — нуль (рис. 2). Поместив перфокарту между пружинящими контактами электриче­ской цепи (рис. 3), мы получим в ней ток, если в данном квадратике записана единица (кон­такты замкнутся через отверстие), и наоборот: если в данном квадратике записан нуль, тока в цепи не будет (рис. 4), так как кар­тонная прокладка изолирует контакты друг от друга.

Кратковременный электрический ток при­нято называть электрическим импульсом. Как видим, любое число, записанное по двоичной системе, легко может быть выражено после­довательностью электрических импульсов, при­чем наличие импульса в определенный момент времени означает единицу, а отсутствие его — нуль. Впрочем, иногда предпочитают изоб­ражать нуль не отсутствием импульса, а им­пульсом тока, идущего в противоположном на­правлении (в этом случае не обязательно уже выдерживать строго определенные промежутки времени между импульсами). Продолжитель­ность импульса может быть очень малой, скажем, в 1 микросекунду (т. е. миллионную долю секунды), что дает возможность передать даже многозначное число почти мгновенно.

Считают лампы

Арифметика чисел в двоичной записи очень проста. Вся таблица умножения сводится к че­тырем простейшим произведениям:

0x0=0, 1x0=0,

0x1=0, 1x1=1,

а таблица сложения — к четырем столь же простым суммам. Не правда ли, это не особенно далеко выходит за пределы прославлен­ных познаний Митрофанушки из комедии Фонвизина?

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

нуль — отрицательным. Импульс первого со­множителя подается на сетку одной лампы, а импульс второго сомножителя — на сетку другой.

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

этого тока как раз и изображает «на электрон­ном языке» единицу произведения (1x1=1). Если же хотя бы один из сомножителей— нуль, соответствующая лампа заперта отрица­тельным напряжением на ее сетке, и никакого импульса тока в анодной цепи не будет. А это как раз и является выражением нулевого зна­чения произведения — в полном соответствии с формулами:

•1x0=0, 0x1=0, 0x0=0.

Как видим, «электронное перемножение» од­нозначных чисел осуществляется очень просто. Для многозначных сомножителей схему при­ходится, конечно, значительно усложнить, но нас интересует сейчас только принципиальная сторона дела, а не технические подробности. Подобно тому как подходящая комбинация зубчатых колес в арифмометре дает возмож­ность выполнять арифметические действия, над­лежащее сочетание электронных ламп позволяет производить эти действия над числами, заданными в виде последовательности электри­ческих импульсов.

Рис. 5. Электронный перемножитель.

Их можно «электронным способом» складывать, вычитать, умножать, де­лить, сравнивать между собой (определяя, кото­рое из них больше) и т. д. Любое из этих дей­ствий осуществляется очень быстро, так как электронные лампы практически безынерцион­ны. Еще большие возможности открывают по­явившиеся недавно различные заменители элек­тронных ламп: полупроводниковые, феррито­вые, сверхпроводящие и иные приборы.

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

Это зависит, конечно, от того, сумеем ли вы достаточно быстро задавать этому арифмо­метру задачи и записывать получающиеся ре­зультаты. Ведь если мы будем все это проде­лывать вручную, то больше 3—4 действий в минуту выполнить не удастся. Фантастическое быстродействие арифмометра окажется совер­шенно бесполезным.

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

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

Обязанности вычислителя

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

Простейший пример — составление табли­цы значений площади круга в зависимости от его радиуса (по формуле S=pr2 ). В инструк­ции указывается, что каждое значение радиуса (скажем, от 500 до 1000 мм через каждые 2 мм)

следует умножить на самого себя и на p= 3,14, с занесением полученного результата в соот­ветствующую графу таблицы.

К чему сводятся действия вычислителя? Прочитав в инструкции наименьшее значение радиуса (500), он устанавливает его на арифмо­метре, умножает сперва на точно такое же число, а потом на 3,14. Прочитав на арифмо­метре полученное произведение, вычислитель переносит его вместе со значением радиуса 500 в таблицу окончательных результатов.

Далее вычислитель должен прибавить 2 мм к прежнему значению радиуса, записать полу­ченное новое (наращенное) значение радиуса в свой бланк и повторить с этим новым зна­чением все ранее описанные действия. Когда в результате многократного повторения ука­занных операций он дойдет до значения радиу­са 1002, превышающего установленный инструк­цией верхний предел (1000), вычисления сле­дует прекратить.

Как видим, собственно вычислений, т. е. арифметических действий над числами, чело­век не производит: они выполняются арифмо­метром. На долю вычислителя остается управ­ление работой арифмометра, перенос числовых данных из инструкции или своего бланка на арифмометр и с арифмометра в таблицу резуль­татов, а также «записывание» или, если угодно, «запоминание» необходимых промежуточных ре­зультатов. Чтобы полностью исключить уча­стие человека из вычислительного процесса, нужно создать автомат, который самостоятель­но выполнял бы все эти действия в соответствии с данной ему инструкцией.

ВозмоЖен ли такой автомат?

Работа автомата по инструкции не таит в себе, конечно, ничего сверхъестественного или непостижимого. «Умеет» же аппаратура АТС безошибочно выполнять команды, кото­рые мы посылаем ей набором телефонного но­мера. Нужно только, чтобы каждая команда была выражена на языке, доступном «понима­нию» машины, например в виде определенной последовательности импульсов электрического тока.

Когда требуется длительная работа аппа­ратуры в соответствии с инструкцией, вклю­чающей множество команд, эту инструкцию следует тем или иным способом записать. Для хранения информации, выраженной электрическими импульсами, можно использовать, например, магнитофон: комбинации электрических им­пульсов могут быть зафиксированы путем намаг­ничивания участков магнитофонной ленты точ­но таким же способом, как это делают в звуко­записи. Впоследствии записанные команды, по мере их воспроизведения, будут управлять дей­ствиями автоматической аппаратуры. Записан­ную тем или иным способом инструкцию, кото­рой должен «руководствоваться» автомат, при­нято называть программой.

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

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

Электрические импульсы, выражающие окончательный результат вычислений, могут воздействовать на электромагниты печатающего аппарата (наподобие телеграфного), в резуль­тате чего мы получаем интересующие нас дан­ные в форме обычной телеграммы.

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

Очень важно еще раз напомнить, что осмыс­ливание и понимание выполняемых расчетов в обязанности вычислителя не входят: это дело «заказчика», который задумал расчет и вопло­тил весь свой замысел в инструкцию. Но, ко­нечно, на практике внимательный и квалифицированный вычислитель не бывает вполне рав­нодушным к тому, что он делает; в частности, он может заметить и даже исправить грубые ошибки в инструкции, восполнить случайные пробелы, неясности и т. д.

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

Категорический характер предписаний, ко­торые составляют алгоритм, вовсе не означает, что вся последовательность действий машины во всех деталях заранее известна составителю данного алгоритма. Ведь категорическое пред­писание может иметь и такую форму: «Если в результате деления получится число меньше тысячи, увеличить его в два раза, а если полу­чилось число не меньше тысячи — прибавить к нему восемьдесят три». Что будет делать машина фактически — умножать на 2 или при­бавлять 83, этого составитель алгоритма за­ранее не знает, так как ему еще не известно, какое именно число получится при делении.

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

Главные части машины

Быстродействующая электронная вычисли­тельная машина состоит из пяти основных уст­ройств: вводного, запоминающего, арифмети­ческого, выводного и управляющего (см. цвет­ную вклейку на стр. 432—433). Кроме того, имеется дополнительное устройство для конт­роля работы и обнаружения неисправностей.

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

Вводное устройство имеет обычно кла­виатуру, посредством которой в машину вво­дятся исходные данные и задается определен­ная программа. Электрические импульсы, воз­никающие при нажатии на клавиши, направля­ются в запоминающее устройство. Возможны и иные конструкции устройства ввода (рис. 6).

Запоминающее устройство (или «па­мять» машины, как его иногда для краткости называют) предназначено для хранения инфор­мации: исходных данных числовых величин, команд программы, промежуточных и оконча­тельных результатов. Оно играет роль памяти или записной книжки вычислителя.

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

Удобство последнего метода состоит в том, что для записи или воспроизведения числа элект­ронный луч может быть направлен в нужную точку экрана практически мгновенно.

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

Каждой ячейке присвоен номер (наподобие телефонного); по этому номеру с ней можно в любой момент «соединиться», чтобы поместить туда или, наоборот, «истребовать» оттуда соот­ветствующее число.

Арифметическое устройство служит для выполнения основных арифметических и некоторых логических действий. Оно содер­жит несколько электронных «арифмометров» (осуществляющих сложение, умножение и т. д.). Такие арифмометры чаще всего строятся на основе современных заменителей электронных ламп, что делает их более совершенными. В бы­стродействующих машинах каждая операция выполняется арифметическим устройством за десяток микросекунд.

Выводное устройство (рис. 7) предназна­чено для выдачи заказчику готовой продукции в виде таблицы окончательных результатов про­изведенного расчета (рис. 8) отпечатанной обыч­ным шрифтом с помощью цифропечатного телег­рафного аппарата под влиянием электрических импульсов, поступающих из запоминающего устройства. Для ускорения вывода результатов вместо печатания иногда применяют фотогра­фирование их на кинопленку.

Управляющее устройство связыва­ет воедино отдельные части вычислительной машины и «управляет», или «руководит», всем ходом вычислительного процесса; именно оно выполняет роль вычислителя. Во время работы машины управляющее устройство, действуя со­гласно программе, последовательно осущест­вляет все необходимые соединения и переклю­чения, «отпирает» и «запирает» лампы, управ­ляет движением электронных лучей и магнито­фонных лент. Благодаря этому обеспечивается правильное размещение в ячейках памяти вво­димых в машину исходных данных, своевре­менная передача чисел из определенных ячеек на те или иные «арифмометры» арифметического устройства, а также направление получающих­ся результатов в предназначенные для них ячейки. Наконец, по мере накопления * окон­чательных результатов в ячейках памяти управляющее устройство «соединяет» их с печа­тающими аппаратами.

Как видим, по своим функциям управляю­щее устройство вычислительной машины во многом напоминает автоматическую телефонную станцию, но оно должно делать сотни тысяч различных соединений в секунду! Кроме того, в отличие от АТС, управляющее устройство должно действовать не в соответствии с только что набранным номером, а по заранее заданной программе, которая (в зашифрованном виде) хранится в специально для этого отведенных ячейках памяти.

Инструкция для машины

Программа работы электронной вычисли­тельной машины для решения определенной задачи составляется специалистами и через вводное устройство «вводится» в машину перед началом вычислений.

Программа представляет собой последова­тельность отдельных «команд». Каждая команда состоит из указания определенного арифмети­ческого действия (сложение, вычитание, умножение и т. д.), номеров (или «адресов») тех ячеек памяти, откуда следует взять числа, над которыми должно быть произведено действие, а также номера (или «адреса») ячейки, куда должен быть помещен полученный результат.

Каждое арифметическое действие условно обозначается числом — «кодом», например: сло­жение — «1», вычитание — «2», умножение — «3» и т. д. Адреса ячеек памяти также обознача­ются номерами, например: № 20, № 21, № 22 и т. д. В целом вся команда записывается в виде одного многозначного числа, в котором на первом месте стоит код действия, на втором и третьем местах — адреса чисел, над кото­рыми надо совершать это действие, а на послед­нем (четвертом) месте — адрес ячейки, куда должен быть направлен полученный результат. Так, например, команда 3-21-26-52 предписы­вает перемножить числа, взятые из ячеек № 21 и 26, и поместить произведение в ячейку № 52. Такие команды называются трехадресными. Возможны команды и с иным числом адресов.

Поскольку команды управления машиной записываются многозначными числами, они на­равне с другими числами могут быть помещены в ячейки запоминающего устройства: первая— в ячейку № 1, вторая — в ячейку № 2 и т. д.

Помимо арифметических, команды могут за­давать машине и некоторые другие действия, например: «сравнить два числа», «отпечатать число, хранящееся, в такой-то ячейке памяти, в такую-то графу таблицы».

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

Программа для выполнения соответствую­щих вычислений имеет такой вид:

Как видим, программа состоит всего из семи команд, которые перед началом работы при помощи вводного устройства размещают в ячейки памяти с адресами от № 1 до 7. Помимо программы, в машину вводятся еще и необхо­димые исходные данные (рис. 9): в ячейку № 20 — число p=3,14, в ячейку № 21 — наименьшее значение радиуса (500), с которого должна начинаться таблица, в ячейку № 22 — наибольшее значение радиуса (1000), в ячейку № 23 — число 2, показывающее, что значения радиуса надо брать через каждые 2 мм. Ячейка № 19 будет использоваться для записи в нее промежуточных результатов.

Исполнение программы

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

Согласно первой команде (3-21-21-19) начальное значение радиуса (500), хранящееся

в ячейке № 21, будет умножено само на себя, а полученное произведение (квадрат радиуса) помещено в свободную пока что ячейку № 19.

Согласно второй команде (3-19-20-19) это произведение (R2) будет умножено на число p, хранящееся в ячейке № 20, с помещением ре­зультата в ячейку № 19 (при этом ранее запи­санное там число автоматически стирается, по­добно старой фонограмме при записи звука на магнитофоне).

Согласно третьей команде (7-21-00-01) значение радиуса из ячейки № 21 будет отпеча­тано печатающим аппаратом № 1, заполняю­щим первую графу таблицы.

Согласно четвертой команде (7-19-00-02) печатающим аппаратом № 2 во второй графе таблицы будет отпечатано соответствующее значение площади круга, взятое из ячей­ки № 19.

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

Согласно пятой команде (1-21-23-21) к ста­рому значению радиуса (500) прибавляется 2, причем полученный результат (новое значение радиуса 502) направляется в ту же ячейку № 21, где находилось прежнее значение ра­диуса.

Согласно шестой команде (8-21-22-01) про­изводится сравнение двух чисел с адресами № 21 и 22. Если первое из них меньше второго или равно ему, то машина возвращается к выполнению команды № 1, указанной в третьем адресе, в противном же случае она про­сто переходит к выполнению следующей (очередной) команды. В нашем случае новое значение радиуса (из ячейки № 21) срав­нивается с наибольшим его значением, для ко­торого еще нужно вычислять площадь круга. Если новое значение радиуса не больше 1000, машина проделывает над ним те же самые вы­числения, начиная с первой команды, и таким образом заполняет еще одну строку таблицы. Если же новое значение радиуса больше 1000, то машина переходит к выполнению седьмой команды, согласно которой она попро­сту останавливается с подачей на пульт управ­ления сигнала об окончании вычислений.

В работе вычислительной машины команда сравнения «8» и другие подобные ей команды «условного перехода» имеют исключительное значение. Они увеличивают гибкость машины, расширяют ее возможности и позволяют выпол­нять действия, для которых она на первый взгляд вовсе не приспособлена.

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

Программа с преобразованиями

Допустим, что значения площади круга нужно определить только для некоторых ранее

вычисленных значений радиуса — скажем, за­писанных в ячейках памяти № 21—80 (рис. 10). Тогда, как и прежде, в ячейку № 20 помещаем p, а в ячейки № 81 и 82 — специальные числа 0-01-01-00 и 3-80-80-19, значение которых выяс­нится в дальнейшем. Вычисления будем вести по следующей программе:

По первой команде вычисляется квадрат первого значения радиуса (из ячейки № 21), который затем по второй команде умножается на p. По третьей команде вычисленное значе­ние площади круга заносится в таблицу окон­чательных результатов.

Теперь нужно повторить те же самые опе­рации, но уже над новым значением радиуса, хранящимся не в 21-й, а в 22-й ячейке. Для этого можно было бы включить в программу в качестве четвертой команды 3-22-22-19 (воз­вести новое значение радиуса в квадрат) с после­дующим повторением второй и третьей команд без изменения. Затем должна следовать коман­да 3-23-23-19 (возвести в квадрат значение ра­диуса из ячейки № 23) и т. д.

При большом количестве различных значе­ний радиуса программа получалась бы очень громоздкой. Легко сообразить, что вводимые вновь команды 3-22-22-19, 3-23-23-19,... могут быть получены из первой команды 3-21-21-19 последовательным прибавлением к ней числа 0-01-01-00, хранящегося в ячейке № 81:

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

По пятой команде выполняется срав­нение переадресованной команды (числа) из ячейки № 1 с командой 3-80-80-19, специально введенной для этого в ячейку № 82. Пока пер­вый и второй адреса переадресованной команды не больше 80 (использованы еще не все значения радиуса, хранящиеся в ячейках № 21— 80), согласно команде сравнения осуществляется возврат к началу программы, т. е. к исполне­нию переадресованной первой команды. Когда же все значения радиуса будут исчерпаны, команда примет вид 3-81-81-19, т. е. превзойдет число в ячейке № 82, и по команде сравнения машина перейдет к выполнению следующей (шестой) команды, означающей остановку.

Универсальность машины

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

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

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

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

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

Логическая схема программы записывается человеком не в виде последовательности зна­комых уже нам «команд», а на более привычном и лаконичном «языке» математической симво­лики, т. е. посредством обычных формул лишь немного измененного начертания с отдельными дополнительными пояснениями. При отсутст­вии у машины специальной клавиатуры для ввода математических символов и букв каждый из этих знаков предварительно кодируется числом вручную.

В настоящее время ведется большая работа по созданию универсального языка програм­мирования, посредством которого каждый мог бы (после самого краткого обучения) самостоя­тельно писать логические схемы программ, вполне пригодные для непосредственного вве­дения их в машину (снабженную раз и навсегда установленной программирующей программой). Это позволило бы вообще исключить малопро­изводительный процесс программирования вручную. Один из вариантов такого универ­сального языка известен под условным назва­нием «алгол».

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

Такой метод тоже значительно повышает производительность труда при программиро­вании.

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

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

молодой науки кибернетики (см. статью «Что такое кибернетика?»).

Чтобы наглядно показать универсальность электронной вычислительной машины и един­ство резко различных по своему характеру видов умственного труда, попробуем хотя бы вкратце пояснить, каким образом «умудряется» машина переводить книги с одного языка на другой.

Автоматический перевод

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

Прежде всего машина отыскивает в словаре для каждого английского слова его русский эквивалент. Для нее это ничуть не сложнее, чем отыскать в тригонометрической таблице для заданного угла значение его косинуса. Но очень значительные трудности возникают при этом всякий раз, когда одно и то же английское слово, подобно, например, русскому слову «ко­са» (рис. 11), имеет несколько различных зна­чений. Переводчик обычно выбирает одно из этих значений, наиболее подходящее по смы­слу, машина же может руководствоваться толь­ко формальными правилами, которые должны быть ей заранее заданы. Поэтому для всякого многозначного слова в машинном словаре дает­ся не перевод, а команда-ссылка — проана­лизировать это слово по специальной про­граммке. Программка эта представляет собой последовательность вопросов, ответы на кото­рые позволяют раскрыть смысл слова. Пока­жем, как это делается, на примере англий­ского слова many.

Когда в предложении встречается это слово, машина его сначала пропускает и переводит все остальные. Но затем она обязательно возвра­щается к слову many и приступает к последо­вательному исполнению команд программки его анализа (рис. 12).

Первая команда этой программки гласит: проверить предыдущее слово, не является ли оно словом how. Если да — машина дает пе­ревод «сколько», потому что сочетание how many всегда имеет именно такое значение.

Если же нет — машина переходит к сле­дующей проверке: не является ли предыдущее слово словом as.

Если да — перевод будет «столько же», по­тому что таков смысл сочетания as many.

Если нет — машина должна проверить, не является ли предыдущее слово предлогом, а последующее — существительным.

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

При положительном ответе (да) машина должна будет записать перевод «многий», при отрицательном (нет) — «много». Особенно су­щественно здесь то, что в первом случае сло­во «многий» — это прилагательное с мягким окончанием, а во втором («много») — неизме­няемое наречие.

Когда все переводы для всех (в том числе и многозначных) слов найдены и зафиксиро­ваны в запоминающем устройстве, машина на­чинает оформлять их в соответствии с прави­лами; русской грамматики.

В частности, прилагательное «многий» долж­но быть поставлено в нужном падеже, роде и числе. Род, падеж и число прилагательного обычно определяются тем русским суще­ствительным, перед которым оно стоит. В свою очередь род русского существительного при переводе был выписан из словаря, число опреде­лено по окончанию английского слова, а падеж выяснен при анализе по предыдущему пред­логу или глаголу.

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

Странные результаты

1.

Забавный вид имеют записи действий, выполненных в других — недесятичных — системах счисления. Например,

а) 31-13=13; 6) 2X2= 10;

в) дана дробь 16/61, сокращая на 7,

получим

В какой системе счисления вы­полнялось каждое действие, если все результаты правильные?

2.

(3/7)10=(11/111)2=0,011011.

Как это получается?

3.

Докажите, что для записи од­ного миллиарда в двоичной системе надо употребить 30 цифр

Решение на стр. 500.

Электронный «закройщик» — цифровая вычислительная ма­шина «Сталь-1» , установлен­ная на одном из металлурги­ческих комбинатов страны. Она мгновенно замеряет длину по­лосы металла, составляет план ее раскроя и подает команду ножницам. Вся операция зани­мает полсекунды. Кроме того, «Сталь-1» непрерывно реги­стрирует вес прокатных заго­товок .

чает в себя обработку перевода по правилам синтаксиса и определение порядка слова.

После того как синтез русского предложе­ния закончен, перевод передается в выводное устройство, которое и печатает его русскими буквами на бумаге (если какого-нибудь анг­лийского слова машина в своем словаре не нашла, она впечатывает его в текст перевода латинскими буквами).

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

Электронные вычислительные машины долж­ны быть, без всякого сомнения, отнесены к числу наиважнейших факторов научно-техни­ческого прогресса.