我认为莫扎特的故事混淆了产品发布和开发过程。贝多芬没有在公众面前对他的交响乐进行测试。(看看他在第一次公开演出后有多少改变得分数会很有趣。)
我也不认为迪科斯彻(Dijkstra)坚持只在脑海中完成。毕竟,他写了关于纸上编程的书籍,并且正如他希望看到数学质量的纪律一样,你有没有注意到数学家在解决问题时可能会消耗大量的纸张和黑板?
我赞成
Simucal's response,但我认为应该放弃莫扎特-贝多芬的比喻。这将把Dijkstra对纪律和理解的坚持塞进一个它实际上并不属于的角落。
附加说明:
电视的普及并不那么火热,这让一些人对音乐作曲和程序员所做的事情产生了困惑。正如Dijkstra在他1972年图灵奖演讲中所说:“我们不要忘记,我们的任务不是制作程序;我们的任务是设计出一类计算,使其呈现出所需的行为。”作曲家可能正在寻找所需的行为。
此外,在Dijkstra认为1.0版本应该是最终版本的观念中,我们太容易混淆所需的行为和功能随时间演变的方式。我认为他过于简单化地认为所有未来版本都是因为第一个版本没有经过严谨可靠的思考和完成。
即使没有时间紧迫的要求,我认为我们现在更加了解重要的软件类型是随着用户体验和实用目的的演变而发展的。明显的反例是游戏(还要考虑剧院电影的开发方式)。你认为贝多芬能够在没有所有前期经验和探索的情况下写出第九交响曲吗?观众能听出它的价值吗?他应该等到有完美的奏鸣曲吗?我确信Dijkstra并不提倡这种做法,但我认为他过分强调莫扎特-贝多芬来证明自己的观点。
此外,考虑下象棋软件。新版本并不是因为之前的版本没有正确运行。这是关于利用象棋启发式和可用计算机性能的进步。对于这种和许多其他情况,认为1.0版本是最终版本的想法是错误的。我理解他正当地反对发布已知不可靠甚至有缺陷的软件,并需要在维护和未来的版本中弥补缺陷。但对我来说,莫扎特主义的反驳不成立。
那么,Dijkstra是否继续驾驶他购买的第一辆汽车或完全相同的克隆汽车呢?也许有计划性陈旧,但很多原因与改进和可靠性有关,这在以前的汽车技术中可能根本不可用或不能考虑。
我是Dijkstra的粉丝,但我认为莫扎特-贝多芬之争过于简单化,也不合适。我也是贝多芬的粉丝。