分享

创新工场蔡学镛:领域语言的设计与实践

 rookie 2012-08-15

 【CSDN 现场报道】2010年12月9日,年度收官技术盛宴SD2.0大会在上海光大会展中心国际大酒店隆重开幕。这是自2007年成功举办首届以来,由CSDN 和《程序员》杂志主办的连续第四届SD2.0(软件开发2.0)大会。来自IBM、微软、盛大、FaceBook、阿里巴巴等众多企业的技术领袖全部汇 聚,共同剖析当前IT技术发展大势,分享在各自领域的技术成就与成功秘诀。

创新工场首席布道师、软件架构师蔡学镛,在工具与语言分论坛做了题为《领域语言(DSL)的设计与实践》的主题演讲。

蔡 学镛认为,整个编程正在朝着领域语言(DSL,Domain Specific Language)发展。那么什么是领域,可以理解为特定,特定是专用限定,不可以做别的事情。比如R语言,在统计领域应该比较流行,但是它的功能太强 大,它做的不止是统计,所以它不是一个DSL。

现在我们谈的都是别人家的DSL,我们固然可以用别人家的DSL,但是DSL真正价值是,根据着自己商务需求设计出自己需要的语言。

那 么要如何制作自己的DSL,首先是建造领域模型。哪些领域可以复用,有哪些方法,都要写下来。有了领域模型之后,就能简化DSL的实现,即使脱离DSL也 依然有助于编程。你没有这个设计工具,更好写代码,领域模型的存在价值就是它可以帮助你写代码,即时没有DSL的情况之下。另外,DSL最好具有跨越领域 模型限制的能力。

接 下来是定义DSL。定义DSL需要领域专家和编程专家一同进行。DSL的定义可能会受到领域模型的影响,它是依附于领域模型的。DSL的实践方式可能会影 响能用的类型,所以务必找出领域的关健词,比如说财务就有本金这些关键词。定义语法,这些关键词之间怎么组合,就是它的语法,把这个规则订出来,当这些都 完成了,语言就订立出来了。不要把这个想的很困难,一般情况下跟一个编程语言是不一样的,其难度非常低。

设定出来自己领域模型,DSL要怎么实现它呢?蔡学镛认为可以有五种方式:

一、自己写Parser,但通常比较难,好处就是可以做任何事情不受限制。

二、使用XML,就无须写Parser,不过缺点也很明显,限制很大,要求结构,数据变化大。

三、使用语言自己的DSL机制,但需要语言本身的支持。

四、使用ANTLR等code Gen工具。它可以帮你产生Java的代码,或者产生其他语言的代码。

五、使用MPS专门为DSL设计出来的开发平台。通过它不仅可以轻易的把DSL开发出来,甚至连文字编辑器都有了。

最后蔡学镛总结到,领域语言使用范围很广,领域语言很实用且优点显著。领域框架的建立,对于领域语言相当重要。建立领域框架之后,即使不使用DSL,仍会为系统开发带来相当大的好处。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多