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

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

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

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

Таким образом, программные конструкции, имеющие схожее назначение, должны выглядеть одинаково, а те конструкции, которые выполняют различные действия, и выглядеть должны по-разному. В целом, чем больше разнообразие синтаксических конструкций, тем проше отразить в структуре программы различные семантические структуры, соответствующие этим конструкциям. Программы, написанные на языках, в которых сравнительно мало различных синтаксических конструкций, обычно труднее читать. Например, в АРБ и ЯХОВ01А предусмотрен только один формат операторов. Различия между оператором присваивания, вызовом подпрограммы, оператором до1о, выходом из подпрограммы, многовариантным условным ветвлением и многими другими распространенными программными структурами синтаксически отражены только различиями в одном или нескольких символах операторов внутри сложного выражения.

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

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

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

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

Но если, однако, в написании такой функции произошла ошибка, то транслятор будет не в состоянии ее обнаружить. Подобна<й эффект маскирования ошибок в программах является причиной того, что языки, полностью свободные от избыточности, зачастую трудно использоват . Легкость верификации. С легкостью чтения и написания программ связана концепция корректности программ, также называемая верификацией программ. Многолетний опыт написания программ позволяет утверждать, что разобраться в любом отдельно взятом операторе относительно просто, но сам процесс написания правильной программы чрезвычайно сложен.

Следовательно, необходимы методики, позволяющие математически строго доказывать корректность написанных программ. Мы обсудим эту тему в главе 4. Легкость трансляции, Третья цель, которая противоречит первым двум, — это достижение легкости трансляции программы в исполняемую форму. Легкость чтения и записи — это критерии, определяемые нуждами программиста. Легкость трансляции относится к нуждам транслятора, который обрабатывает написаш|ую программу. Ключевым моментом для упрошения трансляции является регулярность структуры программы.

ПБР является примером языка, программы которого не являются слишком легкими ни для чтения, ци для записи, но при этом исключительно просты для трансляции. Благодаря регулярности синтаксиса вся 96 Глава 3. Вопросы трансляции языка синтаксическая структура любой ?.?ЯР-программьг может быть описана несколькими простыми правилами. Сложность трансляции программы возрастает по мере увеличения количества специальных синтаксических конструкций. Например, очень сложно транслировать программы, написанные на языке СО ВО?., из-за большого количества допустимых форм операторов и объявлений, хотя этот язык нельзя назвать семантически сложным.

Рис. 3.1. Дее интерпретации условного оператора Отсутствие неоднозначности. Неоднозначность является центральной проблемой при разработке любого языка. Определение языка в идеале должно обеспечивать однозначность любой синтаксической конструкции, которую программист моткет написать. Неоднозначная конструкция допускает два и более толкований. Проблема неоднозначности обычно возникает не в структуре отдельно взятого элемента программы, анри взаимодействии различных структур. Например, н Разса1, и А1.СО?. попускают лве различные формы условного оператора: 1Г булево выражение тлел оператор, е1ве оператор, 1Г булево выражение тлел оператор, При интерпретации каждого из этих операторов их смысл ясно определен.

Однако если эти две формы объединяются вместе и в качестве первого оператора берется вторая форма условного оператора, то получается следующая структура, которая называется условным оператором с повисшим е1зе: 1Г булево выраыение, Епеп тт булево выраиенне, Гбеп оператор, е1ве оператор, Эта структура является неотгггозначной, так как неясно, какая из ггредставленных на рис. 3.1 последовательностей вычислений имеется в виду.

Другой пример можно позаимствовать из языка ГОКТКА?Ч, Ссылка на Я(! .31 может означать как ссылку на элемент двухмерного массивами, так и обращение к подпрограмме-функции А с двумя параметрами 1 и 3, поскольку в гОКТКА?ч для вызова функции 3,1, Синтаксис языка программирования 97 и ссылки на элемент массива используется одна и та же синтаксическая конструкция. Подобные примеры неоднозначности можно найти в любом языке программирования. Проблемы с упомянутыми выше неоднозначнымн конструкциями в РОКТКАХ и А(.601 фактически были решены в обоих этих языках. В ЛАСО(.

неоднозначность конструкции, состоящей из двух или более условных операторов, была устранена путем изменения синтаксиса языка — добавилась пара разделителей Ьер и ... епб, отделяющая вложенный условный оператор от внешних конструкций, Таким образом, естественная, но неоднозначная конструкция, состоящая из двух условных операторов, была заменена двумя менее естественнылти, зато однозначными конструкциями, из которых можно выбрать ту или иную в зависимости от требуемой интерпретации: 1Г бупево выражение, еьеп ьей1п тг булево выражение, вьеп оператор, епо е1ве оператор, тГ бупево выражение, Ььеп Ьев1п 11 бупево выражение, Епеп оператор, е1ве оператор, еп1 Более простое решение используется в языке Лба: каждый условный оператор тт должен заканчиваться разделителем епб тй В С и Рааса! используется другой метод устранения неоднозначности, Для неоднозначной конструкции избирается произвольное толкование — в данном случае последнее е1ве согласуется с ближайшим к нему ЬЬеп, так что в результате получается комбинированный оператор, смысл которого совпадает со второй из приведенных выше конструкций языка А(.601.

Неоднозначность ссылок на функции и элементы массивов в языке )гОКТКА(к( разрешена следующим образом: конструкция А(1.3) рассматривается как вызов функции, если не был объявлен массив А. Поскольку каждый массив должен быть описан до того, как он будет использован в программе, для'транслятора не составит труда проверить, был ли объявлен массив А, на который имеется ссылка. Если объявление массива не обнаружено, то транслятор предполагает, что в данном случае имеется в виду обращение к внешней функции А. Это предположение может быть проверено только во время загрузки, когда все внешние функции (в том числе библиотечные) будут собраны в окончательную исполняемую программу. Если теперь загрузчик не обнаружит функцию А, то появится сообщение загрузчика об ошибке.

В Раэса1 используется друтая техника для устранения подобной неолнозначности. Вводится синтаксическое отличие; в квадратные скобки заключается список индексов при ссылке на алемент массива (например, А(1. б)), а в круглые— список параметров при обращении к функции (например, А(1.3)). 3.1.2.

Синтаксические элементы языка Общий стиль синтаксиса языка определяется выбором основных синтаксических элементов. Мы кратко рассмотрим наиболее характерные из них, Набор символов. Определение набора используемых символов — это одна из первоочередных задач, которую необходимо решить при разработке синтаксиса языка программирования. Существует несколько широко используемых наборов, например, таких как ЛБСПг, в каждом из которых помимо основных букв и цифр Апкпсап огапг1агт1 Сог1с Гог 1пГогввцоп 1птсгсьнпис (АЭСП) — амс1тика~ гний стандартный код обме- ~ ~а и нформакией.

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

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

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