2011г.
Количество страниц: 576
В этой книге известный эксперт в области программного обеспечения Мартин Фаулер предоставляет информацию, которая поможет вам определиться, следует ли использовать предметно-ориентированные языки для решения стоящих перед вами задач. Если применение предметно- ориентированных языков окажется оправданным, то вам пригодится вторая часть книги, в которой подробно, на конкретных примерах, описаны технологии, применяемые при создании таких языков.
Методы, описанные в данной книге, могут использоваться в большинстве современных объектно-ориентированных языков программирования. В основном примеры в книге написаны на Java и C#, но в некоторых из них использован Ruby. Все главы по возможности организованы в виде самодостаточных частей, а большинство справочных разделов — в знакомом читателю формате описания шаблонов программирования.
При правильном выборе и применении предметно-ориентированные языки могут существенно упростить сложный код, обеспечить эффективное общение с пользователями, повысить производительность и устранить узкие места разработки. В этой книге известный эксперт в области программного обеспечения Мартин Фаулер предоставляет информацию, которая поможет вам определиться, следует ли использовать предметно-ориентированные языки для решения стоящих перед вами задач. Если применение предметно-ориентированных языков окажется оправданным, то вам пригодится вторая часть книги, в которой подробно, на конкретных примерах, описаны технологии, применяемые при создании таких языков.
Данная книга, по сути, представляет две книги под одной обложкой. Фаулер начинает с обзора общих принципов и концепций, лежащих в основе предметно-ориентированных языков программирования. Читатели узнают, как работают предметно-ориентированные языки, как добиться, чтобы с пользовательским синтаксисом предметно-ориентированного языка было проще работать, чем с синтаксисом таких альтернатив, как XML. Затем автор переходит к подробному рассмотрению примеров, которые помогут разработчикам лучше понять, когда и как использовать ту или иную методику. Фаулер рассматривает как внутренние, так и внешние предметно-ориентированные языки, а также альтернативные вычислительные модели, генерацию кода и другие темы.
Методы, описанные в данной книге, могут использоваться в большинстве современных объектно-ориентированных языков программирования. В основном примеры в книге написаны на Java и C#, но в некоторых из них использован Ruby. Все главы по возможности организованы в виде самодостаточных частей, а большинство справочных разделов — в знакомом читателю формате описания шаблонов программирования.
Из этой книги разработчики получат достаточно информации для того, чтобы принять обоснованное решение об использовании предметно-ориентированных языков в своей работе, а также извлечь из их применения максимальную пользу.
В книге освещены следующие темы.
- Сравнение предметно-ориентированных языков с различными схемами и библиотеками, а также решение вопроса о достаточных альтернативах
- Применение синтаксических анализаторов и генераторов синтаксических анализаторов, синтаксический анализ внешних предметно-ориентированных языков
- Изучение, сравнение и выбор языковых конструкций предметно-ориентированных языков
- Применение генерации кода и сравнение стратегий генерации кода
- Языковые инструментальные средства для создания предметно-ориентированных языков
Книга предназначена, в первую очередь, для профессионалов в области разработки программного обеспечения, но будет интересна и полезна и начинающим программистам. Особо следует отметить, что большая часть описываемых методик применима не только для создания предметно- ориентированных языков, хотя все эти технологии рассматриваются именно в данном контексте. Книга снабжена массой перекрестных ссылок, что упрощает поиск необходимого материала.
Об авторе
Мартин Фаулер - ведущий научный сотрудник ThoughtWorks. Сам о себе он пишет так: "Автор, консультант, лектор и просто крикун в области разработки программного обеспечения. Сферой моих интересов является разработка крупномасштабного программного обеспечения, где особую роль играет хорошее проектирование". Фаулер — автор таких бестселлеров, как Шаблоны корпоративных приложений, UML Distilled, а также (в соавторстве) Refactoring: Improving the Design of Existing Code.
Оглавление книги
"Предметно-ориентированные языки программирования (Signature Series)"
Об авторах
Предисловие
Часть I. Описание
Глава 1. Вводный пример
Глава 2. Использование предметно-ориентированных языков
Глава 3. Реализация предметно-ориентированных языков
Глава 4. Реализация внутреннего DSL
Глава 5. Реализация внешнего DSL
Глава 6. Выбор между внутренними и внешними DSL
Глава 7. Альтернативные вычислительные модели
Глава 8. Генерация кода
Глава 9. Языковые инструментальные средства
Часть II. Общие вопросы
Глава 10. Зоопарк DSL
Глава 11. Семантическая модель
Глава 12. Таблица символов
Глава 13. Переменная контекста
Глава 14. Построитель конструкции
Глава 15. Макрос
Глава 16. Уведомление
Часть III. Вопросы создания внешних DSL
Глава 17. Трансляция, управляемая разделителями
Глава 18. Синтаксически управляемая трансляция
Глава 19. Форма Бэкуса–Наура
Глава 20. Лексический анализатор на основе таблицы регулярных выражений
Глава 21. Синтаксический анализатор на основе рекурсивного спуска
Глава 22. Комбинатор синтаксических анализаторов
Глава 23. Генератор синтаксических анализаторов
Глава 24. Построение дерева
Глава 25. Встроенная трансляция
Глава 26. Встроенная интерпретация
Глава 27. Внешний код
Глава 28. Альтернативная токенизация
Глава 29. Вложенные операторные выражения
Глава 30. Символ новой строки в качестве разделителя
Глава 31. Прочие вопросы
Часть IV. Вопросы создания внутренних DSL
Глава 32. Построитель выражений
Глава 33. Последовательность функций
Глава 34. Вложенные функции
Глава 35. Соединение методов в цепочки
Глава 36. Перенос области видимости в объект
Глава 37. Замыкание
Глава 38. Вложенные замыкания
Глава 39. Список литералов
Глава 40. Ассоциативные массивы литералов
Глава 41. Динамический отклик
Глава 42. Аннотации
Глава 43. Работа с синтаксическим деревом
Глава 44. Класс таблицы символов
Глава 45. Шлифовка текста
Глава 46. Расширение литералов
Часть V. Альтернативные вычислительные модели
Глава 47. Адаптивная модель
Глава 48. Таблицы принятия решений
Глава 49. Сеть зависимостей
Глава 50. Система правил вывода
Глава 51. Конечный автомат
Часть VI. Генерация кода
Глава 52. Генерация с помощью преобразователя
Глава 53. Шаблонная генерация
Глава 54. Встроенный помощник
Глава 55. Генерация, осведомленная о модели
Глава 56. Генерация, игнорирующая модель
Глава 57. Отделение генерируемого кода с помощью наследования