写点什么

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

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

关注

评论

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

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

钟奕礼

Java 编程 程序员 架构 面试

最全Java架构师技能树:Java编程+网络+设计模式+数据库+分布式

钟奕礼

Java 编程 程序员 架构 面试

阿里巴巴研究员叔同:云原生是企业数字创新的最短路径

阿里巴巴中间件

云计算 Serverless 容器 云原生 Faas

基于 docker 部署 jenkins(二)

李日盛

tensorflow实现像素级图像分割算法

AI_robot

寻找音乐API接入正版音乐曲库?了解HIFIVE音乐开放平台!

曲多多(嗨翻屋)版权音乐

音乐api 正版曲库 音乐sdk

民国最出名的女作家,为什么是她?

了了Vita

云图说|将源端MongoDB业务搬迁至华为云DDS的几种方式

华为云开发者联盟

mongodb 数据迁移 华为云文档数据库服务 DDS 文档数据库

阿里天猫3面(Java研发):GC回收+Redis Hash算法+架构部署+秒杀等

钟奕礼

Java 编程 程序员 架构 面试

tensorflow实现深度卷积生成对抗网络(DCGAN)生成手写数字图片

AI_robot

iOS开发:git上传代码到开源中国的步骤,以及pod的更新方法

花花

ios

区块链农产品溯源--保护舌尖上的安全

13530558032

ndk开发前景,某大厂开发者对于Android多线程的总结,系列篇

欢喜学安卓

android 程序员 面试 移动开发

《月亮与六便士》:给你500万,你会用它买套房子还是周游世界?

了了Vita

tensorflow实现低分辨率灰度图像分类算法

AI_robot

NodeJs中Buffer与Stream理解

小风以北

stream 原理 Node buffer

专访孙立坚:印度经济发展实力几何 ?

了了Vita

JVM技术专题-逃逸分析介绍

码界西柚

Java JVM

keras深度学习框架

AI_robot

芯翌科技:技术理想主义的务实之旅

朋湖网

有道云笔记新版编辑器架构设计(上)

有道技术团队

架构 大前端

访问管理未来的四大趋势

龙归科技

网络安全 身份和访问管理

Java面试过了京东五面之后,发现掌握了这些技术也没有那么难

钟奕礼

Java 编程 程序员 架构 面试

springboot+redis+rabbitmq实现模拟秒杀系统(附带docker安装mysql,rabbitmq,redis教程)

yk

redis Docker 高并发 RabbitMQ

Mac openssl 未找到/加载失败问题处理

潮湿了我押韵的心情

简单架构图

李朋

架构 架构图

区块链底层Baas平台搭建,区块链政务底层平台开发

tensorflow实现cifar10彩色图像多类别分类

AI_robot

面对不可避免的故障,我们造了一个“上帝视角”的控制台

阿里巴巴云原生

容器 微服务 云原生 监控 应用服务中间件

深度学习keras像搭积木般构建神经网络模型

AI_robot

大厂面试必问!2021新一波程序员跳槽季,附大厂真题面经

欢喜学安卓

android 程序员 面试 移动开发

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