0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

40年后C++为何仍然当今使用最广泛的编程语言之一?

Linux爱好者 来源:Linux爱好者 作者:Linux爱好者 2021-02-15 11:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

强大、灵活、复杂:C++ 的起源可以追溯到 40 年前,但它仍然是当今使用最广泛的编程语言之一。为了找出原因,TechRepublic 采访了 C++ 之父 Bjarne Stroustrup。

C++ 的起源可以追溯到 1979 年,那时编程语言的创造者 Bjarne Stroustrup 第一次开始研究 C++ 这门语言,当时被称为“带类的 C”(C with Classes)。该语言的设计初衷是作为对 C 编程语言的改进,添加了一些基于面向对象编程的功能。

Stroustrup 告诉 TechRepublic 说:“C++ 的成功显然令人吃惊。我认为 C++ 的成功在于其最初的设计目标:高效地使用硬件,再加上强大的抽象机制,并在实际使用反馈的基础上谨慎地改进”。如今,它已经成为最受开发人员欢迎的语言之一,支撑着世界各地的系统和服务。

Stroustrup 解释道:“我想建立一个多计算机系统,它有一个通信系统,既可以是共享内存,也可以是网络。”

“我的重点是软件。我需要编写接近硬件的低级代码,例如内存管理器、进程调度器和设备驱动程序来分离软件组件,以便它们能够在通信方式定义明确的不同计算机上运行。”

在那时,还没有一种语言能够胜任这项任务,因此 Stroustrup 致力于构建一种语言来胜任这项任务。他这样描述这种语言:“带类的 C 应该结合了 C 接近硬件工作的能力和类似 Simula 的抽象和代码组织能力。”

从相当早的时候起,Stroustrup 就认识到,他不能在控制语言方面实行“专制”。尽管早期 C++ 的工作仅仅涉及到他和贝尔实验室(Bell Labs)的几个同事,但当 C++ 语言标准化的努力开始时,这方面的工作才迅速增加到几十人。

如今,C++ 的标准委员会中有大约 400 名成员,以及关注并试图影响该语言发展方向的广大用户社区。

那么,在面对满怀热忱的人们时,该如何使编程语言保持连贯性呢?“这是一个机遇,也是一个巨大的问题,”Stroustrup 说。

“最困难的部分是确定重要内容并保持连贯性。一旦你知道自己想要什么,最终,你就会发现一种很好的技术方法来达到目的。”

记住 Vasa

1998 年,C++ 正式实现了标准化,并成为可靠的主力军。至此,C++ 已成为世界上最常用的编程语言之一,并且一直保持到今天。

Stroustrup 说,正是 13 年后 C++11 的到来,这才为该语言未来的发展奠定了基础。他说:“C++11 使 C++ 感觉像是一种全新的语言。”

“对并发类型的安全支持是必不可少的。C++11 提供了一个密集的网络,其中包含相互支持的功能,如用于编译时计算的(常量表达式)函数、lambdas、自动类型推导以及可变模板。”

尽管 C++11 引入了一些新的特性和功能,使得该语言变得更简单,更快速,更具表现力,但这种语言仍然以难以掌握而著称,Stroustrup 也承认了这一点。

Stroustrup 说:“C++ 确实很复杂,要想学好用好它,需要付出很多努力。不幸的是,人们不只是想要简单,他们还想要某种不可能的东西:一种更简单的语言,拥有更多的特性,并且还不会破坏他们现有的代码。”

Stroustrup 对这个“三难问题”的回应,正如他所说的那样,就是增加一些特性,“让简单的事情变得简单”,举例来说,通过对常见的用例进行泛化或直接支持——同时还要保持兼容性和稳定性。

对于像 C++ 这样的“庞然大物”,或者任何主流编程语言来说,这件事说起来容易做起来难。Stroustrup 解释说,在决定采用哪种新特性还是省去哪种特性方面,达成共识是一个巨大的挑战,需要大量的努力、讨论、时间和耐心。

即便如此,也并不是所有的优秀特性都能被接受。他解释说:“你必须试着只加入那些真正能帮助人们的东西,然后再加入一些这样的东西——因为如果我们接受那些能够帮助人们的特性,语言就会不堪其重而倾覆。”

Stroustrup 指的是 Vasa,这是 17 世纪瑞典的一艘大型战舰,由于设计不佳,在处女航时就在斯德哥尔摩港沉没了。

