Информатика (программирование)
Информатика и вычислительная техника
  • формат djvu
  • размер 5,54 МБ
  • добавлен 26 июля 2014 г.
Фаулер М. Предметно-ориентированные языки программирования
М.: Вильямс, 2011. - 576с.
В этой книге известный эксперт в области программного обеспечения Мартин Фаулер предоставляет информацию, которая поможет вам определиться, следует ли использовать предметно-ориентированные языки для решения стоящих перед вами задач. Если применение предметно-ориентированных языков окажется оправданным, то вам пригодится вторая часть книги, в которой подробно, на конкретных примерах, описаны технологии, применяемые при создании таких языков.
Методы, описанные в данной книге, могут использоваться в большинстве современных объектно-ориентированных языков программирования. В основном примеры в книге написаны на Java и C#, но в некоторых из них использован Ruby. Все главы по возможности организованы в виде самодостаточных частей, а большинство справочных разделов - в знакомом читателю формате описания шаблонов программирования.
При правильном выборе и применении предметно-ориентированные языки могут существенно упростить сложный код, обеспечить эффективное общение с пользователями, повысить производительность и устранить узкие места разработки.
Описание
Вводный пример
Использование предметно-ориентированных языков
Реализация предметно-ориентированных языков
Реализация внутреннего DSL
Реализация внешнего DSL
Выбор между внутренними и внешними DSL
Альтернативные вычислительные модели
Генерация кода
Языковые инструментальные средства
Общие вопросы
Зоопарк DSL
Семантическая модель
Таблица символов
Переменная контекста
Построитель конструкции
Макрос
Уведомление
Вопросы создания внешних DSL
Трансляция, управляемая разделителями
Синтаксически управляемая трансляция
Форма Бэкуса–Наура
Лексический анализатор на основе таблицы регулярных выражений
Синтаксический анализатор на основе рекурсивного спуска
Комбинатор синтаксических анализаторов
Генератор синтаксических анализаторов
Построение дерева
Встроенная трансляция
Встроенная интерпретация
Внешний код
Альтернативная токенизация
Вложенные операторные выражения
Символ новой строки в качестве разделителя
Прочие вопросы
Вопросы создания внутренних DSL
Построитель выражений
Последовательность функций
Вложенные функции
Соединение методов в цепочки
Перенос области видимости в объект
Замыкание
Вложенные замыкания
Список литералов
Ассоциативные массивы литералов
Динамический отклик
Аннотации
Работа с синтаксическим деревом
Класс таблицы символов
Шлифовка текста
Расширение литералов
Альтернативные вычислительные модели
Адаптивная модель
Таблицы принятия решений
Сеть зависимостей
Система правил вывода
Конечный автомат
Генерация кода
Генерация с помощью преобразователя
Шаблонная генерация
Встроенный помощник
Генерация, осведомленная о модели
Генерация, игнорирующая модель
Отделение генерируемого кода с помощью наследования