免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 12863 | 回复: 23
打印 上一主题 下一主题

[书评] 领域特定语言:过去,现在和未来(获奖名单已公布2013-5-6) [复制链接]

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-16 10:20 |只看该作者 |倒序浏览
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4079859-1-1.html

在多年之前,DSL(Domain–Specific Language,领域特定语言)就已经成了程序世界中的一员。随便找个UNIX或者Lisp老手问问,他一定会跟你滔滔不绝地谈起DSL是怎么成为他的镇宅之宝的,直到你被烦得痛不欲生为止。但即便这样,DSL却从未成为计算领域的一大亮点。大多数人都是从别人那里学到DSL,而且只学到了有限的几种技术。

造成DSL流行的原因有很多,首先, 提升开发人员的生产力;其次,增进与领域专家之间的沟通。如果DSL选择得当,就可以使一段复杂的代码变得清晰易懂,在使用这段代码时提高程序员的工作效率。同时,如果DSL选择得当,就可以使一段普通的文字既可以当做可执行的软件,又可以充当功能描述,让领域专家能理解他们的想法是如何在系统中得到体现的,开发者和领域专家的沟通也会更加顺畅。增进沟通比起工作效率提升困难了一些,但带来的效果却更为显著。因为它可以帮助我们打通软件开发中最狭窄的瓶颈─程序员和客户之间的沟通。  

但是您是否在工作中使用DSL,以及选择哪一种DSL技术,这是个值得思考的问题。

本期话题:
1、您所在的团队是否在使用DSL,为什么?
2、您所期待的理想的DSL技术应该是什么样的,将来的趋势会是怎样?

本期嘉宾:ChinaUnix论坛Python版块版主:smallfish_xy

本期奖品:
最佳积极参与经验分享奖5名,奖励价值89元的《领域特定语言》图书一本
参与讨论的其他会员,获得社区积分20分

图书简介:

作者: Martin Fowler
原作名: Domain-Specific Languages
isbn: 7111413059
书名: 领域特定语言
页数: 488
译者: ThoughtWorks中国
定价: 89.00元
出版社: 机械工业出版社华章公司
装帧: 平装
出版年: 2013-3-20

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
2 [报告]
发表于 2013-04-16 13:45 |只看该作者
没听过这个东西啊。

论坛徽章:
32
CU大牛徽章
日期:2013-05-20 10:45:13每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:21
3 [报告]
发表于 2013-04-16 13:57 |只看该作者
1、您所在的团队是否在使用DSL,为什么?
肯定在使用嘛。要判断是否在使用DSL,那么一定要清楚什么是DSL。DSL是:A computer programming language of limited expressiveness focused on a particular domain. 不太好译,领会其意思即可。在计算机领域,使用到DSL的地方太多了,很多时候我们并没有意识到。比如我们安装MySQL后,通常会修改my.ini(或my.cnf)配置文件,这个配置文件就是DSL文件;我们处理字符串会用到正则表达式,这些正则表达式就是DSL。
DSL的特征:
1) 专注于特定的领域;
2) 易读、简单;
3) 功能单一;
4) 代码简洁。
用上面的特征进行判断,你会发现很多地方都用到了DSL。


2、您所期待的理想的DSL技术应该是什么样的,将来的趋势会是怎样?
DSL即领域特定语言,Domain Specific Languages,它并非一个全新的概念,而是对现有技术、现有开发设计思想的一个提炼和总结。DSL可以说是一种隐性的知识和设计开发技巧。
我心目中理想的DSL技术是“编程语言的语言”,可以用DSL对任意一种编程语言进行定义、归纳、描述、分析和解析。
DSL原本就广泛使用于现有的计算机领域中,通过DSL技术的归纳和推广,未来我们对DSL的使用和应用会更加广阔,我看好DSL的前景。

论坛徽章:
9
CU大牛徽章
日期:2013-04-17 11:06:23CU大牛徽章
日期:2013-04-17 11:08:52CU大牛徽章
日期:2013-04-17 11:09:10CU大牛徽章
日期:2013-04-17 11:09:40CU大牛徽章
日期:2013-04-17 11:09:57CU大牛徽章
日期:2013-04-17 11:10:17CU大牛徽章
日期:2013-05-20 10:43:41CU大牛徽章
日期:2013-05-20 10:44:06CU大牛徽章
日期:2013-05-20 10:44:16
4 [报告]
发表于 2013-04-16 15:20 |只看该作者
1、您所在的团队是否在使用DSL,为什么?
使用了,就像定义proto文件,生成控制台各种命令的代码,就像我们在c++中嵌入perl我也把perl当成一种DSL了,方便快捷地完成逻辑并测试。

2、您所期待的理想的DSL技术应该是什么样的,将来的趋势会是怎样?
应该像antlr一样,开源,不过应该能支持生成更多语言解释器,然后规则定义越来越简单,再然后慢慢演变成工业标准,无需费力学习多种生成规则,期待标准出现。

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
5 [报告]
发表于 2013-04-16 16:47 |只看该作者
ecjtubaowp 发表于 2013-04-16 13:45
没听过这个东西啊。


老五落伍了啊,呵呵

论坛徽章:
4
CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2014-02-10 17:22:57技术图书徽章
日期:2014-02-18 08:44:12技术图书徽章
日期:2014-04-29 14:15:42
6 [报告]
发表于 2013-04-16 17:02 |只看该作者
不懂DSL
这本书的作者很牛叉...

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
7 [报告]
发表于 2013-04-16 17:59 |只看该作者
1、您所在的团队是否在使用DSL,为什么?
看了三楼的解释才知道原来我们一直用的 SQL 就是 DSL,各种脚本就是 DSL。

