编程语言的对比和排名由来已久,是IT领域一个永恒的话题。各个语言在不同的发展阶段被开发出来,发挥各自的特长,又随着环境的变化不断变化。梯度排行反映了语言的热度,也在一定程度上反映了语言的价值,对项目的技术选型有参考意义。

T0系列:Go。

天然的支持多任务,Go通过他的内置协程Goroutine和简单的并发语法,实现在语言层面支持并发,在所有的编程语言中仅此一例;Go的性能优越,Go的作者具有C的基因,创作的Go语言的内部调度器可以最大限度的利用计算机资源,而且完全支持内嵌C代码,即可以在Go代码中编写C代码,所以有最接近C的运行效率,是所有高级语言中性能最好的。虽然在使用领域上没有其他语言那么宽的领域,但在这以web为主流业务和追求极致效率的时代,Go语言仍然以其以其超高性能在高级语言行列完全碾压其他语言,稳居T0。

T1系列:Python、Java。

这两个语言是目前市场上应用最广的两个语言,几乎平分秋色,两只之间的比较也由来已久。在Web服务器端,Java的运行效率比Python快,当然就比Python重,占用内存比Python高,Python灵活轻巧,开发效率比Java快,语法也比Java简单,所以整体看在Web服务器端各有优劣。在多任务上,Python原生支持协程,Java则原生没有协程的概念,但是Python的主流解释器CPython有个全局解释器锁,没法真实实现多线程,Java则没有这个弊端,比较下来还是各有千秋。
在其他领域,Python比Java更适合做运维、自动化测试、爬虫,在移动平台上,Java原生支持Android开发,Python不行。在大数据方面,大数据的很多框架都是用Java实现的,Java构建了大数据的生态大厦,Python只能通过接口来使用这些框架。在人工智能方面,Python因其语法友好,解释性好,适用于对接人工智能各领域的重型C/C++专业库,使开发人员能够专注于业务层面,而Java的专业库比较复杂,使用起来也不方便,开发效率和难度偏高,没有Python有优势。
总的来说,Python起点低,但上限高,在人工智能领域,没有专业知识,那些代码读起来就是天书,同时这个领域处在最前沿,还在不断发展,各种专业理论知识和计算机结合的算法和模型层出不穷;Java起点高,语法比Python复杂,但上限只到大数据分析,再往上的人工智能领域比较乏力。从趋势上看,Python有赶超Java的趋势。
这个梯度的语言不仅能在web领域占主流,还能在“后AI”时代的大数据分析和人工智能方面发挥特长,同时也有其他领域的应用,兼具大而全,专而精的特点。

T2系列:JavaScript/TypeScript、PHP、Ruby。

JavaScript缩写为JS,是轻量级的解释性脚本语言,通用的浏览器端语言,运行在浏览器上,可以嵌入HTML页面中,无需等待服务端响应即可立即运行,基于对象和事件驱动,同时可做服务端(Node.js)和移动端(React Native、Weex)。而TypeScript是JavaScript的强类型,简称为TS。Node.js以事件驱动处理并发,这就导致在网络IO并发上很有优势,效率非常高,适合做web服务端,效率上高于Java和Python,低于Go。但是以单核的模式运行,处理不了CPU密集型的IO,不能充分利用CPU,可靠性低,一旦代码某个环节崩溃,整个服务都崩溃。
PHP全称是Hypertext Preprocessor,即超文本预处理器,运行原理有自己的四层实现体系,运行速度和Python属于同一个量级,算比较慢的。但是PHP是单进程的程序,不支持多任务,也而没有协程的概念,后期优化空间局限性非常大,而且只适合做web,其他领域都不行。语法上,Java和Go是类C的,Pthon是类人的语法,PHP自成一体,存在函数名混乱的问题,接口比较粗糙,和Java、Python相比逊色很多。
Ruby,是个日本学者开发的语言,语法哲学是“自然”,和Python的“简单”有的一拼,是最纯粹的面向对象的语言,其Web框架Ruby on Rails(简称Rails)是个前后端通吃的全栈框架,支持多任务中的进程、线程,但是不支持协程,运行效率比Python低,在性能和内存占用上不太理想。是个曾经非常热的语言,但是优势逐渐被Python替代,沦落到T2系列。
这个梯度的语言有着的自己的特点,但是适用领域不够全面,或者优点不是很突出。

