Заходи
Гость

Хостинг

Статистика
Яндекс.Метрика Счетчик PR-CY.Rank
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Ccылки

Свежак

Главная » Статьи » Все статьи » Прогараммирование

ТРАНСЛЯЦИЯ И ИНТЕРПРЕТАЦИЯ ПРОГРАММ

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

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

Поэтому возникает вопрос: как организовать выполнение таких программ на конкретном компьютере? Для этой задачи существует два основных решения.

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

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

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

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

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

 

Подпрограмма

Адреса

Адреса в выполняемой после компиляции программе

Р

0-999

0-999

Q

0-1999

1000-2999

Библиотека

0-4999

3000-7999

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

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

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

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

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

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

СРЕДЫ И РЕАЛИЗАЦИИ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

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

Старейшей средой программирования считается UNIX - ма­шинно-независимая операционная система с разделением времени. Она предоставляет многочисленные мощные инструментальные средства для производства ПО и эксплуатации разнообразных язы­ков. Работа с этой средой осуществляется с помощью графического интерфейса, устанавливаемого поверх нее. Во многих случаях этим интерфейсом является Common Desktop Environment (CDE).

Последнюю стадию развития сред разработки ПО представляют Microsoft Visual C++, Visual BASIC, Delphi и Java Development Kit, которые предлагают легкий способ создания графических интер­фейсов для программ пользователя.

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

Компилируемые языки. Компилируемыми принято счи­тать такие языки как С, C++, FORTRAN, Pascal и Ada. Это означает, что программы, написанные на этих языках, транслируются в ма­шинный код данного компьютера перед началом выполнения. Про­граммная интерпретация при этом ограничивается только интер­претацией набора программ поддержки выполнения, которые мо­делируют элементарные операции исходного языка, не имеющие близкого аналога в машинном языке.

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

Интерпретируемые языки. Реализуются с использова­нием программного интерпретатора. К таковым относятся языки LISP, ML, Perl, Postscript, Prolog и Smalltalk. При такой реализации транслятор выдает не машинный код используемого компьютера, а некую промежуточную форму программы. Эта форма легче для выполнения, чем исходная программа, но все же она отличается от машинного кода.

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

Развитие Всемирной паутины WWW и появление языка Java внесли изменения в описанную схему. Язык Java похож скорее на Pascal и C++, чем на LISP, но в большинстве случаев реализуется как интерпретируемый язык. Компилятор Java вырабатывает про­межуточный набор байт-кодов для виртуальной машины Java. Пе­редача байт-кодов на локальный компьютер (даже если он медлен­нее, чем web-сервер) выгоднее в отношении временных затрат, чем передача результатов выполнения программы на web-сервере. Од­нако web-сервер не в состоянии предугадать машинную архитекту­ру хост-компьютера. Поэтому браузер создает виртуальную маши­ну Java, которая и выполняет стандартный набор байт-кодов Java.

Категория: Прогараммирование | Добавил: Iron (12.06.2012)
Просмотров: 1774 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Статьи
[Прогараммирование]
Как работает CSS?
[Прогараммирование]
ЛЕКЦИЯ. Язык Pascal
[Прогараммирование]
Статический анализ: ошибки в медиаплеере и безглючная аська
[Устронение ошибок систем]
Устранение неполадок при возникновении (синего экрана) Blue Screen Of Death (BSOD) (2)
[Операционные системы]
Особенности применения технологий Lotus Domino и Notes в современных информационных системах
[Менеджмент]
Факторы микросреды организации
[Прогараммирование]
Разработка ПО с открытыми исходными текстами как особый вид прикладной науки
[Прогараммирование]
ПОДПРОГРАММЫ. ПРОЦЕДУРЫ И ФУНКЦИИ
[Прогараммирование]
Строковый тип данных
[Прогараммирование]
Подпрограммы

Категории
Операционные системы [30]
Устронение ошибок систем [13]
Безопасность систем [9]
Прогараммирование [32]
Технологические [0]
Информатика [23]
Бухгалтерский учет [3]
Ценообразование [0]
Экономика [0]
Менеджмент [3]
Психология [0]
Разное [4]

Популярный софт
Iron Kaspersky Internet Security 2015
Kaspersky Internet Security 2015
Iron Virtual DJ
Virtual DJ
Iron SoundForge 11
SoundForge 11
Iron Alcohol 120
Alcohol 120
Iron Norton Internet Security 2014
Norton Internet Security 2014
Iron Loaris Trojan Remover
Loaris Trojan Remover

Жми

Copyright MyCorp © 2024Конструктор сайтов - uCoz