C++ 是否变得比 C 更流行了?

每年都会出现一种新的编程语言。创造一种新语言来解决计算机科学中的挑战的诱惑很难抗拒。一些资料表明,目前有多达 2,500 种语言,这并不奇怪!

对于我们嵌入式软件开发人员来说,这个列表并不长。事实上,我们可以用一只手数出我们实际使用的所有语言:C、C++、Rust、Assembly 和 Python。别误会,还有其他一些语言,特别是如果你在嵌入式 Linux 或 FPGA 上工作,但我只考虑使用微控制器的开发人员会考虑的语言。

在大多数情况下,近 50 年来,C 一直是资源受限系统中的主要语言。如今通用软件计算的有趣之处在于,C 也一直占据主导地位。至少到 2024 年 6 月为止。至少根据 TIOBE 编程社区指数,39 年来 C 的受欢迎程度首次低于 C++!

语言流行度意味着什么

嵌入式软件团队和开发人员是否应该担心 C++ 的流行度已经超过 C?我最初的想法是,不必。这些语言的流行度会随着时间的推移而起起伏伏。事实上,历史上曾有好几次,C++ 似乎会主宰 C,但最终 C 的流行度再次飙升。

我想这次会有所不同。通用软件行业的许多团队正在从 C 转向 C++ 或 Rust。甚至 Linux 内核现在也提供对 Rust 的支持!虽然我们可以争辩说,虽然 C 在通用计算领域可能正在失去人气,但它仍然是嵌入式系统的事实上的语言,并且在可预见的未来仍将如此。然而,我并不这么认为。

回顾过去十年的调查数据,超过 80% 的嵌入式系统项目使用了 C!如今,这些数字在 60% 到 70% 之间。也许更有趣的是,C++ 已增长到嵌入式项目的 20% 到 25% 之间!即使对于嵌入式团队来说,总体趋势也是远离 C 而转向 C++。(我非常感兴趣地观察 Rust 是否开始影响这些数字)。

这些调查中的语言流行度可以帮助团队了解计算机科学的总体趋势,并深入了解未来开发人员可能具备的技能。例如,Rust 的日益流行和使用建议影响了我,让我确保自己的语言技能达到标准。

考虑到几十年来大学里都没有教授过 C 语言,它能保持这么长时间的流行度着实令人惊讶。虽然公司必须不断培训开发人员使用 C 语言,但为什么要继续投资于一种流行度正在下降的语言的技能呢?

虽然遗留的 C 代码多得数不胜数,但这并不意味着我们应该将所有新代码开发都与过时的语言绑定在一起。毕竟,既然现代技能可以让团队走得更远、更快,为什么要扼杀创新并浪费时间呢?我担心微控制器供应商已经陷入了“我们一直都是这样做的”循环。

当然,您可能会说微控制器是资源受限的设备,需要 C,但您是否看过供应商如今推出的资源受限的产品?Cortex-M33 部件具有 2MB 闪存和 768 kB RAM,运行速度为 160 MHz 及以上。这比我的第一台微控制器 PC 的处理能力还要强!

C++ 或 Rust 太慢的论点确实经不起推敲。  

结论

C++ 首次超越 C,成为最受欢迎的编程语言。这一趋势会持续下去吗?只有时间才能告诉我们答案。不过,我认为重要的是要认识到语言的流行程度并不能说明全部情况。

如果嵌入式系统语言选择的正确解决方案是按如下方式使用它们,那么我不会感到惊讶:

  • 启动代码的汇编语言
  • C 用于低级驱动程序和板级支持
  • 应用程序代码采用 C++ 或 Rust

虽然我们经常认为一种语言会主导另一种语言,但我们已经在一个系统中使用了多种语言。为什么不在应用程序级别扩展 C++ 或 Rust 的使用,使其发挥最大的优势,并将 C 代码保留在我们最熟悉的地方呢?

这将使我们能够充分利用 C 的速度和“灵活性”以及 C++ 或 Rust 的现代技术和抽象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/787557.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】网络新兵连

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 引言 在上一篇博客中,我们简单的介绍了一些Linux网络一些比较基本的概念。本篇博客我们将开始正式学习Linux网络套接字的内容,那么我们开始吧! 1.网络中的地址管理 大家一…

uniapp安卓端实现语音合成播报

最初尝试使用讯飞语音合成方式,能获取到语音数据,但是数据是base64格式的,在安卓端无法播放,网上有说通过转成blob格式的url可以播放,但是uniapp不支持转换的api;于是后面又想其他办法,使用安卓插件播报原生安卓语音播报插件 - DCloud 插件市场 方案一(讯飞语音合成) 1.在讯飞…

分享一个Typecho博客系统专用的CloudFlare缓存规则,优化加速一下下!

好久都没有更新Typecho博客了,最近几天明月测试了一套适用于Typecho博客系统的CloudFlare缓存规则,经过近一周时间的测试确定有效,并且加速效果特别突出,今天就无偿分享给大家,也算是为国内Typecho生态添砖加瓦了吧! 总结下来,这套CloudFlare缓存规则带来的好处就是可以…

华为机试HJ108求最小公倍数

华为机试HJ108求最小公倍数 题目: 想法: 要找到输入的两个数的最小公倍数,这个最小公倍数要大于等于其中最大的那个数值,遍历最大的那个数值的倍数,最大的最小公倍数就是输入的两个数值的乘积 input_number_list i…

tableau饼图与环形图绘制 - 5

