写点什么

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

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

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

关注

评论

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

ETL数据转换工具类型与适用场景

RestCloud

ETL

大语言模型|人工智能领域中备受关注的技术

许思王

人工智能 大语言模型

内卷出奇迹!华为云耀云服务器L实例凭实力成为_卷王_

平平无奇爱好科技

中小企业如何以最低成本数字化?华为云耀云服务器L实例给出完美答案

平平无奇爱好科技

“出海”在即?华为云这份跨境电商运营指南让新手商家少走弯路

平平无奇爱好科技

高效率低成本!网站开发还得仰仗华为云这款宝藏工具

平平无奇爱好科技

CSS选择器

阡陌r

CSS 选择器 伪元素 伪类

客户削减项目开发预算,试试华为云这款轻量应用服务器保质保量

YG科技

降维打击_友商_?华为云这款轻量应用服务器性能全面升级

平平无奇爱好科技

轻量应用服务器领域,这款产品何以被冠“国民级”美誉

平平无奇爱好科技

跨境电商网站旺季爆单崩溃?华为云这款轻量应用服务器值得拥有

平平无奇爱好科技

电商网站防崩溃秘诀来袭!华为云这款轻量应用服务器稳赚不赔

轶天下事

如何快速将钉钉员工信息同步到飞书

RestCloud

项目开发冲刺难度大?华为云这款轻量应用服务器助力大好“收官战”

平平无奇爱好科技

小程序开发经费紧张,华为云这份省钱秘笈请点赞收藏

YG科技

双11终极之战,华为云耀云服务器L实例点燃狂欢高潮

YG科技

企业ERP实施仍存三大难点,华为云耀云服务器L实例助力破局

平平无奇爱好科技

还迷信传统服务器开发小程序游戏?华为云耀云服务器L实例才是“正道”

平平无奇爱好科技

数字化尽头是轻量应用服务器,华为云耀云服务器L实例打开无限可能

轶天下事

推出链上美债产品的 ProsperEx:RWA 衍生品赛道的早期玩家

股市老人

『亚马逊云科技产品测评』活动征文|如何使用Docker compose快速搭建个人博客?

鸽芷咕

Docker 容器 云服务器

外贸网站预算持续削减,这个轻量应用服务器搞定老板

YG科技

基于javacv的人脸识别和图片内容审核方案

智慧源点

人脸识别 内容审核

C语言与C++语言混合编程的方法

王玉川

c 混合编程 C++

年终企业采购潮来袭!华为云这款轻量应用服务器值得入手

轶天下事

“跨”入蓬勃生长新时代,华为云耀云服务器L实例赋能跨境电商

平平无奇爱好科技

跨境电商网站运营最苦岗位?华为云这款轻量应用服务器轻松胜任

平平无奇爱好科技

穿越经济寒冬,华为云这款轻量应用服务器助力企业破局新生

平平无奇爱好科技

年终项目抢进度?华为云这款轻量服务器全面冲刺全年目标

轶天下事

解锁数据潜力:为什么你应该考虑使用向量数据库

熬夜磕代码、

数据库

Linux设备树(DTS)

芯动大师

Linux

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