Компьютер может многое: считать, писать, рисовать. Может говорить, исполнять музыку (Сто профессий компьютера.). Но все эти сложные действия обязательно дробятся на самые простые: сложение, вычитание, сравнение. И производит эти действия центральный процессор. Всё, что обрабатывает центральный процессор, поступает в него из оперативной памяти. В это «всё» входят как сами числа, которые нужно обрабатывать, так и программа, которая определяет, как вести обработку.
Вот и выплыло слово, которого ты, наверно, долго ждал. Слово, которое неразрывно связано с появлением и существованием компьютера. Это слово «программа».
Программой называется запись алгоритма на языке, понятном исполнителю.
В этом определении несколько непонятных слов, поэтому поясним их.
Алгоритм – это описание последовательности действий, которые приводят к решению поставленной задачи.
А «исполнитель» – человек или устройство, которое должно выполнить программу.
С программами мы сталкиваемся буквально на каждом шагу. Когда мама печет пирог, следуя рецепту, взятому из кулинарной книги, она работает по программе. Результат – пирог на столе. Когда ты объясняешь прохожему, как пройти в булочную, ты даешь ему программу. Следуя ей, он решит свою задачу – купит хлеб. Набирая номер телефона, ты тоже выполняешь программу. Выполнив ее без ошибки, ты решишь свою задачу – поговоришь с приятелем.
Программы для компьютера пишут на специальных языках – языках программирования. Назовем некоторые из них: Фортран, Бейсик, Паскаль, Рапира, Си, Лого (Языки программирования.). В каждом из языков есть ограниченный набор слов и правил, с помощью которых можно писать тексты программ.
Однако чтобы программа стала понятна компьютеру, ее нужно перевести на единственный язык, который он знает, – язык команд этого компьютера. Переводом занимается тоже программа. Для каждого языка программирования своя. Подобно тому, как для перевода текстов с английского или немецкого языка существуют словари англо-русский, немецко-русский, так и для каждого языка программирования и для каждого типа компьютера есть свой переводчик. Называется он «транслятор». Программу, переведенную транслятором, и выполняет центральный процессор, называемый далее для краткости просто процессором.
Состоит процессор из таких частей:
1. Регистры.
2. Арифметическо-логическое устройство (АЛУ).
3. Устройство управления (УУ).
Регистры процессора – самая быстрая память компьютера. Доступ к ним происходит еще быстрее, чем к ячейкам оперативной памяти. В зависимости от конструкции вычислительной машины число регистров может быть разным – от одного до нескольких десятков.
Выполнение любой операции процессор начинает с вызова чисел из оперативной памяти в регистры.
Саму операцию выполняет арифметическо-логическое устройство. Название устройства подчеркивает, какие операции им выполняются. Что такое арифметическая операция, ты наверняка знаешь: это, например, сложение и вычитание.
Логической называется операция проверки какого-либо условия. Результат выполнения этой операции либо 0, либо 1, что означает: истинно условие или ложно. Например, условие А=В будет истинно, если А=3 и В=3, и ложно, если при том же значении А значение В будет равно 4. Такие операции тоже выполняет АЛУ.
Наконец, третья часть процессора – устройство управления. Там хранится адрес ячейки, откуда нужно получить очередную команду. Если нет специальных условий, то команды выполняются подряд: первая, вторая, третья и т. д. При этом адрес следующей команды, находящейся в устройстве управления, автоматически увеличивается на единицу.
Бывает, и довольно часто, что порядок выполнения команд нужно изменить. В этом случае адрес меняется скачком и выполняется команда, стоящая не после только что выполненной, а совсем в другой части программы.
Теперь посмотрим, как процессор выполняет программу.
Вспомним задачу про пионерский лагерь (Что такое информация.) и посмотрим, как бы решал ее компьютер.
Если обозначить число всех ребят, отдыхающих летом в пионерском лагере, буквой А, побывавших там в июне – В, в июле – С, в августе – X, то программа для решения задачи на некотором языке программирования может быть записана так:
Х = А – (В + С).
После того как программа будет введена в компьютер, транслятор преобразует ее, например, в такую последовательность команд (мы предполагаем, что у компьютера три регистра):
1. Поместить в регистр 1 число из ячейки памяти с адресом В.
2. Поместить в регистр 2 число из ячейки С.
3. Сложить содержимое регистров 1 и 2 и поместить результат в регистр 3.
4. Поместить в регистр 1 число из ячейки А.
5. Вычесть содержимое регистра 3 из регистра 1 и поместить результат в регистр 2.
6. Поместить в ячейку X число из регистра 2.
Вот такую программу может выполнить процессор.
Конечно, записывается она в другой форме – с использованием только нулей и единиц. Никаких других символов процессор не понимает. Но суть ее именно такова. И действия выполняются именно такие, какие описаны.
На такие же простейшие команды разбивается любая самая сложная программа.