Questions tagged «hardware»

计算机硬件是组成计算机系统的物理元素的集合。

30
为什么不是所有公司都购买最好的硬件给开发人员?
我肯定错过了什么。 在我所在地区雇用程序员的成本为每小时50到100美元。高端机器只有3,000美元,因此每三年购买一台真正出色的计算机的成本为0.50美元/小时。($ 3000 /(150周* 40小时)) 您需要一台高端机器吗?不,这里的3000美元代表的是可能最多支出的金额,而不是我期望的金额。这大约是高端iMac或MacBook(17英寸)的成本。 因此,假设您可以通过购买便宜的计算机每三年节省$ 2000,而您的平均开发人员的收入为$ 60。(这些是我可以提供给bean-counter的最慈善的数字。如果您仅节省1000美元或750美元,这只会使我的情况更糟。)如果这些便宜的计算机每天只花费您10分钟的生产力。(一点也不费力,我确定我的机器花了我更多钱。)然后,在3年中,125个小时的损失总计将损失7500美元。每天损失1分钟(750美元)将获得1250美元的净收益,这几乎不能抵消士气低落的成本。 这是“一分钱又愚蠢的事”还是我简化了这个问题?为什么没有普遍的共识(即使在“企业”中),软件开发人员应该拥有出色的硬件? 编辑:我应该澄清的是,我并不是在谈论尖叫让我的朋友羡慕的快速性能和/或SSD。我说的是RAM太少而无法处理其正常工作量的计算机,这会导致冻结,重新引导,并且(在正常情况下)大约20分钟(毫不夸张地)引导和打开典型的应用程序。(除了周末,我不关门。) 实际上,我计划很快购买一台新机器,它将有所改善。(我将在2011年从2GB RAM到3GB RAM。)但是,按照当前的标准,这台新机器性能中等,因此可以合理地预计,在其退役日期之前,这也是不可接受的。 等待!在您回答或评论之前: 3000美元没关系。如果您要购买的机器的价格低于该价格,那就更应该购买该机器。 我不要求更频繁的升级。在相同的时间表上只有更好的硬件。因此,没有隐藏的安装成本等。 请不要讨论尖端硬件与非常好的硬件之间的区别。我正在游说使用非常好的硬件,例如在一台机器上,这在最坏的情况下是三年前制造的最好的机器之一。 每小时$ 50-$ 100是估计的就业成本 -不包括薪水。如果您是承包商,那将是承包商所使用的开票费率(包括其费用和利润),即雇主的社会服务费。供款,雇主医疗保健供款等。除非您知道此数字不切实际,否则请勿对此数字发表评论。 确保您正在提供新内容。在提供另一个答案之前,请先阅读所有答案。


7
为什么字节为八位的历史是什么?
在决定使用八位组作为基本单位时,历史力量在起作用,需要进行权衡吗? 曾经有一些机器使用其他字长,但是今天对于非八位制,您必须寻找博物馆作品,用于嵌入式应用的专用芯片和DSP。字节是如何从计算机设计早期的混乱和创造力中演变出来的? 我可以想象,更少的位对处理足够的数据以使计算可行无效,而太多的位将导致昂贵的硬件。比赛中还有其他影响吗?为什么这些力量平衡到八位? (顺便说一句,如果我可以花时间旅行,我会回到“字节”被声明为8位的时候,并说服每个人将其变成12位,并用21世纪初期的小饰品贿赂他们。)
86 history  hardware  byte  bit 

3
单个线程如何在多个内核上运行?
我试图从高层次上理解单个线程如何跨多个内核运行。以下是我的最佳理解。我不认为这是正确的。 根据我对“ 超线程”的阅读,看来OS会组织所有线程的指令,使它们不会彼此等待。然后,CPU的前端通过向每个内核分配一个线程来进一步组织这些指令,并在任何打开周期之间分配来自每个线程的独立指令。 因此,如果只有一个线程,那么操作系统将不会进行任何优化。但是,CPU的前端将在每个内核之间分配独立的指令集。 根据https://stackoverflow.com/a/15936270,特定的编程语言可能会创建更多或更少的线程,但是在确定如何处理这些线程时这是无关紧要的。OS和CPU处理此问题,因此无论使用哪种编程语言,都会发生这种情况。 只是为了澄清一下,我要问的是在多个内核上运行一个线程,而不是在一个内核上运行多个线程。 我的摘要有什么问题?线程的指令在哪里以及如何划分到多个内核之间?编程语言重要吗?我知道这是一个广泛的主题;我希望对此有一个高层次的理解。

