速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 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:011473
用户头像

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

关注

评论

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

RAG架构的数据准备流程

澳鹏Appen

LLM rag 检索增强生成

TikTok直播攻略--从商品选择到网络线路

Ogcloud

TikTok tiktok运营 tiktok直播 tiktok直播专线 tiktok运营干货

解锁淘宝天猫数据宝藏:深度探索商品描述、详情图与评论的API调用新视角

代码忍者

API 接口 pinduoduo API

字节跳动开源云原生数据仓库 ByConity 有奖众测,邀你体验完整的数仓能力

InfoQ写作社区官方

有奖活动 开发 热门活动

Carbon Copy Cloner for Mac(磁盘克隆/同步/备份软件)激活版

Mac相关知识分享

Agisoft Metashape Professional for Mac(专业3D建模软件)

Mac相关知识分享

告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系

Databend

GreptimeDB Edge 2.0 车端多模态数据库线上发布会

Greptime 格睿科技

数据库 车联网 汽车

从人工智能到低代码:科技如何塑造未来的企业软件

天津汇柏科技有限公司

低代码 AI人工智能

如何建设开放可控的企业大数据平台?

袋鼠云数栈

海外直播加速方法,直播不再卡顿!

Ogcloud

海外直播专线 tiktok直播 tiktok直播专线 tiktok直播网络 tiktok直播加速

【开发者福音】沉浸式编程新功能——内联对话来袭!

cloud studio AI应用

开发者 代码 程序员】 腾讯云AI代码助手

中昊芯英基于国产TPU算力服务器在高校中的应用,助力太极股份成功入选特色案例

科技热闻

金狗出没时间揭秘:为什么凌晨成了 Meme 币的神盘时段?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Notability for Mac(省心的笔记软件)

Mac相关知识分享

如何使用Python开发天猫获得淘宝买家秀API接口?

科普小能手

淘宝 天猫 API 接口 淘宝API接口 天猫API

FlowJo 10 for Mac(流式细胞分析软件)v10.4激活版

小玖_苹果Mac软件

安能物流 All in TiDB 背后的故事与成果

PingCAP

数据库 TiDB

ShareMouse for mac(跨平台鼠标和键盘共享软件)v6.0.59激活版

小玖_苹果Mac软件

Steinberg Cubase Pro 14 for Mac(多功能音乐制作)v14.0.5激活版

小玖_苹果Mac软件

喝杯好茶,交个朋友丨天润融通签约霸王茶姬

天润融通

Avid Sibelius Ultimate 2023 for Mac(西贝柳斯音乐记谱软件)v2023.8激活版

小玖_苹果Mac软件

中小企业适合上管理系统吗?

积木链小链

企业管理 ERP 中小企业

从容应对开服高峰!火山引擎助力库洛游戏全球发行再创新高

火山引擎边缘云

Tableau Desktop 2019 for Mac(最好用的数据分析工具)v2019.1.0中文激活版

小玖_苹果Mac软件

Maplesoft Maple 2024 for mac(专业的数学计算软件)v2024.0激活版

小玖_苹果Mac软件

2024华为云开源开发者论坛项目抢鲜看|Kmesh: 监控指标和访问日志功能详解

华为云原生团队

云计算 开源 容器 云原生

区块链游戏的新观察:自治世界能否成为未来链游的突破口?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

告别手动填单,天润融通大模型让效率提升不止一倍!

天润融通

印象笔记发布全新知识管理平台 AI让你的第二个大脑持续升级

E科讯

Reallusion Cartoon Animator for Mac(2D动画设计制作软件)

Mac相关知识分享

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