Как же быть? Выход был найден благодаря идее одного из крупнейших математиков мира Джона фон Неймана. И эта простая и гениальная идея состояла в том, чтобы передать управление машиной самой же машине!
Теперь машина должна стать самоуправляющейся, не зависящей от оператора. Она будет знать, что ей делать, в каком порядке производить арифметические действия.
И не только порядок действия должна знать машина. Прежде она имела дело лишь с заданными числами, с условием задачи. Теперь же она должна иметь дело и с самими правилами решения этой задачи, с самой программой.
Программа, порядок действий хранился раньше в памяти человека. По мысли фон Неймана, программу нужно поместить в «память» машины. И вычислительная машина с молниеносной быстротой должна сама справляться в своей «памяти», что и как ей делать, чтобы выполнить задание до конца.
Но откуда у машин «память»? Если иметь в виду нашу, человеческую, живую память, то ее, конечно, у машины нет. Но сделать «механическую память» очень легко. Магнитофонные ленты, кинопленки, книги, записные книжки, «узелки на память», дневники, школьный журнал с отметками — все это виды «механической памяти», нужной человеку.
«Нуль пишем, один в уме»… Как часто приходится делать эта, решая задачи и примеры с вычислениями. Примерно так же поступает и вычислительная машина, «запоминая» предварительные результаты вычислений.
Но ведь программу действий машин можно записать в виде чисел, в виде набора единиц и нулей, И тогда мы получаем возможность предоставить машине «самостоятельность» в решении любой вычислительной или логической задачи. Конечно, «самостоятельность» эта условная.
Программу действий составляет человек, он заранее продумывает, что должна делать машина.
Программирование требует кропотливого и тщательного труда. Нужно продумать, как разложить на простые, элементарные действия сложнейшие математические задачи, как лучше использовать машинную «память» — какую часть «памяти» отвести для запоминания программы, какую для хранения предварительных результатов вычислений. Наконец, требуется необычайная аккуратность и тщательность в записи программы. Одна малейшая ошибка или описка — и программа не годна.
Приведем один любопытный пример. Кандидат физико-математических наук Р. X. Зарипов составил программу для электронной вычислительной машины, по которой машина должна была сочинять музыку. Разумеется, все исходные данные и все команды были записаны в виде чисел.
Вычислительная машина «Урал» начала свое «творчество». Она успешно «сочиняла» вальсы, но, как только дело доходило до маршей, получалась заминка. Марши «Урал» отказывался «сочинять»! Оказывается, в программе вместо числа 01 по ошибке было поставлено 011. И как только описка была исправлена, «Урал» начал «сочинять» марши столь же успешно, как и вальсы.
ПОИСКИ «САМОСТОЯТЕЛЬНОСТИ»
Нельзя ли сделать так, чтобы и при составлении программы использовать работу машины? Сделать так, чтобы не человек, а сама машина «обдумывала» свои действия? Или хотя бы проверяла составленную человеком программу — нет ли в ней ошибок?
Оказалось, что проверку программы машина делать может (ее называют «отладка программы»). На первом этапе пробуют, не «заблокируется» ли машина. Если мы неправильно написали какую-либо операцию, машина не сможет выполнить программу от начала до конца.
Затем проверяется порядок выполнения операций: не перепутано ли в программе сложение и деление, и т. п. Наконец, с большим вниманием проверяется полученный результат. Не потому, что если мы зададим машине сложить 3 и 2, то может получиться 1; машина производит арифметические действия с большой точностью. Но ведь может случиться, что программист по ошибке написал не 3 + 2, а 3 — 2. И тогда, разумеется, машина выдаст ответ: 3 — 2= 1.
Вот почему перед отладкой программы вычисляется либо вручную, либо на арифмометре какой-нибудь числовой пример. А затем его поручают решать машине — совпадет ли ее решение с нужным? Если нет, тогда ищут ошибку в программе.
Так, шаг за шагом, с помощью самой же машины, идет исправление ошибок, пока не получится правильная программа.
Ну, а как быть с составлением программы самой машиной? Этот вопрос решают сейчас ученые разных стран мира.
Для автоматического составления программы в машину вводится особая программа. Она называется программирующей. Используя ее, машина может самостоятельно составлять большое число различных программ.
Машинам пробуют поручать и более творческие задачи. Вот, например, какой эксперимент был проделан в Гарвардском университете (США). В машину ИБМ-704 было введено много различных программ, осмысленных и бессмысленных. И, кроме них, задача: обработать четырнадцатизначное число с помощью 63 последовательных операций.
Василий Кузьмич Фетисов , Евгений Ильич Ильин , Ирина Анатольевна Михайлова , Константин Никандрович Фарутин , Михаил Евграфович Салтыков-Щедрин , Софья Борисовна Радзиевская
Приключения / Публицистика / Детская литература / Детская образовательная литература / Природа и животные / Книги Для Детей