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

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

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

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

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

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

Фактически описанная иерархическая система не заканчивается на реализации языка высокого уровня. Программы, создаваемые программистом, добавляют следующие уровни к этой иерархии. На рис. 2.4 представлена иерархия вирзуальных компьютеров, как она выглядит с точки зрения пользователя %%Ю. 2.2. Виртуальные компьютеры и время связывания 81 Входные данные Выходные данные КОМПЬЮТЕР УЧЕВ-ПРИЛОЖЕНИЯ (реализованный как НТМ(.-страница) ВИРТУАЛЬНЫЙ УЧЕВ-КОМПЬЮТЕР (браузер — программа на языке С или Зача) ВИРТУАЛЬНЫЙ КОМПЬЮТЕР ЯЗЫКА С (реализуется программами из библиотеки подцержки выполнения, загружаемой вместе с откомпилированной программой) ВИРТУАЛЬНЫЙ КОМПЬЮТЕР ОПЕРАЦИОННОЙ СИСТЕМЫ (реализуется программами на машинном языке, которые выполняются на виртуальном программно-аппаратном компьютере) ПРОГРАММНО-АППАРАТНЫЙ ВИРТУАЛЬНЫЙ КОМПЬЮТЕР (машинный язык этого компьютера реализуется микропрограммами, выполняемыми на аппаратном компьютере) РЕАЛЬНЫЙ АППАРАТНЫЙ КОМПЬЮТЕР (реализован физическими устройствами) Рис.

2.4. Иерархия виртуальных компьютеров для веб-приложения Над виртуальным компьютером языка С, создаваемым компилятором этого языка, программист с использованием языка С (или другого, ему эквивалентного) строит программу, называемую тчеЬ-браузером. Этот браузер создает виртуальный тчеЬ-компьютер, который способен обрабатывать основные структуры данных 'ту%%, гиперссылки (()(с).) для перехода к другим тчеЬ-сайтаьг, основные элементы языка НТМ1. для отображения тчеЬ-страниц, а также выполнять интерактивные программы (апплеты) для пользователей браузера.

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

Например, тот объект, который в каком-то контексте является программой, в другом может представлять собой некую структуру данных. Например, задаюгций некоторую ч еЬ-страницу код НТМЬ является структурой данных для виртуального чеЬ-компьютера, который обрабатывает эти данные и определяет, 82 Глава 2. Влияние машинной архитектуры как следует располагать иа странице информацию. С другой стороны, для юеЪ- разработчика, использующего НТМЕ для обработки той информации, которую ои хочет поместить иа страницу, этот код является программой.

Область применения принципа эквивалентности данных и программ можно расширить. В языках типа С и ЕОВТВАЫ выполняемые программы обычно храиятся отдельно от тех данных, которые используются в этих программах. В других языках, таких как Рго!оя или Е1БР, такого разделения ие существует. Программы и данные хранятся вместе и различие между ними проявляется только в процессе выполнения, 2.2.3. Связывание и время связывания Если ие ставить задачу быть предельно точными, можно сказать, что связывание элемента программы с конкретной характеристикой или свойством — это просто выбор определенного свойства из некоторого ряда допустимых свойств.

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

В основе этой классификации лежит наше предположение о том, что обработка программы независимо от языка всегда включает в себя фазу трансляции, эа которой следует выполнение оттраислироваииой программы. 1. Во время выполнения программы. Связывание часто происходит во время выполнения программы. Сюда входят связывание перемеииых с их зиачеииями, а также (во миогих языках) связывание переменных с конкретными областями памяти. Здесь можно выделить две важные подкатегории: + При входе в подпрограмму или блок. В большинстве языков связывание допустимо только при входе в подпрограмму или блок при выполнении программы.

Например, в языках С и С++ связывание формальных параметров с фактическими и связывание формальных параметров с определенными областями памяти происходит только во время входа в подпрограмму. + В произвольных точках программы во время ее выполнения, Некоторые типы связывания могут происходить в произвольных точках программы во время ее выполнения. Наиболее важным примером этого является связывание переменных с их значениями путем присваивания. В таких языках, как ПИР, М1. и Бгпа!1га1!г допустимо также связывание имен с областями памяти в произвольный момент при выполнении программы. Чтобы проиллюстрировать многообразие связывания и времен связывания, рассмотрим следующий простой оператор присваивания: Х=Х+ 10. Предположим, что этот оператор появился в некоторой программе, написанной на гипотетическом языке 1.

Можно исследовать типы связывания и времена связывания следующих элементов этого оператора. 2. 3. 2.2. Виртуальные компьютеры и время связывания 83 Во время трансляции (компиляции). Можно выделить три класса связываний, происходящих во время трансляции. + Связывание по выбору программиста. При написании программы программист принимает множество решений по вопросам выбора типов и имен переменных, струкгуры элементов программы н т. п. Эти решения определяют связывания, происходящие при трансляции. Транслятор данного языка использует этн связьгвания для определения окончательной формы объектной программы. + Связывание по выбору транслятора.

В некоторых случаях связывание определяется транслятором языка без непосредственного участия программиста. Например, относительное расположение объекта данных в области памяти, отведенной под некоторую процедуру, обычно задается транслятором без какого-либо вмешательства со стороны программиста. Хранение массивов данных и создание (при необходимости) дескрипторов массивов — это также прерогатива транслятора. Для различных реализаций одного и того же языка это связывание может происходить по-разному. + Связывание по выбору загрузчика.

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

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

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

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

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