时间:2002年10月
地点:北京西苑饭店
人物:Dr. Stroustrup 与 《程序员》记者熊节
一:C++ 的新标准
1998年通过了C++的标准。而新的标准将会再2005年出现。我想到了Whidbey的推迟发步,是否是和这个新的标准有关系。
二:C++与嵌入式软件
嵌入式软件的定义:凡是在非传统的计算机上运行的软件都是属于这个领域。而嵌入式软件开发对PL的根本的要求是:运行时效率,内存使用率,以及可以预测性。而C++可以设计成在资源有限的情形下支持以上的意图。
a. 可预测性
当调用一个virtual函数的时候,其开销是完全可以预测的。同时,在使用局部变量,静态全局域中的对象时,对象开销可以很好预测。
b.内存使用
如需要使用动态的内存,则可以使用内存池;甚至可以使用GC(当然是在没有时间限制的情形下)。
c. 运行效率
使用C++可以设计完全不涉及到OO的代码,同时和标准C的良好的兼容也是选择其的原因。
关于C++运行时的效率问题,可以参考:
http://arubis.dkuug.dk/jtc/sc22/wg21/docs/papers/2002/n1396.pdf
二:Managed C++
Herb Sutter 说 ISO 将会考虑采纳对M C++ 制定国际标准。
Dr. Stroustrup : 每个平台提供商都会对语言进行扩展,以便与平台与OS相兼容。而.NET的平台是和一般的C接口是不同。
三:C++是否是最好的语言
众所周知,当今的语言可以分成是两大流派,动态语言与静态类型的语言。
动态语言: Ruby , Python , C# , Java
比如Ruby , 可以提供开发方法与语言机制的联系。形成了Rebert Martin为代表的Agile Development Methode.
但上动态类型的语言都是必须要有静态类型的语言来实现。
Python 的特点:
编程模式与 C++ 不同,但是很容易实现与C++的交互,其中含有C++的内库。研究Python与C++交互的代表性人物是 David Abrahams 。
Cyclone 语言的特点:
主要是由University of Connell 和 AT&T 在研究,特点是:剔除了C中不安全的结构,增加新的结构来增添其表现力。
静态类型的语言代表就是 C/C++:
优点: 可以预测性和效率
缺点: 安全性-- “野指针”,“缓冲区溢出”
目标与理想境界:类型安全语言
通常的解决方案:安全语言,运行在虚拟机上,提供了更加严格限制的对象摸板,但是悖论是:虚拟机本质上也是静态类型的语言来实现的。
得出的结论是无法从软件的角度来解决安全性的问题,必要要从硬件的角度出发。
四:C++是一门 多范式 Multi-Paradigm 的语言
意义在于结合最合适的问题域选择。目前 C++ 的发展方向是 “发展规则,指导多范式编程的发展”
现阶段,处于对模板极限能力的探索期,下一阶段,将会使用新的语言工具来简化模板的代码,使用语言工具来简化 GP.
五:C++ 中的对象管理办法
C++中显示的区分了“值”和“引用+对象”的概念。而C++是基于“值”的,以为着放到容器中是实际的对象而不是其引用,这会给复制移动带来很高的代价。解决方案是指针放入到容器中,而一旦有了指针,就必须考虑对象生命周期的问题。而可以制作自己的容器,让其析构函数来析构其所拥有的对象。
Boost中的Solutions 是:提供一个计数指针- Shared Pointer ,依靠引数提供自动管理。
GC 的缺点是: 只管理了内存,而对于互斥锁,文件句柄,内存Chunk没有帮助。
内存Chunk的技术要点是:一大块内存,在其中放置了若干个对象,在回收的时候,将整个Chunk一次性回收,大大的提高了效率,并且可以减少内存碎片。