如何设计一门领域特定语言?

0 阅读1分钟

领域特定语言,又可以称为领域专用语言或者领域特定语言。 

 目前,计算机编程语言的种类众多,常见的有C、C++、Java、Python等。

 这些编程语言都各有特点。从应用范围上划分,个人大致讲它们划分成两种:通用型和领域型。

 刚才提到的C、C++、Java,Python等,属于通用型,程序员可以用它们来开发各种软件系统。 

 而领域型语言,他们专门为减少某项功能的开发难度而设计,比如SQL和Matlab等。 

 SQL用于处理结构化数据,Matlab用来做科学计算,都比通用型语言简洁方便。 

 目前通用型语言已经很强大,我们没有太多必要再去创造一门通用型语言。 

 领域型语言是否有较大的应用场景?是值得我们去思考的问题。 

 接下来,我们探讨如何去设计一门领域特定语言。 

 个人认为,领域特定语言的设计,应遵循以下几个原则: 

 1、领域特定语言应该尽可能小的限定其处理的业务范围; 

 2、领域特定语言处理的业务范围内,业务对象的类型不宜太多,且含义具体;

 3、保留一般编程语言都有的,判断、循环、函数三大基本功能;

 这几个原则是什么意思? 即设计一门领域特定语言,重点在于“领域”两个字,最好是一句话能说清楚的领域。 

 比如刚才的SQL语言,领域是处理结构化数据,Matlab领域是科学计算。

 一旦确定了业务领域,领域内就可以继续确定拥有具体含义的业务对象。 

 比如:SQL中的表和字段,Matlab中的矩阵和复数等,且对象的类型不会太多。 

 得到类型不多的对象之后,我们便可以对不同类型的对象设计简洁的表达与互动方式。

 比如,SQL中的表和字段,都可以对用一个字符串表示,表与表之间的字段关联,可以简单地用等号表示。

 极大地提升了SQL在处理结构化数据时,语义表达的简洁性和可读性。 

 学习和熟悉一门通用型语言往往需要耗费大量的时间和精力,而领域特定语言由于自身的局限性,会出现种类的多样性。 

是否足够简洁直观,能让用户很快的学习上手,是一门领域特定语言设计是否成功的重要指标。 

 除了确定领域之外,领域特定语言还应该保留编程语言的共同要素:判断、循环和函数。

比如SQL可以开发出存储过程或者函数。 

 领域特定语言的总体设计思想就讲到这里。