嵌入式C语言是不是过时了?

最新更新时间:2022-08-12来源: EEWORLD关键字:C语言 手机看文章 扫描二维码
随时随地手机看文章

C 编程语言无疑是计算机科学中最成功的编程语言之一。 C 最早出现在 1972 年左右,由贝尔实验室的Dennis Ritchie创建。在过去 20 年中,C 被TIOBE Programming Index 评为世界上最流行的两种编程语言之一(参见图 1)。它是嵌入式系统开发人员最流行的语言,用于近 80% 的嵌入式项目。经过近半个世纪的使用,嵌入式开发人员需要转向更现代的语言了吗?C语言要退休了吗?

image.png

图 1 – 过去 20 年编程语言指数排名,源自TIOBE 编程社区,其中C一直是排名前两位的语言之一。


出于几个原因,放弃C并转向更现代的编程语言的诱惑相对较高。首先,入门级工程师几乎没有 C 语言经验。如今的大学课程专注于教授 Python 或 C++ 等现代语言。让他们加快速度并获得经验可能需要大量的金钱和时间投资,而很少有公司对此感兴趣。


其次,虽然非常流行,但C语言确实已经过时了。 C 不支持现代编程概念,如类和继承。如果您比较 C++、Python 和 Rust 等现代语言的功能集,C 语言看起来像恐龙。上一次 C 标准添加新特性是 2011 年,2017 年标准版本只有技术修正和澄清,预计 2023 年即将发布的标准版本很可能也不会有任何更改。


停用 C 仍然看起来很诱人,但是离开 C 有几个问题。首先,C 是一种非常适合在硬件处运行的低级过程应用程序的语言,它紧凑且高效。其次,资深工程师对C语言根深蒂固。他们使用该语言长达数十年,对学习和过渡到更现代的语言几乎没有兴趣。最后,有很多遗留库和代码库使用 C,我们不能放弃它们。毕竟移植遗留代码的成本太高了!


看来我们有点进退两难了!为了行业着想,我们应该淘汰 C 以利用更现代的语言和技术,但是更改的时间和成本以及我们必须维护的遗留代码经常阻碍 C 的淘汰。对更现代技术的需求,同时保持我们从 C 中获得的好处,可能会使我们远离使用单一的主导语言,并迫使我们依赖多种语言来完成一项工作。


使用其他语言来支持 C 可能已经发生。例如,下面的表 1 显示了几种语言在 TIOBE 指数中的排名。过去,一两种语言主导着计算机科学。如今,前四种语言的评分都在 10% 左右。这表明单一主导语言的终结。相反,开发人员将利用多种语言来实现他们的最终目标。


编程语言排名

image.png

表 1 – 通常与嵌入式软件开发相关的编程语言列表(来源:TIOBE 指数)。注意:这些评级不代表嵌入式软件的使用,仅代表一般计算机科学行业的使用。


如果你仔细观察这个行业,这些已经发生了。我看到一些公司正在过渡到使用仍然拥有大量 C 库的 C++。我看到一些公司尝试使用 Rust,但需要依赖他们久经考验的 C 软件库作为构建的一部分,反之亦然。这意味着 C 将在未来无限期地继续成为主导语言之一。


C到了退休时机了吗?这是一个简单但复杂的问题。我认为是的,但这取决于你在做什么。您可能不想在 8 位微控制器上使用 C++ 或其他语言。如果您正在使用机器学习或开发连接设备的尖端 32 位微控制器,C 以外的语言将为您提供成功所需的额外工具。切换语言的时间和成本可能太高。我的经验法则是,如果是新设计,请从现代语言开始。如果是遗留设计,请利用遗留代码并尝试利用现代语言编写新代码。

关键字:C语言 编辑:冀凯 引用地址:http://news.eeworld.com.cn/qrs/ic618835.html

上一篇:意法半导体推出多连接方式开发套件,瞄准室内外资产跟踪应用
下一篇:OpenHW为物联网构建基于RISC-V的MCU开发套件

推荐阅读

