Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

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

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

关注

评论

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

有完美的 React 框架吗?三巨头之战:Remix、Next.js 和 Gatsby

互联网工科生

前端开发 React

HarmonyOS三个设计原则教你如何设计高使用率万能卡片

新消费日报

什么是谷歌SEO推广,谷歌SEO推广的6大优势!

九凌网络

最新前端技术趋势——菜鸟必看

秃头小帅oi

前端

Mybatis和其他主流框架的整合使用

不在线第一只蜗牛

开源 mybatis 项目开发

Python系列:如何提高python程序代码的健壮性

树上有只程序猿

Python

和鲸科技创始人范向伟受邀出席“凌云出海,来中东吧”2023华为云上海路演活动

ModelWhale

人工智能 华为云 数据科学 出海 中东

更快更省更好用!天翼云云原生一体机iStack打通物云最后一公里!

天翼云开发者社区

云计算 云原生

预训练模型在迁移学习中的应用

百度开发者中心

深度学习 大模型 LLM

推动NLP预训练模型的创新发展

百度开发者中心

nlp 大模型 LLM

使用Python调用API接口获取京东关键词详情数据

Noah

华秋第九届硬创大赛全国总决赛,邀你一同见证~

华秋电子

如何防止网站被黑,降低网站被攻击的风险?

九凌网络

软件测试 | 人工智能在自动化缺陷检测中的崭新前景

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

测试

软件测试 | 基于ChatGPT的个性化人工智能应用开发:解锁交互新维度

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

测试

云主机CPU和内存配比:优化资源分配的关键

天翼云开发者社区

云计算 cpu 云主机

Linux 安装gradle

javaNice

Java Linux Gradle

腾讯云大数据获“年度金融科技创新之星”,新一代数据架构首次公布

腾讯云大数据

大数据

一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)

不在线第一只蜗牛

开发语言 #python

DAPP开发:区块链平台、设计智能合约、创建用户界面等

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

合约跟单交易所开发流程

区块链技术

软件测试 | 人工智能在自动化测试脚本生成中的应用

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

测试

和鲸 ModelWhale 入驻华为蓝鲸应用商城,助力大模型时代 AI 赋能应用落地

ModelWhale

人工智能 华为 AI 数据科学

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