关于复杂解决方案与让它失败的故事

关于复杂解决方案与让它失败的故事

我正在寻找参考。这是一个关于一个团队以相当复杂的方式解决问题的故事,而另一个团队只是让它失败,而不是客户端崩溃(或类似的事情),并且重新启动不会有问题。

我很确定我在书上的某个地方读过它Unix 编程的艺术,但我找不到它。

答案1

终于找到了,原来的故事在理查德·P·加布里埃尔(Richard P. Gabriel)的《越坏越好》我也在其中读到过Unix 编程的艺术。概括来说,这个故事就是:

两位著名人士,一位来自麻省理工学院,另一位来自伯克利大学(但从事 Unix 工作)曾经会面讨论操作系统问题。麻省理工学院的人对 Unix 如何解决 PC 失败问题感兴趣,它基本上是关于执行长时间操作的系统调用如何处理它们无法保留或屏蔽的中断。麻省理工学院的人没有看到任何处理此案例的代码,并询问新泽西州的人如何处理该问题。新泽西人说,Unix 人已经意识到这个问题,但解决方案是让系统例程始终完成,但有时会返回一个错误代码,表明系统例程未能完成其操作。那么,正确的用户程序必须检查错误代码以确定是否再次尝试系统例程。麻省理工学院的人不喜欢这个解决方案,因为它不是“正确”的事情。新泽西人说Unix的解决方案是对的,因为Unix的设计理念是简单,而正确的事情却太复杂了。此外,程序员可以轻松插入这个额外的测试和循环。麻省理工学院的人指出,实现很简单,但功能的接口很复杂。新泽西人说,Unix 中选择了正确的权衡——即实现简单性比接口简单性更重要。

相关内容