Domain Specific Languages
Книга Мартина Фаулера посвящена предметно-ориентированным языкам (DSL) — специализированным языкам, созданным для решения задач в конкретной предметной области. Автор подробно разбирает, что такое DSL, зачем они нужны и какие проблемы помогают решить, а также рассматривает их жизненный цикл и критерии хорошего дизайна.
В первой части книги описываются основные подходы к реализации DSL: внутренние (встроенные в язык программирования) и внешние (собственные синтаксис и парсер). Фаулер приводит примеры на Java, C#, Ruby и других языках, демонстрируя, как создавать выразительные и удобные в использовании DSL.
Особое внимание уделяется альтернативным вычислительным моделям, генерации кода и языковым фабрикам (language workbenches). Читатель узнает, как автоматизировать создание DSL, интегрировать их с существующим кодом и выбирать подходящий подход в зависимости от контекста.
Вторая часть книги представляет собой каталог типовых решений (паттернов) для построения DSL: семантические модели, таблицы символов, контекстные переменные, макросы и другие. Каждый паттерн описан с примерами реализации и рекомендациями по применению.
Третья часть посвящена внешним DSL: разбору текста, синтаксическому анализу, использованию парсеров (включая ANTLR), регулярных выражений и других инструментов. Рассматриваются такие техники, как рекурсивный спуск, парсер-комбинаторы, генераторы парсеров и встраивание кода.
Книга будет полезна разработчикам, архитекторам ПО и всем, кто интересуется созданием специализированных языков для повышения эффективности разработки и улучшения коммуникации с экспертами предметной области.
