每个程序员应该了解硬件内部结构?

时间:2010-09-21 21:41:05

标签: hardware

每位程序员应该了解硬件内部结构?我不是指硬件组装或维护,而是指硬件的实际工作方式。

7 个答案:

答案 0 :(得分:8)

你应该知道:

  • 内部存储器(ROM / RAM),与存储器的区别(HDD / DVD / CD)。 (速度和访问方法的差异)。
  • CPU / CORE',它们的作用以及多核的效果。
  • I / O,可能不是那么多,取决于编程领域。
  • 可能是地址和数据总线。这两种尺寸的影响是什么。
  • 硬件中断,硬件能够中断当前程序。

答案 1 :(得分:5)

我建议您阅读Programming from the Ground Up本书:

  

这是一本使用汇编语言编程和计算机科学的入门书。它假定读者从未编程过,并介绍了变量,函数和流控制的概念。使用汇编语言的原因是让读者思考计算机实际上如何工作。了解计算机如何从“裸机”角度运作通常是顶级程序员和程序员之间的差异,他们永远无法掌握他们的艺术。

旧但IMO仍然相关。

答案 2 :(得分:4)

计算机说二进制。更具体地说,了解浮点表示。 “为什么我的数学出错了”可能是SO上最重复的问题。

答案 3 :(得分:4)

Endianness是一个需要理解的重要概念。无意中混淆了你的字节顺序会导致数小时的痛苦调试。

http://en.wikipedia.org/wiki/Endianness

答案 4 :(得分:0)

这取决于你使用smalltalk或lisp开发的系统,我会说没有^^ 在python浮点中,东西会很好。 在C中,我会说学习你能找到的一切^^

答案 5 :(得分:0)

随着计算机变得越来越快,几十年来一直保持一致的硬件的一些基本方面正在发生变化。虽然过去可以通过检查生成的机器代码并总计各种指令所需的周期数来估计一段代码的性能,但新的超线程处理器会将这些计算抛到窗外。在许多情况下,将编译器和处理器视为邪恶的黑盒子越来越重要,它们将以他们可能想象的仍然符合语言规范的各种方式来破坏代码的行为。作为一名对硬件内部非常了解的程序员,这令人沮丧。我能理解这种需要,但令我发狂的是,我的大部分知识变得越来越没用了。

答案 6 :(得分:0)

比如说,你被赋予了为某种类型的机器人制造驱动程序的任务。你必须要了解机器人的内部。例如,机器人通过USB连接到计算机。然后驱动程序将其作为数据包发送给它。机器人解释该命令并开始跳舞。现在说,你得到了这个任务,你现在已经了解了机器人的内部结构。你没有司机,因为你不知道如何编程。现在发生的事情是,你不知所措,因为你认为你没有必要了解硬件,所以你不得不研究机器人的内部结构。总而言之,这对每个人来说都不是必需的,但从长远来看,它可以帮助你。