死亡之吻

2021-07-29 21:37:24

一些简短的轶事开始这篇文章。第一个是关于 Chris Crawford,他是一位传奇的游戏设计师,他在 1970 年代和 1980 年代创造了一些最早的计算机战略兵棋游戏,包括一个名为“东方战线”的坦克战斗游戏,该游戏于 1981 年为 8 位机器开发,如Atari 800。Chris 后来在 1982 年为 Byte Magazine 写了一篇关于这款游戏开发的文章,包括他遇到的坦克卡在“U 形”湖中的问题,在那里 AI 代码会将敌方单位发送到他们可以到达的区域不是路径查找。他试图用更好的 AI 代码解决这个问题,但由于这些机器的处理能力和内存有限,遇到了麻烦。他的解决方案?摆脱“U形”湖泊。他重新设计了战斗地图来避免这个问题,让 AI 保持原样,然后发布了游戏。第二个轶事是关于我在大学的第一份工作,在当时主要处理电影和电影放映机的视听中心工作。作为这个学部的员工,我们会把放映车从各个仓库推到教室,放映电影,然后在电影完成后将放映机带回仓库。 (天哪,这听起来太老了,即使对我来说也是如此。)我的一个同事放映了一部电影,然后把放映机拿出来,回到仓库倒带电影。 (在课堂上倒带是不允许的,因为它很吵,会扰乱讲座。)尽管如此,当她将推车推入电梯时,胶片从卷轴上滑落,正好从电梯和地板之间的槽中掉了下来,然后滚下四个故事,全程拖尾,因为另一端还在放映机上。慌乱中,她派人求救,我和我们研究生班主任马克冲到楼里,发现电梯警报响了半个小时被迫停了下来,发现我们的同事哭了。马克是个不会胡说八道的人,在调查情况后,做出了指挥决定。他从放映机上取下胶卷卷轴的另一端,将其从插槽中放下。我们没有花几个小时拿着电梯、找维修工人或其他任何可能的解决方案,而是回到办公室,报告丢失/损坏的胶片,然后一天又过去了。这两个故事有什么共同点? KISS的原理。或者作为正确的首字母缩写词,KISS——“保持简单,愚蠢”。针对有时以“正确”做事方式结束的问题的务实、有效的解决方案。对于正确应用 KISS 的工程师来说,KISS 可以极大地提高生产力,如果不顾后果地应用它,也会导致灾难。但我不会详细说明我看到 KISS 走得太远的时间,以及由此产生的任何问题。相反,我想谈谈 KISS 的另一个负面后果,即它有时会杀死产品。仅仅因为我称之为“负面后果”并不意味着这一切都是坏事。这里的“负面”是一个相对的术语。对于开发不成功产品的人来说,这当然是负面的,但总体而言,简单是比复杂更好的解决方案是一个很好的想法——至少可以追溯到奥卡姆的威廉和他著名的剃须刀。但不要误会:KISS 可以杀人。

人们总是低估了人的机智。我的意思是,我们作为个体不断低估我们作为一个物种克服重大问题的能力。 Y2K 错误就是一个很好的例子。这应该是一场灾难性的灾难,所有计算机都停止工作,因为很多代码都假设 2 位数的年份字段总是在数字上向前推进。当两位数的年份从 99 变为 00 时,这实际上破坏了很多代码。但是很多这些修复都很简单,很多这些代码并没有完全破坏,只有一些小问题,很多东西可以被替换或忽略。所以我们都在 1999 年的新年前夜紧张地等待,但什么也没发生。在我看来,这种恐慌是对人类通过务实手段减轻或克服威胁的能力的极大低估。如果被避免的问题是有人试图通过产品解决方案赚钱怎么办?然后就有了麻烦,因为一个人在产品上赚钱的愿望与另一个人如果能够避免问题就不想花钱的愿望相冲突。如果有更简单、更便宜的解决方案,即使是最优雅和精心设计的产品也可能失败。不幸的是,为一个可以通过一些务实方法避免的问题创建产品有点司空见惯。还有一些轶事,来自我个人对“死亡之吻”的体验。早在 1990 年代初期,我就致力于开发一系列计算机工作站,这些工作站基于由 Digital Equipment Corporation 设计的名为 Alpha 的新芯片。 Alpha 是一个非常早期的精简指令集计算机,又名 RISC 处理器。当今世界主要由 RISC 处理器驱动,该处理器由一家名为 ARM 的公司而非 Digital 公司制造。然而,在 1990 年代,RISC 是一项尖端技术,而 ARM 只是一家小型初创公司。当时处理器领域几乎完全由英特尔主导,IBM、Sun、HP 和 Digital 等其他公司试图从英特尔更便宜且功能越来越强大的芯片中捍卫他们的定制处理器工作站领域。 ARM 后来通过生产更节能、更适合移动市场的芯片,成功打破了这种垄断。但在 90 年代,移动市场并不存在,游戏的名称是速度。