2、您所期待的理想的DSL技术应该是什么样的,将来的趋势会是怎样?
既然是领域特定语言,那么它应该在相应的领域里效果最好、效率最高、使用最简洁、描述能力最强。
比如说用 SQL 查询得到一个数据结果,写出来的语句那是高度的浓缩了,要是用C/C++来写应该繁杂很多。
将来的趋势自然是各种领域语言争相出现,百花齐放,并且不断进步,朝着效果最好、效率最高、使用最简洁、描述能力最强的方向进步。

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
8 [报告]
发表于 2013-04-17 01:04 |只看该作者
本帖最后由 gvim 于 2013-04-17 01:19 编辑

1 您所在的团队是否在使用DSL,为什么?
针对工具和服务的几乎每天都会用,没有为什么,不用不行啊,比如各种配置文件就是工具软件的DSL,自己解析,自己处理流程。是否号称我们使用了DSL还是看每个号称的人对DSL的解释。

2、您所期待的理想的DSL技术应该是什么样的,将来的趋势会是怎样?
D 虽然说是领域,可没有规定什么是领域,领域有哪些性质,也没规定领域的规模,更没有规定领域的覆盖范围。DSL一定是和某个领域相关,狭义看就是业务领域,那么SQL,正则这些都不能算DSL。比如R语言,你说他是DSL对,他面向数据处理领域,这个语言做不了操作系统,你说他不是DSL也对,他不面向一个具体的数据处理业务或者说不提供面向一个具体业务领域的方法来处理数据,类似的也包括SQL,正则表达式。广义看那范围就可以很大,所有语言都可以号称是DSL,C/C++语言当然是面向计算机编程领域的一门语言。

网络服务器的各种配置文件和命令方式就是吃饭的工具。DSL定义的本身也是莎翁笔下的汉姆雷特。比如UML,通用建模语言,虽然有通用二字,却针对的是软件建模领域,也可称为DSL吧,这个我们用的较多。就如同UML的L是图形一般,没有说 DSL的“L”一定要是代码。比如数电模电书上的各种器件图就是电子设计行业的DSL,protel的各种线路元素,器件元素就是电子板设计领域的DSL,或者业务流软件的图像如汇聚点,业务点等。我们尝试过针对行业的图形原型,和客户的交流效果还不错。我们自己做的所谓的DSL,也是在通用图形/语言的基础上包装,和客户沟通共同确定其表示的意义,比如针对某行业我们会用viso绘制他们自己的业务元素,有点像手机图标,目的是一看就知道这个表示哪个东西或者在这里做了什么事情。字符形式的DSL只是我们内部需要的时候辅助编程用,不针对客户暴露,套用一句时髦的原因:不符合中国国情。大部门客户能给你时间交流已经算配合了,能看PPT的绝不看WORD,他们根本不想进行所谓的任何输入,最好的情况是口述,让别人去做,实在要自己做的能用鼠标绝不敲键盘,能点击一下完成的一些客户就不希望多点两下。通过客户的领域要求了,再根据这些领域元素描述的东西编码成计算机程序。

理想的DSL就是不要编程,少敲代码,妥妥拽拽一个领域模型就出来了。
趋势的话,当然是希望能出现标准的自动化,或者说DSL的元语言。比如我针对某个行业做了各种行业元素,然后配上各种业务流程,然后点一个按钮,bingo计算机代码就自动生成了。换一个行业我还可以用这个DSL的元语言生成特定的DSL,甚至复用前一个行业的业务元素,再点一个按钮,bingo计算机代码又出来了。  

论坛徽章:
13
CU大牛徽章
日期:2013-04-17 11:20:3615-16赛季CBA联赛之吉林
日期:2017-05-25 16:45:4715-16赛季CBA联赛之福建
日期:2017-03-13 11:33:442017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:13:29IT运维版块每日发帖之星
日期:2016-03-15 06:20:01IT运维版块每日发帖之星
日期:2015-10-02 06:20:00CU十二周年纪念徽章
日期:2013-10-24 15:41:34CU大牛徽章
日期:2013-09-18 15:15:45CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-04-17 11:46:39CU大牛徽章
日期:2013-04-17 11:46:28
9 [报告]
发表于 2013-04-17 10:22 |只看该作者
1、您所在的团队是否在使用DSL,为什么?
      排除前述人员介绍的脚本、配置等作为DSL,我们工作中用到的DSL其实就不多了,因为当前业务逻辑还没有复杂到需要特定的描述,大多采用的是自然语言描述。

2、您所期待的理想的DSL技术应该是什么样的,将来的趋势会是怎样?
      楼上提到DSL就是不要编程,我觉得不算合理,因为DSL严格来说就是一种特定的“程序语言”,不编程拿程序语言干什么?不过DSL作为特定领域的编程语言,必然是需要封装大量领域内常见运行模式的,而且这些模式需要有一定的原子性、封装性,使得这些模式在完成该领域工作时是必须的,这样运用DSL的时候就可以直接组合这些模式,搭建出基本业务框架了,再在关键地方根据情况作为出业务逻辑判断,就成为了一个可用的业务工作环境(流程)了。
      当然这样的工作还需要对业务进行深度的研究探索、这样才能制定出合适的DSL和相应的原子模块。这就是DSL发展的方向。

论坛徽章:
31
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43CU十二周年纪念徽章
日期:2013-10-24 15:41:34丑牛
日期:2013-12-01 10:11:07水瓶座
日期:2014-01-15 08:47:25
10 [报告]
发表于 2013-04-17 15:29 |只看该作者
send_linux 发表于 2013-04-16 16:47
老五落伍了啊,呵呵


我猜测是老五没有反映过来。

我第一感觉也是不认识这个东西。

看过前面几楼的回复后,发现其实工作当中还真常用。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP