近日,2022年6月TIOBE编程语言排行榜正式发布。不出意外的是,Python继续稳居榜首,C语言、Java、C++、C#分列第2-5位。相比去年同期,C++的占有率大幅提升,而Java的热度和流行度似乎正在逐步减弱。从目前的的趋势来看,C++超越Java的可能性正在增加。
在最新的一期榜单中,TIOBE官方也用“C++即将超越Java”的醒目标题,点出了这一重大变化。众所周知,Java一直被奉为编程语言中的常青树,但是随着其他语言的追赶,Java的地位正遭受着巨大冲击,业界甚至发出了“Java老矣,尚能饭否”的质疑声。
在上个月的榜单中,TIOBE的CEO Paul Jansen就做出预测,C++将会是下一个超越Java的语言。通过对比不难发现,C++的占有率达到9.63%,并以2.26%的增速,大踏步地追赶身前的Java。反观Java,其占有率下降了1.07%,仅占比10.47%,与身后的C++的差距也被缩小至0.84%。
究其原因,Paul Jansen表示:“C++具有高性能的高级编程是其表现出色的主要原因。”需要指出的是,C++语言每三年都会修订一次,这些修订还包括了开创性的新特性,使得该语言能够与Java、C#不相上下,且没有垃圾收集器的性能损失。
此外,51CTO注意到,从2022年4月到6月的TIOBE编程语言排行榜来看,C++的占有率一直在上升,而Java的占有率却在不断下降。
如下图所示,C++语言在4-6月的增速分别为1.14%、1.01%、2.26%,而Java的增速依次是-0.41%、-0.74%、-1.07%。
从演进趋势来看,C++正在迎头赶上,而Java却是节节败退。
有意思的是,Java的前身正是C++。
让我们将时间拉回至三十年前,Sun公司的一位工程师James Gosling带领其团队基于C++,对其进行改造。他们去掉了C++一些不实用的功能和特性,又结合嵌入式系统的实时性要求,开发出一款面向对象的Oak语言。
经过三年的迭代和升级,又恰逢互联网崛起之际,Oak华丽变身并更名为Java。此后,由于其具备面向对象、“写入一次,随处运行”的可移植性等特点,Java迅速名声大振。
事实上,Java由C++衍生而来,且Java语言的对象模型几乎就是C++对象模型的简化版。但是二者之间还是存在着明显的差异的。
总的来说,Java其实是由C++发展而来,保留了C++的大部分内容,其编程方式类似于C++,但是摒弃了C++的诸多不合理之处,从根本上解决了C++的固有缺陷。使得Java句法更清晰,规模更小,更易学,同时更具健壮性、安全性和平台无关性。
想要了解两种语言未来的发展趋势,就不得不探讨其不可替代性。针对“C++的哪些特性是Java不能取代的”这一话题,国内程序员小灿(化名)有话要说:
“我的工作是游戏服务端的开发。没有真正做过服务端的人,很难体会到那种成就感——看着你写的程序,运行在一台普通的电脑上,然后可以支撑上千人流畅地游戏。”
根据其工作经历,他指出,你可以预测要用到的内存,可以预测需要的网络流量,可以想象出,每一份数据如何在服务器和客户之间流淌,可以描绘得出,每一个int,它在内存中是怎样分布的。
“真的是优雅,像一个无限次可导的映射一样优雅”,正如小灿所说,“那种感觉就是,你能控制一切。C++仿佛一把锋利的屠龙刀,像切黄油般划开恶龙那坚韧的鳞甲,让你优雅得将一条龙分解掉。”
另一位程序员“West”认为是性能,他表示,一般来说,虽然Java花了很多年时间努力使自己的性能接近C或者C++,但Java与原生应用还是存在一定的性能差距,这种差距对于普通的应用并不明显,但对于性能要求较高的应用来说,就有点明显了。
他强调,3D游戏通常都要挖掘硬件能力到极限,这类游戏就是配备当时最好的硬件还显不够,那么Java对性能的影响就不能忽视了。所以其实现在就算是Android这样的Java为主的平台,其上的很多游戏仍然是使用C++写的。
这两种语言:前者难学、难上手,但竞争小一些,内卷比Java好得多。后者好学一点,也比较容易上手学,但竞争大,内卷严重。
你说学哪个,主要还是看你自己。
事物的发展都是循序渐进的,编程语言亦是如此。无论如何,两种编程语言都在不断的演进和升级中得到优化。对于从事不同工作的程序员来说,C++和Java也各自有其妙处。至于C++在未来是否会超越Java的位置,我们拭目以待!
https://www.icode9.com/content-1-700319.html
https://www.tiobe.com/tiobe-index/
作者:莫奇
来源:51CTO技术栈