在功能编程的背景下,副作用的典型例子是“发射导弹”。这种表达在哪里来自历史?
答案 0 :(得分:15)
“发射导弹”在哪里来自历史?
祝你好运 - 这更像是一个研究问题,而不是编程问题。
以下是两个数据点:
至少十年前,我听过Simon Peyton Jones使用这个确切的短语作为例子。
在20世纪90年代初期,甚至可能在1990年,Computer Professionals for Social Responsibility制作了T恤,展示了原子爆炸的图片和书面传奇
最终错误消息
我打赌这句话至少可以追溯到目前为止。
要获得真正的答案,你需要一个词典编纂者,而不是程序员。
答案 1 :(得分:11)
我没有这方面的证据,但我总是认为它来自一个类似的错误C代码:
if (hasSecurityClearance = true)
{
launchMissiles();
}
答案 2 :(得分:7)
交易记忆是在1993年首次提出的,就在Wargames被释放并且不再冷静之后。这2006 TM paper from Simon Peyton-Jones(第2页)是我发现“发射导弹”类比的第一个地方。这可能是起源吗?
答案 3 :(得分:4)
有些软件应用程序确实管理了洲际弹道导弹的发射,因此必须有风险评估必须涵盖意外触发核毁灭的项目。然而,似乎这个短语并不是指一个真实的事件。当然,如果这样的事情确实发生了,你可以打赌黑色直升机很聪明地压制它的所有痕迹。
无论如何,我认为这只是对“可能发生的最坏情况是什么?”这个问题的双重回答。起源可能来自the film 'Wargames',其中AI几乎开始核战争,因为它认为它正在玩游戏。
我想另一件事是,它不是真正的副作用。导弹发射控制程序假定发射导弹;只是,他们应该只在完成所有必要的检查后启动它们。所以这是为了确保我们没有达到步骤10:发射导弹直到我们经历了步骤1:唤醒总统,第2步:检查目标坐标强>等等
答案 4 :(得分:1)
我在回滚数据库事务的背景下听到过它,作为一个无法撤消的动作的例子:“很难取消发射导弹。”