12
计算机如何工作?[关闭]
这真是令人尴尬的问题...我拥有计算机科学学位(第二个学位正在进行中)。我已经担任全职.NET开发人员近五年了。一般来说,我似乎能胜任我的工作。 但是我不知道计算机如何工作! 拜托,让我呆一秒钟。快速搜索“计算机的工作原理”会产生很多结果,但是我很难找到一个真正能够满足我所寻找内容的工具。我意识到这是一个巨大,巨大的问题,因此,如果您能给我一些关键词或一些指导,那么我是真的。 我知道有组件...电源,主板,内存,CPU等...,我对它们的工作有一个“总体思路”。但是我真的不明白您如何从Console.Readline().NET(或Java或C ++)这样的代码行中真正地完成工作。 当然,我隐约意识到MSIL(对于.NET),并且JIT编译器发生了一些魔术,它变成了本机代码(我认为)。有人告诉我Java很相似,而C ++削减了中间步骤。 我已经完成了一些大型机的组装,这是几年前的事了。我记得有一些指令和一些CPU寄存器,我写了代码。。。然后发生了一些魔术。。。我的程序可以运行(或崩溃)。据我了解,“仿真器”将模拟您调用指令时发生的情况,并会更新CPU寄存器。但是,是什么使这些指令以它们的方式起作用? 这会变成电子问题而不是“计算机”问题吗?我想我没有任何实际的理由来理解这一点,但是我觉得我应该能够。 (是的,这就是当您带一个小孩花一天时间时发生的事情。花了他们大约10分钟的时间和五次反复的问“为什么?”,您才意识到自己不知道多少)

4
是否有充分的理由在64位计算机上运行32位软件而不是64位?
是否有充分的理由提供针对现代台式机的任何32位版本以及64位版本的任何软件,这些台式机在64位硬件上运行现代64位操作系统? 看来64位软件会更高效,并在需要时允许更高的内存使用率,等等。Apple甚至在手机上使用64位处理器,即使它们只有1-2 GB RAM,也远低于4 GB。 32位CPU的限制。

25
关于使用虚拟机进行开发的思考
我将作为一家初创公司的开发负责人,并且建议我们使用VM进行开发。我并不是说每个开发人员都拥有一个带有用于测试/开发的虚拟机的桌面,我的意思是拥有一个管理所有虚拟机的服务器机架,并让开发人员在本地甚至从他们的家中通过microPC(ChromeOS都可以吗?)工作。电脑。 对我来说,好处是它具有极高的可扩展性,从长期来看更便宜,易于管理,并且我们利用了硬件的最大潜力。至于缺点,除了我们需要有人来设置/维护所述设置之外,我再也没有想到任何其他的热门产品。 我希望你们中的某些人可能在您的工作地点也有类似的设置,并且能够加深您的意见。谢谢。

15
语言如何影响CPU设计?[关闭]
人们经常被告知,硬件并不在乎用哪种语言编写程序,因为它只能看到编译后的二进制代码,但这并不是全部。例如,考虑一下不起眼的Z80;它对8080指令集的扩展包括CPIR之类的指令,可用于扫描C样式(以NULL结尾的)字符串,例如执行strlen()。设计人员必须已经确定,运行C程序(与Pascal相反,在Pascal中,字符串的长度位于标头中)是他们的设计可能会使用的东西。另一个经典的例子是Lisp Machine。 还有什么其他例子?例如,使特定处理器偏爱特定语言约定的指令,寄存器的数量和类型,寻址模式?我对同一家庭的修订特别感兴趣。

9
寻找有意义的,有力的理由支持开发机器上的防病毒软件[关闭]
当形成意见,这是一个很好的做法,遵循的学术传统-觉得很难,因为你可以对你持有的意见,并设法找到反驳。 但是,无论我多么努力,我都无法在开发机器上找到支持防病毒(及相关安全措施)的合理论据。 针对开发中的防病毒(AV)的争论很多: 在AV开启的情况下,进行1分钟构建需要花费10倍的时间并不少见 在一次会议演讲中,IntelliJ开发人员声称当他们的IDE缓慢时,AV软件是第一大嫌疑人。 开启AV时,解压缩速度约为100 kb / s AV导致Cygwin完全无法使用(vim需要1分钟才能打开一个简单的文件) AV阻止我从同事的电子邮件中下载有用的文件(JAR,DLL) 我不能使用多台计算机进行开发,因为AV /安全措施阻止我解除端口阻塞 AV会破坏文件高周转率的程序(例如Maven或Ant)的性能 最后但并非最不重要的一点-AV实际上可以保护我免受什么侵害?我不知道我的AV程序曾经停止过任何安全线程。 如果原因是担心泄露NDA内容-如果我下定决心,任何AV都无法阻止我这样做。 如果原因是担心丢失源代码和/或文档-为此,可以使用分布式修订系统(我们的回购至少有20份副本,并且每天进行同步)。 如果担心害怕泄露客户数据的原因是,开发人员很少与真实的生产数据库建立联系,而是在玩具环境中玩耍。 即使有支持在开发计算机上使用AV的有意义的论点,当面对在偏执的受保护环境中运行虚拟机的能力时,它们也会瓦解。 由于我想对此问题保持开放态度,因此有人可以提出有意义的,有力的论据来支持开发人员使用防病毒软件吗?

