Компьютер как формальный исполнитель алгоритмов (программ).
Алгоритм может быть записан на естественном языке, изображен в виде блок-схемы, записан с соблюдением строгих правил синтаксиса на алгоритмическом языке или закодирован на языке программирования. Для того чтобы компьютер мог его выполнить, алгоритм должен быть записан на понятном для компьютера языке.
Устройством, которое обрабатывает информацию в компьютере, является процессор, следовательно, алгоритм должен быть записан на языке, «понятном» для процессора, т. е. должен использовать систему команд процессора. Таким образом, алгоритм должен быть записан на машинном языке, представляющем собой логические последовательности нулей и единиц,
Действительно, вначале, в 50—60 годы, программы писались на машинном языке, т. е. представляли собой очень длинные последовательности нулей и единиц. Однако составление программ на машинном языке было чрезвычайно трудоемким делом.
Для облегчения труда программистов начали создаваться языки программирования, т. е. искусственно созданные языки с несколькими десятками слов (операторов) и строгими правилами синтаксиса, т. е. правилами соединения этих слов в предложения.
Известный всем Бейсик был создан в 1964 году сотрудниками Дартмутского колледжа Дж. Кемени и Т. Курцом. (Название BASIC является аббревиатурой английского названия Beginners All-purpose Symbolic Instruction Code.) Интересно, что языки программирования развиваются так же, как и естественные, т. е. они обогащаются новыми операторами и новыми возможностями, возникают различные версии языка (QBasiC, VisualBasic и др.).
Для того чтобы процессор мог выполнить программу, эта программа и данные, с которыми она работает, должны быть загружены в оперативную память.
Итак, мы создали программу на Бейсике (некоторый текст) и загрузили ее в оперативную память из внешней памяти или с клавиатуры. Теперь мы хотим, чтобы процессор ее выполнил, однако процессор «понимает» команды на машинном языке, а наша программа написана на Бейсике. Как быть? Необходимо, чтобы в оперативной памяти находилась программа переводчик (транслятор), автоматически переводящая с Бейсика на машинный язык.
Ясно, что один и тот же компьютер может «понимать» и QBasic, и Turbo Pascal, и какой-либо другой язык, все зависит от того, транслятор какого языка программирования размещен в оперативной памяти компьютера.
Рассмотрим на простейшем примере (умножение двух чисел) процесс построения алгоритма, его кодирование на языке программирования и выполнение программы. В качестве языка программирования выбран Бейсик, однако это может быть практически любой язык программирования.
Сначала запишем алгоритм на естественном языке. Он является линейным и состоит из трех действий. Затем построим блок-схему данного алгоритма, что позволяет в наглядной форме представить логическую структуру алгоритма и проследить динамику его выполнения. В процессе построения алгоритма особое внимание обратим на то, какие данные вводятся в компьютер и какие выводятся (фиксируются аргументы и результаты алгоритма).
Следующим этапом является кодирование алгоритма на языке программирования (в данном случае Бейсике) и загрузка полученной программы в оперативную память. Оперативная память состоит из отдельных адресуемых ячеек, в которых информация может храниться, записываться и стираться. Каждая ячейка имеет уникальный адрес, и в ней может храниться 1 байт информации. Количество таких ячеек в современных компьютерах велико и соответствует объему памяти, выраженному в байтах. Для памяти 16 Мб оно составляет 16 777216 ячеек.
Программа займет в оперативной памяти определенное количество ячеек в области, отведенной для программ пользователя. Программа будет записана в памяти во внутреннем представлении языка программирования (в данном случае Бейсика), который процессор «не понимает». Для перевода программы на машинный язык, понятный процессору, в памяти должна находиться программа-транслятор с данного языка программирования.
Переход в режим выполнения программы задается соответствующей командой (RUN), процессор последовательно будет считывать из памяти операторы и их выполнять. Выполнение программы «проиграем» на структурной схеме компьютера на конкретном примере (например, умножение чисел 5 и 8).
КЕМ — оператор комментариев; неисполняемый оператор, все, что стоит в строке программы после этого оператора, компьютером игнорируется.
INPUT — оператор ввода значений переменных; процессор отводит в оперативной памяти области (некоторое количество ячеек) и «называет» их именами переменных (А, В) из списка ввода; запрашивает у пользователя их значения (на экране дисплея появляется знак вопроса ?); пользователь вводит значения переменных с клавиатуры (5,8); процессор записывает эти значения в отведенные области памяти.
LET — оператор присваивания; процессор считывает из памяти значения переменных (А, В), составляющих арифметическое выражение в правой части присваивания; вычисляет значение арифметического выражения (40); отводит в памяти область под переменную, стоящую в левой части присваивания (X); записывает вычисленное значение (40) арифметического выражения в эту область.
PRINT — оператор вывода значений переменных на экран; процессор считывает значение переменной (X) из памяти и высвечивает это значение (40) на экране дисплея.
END — оператор окончания программы; на экране дисплея появляется соответствующее сообщение (Ok) и курсор.