哪些编程语言的Token效率最高?
对于软件开发智能体来说,编程语言的"token效率"可能产生重大影响,我想知道这是否会成为未来语言选择的一个因素。
我一直在思考,如果人类越来越多地不再编写代码,编程语言和工具会发生什么变化。我最近写了一篇关于代码移植的文章,这让我更多地思考LLM与人类相比有哪些限制。
LLM最大的限制之一是上下文长度。这是一个难以解决的问题,因为在当前的Transformer架构中,内存使用量会随着上下文窗口的变长而显著增加。而且考虑到当前的内存短缺,我认为世界目前并没有被内存淹没。
因此,对于软件开发智能体来说,编程语言的"token效率"可能产生重大影响,我想知道这是否会成为未来语言选择的一个因素。考虑到编码智能体上下文窗口的很大一部分将是代码,更高效的token语言应该允许更长的会话,并需要更少的资源来交付。
我们已经见过TOON(一种更高效的JSON编码),但编程语言呢?
1、方法论
我在做相关研究时发现了RosettaCode项目。它自称是一个编程语言范例网站(顺便说一句,我很喜欢这个定位)。它有超过一千个编程"任务",人们用各种语言实现。它拥有近1,000种不同编程语言的贡献。
我找到了该数据集的GitHub镜像,所以请Claude Code使用Hugging Face的Xenova/gpt-4分词器(这是OpenAI GPT4分词器的社区移植版)进行比较。
然后我让Claude Code建议一组最受欢迎的编程语言,这大致符合我的经验,然后找到在所有19种语言中都有解决方案的任务,然后将它们通过分词器处理。我没有包含TypeScript,因为Rosetta Code数据集中TypeScript的任务很少。
这个数据集和方法存在很多潜在的限制和偏差!这只是对一些编程任务中类似解决方案的有趣观察,而不是科学研究。
2、结果

更新:
更新2:
C(我比较的最低效语言)和Clojure(最高效语言)之间存在2.6倍的显著差距。
不出所料,动态语言的token效率高得多(不声明任何类型可以节省大量token) - 不过JavaScript是分析的动态语言中最冗长的。
让我惊讶的是,像Haskell和F#这样的函数式语言的token效率有多高 - 几乎不比最高效的动态语言低。这无疑要归功于它们非常高效的类型推断系统。我认为为LLM使用类型化语言有很多好处 - 不仅因为它可以编译并快速获得任何语法错误或方法幻觉的反馈。有了LSP,它变得更加有用。
假设你80%的上下文窗口是代码读取、编辑和差异,使用Haskell或F#可能会比使用Go或C#产生显著更长的开发会话。
让我非常感兴趣的是,我们正处于这个奇怪的未来,我们拥有千万亿次计算能力,但"小"上下文窗口的代码冗长性实际上可能很重要。LLM继续打破我对软件工程应该如何看待的心智模型。
- OpenAI有一个简单的分词器,你可以在这里试用。很多人写过分词器的工作原理 - 如果你想了解更多,这里有一个很好的介绍。关键是他完全不按字节映射字符使用。常用单词和短语可以是1个token整个单词,但某些符号和序列可以是每个字符一个token。↩︎
原文链接: Which programming languages are most token-efficient?
汇智网翻译整理,转载请标明出处
这是「AI 编程 / Vibe Coding」专题的一部分。完整地图见:AI 编程 / Vibe Coding 完全指南