2010-09-21 37 views
6

每个程序员应该知道硬件内部的东西?我并不是指硬件组装或维护,而是硬件的实际工作方式。每个程序员应该知道什么关于硬件内部?

+3

这比在programmers.stackexchange或社区维基上更好。 – wheaties 2010-09-21 21:43:52

+3

这绝对应该是一个社区wiki问题 – configurator 2010-09-21 21:51:34

+0

@configurator:不,它应该是一个封闭的问题。民意调查不属于这里。 – 2010-09-21 22:12:51

回答

7

你应该知道:

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

这取决于系统上,你使用Smalltalk或口齿不清的时候我会说没有^^ 在Python中的浮点的东西将是很好的发展。 在C我会说学习一切,你可以找到^^

4

这台电脑说二进制。更具体地说,理解浮点表示。 “为什么我的数学出错了”可能是关于SO的最重复的问题。

5

我只想推荐阅读Programming from the Ground Up书:

这是一个介绍书,编程和计算机科学使用汇编语言。它假定读者以前从未编程过,并介绍了变量,函数和流量控制的概念。使用汇编语言的原因是为了让读者思考计算机如何在底下工作。从“裸机”的角度了解计算机的工作方式通常是顶级程序员和程序员之间的区别,他们永远无法掌握他们的艺术。

旧但IMO仍然相关。

0

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

0

举例来说,你有一个任务是为某种机器人制作驱动程序。你必须了解机器人的内部。例如,机器人通过USB连接到电脑。司机然后将它作为一个包发送一个命令。机器人解释该命令并开始跳舞。现在说,你被赋予了这个任务,你现在已经想到了机器人的内部。你没有驱动程序,因为你不知道如何编程。现在发生的事情是,你无暇顾及机器人内部的研究,因为你认为你不必了解硬件。总而言之,这对每个人都不是必要的,但从长远来看,这是可以帮助你的。

相关问题