技术开发 频道

C++0x探秘:访C++之父Bjarne Stroustrup

  当然,对于程序库的开发者而言这也将是非常重要的一天:在程序库中,有很多地方可以使用移动语义以简化程序库的实现,并且在更多的地方,转发(右值引用的另外一个重要应用)将有助于程序库的设计与实现。并且,移动语义和完美转发并不是只有专家才能掌握的高深技术,每一个C++程序员都可以使用它们来简化我们的程序,提高程序的性能。

  Danny Kalev: 在一些C++0x新特性,诸如右值引用,Lambda表达式,的设计中有很多困难。一些批评者也声称,C++太老了并且不够灵活。这些抱怨是否有一定的道理?会不会在将来的某一天,你决定不再扩展和改进C++,转而使用一种新的编程语言代替?

  Bjarne Stroustrup: 我更经常听到抱怨是C++太灵活并且太大。新的语言往往是比较简单的,因为它还没有形成一个庞大的社区。所有语言都会随着时间的流逝而增长。当然,修改一门大型的,有悠久历史并已经被广泛使用的编程语言要比推倒一切重来困难得多。但是,很多新语言都会夭折。并且,对于真实世界的应用来说,这些新语言显得太过简单了。向C++中添加新的内容是非常苦难的,对于一个新特性的建议者来说,要让这个新特性获得接受的过程通常也是漫长和痛苦的。但是,一旦这个新特性获得接受,它将会对很多人产生十分重大的影响。如果我不想影响整个世界,我完全可以通过填字游戏,写小说或者是设计一门好玩的编程语言来让自己的才智得到发挥。

  当然,我也曾经梦想过设计一门比C++更新的、更小的、更好的编程语言,但是,每当我看到这门新语言可以解决的问题,以及这门新语言可能产生的影响,我就觉得大多数通过一门新的编程语言可以解决的问题同样都可以通过改进C++及其标准库来获得解决。就对编程世界产生积极影响——至少对于我来说——而言,看起来比较繁琐的对C++的不断改进要比设计、实现和推广一门新的编程语言要好得多。

  Danny Kalev: 关于对Unicode的支持,C++0x提供了char_16和char_32,以及u16string和u32string来支持UTF16和UTF32编码的字符串。但是,它们在标准库中的输入输出流中并没有得到支持。例如,标准库中没有所谓的u16cout或u32cout。我想知道的是,我们该如何使用char16_t字符串并将它们输出?

  Bjarne Stroustrup: 显然,我们应该有支持unicode的输入输出流以及在标准库中的其他的扩展对unicode进行支持。标准委员会知道这样的需要,但是没人有足够的能力和时间来实现它。因此,不幸的是,这是C++中一个你不得不寻求第三方支持的地方。实际上有很多现有的程序库都可以很好地支持unicode,例如,可以用于构建网络应用以及互联网应用程序的Poco库(http://pocoproject.org/index.html)。另外,Microsoft Visual C++对Unicode也有很好的支持。

  不幸的是,我们并没有从标准库的层次上为unicode提供完整的支持,并且我们应该记住,大多数程序库并应该也不能够被包含在标准库中。我的C++页面上有很多关于程序库,程序库收集以及程序库列表的链接,大约估计有超过10000个C++程序库(包括商业的和开源的)。但是问题的关键是,你必须找到合适的程序库并评估它们。

  Danny Kalev: 最后,兔年已经到了,能不能和我们分享一下你的新年愿望是什么呢?

  Bjarne Stroustrup:

  · 让C++0x成为一个正式的ISO标准

  · 完成《C++编程语言》第四版的初稿

  · 和我的外孙共度更多的美好时光

  · 提出至少一个感兴趣的新的技术观点

0
相关文章