我们都是调包侠

应用层

在应用层的角度看,比如 JavaScript 开发、Typescript开发、Java 开发、Android 应用开发等等,利用高级编程语言来控制计算机设备,根本无需关注硬件部分,操作系统部分也无需关注,除非是性能优化,可能需要关注操作系统的一些细节。大多数时候我们是利用高级编程语言以及这些高级编程语言提供的运行时API或机器指令,以及操作系统的接口,来完成对计算机的控制,站在这个角度看,我们完完全全就是调包侠。

低级编程语言层

在低级编程语言的角度看,例如高性能程序,比如数据库系统、编译系统、视频解码程序等等,他们对性能的要求很高,但依然是基于操作系统之上,调用操作系统的接口,无非是性能要求的高,那它也是调包侠,调用操作系统的接口。

系统编程层

在系统级编程的角度看,比如操作系统开发,它需要知道一些硬件的细节了,但不是电气特性,而且接口特性,比如CPU控制一个外部设备,写入知道这个设备I/O接口的数据端口(数据寄存器)、状态寄存器(状态端口)、控制端口(控制寄存器)这些寄存器对应在内存地址空间的地址(这属于硬件信息,一般是固定的,在电路板设计时由硬件工程师设计),在这个角度之上,操作系统的开发那也是调包侠,它调用硬件的接口,完成对硬件的驱动,驱使电位改变,从而引起外部设备的工作。

硬件层

在硬件层面的角度看,它是由很多很多个逻辑门电路、或者CMOS管连接而成的,它也是调包侠,这些逻辑门,CMOS管不都是别人封装好的吗?

然而在硬件层面,实现硬件设备需要考虑的因素和面临的挑战有很多,以下是一些主要的:

设计和优化:硬件设计需要考虑很多因素,包括但不限于性能、功耗、成本、可靠性和安全性。这些因素之间往往存在着相互竞争的关系,比如提高性能可能会增加功耗和成本,提高安全性可能会降低性能。因此,硬件工程师需要在这些因素之间找到一个平衡点。

制造过程:硬件设备的制造过程非常复杂,需要精确的控制和高度的技术。任何微小的错误都可能导致设备无法正常工作。此外,随着技术的发展,硬件设备的尺寸越来越小,这对制造过程提出了更高的要求。

测试和验证:硬件设备需要经过严格的测试和验证,以确保它们在各种条件下都能正常工作。这包括在极端的温度、湿度、电压等条件下进行测试。这个过程既耗时又耗费资源。

兼容性:硬件设备需要与各种其他设备和软件兼容。这需要硬件工程师对各种标准和协议有深入的理解。 可持续性和环保:随着环保意识的提高,硬件设备的设计和制造也需要考虑其对环境的影响。这包括使用环保的材料,减少能源消耗,以及设备的回收和处理。

总结

所以啊,无论在那个层面,它都是"调包侠",都是分工模式,相互依赖的。

所以啊,不要再反感"调包侠";

所以啊,不要在认为低级编程语言,比如:C/C++、Rust,就比 JavaScript、Java 高出一等;

所以啊,不要认为系统开发人员,比如开发操作系统的工程师,或者开发驱动程序的工程师,就比应用层的工程师高级、高人一等。