9.5 小结

好啦,本书的旅程到此结束。我们从所有的方面论证了DSL是一种更好的领域建模方式,又在这一章展望了基于DSL开发的未来趋势。DSL工作台以其涵盖语言完整生命期的工具集合,有望把DSL的演变之路安排得更井井有条。各种编程语言就在我们眼前一天天地提高着它们的表现力,越来越适合作为DSL的宿主语言。不管我们选择哪种语言来开发DSL,都要坚持设计原则,这样才有助于DSL增量、迭代地健康成长。

本书讨论了几种具备优秀的语言特性、特别适合用于设计DSL的JVM语言。它们除了各具特色,充分胜任DSL设计工作以外,又因为都运行在JVM之上,而获得了与Java无障碍互操作的能力。这是一个很大的优点,因为我们可以选择一种语言来满足DSL的需要,但又不会被束缚在唯一一种选定的语言上。

除JVM语言外,还有很多其他语言也被广泛地用于设计DSL。其中领跑的有纯函数式语言Haskell和面向并发编程的Erlang。软件开发圈已经认识到,只有使用那些有能力提供高阶抽象的语言,才是化解领域建模复杂性的唯一出路。而产出优美的、可重用的抽象的途径之一,正是DSL驱动的开发方式。好的DSL可以提高生产力,使代码易于维护和移植,还带给用户一个友善的界面,把所有不必要的细节都隐藏起来。总之DSL就是领域模型该有的样子。今天,我们已经在现实的软件开发中见证了DSL展露的潜力。

要点与最佳实践

  • 基于DSL的应用开发相对来说还是软件行业的一个新课题。请保持对其发展动态的关注

  • 在基于DSL的开发领域,相关的工具支持发展得很快。一一数来,从IDE到原生的DSL工作台,丰富的工具总是能够促进开发生态的发展。

  • 所有获得关注的新语言都有一些可以用在DSL设计上的独到之处。即使我们喜好的语言没有直接提供某些对开发和DSL实现有确凿好处的特性,我们也可以尝试去模拟它们。