数量不等于分量:八大语言开源生态的真实对比
比较编程语言生态时,最常见的说法是「哪门语言的项目最多」。这个问题好回答,但价值有限——它只告诉你数量,没告诉你分量。
我们持续追踪 GitHub 上超过 6.7 万个高星仓库,并每天记录它们的 star 变化。把这份语料按语言拆开,能看到一些比"谁的项目多"更有意思的东西。
先看原始数据
下面这张表是实时从我们的数据库读取的,不是截图:
| Language | Repos | Total stars | Median | Top repo |
|---|---|---|---|---|
| Python | 11,741 | 56.5M | 1,998 | public-apis/public-apis |
| JavaScript | 8,425 | 36.2M | 1,932 | react/react |
| TypeScript | 6,387 | 38.3M | 2,283 | freeCodeCamp/freeCodeCamp |
| Java | 4,168 | 15.4M | 1,913 | krahets/hello-algo |
| Go | 4,089 | 20.7M | 2,295 | avelino/awesome-go |
| C++ | 3,429 | 14.9M | 2,011 | tensorflow/tensorflow |
| C | 2,533 | 9.9M | 1,943 | torvalds/linux |
| Rust | 2,278 | 12.2M | 2,138 | ultraworkers/claw-code |
| C# | 1,899 | 6.7M | 1,997 | 2dust/v2rayN |
| PHP | 1,662 | 5.5M | 1,834 | danielmiessler/SecLists |
三个值得注意的地方
一、仓库数量的领先者,中位数并不领先
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.529.5k
- 2sindresorhus/awesome😎 Awesome lists about all kinds of interesting topics487.1k
- 3freeCodeCamp/freeCodeCampfreeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.452.2k
- 4public-apis/public-apisA collective list of free APIs451.7k
- 5EbookFoundation/free-programming-books:books: Freely available programming books392.6k
- 6openclaw/openclawYour own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞 383.6k
- 7nilbuild/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.362k
- 8donnemartin/system-design-primerLearn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.358.5k
- 9jwasham/coding-interview-universityA complete computer science study plan to become a software engineer.356.7k
- 10kamranahmedse/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.310.1k
值得注意的是,榜单前列有相当比例是学习资源和清单类项目,而不是可运行的软件。这类项目 star 极高但和语言生态的工程能力关系不大——分析语言生态时,把它们和框架、运行时放在一起比较是会失真的。
这份数据的边界
任何数据分析都该说清自己不能证明什么:
- 样本是"已经流行的项目",不是 GitHub 全量。所以这里的中位数是"在已经跨过门槛的项目里的中位数",比全站真实中位数高得多。
- star 不等于质量,也不等于使用量。它更接近"开发者可见度"。很多企业级关键库的 star 数远低于其实际重要性。
- 语言归类按 GitHub 的主语言判定。一个前端框架可能因为配置文件占比被判成别的语言。
- 不同语言的年龄不同。C 和 Java 的生态积累了几十年,Rust 只有十几年,直接比总量对后者不公平。
小结
如果你在做技术选型,比起"哪门语言项目多",更值得问的是:我要的这个细分领域里,有多少可用的成熟项目。全局数量在这个问题上帮助有限。
这张表会随我们每天的抓取自动更新,你也可以在排行榜里按语言和分类自己筛。
文中所有数据均实时读取自本站数据库,随每日抓取自动更新。