
Java
随便聊聊吧。你说的这个理由——硬件的不断升级——其实早在二十多年前就被
Java 那些语言阵营反复提过了。假设一万年后,硬件性能提升了整整一万倍,那时候你的
Python 程序运行效率可能已经和一万年前的
C++ 差不多了,但即便如此,它依然会比同时代的
C++ 慢!这是因为时代在进步,我们的需求也在水涨船高。回想 25 年前,我买了一台破旧的
电脑,因为囊中羞涩买不起巫毒显卡,所以玩不了当时的大作;前几天,我又入手了一台新
电脑,虽然还是买不起最新的 4080 显卡,但它比起 25 年前那台
电脑强太多了,可即便如此,我还是玩不了当下最热门的游戏——除非你让我回去玩 25 年前的老游戏。同样的道理,25 年后,我们也不能仅仅满足于用
Python 写个扫雷程序不卡顿就沾沾自喜。对于一些对性能要求不高的任务,硬件的不断升级确实可以让原本必须由
C++ 完成的工作勉强用
Python 来替代。然而根据前面提到的原因,
Python 最多只能替代那些不太重要的边缘部分,就像当年的
Java 一样。事实上,
Python 确实在某些领域实现了替代,但它并不是取代了
C++,而是取代了
Java。即使我们完全忽略运行效率,只讨论编码的难易程度,我想问问你是否用
Python 写过规模较大的软件?它在小项目上的优势,在大项目中往往会变成劣势。比如动态类型这一特性,随着项目规模增大,问题就会逐渐显现出来。也许其他人有不同的体验,但以我的能力而言,只要
Python 工程稍微大一点,我的脑力负担就会成倍增加,甚至呈指数级增长。这种现象其实在所有标榜简单的语言中都很常见。看看
Java 的发展历史就知道,一开始它以简陋的语法为卖点,结果在实际工程中却逐渐演变成了一团乱麻。所以,如果你是因为简单才选择了
Python,那就别指望它在尝试承担
C++ 那种级别的任务时还能保持所谓的简单。想做到既简单到不用学就会,又能完成复杂到足以拿诺贝尔奖的任务,那是不可能的。至于硬件性能过剩的可能性(也就是性能过剩可能会抹平不同语言之间的运行效率差异)…… 我给自己设定了一个小目标:先让
电脑能够流畅运行所有游戏,接着能单机训练出像
ChatGPT 这样的模型,然后是单机模拟一个
人类,再进一步模拟全球 60 亿人口,最终希望它可以模拟整个宇宙。