Главная » Просмотр файлов » И.Г. Головин, И.А. Волкова - Языки и методы программирования

И.Г. Головин, И.А. Волкова - Языки и методы программирования (1160773), страница 8

Файл №1160773 И.Г. Головин, И.А. Волкова - Языки и методы программирования (И.Г. Головин, И.А. Волкова - Языки и методы программирования) 8 страницаИ.Г. Головин, И.А. Волкова - Языки и методы программирования (1160773) страница 82019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

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

Виртуальный компьютер ОС предостав­ляет возможность управления внешними устройствами, файлами дан­35ных, процессами и много других. Подробнее устройство и функцииоперационных систем рассматриваются, например в [30].Форма представления интерфейса с виртуальной машиной ОСзависит, прежде всего, от языка программирования. Например,в языках С и C++ — это библиотеки системных вызовов и структур,в языке C# — библиотеки классов, объединенных в сборки, а в язы­ке Java — библиотеки классов, объединенных в пакеты, и т.д. В дан­ном учебнике мы не будем заниматься интерфейсами с ОС.В некоторых случаях понятие виртуальной машины языка (и еереализации) тесно связано с понятием промежуточного языка.Дело в том, что конструкции языков программирования плохоподходят для непосредственной интерпретации. Они имеют слож­ную структуру, представляются в виде последовательности символови ориентированы не на машинную реализацию, а на восприятиечеловеком-программистом (что неудивительно).

Поэтому «чистых»интерпретаторов языков программирования крайне мало. Почти всереальные интерпретаторы используют промежуточный язык (ПЯ),который обладает следующими двумя свойствами:• легкость интерпретации (по сравнению с исходным языком L);• легкость перевода программ с языка L в ПЯ (по сравнению с пере­водом в машинный код).В этом случае процесс трансляции и выполнения программывключает в себя два этапа: перевод программы с языка L в ПЯ и не­посредственная интерпретация текста на ПЯ. Интерпретатор ПЯназывают в этом случае исполнительной системой (или системойвремени выполнения).

Выгода этой схемы состоит в том, что в силусвойств ПЯ обе компоненты (транслятор в ПЯ и интерпретатор ПЯ)достаточно просты и компактны. Кроме того, схема обеспечиваетдополнительные преимущества.Рассмотрим задачу реализации языка L для N различных машин­ных архитектур. При этом требуется, чтобы все реализации работалиодинаково (т.е. оттранслированные программы должны обеспечи­вать получение одних и тех же результатов на всех архитектурах).В обычном случае требуется разработать N различных и достаточ­но сложных программ-трансляторов (неважно компиляторов илиинтерпретаторов). Если же использовать единый промежуточныйязык, то требуется одна программа-транслятор с языка L в ПЯ и Nинтерпретаторов ПЯ для каждой архитектуры (как вы думаете, накаком языке лучше всего написать программу-транслятор?).

Каждаяиз этих программ существенно проще, чем интерпретатор или ком­пилятор с языка L, поэтому суммарные усилия по реализации всехтрансляторов меньше. Кроме того, добавление реализации для новойархитектуры также существенно проще, потому что интерпретаторПЯ существенно проще компилятора или интерпретатора L. Под­робнее ПЯ и его интерпретации рассматриваются в ч. III данногоучебника.36Одна из первых реализаций этой схемы — система UCSD-Pascal,использовавшаяся для организации выполнения студенческого прак­тикума на множестве компьютеров разных архитектур. Входной языкэтой системы Паскаль, а промежуточный язык — P-code.Такой же подход использовался при реализации первого чисто­го объектно-ориентированного языка SmallTalk. Авторы SmallTalkпредложили свой вариант ПЯ — байт-код.

Такое название выбрано,потому что каждая команда байт-кода имеет простую структуру —код операции размером один байт и далее операнд (операнды) пере­менной длины. Программы на SmallTalk транслируются в байт-код,который далее интерпретируется.Еще одним важным примером использования ПЯ является языкJava. Вместе с Java была разработана спецификация виртуальной Javaмашины (Java Virtual Machine — JVM). Машинным языком JVM яв­ляется байт-код JVM. Байт-код не зависит от конкретной машиннойархитектуры и достаточно легко интерпретируется.

