首页 新闻 会员 周边

为什么国内公司宁愿改开源 JDK,也不愿从头做一门编程语言?

0
[待解决问题]

为什么直到今天,全球主流编程语言和编译器基础设施——C/C++、Java、Python、JavaScript/TypeScript、Go、Rust、LLVM、GCC 等——基本还是由欧美主导?国内为什么很难出现一门被全球开发者广泛使用、由国内主导的编程语言和编译器生态?

codigger的主页 codigger | 菜鸟二级 | 园豆:208
提问于:2026-09-18 08:34
< >
分享
所有回答(3)
3

做语言最大的成本不是写编译器,而是建生态。

一门语言要活下来,需要三样东西:足够多的库覆盖常见场景、足够好的工具链(调试器、包管理、IDE支持)、足够大的社区贡献者。这三样每一样都是以十年为单位积累的。Python 1991年发布,到2010年代才真正爆发;Rust 2010年立项,到2020年才进入主流。国内公司没有耐心等十年。

改开源JDK就完全不同了:生态现成,Maven中央仓库几十万个包直接能用,招聘时不用培训新语言,上线就是生产级。华为搞方舟编译器做了好几年,投入巨大,到现在生态也没起来——不是技术不行,是生态的壁垒比技术高太多。

另一个现实问题是:语言成功与否取决于采用率,而采用率取决于开发者愿不愿意学。开发者学一门新语言的动机是"这门语言能帮我解决的问题比旧语言好多少"。如果只好了20%,没人愿意迁移。Go和Rust能起来,是因为它们在并发安全和性能上比C++好了不止一个量级。国内要做一门让全球开发者觉得"值得切换"的语言,得先找到一个欧美语言没解决好的痛点——这个痛点目前还没出现。

所以改JDK不是没志气,是务实。在别人的地基上盖楼,比从挖地基开始快得多。

badhope33834 | 园豆:280 (菜鸟二级) | 2026-09-19 08:18
0

除非你是天才
解决更多之前语言上没有解决的问题
不然做出来的语言,还不如现有的Java、Python、C++

ycyzharry | 园豆:25970 (高人七级) | 2026-10-15 23:10
0

全球主流编程语言与编译器基础设施由欧美主导,根本原因不在于“语言设计”本身,而在于生态系统的壁垒。一门语言一旦跨过某个临界点,就会形成强大的网络效应:库、框架、工具链、人才、商业支持相互强化,后来者即便在技术上更优,也很难撼动其地位。国内面临的困境,正是这种生态壁垒在时间积累、商业激励和开发者采用动机上的集中体现。

🏛️ 历史先发与路径依赖:语言、产业与标准的“锁定”
欧美主导地位首先是一段历史的产物,并由此形成了难以逆转的路径依赖。

英语与计算机科学的深度绑定:现代计算机科学的基础文献、早期技术社区和工业标准几乎都以英语为载体。这使得以英语关键词为基础的编程语言天然成为“默认选项”,并积累了海量的英文文档、教程和社区讨论,构成了后来者的语言与资源壁垒。

硅谷作为技术 adoption 的“中心节点”:技术社会学研究指出,由于科技公司高度集中于硅谷,一个技术(包括编程语言)能否在全球流行,很大程度上取决于它能否先在硅谷获得认可。这迫使其他地区的开发者为了进入主流市场,不得不放弃针对本地需求进行定制的可能性,转而采用硅谷的标准。

国家力量与企业巨头的早期推动:许多主流语言的早期成功,离不开强大的非技术力量支持。例如,Ada得益于美国国防部的推动,Java的迅速普及离不开Sun Microsystems的强力营销,而C#则是微软生态战略的核心一环。这种来自政府或巨型企业的资源注入,是语言跨过早期“冷启动”阶段的关键。

标准制定的话语权:以C++为例,其演进由ISO/IEC JTC1/SC22/WG21委员会控制。自1991年成立以来,该委员会的核心参与者和议程设置者主要来自欧美机构和公司,控制着语言规范的走向,从而在“唯一真正实现”的层面拥有主导话语权。

⚙️ 生态系统的网络效应:真正难以逾越的壁垒
如果说历史因素是“先发”,那么生态系统的网络效应和切换成本就是维持这种优势的“护城河”。

采用新语言的主要障碍是工具链,而非语法:研究表明,开发者或企业放弃旧语言、采用新语言的最大阻力,通常不是新语言的语法本身,而是围绕它的工具链、库和框架的成熟度。一个成熟的生态意味着开发者可以“开箱即用”地解决绝大多数问题,而新语言的生态往往存在大量空白,迫使开发者花费大量精力去“造轮子”。

互补性资产与切换成本:一种语言的价值,取决于与之互补的资产(如库、框架、有经验的开发者)的丰富程度。这些互补性资产会产生高昂的切换成本。组织倾向于在“技术上邻近”的生态系统内演进,而不是随意跳转到一个全新的、生态贫瘠的语言中。这意味着,新语言即便在某个技术点上有所改进,如果整体生态无法提供对等甚至更优的“互补资产组合”,就很难促成大规模的迁移。

