QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

一文带你理解@RefreshScope注解实现动态刷新原理

JAVA旭阳

Java spring 10月月更

自己手写一个redux

helloworld1024fd

JavaScript

太神了!阿里p7大佬总结的Java面试心得,起始—进阶—突击,一应俱全!

Geek_0c76c3

Java 数据库 开源 程序员 架构

京东的“618”高并发秒杀终极版教程!(Java语言设计)

程序知音

Java 架构 并发编程 高并发 后端技术

会声会影2023全新功能介绍

茶色酒

会声会影 会声会影2023

面试官:你说说Vue中的组件和插件有什么区别?

CoderBin

vue.js 面试 前端 组件 10月月更

JPEX推出竞猜世界杯冠军球队活动,质押平台通证赢奖金

股市老人

leetcode 220. Contains Duplicate III 存在重复元素 III(困难)

okokabcd

LeetCode 数据结构与算法

鹅厂二面,nginx回忆录

有态度的马甲

腾讯强推Spring Security速成笔记太香了!认证授权一键搞定

程序知音

Java 架构 spring security 后端技术 Spirng

TDengine 3.0 中如何编译、创建和使用自定义函数

TDengine

数据库 tdengine 开源 时序数据库

MathType2023软件安装word教程

茶色酒

MathType2023

EasyRecovery2023绿色版下载安装教程分享

茶色酒

EasyRecovery15 easyrecovery2023

easyrecovery15注册机非常强大的数据恢复软件

茶色酒

EasyRecovery Easyrecovery破解 EasyRecovery15

CleanMyMac X2023苹果电脑必备下载软件

茶色酒

CleanMyMac X

打造面向工业4.0的智能工厂01|云边协同架构助力视觉AI缺陷检测应用构建

EMQ映云科技

AI 物联网 IoT emqx 10月月更

idea启动build过慢

拾光师

IDEA 10月月更

云安全将进入黄金时代 - Gartner 报告解读

HummerCloud

云计算 云安全 Gartner

FL Studio水果软件最新21中文版编曲工具

茶色酒

flstudio FL STUDIO20.9 FL Studio 水果FL Studio

太强了!阿里巴巴最新开源303页Spring全家桶高级笔记,深入瓦解源码

Geek_0c76c3

Java 开源 程序员 架构 开发

技术内幕 | StarRocks Pipeline 执行框架(上)

StarRocks

数据库

实践了上万次,原来这些才是敏捷测试需要遵循的原则

敏捷开发

敏捷 测试 单元测试

从零手写react-router

helloworld1024fd

JavaScript

阿里全新推出:微服务突击手册,把所有操作都写出来了|超清PDF

程序知音

Java 微服务 阿里 SpringCloud 后端技术

在 Go 语言中使用 exec 包执行 Shell 命令

宇宙之一粟

Shell Go 语言 10月月更

一文带你玩转ProtoBuf

王中阳Go

Go 微服务 RPC protobuf 10月月更

超详细教程:在Blender中打造毛毡风格角色

Renderbus瑞云渲染农场

blender Renderbus瑞云渲染

一步步实现React-Hooks核心原理

helloworld1024fd

JavaScript

啃透Alibaba这份面试通关宝典,信心倍增!我成功拿下今年第15个Offer

Geek_0c76c3

Java 数据库 开源 程序员 架构

怎样徒手写一个React

helloworld1024fd

JavaScript

基础设施 NFTScan 正式发布 Avalanche 网络 NFT 浏览器

NFT Research

区块链 NFT web3 数据基础设施 Avalanche

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