最近某平台总是给我推送一些应用开发者对C/C++语言的吐槽;还有一些人工智能公司的人对我说:机器学习不是用python吗?为什么用C/C++?。
这里我不想引发论战,我只想试着澄清一下大家长久以来对C/C++的误解。我想这对于那些正在艰难的选择是否学习C/C++的人来讲也许是个参考。
首先C/C++相对于其他高级开发语言来说是个“古圣先贤”,它更倾向于“机器”而不是“人类”,因此学习起来比较“不通情理”和“难以理解”;它运行速度非常快,几乎与汇编语言相当;但是对于快速变化的业务需求却疲于奔命。
因此这些特点决定了C/C++在“操作系统”、“系统软件”、“高性能计算”、“边缘计算”领域,而不是“应用开发”,有着广泛的应用。下面就让我们一瞥C/C++在这些领域的应用吧。
操作系统
几乎所有的操作系统都是由C/C++开发的,包括:apple osx,linux,windows,unix,android等。
系统软件
C/C++开发了著名的系统软件,例如 MATLAB , Adobe系列,office 系列,浏览器系列等
机器学习
所有的机器学习实现框架(例如tenssorflow,torch,onnx等)都是由C/C++完成的,然后在此之上绑定了对人类更友好的python等接口。著名的工具库opencv,Numpy 等都是类似的情况。
编译器,虚拟机,解释器,runtime
目前大部分其他高级语言的编译器,虚拟机,解释器,runtime 都直接或者间接从C/C++受益。
嵌入设备编程
嵌入式编程也是C/C++的主场,尤其是对内存和速度有极高的要求时。虽然也存在着其他部分场景使用java 或者python ,但他们也必须得到C/C++支持。
游戏和元宇宙
游戏引擎、增强现实和虚拟现实目前被C/C++(unreal)和它的“远房表弟”C#(unity)瓜分。许多酷炫的游戏也直接由C/C++开发,例如我个人最喜欢的“反恐精英”。
其他领域
我所提到的C/C++领域仅仅是冰山一角,但当系统性能是关键因素,或者当需要与设备进行近距离对话时,我觉得你可以考虑使用C/C++。
未来前景
C/C++的生命力很强,一直在不断的发展中,以适应时代的需求,但终将有老去的一天,这是无法摆脱的自然法则。Rust 正在对它发起挑战,它的终极目标是替换C/C++,但是正所谓“尾大不掉”,C/C++也许是当前世界应用最广泛的语言。因此Rust 的中期目标是“在新领域,例如区块链,使用Rust;在传统领域将于C/C++长期共存,在其之上提供封装”。
最后,你愿意加入到研发基础软件或者系统软件的研发阵营中来么?有或者你愿意做一个幕后的独行者,为其他应用开发语言提供支持么?如果是,你就毫不犹豫的学习C/C++和Rust。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/110426.html