写点什么

DSL:单一语言开发的终结者?

  • 2007-08-08
  • 本文字数:1347 字

    阅读完需:约 4 分钟

许多年以来,对于软件项目,企业软件开发的主流实践一直都倾向于在单一的通用编程语言上进行标准化,从而使得 Java 和 C#成为今天编程语言的主流选择。随着越来越多的目光开始投向 DSL,也许我们的前脚已经踏在了一道新的门槛之上,向前望去,我们会发现在软件项目中采用多种语言已经成为一个标准,但 80 年代和 90 年代初出现的问题不会重现。

Martin Fowler提出,也许我们正在迈进这样的一个新时期

[……] 在这个时期内,我们将见证多种语言在同一个项目上的应用,人们就像现在选择框架一样,根据功能来选择相应的语言。

Fowler 称:“像 Hibernate、Struts 和 ADO 这样的大型框架,给人们在学习上带来的挑战,绝不亚于学习一门语言,即便你在单一一门宿主语言上使用这些框架编程也是如此。”此外,在它们的宿主语言中表述需求的难度可能会相当大,并可能引出笨拙难用的配置文件,“这些配置文件实际上就是使用 XML 写的外部领域特定语言”。

在语言中嵌入 DSL,而不是使用类库,可能会是一个更为合适的解决方案。Martin 给出了这样的一个分析结论:“API 就好比是在声明一个词汇表,而 DSL 则为其增加了相应的语法,使得人们能够写出条理清晰的句子。”因此,使用 DSL 而不是框架会使代码丰富表现力,为人们带来“更良好的抽象处理方式”,并使“阅读我们写出的代码及对我们意图的展示变得更加容易”。

Piers Cawley 称,DSL 的主要特性并非其可读性,而是“它们对去相应领域的高度专注”使得它们能够更加明确地表义。Cawley 为了阐述他的观点举了一个例子,说明 DSL 不仅仅能让我们“写出读起来像领域专家说出来的话一样的程序”,也可以很技术化,用来代表一个使用它们的语法进行操控的框架。

Neal Ford 也相信,被他称为多语言编程(Polyglot Programming)的势头正在兴起。在软件开发的这个新纪元中,日益明显的主要特征就是嵌入更多的语言,使人们能够“为所做的菜选择一把恰到好处的刀,并且恰如其分地使用它”。他举了一个例子,展示在 Java 编程语言中并行类库的使用难度,并将其与 Haskell 作比。Haskell 是一门函数式语言,“消除了变量所带来的副作用”,并使“编写线程安全的代码”变得更容易。Ford 强调说,Java 和.NET 平台都存在 Haskell 语言的实现(Jaskell 和 Haskell.net)。

不再使用单一语言进行开发所带来的风险之一可能让 80 年代末 90 年代初所出现的问题又再次重现,当时语言就是完全独立的平台,既不能互操作也不能放在一起良好地使用。Martin Fowler 指出,现在的情况有这样的一个重要区别:

在 80 年代末期,人们很难让各个语言之间紧密地互操作。这些年来,人们花了很大精力创建出可以让不同语言紧密共存的环境。脚本语言在传统上与 C 语言有着很密切的关系。在 JVM 和 CLR 平台上也有人为互操作花费了大量精力。另外人们也在类库上投入了很多人力物力,为的是让语言忽视类库的存在。

最终,要学习并使用多种语言,对于业界乃至开发人员都可能会变成一项重要资产。《Pragmatic Programmers》这本书里面就说到,由于这样做会对人们对编程的思考方式产生影响,因此这样能帮助人们发现解决问题的新途径。

您是怎样认为的呢?在下去的五年中,我们会开始混合使用语言,并像用类库一样频繁地使用 DSL 吗?

查看英文原文: DSLs bringing the end of single language development?

2007-08-08 04:003148
用户头像

发布了 117 篇内容, 共 15.9 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

服务器常见问题排查(一)——CPU占用高、上下文频繁切换、频繁GC

遥遥知识库

后端 服务器 性能调优 问题定位 线上环境问题

OpenHarmony设备环境查询:Environment

OpenHarmony开发者

OpenHarmony

机器人和机器人学在工业自动化中的关键角色

测吧(北京)科技有限公司

测试

区块链与人工智能的融合

测吧(北京)科技有限公司

测试

HarmonyOS音频通话开发指导

HarmonyOS开发者

HarmonyOS

第12期 | GPTSecurity周报

云起无垠

自然语言处理的突破与挑战:解析智能语言的复杂性

测吧(北京)科技有限公司

测试

人工智能在艺术和创意领域的作用:数字化的艺术复兴

测吧(北京)科技有限公司

测试

语音识别技术的进步和应用

测吧(北京)科技有限公司

测试

人工智能在物流和供应链管理中的作用:优化、智能和未来

测吧(北京)科技有限公司

测试

美国服务器租用:加速你的网站速度和全球可及性

一只扑棱蛾子

美国服务器 美国服务器租用

HarmonyOS自定义抽奖转盘开发(ArkTS)

HarmonyOS开发者

HarmonyOS

未来十年中人工智能的发展趋势

测吧(北京)科技有限公司

测试

人工智能 | 机器学习在金融领域的应用

测吧(北京)科技有限公司

测试

产品经理如何快速提升工作效率?这10款工具助你一臂之力!

彭宏豪95

产品经理 产品管理 在线白板 办公软件 在线协作

链游系统开发(开发搭建方案)丨链游DAPP智能合约游戏系统源码实例应用

V\TG【ch3nguang】

用低代码平台代替Excel搭建进销存管理系统

互联网工科生

Excel 低代码平台

Java爬虫实战:API商品数据接口调用

Noah

深度学习如何革新自动驾驶技术

测吧(北京)科技有限公司

测试

量子计算和人工智能的交叉点:未来智能的新维度

测吧(北京)科技有限公司

测试

人工智能在环境保护中的应用

测吧(北京)科技有限公司

测试

数字化践行程果 | 砥砺前行,程果创新,共启全球新篇章

携程商旅

KaiwuDB 亮相第四届跨国公司领导人青岛峰会

KaiwuDB

人工智能如何改变医疗保健

测吧(北京)科技有限公司

测试

释放未来的力量:人工智能在农业中的潜力

测吧(北京)科技有限公司

测试

人工智能与职业的未来:合作与转型

测吧(北京)科技有限公司

测试

掌握Nginx的高级用法,构建高性能Web应用

树上有只程序猿

nginx

文心一言 VS 讯飞星火 VS chatgpt (121)-- 算法导论10.4 2题

福大大架构师每日一题

福大大架构师每日一题

DAPP丨OP链区块链技术质押挖矿系统开发

l8l259l3365

DSL:单一语言开发的终结者?_架构_Sadek Drobi_InfoQ精选文章