【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

面向语言编程:超越面向对象编程的革命性进步?

  • 2007-09-20
  • 本文字数:1254 字

    阅读完需:约 4 分钟

在巴塞罗那举行的 Server Side’s Java 专题讨论会上,Martin Fowler 和 Neal Ford 做了一场展示面向语言编程的重要报告。Fowler 曾撰文将面向语言编程定义为“围绕一组领域特定语言来构建软件的编程风格”。Fowler 和Ford 又进一步发展了其中的一些想法(可参见 Fowler at Jaoo 2006 ),并提出了“超越面向对象编程的革命性进步”的可能性。

面向对象编程以分层结构和树状的抽象提供了一种有用的建模范式。然而现实并不总是按层次组织的,Neal Ford 指出。现实的“盘根错节,彼此联系”是很难用理想化的树状画面来勾勒其模型的。其结果就是现在广泛使用的 aspects 和 XML,它们渐渐地增加了复杂性,并侵蚀了我们实施抽象的原意。为了弥补这个问题,抽象的水平应该再次提升,因此 Ford 建议用语言取代分层来作为建模机制。

按照 Martin Fowler 的说法,面向对象的领域建模让我们得以“汇集词汇”,但语法——将词汇组合起来的方法——却是缺失的;DSL 补足了语法的方面。因此面向语言编程引导我们“从思考词汇,即对象,走向一种结合了词汇和语法的语言观念。”

对 Neal Ford 来说,用 DSL 来作为一种新的抽象机制令他特别感兴趣的是,它能填补上下文的空缺。在缺乏上下文的环境中,你要“从最基本的共识着手并解释所有的细节”。这就是你与 API 和框架沟通的方式,因为它们没有“任何内建的上下文”。因此代码中总是不断重复一些上下文,以致成了干扰。相反 DSL“总是有着隐含的上下文,上下文几乎从不露面,就算露面也是很少很少,通常最多一次”。因此我们不必一再地提供上下文信息,于是代码更具可读性,也更有表现力。

Fowler 和 Ford 都强调了可读性的重要。他们认为 DSL 的动机经常被误解。目的并不是为了让业务分析师能够自己写代码,而是为了让他们能够阅读和检验代码,从而填补专业开发者和业务人员之间的罅隙。

有些人厌恶使用面向语言编程的风格,因为他们担心维护的问题以及增加的学习负担,特别是在缺乏强大的 IDE 来处理这些纯文字的 DSL 的情况下。Fowler 最近在一篇文章中反对说“大一点的框架[……] 带来的挑战一点都不比学一门语言少”,他再次强调了单一语言编写的项目的复杂性。并且,Neal Ford 强调说如果一门DSL 很难读,那么它的设计就是很糟糕的,因为“[使用DSL 的] 目的之一就是为了创造出更容易阅读的代码”。

至于IDE 支持,现今至少有三家主要厂商正为面向语言编程提供这一类工具:Charles Simonyi 开发的Intentional Software,Microsoft 的Software Factories 和JetBrains 开发的Meta Programming System。这些工具,Martin Fowler 称之为语言工作台(Language Workbench),让设计并使用DSL 变得更加简单。这些工具提高了面向语言编程的竞争优势,虽然Fowler 相信“还要过几年大多数人才会考虑用[语言工作台] 来开发实际的项目。”

你怎么看?面向语言编程有机会成为“下一位明星”吗?语言工作台的能力会在多大程度上影响你在项目中采用DSL 的决策呢?

查看英文原文: Language-oriented programming : an evolutionary step beyond object-oriented programming?

2007-09-20 00:011247
用户头像

发布了 225 篇内容, 共 60.8 次阅读, 收获喜欢 50 次。

关注

评论

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

ChatGPT 来了,MySQL DBA 会失业吗?| StoneDB 数据库观察 #10

StoneDB

数据库 StoneDB ChatGPT

华为云张鹏:华为云盘古大模型及MetaStudio亮相新媒体大会,使能融媒创新

新消费日报

技术领先、“忠”于业务,用友助力企业实现价值化国产替代

用友BIP

MyBatis条件查询

猫九

火热的低代码和无代码赛道

互联网工科生

软件开发 低代码 无代码 应用开发

三问三答:细数GaussDB迁移的核心技术

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

7.12下午两点开启直播!《数智企业@中国》走进泰开集团

用友BIP

数智企业

春去夏来,火热发版:StoneDB-8.0-v1.0.1-beta 版本正式发布!

StoneDB

数据库 StoneDB

超级应用App的概念及构建思路

Onegun

小程序 小程序容器 超级应用

【HDC.Cloud 2023】华为云区块链分论坛内容值得再读!

华为云开发者联盟

区块链 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

人工智能的底层逻辑

博文视点Broadview

人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文”

快乐非自愿限量之名

人工智能 机器学习

数智化的核心在于构建底座,看这家数科公司如何与传统厂商双赢双生

用友BIP

数智底座 数科公司

语音平台源码搭建开发之表情功能的实现

山东布谷科技

软件开发 语音 直播 源码搭建 语音厅平台搭建

如何在 Ubuntu 22.04 下编译 StoneDB for MySQL 8.0 | StoneDB 使用教程 #1

StoneDB

数据库 StoneDB

用友BIP全球司库“五大管家”,助力大型企业一流司库建设

用友BIP

全球司库

响应式编程:Vert.x官网学习

越长大越悲伤

响应式编程 JVM Vert.x

码中寻趣:低码专家与开发者的「神秘会议」 ——华为云Astro扫地僧出山

华为云PaaS服务小智

云计算 低代码 华为云 华为开发者大会2023 Astro

解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct

不在线第一只蜗牛

架构 指令

MySQL 中索引是如何实现的,有哪些类型的索引,如何进行优化索引

EquatorCoco

MySQL 数据库 索引

看完这篇异地多活的改造,我决定和架构师battle一下

得物技术

架构 构架师

谁能真正替代你?AI辅助编码工具深度对比(chatGPT/Copilot/Cursor/New Bing)

快乐非自愿限量之名

工具 ChatGPT AI赋能 AI工具

一文吃透CSS样式中颜色与颜色值的应用

这我可不懂

CSS

软件定义汽车场景中的数据流处理

EMQ映云科技

车联网 mqtt 数据流

为什么选择美国虚拟主机是你的明智之选?

一只扑棱蛾子

美国虚拟主机

速度与技能的较量!飞桨黑客松 OpenVINO™ 任务获奖者经验分享

飞桨PaddlePaddle

北京汽车牵手火山引擎数智平台,探寻车企数字化升级新通路

字节跳动数据平台

数字化 数字化升级 车企 企业号 7 月 PK 榜

2023年最具威胁的25种安全漏洞(CWE TOP 25)

华为云开发者联盟

安全 华为云 安全漏洞 华为云开发者联盟 企业号 7 月 PK 榜

方言语音识别数据驱动人工智能的多元文化发展

来自四九城儿

方言语音

沉潜蓄势,厚积薄发:StoneDB-5.7-V1.0.4版本正式发布!特性增强,稳定性大幅提升

StoneDB

数据库 版本发布 StoneDB

Cloud Kernel SIG月度动态:ANCK 5.10-016将落地kABI机制,5.10-015版本规划发布

OpenAnolis小助手

操作系统 内核 anck 龙蜥sig 版本规划

面向语言编程:超越面向对象编程的革命性进步?_架构_Sadek Drobi_InfoQ精选文章