前言
先看下面这段代码:input =~ /d{ 3} -d{ 3}-d{4}/
你是不是会嘲笑一句,不就是个正则表达式匹配,也许你还知道它匹配的是什么。
正则表达式常常由于过于费解而遭受指责,但试想一下,如果你所能够使用的都是普通的正则控制代码,这段模式匹配会变成什么样子。而这段代码跟正则表达式相比,又是何等容易理解,容易修改?
这就是**DSL(Domain-Specific Language,领域特定语言)**想想前面的那段正则表达式,为什么我要在这里给大家说DSL这个东西,因为他的两大优势
1、DSL的第一个优势是它擅长在程序中的某些特定地方发挥作用,并且让它们容易理解,进而提高编写、维护的速度,也会减少bug。
2、DSL的第二个优势就不仅仅限于程序员的范畴了。因为DSL往往短小易读,所以非程序员也能看懂这些驱动他们重要业务的代码。把这些真实的代码暴露在理解该领域的人们面前,可以确保程序员和客户之间有非常顺畅的沟通渠道。
但是当人们说起DSL的时候,他们常说DSL可以让你不再需要程序员。我对这一论调极度不认同,毕竟那是说COBOL的。不过也确实有些语言是由那些自称不是程序员的人来用的,比如CSS。对这种语言来说,读比写要重要得多。如果一个领域专家可以阅读并且理解核心业务代码中的绝大部分,那他就可以跟写这段代码的程序员进行深入细节的交流。
第二个原因是使用DSL并非易事,不过回报也是相当丰厚的。软件开发中最狭窄的瓶颈就是程序员和客户之间的沟