Answers:
这取决于您的工作。
如果您是嵌入式开发人员(并且要在非常小的设备中编写非常接近金属的文字),则需要了解系统中每个组件的内外。
如果您是系统开发人员(并且正在编写操作系统,设备驱动程序甚至数据库),那么您将需要了解有关底层硬件接口的所有知识。
如果您是游戏开发人员并且在项目后期(正在优化的地方),则需要了解将要使用的CPU缓存和图形架构的来龙去脉。
如果您是应用程序开发人员,那么除了将内存使用率保持在合理水平之外,您不需要了解任何其他信息。
如果您是一名Web开发人员,那么了解Internet协议将很方便,但是除了如何处理内存问题之外,没有其他必要。
我认为有关应用程序开发人员和Web开发人员的评论是错误的。
例如,如果某人正在开发涉及很多安全性东西(例如ssh或其他某种加密算法)的Web应用程序,那么很重要的一点是,他们必须知道自己所运行的硬件类型,以便他们可以确定机器是否可以实际处理工作量。另一个示例可能包括一个托管某种下载内容的服务器。如果您预期会有大量请求,那么您最好了解磁盘驱动器的功能以及所连接的总线接口的任何类型。
从应用程序的角度来看,如果您正在开发某种CAD程序或进行3d渲染的程序,则可以期望这些应用程序在算法和图形上都需要大量计算。最好先了解硬件,以确保应用程序具有响应性和可用性。
我并不是说您必须深入了解PCI协议之类的内容,但您最好了解接口和硬件的功能。
最终,无论您进行哪种开发,它都是很重要的。您需要了解的详细程度尚有争议。
我将按照标题中的要求回答:
是的,开发人员应该了解硬件的内部工作原理。多少取决于开发人员的类型及其目标,可用时间和个人兴趣。当然,应该优先考虑他们在自己所在地区使用的直接工具,技术等。这种意见是作为一个全面的个人。在不牺牲工艺的情况下,您对工艺之外的事情了解得越多越好。
这并不意味着您需要对Cheese Whiz感到疯狂。全面了解硬件,各部分之间的交互方式,操作系统如何使用它们。按照这些思路,我建议为所有开发人员阅读一本操作系统概念书。
我都知道吗 哎呀没有。我已经忘记了太多关于SCSI的无用信息,甚至都不是很有趣。但是,了解它是非常宝贵的经验。我还忘记了许多其他与硬件相关的细节,但请记住我从这些知识中学到的重要概念。
因此,我当然建议学习有关硬件的知识。根据您的需要以合理的速度进行操作。尽可能多地学习细节,但要专注于概念。