T3系列:C#、Swift、R。

C#读作C Sharp,是微软为了对抗Java推出的一款产品,拥有Java的所有优点外,还支持做图像界面。基于Windows的平台,游戏开发和VR都用的C#,本来是个很好的语言,但也是由于微软的原因,运行需要.net框架的支持,原生不支持在Linux上运行,格局小只能居于T3。
Swift是苹果公司推出的用来在苹果生态的平台上开发应用的语言,只能在苹果平台运行,只能开发开发应用,是苹果生态绕不开的语言。
R,这个语言单名一个字母,是由统计学家开发的,适合做数据统计分析和数据可视化,是统计学领域最好的语言。缺点是不适合处理大文本数据,数据量大了以后占用内存,也不适合做Web服务端开发,是个工具属性的语言。
这个梯度的语言不具有广泛适用性,只在特定领域或平台适用。

这里的编程语言只纳入了主流编程语言,对与C/C++这种起点高,性能强,适用领域广泛的“官方”语言不再参与梯度排名,非要排,也是处于T0;使用面太窄、市场份额太小或太新的语言也没列在排名里,比如SQL、Rust、Objective-C、Kotlin。语言生态内,不同的框架之间差异也比较大,不能绝对去比较。
Python和JS是我司目前主要使用的语言,和我司的主流业务Web和爬虫相契合,也方便后续與情模型技术的调研,这个梯度排名也方便大家对我司的技术有个大致定位。
此外,梯度排名也反映了技术跃迁的方向,同梯度、同平台之间的语言是互相“看不对眼”的,比如Python、Java同为后端语言,同为T1梯度,在Web开发的领域下,相同的问题彼此都有解决方案,有各自的语言哲学,互有优缺点,当然就没必把一个Python架构的项目重构成Java,或Java项目重构成Python,也很少出现Python程序员去学Java的情况。但同为Web领域T2的PHP和Ruby,就妥妥的被Python、Java看不起了,其没有任何一项优点能超越T1,已经处于淘汰的边缘,会逐渐消亡,沉于历史。整体来看,程序员的学习发展,项目的重构,更偏向于向上跃迁。
可见,同领域的语言会不断挤压和淘汰,比如Web领域的Go、Python、Java会挤压淘汰PHP、Ruby;而不同领域的语言梯度取决于其平台产品,C#取决于微软公司的Windows产品,Swift、Objective-C取决于苹果公司的MacOS、IOS产品(Swift正在淘汰Objective-C),R语言取决数据分析的热度,JS只要网页端的浏览器还在就会一直存在。

编程语言拟人化:https://v.douyin.com/NrGjDBa


Ruby
https://www.ruby-lang.org/zh_cn/about/
Ruby/Rails为什么不如以前热门了?https://zhuanlan.zhihu.com/p/25007358
https://clwy.cn/guide/documents/rails
https://www.zhihu.com/question/19599358
https://mayaaaaasama.com/programingget/2021/10/28/rubyorphp/
https://blog.csdn.net/weixin_36444661/article/details/113539257
https://ruby-china.org/topics/35326

https://www.zhihu.com/question/19552194
https://cloud.tencent.com/developer/article/1412312
https://cloud.tencent.com/developer/article/1448087

https://www.w3cschool.cn/article/94926388.html
https://zhuanlan.zhihu.com/p/75450149
https://www.bilibili.com/read/cv2283832
https://zhuanlan.zhihu.com/p/135201642