关于开发语言个人随想

2,156 阅读4分钟

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

TIOBE 公布了 2021 年 11 月编程语言榜。Python 在 11 月的 TIOBE 排名中仍然排名第一,紧随其后的是 C 和 Java,而多年来受欢迎的 PHP 则即将被挤出前十。

据悉,TIOBE 索引榜开始至今已有 20 多年。这期间,被称为“web 编程大师”的 PHP 一直处于榜单 Top10 的位置。但最近,榜单数据显示由于面临着很多竞争, PHP 在前十名的位置已“岌岌可危”。

对此,TIOBE 软件公司首席执行官 Paul Jansen解释称,“这并不是说 PHP 快要'死了',因为目前仍然有不少中小型企业依赖 PHP” 。

10.png 11.png

关于语言之争,自世界上诞生了第二个程序员开始,就没有停止过。

每每要进入哪个语言最好的争论,“ PHP 是最好语言”这句话一出,大家就笑而不语。它已经成为程序员之间不言而喻的梗。

恰逢最近的入手 Kotlin ,上手的过程跟 Java 比较,就像当初学习 Java 时跟 C 比较。喜欢比较估计是大自然在千万年时间里头培养人类出来的特点,通过比较我们能把未知的东西跟我们已知的东西进行差异化感受,从而把未知的拉近,有利于熟悉学习掌握。

不同的语言从语法,特性,优点,缺点,擅长使用的场景,限制的条件都不尽相同。诞生的时代背景,当时的条件,人的认知也不相同。

比较基本的前提,是需要在同一条件下。

这往往是很容易忽略的因素。细心观察,平时为语言争得面红耳赤的各方,基本上都是据理力争,各方的理其实都没有毛病,但就是无法保证统一条件,实际上,也比较难做到。例如这种开发语言性能高,学习成本低,跨平台,各种的好也抵不上当初另外一种语言诞生,应用,腾飞的时候,你说的这种语言甚至还没出来。喜欢篮球的朋友肯定听过科比和乔丹的比较,要是乔丹放在现在联盟如何如何,科比放到乔丹当时联盟如何如何,其实这比较本身就不符合基本前提——统一条件下。

进一步的,同一条件下也分有具体A条件和B条件,可能在A条件下这个语言比较好,但在B条件下反而比不上另外一种语言了。这里面涉及到具体问题具体场景。因此比较条件得具体到特定场景和条件。而这里难的地方就在于,要解决的问题是由多个具体场景和具体条件组成的。

所以大家都不争了,开始总结出开发语言不应该成为一种问题,以为大家开始聚焦到要解决的问题上来,虽然问题是动态变化的。

这是一种进步。不同的语言适用于不同的场景,能针对特定问题取到适用于当下的最优解。于是,开发语言就百家争鸣,百花开放。哲学课上有讲,人的认知是螺旋上升的。

那禁不住想,随着技术演进,那未来是否会出现一种语言能统一天下呢?

很多时候新语言出来能很好解决原有场景上的问题(不然也会出新语言),但是因为历史原因或者迁移成本等因素,一般都比价谨慎,但是新业务会大胆尝试,因为没有历史包袱,例如客户端开发Flutter。把时间拉长一点,这种情况不会妨碍一种语言统一天下。

如果没有那么一种统一语言,哪些因素会成为妨碍呢?

为什么公司内部团队内部能统一开发语言,为什么 Google 、 苹果公司能推动用新的语言Kotlin和Swift?

环境不一样,作用力不一样。

我个人比较相信技术的演进能带来效率的提升,第一生产力终究会抵消非技术因素带来作用力。例如人类沟通上同声传译,开发上低代码,机器学习,AI等探索,都朝着解放生产力,提高效率的方向。

如果不同母语的人之间通过技术可以实现无障碍交流,那么让电脑听明白他们之间的谈话并且自动编程实现他们想要的功能,是不是也有可能?

这个过程,人和人,人和电脑之间,用的是多种语言,还是,一种语言?碰巧这种语言也叫“ PHP ”,那是不是“ PHP 又成为世界上最好的语言”了。