写点什么

外部 DSL:成功与失败的因素

  • 2008-12-23
  • 本文字数:903 字

    阅读完需:约 3 分钟

领域特定语言持续升温的背景之下, Michael Feathers 对外部 DSL 提出了一些看法,包括它们的优点、缺点,以及技术之外的成功和失败因素。他强调,外部 DSL“进一步解放了你的双手”,允许你建立“一套完整的语法,并直接根据特定领域的需要去调整”,然而更重要的是,一旦公司使用了它们,就代表着承担了一种重大的义务。并且这种“义务并不随着软件实现的完工而结束”。

由于内部 DSL 专注于特定的领域,它可能带来高昂的维护成本,因为你需要专业的技能才能应用 DSL 应对变化。同样的原因,使用外部 DSL 也使得公司的招聘变得更困难,尤其在雇用领域专家的时候更是如此:

让我们面对现实吧,如果你正在寻找工作,那么希望在简历上写点儿什么?写你熟悉一种专属于某一家公司的语言,还是一种整个业界都熟知的语言?

一个非常流行的例子是 Erlang。今天,人们正在强烈地关注 Erlang,但是我们不应该忘记,在某种程度上,它曾经被 Ericsson 放弃,因为 Ericsson 担心自身招聘和培养开发者的能力。很多人都知道 Erlang 的故事,但是他们没有意识到这种场景在业界有多普遍。我看过很多的遗留代码,其中的很大一部分代码都是用公司“自产自销”的语言开发的,而公司在支持这些代码的时候就遇到了麻烦。

因此,Michael Feathers 的建议就是,对于外部 DSL 来说,“成功的决定因素远远不止技术方面”。公司只有客观地评估了将要承担的负担,决定即使在“不利的商业环境下”也不退缩,才能真正地释放外部 DSL 的威力。除了这些以外,Feathers 还罗列了一些如何降低采纳外部 DSL 之代价的建议:

  1. 如果你创建了一套外部 DSL,那么考虑将它开源,或者至少考虑在业界形成一个围绕它的组织。这样可以在一定程度上降低维护的开销,也能避免招聘的麻烦。
  2. 如果你不能或者不愿向外界开放你的 DSL,那么也不要指望你的开发者会完全忠实地使用这些 DSL。否则,你就要为同等能力的开发者支付更多的薪水。在协商薪水的时候,公司就要为使用小众(little known)技术的开发者多付出一些了。

内嵌式 DSL 是值得考虑的另一种选择,因为根据作者的观点,内嵌式 DSL 更容易构建,并具有很多与外部 DSL 相同的优势。

查看英文原文: External DSLs: Success and Failure Factors

2008-12-23 03:491680
用户头像

发布了 53 篇内容, 共 14.2 次阅读, 收获喜欢 2 次。

关注

评论

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

安装配置GPU训练环境

十三

基调听云直播回顾 | 让业务系统不再深不可测

基调听云

APM 可观测性 智能运维 基调听云

Redis 布隆(Bloom Filter)过滤器原理与实战讲解

码哥字节

布隆过滤器 4月日更 Redis 数据结构 4月月更

优麒麟社区 22.04 LTS Beta 版本发布!

优麒麟

Linux 开源 计算机 优麒麟 Beta

数千万次下载、百万行开源代码贡献,优麒麟如何打造中国开源操作系统新名片? | 卓越技术团队访谈录

优麒麟

Linux 开源 内核 优麒麟 多端融合

WEB安全:深入反射式dll注入技术

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

快速摆脱在线扩容难的噩梦,华为云数据库有妙计!企业级Redis 包年18元~

华为云数据库小助手

GaussDB GaussDB ( for Redis )

蒙牛:以新营销和“更好”的年轻一代共鸣

科技新消息

蒙牛中国乳业产业园牧场建设项目全面复工

科技新消息

“敏捷项目比传统项目快”这个说法对吗?

优秀

项目管理 低代码开发

RISC-V开发板关机流程浅析

优麒麟

Linux 技术 risc-v开发板 优麒麟

TDengine 荣获 CSDN IT 技术影响力之星 “年度开源项目” 、 “年度IT领军人物”奖项

TDengine

数据库 tdengine 开源

网络IO管理-简单一问一答、多线程方式

Linux服务器开发

多线程 后端开发 Linux后台开发 网络io 服务端开发

大咖说·图书分享|数字化转型架构:方法论与云原生实践

大咖说

阿里巴巴 云原生 数字化转型

数仓建设 | ODS、DWD、DWM等理论实战

五分钟学大数据

数据仓库 4月月更

面试侃集合之 DelayQueue 篇

码农参上

4月月更

首个!青藤蜂巢荣获网络安全卓越验证中心&泰尔实验室双认证

青藤云安全

网络安全 青藤

解决方案体现的是一个公司的深度思考能力

基调听云

APM 智能运维 业务运维 基调听云

WhiteSource 是否容易受到“Spring4Shell”漏洞 CVE-2022-22965 的影响?

龙智—DevSecOps解决方案

Spring4Shell WhiteSource

启动报名2022南京智博会 第十四届南京国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

物联网

如何写内嵌式的帮助文档

小炮

帮助文档

大数据洞察画像自动化实践

网易云信

大数据

“中国牛”、“天生要强”翻新,2022蒙牛继续大满贯

科技新消息

2022第十四届南京国际人工智能产品展会

InfoQ_caf7dbb9aa8a

AIOps(智能运维)中的指标算法场景分享 | 内附视频&ppt资料

云智慧AIOps社区

人工智能 AI 算法 运维 告警

音视频开发—时间戳相关整理(时间基tbr,tbn,tbc)

Linux服务器开发

WebRTC ffmpeg SRS 音视频开发 流媒体服务器开发

你的产品越来越难卖?是时候关注价值流了

基调听云

DevOps APM 智能运维 基调听云

精彩回顾 | 金融服务数字化生态的开放与安全

FinClip

金融 数据安全

传统数据库改造难?华为云GaussDB“五心”解决

华为云数据库小助手

GaussDB

“天生要强”的迭代和蒙牛体育IP大满贯

科技新消息

优麒麟荣获 CSDN IT 技术影响力之星“年度开源项目”奖项!

优麒麟

Linux 开源 IT 获奖 优麒麟

外部DSL:成功与失败的因素_开源_Sadek Drobi_InfoQ精选文章