Выполнение программ компьютером
Интерпретаторы и компиляторы. Для того чтобы процессор мог выполнить программу, эта программа и данные, с которыми она работает, должны быть загружены в оперативную память.
Итак, мы создали программу на языке программирования (некоторый текст) и загрузили ее в оперативную память. Теперь мы хотим, чтобы процессор ее выполнил, однако процессор «понимает» команды только на машинном языке, а наша программа написана на языке программирования. Как быть?
Необходимо, чтобы в оперативной памяти находилась программа-переводчик (транслятор), автоматически переводящая программу с языка программирования на машинный язык. Компьютер может выполнять программы, написанные только на том языке программирования, транслятор которого размещен в оперативной памяти компьютера.
Трансляторы языков программирования бывают двух типов: интерпретаторы и компиляторы. Интерпретатор — это программа, которая обеспечивает последовательный перевод инструкций программы на машинный язык и их выполнение. Поэтому при каждом запуске программы на выполнение эта процедура повторяется. Достоинством интерпретаторов является удобство отладки программы (поиска в ней ошибок), так как возможно пошаговое ее выполнение, а недостатком — сравнительно малая скорость выполнения.
Компилятор действует иначе, он переводит весь текст программы на машинный язык и сохраняет его в исполнимом файле (обычно с расширением ехе). Затем этот уже готовый к выполнению файл, записанный на машинном языке, можно запускать на исполнение многократно. Достоинством компиляторов является большая скорость выполнения программы, а недостатком — трудоемкость отладки, так как невозможно пошаговое выполнение программы.
Современные системы программирования, и в том числе Visual Basic, позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки программы используется режим интерпретатора, а для получения готовой исполняемой программы — режим компилятора.
Процесс выполнения программы. Рассмотрим процесс выполнения программы на примере рассмотренной выше программы (проект «Переменные»), написанной на языке программирования Visual Basic.
Ввод текста программы в оперативную память. Текст программы вводится в оперативную память с помощью клавиатуры или считывается из внешней памяти. Текст программы займет в памяти определенное количество ячеек (например, с ячейки номер I по ячейку I+K).
Перевод программы на машинный язык. Наша программа будет записана в памяти во внутреннем представлении языка программирования Visual Basic, который процессор «не понимает». Для перевода программы на машинный язык, понятный процессору, в памяти должна находиться программа-транслятор языка Visual Basic. Программа-транс - лятор после считывания в оперативную память из внешней памяти будет занимать в памяти определенное количество ячеек (например, с ячейки номер N по ячейку N+M).
Выполнение программы. После запуска программы на выполнение процессор последовательно будет считывать из памяти операторы и их выполнять.
В процессе выполнения оператора объявления переменных Dim в оперативной памяти для их хранения отводится необходимое количество ячееек: для целочисленных переменных intA, intB — по две ячейки, для неотрицательной целочисленной переменной bytC — одна ячейка, для переменной одинарной точности sngD — четыре ячейки, для переменной двойной точности dblE — восемь ячеек, для строковых переменных strA и strB количество ячеек, равное количеству символов, составляющих их значения, для логических переменных ЫпА, ЫпВ, ЫпС — по две ячейки. Таким образом, в памяти для хранения данных (значений переменных) будет отведено определенное количество ячеек, например ячейки с 1-й по 39-ю (рис. 4.17).
Далее, в процессе выполнения операторов присваивания в отведенные переменным области оперативной памяти записываются их значения. Если в правой части оператора присваивания находятся арифметические выражения, то предварительно вычисляются их значения.
Затем с помощью метода Print производится вывод значений переменных на форму, реализующую графический интерфейс программы. В этом процессе значения переменных считываются из памяти и высвечиваются на экране монитора.
Имена переменных | Оперативная память | |
ячейки | значение | |
mtA | 1-2 | |
intB | 3-4 | |
bytC | ||
sngD | 6-9 | 0,6666667 |
dblE | 10-17 | 0,666666686534882 |
strA | 18-22 | форма |
strB | 23-33 | информатика |
blnA | 34-35 | True |
blnB | 36-37 | False |
blnC | 38-39 | False |
1 | программный код | |
l + K | ||
N | транслятор языка программирования | |
N + M | ||
Рис. 4.17. Программа и данные в оперативной памяти |
t* ч
L. г
Вопросы для размышления
1. Какую функцию выполняют трансляторы языков программирования?
2. В чем состоит различие между интерпретаторами и компиляторами?
я
4.15. Какое количество ячеек памяти было бы занято переменными в проекте «Переменные», если бы переменные не были объяв-
лены?