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

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

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

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

Например, возможные альтернативные формы операторов, типы структур данных, программные структуры и т. п. определяются, как правило, во время определения языка. 84 Глава 2. Влияние машинной архитектуры 1. Набор возжожкмх типов длл переженной Х. Обычно для переменной в про грамме определен какой-либо тин данных — это может быть ~ отедег (целочисленный), геа1 (вещественный), Воо1еап (булев) или какой-то иной тип. Множество возможных типов для переменной Х обычно устанавливается при определении языка (например, могут допускаться только типы ~ пое9ег, геа1, Воо1еап, зет (множество) и сйагассег (символ)).

Может быть и так, что язык допускает определение новых типов переменных в каждой программе, как, например, в С, )ача и Аоа. В таком случае множество возможных типов для переменной Х устанавливается во время трансляции программьь 2. Тип переменной Х Конкретный тип данных, ассоциированный с перемен ной Х, часто устанавливается во время трансляции при помощи явного объявления в программе; например, в языке С для того, чтобы задать Х как переменную вещественного типа, используется объявление 11оаь Х, В таких языках, как, например, Рег! или Бща!!га!)с, тип данных переменной Хопределяется во время выполнения программы, в тот момент, когда переменной присваивается значение определенного типа, В этих языках переменная Х в одном месте может содержать целое значение, а в другом месте той же программы — строку символов.

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

В любой момент выполнения программы переменная Х связана с каким-либо значением. Это то значение, которое присваивается данной переменной при выполнении программы. Операция присваивания Х = Х + 10 меняет значение переменной Х, заменяя старое значение новым, которое больше исходного на 10. Представление константы 10. Целое число 10 представлено одновременно как константа в тексте программы (с использованием строки 10) и как некая последовательность битов во время выполнения программы. Выбор десятичного представления этого числа (то есть символа 10 для десяти) обычно происходит во время определения языка программирования, а выбор конкретной последовательности битов для представления этого числа при выполнении программы происходит во время реализации языка.

Свойства операции «+». Выбор символа «+» для обозначения операции сложения происходит во время определения языка. Однако в зависимости от контекста этот символ может обозначать вегцестввнное сложение, целочисленное глажен, комплексное сложение и т. п. В компилируемом языке принято определять операцию, представляемую символом «+», во время 2.2. Виртуальные компьютеры и время связывания 85 компиляции. Роль мехаиизма, выполняющего это связывание, обычно играет механизм определения тинов переменных; если Х вЂ” целое число, то символ «+» обозиачает в данном контексте целочисленное сложение; если Х вЂ” вещественное число, то символ «+» обозначает веществеп нос сложение и т.

д. Подробное определение операции, обозначенной символом «+», может зависеть также от аппаратной части базового компьютера. Если в нашем примере Х будет иметь значение 2", то иа некоторых компьютерах для Х+ 10 ие будет возможности представить результат этого сложения. Подводя итог, можно сказать, что для яз гака, подобного С, символ «+» связывается с набором операций сложения во время определения языка. Затем во время реализации языка определяется каждый элемент из этого набора, во время трансляции программы каждое конкретное употребление символа «+» в программе связывается с конкретной операцией сложения, а конкретное значение результата операции сложения определяется уже во время выполнения программы.

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

Но ие все языки одинаково хороши для создания программ, в которых требуется выполнять большое количество арифметических операций. Например, и М1., и ГОКТКАХ позволяют определять массивы чисел и манипулировать этими массивами. Но для решеиия задач, связанных с большими числовыми массивами и большим количеством вычислений, было бы весьма неблагоразумно использовать М1. при наличии язы- ка ГОКТКАХ. Если мы попытаемся отыскать причину превосходства РОКТКАХ, сравнивая характеристики ГОКТКАХ и М1, то в конце концов придем к выводу, что в данном случае лучше использовать ЕОКТКАХ, так как в М1.

большинство связываний происходит во время выполнения программы, а в ГОКТКАХ вЂ” во время трансляции Таким образом, при выполнении программы иа МЕ болыпая часть времени будет уходить иа создаиие и уничтожение связей. В такой же программе, написанной иа ЕОКТКАХ, основная часть связей устанавливается единожды во время трансляции, а при выполнении программы потребуется лишь незначительноее количество связываний. В итоге программа ца ГОКТКАХ будет работать зиачительио эффективнее. С другой стороны, можно задать такой вопрос почему ГОКТКАХ ие столь гибок в обработке строковых переменных и массивов, как М1? Ответ опять-таки сводится к различию во времени связывания.

Поскольку связываиие в ГОКТКАХ происходит по большей части во время трансляции, до того как становятся известны входиые данные, иа ГОКТКАХ трудно писать программы, которые могли бы приспосабливаться во время выполнения к большому количеству различных ситуаций, зависящих от входных данных.

Например, размер строк и тип переменных 86 Глава 2. Влияние машинной архитектуры в ЕОКТГхАХ должны быть определены во врел1я трансляции. В М1. подобное связывание может быть отложено до момента выполнения программы, когда будут известны входные данные и определятся наиболее подходящие связывания для конкретных входных данных, В языках, подобных ГОРСТКАХ, большая часть связываний происходит на этапе трансляции. Эта ситуация носит название раннего связывания.

Если же связывания происходят в основном при выполнении программы, как в МЕ или в НТМ1., то говорят о позднем связывании. Сравнительные преимушества и недостатки раннего и позднего связывания связаны с противоречием между гибкостью и эффективностью. Языки, для которых эффективность выполнения программ играет решающую роль (например, ГО КТВД, Разов! и С), обычно конструируются таким образом, чтобы максимально возможное количество связываний выполнялось во время трансляции. Если же определяющее значение имеет гибкость (как в 11ВР и М1), болыпая часть связываний откладывается до момента выполнения программы, чтобы обеспечить возможность учета входных данных, от которых зависят связывания. Если же требуется создать язык, который был бы одновременно и эффективным, и гибким(примером чего служит Ада), следует обеспечить возможность управления временем связывания.

Время связывания и реализация языка В определении языка обычно не накладывается строгих определений на время связывания. При определении языка предполагается, что какое-то конкретное связывание будет сделано, например, во время трансляции, но окончательно это определяется только при реализации языка. В частности, Рааса! устроен так, что тип переменных определяется во время компиляции; но в какой-либо конкретной реализации языка Рааса! тип переменных может проверяться только при выполнении программы, То есть хотя в определении Рааса! предполагается, что проверка типов переменных происходит во время колгпиляции, это не является строгим требованием.

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

Например, введение в ГОКТКАХ 90 рекурсии изменяет время связывания многих важнейших свойств этого языка. Поскольку время связывания зависит от реализации языка, то важно знать, какая конкретная реализация используется. При использовании локальной реализации языка программист должен принимать во внимание времена связывания в атой конкретной версии. Являются ли они обычными или локальные изменения языка привели к их модификации? 2.2. Виртуальные компьютеры и время связывания 87 2.2.4. Обзор языка дача История.

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

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

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