“发射导弹”的起源是什么?

时间:2010-05-05 12:08:41

标签: functional-programming theory definition side-effects

在功能编程的背景下,副作用的典型例子是“发射导弹”。这种表达在哪里来自历史?

5 个答案:

答案 0 :(得分:15)

  

“发射导弹”在哪里来自历史?

祝你好运 - 这更像是一个研究问题,而不是编程问题。

以下是两个数据点:

  • 至少十年前,我听过Simon Peyton Jones使用这个确切的短语作为例子。

  • 在20世纪90年代初期,甚至可能在1990年,Computer Professionals for Social Responsibility制作了T恤,展示了原子爆炸的图片和书面传奇

      

    最终错误消息

    我打赌这句话至少可以追溯到目前为止。

要获得真正的答案,你需要一个词典编纂者,而不是程序员。

答案 1 :(得分:11)

我没有这方面的证据,但我总是认为它来自一个类似的错误C代码:

if (hasSecurityClearance = true)
{
  launchMissiles();
}

答案 2 :(得分:7)

在事务性内存中,“启动导弹”用于强调I / O是不可撤销的。一旦发射导弹(即发送网络数据包),它就在路上并且无法回叫。对于交易,这意味着您不能再中止。相反,由于您已经发布了结果( BOOM ),因此您必须找到完成的方法。

交易记忆是在1993年首次提出的,就在Wargames被释放并且不再冷静之后。这2006 TM paper from Simon Peyton-Jones(第2页)是我发现“发射导弹”类比的第一个地方。这可能是起源吗?

答案 3 :(得分:4)

有些软件应用程序确实管理了洲际弹道导弹的发射,因此必须有风险评估必须涵盖意外触发核毁灭的项目。然而,似乎这个短语并不是指一个真实的事件。当然,如果这样的事情确实发生了,你可以打赌黑色直升机很聪明地压制它的所有痕迹。

无论如何,我认为这只是对“可能发生的最坏情况是什么?”这个问题的双重回答。起源可能来自the film 'Wargames',其中AI几乎开始核战争,因为它认为它正在玩游戏。

我想另一件事是,它不是真正的副作用。导弹发射控制程序假定发射导弹;只是,他们应该只在完成所有必要的检查后启动它们。所以这是为了确保我们没有达到步骤10:发射导弹直到我们经历了步骤1:唤醒总统,第2步:检查目标坐标等等

答案 4 :(得分:1)

我在回滚数据库事务的背景下听到过它,作为一个无法撤消的动作的例子:“很难取消发射导弹。”