ВВЕДЕНИЕ 4
1. Семантика языков программирования 7
1.1 Анализ семантической базы современных языков программирования 8
1.2 Обзор существующих трансляторов с единой семантической базой 11
Выводы к главе 1 13
2. Синтаксическая модель языков программирования 15
Выводы к главе 2 21
3. Современные инструментальные средства языков программирования 22
3.1 Скриптовые языки 22
3.2 Domain Specific Languages (DSL) 26
3.3 Языки запросов данных 30
3.4 Ассемблерные вставки 32
Выводы к главе 3 40
4. Структурная модель транслятора языков программирования с обшей
семантической базой 42
Выводы к главе 4 54
ЗАКЛЮЧЕНИЕ 55
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 56
Как известно, на практике иногда применяются или встречаются программные средства, основанные на многоязыковости в смысле общей семантической базы. Примерами таких средств выступают ассемблерные вставки в программах на языках C/C++ и многих других; «скриптовые» языки по отношению xHMTL, семантической базой которых является модель DOM (Document Object Model - объектная модель, используемая для XML/HTML- документов); внедрение запросов SQL в универсальный язык программирования (PL/SQL, технология LINQ), Domain-Specific Languages (DSL) или специализированные языки. Все они имеют похожую архитектуру: один или два «малых» языка (обычно — DSL) прямо или косвенно используют семантическую базу «главного» языка (обычно — универсальный язык программирования).
Проблемной областью является статичная архитектура таких трансляторов, то есть при необходимости включить в состав новый или заменить существующий «малый язык» простым образом, как правило, не получается и требует много «ручной работы».
Актуальность работы. Как показывают исследования последних лет, качество работы абсолютно любой технической системы в первую очередь зависит от надежности и отказоустойчивости используемого программного обеспечения. Для нынешних критичных по надежности информационно¬управляющих систем, в которых необходимо учитывать рост сложности и размеров их математического и программного обеспечения, значительно повысились требования со стороны заказчика и пользователей к их качеству, надежности функционирования и безопасности применения. По мере расширения применения и увеличения сложности информационно¬управляющих систем, выделились области (например, авиация и космос, связь, атомная промышленность, и т.п.), в которых ошибки или недостаточное
качество программного обеспечения могут нанести ущерб, который превышает положительный эффект от их использования. В этих критических случаях недопустимы отклонения и дефекты функционирования математического и программного обеспечения информационно-управляющих систем при любых ошибках исходных данных, сбоях, частичных отказах аппаратуры и других ситуациях.
Исходя из этого, построение многоязыковых трансляторов, что на сегодняшний день является проблемой, могло бы увеличить надежность и отказоустойчивость современного программного обеспечения.
Целью работы является структурная модель синтаксически- управляемого транслятора для языков программирования, использующих единую семантическую базу.
Задачи работы:
• анализ семантической и синтаксической базы современных языков программирования;
• анализ имеющихся подходов построения трансляторов с применением многоязыковости, а также анализ современных инструментальных средств языков программирования;
• разработка структурной модели трансляторов языков программирования, использующих общую семантическую базу;
• построение на основе этой модели генератора трансляторов этого класса.
Научная новизна заключается в обобщенной модели процесса трансляции с учетом «многоязыковости» на основе общей семантики. Данное исследование предполагает возможное использование его результатов как в учебном процессе, так и — в перспективе — для построения программного обеспечения.
Проведя исследования в области семантики современных языков программирования и имеющихся подходов построения трансляторов с применением многоязыковости, а также современные средства языков программирования, можно отметить, что прогресс не стоит на месте. И на сегодняшний день существует уже не малое количество компиляторных технологий, которые позволяют реализовывать синтаксические парсеры включаемых языков в виде проходов или подключаемых модулей.
Но до сих пор не существует трансляторов языков программирования, которые могли бы допускать включения ассемблерного кода более чем одной системы команд, то есть двух и более платформ. И обладая такой возможностью, можно конструировать версии одного и того же модуля для разных платформ, в том числе для вышедших из всеобщего пользования или вновь разрабатываемых, имея «под рукой» уже работающие версии. А также конструировать программные модули для одной платформы, но с использованием ассемблеров разных стилей.
Выделение семантики при разработке стандартов языков программирования, генерация общепринятой семантической базы дают возможность изменить подход к созданию компилирующих систем в целом. В ближайшем будущем любая система, которая использует язык программирования, сможет исполнять программы на различном языке программирования. Трансляция программ с одного языка программирования на другой также станет простейшей задачей. Унификация языков программирования и создание общей семантической базы - это необходимое условие продолжения прогресса в данной области программного обеспечения и в результате всей компьютерной индустрии в целом.