C++的实际应用

前言

首先说明,这是一篇务虚的文章,没有什么技术理论和思想,也没有什么实际技术的分析和学习,只是一篇从个人角度阐述看法的文章。

一、c++的面临的环境

c++从诞生之初,其实就是代表着一种编程思想的进步,这是从面向结构编程向面向对象编程的一种跨越。但是这种跨越不是完全的、彻底的。这也可以理解,所以c++同时支持了二者的实际应用场景。
但是,随着一些更加高级的语言的出现,如Java、C#、Python、Golang等,c++的应用在很多领域飞速降低,特别是在近20年来大爆发的互联网(包括移动互联网)上,c++基本上处于一种比较尴尬的境地。
而随着近些年来,一些更新兴的语言和技术框架的兴起,c++被大家一直认为比较传统的应用领域,也面临着更多的竞争和挑战。这使得c++不得不求新求变求发展。

二、c++应用

这里的应用指国内的c++应用,可以对执着的想要学习c++的同学们一个参考和借鉴:
1、操作系统和底层
把操作系统和底层作为c++的传统的应用,其实略微有一些不太有底气。其实OS更多是用C来完成,底层的驱动和一些软件,有些是用C有些是用c++完成的。特别是在Linux上,驱动很多都是C,但c++也兼容C,这个看怎么想吧。
另外有很多基础支持的软件和工具软件也可以划到底层,比如对音视频的处理软件,图片的处理软件等。还有开发的一些软件如编译器、解释器等都归如此类。不过这种开发,国内就比较少了,一般也多是倾向于二次开发。

2、嵌入式和硬件相关
在这个场景下,基本上用C/C++属于是平分秋色,偏底层一些用C的多,偏上层c++比较多。一些界面用Qt来完成,在早期的嵌入式开发上,基本就是Qt界面包打天下。直到后来苹果和安卓出现,才把手机开发,从嵌入式开发专门独立出去。而且手机应用开发比嵌入式开发从数量和质量上,都是超出非常多的。不过直到现在苹果手机上开发,c++仍然是占有一席之地,Swift还没有包打天下。
另外涉及到一些具体的硬件开发,比如读写一些硬件的数据并处理分析,好多都是用c++开发完成的。自从WinCE撤出后,基本上在硬件开发上,只有C/C++系列了。

3、网络服务端
其实这里主要是指TCP/IP,UDP等的编程,这种高并发的网络服务端,如QQ、微信这些社交软件的服务端后台,基本都是c++为主,当然这些年来随着技术发展可能分布式技术的应用,使得c++的开发可能不再一统天下,但主流仍然还没有动。
另外比如Http服务端类似这些底层协议的实现,大多也是c++来完成的,这当然有一定的历史原因,大型软件一旦完成,轻易无法重写。

4、游戏
游戏也是c++应用的一个重要场景,目前看来,基本上大型软件用c++来完成相关的网络通信,数据解析等。图片的处理和分析这方面c++天生也有优势,所以游戏的引擎一般也是用c++来实现。

5、大型软件和重写成本高的领域
一些大型软件一般对效率对空间要求都非常高,所以一般核心也都是用c++来完成。另外有一些大型软件出现比较早,用c++已经完成,再重写成本太高昂,典型的就是银行业,很多核心的软件就是c++写的。
另外数据库行业用C/C++的也非常多,即使到现在,传统数据库如MySql等和一些NoSql型数据库如Redis、RocksDB等都是用C/c++来完成的。数据库行业归到底层开发也行,归到大型软件中也可以,划分本身就没有特别明确的标准。
另外比如一些组态软件,应用面本身就越来越小,而其重写的成本又比较高,综合性价比,基本也没人重写。

6、部分中间件和框架引擎
这个就不占主流了,比如一些消息中间件如ZeroMQ ,一些浏览器的内核或者说引擎如V8等等这些吧,这类软件的特点一般在国内是二次开发为主,也就是说是在别人开源的基础上不断的完善或者增加一些功能。最典型的就是浏览器了,有兴趣大家可以搜搜,基本上都是用的那么一两家的内核。

7、新兴行业
另外在新兴行业,c++的应用也有可圈可点之处,比如区块链,比特币、EOS就是用c++完成开发的。但它的应用场景仍然是大多限于底层开发,上层应用基本都是js或者其它框架或语言。还有AI,Tensorflow底层实现就是用c++来完成的,但应用基本是用Python居多。
最近重新又火爆起来的IOT底层和中间层包括不少的上层,都是用c++来实现的。车联网,框架基本都是c++来实现的。

三、c++面对的竞争和未来

先说个人的看法和结论:c++面临的竞争越来越激烈,应用场景在竞争中不断缩小,但优势场景仍然非常稳固,在新的应用场景不断拓展。
c++在互联网方向上,特别是前端,除了底层几乎是一无所有了。而且,随着新兴的Rust语言的出现,前端底层的未来仍然不是特别光明。而随着Rust的稳定性和大公司的不断的加持光环,c++的一些固有优势场景也有可能会丧失一些优势,比如数据库行业,有公司就宣布全部用Rust重构了。但是作为c++程序员的一个优势在于,目前Rust程序员,大多数都是从c++程序转过去的。
c++自身的改变和发展也是有目共睹的,逆水行舟,不进则退。这也是c++目前面临的实际的大环境。包括在嵌入式上,不少的其它语言也都在向上面迁移,特别是在一些对效率要求比较低的场景下,更是如此。
c++的未来,希望是很大的,但竞争一定是非常激烈的。如果不能快速的适应软件发展的方向和实际开发的需求,c++就有可能败下阵来。世界上本来就没有常开不败的鲜花,但是只要能够清醒的看清楚自己,c++的未来可期。

四、总结

这里总结的c++的应用是笔者亲自接触或者看到的比较重要的应用,其它一些没有经历看到的不代表没有,更不代表不重要。有一些同学愿意学习c++这门偏向于底层的语言,不管出于何种目的,都是值得赞佩的。c++的复杂性和安全性,一直是让人们望而却步的主要原因。但是,不少应用场景对效率和空间的要求非常苛刻,特别是对内存和CPU的应用、管理都有极高的要求。这就导致很多高级语言无法达到这个目的,c++的用武之地和魅力也正在于此。其实这就是一个成本和收入的对比的问题,如果收入和成本达到阈值设定,那么语言的选择就不是问题了。
没有最好的,只有最合适的,这才是真话。
最后来一句“PHP是世界上最好的语言”。

你可能感兴趣的:(C++,感悟,c++)