当前位置:首页 > 技术学院 > 基础知识科普站
[导读]所谓领域专用语言(domain specific language / DSL),其基本思想是“求专不求全”,不像通用目的语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言。

所谓领域专用语言(domain specific language / DSL),其基本思想是“求专不求全”,不像通用目的语言那样目标范围涵盖一切软件问题,而是专门针对某一特定问题的计算机语言。DSL之于程序员正如伽南地之于以色列人,是最初也是最终的梦想。几乎自计算机发明伊始,人们就开始谈论DSL使用DSL了。而前几年随着被誉为“Web开发领域专用语言”的Ruby on Rails迅速走红,DSL又一次成为人们讨论的热点话题。很多人都认为,DSL将会是软件业的“next big thing”。然而随着DSL的日益流行,围绕着DSL出现了很多质疑和误解,比如下面这几个:

1. DSL的目标受众是非程序员,业务员或者最终用户在很多人的心中,DSL等同于“非程序员的编程语言”(programminglanguage for non-programmers),因此DSL的最终受众应该是非程序员,一切不直接被最终用户使用的DSL都不是真正的DSL,仅仅是另一种使代码看起来不像代码的无聊技巧。这是一个很有趣的观点,事实上在计算编程语言发展的历史上,的的确确出现过“非程序员的编程语言”,而且还非常有名,它们就是FORTRAN,COBOL这些第一代高级语言。在当时的那个时代,计算机的主要目的是科学计算,而程序员则是专指那些摆弄开关,继电器,纸带以及汇编语言的geek们。而计算机的主要受益者非程序员——也就是那些学者和研究员——不得不委托这些人帮助它们完成从数学公式到机器指令的转换。于是第一代高级语言的主要目的是缩短计算公式和可执行的代码之间的差距(比如Fortran),或者是简化信息管理员的日常工作(比如COBOL)。有趣的是,恰恰是这些当年的“非程序员”把软件开发发展成了一门正当且颇为体面的职业。其实当年的“非程序员的编程语言”与的DSL境况颇为相似,所不同的是,当代企业级信息系统更为复杂,所关注的焦点逐渐从计算转移到数据上,业务领域和计算机的物理过程也不再具有简单直接的对应关系了。

而且随着社会分工细化,就算是通过DSL,我们仍然不太可能把那些衣冠楚楚的HR们,销售们,部门经理们统统拉下水变成新新程序员。我仍然要承认,以最终用户为目标受众的DSL是一个很引人侧目很有意思的主意,但是在相当长的一段时间内都是不太现实的。或许我们需要新的方法(比如精益)来协调IT部门和业务部门,或许我们需要全新的软件工程理论,或者某些非常具有独创性的工作方式。

2.DSL = 整洁的代码这种观点与前面的观点正好相反,把DSL完全当作程序员的游戏,把一切能将代码写得整齐好看的技巧都归结为DSL。虽然从形式上看DSL和“整洁的代码”都具有简洁清晰的特征,但并不能因此将简单将两者草率地归为等同。从概念上说,程序的编写过程就是把业务领域中的问题通过代码或者程序模型表达出来:由于计算机的程序模型较为单一(归根结底都是运算和存储),就算是在面向对象技术成为主流,通常情况下,计算机程序不太可能做到与业务领域中的概念一致,或者具有某些直觉的对应。也这正是因为这样,软件的修改和可维护性并没有想象中的容易。我们必须不断地将业务领域中的概念转换成相应的代码模型,然后再进行修改。这种间接性直接造成了软件的复杂度。而DSL的主要目的就是要消除这样的复杂度(或者说,以构造DSL的复杂度代替这种复杂度),DSL就要是要以贴近业务领域的方式来构造软件。因此,DSL的简洁性往往是一种思维上的简洁性,使我们不用费太多的气力就能看懂代码所对应的业务含义。

从这里我们可以看出DSL和“整洁的代码”的根本不同,“整洁的代码”只是泛泛的要求代码简洁易懂,而不太在意是否贴近业务领域。比如对于一个J2EE开发者来说,DAO,DTO,FormBean,Action已经足够清晰了,但是这却跟DSL沾不上一丝的关联。DSL更注重强调使用业务词汇,尽可能贴近业务模型来编写代码,使业务模型和程序模型之间具有简洁的对应关系。因此我们不能将DSL等同于“整洁的代码”,只能说DSL是一种“整洁的代码”而已。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

2023年10月18日,中国在第三届“一带一路”国际合作高峰论坛期间发布《全球人工智能治理倡议》,围绕人工智能发展、安全、治理三方面系统阐述了人工智能治理中国方案。

关键字: 人工智能 大模型 代码

我们看到这么多的安全问题,部分原因在于我们对待安全的方式:安全性通常被认为是事后考虑的问题,是在开发结束时才添加到设备上的东西。然而,复杂的系统,尤其是嵌入式系统,有一个很大的攻击面,这让攻击者有机可乘,能够在“盔甲”上...

关键字: 代码 嵌入式系统 软件漏洞

新富人群财务需求多元发展,投顾服务迎来新机遇 上海2023年9月20日 /美通社/ -- 2023年9月19日,上海交通大学上海高级金融学院(高金)与全球领先的金融服务机构嘉信理财(Charles Schwab)联合发...

关键字: BSP ADVANCED INA 代码

北京2023年9月14日 /美通社/ -- 生物医药高科技公司诺诚健华(港交所代码:09969;上交所代码:688428)今日宣布,新型蛋白酪氨酸磷酸酶SHP2变构抑制剂ICP-189联用针对表皮生长因子受体(EGFR)...

关键字: IC HP 代码 ARMA

上海2023年9月1日 /美通社/ -- 2023上半年,安集科技(股票代码:688019)市场拓展规划成效显现,营业收入稳健增长。 全球半导体产业挑战持续存在的情形下,安集科技秉承发扬"克难攻坚,敢打硬...

关键字: 安集科技 BSP 代码 半导体材料

国际酒店运营商升级其在线支付功能 上海2023年8月28日 /美通社/ -- 加拿大金融科技公司Nuvei Corporation(以下简称“Nuvei”或“公司”)(纳斯达克代码:NVEI)(多伦多证券交易所代码:N...

关键字: 代码 IP SE 纳斯达克

2023年上半年收入7.459亿元 同比增长5.1% 毛利率水平上升 海外收入同比增长65.4% 香港2023年8月22日 /美通社/ -- 金邦达宝嘉控股有限公司及其附属公司(以下合称「金邦达」、「...

关键字: 数字化 代码 嵌入式软件 COM

我们经常对正在进行数字化转型的亚马逊云科技客户建议,将云迁移视为其数字化转型的一部分,数字化转型本身必须由业务成果驱动。其中治理计划的有效性决定了云迁移和数字化转型的成功与否。数字化转型中的云迁移总有结束的时候,但是如果...

关键字: 代码 数字化 云服务

广州及苏州生产基地产品均实现"出口"零突破 北京2023年8月21日 /美通社/ -- 百济神州(纳斯达克代码:BGNE;香港联交所代码:06160;上交所代码:688235)是一家全球性生物科技公...

关键字: 神州 代码 TI PD

近年来,国内电子公司和芯片设计企业大举进攻汽车、医疗和工业等高可靠应用(mission-critical)领域,为自己找到了摆脱红海的新领域。但是高可靠应用多数都需要功能安全认证,在许多行业在诸如汽车、航空电子、医疗和工...

关键字: 代码 代码分析工具
关闭