【自答】如何评价王垠《聊聊 DSL》?

描述的现状值得深思,而不是简单推出“自研 DSL 没有意义”。

首先,设计出完善的业务相关 API,是个一直以来意义和挑战都被低估的任务。API 其实可以看成一套受限于通用语言功能的 DSL。

假如难以由 API 实现业务需求,则说明使用的通用语言并没有那么通用,或者扩展它的代价太高。

如果已完成 API,或者说通过完成 API 验证了业务需求分析,接下来的 DSL 设计,则主要是为提升人机交互的体验。其中包括更易读的代码、更及时和易懂的反馈信息、更顺滑的开发过程等。而这些,其实也是通用语言尚待完善的重要方向。

个人看自研 DSL 的一些意义:

  • 业务相关 API 是很合适的前置任务。即便止步于此,也可提高自研 API 的水平
  • 为从 API 更顺利地过渡到 DSL 以及增量改进而设计(最好是语言无关的)辅助工具
  • 催生更通用的语言与语言工具,包括更佳通用可读性、易于扩展、人机交互等

像任何新工具,不应因为很多人设计出来的工具不顺手而忽视工具的潜在益处和市场需求。各种不那么成功的尝试应该为后来者提供教训和参考。

更何况,个人认为尝试自研 API 和 DSL 的开发者比例还是低了,尤其在国内。