为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?

why developers use c/c++ for embedded systems rather than high level language like python compared to c?

本文关键字:Python 相比 高级语言 开发 为什么 系统 嵌入式 用于      更新时间:2023-10-16

我们可以像在C/C ++中那样通过python访问内存吗? 用 c 编程已经有一段时间了,遇到了这个问题? 我看到超过 90% 的代码是用嵌入式系统的 c/c++ 编写

的。

像Python这样的语言是通过解释运行的,这意味着你需要在硬件和程序之间使用另一个软件来读取它。

另一方面,像C或C++这样的语言被编译成机器码,以便机器可以直接读取它们。

既然你问了内存管理,Python并没有给你精确的内存管理,而C或C++则给你

为什么开发人员将C/C ++用于嵌入式系统,而不是像Python这样的高级语言而不是C?

答案肯定部分是历史性的。

C 最初设计用于操作系统:

最初,C语言被开发用于UNIX操作系统。它继承了以前语言的许多功能,如 B 和 BCPL。

我想这与它在嵌入式系统中的使用有很大关系。

另一方面,C++是从 C 派生出来的:

1979年,丹麦计算机科学家Bjarne Stroustrup开始研究"C与类",这是C++的前身。[15]创造一门新语言的动机源于斯特劳斯特鲁普为他的博士论文编程的经验。Stroustrup发现Simula具有对大型软件开发非常有用的功能,但该语言对于实际使用来说太慢了,而BCPL速度很快,但级别太低,不适合大型软件开发。当Stroustrup开始在AT&T贝尔实验室工作时,他遇到了分析UNIX内核与分布式计算有关的问题。回忆起他的博士经历,Stroustrup开始用类似Simula的功能来增强C语言。[16]选择C是因为它是通用的,快速的,便携式的和广泛使用的。除了C和Simula的影响,其他语言也影响了这种新语言,包括ALGOL 68,Ada,CLU和ML。

最初,Stroustrup的"C with Classes"为C编译器Cpre添加了功能,包括类,派生类,强类型,内联和默认参数。[注17]

1982年,Stroustrup开始开发带有类的C的继任者,在经历了其他几个名称后,他将其命名为"C++"(++是C中的增量运算符(。添加了新功能,包括虚函数、函数名称和运算符重载、引用、常量、类型安全的免费存储内存分配(新建/删除(、改进的类型检查以及带有两个正斜杠 (//( 的 BCPL 样式单行注释。此外,Stroustrup还为C++开发了一个新的独立编译器Cfront。

因此,虽然这些语言现在已经明显不同,但它们彼此非常相似。

另一方面,Python被设计为与操作系统一起使用,而不是创建它们:

编程语言Python是在1980年代后期构思的,19892年12月由荷兰CWI的Guido van Rossum开始实现,作为ABC的继承者,能够处理异常并与阿米巴操作系统接口。

成本。

拥有一个可以在python VM中运行python程序的平台比运行本机编译的应用程序的平台成本更高。

通过python直接操作内存是很困难的,在某些用例中,嵌入式系统编程非常需要。

此外,垃圾收集器偶尔在python中运行,它查找未使用的内存对象并释放它们。应该注意的是,它有时可能会消耗比预期更多的垃圾回收时间。

典型的实时嵌入式系统期望在可预测的时间更快地执行。C,C++提供典型的嵌入式系统所需的更快的执行速度和对内存的良好控制。 因此,在这种情况下,通常不考虑python。

我认为嵌入式空间使用的是Python。 CircuitPython和MicroPython都是专门为嵌入式系统设计的Python版本。 当然,C和C++仍然非常受欢迎,但Python肯定会获得牵引力。

目前,Adafruit 提供的大多数微控制器板都有一个可用于它的两个 Python 系统之一的端口。