NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

外部 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:491446
用户头像

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

关注

评论

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

从 3 个层级出发,做好 DevSecOps“安全左移”经济账

极狐GitLab

DevOps DevSecOps 代码安全 极狐GitLab 安全左移

系统架构设计:进程缓存和缓存服务,如何抉择?

做梦都在改BUG

Java 架构设计 缓存服务 进程缓存

Selenium自动化测试

测吧(北京)科技有限公司

测试

华为云GaussDB以技术创新引领金融行业分布式转型

华为云开发者联盟

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

用图技术搞定附近好友、时空交集等 7 个典型社交网络应用

NebulaGraph

推荐算法 图数据库 社交网络

谷歌Android things物联网硬件接入阿里云IoT物联网套件实战——设备接入类

阿里云AIoT

物联网 传感器 Android开发

高效稳定的通用增量 Checkpoint 详解之二:性能分析评估

Apache Flink

大数据 flink 实时计算

【低代码实践】京东科技活动平台:魔笛介绍

京东科技开发者

低代码 企业号 3 月 PK 榜 活动平台

太强了!阿里架构师把自己会的都总结到了这份1737页实战开发手册中

做梦都在改BUG

Java

项目经理问我Tomcat 与 Undertow 怎么抉择?此文教她选

Java你猿哥

Java jdk Spring Boot ssm

基于Pub/Sub模式的阿里云IoT同步调用详解——设备管理运维类

阿里云AIoT

物联网 API

时序数据库的流计算支持

KaiwuDB

流计算 时序数据库 KaiwuDB

智维数据荣获2022金融科技应用创新奖

智维数据

金融科技 智能运维 金融电子化 智维数据

浅析synchronized底层实现与锁升级过程

做梦都在改BUG

Java JVM synchronized

flomo 浮墨笔记向飞书收购 “幕布”,不卖永久会员、不融资的“反骨”逻辑

B Impact

通过HTTP/2通道实时获取IoT设备状态和数据——设备管理运维类

阿里云AIoT

Java 物联网

依靠这份PDF面试资料文档,各种美团,阿里等大厂offer拿到手软

Java你猿哥

Java 后端 ssm 面经 八股文

第三方私有云管理平台选择哪家好?理由有哪些?

行云管家

云计算 私有云 云管平台 云管理

NutUI-React 京东移动端组件库 2月份上新!欢迎使用!

京东科技开发者

前端 React 组件库 开源组件 企业号 3 月 PK 榜

阿里云助力元戎启行 加速自动驾驶应用落地

云布道师

自动驾驶 阿里云 弹性计算

好用的油猴Safari浏览器插件:Tampermonkey 中文版

真大的脸盆

Mac 油猴 油猴插件 脚本管理 脚本插件

难以置信!四面斩获字节offer,全靠这份“算法最优解”宝典

做梦都在改BUG

Java 数据结构 面试 算法 LeetCode

真香!腾讯T4梳理的Java核心宝典(框架+原理+笔记+导图)

做梦都在改BUG

Java 程序员

阿里云IoT物模型-属性,服务,事件通信的topic和payload详解——设备管理运维类

阿里云AIoT

物联网

10Wqps 超高并发 API网关 架构演进之路

Java你猿哥

Java 架构 微服务 SSM框架 api 网关

国内首发|焱融科技 YRCloudFile 支持 NVIDIA GPUDirect Storage(GDS)

焱融科技

人工智能 分布式存储 分布式文件存储 全闪存储 GPT-4

Star History 月度开源精选|2023 年 2 月

Bytebase

GitHub 开源项目 OpenKruise

行云管家堡垒机六大功能详细介绍看这里!

行云管家

互联网 网络安全 堡垒机

面试官:还有比Redis更骚的分布式锁的实现方式吗?

做梦都在改BUG

Java Spring Boot 分布式锁 etcd

经过阿里四面而形成的10万字java面试题及答案文档到底有多牛?

Java你猿哥

Java 阿里巴巴 后端 面经 八股文

阿里云IoT物联网平台基础版和高级版数据进入规则引擎的流转详解——普及类

阿里云AIoT

物联网

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