软件工程师应该知道如何组装自己的计算机吗?

时间:2008-09-12 12:51:43

标签: hardware

来自Mac背景,我从来没有花太多时间来修补/组装/调整我自己的计算机,而不是偶尔的RAM升级和交换硬盘。我觉得自己很好地掌握了计算机在概念层面如何工作,CPU,总线,内存等等,但我并没有太多实际经验将它们放在一起/分开。

我的问题是,通过学习组装自己的计算机,在软件工程技能方面有什么好处吗?如果您一生都在将硬件放在一起,那么它对您编写或思考软件的方式有何影响?

18 个答案:

答案 0 :(得分:9)

通过组装计算机,您对程序员的了解并不多。知道放置pci卡的位置以及如何插入处理器对于除了构建计算机之外的其他任何东西都没有用。

我认为你需要一些关于计算机如何工作的低级知识,但所有对程序员感兴趣的东西已经在主板上焊接在一起了。您将从编程c或汇编中学到更多东西,也许还可以阅读Charles Petzold的书代码......

答案 1 :(得分:5)

  

谨防随身携带的程序员   螺丝刀。 (Leonard Brandwein)

作为程序员,你不需要学习组装PC。我可以在没有安装污水系统的情况下使用厕所。

答案 2 :(得分:4)

取决于你是什么样的学习者。如果你有一个很好的想象力,你可能会学到所有关于硬件的知识,而不会触及任何书籍,有些人需要看一些东西来提高他们的理解。

也就是说,如果你把新计算机作为学习计算机的机会,你可以学到很多东西,比如花点时间看一下南桥的位置,它是哪个芯片并查找它,找到哪里是SATA控制器,它的品牌是什么,查找它们,看看它们的特性等等。如果你只是尽可能快地将各个部分组合在一起,你可能会在失败的情况下学会做什么并节省一些钱,仅此而已。

此外,建筑物增加了对它们的好奇心,这也不错。

答案 3 :(得分:3)

构建自己的计算机可以让您成为更好的通才,而不是更好的专家。如果您将编程视为编辑器中专用的代码应用程序转变为应用程序,那么构建您自己的系统无助于实践。

然而,如果你需要把服务器放在colo中,管理它,找出它崩溃的时候是你的应用程序还是坏的驱动器或坏的风扇而不是南方,那么是啊,知道所有的部件是什么,了解他们做了什么,你买了哪些以及为什么,无论硬件或软件是否可能成为问题,然后建立一台计算机是这条道路上最小的第一步。如果您不对代码的实际执行和实用程序负责,那么这是浪费时间。

  

人类应该能够改变   尿布,计划入侵,屠夫a   猪,conn a ship,设计建筑物,   写一首十四行诗,平衡账户,   建造一堵墙,设置一块骨头,安慰一下   死亡,接受命令,下达命令,   合作,单独行动,解决方程,   分析一个新问题,粪肥,   编程一台电脑,做一顿美味的饭,   有效地战斗,勇敢地死去。   专业是针对昆虫。

答案 4 :(得分:2)

好处显而易见:

  • 你可以节省几块钱 好用
  • 如果你失去了软件工程师的职位空缺,你可以赚钱组装电脑。

上次我买了组装好的电脑时发现CPU与散热器之间没有导热膏。

至于软件工程技能,我没有找到任何好处。

答案 5 :(得分:2)

的Eh。

老实说,我觉得组装计算机的实际行为并没有从根本上改善您对计算机的理解。你没有构建这些部件,而是按照说明将它们组装成一个盒子。

但是,在使操作系统正常运行组件以及与之相关的调试问题方面,可以获得一些改进。

而Aku关于存钱的观点很好。

答案 6 :(得分:1)

不是没有必要,但我认为程序员应该知道如何针对运行的硬件优化代码。

CPU,内存,网络和磁盘资源对性能有很大影响。程序员应该知道何时以及如何使用缓存来提高应用程序的性能,以及如何利用代码在可用时使用大量资源。

作为一个极客我会说学习如何组装电脑以获得乐趣

答案 7 :(得分:1)

引用我们的一位创始人(Jeff Atwood):

  

在我的书中,最好的方法之一   了解硬件是为了得到你的   手脏,把一个放在一起,   包括自己安装操作系统。   这是一个耻辱Apple程序员不能   这样做......

虽然我不太确定它会让你成为更好的程序员 - 但它是你使用的工具。这些机器不断中断或需要升级。我认为能够做到这一点并从头开始构建一个是一个好主意是学习这个的方法。

答案 8 :(得分:1)

这与Software and Electronic Engineering的问题类似。

答案 9 :(得分:0)

任何与您直接处理的技术有关的事情,都将帮助您更好地完成与该技术相关的所有任务。

了解计算机硬件将使您成为更好的程序员。它可能不会直接这样做,但会有一些例子让你受益。

