马丁·福勒(软件工程师)

马丁·福勒
福勒在2015年
出生1963年12月18日
英国英国沃尔索尔
教育伦敦大学学院BSC ,1986年)
职业软件开发人员,作者,公众演讲者
雇主思想工作
网站martinfowler.com

马丁·福勒(Martin Fowler,1963年12月18日)是英国软件开发人员,作家和国际公众发言人,专门研究面向对象的分析和设计UML模式敏捷软件开发方法,包括极端编程

他1999年的《重构》推广了代码重构的实践。 2004年,他引入了一种新的建筑模式,称为演示模型(PM)。

福勒(Fowler)在英格兰的沃尔索尔(Walsall)出生并长大,在那里他去了玛丽皇后的语法学校接受中学教育。他于1986年毕业于伦敦大学学院。1994年,他搬到了美国,居住在梅尔罗斯郊区的马萨诸塞州波士顿附近。

福勒(Fowler)于1980年代初开始使用软件。 1986年,他毕业于大学开始为Coopers&Lybrand的软件开发工作。

福勒(Fowler)撰写了九本有关软件开发主题的书。他是敏捷联盟的成员,并在2001年与16个签署人一起帮助制作了敏捷软件开发宣言。他保持了BlikiBlogWiki的混合。他将依赖注入一词推广为控制的一种形式。

出版品

  • 1996年。分析模式:可重复使用的对像模型。 Addison-Wesley。ISBN 0-201-89542-0。
  • 1997年。UML蒸馏:标准对象建模语言的简短指南。 Addison-Wesley。 ISBN 978-0-201-32563-8。
  • 1999年。重构:改善现有代码的设计肯特·贝克(Kent Beck) ,约翰·布兰特(John Brant),威廉·奥普迪克( William Opdyke )和唐·罗伯茨(Don Roberts)(1999年6月)。 Addison-Wesley。 ISBN 0-201-48567-2。
  • 2000年。计划极限编程。与肯特·贝克(Kent Beck) 。 Addison-Wesley。 ISBN 0-201-71091-9。
  • 2002。企业应用程序体系结构的模式。与大卫·赖斯(David Rice),马修·福姆(Matthew Foemmel),爱德华·希特(Edward Hieatt),罗伯特·梅(Robert Mee)和兰迪·斯塔福德(Randy Stafford)。 Addison-Wesley。 ISBN 0-321-12742-0。
  • 2010年。特定于领域的语言。与丽贝卡·帕森斯(Rebecca Parsons)。 Addison-Wesley。 ISBN 978-0-321-71294-3。
  • 2012年。NOSQL蒸馏:简短的多语言持久性世界的指南。与Pramod Sadalage。 Addison-Wesley。 ISBN 978-0-321-82662-6。
  • 2013年。重构:Ruby Edition 。与肯特·贝克(Kent Beck) ,谢恩·哈希(Shane Harvie)和杰伊·菲尔德(Jay Fields)在一起。 Addison-Wesley。 ISBN 978-0-321-98413-5。
  • 2018年。重构:改进现有代码的设计,第二版。肯特·贝克(Kent Beck)和马丁·福勒(Martin Fowler)。 Addison-Wesley。 ISBN 978-0-134-75759-9。

特定于域的语言

在他的书《特定于领域的语言》中,福勒讨论了特定领域的语言,DSL。据说DSL是由可组合的编程语言来定义的,其专注於单个领域和表现力有限。有人认为,DSL可以通过删除程序员的要求来理解完整的编程语言,提供与域专家的交流方式,并将执行任务的执行方式与任务本身的定义区分开来,从而提高生产率。这些好处是针对学习新语言并为这种语言构建工具的成本而设定的,这是针对不同语言产生的孤岛,而DSL中使用的抽像不适合任务。

Fowler介绍了内部(或嵌入式)和外部DSL的概念,内部DSL是DSL,是另一种语言的子集,可以由该外语言的工具执行。 RubyLISP作为内部DSL常见的语言的一个例子。他还介绍了定义DSL执行的语义模型的想法。介绍了DSL的各种示例,包括GraphViz ,一种用于指定要渲染的图形的语言; Jmock,Java嘲笑框架; CSS ,一种指定网站风格元素的语言; HQLJava中的对象关系映射器XAML ,一种用于指定和更改图形用户界面的语言;适合,表达测试方案的语言;并制造,一种构建软件的工具

该书讨论了使用解析器Lexers抽象的语法树代码生成等工具实现外部DSL,称为“语法驱动的翻译”,这与“ Delimiter-driment-driender trive Translation”形成鲜明对比,据说这很简单,但功能较小。在这里,该语言很简单,可以通过对定界符分配并根据各个条目切换逻辑来解释

讨论了实施内部DSL的方式,并注意嵌套功能调用,功能调用序列或其他方法等方法链接