随后,WindowsNT内核开发者对此发表了回应,承认了问题的存在,并解释了问题的根本原因。但由于监管原因,这篇文章被删除了。不过,这篇文章非常重要,所以我还是要重新发布它。以下是正文。Windows在很多方面确实比其他操作系统慢,而且差距还在扩大。这个问题的根源是人。Windows世界的改进还不够纯粹,不如Linux世界那么纯粹。在Linux的世界里,一个人可能只是为了荣耀而做出改进。当然,偶尔会有人试图把事情做得更好,但几乎总是失败。我们确实在某些领域进行了改进,因为那些拥有资源的人认为这些改进会影响业务目标。但这些努力都是徒劳的,我们没有正式或非正式的性能改进计划,我们开始关注安全问题,因为没有SP3的WindowsXP对业务是一个巨大的威胁,性能问题在这个时候显得微不足道。通常,系统组件所有者不太喜欢来自其他团队的补丁。作为开发人员,如果你从外部接受补丁,它会激怒你的领导(因为补丁需要维护,导致计划外的设计更改),让测试人员不高兴(给他们带来额外的工作),让PM生气(影响进度).所以,一个团队通常没有必要接受其他团队的变更,并且总是可以找到拒绝的理由。在Windows世界中,几乎没有进行更改的动力。在Linux世界中,即使将遍历文件目录的性能提高5%,也会受到赞扬和感谢。在Windows世界中,如果你不在那个团队中,即使你的代码被接受,领导也会解雇它。确实,做出巨大的改进会让你在高层受到关注,这对你的职业生涯有好处,但它需要足够大才能引起他们的注意。渐进式的小改进只会让人讨厌,对你的职业生涯不利。如果你运气不好,你跟领导说你对其他系统组件做了性能改进,他可能会反过来问你:出了问题怎么办?随着时间的推移,人们对计划外工作的热情降低了,这有什么奇怪的吗?造成这种差距的另一个原因是我们无法留住人才。谷歌和其他总部位于西雅图的大公司不断挖走我们最优秀、最有经验的开发人员,我们不得不招募年轻的大学毕业生来取代他们。你会发现很多输入系统都是由初级工程师维护的。这些开发者的初衷是好的,也足够聪明,但他们并不了解一些决策的初衷,对系统的工作原理没有全面的了解,更重要的是,他们不愿意修改现有的东西。这些初级开发人员倾向于通过实现新功能来改进系统,而不是在旧的基础上进行更改。因为与修改旧事物相比,实施新功能可以节省审查时间。有很多这样的例子,例如:我们不要碰命名管道,添加%INTERNAL_NOTIFICATION_SYSTEM%!我们无法公开%INTERNAL_NOTIFICATION_SYSTEM%,因此我们不必编写文档,也不会影响销售,因为我们只有90年代的Win32API。我们不要碰DCOM,添加%C#_REMOTING_FLAVOR_OF_THE_WEEK%!XNA,这还需要说吗?为什么有人需要对大于2G的文件使用压缩格式?我们可以支持符号链接,但要确保没有人使用它们,这样我们就不会因为安全漏洞而受到指责!让我们不要碰SDX,让我们假装有四个版本迁移到TFS,但什么都没有改变!NTFS代码使用了全局递归锁和SEH,太可怕了,我们需要写一个参考文档。我们无法实现C11支持,一年内实现变量模板太难了。你看,微软仍然有一些才华横溢的开发人员,他们对操作系统开发的复杂性有着敏锐的眼光,对简洁的设计有着独特的眼光。在某些方面,NT内核比Linux更好,但这些有才华的人要么退休了,要么去了其他大型科技公司,替代者很少能达到他们的水平。我们的员工要么朝九晚五带着孩子,迫切希望获得H1B,要么被谷歌拒绝。我们偶尔会遇到好人,但这只是九牛一毛,难怪我们落后了。本文作者匿名联系我,担心他的文章过于公开,所以添加了以下内容。一切都失去了控制。我太苛刻了,其实我不是有意爆料的,我只是想吐槽一下。我在写这篇文章时应该更加谨慎。很抱歉让您对微软的内部结构产生了错误的印象。首先,我想澄清一下,我之前写的大部分内容都是开玩笑和夸张的——NTFS确实在内部使用SEH,但文件系统非常可靠且经过充分测试。维护者是我认识的一些最有才华和经验的人。我们的其他核心组件也是如此。的确,有些组件由更有经验的人维护会更好,但我们不会随机指派不合格的人来做这些工作。当然,我也没有关于挖角的内部数据,所以我的意见是主观的——我看到一些非常亲密的朋友离开了,我对新员工印象不深。我手上没有全部的事实和数据。我对人员流动的一般理解可能是错误的,我不应该像以前那样说这件事。微软仍然有很多技术人才。我们不会发布没有人维护和理解的代码,尽管有时新手需要一段时间才能掌握它。我可以访问Windows源代码并偶尔提交一些代码,但还有成千上万的人在做同样的事情。我没有什么特别的。我不是举报人。虽然我个人认为对符号链接的限制影响了它的实用性,但我们当时确实进行了合理的工程分析——而不是别有用心的人试图避免获得差评分数。事实上,这样的事情几乎不会发生。我们几乎从不单独做决定,我想强调的是我们并不疯狂或功能失调。社会力量阻碍了创新,我们应该在文化上做点什么,但我们正处于崩溃的边缘。这种负面影响更像是在汽车上安装了一个不必要的扰流板,远没有拆掉发动机那么严重。我们的工程部门正在运作,发布可在世界各地的计算机上运行的可靠、有用的软件。无论您如何看待Windows8用户界面,用户界面下的系统始终坚如磐石,就像Windows7一样,我很自豪能够参与其中。我也想为我对开发部门说的话道歉。我可能对编译器团队确定事物的优先级有疑问,并且对为什么某些C++功能需要更长的时间来实现感到困惑,但事实是那些好人确实在工作。他们当然知道什么是依赖循环,我们只是世界上为数不多的从头开始开发优化编译器的团队之一。最后,我遇到了一些很棒的人,我觉得自己是一个特殊群体的一员。如果我认为Windows是一场工程噩梦,我就不会在这里这么说了。每个人都有自己的问题,但公司外的人似乎对我们的问题赋予了特殊的意义。我不明白为什么会这样。无论如何,上一篇文章抹黑了那些敬业、努力的人,我不应该用丑陋的画笔给他们画画。还有,我对我的同事们没有任何敌意,我想收回我的随意判断。有很多很棒的人可以一起工作,而他们恰好有孩子要抚养。我想说的是,我不喜欢那些将我们的工作视为工作而不是激情的人,我觉得现在有很多这样的人。