这实际上取决于你想要什么样的技能。如果你想专注于复杂的数学或特定类型的软件(例如A.I.),那将浪费时间搞乱硬件。

但是,如果你想做自己心智的构建机器人之类的东西,你需要知道软件和硬件。如果您想开发游戏,特别是作为独立游戏甚至是独奏游戏,您将被要求模仿多个工作和专业。如果独立开发者不了解硬件如何区分系统,那将是多么噩梦。

IMO,除非你知道如何做软件和硬件,否则你不能称自己为真正的书呆子。当我遇到不知道如何安装显卡的程序员时,我是否应该笑或哭是冲突的。

当然,并不是每个人都足够聪明或热衷于对技术产生兴趣,以至于想知道如何创建硬件,更不用说组装然后编程了。随着我的成长,我学会了不那么经常地笑别人,而是明白他们可能没有必要在专注于软件的同时学习硬件。这当然不是必要条件。

答案 10 :(得分:0)

如果你穿鞋,你应该知道如何系鞋带。但是,最有可能的是,如果你足够聪明地佩戴它们,你可以弄明白。

如果没有,你就遇到了问题。

答案 11 :(得分:0)

作为一个已经构建了多年的计算机的程序员,我会说它没有给我一个相当大的影响我的代码的质量或结构,但它已经给了我一个很好的基础硬件质量如何影响最终用户运行代码的体验。

此外,我认为这也许是最大的好处:构建自己的PC可以让您足够的知识来说明作为员工给您的开发系统是否是一个好的。向IT /管理人员提供有关他们提供的系统原因不佳的知情意见可能是获得升级的关键。

答案 12 :(得分:0)

是的,但不是你想的意思。我认为了解基本的微处理器设计,内存架构等是非常有价值的。如果你能得到一个项目工具包来做一些基本的PIC或Stamp,那就更好了。获取抽象的方法,并在位级学习一点。还建议对相关的帕特森和轩尼诗书籍进行审查。

从组件构建PC是一项很好的一次性练习,只是为了解各个部分的兼容性问题。

答案 13 :(得分:0)

我倾向于认为,只要你学到了什么,扩展你的知识和视野,这是一件好事,所以我会说'是'。

答案 14 :(得分:0)

如果“编写优秀代码”系列中的所有内容都有意义,那么我会说“不”,实际建立一个系统并没有更多的东西可以用来完成你的工作。现在作为技术工作并且必须诊断问题,硬件和软件,增加了解决问题的能力并且会有所帮助。问题是你可以通过将几台计算机放在一起以获得乐趣来学习它。你最终错过了各种制造商所做的所有奇怪的事情,如果你可以应用它,它可以帮助扩大你对好的和坏的设计选择的整体情况。

答案 15 :(得分:0)

在加入Cult of Mac之前,我曾经建立过自己的Windows和Linux计算机。我确实学到了一点,我认为这不会让我成为更好的程序员。

虽然这不是无用的知识。它就像一位厨师,也对管道有一点了解。这些知识并不真正适用于您的核心任务,但在出现问题时它可以很方便。

编辑:

了解计算机工作原理的基本原理与将Newegg的部件组合在一起之间存在很大差异。了解CPU,缓存和内存功能如何对编程非常重要。了解如何升级您的视频是一项有用的技能,但它对日常的软件开发没有帮助。

答案 16 :(得分:0)

我已经建立了自己的计算机,但我不认为它增加了我成为软件工程师的能力。也不知道如何建立一个帮助使你成为一个更好的工程师。

了解计算机的工作原理以及软件与硬件的交互方式使您成为更好的工程师。

仅仅因为我可以将多核CPU放入主板并不意味着我理解为什么并行进程会帮助我,或者进入函数调用的关键部分意味着什么。并且因为它有4 MB的缓存,这并不意味着我理解缓存的作用以及分页的工作原理。

有很多人可以构建计算机,但可以为他们设计软件的人数较少。如果是这样的话,那么软件工程师会比他们做得少得多。

答案 17 :(得分:0)

老实说,我不知道选择哪些部件来组装顶级开发或游戏PC。我知道一切如何融合在一起,我知道软件瓶颈等等。

当我必须组装PC时,我所做的就是首先找到目的。开发PC?赌博?多媒体?办公室? 然后我考虑要求。显然,一台简单的办公室PC可以使用更少的硬盘空间,板载GPU等。当我想到这一点时,我在互联网上搜索评论,已经编写了系统,tom的硬件基准测试,试图在我的预算范围内找到最佳组合。另一件需要考虑的事情是新发展。如果英特尔在这个月内发布了一个新的CPU型号,我会等待,所以较低型号的价格会下降。 一旦我有了所需组件的列表,我就可以去我当地的电脑商店或在网上找到最优惠的价格。我更喜欢当地的商店,因为当我得到一个死的组件或需要申请保修时,这可以节省我很多时间。通常虽然有点贵。

组装主要是逻辑思维,有点耐心并且保持专注;)