关于DSL(domain-specific language)的幻想

本文探讨了编程语言在信息系统构建中的作用,并对比了传统代码开发与领域特定语言(DSL)的优势。作者认为,虽然代码行是对业务蓝图的描述而非直接的知识表达,但DSL能够简化特定领域的开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在使用各种框架开发的岁月中,对编写代码有很多看法。这些看法对语言设计者或对所谓开发平台设计者而言大概就是需求了。我的这么些看法往往也是一种直观的感受,到了开发平台设计者那也许就能联想创造出一套设计概念来。千千万万的程序员,老的少的,这么多想法真就能促使着开发工具的进化。不过不是所有想法都是正确的认识。现在有些java老手们在开发的时候已经很厌烦java了,说用一行行的代码去构建信息系统实在不直接。他们说你看那一行行的代码不就是要帮助人存一下知识,哪天能查一下这些知识,信息系统搞来搞去不就是这么点事,这么简单的事还得用一行行代码表达太罗嗦也不直观。我觉得这种说法有点偏颇。

不论用什么开发语言开发的信息系统,其实里面的一行行代码并不是在纯粹描述人类的认知,不是在描述那种纯粹的业务知识,而是在从信息系统的角度出发所作的描述。你看,需求分析完了,再到设计,设计完了的结果是什么界面,点什么按钮,怎么处理数据,存起来还是发邮件等这样的未来的信息系统蓝图,这个蓝图才是一行行代码的描述目标。这样描述出来的信息系统,提供给用户的是各种功能,用户通过这提供的各种功能,才完成他们的认知方面的需求。

没错,你看任何一个java实现的业务系统,那些代码的变量的命名,都是业务上的名称,似乎就是在用机器的代码在表达人类的认知,但其实这个认知是“二阶”的,是关于信息系统蓝图的认知。

那么如果你要做一个类似人工智能系统,能输入一些人类的业务知识表达,日后机器能够给你推导出或查询出一些知识的表达视图来,则这样的系统确实能够满足人们大部分信息化的需求;可是实际客户往往不是这么单一的需求,人们想利用信息系统做事情的手段和花样多得呢,像自动发个邮件啦,或者呈现个漂亮的报表了,搞个单据审批了,这些东西层出不穷,是和“知识管理”这种功能并行的。

所以你说用代码开发出一个可以方便的描述知识并能查询能推理新知识的智能系统,甚至客户自己都可以借此系统去描述自己的认知体系,马上能得到输入查询推理的功能,那真是不错;但是你说想基于此智能系统解决客户需求而取代java或者代码开发,那你就不能停留在针对业务知识的智能系统,你得开发一个能够写机器指令的智能系统,客户自己描述想怎么借助计算机玩什么花样,即借此智能系统描述“二阶”认知,然后智能系统自动推理出能在机器上运行的指令,这样才对。

那么摆脱这个误区后,我觉得想通过DSL"取代"java的喊声更可取一些。毕竟jdk那些东西是提炼的通用的东西,我们都知道一种东西如果提炼一下就变得很灵通,但要要表达原来的样子就会要很多组合啊之类的,这就像什么阴阳八卦生万象什么的。面向一个专门的领域比如表达玩email的花样,那么就给个简单的email-DSL,比如Send{netbaixc@gmail.com,"你好"}嘿,大部分就成了,不用再去想jml包了,多省事也好读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值