博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《领域特定语言》一2.6 设计优良的DSL从何而来
阅读量:6298 次
发布时间:2019-06-22

本文共 683 字,大约阅读时间需要 2 分钟。

2.6 设计优良的DSL从何而来

审核本书的人常常问我,有没有一些“设计优良语言”的技巧。毕竟,语言设计很特别,我们不希望这个世界上充斥着糟糕的语言。我想分享一些好的建议,但我坦白,真没什么好办法。

如同任何写作一样,DSL的总体目标就是对读者要清晰。我们希望本书的典型读者,可能是程序员,抑或是领域专家,能够尽可能快速清晰地理解DSL里句子的意图。虽然我觉得可能无法告诉你如何做到这一点,但是我的确觉得在工作中牢记这一点非常有价值。
总的说来,我是迭代设计的粉丝,这次也不例外。尽早从目标受众那里获得反馈。准备多种方案,看看人们的反应。要得到一种好的语言,总会经历尝试和失败,不要怕走弯路。尝试得越多,越有可能走上正确的道路。
不要担心在DSL以及“语义模型”(第11章)里用到领域中的术语。如果DSL的用户熟悉这些术语,他们就应该在DSL里看见。术语有助于增进领域内的沟通,即便对外人来说有些奇怪。
此外,还要记得采用我们日常生活里的通用约定。如果每个人都用Java或C#,就用“//”表示注释,用“{”和“}”表示分层结构。
还有一点,我觉得需要特别警示一下:不要试图让DSL读起来像自然语言。为了这个效果,有人用通用语言做过各种尝试,Applescript是其中最著名的例子。问题在于,这种尝试会引入很多语法糖,这会增加语义理解的难度。记住,DSL是一种程序设计语言,所以,使用它感觉应该像编程,同自然语言相比,程序设计语言应该更加简洁且准确。尝试让程序设计语言看上去像自然语言,只会让大脑陷入错误的上下文;同程序打交道时,务必记住,你得按程序的规矩办事儿。

转载地址:http://ruqta.baihongyu.com/

你可能感兴趣的文章
开发检测MySQL主从同步插件
查看>>
[转]掌握Ajax 第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 [IBM]
查看>>
663. Equal Tree Partition
查看>>
python3与python2的编码问题
查看>>
CentOS7 开放端口
查看>>
Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
查看>>
RGB颜色 对照表
查看>>
58.圆角图片
查看>>
ROS(机器人操作系统)相关问题合辑【长期稳定更新】
查看>>
(转)Objective-C中的instancetype和id区别
查看>>
JavaWeb学习笔记①——Java向下转型在JavaEE中运用——登陆验证
查看>>
第二章 在HTML中使用JavaScript
查看>>
spring 获取配置文件的值
查看>>
ajax查询数据返回结果不变
查看>>
实验楼第二次试验报告
查看>>
java IO机制
查看>>
task一个任务结束后执行另一个操作
查看>>
MVC 视图与控制器传值的几种方法
查看>>
STL优先队列模板
查看>>
The UVALIVE 7716 二维区间第k小
查看>>