Выполнение программ компьютером

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

Итак, мы создали программу на языке программирова­ния (некоторый текст) и загрузили ее в оперативную па­мять. Теперь мы хотим, чтобы процессор ее выполнил, одна­ко процессор «понимает» команды только на машинном языке, а наша программа написана на языке программиро­вания. Как быть?

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

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

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

Современные системы программирования, и в том числе 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. Какое количество ячеек памяти было бы занято переменными в проекте «Переменные», если бы переменные не были объяв-

лены?

Наши рекомендации