Bjarne Stroustrup讲述语言的演变2011-04-06 MSDN Howard Dierking目录对语言的看法语言发展趋势方法和最佳实践展望 未来书籍和电话偶尔, 进化中的飞跃会迅速改善并重塑整个工程领域。 在软件开发领域,C++ 编程语言的诞生就引发了此类飞跃。这种飞跃并非此语言本身所固 有的。在 C++ 之前即已存在面向对象的语言(如 Simula67和Smalltalk)。但由于 C++ 是在 C 编程语言的基础上构建的(并且可编译现有的 C 程序),因此它可将面向对象思 维的精髓带入主流。C++ 在软件设计和开发方面提供了大量的灵感,从设计模式 到元编程莫不如此。并且由于其可在硬件平台间移植并具备更底层的表示,随着硬件变得 更快更小,C++ 肯定会成中流砥柱。我最近有幸采访了C++ 的发明者 Bjarne Stroustrup,其间谈及了多个话题:从他对语言的看法、行业的普遍发展趋势到他个人阅 读的书目。其中许多问题都是读者们通过我的博客所提出的,在此特向那些提出问题的人 员表示感谢。当然,更感谢 Bjarne。对语言的看法Howard Dierking 为 什么编程语言与人们之间有如此深的关联—以至各种语言都有了自己的“追星 族”?Bjarne Stroustrup 这个问题最好是问问心理学家、社会学家,甚至 是经济学家,而不是一个计算机科学家!我猜想由于我们用来表达思想的语言已成为自身 的一部分,因此,如果您仅了解一门语言,则很难与其他语言的支持者进行沟通。如果是 这样,看起来必须要精通更多的语言。我认为,如果您仅了解一门编程语言,就不可能成 为软件领域的专家。可能还有经济方面的原因:尽管理解基本原理可不受编程语言种类的 限制,但许多实际技巧则不一样。因此,如果我仅了解语言 X 以及其工具集,而您赞成 语言 Y 及其工具集,那么我们之间就会存在障碍。要想跨越这一障碍同样需要掌握多种 语言以及工具集(并且牢固掌握基本原理)。遗憾地是,我所建议的解决方案并未考虑到 大多数人没有多少空闲时间。那些狂热的粉丝是特例。HD IDE 在软件开发中应扮 演何种角色?IDE 应如何对语言进行支持?BS 我并不经常使用 IDE。我赞赏那些 可理解我的语言且反应迅速的 IDE 编辑器,但是也希望正常工作时不必用到 IDE。如果 性能良好的 IDE 能得以普及,我可能会改变观点—即 IDE 实际成为语言的一部分 ,反之亦然(请参见图 1)。我所希望的代码可移植性在此会有用武之地。通过使用 C++ ,我希望通过源文件中的源代码就能理解我的系统。有些 IDE 机制包含的转换或生成代 码非常不便于理解,我对此很不欣赏。

Figure 1The IDE Designer as a LanguageHD 您是否认为无用信息或 可读性是当今通用语言中所存在的一个问题?如果是这样,应该怎样解决呢?BS 语法越简单越好,但我猜想当大多数人在谈到可读性时,对于实际文字的抱怨并不多,表 达内容的复杂性往往招来的抱怨更多。太多人都希望能了解以任意语言编写的任何程序, 并希望在线支持工具只提供少量帮助就可以理解用于表达程序的所有结构和程序本身的所 有逻辑。我们可以将其与查看并使用自然语言的方式做个对比。您是否希望无需背景知识 即可理解莎士比亚的十四行诗?如果遇到原始古英语写的贝奥武夫又该怎么办呢?也许, 我们对于编程语言的期望过高了。对于任意特定的应用程序而言,如果任何语言所表达的 内容适用范围很大,往往会被视为过于复杂,但是实际上语言必须要适应多种应用程序。 某一领域专用的语言只能适用于特例,但是现在我们必须面对多种语言及其交互所带来的 复杂问题。HD 通用语言应如何支持应用程序设计理念(如组件编程和服务编程) ?BS 通用语言应支持编写可表达常规和特定于应用程序概念的库,支持工具构建 以及提供连接应用程序的不同部分所需的“粘合剂”。为此,语言需具有灵活 性、富有表现力的系统、良好的基础性能以及长期稳定性。