日存档: 2 2 月, 2012

return of cpp

正好我前段时间看到一个视频,这个演讲视频 还比较著名,这个演讲者是Exceptional C++ 和 C++ Coding Standards 的作者,还是ISO C++ 委员会的Chair,C++/CLI首席架构师,还是Mi crosoft的软件架构师,他叫Herb Sutter,他的 这个演讲视频是 C++ and Beyond 2011上的一 次公开演讲,题目是——Why C++? (如果你觉 得那里的视频比较慢,你可以看优酷上的视频) (英文听力好的同学可以看一样,因为都没有中 文字幕)

我觉得这篇文章就足够可以说明很多问题了, 所以,我把Herb的演讲幻灯片截了几页放到这 里,并做上一些注释,算是一个演讲内容摘要 吧。

1) 为什么C++?因为 Performance per $,也 就是说performance 就是钱,这个分成三个方 面,

◆ 电源,芯片的耗电量,移动设备的耗电量, 家用电脑的耗电量都和钱有关系。

◆ 资源,家用电脑和移动设备上的处理器资源 有限,因为要让一般消费者买的起。

◆ 体验,在更小的设备上会有更好的体验,有 更好的体验就可以挣更多的钱。

2)C++的进化分成三个时代:

1979 – 1989:研究C的对象能力。主要是为C+ +做准备

1989 – 1999:C++成了主流。

1999 – 2009:Coffee-based语言(Java, .NET)出 现了,极大的提高了开发生产力。

对于第三个时代,Herb说了很多,他说这个并 没有什么错,因为这个时候我们非常关注开发 的生产力,这个非常重要,这就是为什么C++ 一下就失去优势的地方。但是是否这些Coffee-Based的语言可以做任重要的事呢?不行,很多 时候,这是一个Trade-Off的事,也就是生产力 不是免费的是需要你用别的东西去交换的。

3)第四个时期。

Herb认为,2009-2019是第四个时期,因为我 们又喜欢Native Code了,C++从被驱逐后又被 请回来了。因为网站的性能越来越是个问题, 移动端的设备非常流行。但主要是因为Perfor mance就是钱,因为前面的三个因素,性能影 响的是dollar,不尊重性能的公司都会发现花 钱的速度太快了。(比如去年大家热炒的京东促 销和12306.cn的问题,12306给整个社会造成 了巨大的金钱浪费)

Herb把这个时期比做 The Return of the King 。(指环王的第三部:王者归来)

这就好像我在“软件开发的三重门”里说的,开 垦时代需要的是快和生产力,而开垦完后就得 保证其稳定性。

4)Herb还给了一张幻灯片问,“The World is built on ….”,后面例出了多个语言。然后Her b说,世界是由C和C++构成的。

5)Herb给了一张表格,这张表可相当形像。如 果把我们的对编程语言的需求总结为四个:效 率,灵活,抽象,生产率。那么,C语言玩的 是前两个,而C++玩的是前三个,Java和C#玩 的是后两个(抽象和生产率)

任保一种设计都不可能让你什么都要的,这就 是Trade-Off——什么事都需要交换的。

6)Herb举了一个微软内的例子,用C++ 和 ATL 来开发IE工具条的报告,因为用.NET或是脚本 有重大的limitation,也就是性能问题。

7)接下来,我们来看看移动设备。

下图中,第一个是iOS,第二个是Android,第 三个是WinPhone。Herd说了几个事:

a)比Web APP,人们更喜欢Native的APP

b)iOS也好,Android也好,WinPhone也好, 他们不是在搞操作系统,而是在搞应用,为的 是让智能手机更好。

c)这三个手机在第一片出来时都不支持C++,而 第二版出来时都支持C++了。因为他们要兼顾 性能和一定程度上的开发效率。WinPhone还 没有到第二版,让我们拭目以待。(我以前写过 一篇调侃Android支持C++开发的文章,这也只 是一年前的事,说明C++全面回归了)

8)如果你还是不相信的话,我们可以看看为什 么Apple和Google都在搞C++的编译器,因为 他们觉得G++性能不行。所以,基于LLVM的编 译器正在领导潮流,因为我们关注Natvie Cod e的性能优化。

9)接下来,Herb说了一下数据中心,你知道数 据中心最花钱的是什么吗?三个事:

57%花在了硬件上。

18% 花在了配电和降温上。

13%花在了耗电上。

88%的钱花在了硬件和电力上。这可是很大一 笔费用啊。(还有人说硬件比软件便宜吗?)我记 得我上一个公司的数据中心每年要花的电费就 在百万美元以上。

10)昨天在微博上有个笑话,说是某咨询师要求 程序员把代码打印出来走查,程序员问是不是 要用彩打?哈哈。我说,这至少不环保嘛。消耗 太大了。是的,C++是可以省电的,以及于C++ 之父都在YouTube 说C++是可以减轻全球变暖 的问题。哇,C++开始真正造福人类了。

11)我还需要重温一下老大的这句话——

My contribution to the fight against global w arming is C++’s efficiency: Just think if Googl e had to have twice as many server farms! E ach uses as much energy as a small town. A nd it’s not just a factor of two… Efficiency is not just running fast or running bigger progr ams, it’s also running using less resources.

Bjarne Stroustrup, June 2011

最后一句说的非常好!效率不仅仅只是跑得,跑 得多,更是可以使用更少的资源。

12)下面让我们再来看一张表,一张把钱投到哪 里的表格。

70年代80年代,资源不够,主要是把钱投在性 能上。

80年代到90代,主要是90年代开始有一半的投 次到了抽象和生产率上。

00年代,完全都在抽象和生产率上。

10年代,80%的钱都要回头来解决性能问题。 这就是C/C++的王者归来。

13)当然,不是C++不注重 开发效率,看看C++ 0X的标准引入了多少东西我们就知道了。但是 本质上,C++还是致力于性能和抽象的完全平 衡。

那么,我们还会觉得C++要被淘汰了,不适合 进入了吗?

后面讲了C++的文艺复兴,你可以在Google 搜 索 “C++ Renaissance”看看。另外,该视频的讲 议可以在这里下载。