饼图与环形图绘制 1. 饼图绘制1.1 饼图绘制1.2 显示标签1.3 显示合计百分比1.4 设置百分比格式1.5 添加说明1.6 图像导出 2. 环形图绘制2.1 选择标记为饼图2.1 饼图绘制2.2 双饼图绘制2.3 设置大饼图大小2.4 设置双轴2.5 设置小饼图属性 1. 饼图绘制 酒店价格等级饼图 1.1 饼…

作业/数据结构/2024/7/8

链表的相关操作作业: 1】 按值修改 2】按值查找,返回当前节点的地址 (先不考虑重复,如果有重复,返回第一个) 3】 逆置(反转) 4】释放链表 main.c #include "head.h"int main(int argc, con…

品牌文化五大维度,构建品牌竞争力的秘诀!

品牌文化对于企业的发展和成功至关重要。 品牌文化不仅是企业和消费者之间的纽带,也是企业内部员工的凝聚力。 在当今竞争激烈的市场环境中,建立一个有活力和影响力的品牌文化是每个企业都需要认真思考和实践的事情。 品牌文化的五大维度包括价值观、…

VMware vSAN替换存储解决方案如何选择?

What is vSAN ? 是一款软件定义的企业存储解决方案,支持超融合基础架构系统。vSAN与VMware vSphere 完全集成在一起,作为ESXi Hypervisor内的分布式软件层,通过整合、池化ESXi各个主机上的存储资源,为vSphere虚拟化平…

医疗器械网络安全| 常见安全漏洞与防护措施

医疗器械网络安全顾问​https://link.zhihu.com/?targethttps%3A//www.wanyun.cn/Support%3Fshare%3D24315_ea8a0e47-b38d-4cd6-8ed1-9e7711a8ad5e 一、常见安全漏洞 医疗器械软件在现代医疗体系中扮演着至关重要的角色,然而,随着技术的不断发展&…

(2)滑动窗口算法练习:无重复字符的最长子串

无重复字符的最长子串 题目链接:3. 无重复字符的最长子串 - 力扣(LeetCode) 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是"a…

计算机网络知识汇总

目录 前言 概述 1、互联网的组成 2、端系统之间的两种通信方式 1、客户-服务器方式 2、对等连接方式(P2P) 3、交换技术 4、时延 5、利用率 6、协议 7、计算机网络体系结构 8、ISP 物理层 链路层 网络层 传输层 应用层 前言 最近准备找工作…

Linux 网络--TCP协议收包流程(NAPI机制)

Linux 网络--TCP协议收包流程(NAPI机制) 平台环境简介:宿主机: ubuntu18.04Linux内核源码版本: Linux-4.15网卡驱动: Intel e1000 (ubuntu 虚拟机默认网卡驱动)协议:TCP协议,本文分析收包过程 本…

Python编程学习笔记(3)--- 操作列表

1、遍历列表 遍历列表可以采用for循环的方法,需要对列表中的每一个元素都执行相同的操作。 具体事实如下: name ["ada","cdb","dbc","bad","jinb"] for Name in name:print(Name)运行结果&#x…

html H5 dialog弹窗学习,实现弹窗显示内容 替代confirm、alert

html H5 dialog弹窗学习,实现弹窗内容 替代confirm 框架使用的mui,使用mui.confirm() 弹窗内容过多时,弹窗被撑的到屏幕外去了,使用H5 dialog 标签自定义一个固定大小的弹窗,内容过多时可下拉显示 效果展示 隐私政策内容很多,可以下拉显示 代码 myDialog.css dialog{p…

tomcat 项目迁移,无法将项目作为服务service启动

背景 测试服务器需要迁移到正式服务器上,为了方便省事,将测试服务器上的一些文件直接复制到正式服务器 问题 使用startup启动项目之后,可以直接使用使用tomcat9w启动,或者作为服务service启动的时候,显示无法访问到资源…

STM32实战篇:按键控制LED

按键控制LED 功能要求 有两个按键,分别控制两个LED灯。当按键按下后,灯的亮暗状态改变。实物如下图所示: 由图可知,按键一端直接接地,故另一端所对应IO引脚的输入模式应该为上拉输入模式。 实现代码 #include "…

昇思25天学习打卡营第1天|小试牛刀

这里写自昇思25天学习打卡营第1天|小试牛刀定义目录标题 昇思25天学习打卡营第1天学习了初学入门之基本介绍。了解了昇思MindSpore和华为昇腾AI全栈。训练营中的教程丰富,有初学入门、应用实践和量子计算等。学习打卡营是很好的提升自己的机会。 昇腾计算&#xff…

电脑清理c盘内存空间怎么清理免费 怎么清理c盘的垃圾文件又不删除有用文件

在计算机使用过程中,随着时间的推移,C盘空间可能会被各种临时文件、缓存和无用的注册表项占用。这不仅会导致C盘空间不足,还可能影响计算机的性能。那么怎么样清理C盘内存空间,怎么样清理C盘的垃圾避开系统文件呢? 一…

JVM原理(二三):JVM虚拟机线程安全的实现方法

1. 互斥同步 互斥同步(MutualExclusion&Synchronization)是一种最常见也是最主要的并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一条(或者是一些,当使用信号量的时候)线程使用。而互斥是实现同步的一种…

Msfvenom制作自己的专属Shell

Msfvenom制作自己的专属Shell 如何通过Msfvenom来生成用户自己的专属Shell?有时候我们上传Shell到目标主机后,不仅我们自己可以连接,其他用户也可以连接,有时候会导致我们丢失该Shell,甚至该shell被用户发现并查杀。 实验环境 …