Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 22

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 22 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 222019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 22)

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

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

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

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

Языки С, Сл+, ЕОКТКАК, Равса! и Лг!а принято считать компилируемыми. Это означает, что программы, написанные на этих языках, транслируются в машинный код данного компьютера перед началом выполнения. Программная интерпретация при этом ограничивается только интерпретацией набора програим поддержки вьтолнения, которые моделируют элементарные операции исходного языка, не имеющие близкого аналога в машинном языке. Транслятор компилируемого языка является обычно довольно большой и сложной программой, и при трансляции основное значение имеет создание максимально эффективных с точки зрения их выполнения программ.

2. Интерпретируемые языки. Языки 1.15Р, М1., Рег!, Розгвспрс, Рго1ой и Вша11- га1!г часто реализуются с использованием программного интерпретатора. При такой реализации транслятор выдает не машшщ ый код используемого компьютера, а некую промежуточную форму программы.

Эта форма легче для выполнения, чем исходная программа, но все же она отличается от машинного кода. Процесс интерпретации для выполнения полученной программы должен быть реализован программным образом, поскольку аппаратный интерпретатор в данном случае непосредственно применить невозможно. Использование программного интерпретатора обычно приводит к относительно медленному выполнению программы. Трансляторы интерпретируемых языков обычно представляют собой довольно простые программы, основная сложность реализуется в программном обеспечении процесса интерпретации. Развитие Всемирной паутины Чч%% и появление языка) ача внесли некоторые изменения в описанную схему.

Язык )ача похож скорее на Разов! и Сл-л-, чем на 1.!ВР, но в большинстве случаев оц реализуется как интерпретируемый язык. Компилятор)ача вырабатывает промежуточный набор байт-кодов (Ьугесодез) для 78 Глава 2. Влияние машинной архитектуры виртуальной машины )ана. Основной причиной неэффективности тчеЬ-приложений является потеря времени при передаче по сети затребованных пользователем страниц, а не выполнение программ на хост-компьютере. Передача байт-кодов на локальный компьютер (даже если он медленнее, чем ъ еЬ-сервер) выгоднее в отношении временных затрат, чем передача результатов выполнения программы на ъ еЬ- сервере.

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

2. Путем программно-аппаратной реализации, когда структуры данных и алгоритмы представлены микропрограммами, которые выполняются на соответствующем микропрограммируемом аппаратном компьютере. 3. Как виртуальный компьютер, то есть путем моделирования структур данных и алгоритмов программами, написанными на каком-либо другом языке программирования. 4. Посредством комбинации перечисленных методов, когда некоторые части требуемого компьютера реализованы аппаратным способом, другие — программно-аппаратным, третьи — при помощи программного моделирования, то есть виртуальным способом.

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

Если язык компилируемый, эта программа может состоять из машинных команд реального компьютера; она может быть представлена произвольной структурой данных, если язык интерпретируемый. Структурами данных этого виртуального компьютера являются структуры данных, которые используются во время выполнения программы.

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

2.2. Виртуальные компьютеры и время связывания 79 2.2.1. Виртуальные компьютеры и реализация языка Если бы языки программирования определялись в терминах своих виртуальных компьютеров, так что каждый язык ассоциировался бы с некоторым однозначно определенным и понимаемым виртуальным компьютером, то описание семантики языка в терминах виртуального компьютера было бы очевидным. Но в действительности языки обычно определяются путем индивидуального задания семантики для каждой своей синтаксической конструкции, поэтому определение виртуального базового компьютера осуществляется только неявным образом.

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

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

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

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

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

Если разработчик решит сделать транслятор более простым, опустив эти действия, 80 Глава 2. Влияние машинной архитектуры тогда во время выполнения могут потребоваться различные представления струк- туры. Таким образом, различия в реализациях одного и того же языка объясняются следующими тремя факторами. 1. Разные разработчики могут иметь различные мнения о том, как должен быть устроен виртуальньш компьютер, неявно определяемый данным языком программирования, 2. Различные базовые компьютеры, на которых реализуется язык, предоставляют различные возможности. 3. Каждый разработчик выбирает собственные решения для реализации элементов виртуального компьютера, используя возможности, предоставляемые базовым компьютером, и для конструирования транслятора таким образом, чтобы он поддерживал выбранные решения для представления виртуального компьютера.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6376
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее