2020 年的 C++ 教育和科研 编程风格 核心指南 嵌入式系统 游戏开发 网络应用 操作系统、编译器和数据库管理系统

2020年的C++在系统软件开发、应用软件、游戏开发、嵌入式系统和网络应用等多个领域广泛应用。C++因其底层控制力和高效性能在操作系统、编译器、数据库管理系统等方面扮演关键角色。编程风格方面,C++11和C++20的引入极大提升了语言的易用性、表达力和性能。教育和科研领域,C++教学有所改善,但仍面临挑战。C++社区活跃,工具和库不断进步,支持了多元化编程风格,如泛型编程和元编程。
摘要由CSDN通过智能技术生成

2020 年的 C++

在二十一世纪的第二个十年,也就是2010年至2020年期间,C++作为一种高效、灵活的编程语言,在多个领域得到了广泛的应用。其强大的底层控制能力和高效的性能使得C++成为系统级开发、应用软件开发、游戏开发、嵌入式系统开发以及网络应用开发等领域的理想选择。

首先,在系统软件开发方面,C++常被用于开发操作系统、编译器和数据库管理系统等。由于其能够直接访问硬件并高效管理内存,C++成为系统级软件开发的重要工具。

其次,在应用软件开发领域,C++同样发挥了重要作用。无论是办公软件、图形图像处理软件,还是多媒体软件,都可以看到C++的身影。C++的丰富特性和强大的性能使得开发者能够构建出高效且功能强大的应用软件。

在游戏开发领域,C++更是不可或缺。大型桌面游戏、手机游戏以及网络游戏等,几乎都离不开C++的支持。C++的高效性和控制能力使得游戏开发者能够构建出具有高性能和丰富功能的游戏引擎和游戏逻辑。

此外,C++在嵌入式系统开发中也占有重要地位。随着物联网技术的不断发展,嵌入式系统在各种智能设备中得到了广泛应用。C++的高效性和可移植性使得它成为开发汽车电子系统、智能家居系统以及工业控制系统等嵌入式系统的理想语言。

最后,在网络应用开发方面,C++同样具有广泛的应用。无论是网络服务器、网络协议实现还是网络安全等领域,都可以看到C++的应用。C++的高效性和稳定性使得它成为构建高性能、高可靠性的网络应用的理想选择。

总的来说,在二十一世纪的第二个十年里,C++依然是一种强大且多功能的编程语言,在各个领域都发挥着重要作用。随着技术的不断进步和应用的不断深化,C++的未来发展前景依然广阔。

本节我们来查看一下在二十一世纪的第二个十年里,C++ 如何被使用,以及用来做什么:

C++ 的使用领域绝大部分与 2006 年相同(§2.3)。虽然有一些新的领域,但在大多数情况下,我们看到的 C++ 还是在相同或类似的领域中被更加广泛和深入地使用。C++ 没有突然成为一种面向 Web 应用开发的语言,虽然即使在那种场景下仍有人用 C++ [Obiltschnig et al. 2005]。对于大多数程序员来说,C++ 依然是某种隐没在后台的东西,稳定、可靠、可移植、高性能。最终用户是看不见 C++ 的。

编程风格则有更加巨大的变化。比起 C++98,C++11 是门好得多的语言。它更易于使用,表达能力更强,性能还更高。2020 年发布的 C++20 则在 C++11 的基础上做出了类似程度的改进。

10.1 C++ 用来做什么?

大致而言,C++ 可谓无处不在、无所不用。但是,大象无形,大多数 C++ 的使用并不可见,被深深隐藏在重要系统的基础设施内部。

C++ 被用在哪里,是如何被使用的,没人能够完整了解。2015 年,捷克公司 JetBrains 委托进行了一项研究 [Kazakova 2015],结果显示在北美、欧洲、中东以及亚太地区 C++ 被大量使用,在南美也有一些使用。“在南美的一些使用”就有 40 万开发者,而 C++ 开发者的总人数则达到了 440 万。使用 C++ 的行业有(按顺序)金融、银行、游戏、前台、电信、电子、投资银行、营销、制造和零售。所有迹象表明,自 2015 年以来,C++ 的用户数量和使用领域一直在稳步增长。

在这里,我将对 2006 到 2020 年期间内 C++ 的应用领域给出一个可能有些个人化的、印象派的、非常不完整的概览:

  • 工业界:电信(例如 AT&T、爱立信、华为和西门子)、移动设备(基本上是所有,信号处理、屏幕渲染、对性能或可移植性有重大要求的应用)、微电子(例如 AMD、英特尔、Mentor Graphics 和英伟达)、金融(例如摩根士丹利和文艺复兴)、游戏(几乎所有)、图形和动画(例如 Maya、迪士尼和 SideFx)、区块链实现(例如 Ripple)、数据库(例如 SAP、Mongo、MySQL 和 Oracle)、云(例如谷歌、微软、IBM 和 Amazon)、人工智能和机器学习(例如 TensorFlow 库)、运营支持(例如 Maersk 和 AT&T)。
  • 科学:航空航天(例如 Space X、火星漫游者、猎户座载人飞行器、詹姆斯·韦伯太空望远镜)、高能物理(例如 CERN 欧洲核子研究中心、SLAC 国家加速器实验室、费米实验室)、生物学(遗传学、基因组测序)、超大规模计算。
  • 教学:全球大多数工程院校。
  • 软件开发:TensorFlow、工具、库、编译器、Emscripten(从 C++ 生成 asm.js 和 WebAssembly)、运行期代码生成、LLVM(许多新语言的后台支柱,也大量用于工具构建中)、XML 和 JSON 解析器、异构计算(例如 SYCL [Khronos Group 2014–2020] 和 HPX [Stellar Group 2014–2020])。
  • Web 基础设施:浏览器(Chrome、Edge、FireFox 和 Safari)、JavaScript 引擎(V8 和 SpiderMonkey)、Java 虚拟机(HotSpot 和 J9)、谷歌和类似组织(搜索、map-reduce 和文件系统)。
  • 主要 Web 应用:阿里巴巴、Amadeus(机票)、Amazon、苹果、Facebook、PayPal、腾讯(微信)、Yandex。
  • 工程应用:达索(CAD/CAM)、洛克希德·马丁(飞机)。
  • 汽车:辅助驾驶 [ADAS Wikipedia 2020; Mobileye 2020; NVIDIA 2020]、软件架构 [Autosar 2020; Autosar Wikipedia 2020]、机器视觉 [OpenCV 2020; OpenCV Wikipedia 2020]、宝马、通用、梅赛德斯、特斯拉、丰田、沃尔沃、大众、Waymo(谷歌自动驾驶汽车)。
  • 嵌入式系统:智能手表和健康监控器(例如佳明)、相机和视频设备(例如奥林巴斯和佳能)、导航辅助设备(例如 TomTom)、咖啡机(例如 Nespresso)、农场动物监控器(例如 Big Dutchman)、生产线温度控制(例如嘉士伯)。
  • 安全:卡巴斯基、美国国家安全局、赛门铁克。
  • 医疗和生物学:医学监测和成像(例如西门子、通用电气、东芝和飞利浦)、断层扫描(例如 CT)、基因组分析、生物信息学、放射肿瘤学(例如 Elekta 和 Varian)。

虽然这只是冰山一角,但它展示了 C++ 使用的广度和深度。大多数 C++ 的使用对其(间接)用户不可见。某些对 C++ 的使用早于 2006 年,但也有很多是之后才开始的。没有一个主要现代系统只用单一语言写就,但是 C++ 在所有这里提到的应用场合中发挥了重要作用。

我们常常忘记那些平凡的却在我们的生活中起着重要作用的应用。没错,C++ 可以帮助运行美国国家航空航天局的深空网络,但也可以在人们日常熟悉的小设备中运行,例如咖啡机、立体声扬声器和洗碗机。让我惊讶的是,C++ 竟然也被应用于运转现代养猪场的先进系统中。

10.2 C++ 社区

与 2006 年相比,2020 年的 C++ 社区更加壮大,不断蓬勃发展、积极向上、富有成效,并且急切地想看到未来的进一步改进。

与大多数编程语言社区相比,C++ 社区一向是出奇地无组织和分散。这个问题早已有之,因为我就没有建立组织的才能。当时我的雇主 AT&T 贝尔实验室并不想建立一个 C++ 社区,但是似乎其他所有人都非常感兴趣,并且愿意花钱来建立他们的用户群。最终的结果是,许多公司,例如苹果、Borland、GNU、IBM、微软和 Zortech 都建立了以其客户为中心的 C++ 社区,但是却没有总体的 C++ 社区,社区没有中心。有杂志,读的人不多(相对于 C++ 社区的规模)。虽然有会议,但它们倾向于被一般的“面向对象”的会议或“软件开发”的会议所吸收或者就演变成了那些一般性会议。没有总体的 C++ 用户组。

如今,世界上有数十个本地、国家和国际 C++ 用户组,这些用户组之间也经常进行一些合作。除此之外,还有数十个 C++ 会议,每个会议都有数百人参加:

  • C++ 基金会——成立于 2014 年,是一家非盈利性组织,旨在推广 ISO C++(而不是任何特定供应商的 C++),它主办 CppCon 年度会议。
  • Boost——成立于 1999 年,它是一组经过同行评审的库、以及建造使用它们的社区。Boost 举行年度会议。
  • Meeting C++——成立于 2012 年,是一个非常活跃的用户团体网络,定期举行会议(最初在德国活跃)。在不同地方有数十个 Meeting C++ 的会议和聚会。
  • ACCU——成立于 1984 年,最初作为 C 用户组而建立,是所有现存 C++ 组织中的爷爷辈了;它出版两本杂志,并举行年度会议(主要在英国活跃)。
  • isocpp.org——C++ 基金会的网站,其中包含与 C++ 有关的新闻,标准化进程相关的信息,以及有用的链接。
  • cppreference.com——出色的在线参考资料;它甚至有一个历史部分!
  • 会议——CppCon、ACCU、Meeting++、C++ Now(以前称为 BoostCon)、Qt、NDC、std::cpp 的会议,以及在波兰、俄罗斯、中国、以色列和其他地方的一些会议。此外,很多通用软件会议上也在越来越多的安排 C++ 专题。
  • 博客——有许多,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EwenWanW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值