成功的“偶然性”与长期积累:即便是如今的主流语言,其成功也并非纯粹设计的结果,往往伴随着时代的机遇。Python在1991年发布,直到2010年代才随着云计算和AI爆发;Rust于2010年立项,到2020年才真正进入主流视野。一门语言从诞生到生态成熟,以十年为单位是常态,这需要长期的、不计短期回报的投入。

🧱 编译器基础设施:生态之下的“根技术”壁垒
LLVM和GCC的地位,比单一编程语言更为根本。它们本身是极其复杂的软件工程系统,其开发和维护门槛极高。

高门槛的“根技术”与长周期资助:LLVM的起源可清晰追溯到美国国家科学基金会(NSF)自2000年起资助的学术研究。它从一个学术项目演变为今天支撑苹果、谷歌、ARM、英特尔乃至英伟达CUDA和AI框架的基石,背后是长达二十余年的持续投入和迭代。这种长周期的、由公共资金支持的底层研究,是催生此类基础设施的关键土壤。

架构理念的胜利与商业生态的加持:LLVM的崛起,部分原因在于其“编译器即库”的模块化架构,这比GCC高度耦合的代码结构更易于集成和扩展,吸引了包括苹果在内的众多商业公司投入资源。而GCC则背靠自由软件基金会(FSF),拥有深厚的开源理念根基和庞大的历史积累。两者的主导地位,都根植于特定的组织文化、资金模式和开发者社区之中。

极端的人才稀缺性:编译器后端优化是典型的交叉学科领域,要求开发者同时深入理解编译原理、计算机体系结构(CPU/GPU指令集)和特定硬件平台。市场上具备8年以上GCC/LLVM开发经验的人才极为稀缺,编译器相关岗位的紧缺指数长期位居前列。这构成了一个极高的人才壁垒。

🇨🇳 国内困境:当“技术问题”遇上“生态与制度问题”
在上述壁垒之下,国内的探索面临着一系列特定的结构性挑战,使得“从0到1”的突破尤为艰难。

时间积累与产业阶段的错位:中国IT和互联网产业整体起步较晚。当国内公司开始具备足够体量时,欧美已经建立了稳固的语言和编译器生态。国内产业在很长一段时间里,重心在于应用层的商业模式创新,而非需要长周期投入的基础软件“根技术”。用一位观察者的话说,在“实现业务,抢占市场和用户是第一需求的时候,发明新的编程语言根本就不在日程之上”。

商业激励的缺失与“务实”的选择:编程语言本身通常以开源形式存在,难以直接产生商业收益,其价值体现在对上层生态的间接支撑上。这种间接的变现模式,使得企业和资本对长周期、高不确定性的语言研发投入意愿天然较弱。相比之下,修改开源JDK是一条“务实”得多的路径:生态现成,Maven仓库的海量库直接可用,招聘无需培训新语言,上线即是生产级。华为在方舟编译器上投入数年,但生态至今未能真正建立,正说明了“生态的壁垒比技术高太多”。

开发者采用动机的“阈值”不足:语言的成功最终取决于采用率,而开发者学习一门新语言的核心动机是“它能比旧语言好多少”。如果只是好20%,迁移的动力严重不足。Go和Rust的崛起,是因为它们在并发安全和内存安全上带来了数量级的改进,解决了C++生态中真实且巨大的痛点。国内的新语言需要找到一个欧美主流语言未能妥善解决的、足够普适且深刻的痛点,而这样的机会窗口并不常见。

部分早期尝试的“透支”与信心损害:国内并非没有尝试,但一些项目对生态建设造成了伤害。例如,“木兰”语言曾被宣传为自主开发,后被证实是基于Python的封装,这场“套壳”风波严重消耗了公众对“国产自主”的信任。易语言虽然曾有一定用户基础,但其生态后期严重萎缩,并与外挂等灰色产业关联,未能走向健康的工业化道路。据统计,曾有超过60种国产编程语言项目,但大批已随着作者停更、生态萎缩而消亡。

💎 总结
全球编程语言与编译器生态的格局,是历史先发优势、生态系统网络效应、高昂的切换成本以及“根技术”领域的超高门槛共同作用的结果。国内难以出现全球主导的语言与编译器生态,根源在于需要在长达十年以上的周期里,持续投入巨量资源去建设一个从零开始的生态,同时还要面对成熟生态的强大“引力”和国内商业环境对短期回报的现实压力。

当前,一些新的探索仍在进行,例如华为的仓颉语言(深度绑定鸿蒙生态,目前仍处于早期阶段)和IDEA研究院的MoonBit(从设计之初就强调语言、编译器、IDE的垂直整合,并借助AI辅助开发生态建设)。它们的路径表明,成功的策略可能不再是正面挑战一个通用语言的王座,而是从一个足够大、且有独特需求的“生态位”切入(如特定操作系统、AI原生开发),在新的场景中逐步培育起不可替代的生态价值。这条道路依然漫长,且最终的成败同样需要技术实力、战略耐心和生态运营能力的结合。

天道茜 | 园豆:243 (菜鸟二级) | 2026-10-22 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册。