programming languages functional example course books functional-programming theory definition side-effects

functional-programming - languages - functional programming python



¿Cuál es el origen de “lanzar los misiles”? (5)

¿De dónde viene históricamente el "lanzamiento de los misiles"?

Buena suerte con eso, es más una pregunta de investigación que una de programación.

Aquí hay dos puntos de datos:

  • He escuchado a Simon Peyton Jones usar la frase exacta como ejemplo en las conversaciones de hace al menos diez años.

  • A principios de la década de 1990, tal vez incluso en 1990, los Profesionales de la Computación para la Responsabilidad Social hicieron camisetas con una imagen de una explosión atómica y la leyenda escrita.

    El último mensaje de error

    Apuesto a que la frase se remonta al menos tan lejos.

Para obtener una respuesta real, necesita un lexicógrafo, no un programador.

En el contexto de la programación funcional, un ejemplo típico de un efecto secundario es "lanzar los misiles". ¿De dónde viene esa expresión históricamente?


"Lanzar los misiles", en la memoria transaccional, se usa para enfatizar que la E / S es irrevocable. Una vez que se lanzan los misiles (es decir, se envía el paquete de red), está en camino y no se puede devolver la llamada. Para una transacción, eso significa que ya no puedes abortar. En su lugar, ya que ya ha publicado sus resultados ( BOOM ), debe encontrar una manera de finalizar.

La memoria transaccional se propuso por primera vez en 1993, mucho después de que se lanzara Wargames y dejara de ser cool. Este artículo de TM 2006 de Simon Peyton-Jones (página 2) es el primer lugar donde he encontrado la analogía de "lanzar los misiles". ¿Podría ser este el origen?


Existen aplicaciones de software que efectivamente gestionan el lanzamiento de ICBM, por lo que debe haber proyectos cuya Evaluación de Riesgos debe cubrir el desencadenamiento accidental de la aniquilación nuclear. Sin embargo, no parece que la frase se refiera a un incidente real. Por supuesto, si tal cosa sucediera alguna vez, puedes apostar a que los Black Helicopters eran muy inteligentes para suprimir todo rastro.

De todos modos, creo que es solo una respuesta hiperbólica a la pregunta "¿Qué es lo peor que podría pasar?" Los orígenes probablemente provienen de algo como la película ''Wargames'' , donde una IA casi comienza una guerra nuclear porque piensa que está jugando un juego.

Supongo que la otra cosa es que no es realmente un efecto secundario. Se supone que los programas de control de lanzamiento de misiles deben lanzar los misiles; es justo, solo deberían lanzarlos después de que se hayan realizado todas las comprobaciones necesarias. Así que se trata de garantizar que no lleguemos al paso 10: lanzar los misiles hasta que hayamos terminado el paso 1: despertar al presidente, paso 2: verificar las coordenadas del objetivo , etc.


Lo he escuchado en el contexto de la reversión de transacciones de bases de datos, como ejemplo de una acción que no se puede deshacer: "es difícil deshacer el lanzamiento de un misil".


No tengo pruebas de esto, pero siempre asumí que proviene de una pieza similar de código C:

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