Digital 的 Alpha 处理器速度很快。比当时的 Intel Pentium 处理器快,但 Digital 在销售它时遇到了强大的阻力,因为它要求使用基于 Intel 的应用程序的客户要么将他们的软件移植到 Alpha,要么使用通常不是 100% 兼容的 Intel 模拟器Alpha 带来的一些加速。在某些基准测试中,Alpha 的整数计算性能提高了约 20%,但 20% 还不足以让人们切换。浮点性能是另一回事。 Intel 的架构有一个浮点性能弱点,而 Alpha 芯片在执行浮点运算时要快 2-3 倍。这种加速非常引人注目,Digital 认为我们的 Alpha 工作站产品可以针对需要以非整数方式工作的科学、工程和图形处理应用程序。像 SoftImage 和 AutoCAD 这样的 3D 设计应用程序是 Digital 追求的合理选择,因为人们经常设计具有 1.23 毫米等分数尺寸的东西,而不仅仅是像 1 或 2 毫米这样的整数。考虑到我们的浮点优势,我们认为 Alpha 会在这些应用程序的基准测试中完败。但是在说服(并且经常支付)公司将他们的 3D 应用程序移植到 Alpha 之后,与同等英特尔版本的软件相比,基准测试结果只是稍微好一点,或者在某些情况下根本没有更好。 Digital 发现,对于这些基于 Intel 的应用程序来说,浮点计算的性能长期以来一直是一个“U 型湖”,而制造它们的公司都做了同样的事情 Chris Crawford:他们淘汰了它们。事实证明,您可以使用定点算法轻松地将 1.23 等数字表示为整数。您只需拨打数字 123,并记住显示小数点时小数点的位置。此后,可以专门使用整数算术逻辑单元 (ALU),无需为浮点计算减慢速度。在某些情况下,浮点计算当然仍然优于定点计算,尤其是那些您不知道将使用的数字的规模,或者如果您计算的数字范围非常大的情况。在这些情况下,使用浮点非常方便,因为它分别存储和处理数字数据(尾数)和标度(指数)数据,以避免精度损失。但是对于许多用例来说,定点算术就足够了,并且用户通常可以预先提供他们希望工作的比例,这使得在进行计算时保持精度变得非常容易。 Digital 在浮点数上的赌注被 KISS 扼杀了。最终,阿尔法也是如此。当然不仅是因为这一点——在 1990 年代与英特尔抗衡可能是任何处理器制造商的失败原因。如果 10 年后低功耗设计变得至关重要,也许我们都会在 Alpha 上运行我们的手机,谁知道呢。第二个故事非常相似,但我提供它只是为了证明“死亡之吻”不仅限于硬件设计或 1990 年代。我最近开发的一个产品是硬件/软件协同调试器,它允许用户在尚未构建的芯片上运行和调试软件。这种工具适用于需要为即将推出的处理器开发低级代码的处理器制造商,这些处理器在制造之前仍在模拟中。

这个想法非常巧妙,因为它允许开发人员在他们的硬件模拟和嵌入式软件中以一种非常无缝的方式设置断点,并在您不确定自己的硬件和软件设计时真正深入研究复杂的情况,并且需要知道错误在哪里。事实证明,执行此操作的技术非常复杂,并且可能需要很高的价格——事实上,它后来在其他相关产品中得到了更成功的应用。但这一个也被KISS杀死了。假设会有客户为尚未构建的芯片设计软件是正确的,当然这个软件和其他软件一样有缺陷,需要调试。但注定这款特殊调试器产品的原因是硬件/软件协同调试是一个“U 型湖”,我们的客户已经找到了解决这个难题的简单方法。例如,使用上一代真实的、非模拟的处理器硬件来调试新软件,使用无处不在的免费工具,如 GNU 调试器 (gdb)。通过消除在调试软件的同时模拟硬件的需要,这些公司将问题简化为仅软件调试之一,许多软件调试器旗舰产品已经在gdb等免费调试器的基础上沉没。这种纯软件调试的解决方案当然并不完美,但使用这种务实的方法,公司可以满足他们的大部分调试需求,并且偶尔会遇到一些复杂的调试情况,而无需购买(相当昂贵的)定制工具。我自己已经给予了死亡之吻。有一次,当 Digital 更换 CAD 工具供应商时,我们需要将我们的 PCB 库从一种格式转移到另一种格式,而新公司将向 Digital 收取 200 万美元的合同服务费来完成这项工作。我花了一周时间编写了一个免费的 awk 脚本(或者相对接近,我的每小时费率 x 40)。 Digital然后开始放弃合同,速度比电梯井中的胶卷快。可能有一些承包商因此而失去了工作。但我对这一切的成本感到生气,有动力,并准备变得简单。所以总而言之,如果您正在考虑创建一个产品,您可能想首先与您认识的最大的小气鬼交谈,并询问他们可能会做些什么来避免为您的解决方案付费。如果他们不能想出一个简单的答案,那就是一个好的开始!即将到来:感谢您的回忆!回顾这些年来计算机存储设备的怪异而美妙的世界。下次适当地找出商店里有什么东西,商店里有什么? Mad Ned Memo 每周(或多或少)出版一次,以书呆子的故事和对计算机技术的讨论为特色。它经常出现在喜欢技术的社交媒体网站上,例如 Reddit 或 Hacker News,但如果您订阅,您就不必有机会错过某个问题!它是免费且无广告的,您可以随时取消订阅。

Mad Ned Memo 非常重视订阅者的隐私,不会与第三方共享电子邮件地址或其他信息。有关更多详细信息,请单击此处。