中国开发网: 论坛: 程序员情感CBD: 贴子 246328
holly
[技术贴]C++0x 的设计
Bjarne Stroustrup

C++0x 的设计
增强 C++ 已经得到证明的能力, 并向前进


每天总有一两次, 我会收到对 C++ 的改进建议. 许多建议在 "如果什么什么能够成为语言或者标准类的一部分, 将会使一大批程序员受益" 的方面.
当然有很多此类建议是重复的. 所以我收集的建议大概只有 100 个左右不错的主意. 当然这个数目取决于你怎么把这些建议归类. 你可以从 http://www.research.att.com/~bs/evol-issues.html 看到一个语言建议的不完整列表, 还可以在 http://lafstern.org/matt/wishlist.html 处看到一个对标准库的期望列表. 我的看法基本认为对语言的期望列表太长了, 而对库的期望列表还远远不够.


所以, 想象一下, 如果你是 ISO C++ 标准委员会, 能够决定下一个 C++ 标准的样子. 你会把什么加到标准里? 你会把什么从里面去掉? 你会对什么内容作出改变? 现在停下来认真地写一个列表. 如果你在读完这篇文章之后仍然觉得你自己的列表很不错, 那么给你的主意加上依据并 email 给我.

在我们修订标准的时候, 我们试图达到什么呢? 最终, 我们无法在这一点上达到很好的一致: 谁是 "我们"? C++ 社群规模非常大 - 根据 IDC 去年的统计超过 3 百万程序员 - 而且难以置信的不同. 我们使用几乎每一台计算机和每一个操作系统, 为几乎每一个应用领域工作在地球上每一个国家. 这就隐含了各种不同的要求跟期望, 而且, 对我来说, 还隐含了将来的改进必须遵循一些基本的原理, 以避免为了寻求在一些子社区的改进中意外地损害了另外一些子社区.

在这篇文章中, 我会检查我们用来开发 C++0x, C++ 语言的下一个版本, 的主要的原则. 显然, 这些原则极大地归功于 "最佳策略". 这一点都不意外. 我的目标是增强 C++ 的已经得到证明的能力, 而不是试图用新的标准来鼓励激进的改革. 那就是说, 让 C++ 仍然是一种活跃的语言并不是我的目标. C++ 需要渐变和适用. 它必须成为一种更高效的工具用来解决社区现在和未来所面对的问题. 这里我换到我个人身份来强调一下我只是拥有很多成员的 C++ 标准委员会的一个成员而已. 大量的来自 C++ 社区的观点以及我表达的意见的显然会得到强有力的后援支持. 但是, 原则以及在实际问题上的应用是对更多的讨论, 解释以及实验所开放的. 那就是它工作的方式.

那么, 为什么我们不接受所有有理由接受的建议从而使大家都很满意呢? 有太多的建议需要分析和详细指明. 如果我们接受所有的建议那么在 C++ 里要做任何事将会有六七种方法而不是现在的两三种. 这就会造成 (C++) 有太多的特征需要教学, 而大多数程序员会停留在其中一小部分中以安全地避开大量的新的特征. 这也会造成很难保持 C++ 的零额外开销原则, 部分是由于实现的代价很大, 部分是由于不同特征的实现会相互影响, 部分是由于很多建议依赖于特定的运行时机制而并未考虑到性能. 这些建议假设了实现者社区愿意接受这样一个标准. 我可不敢在这上面打赌. 在你坚持要加入 "就我的这两个新特征" 的时候请回想起这些因素.
若你在年轻时上过水木, 它会一生跟随着你, 如一场浮动的盛宴

禁色和禁果仍被保存吗?
这世界有否给潜移默化?
离过家回了家仍住中环吗?
-----信有带到新居里烧吗?

一切美好的都会消失

人要是没有理想, 跟咸鱼有什么两样?

“把人们引向艺术和科学的最强烈动机之一,是要逃避日常生活中令人厌恶的粗俗和使人绝望的沉闷,是要摆脱人们自己反复无常的欲望的桎梏。一个修养有素的人总是渴望逃避个人生活而进入客观直觉和思维的世界。”

不要忘了,这个世界穿透一切高墙的东西,它就在我们的内心深处,他们无法达到,也接触不到,那就是希望。(FROM《肖申克的救赎》)

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录