19
您会用自己的钱购买硬件以在工作中使用以更好地完成工作吗?[关闭]
在工作中,我得到了合理指定的机器(双四核2GHz,4GB RAM,160GB 7200RPM驱动器,Win7),但是在某些地方(HDD / RAM)缺少。IT人员可以用我自己的硬件代替硬件,所以现在可以使用SSD和额外的8GB RAM(以便可以运行多个Visual Studio和虚拟机)。我意识到选择公司的机器是公司的商业决定,但与此同时,更快的硬件使我更快乐,工作效率更高。 我想我的问题是,我是唯一愿意花个人钱在工作硬件上以改善生活质量的人(个体经营者:),我是否应该以其他方式来对待?是否可以追溯地说:“我认为您应该为这笔$ 500的硬件报销,因为[等等]”?

1
面向单分配ADT的代码在现代CPU上的性能
可以推论,使用单一分配处理不可变数据具有明显的效果,那就是需要更多的内存,因为您一直在创建新的值(尽管在幕后的编译器会做一些指针技巧来解决这一问题)。 但是,我现在已经听到几次,性能方面的损失被CPU(特别是其内存控制器)可以利用内存未发生突变(这种情况不多)这一事实带来的收益所抵消。 我希望有人可以阐明这是如何做到的(或者如果不是的话)。 在另一篇文章的评论中,有人提到抽象数据类型(ADT)与此有关,这使我更加好奇,ADT如何特别影响CPU处理内存的方式?不过,这是一个问题,主要是我只是对语言的纯洁度如何必然影响CPU及其缓存的性能等感兴趣。

4
当难以或无法获得硬件设置来重现错误时,如何有效地排除故障或测试新代码?
我在一家中型公司(拥有150名员工,约有10名规模的工程团队)工作,我的大多数项目都涉及与实验室设备(示波器,光谱分析仪等)的接口,以实现半自动化测试应用。我遇到了几种不同的情况,由于我不再或从来没有可用的硬件设置,因此无法有效地排除故障或测试新代码。 示例1:使用台式型传感器独立运行10-20个“老化”过程的设置-我能够获得一个这样的传感器进行测试,并且偶尔可以花一秒钟来模拟与之连接的所有方面多个设备(搜索,连接,流式传输等)。 最终出现了一个错误(最终最终归结于设备固件和驱动程序中),仅用一个单元就很难准确地再现该错误,但是当同时使用10-20个此类设备时,该错误接近“显示停止器”的水平。这仍未解决,仍在进行中。 示例2:需要昂贵的光谱分析仪作为其核心组件的测试。该设备相当老旧,是一家制造商遗留下来的,后者被一家较大的公司收购,并且基本上已经解散,并且它的唯一文档是冗长的(且内容不丰富的)文档,翻译起来似乎不好。在最初的开发过程中,我能够将设备保持在桌面上,但现在在24/7多周的测试中,无论是在物理上还是在计划中都将其捆绑在一起。 当错误显示出与设备相关或无关的错误时,我经常需要麻烦测试应用程序外部的代码并将其装入,或者盲目编写代码并尝试在两次运行之间的某个测试时间内进行压缩,程序逻辑要求OSA和其余测试硬件都安装到位。 我想我的问题是我应该如何处理?我可能会花一些时间来开发设备模拟器,但是弄清楚开发估算值将使它比大多数人想像的更多。它也可能无法准确地重现所有问题,而且很少有人看到同一设备在这里两次使用过。我可以在单元测试方面变得更好...等等...我也可以大声地谈论这个问题,并让其他人理解将需要暂时的延迟,这不只是研究和开发的头痛,而是通常被认为是在开玩笑当投入制造业时。

6
建议IT需求是开发人员的工作吗?
我是唯一一个即将结束的Web应用程序开发人员。现在,我们正在研究使其在大约几个月的时间内上线。 这是非IT公司的Web应用程序。尽管他们有自己的内部IT团队,但是他们已经问过我对实时服务器的硬件要求是什么。RAM,32位或64位。 内部IT团队不应该这样做吗?或者由于我是唯一从事该项目的人员,所以我有责任让他们知道可能影响项目性能的任何特定硬件要求吗? 我问这个问题的原因是,我以前没有做过。过去,我一直被赋予一台服务器,并要求在其上部署应用程序。我从不担心服务器配置等。

8
要成为一名优秀的程序员,是否有必要了解硬件方面的情况?
我是一个自学成才的程序员,以防万一CS 101中回答了这个问题。 似乎在遇到麻烦编程时,我总是碰壁。例如,我只是在另一个论坛上问了一个问题,该问题是如何处理函数返回的数组指针。最初,我以为我只是不了解C ++的设计人员为应对这种情况而设置的适当技术。但是,从随后的回答和讨论中,我发现当事情“归还”时,我并没有真正明白会发生什么。 一个好的程序员必须对编程过程有多深的理解?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.