Zeyu 2024-1-4 9:20
马丁福勒的领域特定语言DSL是否有阅读的价值?属于伪创新吗?
UMLChina潘加宇
这个问题就有点伪创新
,让人误以为DSL是Fowler发明的(粉丝日常惊呼:竟然不是!)。
问题应该是:
1. 马丁福勒写的《领域特定语言》是否有阅读的价值?
2. DSL属于伪创新吗?
问题1的回答:
Fowler的书写于2010年,是一本DSL的普及书籍,不反对阅读。
问题2的回答:
DSL不是伪创新,和其他各种“模型驱动”一样,是提高软件复用级别的路线之一。它把领域知识组织成“语言”的形式,构造一门DSL和构造一门编程语言没有本质区别。
UML可以看作软件建模领域的一门DSL。
DSL的概念早就存在,Fowler在书的前言中也说:
图1 摘自《领域特定语言》,Martin Fowler,英文原书出版于2010年
图2摘自1986年的某期IEEE Expert,文章介绍了Lockheed(洛克希德)公司的软件技术中心。
图2 摘自IEEE Expert, November 1986
文章中除了提到“领域特定语言”、“代码生成”之外,还提到了“基于AI的软件开发环境”!
★注意,公司名只有Lockheed,后面没有Martin。要等到1995年,Lockheed才和Martin Marietta合并为Lockheed Martin。
**********
天下没有免费的午餐。把各种复杂领域知识和逻辑组织成“语言”,难度要比用UML画画类图要高。大多数人建模都还搞不定呢,还搞什么元建模。网络上那些教你轻松创建DSL的文章和教你轻松用EA画类图是一样的,是很轻松,但离真正解决问题还很远。
**********
还是要提一下:
DSL不是伪创新,但如果某位热衷于DDD的人士和你谈DSL,那可就不敢保证了。
就像量子物理不是伪创新,但如果一位文科教授写了一篇量子物理论文,或者谷爱凌发了一个量子物理教学视频,那得留个心眼。
图3 谷爱凌微博截图
**********
搜素了一下2001-2005年间的《非程序员》,里面也有一些DSL的内容: