1

Why C++ ?

 2 years ago
source link: http://kevinnan.org.cn/index.php/archives/688/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1、C++ 的应用场合

  • 大型桌面软件(Adobe、Chrome、Office)
  • 大型服务器后台、中间件(游戏服务器、消息中间件)
  • 游戏(游戏引擎 Unity)
  • 实时控制(机器人操作系统 ROS、自动驾驶系统、无人机飞行控制器)
  • 嵌入式(Qt)
  • 数据库、编译器

我们可以发现以上这些应用场景和大部分程序员平常的开发场景有点远,而且其中有些场合目前看来又被取代的趋势。比如桌面软件开发,现在听过 MFC 的程序员已经不多了,用过 MFC 的就更少了,目前最流行的方式是使用 JavaScript 开发。另外一些游戏客户端也是使用 C# 而不是 C++ 开发。但是这些应用中需要性能的组件依旧是使用 C++ 开发,其他语言调用 C++ 编译后的 DLL。

看起来 C++ 有点危险...而且还有被上下夹击的趋势。

  • 如果是专注于实时性能和最大化内存利用,C 依旧是首选,嵌入式很多都是用纯 C 来开发,而且大部分开发人员也更加熟悉 C 语言。
  • 如果专注于抽线和开发效率,那么 Python 这类脚本语言则要方便很多。
  • 如果是 GUI 编程,JavaScript 和 C# 是以后的趋势
  • 如果是游戏领域,在游戏客户端方面除开游戏引擎是 C++ 开发的之外,其他用 C# 写也没什么问题,比如王者荣耀

不过,真的是这样吗?我们再看 C++ 的核心竞争力...

2、C++ 的核心竞争力

抽象、性能、功耗

抽象意味着 C++ 相比于 C 语言,你可以拥有更高的效率,同时不会因为抽象而损失性能。

随着移动设备的普遍使用,人们更普遍使用内置电池而不是插着电源使用电子设备,从而引了手机应用功耗高、电池电量不足的问题,而这个问题在下一代电池技术出现之前是无法彻底解决的。而 C++ 在功耗这方面的优势是相当高的。另外随着互联网的普及,人们的上网需求开始呈指数增长,服务器端的压力也变得很大(服务器供电、空调散热供电),与 Python 这类脚本语言相比,C++ 在部署上有望节约 90% 的硬件和电费,虽然 C++ 的开发代价相较于 Python 会高很多,但使用 C++ 依旧是划算的。

前面提到王者荣耀的客户端是用 Unity + C# 开发的,但是它的服务器端依旧是用 C++ 开发,而且开发初期为了更快地拿到产品的原型抢占市场,需要用 C# 这种开发效率很高的语言实现,但是在后期,等蛋糕分割完后,腾讯开始把之前的一些模块逐步使用 C++ 来替代,这当然是为了降低应用的功耗,提高性能。

3、什么时候应该用 C++

从以上的分析可以看出,C++ 最核心的竞争力就是高性能同时拥有一定的抽象能力,它是解决性能问题的利器,而且短期内没有对手。尤其是在大公司和金融公司这类对性能极度渴求的地方。

所以,我的个人看法是,如果你的兴趣在应用开发,比如大型网站、桌面客户端等,那么 C++ 不会是你的最优选择。但是,如果你对底层感兴趣,你喜欢性能优化的挑战,你享受后台分布式服务器的错综复杂,你乐于开发性能优异的库供其他人使用,那么欢迎你来到 C++ 的世界。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK