正好我前段时间看到一个视频,这个演讲视频还比较著名,这个演讲者是Exceptional C++ 和 C++ Coding Standards 的作者,还是ISO C++ 委员会的Chair,C++/CLI首席架构师,还是Microsoft的软件架构师,他叫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++从被驱逐后又被请回来了。因为网站的性能越来越是个问题,移动端的设备非常流行。但主要是因为Performance就是钱,因为前面的三个因素,性能影响的是dollar,不尊重性能的公司都会发现花钱的速度太快了。(比如去年大家热炒的京东促销和12306.cn的问题,12306给整个社会造成了巨大的金钱浪费)
Herb把这个时期比做 The Return of the King。(指环王的第三部:王者归来)
这就好像我在“软件开发的三重门”里说的,开垦时代需要的是快和生产力,而开垦完后就得保证其稳定性。
任保一种设计都不可能让你什么都要的,这就是Trade-Off——什么事都需要交换的。
下图中,第一个是iOS,第二个是Android,第三个是WinPhone。Herd说了几个事:
a)比Web APP,人们更喜欢Native的APP
b)iOS也好,Android也好,WinPhone也好,他们不是在搞操作系统,而是在搞应用,为的是让智能手机更好。
c)这三个手机在第一片出来时都不支持C++,而第二版出来时都支持C++了。因为他们要兼顾性能和一定程度上的开发效率。WinPhone还没有到第二版,让我们拭目以待。(我以前写过一篇调侃Android支持C++开发的文章,这也只是一年前的事,说明C++全面回归了)
9)接下来,Herb说了一下数据中心,你知道数据中心最花钱的是什么吗?三个事:
57%花在了硬件上。
18% 花在了配电和降温上。
13%花在了耗电上。
88%的钱花在了硬件和电力上。这可是很大一笔费用啊。(还有人说硬件比软件便宜吗?)我记得我上一个公司的数据中心每年要花的电费就在百万美元以上。
11)我还需要重温一下老大的这句话——
My contribution to the fight against global warming is C++’s efficiency: Just think if Google had to have twice as many server farms! Each uses as much energy as a small town. And it’s not just a factor of two… Efficiency is not just running fast or running bigger programs, it’s also running using less resources.
Bjarne Stroustrup, June 2011
最后一句说的非常好!效率不仅仅只是跑得,跑得多,更是可以使用更少的资源。
12)下面让我们再来看一张表,一张把钱投到哪里的表格。
70年代80年代,资源不够,主要是把钱投在性能上。
80年代到90代,主要是90年代开始有一半的投次到了抽象和生产率上。
00年代,完全都在抽象和生产率上。
10年代,80%的钱都要回头来解决性能问题。这就是C/C++的王者归来。
我觉得这篇文章就足够可以说明很多问题了,所以,我把Herb的演讲幻灯片截了几页放到这里,并做上一些注释,算是一个演讲内容摘要吧。
1) 为什么C++?因为 Performance per $,也就是说performance 就是钱,这个分成三个方面,
◆ 电源,芯片的耗电量,移动设备的耗电量,家用电脑的耗电量都和钱有关系。
◆ 资源,家用电脑和移动设备上的处理器资源有限,因为要让一般消费者买的起。
◆ 体验,在更小的设备上会有更好的体验,有更好的体验就可以挣更多的钱。
![](http://img.cnbeta.com/newsimg/120202/11255202039599186.jpg)
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++从被驱逐后又被请回来了。因为网站的性能越来越是个问题,移动端的设备非常流行。但主要是因为Performance就是钱,因为前面的三个因素,性能影响的是dollar,不尊重性能的公司都会发现花钱的速度太快了。(比如去年大家热炒的京东促销和12306.cn的问题,12306给整个社会造成了巨大的金钱浪费)
Herb把这个时期比做 The Return of the King。(指环王的第三部:王者归来)
这就好像我在“软件开发的三重门”里说的,开垦时代需要的是快和生产力,而开垦完后就得保证其稳定性。
任保一种设计都不可能让你什么都要的,这就是Trade-Off——什么事都需要交换的。
下图中,第一个是iOS,第二个是Android,第三个是WinPhone。Herd说了几个事:
a)比Web APP,人们更喜欢Native的APP
b)iOS也好,Android也好,WinPhone也好,他们不是在搞操作系统,而是在搞应用,为的是让智能手机更好。
c)这三个手机在第一片出来时都不支持C++,而第二版出来时都支持C++了。因为他们要兼顾性能和一定程度上的开发效率。WinPhone还没有到第二版,让我们拭目以待。(我以前写过一篇调侃Android支持C++开发的文章,这也只是一年前的事,说明C++全面回归了)
9)接下来,Herb说了一下数据中心,你知道数据中心最花钱的是什么吗?三个事:
57%花在了硬件上。
18% 花在了配电和降温上。
13%花在了耗电上。
88%的钱花在了硬件和电力上。这可是很大一笔费用啊。(还有人说硬件比软件便宜吗?)我记得我上一个公司的数据中心每年要花的电费就在百万美元以上。
11)我还需要重温一下老大的这句话——
My contribution to the fight against global warming is C++’s efficiency: Just think if Google had to have twice as many server farms! Each uses as much energy as a small town. And it’s not just a factor of two… Efficiency is not just running fast or running bigger programs, it’s also running using less resources.
Bjarne Stroustrup, June 2011
最后一句说的非常好!效率不仅仅只是跑得,跑得多,更是可以使用更少的资源。
12)下面让我们再来看一张表,一张把钱投到哪里的表格。
70年代80年代,资源不够,主要是把钱投在性能上。
80年代到90代,主要是90年代开始有一半的投次到了抽象和生产率上。
00年代,完全都在抽象和生产率上。
10年代,80%的钱都要回头来解决性能问题。这就是C/C++的王者归来。
那么,我们还会觉得C++要被淘汰了,不适合进入了吗?
原文地址:http://www.cnbeta.com/articles/171221.htm