oop - 为什么面向对象的语言在嵌入式世界中不流行?

标签 oop embedded

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

8 年前关闭。




Improve this question




我是一名固件开发人员,我通常用 C 或汇编语言开发固件。但是,我在我们的嵌入式库中遇到了一个完全用 C++ 实现的项目。现在我知道面向对象的语言可以在硬件级别使用,但我想知道为什么它们在开发嵌入式系统时不那么流行。

最佳答案

真正的原因:因为概念的复杂性。 C 和汇编语言提供了一个简单的思维模型来跟踪系统中发生的事情。面向对象的程序需要一个更复杂的模型,这使得推理正在发生的事情变得更加困难。

与更开放的服务器和 PC 环境相比,嵌入式系统往往是需要对系统中发生的事情进行非常严格控制的环境。这需要简单和透明的编程结构。 C 语言和汇编语言都提供了在最低硬件级别系统中真正发生的事情的高度可见性。

一般而言,面向对象的语言,尤其是 C++,抽象出执行代码时系统中发生的事情的许多细节,从而使推理系统的内部工作变得更加困难。

这里有一个例子来解释我的意思。考虑以下代码片段:

i++;

在 C 程序中看到这一点,我们可以大致准确地了解它的作用,以及关于使用多少 CPU 周期、涉及多少寄存器等的数量级。

现在同一行在 C++ 程序中会做什么?这要看情况。取决于 i 是什么类型以及++ 运算符是如何被重载的。明白了吗?

这些都不是说 C++ 或面向对象不好。它不是。如果人们对系统中真正发生的事情的细节感兴趣,它确实需要一个更复杂的思维模型,因为许多嵌入式开发人员认为他们需要。

关于oop - 为什么面向对象的语言在嵌入式世界中不流行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19630185/

相关文章:

Javascript OOP初始化和方法调用问题

c - 在未对齐的地址设置整数值?

ssl - STM32Cube_FW_F7 SSL 客户端 mbedTLS FATAL_ALERT

c - AVR 定时器溢出中断不工作

c++ - 固定分配 std::vector

ios - 在@IBAction 中分配来自不同类的另一个变量?

c++ - 模板化成员函数不能从同一个类调用非模板化成员函数,C++

JavaScript 原型(prototype)设计 : single prototype object or not?

C# 类和方法

c# - Symbol MC32N0 从 CE 6.0 升级到 WEC7 : "Unsupported System Version"