vlambda博客
学习文章列表

C语言王者归来!获2019年度最佳编程语言!

友情提示:点击文末 “阅读原文” 可以参与留言讨论,欢迎与我们互动:)




不久前有人预测 Java, C, Python 和 C# 将有机会获得“年度编程语言”称号,现在结果已公布,相信出乎很多人意料 —— 古老的 C 语言了荣获 2019 年度编程语言称号。


不少人认为 Python 会连续两年成为 TIOBE 的年度编程语言,毕竟它的火热程度在近几年是有目共睹。然而这一次偏偏是古老的 C 语言凭借 2.4% 的年增长率获得了此称号,上演王者归来的好戏!。排名第二的是 C# (+2.1%),然后分别是 Python (+1.4%) 和 Swift (+0.6%)。


给人感觉十分低调的 C 语言居然是如此的热门,原因为何?TIOBE 认为这种趋势背后的主要驱动力是物联网(IoT)和当今发布的大量小型智能设备。当将 C 应用于对性能至关重要的小型设备时,它的表现会十分出色。另外,C 语言也比较容易学习,并且每个处理器都有一个 C 编译器。

注:TIOBE 编程社区索引是编程语言受欢迎程度的重要指标之一。索引每月更新一次。评级评分基于诸如 Google、Bing、Yahoo!、Wikipedia、Amazon、YouTube 和 Baidu 等流行的搜索引擎。TIOBE 榜单只能在一定程度上说明某编程语言的热度,而并不能说明编程语言的好坏。

编程语言趋势变化图



编程语言 20 年趋势变化折现图



C语言王者归来!获2019年度最佳编程语言!

编程语言排名变化图表



C语言王者归来!获2019年度最佳编程语言!


历年年度最佳编程语言



为什么 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 语言不在同一赛道上。

以上是 C 语言顺势发展的原因,而那些发展较好的其他编程语言,大部分都把优势集中在了提高程序员的开发效率上。这个世界上不存在“开发容易,运行快”的语言,开发容易毕竟来源于对底层的一层一层又一层的包装。

再说平台领域,每个平台都推出自己专属的语言。Windows 会继续支持 C#,苹果偏爱 Swift, Android 推出 Kotlin,Google 用 go。而万年老大哥 Java,虽然可以适配任意平台,但毕竟不是平台的亲儿子,未来的趋势变化应该和跨平台应用和大型非实时应用的发展紧密相关了。

学习C语言的前景

都说“C生万物,编程之本”,这足以看出C语言的重要性

功能强大:学习C语言可以为学习其它语言打下基础

不可替代:语言地位四十多年未被撼动

未来可期:众多世界技术大牛都是C语言出身

学习C++的前景

C++ 本质上就是 C 语言的面向对象版本。虽然现在并不是需求最多的语言,以后也不会是,但是在它的领域中,它是无可替代的。

C++的应用领域主要有游戏开发、嵌入式开发、桌面开发、操作系统开发(要配合C语言)等。这些领域都是对很接近系统底层、对运行效率要求很高的,而C++程序正好有很高的运行效率。有人说C++应用层比不过Java,底层比不过C语言,所以C++迟早得消失,其实这种说法是很不合理的,毕竟C++支持面向对象,所以有些地方用它比用C语言好。

C++比起Java等应用层语言来说,标准库的支持更弱,但是C++拥有大量的第三方库,如Boost、Qt等,这两个库都有免费版本。2011年发布了C++11标准,这对C++是一次巨大的增强,从TIOBE编程语言排行榜的变化趋势来看,C++也因为11标准的逐渐普及而变得更受欢迎。

C++永远不可能取代Java成为最受欢迎的语言,但是也没有语言能够来蚕食它的应用领域。虽然历史上有很多语言曾经号称要取代C++,D语言尝试过,Vala、Cyclone、Limbo、Bitc等几乎没人听过的语言尝试过,GO语言也尝试过,但是没有一个语言成功了。最近又有一个名叫Rust的语言放出大话要取代C++,但是我相信它一样做不到。这些语言都用安全性做噱头来宣传它们比起C++的优势,并且号称拥有堪比C++的程序执行效率,但是安全性、开发效率与运行效率是不可兼得的,C/C++注重运行效率,于是成了底层开发的首选,Java注重安全性和开发效率,于是制霸应用层多年。挑战C++的那些语言高不成低不就,所以死的是它们而不是C++。

总之,只要底层开发的需求还存在,C++就不死,因为没有其它语言能取代它。

其他一些表现不错令人惊喜的编程语言:Swift(从第 15 名上升至第 9 名)和 Ruby(从第 18 名上升至第 11 名)。Swift 也已是稳定排名前十的编程语言,而 Ruby 也似乎很快就会进入 TOP 10。

当然还有一些潜力巨大但在 2019 年却没获得突破的编程语言:Rust 仅前进了 3 名(从第 33 名上升到第 30 名);Kotlin 则掉了 3 个名次(从第 31 名跌到第 35 名);Julia 甚至失去 10 个名次(从 37 名跌到 47 名),口碑甚好的 TypeScript 也仅仅是前进了一名(从第 49 上升至第 48)。


你最喜欢的编程语言是哪一种呢?