C++ 是 2012 年不宜进入的技术点吗?

问题来自赖勇浩的博客(链接: http://blog.csdn.net/lanphaday/article/details/7223385 ), 他认…
关注者
291
被浏览
45,736
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

”不宜进入“的意思是如果你还在C++门外边,如果今年想找一门技术(或者一门语言)来学,那么学C++不见得是个回报高的选择。如果你已经在C++门里边,已经在用C++挣钱吃饭,那么意味着会少一些人来跟你竞争。进一步说,竞争少不一定是好事,公司有可能换平台或语言,让你优势变劣势。

C++目前坚守的阵地:服务端基础架构(例如淘宝OceanBase是C++写的),PC客户端的3D游戏(DirectX是提供COM/C++接口),某些嵌入式上的(准/软)实时程序,其他Java/C#/Python未能涉足的领域(会遇到C的抵抗)。如果你正好在这几个领域,我看不出有担心的必要。

2009 年 Stan Lippman 来华参加祝成科技举办的C++技术大会,他表示人们现在还用C++的惟一理由是其性能,Java/C#/Python等等的开发效率都远高于C++,但C++目前仍然是最快的语言(见 google language benchmark 论文和 shootout.alioth.debian.org)。如果你的应用领域确实在乎这个性能(比方说孟岩提到的“对抗性应用”;又比方说大规模的分布式系统,提高10%的性能就意味着节约10%的机器),那么 C++ 仍然是不二之选。

在现代CPU体系结构下,C++ 的性能优势很大程度上来自于对 memory layout 的精确控制从而充分利用 memory hierarchy 提速,这一点优势在近期内不会被基于GC的语言赶上。另一方面,如果关键路径上有 disk IO 或者 database 访问,那么 C++ 的性能跟 Java 相比就没有太大的优势了。(比方说响应一个请求,Java 实现用 1 毫秒CPU,C++ 实现用 0.5 毫秒 CPU,但是访问磁盘的代价是 10 毫秒,那么总的响应时间二者是差不多的。)