Главная » Просмотр файлов » В.Ш. Кауфман - Языки программирования - концепции и принципы (1990)

В.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (1160787), страница 79

Файл №1160787 В.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (В.Ш. Кауфман - Языки программирования - концепции и принципы (1990)) 79 страницаВ.Ш. Кауфман - Языки программирования - концепции и принципы (1990) (1160787) страница 792019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

продукта (ЖЦКПП). Рассмотрим три этапа (стадии) жизненного цикла -

проектирование, эксплуатацию и сопровождение продукта. Их достаточно, чтобы

выделить важнейшие компоненты реализации.

20.1.1. Компоненты реализации

Будем исходить из того, что авторское определение ЯП имется (для

базового языка индустриального программирования в настоящее время это обычно

отраслевой, национальный или международный стандарт; в других случаях

определение ЯП может иметь менее высокий официальный статус). К авторскому

определению предъявляются исключительно высокие требования. Их серьезное

обсуждение выходит за рамки книги. Но одно из таких требований стоит

сформулировать.

Авторское определение в идеале должно исчерпывающим образом фиксировать

синтаксис и семантику ЯП. Другими словами, оно должно быть способно служить

единственным источником сведений о допустимых языковых конструктах и их

смысле. Поэтому можно ожидать (и опыт уверенно подтверждает), что авторское

определение не пригодно в качестве методического материала (а тем более

учебника) по созданию программ на этом языке. Точно, понятно и полно описать

ЯП - столь непростая задача, что не стоит ее усложнять погоней за двумя

зайцами.

Рассмотрим требования к реализации с точки зрения последовательных

этапов ЖЦКПП:

Реализация с точки зрения этапа проектирования программы. Чтобы

обеспечить эксплуатацию ЯП на этапе проектирования программы, требуется

скорее методический материал, чем авторское определение. Нужда в нем

особенно очевидна в случае базового языка индустриального программирования,

ориентированного на массовое применение. Недаром в случае с Адой первые

учебники появились практически одновременно с официальным определением языка

(среди них - уже упоминавшийся учебник Вегнера [18]). Так что первая

важнейшая компонента реализации, необходимая в особенности при

проектировании программы - это методическое руководство (учебник) по

программированию на рассматриваемом ЯП. Конечно, учебником не исчерпываются

все потребности этапа проектирования, которые призвана удовлетворять

квалифицированная реализация.

[В последние годы появились, в частности, программные средства,

поддерживающие пошаговую детализацию, проверку правильности, создание

тестов, управление проектом и другие элементы проектирования.]

Реализация с точки зрения этапа эксплуатации. Сразу ясно, что здесь не

обойтись без исполнителя, соответствующего ЯП. Причем не абстрактного, а

вполне конкретного, материального, обладающего достаточными физическими

ресурсами и приемлемыми характеристиками эффективности (ресурсоемкости). Как

известно, в настоящее время исполнители для ЯП представляют собой комплекс

аппаратуры и программных продуктов, называемых трансляторами. Будем считать,

что создание аппаратуры выходит за рамки задач, связанных с реализацией

конкретного ЯП (хотя имеется тенденция к изменению этого положения). Тогда в

качестве второй важнейшей компоненты реализации выделим транслятор - без

него невозможно обеспечить этап эксплуатации программы. Ясно, что все

потребности и этого этапа не исчерпываются транслятором.

[В частности, нужна операционная система, обеспечивающая нормальное

функционирование аппаратуры, нужен резидент, обеспечивающий нормальное

выполнение целевой программы и т.п.]

Реализация с точки зрения этапа сопровождения. Анализируя этап

сопровождения, обратим внимание на основную технологическую потребность

этого этапа - корректировать программу с минимальным риском внести ошибки.

Вы знакомы со средствами редактирования текстов (редакторами), позволяющими

вносить изменения в исходные программы. Риск ошибиться уменьшается, если

редактор "знает" ЯП и позволяет вносить исправления в терминах ЯП. Например,

такому языковому редактору можно дать задание "в процедуре Р заменить

формальный параметр А на В".

Сравните указание обычному редактору "заменить А на В" и

соответствующий риск заменить "не то" А. Итак, третьей важнейшей компонентой

квалифицированной реализации служит языковый редактор.

[Совсем хорошо было бы вносить исправления не в терминах ЯП, а в

терминах решаемой задачи (тогда редактор должен был бы "знать" и ЯП, и ПО, и

задачу). Но это - дело будущего.]

Итак, беглого взгляда на три этапа жизненного цикла программы хватило

для выделения трех важшейших компонент реализации ЯП: учебника, транслятора

и редактора.

Другие компоненты реализации. Ограничимся только компонентами,

непосредственно связанными с ЯП, считая, что реализация погружена в

некоторую многоязыковую систему программирования, предоставляющую

необходимые общесистемные услуги, если они не определены в ЯП (базу данных,

связь с другими языками, фонды готовых программ, документов и т.п.).

Укажем этапы жизненного цикла, где применение называемых компонент

особенно целесообразно (хотя очевидно, что они полезны и для других этапов,

в том числе и выпавших из нашего рассмотрения).

Этап проектирования - процессоры, помогающие готовить тексты исходных

программ. Примерами могут служить уже упомянутые препроцессоры,

поддерживающие метод пошаговой детализации программ, "знающие" определенный

ЯП. Они в состоянии воспринять запись шагов детализации и выдать текст

законченной (или еще незаконченной) программы, попутно контролируя его

правильность (в диалоговом режиме, если нужно). Полезны процессоры,

позволяющие писать на структурных расширениях Фортрана, Кобола, ПЛ/1 и

других "заслуженных" ЯП. Еще один класс компонент реализации - отладчики.

Этап эксплуатации - средства контроля и измерений как программ, так и

трансляторов. Это комплект тестов, проверяющих соответствие исполнителя

определению языка, оптимизаторы и конкретизаторы, настраивающие программы на

конкретные условия эксплуатации.

Этап сопровождения - уже упоминавшиеся измерительные средства; средства

для отслеживания и контроля изменений (версий); контролеры программ,

проверяющие соответствие стандартам (это особенно важно для переноса

программ в другую среду) или выявляющие особо ресурсоемкие места.

Кроме того, следует понимать, что развитая реализация может содержать

учебники для различных категорий пользователей и программных сред,

трансляторы с различными предпочтительными режимами эксплуатации (особо

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

или программных сред, языковые редакторы с различными уровнями "интеллекта"

и т.п.

Итак, будем считать достаточно обоснованным следующий тезис:

квалифицированная реализация ЯП - дело сложное, дорогое, длительное и

многоплановое (для "живого" ЯП - даже неограниченное по времени). От

качества реализации в этом широком смысле слова зависят "потребительские

свойства" ЯП. Реализация - один из наиболее очевидных аспектов, переводящих

понятие "язык программирования" из категории научно-технической в

социальную.

[Дополнительную яркую социальную окраску этому понятию придают

пользователи ЯП, иногда официально объединенные в ассоциации. Так что ЯП,

тем более базовый язык индустриального программирования в наше время -

явление социальное и именно такого подхода к себе требует.]

На этом закончим разговор о реализации в целом. Сконцентрируем внимание

на более традиционной ее части - трансляторах, точнее, компиляторах.

13.2. Компиляторы

Компилятором называется программный продукт, предназначенный для

перевода с исходного ЯП на целевой (объектный) язык (обычно - язык загрузки

или иной язык, близкий к машинному).

Если для целевого ЯП исполнитель имеется, то компилятор дает

возможность выполнять исходные программы в два этапа. На первом этапе -

этапе компиляции (трансляции) - исходная программа переводится компилятором

на целевой язык; на втором - этапе исполнения - исполнителем целевого ЯП

выполняется переведенная (целевая) программа.

Современные языки индустриального программирования ориентируятся прежде

всего на технологические потребности пользователей и поэтому довольно сильно

отличаются от наиболее распространенных машинных языков. Вместе с тем, как

мы видели, в них многое сделано для того, чтобы можно было позаботиться о

надежности и эффективности целевых программ еще на этапе компиляции

(вспомните квазистатический аппарат прогнозирования - контроля). По этим

двум причинам компиляторы (а не, например, интерпретаторы) служат

обязательными компонентами реализации практически всех языков

индустриального программирования.

Мы не стремимся дать исчерпывающее определение компилятора. Дело в том,

что это понятие скорее инженерное, чем математическое. Во всяком случае,

хороший компилятор должен не только "переводить", но и сообщать об ошибках,

и накапливать статистические сведения об обработанных программах, и

оптимизировать свою работу с учетом особенностей потока программ. Возможны и

иные требования (гибкое управление свойствами целевой программы,

трассировкой, печатью листинга, диагностическими режимами и пр.).

Создать компилятор - дело очень непростое. Высококачественный

компилятор с современного ЯП требует нескольких лет работы и может содержать

сотни тысяч команд. При этом не случайно не названо количество требуемых

специалистов. Несколько лет нужно независимо от того, можно ли выделить на

это 10 или 200 человек. Близкая к оптимальной - группа из 5 - 15 человек.

Увеличение группы только удлинит сроки или приведет к полному краху

(закон Брукса [38]), если не удастся найти для новых людей совершенно

независимой работы (такой, например, как создание комплекта тестов,

проверяющих качество компилятора)).

