近日,TIOBE 官方发布了 2020 年 1 月编程语言排行榜单。
所有人都认为 Python 将连续第二年成为 TIOBE 的年度编程语言。但这一次 C 语言凭借 2.4% 的年增长率获得了这一奖项。
名词解析:TIOBE 指数
TIOBE 编程社区索引是编程语言受欢迎程度的重要指标之一。索引每月更新一次。评级评分基于诸如 Google、Bing、Yahoo!、Wikipedia、Amazon、YouTube 和 Baidu 等流行的搜索引擎。
编程语言趋势变化图
编程语言 20 年趋势变化折现图
编程语言排名变化图表
历年年度最佳编程语言
为什么 C 语言仍然很热门?
C 语言是一种通用的程序设计语言。它同 UNIX 系统之间具有非常密切的关系。C 语言是在 UNIX 系统上开发的,且无论是 UNIX 系统本身还是其上运行的大部分程序,都是 C 语言编写的。但是 C 语言并不受限于任何一种操作系统或机器。由于 C 语言使用用来编写编译器和操作系统,因此被称为“系统编程语言”。
计算机体系有一个较为通用的分层方法:
脚本层级:Python、JavaScript、Ruby 等
应用层级:Java、C++、C# 等
系统层级:C 语言
汇编层级:机器语言、汇编语言
硬件层级:计算机硬件实体
这五个层级由上到下逐层依赖,大热的 Python 属于脚本层级的编程语言,Java、C++ 属于应用层级的编程语言,而 C 语言是系统层级的语言,可见其在计算机体系中不可替代的位置。
说回编程语言本身,对所有的编程语言,其实最后的目的就是两种:提高硬件的运行效率和提高程序员的开发效率。
但因为计算机体系的特性,所有的编程语言都无法同时兼顾两个方面。Python 和 Go 语言因为开发效率高在近几年发展很迅猛,而在提高硬件的运行效率这一块儿,C 语言表示在座的各位都是弟弟。
虽然 C 语言已经把硬件的运行效率压缩到了极致,但随之相对应的问题就是使用体验较差。所以,C 语言唯一的目的可能就是快。有人说:C 语言只关心程序飞的高不高,不关心程序员飞的累不累。这句话好像没啥毛病。
而 C 语言近期快速反扑的原因,主要是物联网(IoT)和当今发布的大量小型智能设备。当将 C 语言应用于对性能至关重要的小型设备时,C 语言的优势就体现的很明显了。还有 AI、机器人、自动驾驶等等,这些都是基于 C 语言的核心应用场景。
随着技术的发展,下一阶段 C 语言的地位应该还是比较稳的,并且会继续逐步上升。吃到了这一波儿技术红利的还有 Python,但其实和 C 语言不在同一赛道上。
其他编程语言发展现状
在 TIOBE 榜单中,还有很多有趣的数据变化。
Swift 从第 15 名提高到了 第 9 名,看趋势近期也能稳入前十了;Ruby 也从第 18 名提高到了 11 名。而一些咋咋唬唬本以为排名会突飞猛进的语言,其实表现平平,甚至有的遭遇了滑铁卢:
Rust 虽然排名提高了 3 位,但仍只位列第 30 名;
Kotlin 从第 31 名降到了第 35 名;
Julia 从第 37 降到了第 47 名;
难兄难弟 TypeScript ,排名 48...
我们刚才分析了 C 语言顺势发展的原因,而那些发展较好的其他编程语言,大部分都把优势集中在了提高程序员的开发效率上。这个世界上不存在“开发容易,运行快”的语言,开发容易毕竟来源于对底层的一层一层又一层的包装。
再说平台领域,每个平台都推出自己专属的语言。Windows 会继续支持 C#,苹果偏爱 Swift, Android 推出 Kotlin,Google 用 go。而万年老大哥 Java,虽然可以适配任意平台,但毕竟不是平台的亲儿子,未来的趋势变化应该和跨平台应用和大型非实时应用的发展紧密相关了。
你现在主要用的编程语言是什么?为啥?