写点什么

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

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

关注

评论

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

如何使用NLP库解析Python中的文本

互联网工科生

Python nlp Transformer

科技新秀巅峰决战,百度商业AI技术创新大赛圆满收官

百度Geek说

人工智能 企业号 8 月 PK 榜

徐州堡垒机采购选择哪家?行云堡垒可以吗?

行云管家

网络安全 堡垒机 徐州

2023大健康博览会|2023广州国际健康产品展会

秋硕展览

App备案来袭,开发者如何应对选型

Onegun

混合应用开发 app备案

私密信息管理工具 Vault 快速入门

极限实验室

加密 valut 安全工具

PolygonStore,一款“业务驱动”而生的 NoSQL 多模数据库产品

TRaaS

智能窗帘展-2023广州国际智能晾衣架展会

秋硕展览

展会

利用 Databend 助力 CDH 分析 | 大参林

Databend

多款国产服务器、操作系统与摩斯隐私计算完成兼容性互认

科技热闻

用友BIP重磅升级,发布新品:用友BIP|商业网络

用友BIP

2023全球商业创新大会

阿里云大语言模型(LLM)实战训练营,火热开营中!

阿里云大数据AI技术

LLM模型

MongoDB中国用户大会北京站及深圳站火热报名中

极客天地

【专家观点】数智化组织模型大力驱动全球化

用友BIP

精彩回顾|【ACDU 中国行·杭州站】数据库主题交流活动成功举办!

墨天轮

数据库 oracle AntDB oceanbase 国产数据库

2023年徐州等级保护测评公司还是只有一家吗?电话多少?

行云管家

等保 徐州

Tongsuo 8.4.0-pre2 发布!

铜锁开源密码库

开源 密码学 版本更新 版本发布 铜锁

大规模块存储 EC 系统构建

Baidu AICLOUD

分布式存储 块存储 纠删码

【腾讯云 TDSQL-C Serverless 产品体验】 使用 Python 向 TDSQL-C 添加读取数据 实现词云图

全栈若城

Python 腾讯云 Serverless 词云图 tdsql

GaussDB技术解读系列:高级压缩之OLTP表压缩

华为云开发者联盟

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

文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题

福大大架构师每日一题

福大大架构师每日一题

GPU荒漠,算力短缺背后的时间竞赛与解决方案|TE解读

TE智库

27. Pandas

茶桁

Python pandas

对话英特尔院士Tom Petersen:持续优化锐炫驱动,游戏性能强劲提升

E科讯

铜锁 SM2 算法性能优化实践(三)|快速模逆元算法实现

铜锁开源密码库

开源 开发者 算法 性能优化 密码学

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