C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一。

到 2020 年 9 月为止,C++ 是仅次于 C 语言、Java 和 Python,位于全球第四的编程语言。根据最新的 TIOBE 索引,C++ 也是增长最快的语言。

近日,C++ 之父 Bjarne Stroustrup 在接受外媒访谈的时候,对 C++ 成功的关键和 它40 年来的发展历程进行了回顾。

C++ 的成功属于意料之外

1979 年,C++ 的创建者 Bjarne Stroustrup 开始着手开发这种编程语言,该语言最初被设计为对 C 语言对改进版,增加了基于面向对象编程的功能。

Bjarne Stroustrup 一开始没想到 C++ 会获得如此大的成功,他说:“C++ 的成功显然令人惊讶。我认为它的成功取决于其最初的设计目标,就是有效的使用硬件,再加上强大的抽象机制,以及它根据来自实际使用情况的反馈进行谨慎的发展。”

构建 C++ 之初,Bjarne Stroustrup 希望用通信系统构建一个多计算机系统,该通信系统可以是共享内存,也可以是网络。他把重点放在了软件上,去编写底层的、接近硬件的代码。例如存储管理器,进程调度程序和设备驱动程序,以及分离软件组件,便于它们可以在运行使用更好的方式运行。

40 年前,是没有编程语言可以胜任这项工作的,Bjarne Stroustrup 对此花了很多心思。

现在,C++ 已经成为了最受开发人员欢迎的语言之一,巩固了全球的系统和服务。

C/C++的学习裙【七一二 二八四 七零五 】,无论你是小白还是进阶者,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

C++ 11 使 C++ 成为一种新的语言

他从很早开始就意识到了这项工作不可能由他一个人来完成,但当时也只有 Bjarne Stroustrup 和他在贝尔实验室的几个同事全身心的投入其中。随着标准化进程加快,加入其中的人也越来越多,如今 C++ 标准委员会已有了 400 多名成员和更广泛的用户群体,他们共同努力影响着编程语言的发展方向。

1998 年是 C++ 正式标准化的一年,从那时起它就成了时间是最常用的编程语言之一,并至今都保持着这种地位。

Bjarne Stroustrup 说,其后 13 年到来的 C++ 11 为 C++ 的发展奠定了基础,他说:“C++ 11 使 C++ 感觉像是一种新的语言。”对并发的类型安全的支持是必不可少的,C++ 提供了相互支持的功能密集网络,例如用于编译时计算的函数、自动类型推导和可变参数模板的函数等等。

正如 Bjarne Stroustrup 所说,C++ 11 添加了一些新功能,这些功能可以使事情变得更简单,同时保持了兼容性和稳定性。不过,尽管 C++ 11 引入了一些使该语言更简单、更快、更具表现力的新功能,但它还是非常难掌握的。

Bjarne Stroustrup 坦言:“C++ 确实很复杂,要学会很好的使用它需要付出很多努力,但很多人想要的是更简单还具有更多功能的语言,并且不会破坏现有代码。”

对一种编程语言来说,最大的挑战之一是就决定采用和忽略哪些功能达成共识,这本身就需要大量的努力,花费很多时间去讨论。但即使是这样,也不是所有好的功能都可以被采用,必须添加真正对人们有帮助的东西。

C++ 流行几十年的秘诀

对于如何在几十年中保持 C++ 生存的秘诀,Bjarne Stroustrup 提到,“应该从小做起,阐明长期理想,并根据实际使用情况的反馈来发展。”

确实,C++ 走到今天已经超过 35 年了,今天的 C++ 比早期的 C++ 更加强大且富有表现力。但是,直到今天,它的一些简单程序仍在运行。

对于使用了数十年的系统来说,稳定性是一种非常重要的语言功能。事实上,许多早期的想法只有在 C++ 20 中才可用。Bjarne Stroustrup 说:“从一开始我就知道我无法构建理想的语言,所以我必须以渐进发展为目标。我不相信有完美的语言,这对语言本身和使用语言的人都有不同的标准。”

Bjarne Stroustrup 还补充道:“进化是应对不断变化的世界的挑战和融合新思想的必要条件。”

C++ 是一切的无形基础

C++ 是一种通用的编程语言,由于其强大的功能和灵活性而受到开发人员的青睐,这使其成为操作系统、Web 浏览器、搜索引擎(包括 Google)、游戏和商务应用程序等的理想选择。Bjarne Stroustrup 总结道:“如果有一个问题需要高效使用硬件并处理相当大的复杂性,那么C++显然是不错的选择。”

Bjarne Stroustrup 还提到,COVID-19 大流行阻碍了 C++ 下的两个迭代 C++ 20 和 C++ 23 的进展。未来他们会推出新功能,并在每三年发布一次修订的标准,C++ 17 和 C++ 20 也会按时交付。

然而,尽管 C++ 已经广泛流行,但 Bjarne Stroustrup 还是认为很难准确指出它的用途。他说:“在任何大型系统中,通常会在较低级别和对性能至关重要的部分中找到 C++。最终用户甚至系统的其他部分的开发人员通常都看不到系统的这些部分,因此有时我指的是 C++ 是一切的无形基础。”

如果你对C/C++感兴趣,想要深入学习,这里有一个交流群推荐给你。点我进入

群内含有素材包,初学者入门学习资源,还有项目开发免费课程。更有牛人、大牛在线为你解答专业知识,为你在学习的道路上助力~

