Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Трансляция и интерпретация программ.




Компьютер представляет собой интегрированный набор алгоритмов и структур данных, способный хранить и выполнять программы.

Подавляющее большинство программ пишется на языках программирования высокого уровня, существенно отличающихся от машинного языка реального компьютера.

Теоретически можно создать аппаратный компьютер, использующий некий язык высокого уровня в качестве машинного, но это было бы очень сложно и дорого. К тому же он был бы крайне негибким.

Более практичное решение – аппаратно реализовать язык очень низкого уровня, что обеспечит выполнение наиболее распространенных элементарных операций и снабдит компьютер дополнительным программным обеспечением для взаимодействия с программами, написанными на языках высокого уровня.

Для организации выполнения таких программ на конкретном

компьютере существует два основных решения: трансляция и интерпретация.

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

Транслятор - это языковой процессор, который воспринимает программы на некотором исходном языке в качестве входных данных, а на выходе выдает эквивалентные по своей

функциональности программы, но уже на другом, так называемом объектном языке (который также может быть произвольного уровня).

Ассемблер - это транслятор, у которого исходным языком является символическое представление машинного кода (ассемблер), а объектным языком является некая разновидность машинного языка какого-либо реального компьютера.

Компилятор— транслятор, для которого исходным является язык высокого уровня, а его объектный язык близок к машинному языку реального компьютера. Это либо язык ассемблера, либо какой-нибудь вариант машинного языка. Например, программы на языке С компилируются, как правило, в программы на языке ассемблера, которые затем транслируются ассемблером в машинный язык.

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

Задачей компоновщика является создание единой выполняемой программы, в которой используются согласованные адреса.

Препроцессор (макропроцессор) - это транслятор, исходный язык которого является расширенной формой какого-либо языка высокого уровня (например, Java или C++), а объектный язык — стандартной версией этого языка. Объектная программа, созданная препроцессором, готова к трансляции и выполнению обычными процессорами исходного стандартного языка.

Главным недостатком трансляции является потеря информации о программе. Если в программе есть ошибка, то часто трудно определить, какой из операторов программы на исходном языке выполнялся и какие объекты данных использовались в нем. Кроме того, поскольку оператор на языке высокого уровня содержит гораздо больше информации, чем команда машинного языка, то исполняемая форма программы занимает в памяти гораздо больше места.

Интерпретация (программная имитация). Это метод, когда при помощи программы (интерпретатора), выполняемой на аппаратном компьютере, создается виртуальный компьютер с машинным языком высокого уровня. Интерпретатор декодирует и выполняет каждый оператор программы на языке высокого уровня в соответствующей

последовательности и производит вывод результирующих данных, определяемый этой программой.

Достоинство этого подхода - легкость реализации многих операций отладки на уровне исходной программы, поскольку все сообщения об ошибках, возникающих в процессе выполнения, могут ссылаться на исходные модули программы.

Однако за это приходится расплачиваться необходимостью многократно декодировать один и тот же оператор, если он, например, встречается в цикле или часто вызываемой подпрограмме, что существенно снижает скорость выполнения интерпретируемых программ (в 10... 100 раз).

Смешанные системы реализации. Чаще всего для реализации языка высокого уровня на компьютере, используется комбинированный подход. Сначала программа транслируется из

своей исходной формы в форму, более удобную для выполнения. Обычно это делается путем создания нескольких независимых частей программы, называемых модулями. На этапе загрузки эти независимые части объединяются с набором программ поддержки выполнения, реализующих программно-моделируемые (интерпретируемые) операции. Это приводит к созданию выполняемой формы программы, операторы которой декодируются и выполняются

посредством их интерпретации.

Операторы

Операторами обозначаются операции, которые следует выполнить над операндами формулы. Существует стандартный порядок выполнения вычислений, однако его можно изменить с помощью скобок.

Типы операторов

Существует следующие виды  операторов: арифметические, текстовые, операторы сравнения и операторы ссылок.

Арифметические операторы

Служат для выполнения арифметических операций, таких как сложение, вычитание, умножение. Результатом операций являются числа. Используются следующие арифметические операторы.

Арифметический оператор Значение Пример
+ (знак плюс) Сложение 3+3
– (знак минус) Вычитание Отрицание 3–1 –1
* (звездочка) Умножение 3*3
/ (косая черта) Деление 3/3
% (знак процента) Процент 20%
^ (крышка) Возведение в степень 3^2

Операторы сравнения

Используются для сравнения двух значений. Результатом сравнения является логическое значение: либо ИСТИНА, либо ЛОЖЬ.

Оператор сравнения Значение Пример
= (знак равенства) Равно A1=B1
> (знак больше) Больше A1>B1
< (знак меньше) Меньше A1<B1
>= (знак больше или равно) Больше или равно A1>=B1
<= (знак меньше или равно) Меньше или равно A1<=B1
<> (знак не равно) Не равно A1<>B1

Текстовый оператор

Амперсанд (&) используется для объединения нескольких текстовых строк в одну строку.

Текстовый оператор Значение
& (амперсанд) Соединение или объединение последовательностей знаков в одну последовательность ("Северный"&"ветер")

Операторы ссылок

Для описания ссылок на диапазоны ячеек используются следующие операторы.

Оператор ссылки Значение  
: (двоеточие) Оператор диапазона, который образует одну ссылку на все ячейки, находящиеся между первой и последней ячейками диапазона, включая эти ячейки  
; (точка с запятой) Оператор объединения. Объединяет несколько ссылок в одну ссылку  
(пробел) Оператор пересечения множеств, служит для образования ссылки на общие ячейки двух диапазонов  

 

 

Список используемой литературы

1. Липпман С. Б. Основы программирования на C++: Пер. с англ. — М.:

2. Вильямс, 2002. — 256 с.

3. Липпман С. Б., Лажойе Ж. Язык программирования С++. Вводный курс: Пер. с англ. — 3-е изд. — М.: ДМК, 2001. — 1104 с.

4. Страуструп Б. Язык программирования C++: Пер. с англ. — 3-е спец. изд. — М.: Бином, 2003. — 1104 с.

5. Страуструп Б. Дизайн и эволюция языка C++. Объектно-ориентированный язык программирования: Пер. с англ. — М.: ДМК пресс, Питер, 2006. — 448 с.

6. Эккель Б. Философия C++. Введение в стандартный C++: Пер. с англ. — 2-е изд. — СПб.: Питер, 2004. — 572 с.

7. Эккель Б., Эллисон Ч. Философия C++. Практическое программирование: Пер. с англ. — СПб.: Питер, 2004. — 608 с.

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 219.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...