他说:“在国王——最高管理者的坚持下,这艘战舰满载漂亮的雕塑和大炮,这与技术人员的专业判断相悖,造成这艘战舰头重脚轻,结果被一阵风给掀翻了。”

“我反复谈论并撰写关于 Vasa 的文章,来提醒和警告那些渴望通过添加特性来改进 C++ 的人:记住 Vasa!因此到目前为止,C++ 还没有‘倾覆’。”

这么多年来,是什么秘密使 C++ 保持活力?“从小处着手,阐明基本原则,明确长期目标,并根据现实世界中实际使用的反馈进行开发。”

事实上,C++ 在诞生 35 年后,依然保持着强大的生命力。今天的 C++ 远比早期的 C++ 更强大,更具表现力。但即使在今天,最初的设计依然可见。

Stroustrup 说:“40 年前编写的一些简单的程序,到今天还可以运行。”

“对必须工作几十年的语言来说,稳定性是一种重要的特征。实际上,许多早期的想法只有在 C++20 中才能实现。我从一开始就知道,我不可能构建理想的语言,因此我必须以渐进式发展为目标:改进。说真的,我并不相信完美语言的想法:要怎样就算是完美呢?对谁来说(是完美的)?”

他补充说:“为了应对不断变化的世界的挑战,融入新思想,改进是必须的。”

实践中的 C++

截至 2020 年 9 月,C++ 是全球第四大流行的编程语言,仅次于 C、JavaPython,而且根据最新的 TIOBE 索引来看,它也是增长最快的语言。

作为一种通用的编程语言,C++ 以其强大的功能和灵活性而受到开发人员的青睐,这使得它成为操作系统、网络浏览器、搜索引擎(包括 Google 的)、游戏、企业应用等的理想选择。

Stroustrup 总结道:“如果你有一个问题需要高效地利用硬件,同时还需要处理高度复杂性,那么 C++ 显然是一个不错的选择。如果你没有这两种需求的话,那么低级高效的语言或者高级但不高效的语言都是可以的。”

然而,即使 C++ 广泛流行,Stroustrup 也指出,要想准确地确定 C++ 确切的用途和用处,是非常困难的。

“对这两个问题的答案,估计是‘无处不在’,”他说。

“在任何大型系统中,你通常会在低级和性能关键部分发现 C++ 的影子。系统的这类部分往往不会被最终用户看到,甚至不被系统其他部分的开发人员看到,所以我有时把 C++ 称为一切的无形基础。”

同时他也强调了在评估特定编程语言的流行程度时,开发人员调查相对不可靠:“计算程序员的人数既困难又简单。网络调查通常只是测量‘噪音’,也就是说,统计的是人们都在谈论的,而非他们实际使用过的。”

C++ 的未来

如今,Stroustrup 是 Morgan Stanley 的技术研究员。他与国际标准化组织(ISO)合作制定 C++ 标准和 C++ 核心指南的工作,这被认为是他在这家金融巨头公司的角色的一部分,他仍然非常积极地参与 C++ 的开发。

最值得注意的是,Stroustrup 是方向小组的成员,该小组提出并讨论关于编程语言未来的建议。他还关注改进小组,并参与有关新语言特性的讨论。

然而,当涉及到 C++ 的日常运行方面时,Stroustrup 更乐意担任次要角色。“我关注行政工作,但尽量少做。我并不是一个伟大的管理者,”他承认。

在新冠肺炎疫情之前,Stroustrup 会经常四处授课,并通过他的书籍、文章和采访向全世界解释 C++,但和世界其他地方一样,这一工作在 2020 年暂告一段落。

Stroustrup 说:“在我的工作中,我非常依赖于与人们交谈,了解他们的问题,并且倾听我的想法是如何帮助他们的。”

“在这个新冠肺炎疫情期间,我得不到急需的反馈。而虚拟会谈和现实不一样,在讨论设计和想法时,Zoom 会议的效果并不如真正的面对面会议。”

新冠肺炎疫情阻碍了 C++ 编程语言的下两个迭代版本:C++20 和 C++23 的开发。但 Stroustrup 确认,“几乎所有”的 C++20 将在 2020 年发布。

“除此之外,还有 Unicode、数字、游戏开发和低延迟、工具、人工智能等方面的工作都要去做。”他说。

“当一个特性(语言和库)准备就绪时,我们就会进行发布,并且我们每三年会发布一个修订的标准。已按时发布的有 C++14、C++17 和 C++20。值得一提的是,标准的制定与主要实现者是高度同步的。”

