C++的起源可以追溯到1979年,当时BjarneStroustrup着手开发这门语言,当时它仍被称为“CwithClasses”。这种编程语言设计的初衷是对C编程语言进行改进,在面向对象编程的基础上增加一些功能。1、我也很惊讶C++会成功。Stroustrup说:“C++的成功令人惊讶。我认为C++成功的原因在于其最初的设计目标——有效使用硬件,加上强大的抽象机制,根据实际使用的反馈精心调整。“如今,该语言是全球开发人员、支持系统和服务中最受欢迎的语言之一。“我想创建一个多计算机系统,该系统具有可以共享内存或网络的通信系统,”Stroustrup解释道。“我专注于软件。我需要编写低级、接近硬件的代码,例如内存管理器、进程调度程序和设备驱动程序,以分离软件组件,以便它们可以以定义明确的方式位于不同的计算机上沟通Run。”然而,当时没有语言可以胜任这项工作,因此Stroustrup决定创建自己的语言。他这样描述这种理想的语言:“CwithClasses应该具有C语言接近硬件的能力,具有类似于Simula的抽象和代码组织能力。”对语言几乎没有独裁控制。早期的C++工作只有他和贝尔实验室的几个同事完成。直到语言标准化开始,这个数字才激增到几十人。今天,C++标准委员会拥有大约400名成员,并开发了更广泛的用户群,他们是该语言的追随者,并试图影响其发展方向。那么,大家对C++如此狂热,如何保持这门编程语言的连贯性呢?“这是一个机会,也是一个巨大的问题,”Stroustrup承认道。“最难的是找到重点并保持一致。一旦你知道自己想要什么,你最终会找到一个好的技术方法来做。”2.记得Vasa1998是C++正式标准化的那一年,也奠定了它的地位。至此,C++已经成为世界上使用最广泛的编程语言之一,并且一直保持到今天。但Stroustrup认为,直到13年后C++11的到来,才为这门语言的未来发展奠定了基础。“C++11让C++感觉像是一种新语言,”他说。“对并发的类型安全支持是必不可少的。C++11提供了一组相互支持的功能,例如使用运行时评估、lambda、自动类型推导和可变参数模板来编译[constant-expression]函数。”尽管C++11引入了一些新的特性和功能,使该语言更简单、更快速、更具表现力,但这并没有改变该语言难学的事实。Stroustrup承认这一点。“C++真的很复杂,要掌握好它需要付出很多努力,”Stroustrup说。“不幸的是,人们不只是想要简单,他们想要一些不可能的东西:一种具有更多功能但又不破坏现有代码的更简单的语言。”Stroustrup对这个“困境”做出回应,C++添加了“让简单的事情变得更容易”的特性,例如,支持常见的用例,同时保持兼容性和稳定性。对于像C++或任何其他主要编程语言这样的“庞然大物”,做到这一点说起来容易做起来难。Stroustrup解释说,最大的挑战之一是就采用或忽略哪些新功能达成共识,这本身就需要大量的讨论、时间和耐心。即使那样,也不是所有好的特性都能被采用。他解释说:“我们必须选择,添加那些真正对人们有帮助的功能,并且很少太多。如果添加所有有用的功能,语言就会因为重量而下沉。”像瓦萨。这是17世纪的瑞典大型战舰。由于设计不当,这艘巨轮在处女航时沉没在斯德哥尔摩港。“在最高管理者国王的坚持下,没有采用技术人员更专业的判断,里面摆满了漂亮的雕像和沉重的枪支,因为超重,被一阵风吹倒了。”关于Vasa,我谈过写过很多次,提醒和告诫那些热衷于通过添加特性来改进C++的人,记住Vasa!到目前为止,C++还没有崩溃。“在Stroustrup看来,C++这些年的生存之道是什么?”从小处着手,明确基本原则,明确长期目标,并根据实际使用反馈进行改进。“诚然,C++已经存在了超过35年。今天的C++比早期的C++更强大,表现力更强。但是,原始设计的痕迹一直保留到今天。Stroustrup说:“今天,仍然有一些简单的程序从40年前开始,今天仍在运行。“对于几十年的老系统来说,稳定性是一个重要的语言特性。事实上,很多早期的想法只有在C++20中才有。我从一开始就知道没有办法创造出理想的语言,所以我不得不瞄准增量开发。老实说,我不相信完美语言的想法。它如何完美?为谁?他补充说:“为了迎接不断变化的世界的挑战并融入新的想法,改进是必要的。”3.C++在实践中截至2020年9月,在全球范围内,C++仅次于C++,Java和Python是第四大最受欢迎的编程语言。根据最新的TIOBE指数,它也是增长最快的编程语言。C++是通用编程语言因其强大的功能和灵活性而受到开发人员的青睐,这使其成为操作系统、网络浏览器、搜索引擎(包括谷歌)、游戏、商业应用程序以及更理想的选择的热门选择。Stroustrup总结道:“如果你有一个问题需要硬件的高效利用和高复杂度,那么C++显然是一个不错的选择。如果你没有这两个需求,使用一种低级但高效的语言,或者你可以用一种高级但不高效的语言来完成。”然而,尽管C++很受欢迎,Stroustrup指出很难准确地指出C++的用途和用途。“这两个问题的答案可能是‘无处不在’,”他说,“在任何大型系统中,您通常会在系统的较低级别和性能关键部分看到C++。“……而系统的这些部分对普通最终用户甚至系统其他部分的开发人员来说都是不可见的。因此,有时我认为C++是一切事物的无形基础。”他还强调了开发人员调查对编程语言流行程度的估计并不那么可靠:“很难统计程序员的数量。网络调查通常只是计算“噪音”;也就是说,计算每个人都在谈论什么,而不是实际使用什么。4.C++的未来现在,Stroustrup是摩根士丹利的一名技术研究员。在这家金融巨头,他与国际标准化组织(ISO)合作制定C++标准和《 C ++核心准则》,但他仍然积极参与C++的开发。最值得注意的是,Stroustrup还组织了编程语言方向指导小组的一部分,该小组负责为编程语言的未来发展提出和讨论建议。他也是ImprovementGroup的成员但是,就C++的日常运行而言,Stroustrup更喜欢扮演幕后角色。他承认:“我会参与管理,但尽可能少。我不是一个很好的管理者。”在新冠疫情爆发之前,Stroustrup会花很多时间传播知识,向世界介绍C++通过他的书籍、文章和访谈。但因为新冠,这种生活暂时停止了。“为了更好地工作,我真的需要通过沟通来了解人们遇到的问题,并尝试以我自己的方式帮助他们,”Stroustrup说。“因为新冠疫情,我没有得到我迫切需要的反馈。毕竟在线交流不同于现实。在讨论设计和想法时,Zoom会议不如面对面会议有效。”COVID-19的爆发还阻碍了C++语言接下来两个迭代版本的开发——C++20和C++23——但Stroustrup确认“几乎所有”C++20都将在2020年发布。”除此之外,还有关于Unicode、数字、游戏开发和低延迟、工具、AI等方面的工作要做。他补充说。“当时机成熟时,我们将推出一项功能(语言和库)并发布一个每三年修订一次标准。”C++14、C++17和C++20将按时交付。值得注意的是,C++的标准制定工作基本与主系统进度同步.“对于C++来说,保持连贯性并作为一个稳定的开发平台是非常重要的。”
