写点什么

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

2008 年 12 月 23 日

领域特定语言持续升温的背景之下, 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:49978
用户头像

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

关注

评论

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

线上Java程序占用 CPU 过高,请说一下排查方法?

古时的风筝

Java JVM cpu 100%

互联网审判中区块链存证技术的应用进路

CECBC区块链专委会

互联网 电子存证

英特尔首批独显笔记本亮相,非凡S3x纵享轻薄新体验

intel001

性能测试,简单的压测工具

garlic

极客大学架构师训练营

低代码开发不靠谱?看低代码开发在物联网APP开发中的应用

华为云开发者社区

技术 软件开发 代码

全球首批搭载英特尔Xe MAX独显惊艳上市,非凡S3x尽显创作魅力

intel001

数字货币交易所开发技术,场外币币交易平台搭建app

WX13823153201

数字货币交易所开发

我去!三面字节竟全败在Redis上,带薪摸鱼刷1949页进阶笔记

996小迁

Java redis 架构 面试 程序人生

架构师训练营 -week07-作业

大刘

极客大学架构师训练营

JVM真香系列:.java文件到.class文件

田维常

JVM

“十三五”收官,区块链赋能能源电力路在何方?

CECBC区块链专委会

区块链 电力 能源

http请求中get和post方法的区别

测试人生路

HTTP post GET

英特尔进军独显领域,第一批搭载锐炬®Xe MAX独显轻薄本已问世!

intel001

训练营第三周作业

大脸猫

极客大学架构师训练营

啥是数据库范式

Simon

MySQL 数据库 数据库设计

NPC Follow

katichar

从技术到应用实践 揭秘京东区块链布局全景

京东智联云开发者

区块链 区块链方案 供应链

Redis最常见的16道面试题与详解

Java架构师迁哥

训练营第三周总结

大脸猫

极客大学架构师训练营

25个小众的Java库

GuoYaxiang

Java 开发工具

ViewportFrame demo

katichar

隐私计算S2赛季 谁是真正的王者?

hellompc

学习 隐私计算

字节跳动大神亲自总结SpringBoot手册,让你可以在简历上写精通SpringBoot!

Java架构追梦

Java 架构 面试 微服务 springboot

Flink 1.11 与 Hive 批流一体数仓实践

Apache Flink

flink 流计算 实时计算

蚂蚁金融推迟上市:互联网金融是否要遭遇滑铁卢

石头IT视角

阿里P8对Thread核心源码讲解

Java架构师迁哥

字节跳动HR:3年从4000人招到10万人,我经历了什么

Java架构师迁哥

架構師訓練營第 1 期 - 第 07 周作業

Panda

架構師訓練營第 1 期

MySQL中特别实用的几种SQL语句送给大家

陈哈哈

SQL优化 实用SQl语句 高性能SQL

搭载设计师级独显英特尔Xe MAX,非凡S3x体验全能创作

intel001

诈骗?通证项目方的危局

CECBC区块链专委会

区块链 法律

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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