Martin Fowler | |
|---|---|
| Fowler in 2015 | |
| Born | 18 December 1963 Walsall, England, UK |
| Education | University College London (BSc, 1986) [1] |
| Occupations | Software developer, author, public speaker |
| Employer | ThoughtWorks |
| Website | martinfowler |
Martin Fowler (18 December 1963) is a British software developer, [2] author and international public speaker on software development, specialising in object-oriented analysis and design, UML, patterns, and agile software development methodologies, including extreme programming.
His 1999 book Refactoring popularised the practice of code refactoring. [3] In 2004 he introduced a new architectural pattern, called Presentation Model (PM). [4]
Fowler was born and grew up in Walsall, England, where he went to Queen Mary's Grammar School for his secondary education. He graduated at University College London in 1986. In 1994, he moved to the United States, where he lives near Boston, Massachusetts in the suburb of Melrose. [1]
Fowler started working with software in the early 1980s. Out of university in 1986 he started working in software development for Coopers & Lybrand until 1991. [5] In 2000 he joined ThoughtWorks, a systems integration and consulting company, [1] where he is Chief Scientist. [6] [1]
Fowler has written nine books on the topic of software development. He is a member of the Agile Alliance and helped create the Manifesto for Agile Software Development in 2001, along with 16 fellow signatories. [7] He maintains a bliki , a mix of blog and wiki. He popularised the term Dependency Injection as a form of Inversion of Control. [8] [9]
Fowler’s Domain-specific languages discusses small, composable programming languages focused on an individual domain. [10] : 27 He argues that domain-specific languages increase productivity by removing the need for the programmer to understand a full programming language, by improving communication with domain experts, and by separating the execution of a task from its definition. [10] : 33 These benefits are set against the cost of learning a new language and building the tools for this language. [10] : 39
Fowler introduces the concept of internal (or embedded) and external domain-specific languages. An internal language is a subset of another language and can be executed by the tools for this outer language. Ruby and Lisp are given as an example of languages where internal domain-specific languages are common. Fowler also introduces the idea of Semantic Model. [10] : 14 Various domain-specific languages are presented including graphviz, a language for specifying graphs to be rendered; JMock, a java mocking framework; CSS, a language to specify stylistic elements of a website; HQL, an object relational mapper; XAML, a language used to specify and change graphical user interfaces; FIT, a language to express testing scenarios; and make, a tool to build software [10] : 147
The book discusses implementing an external domain-specific language using parsers, lexers, abstract syntax trees and code generation referred to as "syntax-driven translation" [10] : 219 This is contrasted with "delimiter-driven translation" which is simpler but less powerful. Here the language is simple enough to be interpreted by splitting on delimiters and switching logic based on individual entries. [10] : 201
Ways of implementing internal domain-specific languages are discussed, with attention to nested function calls, [10] : 357 sequences of function calls, [10] : 351 or method chaining [10] : 373 .[ citation needed ]