СпецификацияJVM содержит описание байт-кода и описание среды времени вы­полнения (Java run-time environment — Java RTE). Функции Java RTEпохожи на функции ОС, но не зависят ни от одной ОС. Разработчикязыка (компания Sun Microsystems) представила компилятор javac,транслирующий программы с языка Java в байт-код JVM. Таким обра­зом, JVM в терминах виртуальных архитектур — это прослойка междувиртуальной машиной языка Java и виртуальным компьютером ОС.Наличие JVM позволяет абстрагироваться не только от конкретнойархитектуры, но и от операционной системы, поэтому программы наJava могут выполняться везде, где есть реализация JVM.

РеализацияJVM подразумевает реализацию интерпретатора байт-кода и реали­зацию Java RTE. В настоящее время реализации JVM существуютпрактически для всех операционных систем.Некоторым недостатком систем с ПЯ является невысокая ско­рость интерпретации ПЯ. Одно из очевидных средств увеличенияРис.

4.1. Иерархия виртуальных компьютеров для Java-приложения37их быстродействия — аппаратная реализация ПЯ. Например, былиразработаны микропроцессоры, непосредственно интерпретирующиебайт-код SmallTalk (микропроцессор Катана [32]), а также архитекту­ра процессоров picoJava для интерпретации байт-кода JVM [29].Итак, при создании приложений программист использует вирту­альную машину языка программирования, которая представляетсяна самом деле иерархией виртуальных компьютеров. Рассмотрим этуиерархию на примере приложения, написанного на Java (рис. 4.1).В основе иерархии лежит реальное физическое устройство — ком­пьютер. Машинный язык этого компьютера — микрокод. Следую­щий уровень иерархии — программно-аппаратный виртуальныйкомпьютер (ПАВК), машинный язык которого интерпретируетсямикропрограммно.

Далее находится слой виртуального компьютераОС, реализуемый программами на языке ПАВК. Следующий слой —виртуальная машина байт-кода (реализация JVM), машинным языкомкоторой служит байт-код JVM. Вершиной иерархии является вирту­альная машина языка Java (машинный код — язык Java).ЧАСТЬIIВВЕДЕНИЕ В СОВРЕМЕННЫЕ ЯЗЫКИПРОГРАММИРОВАНИЯГлава 5БАЗИС СОВРЕМЕННЫХ ЯЗЫКОВПРОГРАММИРОВАНИЯ5.1. Простые типы данных, операциинад нимиВ соответствии со схемой, приведенной в подразд. 1.3, рассмо­трим основные конструкции языков программирования, начинаясо скалярного базиса.Все значения простых типов данных (называемых иногда элемен­тарными, или примитивными) являются атомарными, т.е. они неимеют внутренней структуры.Классификация простых типов данных приведена на рис. 5.1.В данном подразделе рассмотрим все простые типы данных, кромеподпрограммного, который имеет смысл обсуждать вместе с поня­тием подпрограммы (см.

гл. 6).Арифметические типы данныхВ компьютерах эти типы данных представляют числа, и поэтомудействительно являются основными.Как уже отмечалось, в некоторых языках (JavaScript) существуетединственный числовой тип (Number), представляющий все допу­стимые числа. С точки зрения упрощения программ это, конечно,удобно, однако в большинстве индустриальных языков программиро­вания арифметические типы данных разделяются на два вида: целые(для представления целочисленных значений) и вещественные (дляпредставления чисел с дробной частью). Основная причина такогоразделения состоит в том, что представление целых и вещественныхчисел в современных компьютерах различное, а также различаетсяи набор операций. Например, операции сложения целых и веще­ственных чисел представляются разными машинными командами.39ЦелыеЗнаковыеБеззнаковыеАрифметические ^ПлавающиеВещественные Г ^ФиксированныеСимвольныеЛогическиеСсылочные и указательныеПодпрограммныеРис.

5.1. Классификация простых типов данныхСама номенклатура машинных операций над целыми и веществен­ными числами различается (например, для вещественных чиселотсутствуют побитовые операции). Реализация операций над веще­ственными числами сложнее с аппаратной точки зрения, поэтомув ряде архитектур вещественные числа вообще могут отсутствовать.Для того чтобы программист мог учитывать эти нюансы, многиеязыки (в том числе Паскаль, C++, Java, С#) разделяют числовыетипы на два вида.Целые типы данныхД л я целых типов данных необходимо рассмотреть следующиеосновные вопросы:• универсальность (насколько полно учтены машинные типы);• наличие (или отсутствие) беззнаковых типов;• представление (размер значения, диапазоны значений);• надежность (какие ошибки могут возникать при выполненииопераций с целыми значениями);• набор операций.Универсальность.

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

Тип файла
PDF-файл
Размер
3,27 Mb
Тип материала
Высшее учебное заведение

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

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