“让 C++ 保持连贯性,并作为一个稳定的开发平台,这一点至关重要。”

原文标题:40 岁的 C++ 没有中年危机

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

    96758
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76705

原文标题:40 岁的 C++ 没有中年危机

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何调试和编程CW32F030C8T7?支持哪些调试工具和编程语言

    了解如何调试和编程CW32F030C8T7是开发过程中的重要环节。它支持哪些调试工具(如JTAG、串口调试等)和编程语言(如C
    发表于 12-05 06:48

    为什么单片机还在用C语言编程

    ,只是C语言是最适合单片机编程的高级语言、单片机编程的特点 1.对单片机
    发表于 11-28 07:37

    C语言编程技巧

    设计,分层开发代码,便于理解和维护。 ‌8、避免使用GOTO语句‌:尽管GOTO语句在某些情况下仍然有用,但现代编程更倾向于使用函数和循环控制结构,以提高代码的可读性和维护性。 ‌9、利用C
    发表于 11-27 06:46

    2025最佳的嵌入式编程语言有哪些呢?

    嵌入式系统是现代科技不可或缺的部分。它们存在于家用电器、汽车、住宅、医院、商店等各个领域。它们与我们的社会紧密相连。选择合适的语言来构建嵌入式系统对于成功至关重要。那么,2025最佳的嵌入式
    的头像 发表于 11-14 10:27 893次阅读
    2025<b class='flag-5'>年</b>最佳的嵌入式<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些呢?

    文了解Mojo编程语言

    Mojo 是种由 Modular AI 公司开发的编程语言,旨在将 Python 的易用性与 C 语言的高性能相结合,特别适合人工智能(A
    发表于 11-07 05:59

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程
    的头像 发表于 08-06 15:33 3573次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    C++ 与 Python:树莓派上哪种语言更优?

    广泛应用于树莓派项目中。然而,C++在性能要求极高的应用和底层硬件控制方面表现出色。两者之间的选择取决于项目需求和对编程的熟悉程度。嗯,这就是简短的答案,但读完
    的头像 发表于 07-24 15:32 642次阅读
    <b class='flag-5'>C++</b> 与 Python:树莓派上哪种<b class='flag-5'>语言</b>更优?

    主流的 MCU 开发语言为什么是 C 而不是 C++

    在单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩不转。先说内存这道坎儿。您当stm32f4的
    的头像 发表于 05-21 10:33 777次阅读
    主流的 MCU 开发<b class='flag-5'>语言</b>为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    单片机c语言编程实例大全

    单片机c语言编程实例大全_18
    发表于 04-30 16:11 6次下载

    C++学到什么程度可以找工作?

    C++学到什么程度可以找工作?要使用C++找到工作,特别是作为软件开发人员或相关职位,通常需要掌握以下几个方面: 1. **语言基础**:你需要对C++的核心概念有扎实的理解,包括但不
    发表于 03-13 10:19

    源代码加密、源代码防泄漏c/c++与git服务器开发环境

    源代码加密对于很多研发性单位来说是至关重要的,当然每家企业的业务需求不同所用的开发环境及开发语言也不尽相同,今天主要来讲c++及git开发环境的源代码防泄密保护方案。企业源代码泄密场景
    的头像 发表于 02-12 15:26 871次阅读
    源代码加密、源代码防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>与git服务器开发环境

    Spire.XLS for C++组件说明

    Spire.XLS for C++款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序中。Spire.XLS for C+
    的头像 发表于 01-14 09:40 1294次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    gitee 支持的编程语言有哪些

    些 Gitee 支持的常见编程语言: Python :广泛使用的高级编程语言,以其清晰的语法
    的头像 发表于 01-06 09:50 1105次阅读

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    /C++代码快速迁移至HarmonyOS NEXT。凭借卓越的兼容性,AKI已成为厂商与开发者打造鸿蒙原生应用过程中广泛使用的跨语言调用解决方案。 AKI是款专为鸿蒙原生开发设计的
    发表于 01-02 17:08

    Triton编译器支持的编程语言

    编写和优化深度学习代码。Python是广泛使用的高级编程语言,具有简洁易读、易于上手、库丰富等特点,非常适合用于深度学习应用的开发。 二、领域特定
    的头像 发表于 12-24 17:33 1452次阅读