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

StackOverflow https://stackoverflow.com/questions/58864

  •  09-06-2019
  •  | 
  •  

由于我有 Mac 背景,除了偶尔升级 RAM 和更换硬盘之外,我从未真正花太多时间修补/组装/调整我自己的计算机。我觉得我在概念层面上很好地掌握了计算机如何工作,CPU、总线、内存等,但我在将它们放在一起/拆开方面并没有真正获得太多的实践经验。

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

有帮助吗?

解决方案

你不会从组装计算机中学到对程序员有用的东西。除了构建计算机之外,了解 PCI 卡的放置位置以及如何插入处理器对于其他任何事情都没有真正的用处。

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

其他提示

当心携带螺丝刀的程序员。(伦纳德·布兰德温)

作为一名程序员,你不会从组装电脑中学到任何东西。我可以在不安装下水道系统的情况下使用厕所。

取决于你是哪种类型的学习者。如果你有很好的想象力,你可能不需要接触任何书本就可以了解有关硬件的所有知识,有些人需要通过观察来提高他们的理解。

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

此外,建造东西会增加人们对它们的好奇心,这也不错。

构建自己的计算机可以让您成为更好的通才,而不是更好的专家。如果您将编程视为编辑器中代码的专门应用程序变成应用程序,那么构建您自己的系统对这种实践没有任何帮助。

但是,如果您需要将服务器放在托管服务器中,管理它,弄清楚它何时崩溃,是您的应用程序还是驱动器坏了,还是风扇坏了,然后是的,知道所有的部分是什么,了解它们是什么做什么,你买了哪些,为什么,无论是硬件还是软件可能是问题所在,那么建造一台计算机是沿着这条路迈出的最小的第一步。如果您不对代码的实际执行和实用性负责,那么这就是浪费时间。

一个人应该能够更换尿布,计划入侵,屠宰猪,船只,设计建筑物,写十四行诗,平衡帐户,建造墙壁,设定骨头,安慰,垂死,接受命令,给予订单,合作,单独采取行动,解决方程式,分析一个新问题,俯仰肥料,编程计算机,烹饪美味的餐点,有效战斗,勇敢地死亡。专门针对昆虫。

呃。

老实说,我觉得组装计算机的实际行为并不能真正从根本上提高你对计算机的理解。您不是在构建这些部件,而是按照说明将它们组装到一个盒子中。

不过,在使操作系统与组件一起正常工作以及调试与之相关的问题方面,还需要进行一些改进。

阿库关于省钱的观点很好。

好处是显而易见的:

  • 您可以很好地使用几美元
  • 如果你因为过度依赖 SO 而失去了软件工程师的职位,你可以通过组装电脑赚钱。

上次买组装电脑时发现CPU和散热器之间没有导热膏。

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

不,不一定,但我认为程序员应该了解如何针对其运行的硬件来优化代码。

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

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

引用我们的一位创始人的话(杰夫·阿特伍德):

在我的书中,理解硬件的最佳方法之一是使您的手弄脏并放在一起,包括安装操作系统。苹果程序员无法做到这真可惜...

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

这与问题类似 软件与电子工程.

如果你穿鞋,你可能应该知道如何系鞋带。但是,如果你足够聪明,能够佩戴它们,那么很可能你就能弄清楚。

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

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

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

组装主要是逻辑思维、一点耐心和保持专注;)

我建造了自己的计算机,但我不认为它增加了我成为软件工程师的能力。知道如何构建也不会让你成为一名更好的工程师。

了解计算机如何工作以及软件如何与硬件交互可以使您成为更好的工程师。

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

可以建造计算机的人很多,但能为计算机设计软件的人却很少。如果是这样的话,那么软件工程师的收入将远远低于他们。

如果“编写出色的代码”系列中的所有内容都有意义,那么我会说不,对于您的工作而言,您实际上不会从实际构建系统中获得更多好处。现在作为一名技术人员,必须诊断问题、硬件和软件,这会增加你解决问题的能力,并且会有所帮助。问题是,这不是你可以通过将几台计算机放在一起来娱乐来学习的东西。您最终会错过各个制造商所做的所有奇怪的小事情,如果您可以应用它,它可以帮助您拓宽对好坏设计选择的整体了解。

我倾向于认为,任何时候你学习一些东西并扩展你的知识和视野,都是一件好事,所以我会说“是”。

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

但这并不是无用的知识。这就像一个厨师也懂一点管道知识。这些知识并不真正适用于您的核心任务,但当出现问题时它可以派上用场。

编辑:

了解计算机工作原理与将计算机与新蛋网的部件组装在一起之间存在很大差异。了解 CPU、高速缓存和内存的功能对于编程来说非常宝贵。了解如何升级视频是一项有用的技能,但它对日常软件开发没有帮助。

是的,但不是你想的那样。我认为了解基本的微处理器设计、内存架构等非常有价值。如果您可以获得一个项目工具包来使用 PIC 或 Stamp 执行一些基本操作,那就更好了。摆脱抽象并在位级别上学习一些。还建议您回顾一下帕特森和轩尼诗的相关书籍。

用组件组装一台电脑是一项很好的一次性练习,只需了解各个部件的兼容性问题即可。

作为一名开发计算机多年的程序员,我想说它并没有对我的代码的质量或结构产生很大的影响,但它 为我提供了有关硬件质量如何影响运行代码的最终用户体验的良好基础。

另外,我认为这也许是最大的好处:构建自己的 PC 可以让您有足够的知识来判断作为员工提供给您的开发系统是否良好。向 IT/管理人员提供有关他们提供的系统为何较差的知情意见可能是获得升级的关键。

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

了解计算机硬件将使您成为一名更好的程序员。它可能不会直接这样做,但在某些情况下它会给您带来好处。

这实际上取决于您想要的技能。如果你想专注于复杂的数学或特定类型的软件(A.I.例如)。

然而,如果你想做一些事情,比如建造有自己想法的机器人,你将需要了解软件和硬件。如果您想开发游戏,尤其是作为独立游戏甚至独奏游戏,您将需要模拟多种工作和专业。如果独立开发人员不了解硬件如何区分系统,那将是一场噩梦。

在我看来,除非你知道如何做软件和硬件,否则你不能称自己为真正的书呆子。当我遇到不会安装显卡的程序员时,我很矛盾,是该笑还是该哭。

当然,并不是每个人都足够聪明或对技术有足够的热情,以至于对它感兴趣以至于想知道硬件是如何创建的,更不用说组装然后编程了。随着我的成长,我学会了不再嘲笑别人,而是明白他们可能不需要学习硬件而专注于软件。这当然不是一个要求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top