Введение

Американский разработчик программного обеспечения, автор и публичный оратор.

Его книга 1999 года «Рефакторинг» популяризировала практику рефакторинга кода. В 2004 году он представил новый архитектурный шаблон, названный Presentation Model (PM).

Биография

Фаулер родился и вырос в Уолсолле, Англия, где получил среднее образование в школе королевы Марии. Он окончил Лондонский университетский колледж в 1986 году. В 1994 году он переехал в Соединенные Штаты и живёт недалеко от Бостона, штат Массачусетс, в пригороде Мелроуз. Фаулер начал работать с программным обеспечением в начале 1980-х годов. Сразу после окончания университета в 1986 году он начал работать разработчиком программного обеспечения в Coopers & Lybrand до 1991 года. В 2000 году он присоединился к ThoughtWorks, компании, специализирующейся на системной интеграции и консалтинге.

Фаулер является автором девяти книг по разработке программного обеспечения. Он входит в состав Agile Alliance и принимал участие в создании Манифеста гибкой разработки программного обеспечения в 2001 году вместе с 16 другими подписавшими. Он ведёт блики – нечто среднее между блогом и вики. Он популяризировал термин "инъекция зависимостей" как форму инверсии управления.

Публикации

1996 год. Анализ шаблонов: повторно используемые объектные модели. Эддисон Уэсли. 1997 год. UML Distilled: Краткое руководство по стандартному языку объектного моделирования. Эддисон Уэсли. 1999 год. Рефакторинг: улучшение дизайна существующего кода, с Кентом Беком, Джоном Брантом, Уильямом Опдайком и Доном Робертсом (июнь 1999). Эддисон Уэсли. 2000 год. Планирование экстремального программирования. С Кентом Беком. Эддисон Уэсли. 2002 год. Шаблоны архитектуры корпоративных приложений. С Дэвидом Райсом, Мэтью Фомелем, Эдвардом Хиаттом, Робертом Ми и Рэнди Стаффордом. Эддисон Уэсли. 2010 год. Языки, специфичные для предметной области. С Ребеккой Парсонс. Эддисон Уэсли. 2012 год. NoSQL Distilled: Краткое руководство по новому миру полиглотной постоянной памяти. С Прамодом Садалажем. Эддисон Уэсли. 2013 год. Рефакторинг: Ruby Edition. С Кентом Беком, Шейном Харви и Джеем Филдсом. Эддисон Уэсли. 2018 год. Рефакторинг: улучшение дизайна существующего кода, второе издание. Кент Бек и Мартин Фаулер. Эддисон Уэсли.

Языки, специфичные для конкретной области

В своей книге «Доменно-специфические языки» Фаулер обсуждает доменно-специфические языки, DSL. DSL определяются как композируемые языки программирования, ориентированные на конкретную предметную область и обладающие ограниченной выразительностью. Утверждается, что DSL могут повысить производительность, избавляя программиста от необходимости знать полноценный язык программирования, предоставляя средство коммуникации с экспертами в данной области и отделяя способ выполнения задачи от её определения. Эти преимущества сопоставляются с затратами на изучение нового языка и разработку инструментов для него, с риском изоляции, возникающей из-за использования разных языков, а также с тем, что абстракции, используемые в DSL, могут оказаться неподходящими для конкретной задачи. Фаулер вводит понятия внутренней (или встроенной) и внешней DSL, причём внутренняя DSL представляет собой подмножество другого языка и может выполняться инструментами этого внешнего языка. Ruby и Lisp приводятся в качестве примеров языков, в которых часто используются внутренние DSL. Он также вводит понятие семантической модели, определяющей выполнение DSL. В книге представлены различные примеры DSL, включая graphviz – язык для описания графов, предназначенных для визуализации; JMock – фреймворк для мокирования в Java; CSS – язык для определения стилистических элементов веб-сайта; HQL – объектно-реляционный отображатель в Java; XAML – язык для описания и изменения графических пользовательских интерфейсов; FIT – язык для описания тестовых сценариев; и make – инструмент для сборки программного обеспечения.

В книге обсуждается реализация внешней DSL с использованием таких инструментов, как парсеры, лексеры, абстрактные синтаксические деревья и генерация кода, что называется «синтаксически-ориентированным преобразованием». Это противопоставляется «разделительно-ориентированному преобразованию», которое считается более простым, но менее мощным. В этом случае язык достаточно прост для интерпретации путем разделения по разделителям и переключения логики на основе отдельных элементов. Обсуждаются способы реализации внутренних DSL, уделяя внимание вложенным вызовам функций, последовательностям вызовов функций или цепочкам методов и другим методам.