领域特定语言

最新书摘:
  • Marvin不慌
    2022-07-19
    DSL由来已久,但直到近些年,人们对它的兴趣才有了显著的提升。与之同时,我决定用几年的时间写这本书。为什么呢?虽然我不知道自己是否可以给这一现象提供一个权威的解释,但我可以分享一下自己的观点。在千禧年到来的时候,编程语言世界中(至少在我的企业软件世界中)出现了一种势不可挡的标准化的观念。先是Java,它在几年的时间里风光无限。即使后来微软推出的C#挑战了Java的统治地位,这个新生者依然是一门与Java很相似的语言。新时代的软件开发被编译型的、静态的、面向对象的、语法格式与C类似的语言统治着。(甚至连Visual Basic都被弄得尽可能地看起来接近这些性质。)但人们很快发现,并不是所有的事情都能在Java/C#的霸权下良好运作。有些重要的逻辑用这些语言不能很好地实现,于是XML配置文件兴起了。不久之后,程序员就开玩笑说,他们写的XML代码比Java/C#代码都多。这固然有一部分原因是想在运行时改变系统行为,但也体现了另一种用更容易定制的方式来表达系统行为的各个方面的想法。XML的语法虽然十分烦琐,但确实可以让你定义自己的词汇,而目提供了非常强大的层次结构。不过后来人们实在忍受不了XML的烦琐了。人们抱怨尖括号刺伤了他们的双眼。他们希望既能够享受 XML配置文件带来的好处,又不用承受XML的代价。到了21世纪的头十年,Ruby on Rails横空出世。不管Rails这个实用平台在历史上会占据什么样的位置(我觉得Rails确实是一个优秀的平台),它都已经给人们对框架和库的认识造成了深远的影响。Ruby社区有一种很重要的做事方式:让一切显得更加连贯。换句话说,在调用库的时候,就像用一种专门的语言进行编程一样,这不禁让我们想起一门古老的编程语言——Lisp,这种方式也让人看到了在Java/C#这片坚硬的土地上绽开的花朵:在这两门语言中,连贯接口(fluent i...