Технологии создания компиляторов посвящена огромная литература.

Выделены важнейшие технологические этапы, основные компоненты компилятора,

предложены многочисленные методы реализации отдельных компонент, имеются

автоматизированные системы, предназначенные для создания компиляторов.

Их успешно применяют в относительно простых случаях, когда сами

переводы не слишком сложны и к ресурсоемкости компиляторов не предъявляют

жестких требований. В таких условиях два-три специалиста с помощью

соответствующей инструментальной системы могут изготовить компилятор

примерно за месяц интенсивной работы.

Однако ЯП развиваются, требования к качеству реализации повышаются,

возможности аппаратуры растут. В результате разработка компиляторов для

языков индустриального программирования продолжает требовать значительных

творческих усилий (правда, теперь чаще приходится не столько изобретать

методы компиляции, сколько квалифицированно выбирать из имеющегося

арсенала).

Полноценные учебники по созданию компиляторов еще ждут своих авторов.

Много интересного и полезного на эту тему можно найти в книгах [39,40].

20.1.2. Основная функция компилятора

Рассмотрим лишь одну, выделяемую традиционно, функцию компилятора -

строить целевую программу. Выделяется она потому, что лучше других отражает

специфику компилятора и соответствует его основному назначению. Однако и

остальные функции компилятора в определенных условиях могут оказаться

исключительно важными. Например, для студентов важнейшей может оказаться

диагностическая функция, т.е. способность компилятора помогать отлаживать

программу.

Итак, будем считать, что основная задача компилятора - перевести

программу с исходного языка на целевой.

Обозначим через LL1 исходный язык, а через LL2 целевой язык для

планируемого компилятора. Пусть L1 - множество текстов, допустимых в

LL1 (т.е. определяемых синтаксисом LL1), а L2 - множество текстов,

допустимых в LL2.

Переводом (проекцией) с языка LL1 на язык LL2 называется отношение p из

L1 в L2, т.е. подмножество декартова произведения L1 * L2.

Легко догадаться, что всякий компилятор характеризуется единственной

проекцией (обратное неверно!). Этой проекции принадлежат те и только те пары

(t1 ,t2)

где t1 из L1, t2 из L2, для которых t2 может быть получен в результате

применения компилятора к t1.

Данное выше определение проекции в виде отношения подчеркивает факт,

что компилятор может переводить не все тексты из L1 (например, для слишком

длинных текстов может не хватить ресурсов), переводить различные тексты в

один (например, если они обозначают одно и то же), переводить один и тот же

текст по-разному (например, в зависимости от режима трансляции - с

оптимизацией или без нее).

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

Тип файла
Документ
Размер
1,26 Mb
Тип материала
Высшее учебное заведение

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

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