不论是小白还是进阶者,在这里都能获得成长。

C++之父接受采访:对 C++ 成功的关键和发展历程进行了回顾的更多相关文章

  1. 从Instagram“宁静、规则”的成功 看国内APP发展之路

    看国内APP发展之路" title="从Instagram"宁静.规则"的成功 看国内APP发展之路"> Instagram在全球获得的巨大成功 ...

  2. 8个让DevOps转型取得成功的关键步骤

    ​​关注嘉为科技,获取运维新知 在数字化时代,企业需要更快更灵活的交付来支持业务运营,这种迫切的需求促成了DevOps的高速发展,成为了企业获得竞争优势的关键.尽管大家都知道DevOps给业务带来的好 ...

  3. 转:Siri之父:语音交互或将主导未来十年发展

    http://zhinengjiaohu.juhangye.com/201709/weixin_5664458.html Siri之父Adam Cheyer认为,语音交互很可能是未来十年内计算技术的一 ...

  4. 架构师成长之路也该了解的新一代微服务技术-ServiceMesh(上)

    架构演进 发展历程 我们再来回顾一下架构发展历程,从前往后的顺序依次为单机小型机->垂直拆分->集群化负载均衡->服务化改造架构->服务治理->微服务时代 单机小型机:采 ...

  5. Android之父Andy Rubin:被乔布斯羡慕嫉妒的天才

    今年中国掀起一股“苹果热”,智能手机iPhone.平板电脑iPad遭疯抢,一度卖断货.然而,令许多人意想不到的是,在“苹果”的老家——美国市场,智能手机中卖得最火的并不是iPhone,而是Androi ...

  6. Java之父职场路

    Java之父——詹姆斯·高斯林出生于加拿大,是一位计算机编程天才.在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的Unix操作系统,是JAVA编程语言的创始人.1991年,在Sun公司工 ...

  7. IT168关于敏捷开发采访

    1.我们知道敏捷开发是一套流程和方法的持续改进,通过快速迭代的方式交付产品,从而控制和降低成本.但是在实行敏捷初期,往往看不到很好的效果.这里面,您觉得问题主要出在哪?团队应如何去解决问题?金根:我认 ...

  8. 采访:Go语言编程

    Go语言是由Google在2009年11月份公布的,它的目标是要应对软件开发所面临的最新挑战.Go语言特别被设计为快速(包括在编译时).支持多核的语言,并且兼顾了动态语言的简单性和静态类型语言的安全性 ...

  9. 采访 Lua 发明人的一篇文章

    采访 Lua 发明人的一篇文章 来源 https://blog.codingnow.com/2010/06/masterminds_of_programming_7_lua.html <Mast ...

随机推荐

  1. Jenkins部署持续集成远程机节点的问题

    工作需要把工作电脑作为持续集成的执行机,最近研究Jenkins,在工作电脑上搭了一套环境,期间把原来的JDK删除掉了,导致持续集成的Jenkins节点slave-agent.jnlp打不开.解决方法是 ...

  2. elementui中弹出框不能自动换行的解决方案

    我们的需求是将客户给的这串无头脑的数据放进这个弹出框?! 可以看到element提供的弹出框并不提供换行的功能 所以这时候我们应该咋整呢?? 我试过了在这个弹出框中套个盒子给盒子添加宽?然后他自己就折 ...

  3. drf 路由生成

    前言 在drf中,我们写接口可以通过继承modelViewSet从而达到非常快速的功能实现,这十分的方便,但是modelViewSet由于需要根据不同的参数来对应不同的处理,所以我们写的url最少都需 ...

  4. ERP的财务凭证的操作与设计--开源软件诞生23

    赤龙ERP财务凭证讲解--第23篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/redra ...

  5. UVA12558 埃及分数 Egyptian Fractions

    题意描述 题目描述的翻译挺清楚的了. 和原题的区别是多了禁用的分母.(还有毒瘤输入输出) 算法分析 显然这道题没有什么很好的数学方法来解决,所以可以使用搜索. 由于不确定深度,深搜显然无穷无尽. 所以 ...

  6. 微信小程序获取高宽uniapp

    代码片段 <template> <view> <view class="text" id="w">补充文字</view ...

  7. day85:luffy:购物车根据有效期不同切换价格&购物车删除操作&价格结算&订单页面前戏

    目录 1.购物车有效期切换 2.根据有效期不同切换价格 3.购物车删除操作 4.价格结算 5.订单页面-初始化 1.购物车有效期切换 1.关于有效期表结构的设计 1.course/models.py ...

  8. 内网渗透 day7-linux信息收集

    linux信息搜集 目录 1. linux信息搜集 2. nmap漏洞复现 3. msf linux模块反弹shell 1. linux信息搜集 id 查看当前用户的权限和所在的管理组 python ...

  9. C++编程基础练习,入门必备练手

    练习1,1 从一个简单程序开始 1,将string头文件注释掉,重新编译这个程序,会发生什么事? 目前还没有发现会发生什么事. 2,将using namespace std注释掉,重新编译,会发生什么 ...

  10. http 请求体数据处理2--ngx

    HTTP 处理数据包, 有的业务不需要,此时只需要将数据包文读取后丢弃, 但是ngx 为什么还要提供一个丢弃接口呢???解决了什么问题?? ------对于HTTP模块而言,放弃接收包体就是简单地不处 ...