找回密码
 立即注册
查看: 226|回复: 3

硬件工程师有必要面向对象开发吗?

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:92
  • 最近打卡:2026-07-21 10:23:24
已绑定手机

25

主题

37

回帖

1300

积分

金牌会员

积分
1300
发表于 2026-2-5 15:08:58 | 显示全部楼层 |阅读模式
从计算机出现开始,开发语言是越来越高级,到java这一层时,设计思想达到巅峰,后面弱化了面向对象(根据实际开发面向对象编译器经验,发现面向对象性能与面向过程不在一个量级,比如面向过程中定位struct.field可直接查找结构体中的field,面向对象struct.field则不行,因为struct可能是子类,field可能是继承的,也可能是自定义的)。
我们来回顾一下软件的开发是如何越来越健壮的。就拿各位熟知的STC单片机,最初是MOV P0,0xFF,即使加上注释,代码也是难以理解,这一层次代码与业务是完全分离的。STC单片机用C开发,可以写成P0=0xFF,这时即时没有注释,STC单片机硬件工程师也能明白是啥意思,程序与业务已经绑定,但缺少上下关联。比如P0的模式是哪种?无从得知,因为设置模式与设置值是分开的。换作面向对象的开发(比如即将面世的Yxra语言),代码如下:

public class GPIO{

    private int portMode;
    public GPIO(int portMode){
        this.portMode=portMode;
    }
    public void setValue(byte value){
        //yxra面向硬件实现
        //   同时屏蔽STC单片机与ARM单片机特性,实现相互移植
    }
}
public class STCChip{
    public void addGPIO(GPIO gpio){
        //STC单片机添加GPIO,也可以根据实际STC单片机直接初始化
    }
}
上述代码可以在各种硬件中相互移植,也适用于计数器、串口等设备。各位是否能看出开发语言对开发工作的影响了?如果我要更换不同STC单片机,面向对象的开发是继承STCChip类,而不是逐一调整代码。
在yxra语言出来前,没有面向对象的结构化开发硬件,没有办法。如果面向对象面向硬件的开发语言有了,各位可以尝试一下,深入面向过程与面向对象区别。


1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:866
  • 最近打卡:2026-07-22 00:28:47
已绑定手机

19

主题

3461

回帖

7738

积分

论坛元老

积分
7738
发表于 2026-2-5 17:31:42 | 显示全部楼层
这是c++语言的吧
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2026-07-21 03:06:14

174

主题

1354

回帖

5258

积分

荣誉版主

积分
5258
发表于 2026-2-5 18:46:04 | 显示全部楼层
“如果面向对象面向硬件的开发语言有了,各位可以尝试一下,深入面向过程与面向对象区别。”

期待你早日在STC单片机开发出:面向对象面向硬件的开发语言,让我们可以尝试一下深入面向过程与面向对象编程的区别。

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2026-07-21 03:06:14

174

主题

1354

回帖

5258

积分

荣誉版主

积分
5258
发表于 2026-2-5 18:50:58 | 显示全部楼层
我向DeepSeek提问“硬件工程师有必要面向对象开发吗?”,下面是它的回答:


硬件工程师掌握面向对象编程的思想,在现代的软硬件协同设计中,已逐渐从“加分项”变为“必备技能”。其必要性可以从三个方面来理解:

| 必要性维度 | 核心观点与价值 |
| :--- | :--- |
| **行业与技术趋势** | 现代硬件(如SoC、智能硬件)软件复杂度激增,纯硬件视角难以驾驭。物联网、汽车电子等复杂系统更依赖**模块化**和**高内聚低耦合**的设计,这正是面向对象思想的优势。 |
| **招聘市场需求** | 企业在招聘自动化、嵌入式等方向的硬件工程师时,已明确要求具备**面向对象编程思想**和相应的语言能力(如Java/C++),以编写高效、稳定的代码。 |
| **工作效率与质量** | 面向对象思想(封装、继承、多态)能提升**代码复用率**、降低大型项目维护成本,并通过RAII等机制**增强系统可靠性**。 |

### 🛠️ 面向对象思想在硬件开发中的典型应用
掌握面向对象思想,能帮助硬件工程师更好地应对以下工作:

1.  **系统架构与模块设计**
    *   **核心思想**:将硬件模块(如传感器、执行器、通信接口)**抽象为软件对象**。每个“硬件对象”封装自己的数据(状态、寄存器配置)和行为(初始化、读写、控制)。
    *   **实际价值**:当需要管理多个同类型传感器时,只需实例化多个对象,无需重复编写底层代码,极大提升开发效率和系统可维护性。

2.  **设备驱动与中间件开发**
    *   **核心思想**:用**类来封装设备驱动**。基类定义通用接口,派生类实现具体硬件的操作。
    *   **实际价值**:更换同类硬件时,只需替换派生类,上层应用代码几乎不用改动,提高了代码的**可移植性**和**可扩展性**。

3.  **测试脚本与自动化工具开发**
    *   **核心思想**:使用Python等支持面向对象的脚本语言,将测试用例、仪器控制封装成类。
    *   **实际价值**:快速构建**可复用、易维护**的自动化测试框架,提升验证效率。

### 🔧 面向对象的不同实现路径
硬件工程师可以根据项目需求和自身基础,选择不同方式实践面向对象:

| 实现方式 | 适用场景与语言 | 核心特点与提醒 |
| :--- | :--- | :--- |
| **使用C++等原生OOP语言** | 资源相对充裕的嵌入式系统、复杂驱动或应用框架。 | **优势**:语言直接支持,表达直观。**提醒**:需注意潜在开销(如虚函数表、RTTI),在极资源受限系统慎用。 |
| **用C语言模拟OOP** | 资源极度受限的MCU开发、需严格掌控内存和性能的场景。 | **方法**:用`结构体`封装数据,以函数指针表示“方法”,通过将指向结构体的指针作为函数第一个参数来模拟“`this`”。**特点**:更底层、更灵活,但对设计能力要求高。 |
| **使用Python等高级语言** | 快速原型验证、测试工具开发、上位机软件。 | **优势**:语法简洁,开发效率高,拥有丰富的库。**定位**:适用于**非实时**的辅助开发环节。 |

### 💡 如何开始学习与实践
对于想学习的硬件工程师,建议分三步走:

1.  **理解核心思想**:重点理解**封装**(隐藏实现细节)、**继承**(扩展功能)和**多态**(接口统一)这三个核心概念及其能解决的问题。
2.  **选择一门语言入手**:
    *   **新手推荐Python**:语法友好,能快速建立面向对象思维,并立刻用于**编写测试脚本或工具**。
    *   **深化推荐C++**:它是嵌入式领域应用OOP的主流语言,学习它能更深刻理解面向对象与系统资源的关联。
3.  **在项目中实践**:从一个具体模块开始尝试。例如,用类来封装一个**LED灯**或**串口通信模块**,体会如何将硬件操作和数据封装在一起。

总结来说,面向对象开发对于硬件工程师的价值,**更多在于提供一种模块化、高内聚、低耦合的系统设计思想**,而不仅仅是掌握某一种编程语言的语法。这种思维能帮助你设计出更清晰、更易维护、也更能适应未来变化的硬件及相关软件系统。

如果你已经有一定编程基础,并想了解针对特定应用场景(如电机控制、通信协议栈)如何使用面向对象进行建模,我可以为你提供更具体的思路。

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-22 09:24 , Processed in 0.067380 second(s), 59 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表