数量不等于分量:八大语言开源生态的真实对比
比较编程语言生态时,最常见的说法是「哪门语言的项目最多」。这个问题好回答,但价值有限——它只告诉你数量,没告诉你分量。
我们持续追踪 GitHub 上超过 6.7 万个高星仓库,并每天记录它们的 star 变化。把这份语料按语言拆开,能看到一些比"谁的项目多"更有意思的东西。
先看原始数据
下面这张表是实时从我们的数据库读取的,不是截图:
| Language | Repos | Total stars | Median | Top repo |
|---|---|---|---|---|
| Python | 12,202 | 59.8M | 1,982 | public-apis/public-apis |
| JavaScript | 8,416 | 36M | 1,923 | affaan-m/ECC |
| TypeScript | 6,687 | 41M | 2,294 | freeCodeCamp/freeCodeCamp |
| Go | 4,135 | 21.4M | 2,277 | avelino/awesome-go |
| Java | 4,110 | 15.2M | 1,908 | krahets/hello-algo |
| C++ | 3,449 | 14.9M | 2,008 | tensorflow/tensorflow |
| C | 2,559 | 10.1M | 1,937 | torvalds/linux |
| Rust | 2,466 | 13.9M | 2,149 | ultraworkers/claw-code |
| C# | 1,897 | 6.8M | 1,999 | 2dust/v2rayN |
| Shell | 1,649 | 7.7M | 1,961 | obra/superpowers |
三个值得注意的地方
一、仓库数量的领先者,中位数并不领先
Python 的仓库数量遥遥领先,几乎是第二名的 1.4 倍。但看中位数 star——也就是"随机挑一个该语言的项目,它大概有多少 star"——Python 反而落在 Go 和 TypeScript 后面。
这说明 Python 生态的广度极强:从科学计算到爬虫脚本到机器学习,什么都有人写。但广度的另一面是长尾很长,大量项目停留在刚过门槛的水平。
二、Go 的「精品率」最高
Go 的仓库数只有 Python 的三分之一,中位数却是所有语言里最高的。
一个合理的解释是领域集中。Go 的高星项目高度集中在云原生、DevOps、CLI 工具这几类——这些领域的使用者本身就是开发者,天然更容易给 star。相比之下 Python 覆盖的领域里,有大量使用者根本不上 GitHub。
三、总 star 和中位数讲的是两个故事
JavaScript 的总 star 数很高,但中位数在这几门语言里偏低。总量高是因为它有一批诞生早、积累久的巨型项目——那是历史沉淀。中位数偏低说明近年新增的项目里,能突围的比例在下降。
TypeScript 则相反:仓库数比 JavaScript 少,中位数却更高。这符合近几年新项目默认用 TypeScript 起手的趋势。
看看头部项目
数量和中位数之外,头部项目的构成也能说明生态性格。这是当前 star 最高的十个仓库:
- 1codecrafters-io/build-your-own-xMaster programming by recreating your favorite technologies from scratch.555.5k
- 2sindresorhus/awesome😎 Awesome lists about all kinds of interesting topics [NOTE: Pull requests are temporarily disabled until I have a chance to catch up with the existing ones]523.2k
- 3public-apis/public-apisA collective list of free APIs491.5k
- 4freeCodeCamp/freeCodeCampfreeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.457.7k
- 5EbookFoundation/free-programming-books:books: Freely available programming books399.9k
- 6openclaw/openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞392.8k
- 7donnemartin/system-design-primerLearn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.375.2k
- 8nilbuild/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.370.2k
- 9morluto/reaReverse engineer anything with agents, from app behavior down to native binaries.367.1k
- 10jwasham/coding-interview-universityA complete computer science study plan to become a software engineer.363.3k
值得注意的是,榜单前列有相当比例是学习资源和清单类项目,而不是可运行的软件。这类项目 star 极高但和语言生态的工程能力关系不大——分析语言生态时,把它们和框架、运行时放在一起比较是会失真的。
这份数据的边界
任何数据分析都该说清自己不能证明什么:
- 样本是"已经流行的项目",不是 GitHub 全量。所以这里的中位数是"在已经跨过门槛的项目里的中位数",比全站真实中位数高得多。
- star 不等于质量,也不等于使用量。它更接近"开发者可见度"。很多企业级关键库的 star 数远低于其实际重要性。
- 语言归类按 GitHub 的主语言判定。一个前端框架可能因为配置文件占比被判成别的语言。
- 不同语言的年龄不同。C 和 Java 的生态积累了几十年,Rust 只有十几年,直接比总量对后者不公平。
小结
如果你在做技术选型,比起"哪门语言项目多",更值得问的是:我要的这个细分领域里,有多少可用的成熟项目。全局数量在这个问题上帮助有限。
这张表会随我们每天的抓取自动更新,你也可以在排行榜里按语言和分类自己筛。
文中所有数据均实时读取自本站数据库,随每日抓取自动更新。