单片机AT89C51--2.单片机与C语言简介
1. 单片机概述1.1 计算机的组成电脑主机基本上就靠,CPU,内存条,还有你的总线控制器(主板)组成,主板通过自己的硬件接口,连接鼠标键盘等,连接外部这些硬件设备,Modem是网络常用MCU表示单片机。在一块集成电路芯片上集成中央处理器CPU和存储器,IO接口,构成了单片机ROM:相当于硬盘RAM:相当于内存条1.2 单片机的内部结构中间的线是数据总线可编程的IO口:input口:单片机会连接一些外部的传感器,比如温度传感器。会输入温度数据。通过IO口的Input功能将数据输入到单片机中去。Output口:输出指令,给LED灯,液晶屏显示等。。。判断是不是51单片机:不是看AT89C51,52。。。这些后面的数字,后面的数字只是表
发表于 2022-09-29
单片机AT89C51--2.单片机与<font color='red'>C语言</font>简介
[C语言] 16进制整数转字符串
static void hex_to_str(uint8_t *source, uint32_t len, uint8_t *target){ uint8_t ddl, ddh; uint32_t i; for (i = 0; i < len; i++) { ddh = ('0' + source[i] / 16); ddl = ('0' + source[i] % 16); if (ddh > '9') ddh = (ddh + ('a' - '9' - 1)); if (ddl > '
发表于 2022-09-20
51单片机——LED发光二极管、蜂鸣器C语言入门编程
最近在哔站学完了51单片机,准备复习的时候却发现找不到比较适合自己的一些资料,所以就想自己总结一个适合已入门学者基于51单片机的资料。 接下来将参考江科大的代码风格根据普中51单片机开发攻略在A2开发板编写程序。LED发光二极管: 长脚为正,短脚为负。由原理图可以知道,LED的正极都接了VCC,我们需要控制的引脚就约等于LED的负极,只需给低电平,LED两端有电压差就会点亮。(低电平点亮)1.点亮第一个LED:P2_0亮#include <REGX52.H>void main(){ while(1) { P2_0=0; }}2.LED闪烁:P2_0以1S为周期闪烁#include <
发表于 2022-09-19
51单片机——LED发光二极管、蜂鸣器<font color='red'>C语言</font>入门编程
51单片机——数码管、按键、矩阵按键C语言入门编程
数码管: 数码管按段数可分为七段数码管和八段数码管,八段数码管多一个DP(小数点)二极管。也可分为共阳极数码管(低电平点亮)和共阴极数码管(高电平点亮)。本开发板上使用的是2个四位一体共阴极数码管。数码管静态显示是控制数码管的每一个引脚,输入一次电平之后可以一直显示直到再一次改变电平,静态显示会增加IO口的使用,结构复杂成本高,但是会减少占用CPU的时间。数码管动态显示通过位选—段选—清零(消影)来通过发光管余辉和人的视觉暂留是我们感觉出每一位同时显示。 通过74HC138译码器(C为高位B为次高位A为低位)输入高电平输出低电平进行位选,然后通过74HC245驱动数码管段选(a为低位,DP为高位)。//共阴极数码管段码表0X3
发表于 2022-09-19
51单片机——数码管、按键、矩阵按键<font color='red'>C语言</font>入门编程
51单片机——74HC595、LED点阵、直流电动机C语言入门编程
74HC595: 是一个8位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。移位寄存器和存储器是单独的时钟。数据放在SER中,在SCK的上升沿输入,在RCK 的上升沿进入到存储器中。移位寄存器有一个串行输入(DS),和一个串行输出(Q7非),和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具有三态的总线输出,当 MR 为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输 出到并行端口。(先发高位后发低位)15和1到 7脚 QA--QH→并行数据输出;9脚QH非→串行数据输出;10脚SCLK非(MR)→低电平复位引脚;11脚SCK(SHCP)→ 移位寄存器时
发表于 2022-09-19
51单片机——74HC595、LED点阵、直流电动机<font color='red'>C语言</font>入门编程
51单片机——中断系统、外部中断、定时器中断、串口通信C语言入门编程
中断系统:当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。当几个中断源同时向 CPU请求中断,CPU总是先响应优先级别最高的中断请求。当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。STC89C5X 系列单片机提供了8个中断请求源,它们分别是:外部中断0(INT0)、外部中断1(INT1)、外部中断2(IN
发表于 2022-09-19
51单片机——中断系统、外部中断、定时器中断、串口通信<font color='red'>C语言</font>入门编程
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved