
bf92f7820b500d6dbd9b69afbf8698d1.ppt
- Количество слайдов: 19
Парадигмальная декомпозиция определения языка программирования Л. В. Городняя Институт систем информатики СО РАН lidvas@gmail. com
Цель декомпозиции Выделить в описании постановки задачи, представлении методов её решения и определении программы их реализации согласованные фрагменты, образующие компонент такой, что изменение фрагмента постановки задачи затрагивает лишь фрагменты данного компонента.
Область применения Улучшение современных информационных систем Создание новых специализированных проблемноориентированных языков программирования Практичное решение задач разработки надёжных и в то же время удобных и эффективных информационных систем
DSL - domain-specific language Переход к методике конструирования компьютерных языков как средства, позволяющего пользователю, умеющему работать с текстами, таблицами и визуальными оболочками на уровне Word-Excel и Visual-Studio, формировать грамматики, накрывающие пространство понятных решений текущих задач практики применения информационных систем.
Изобразительные средства Макросы Подпрограммы, процедуры, функции Типы данных, структуры, классы объектов Шаблоны, коды Библиотеки, файлы, директории, сайты
Общие методы Модульное программирование Системный анализ постановки задачи Грамотное программирование (Д. Кнут) ООП Экстремальное программирование Функционально-ориентированное проектирование Аспектно-ориентированное программирование Метапрограммирование
Компонентный подход Встроенные библиотеки Промежуточные языки и подъязыки Горизонтальные слои по иерархии понятий Методика вертикального слоения программ — сосредоточенное представление рассредоточенных действий (А. Л. Фуксман) Семантическая система - выделяет тип данных, набор операций над ним и правило применения операций к данным (С. С. Лавров)
Причины затруднений (после стартового успеха) Динамика постановки задачи Расширение круга пользователей Совершенствование аппаратуры Улучшение системных решений
Критерии Квалификация разработчиков (опыт, знания) Сроки и требования к результату Актуальность развёртывания частей Фазы процесса обработки данных Схема управления вычислениями Независимость выполнения действий Функциональное назначение фрагментов (аспекты) Общность методов обработки данных Жизненный цикл проекта (долгоживущие системы) Автономность развития (многократность использования )
Постановка задачи (ЯСП) Описание стандарта (грамматика ЯП) Примеры текстов программ на ЯП Спецификация требований Границы практичности Контрольные тесты-нетесты Документация для пользователя Сценарии применения Особенности вычислений Интерфейс пользователя Совместимость с аппаратурой и др. системами
Проектирование ЯСП Определение (лексика, синтаксис, семантика, прагматика) Разделение: фронт-энд — бэк-энд Выбор (фронт-энд) инструментария и реализационных СД Анализ и оценка подходящих шаблонов кода (бэк-энд) Решение по доработке остального
Результат реализации (ЯСП) Формализмы представления грамматик и алгоритмов Тексты документации БД (тесты и примеры) Программа и её составляющие Сопутствующая обстановка Консультанты и эксперты
Инструменты (ЯСП) Конструкторы лексических и синтаксических анализаторов текста (около 1500 стр. описание стандарта С++) Автоматизированный перевод текста программы на промежуточный язык (фронт-энд) Генератор исполнимого кода программы (бек-энд) Профилировщики Отладчики и оптимизаторы Тестировщики (С++ - более 6000 тестов)
Венская методика определения языков программирования КС ↔ АС → АМ → КМ Перевод в АС и обратно (КС ↔ АС) можно построить автоматически Трансляция (УФ : АС → АМ) - сущность определения семантики Реализационная прагматика (АМ → КМ) часто остаётся без формализации. Выбор АМ влияет на пространство допустимых КМ
Шаги декомпозиции Абстрактная декомпозиция (фронт-энд и бек-энд – горизонтальное слоение по иерархии понятий) Инструментальная декомпозиция (базовая семантика для раскрутки) Семантическая декомпозиция (прикладные семантики по областям применения) Прагматическая декомпозиция по интерфейсу семантики с реализационной прагматикой (семантические системы по методам реализации) Парадигмальная декомпозиция с вариантами реализационной прагматики (вертикальное слоение по взаимосвязям применения)
Категории семантических систем Вычисления (типы данных)
→ ᴲ Int:
Основные → Фундаментальные парадигмы программирования императивное, функциональное, логическое, ООП функциональное, параллельное, императивное, ООП, логическое
Типовой компонент (ЯСП) <фрагмент грамматики ЯП, представление фрагмента на уровне АС и АМ, результаты парадигмальной декомпозиции (абстрактная, инструментальная, семантическая и прагматическая), ряд примеров, тестов-нетестов, сценариев и элементов интерфейса пользователя, варианты шаблонов кода для кодогенератора, средства контроля совместимости кода с обстановкой, средства проверки частичной эквивалентности вариантов >
Заключение Трудоёмкость и жизнеспособность компонентов для долгоживущих, развивающихся и мультипарадигмальных компьютерных языков зависит от того, удаётся ли декомпозировать их определения, включая реализационную прагматику, на парадигма-зависимые варианты реализации отдельных прикладных семантик.