¿Qué quiso decir John McCarthy con "programación pornográfica"?


En la Historia de Lisp, McCarthy escribe:

La aparición inesperada de un intérprete tendió a congelar la forma del lenguaje, y algunas de las decisiones tomadas con bastante ligereza para las `funciones recursivas"..."el papel más tarde resultó desafortunado. Estos incluyen la notación COND para expresiones condicionales que conduce a una profundidad innecesaria de paréntesis, y el uso del número cero para denotar la lista vacía NIL y el valor de verdad false. Aparte alentar la programación pornográfica, dar una interpretación especial a la dirección 0 ha causado dificultades en todas las implementaciones posteriores.

¿de Qué está hablando?

Author: porges, 0000-00-00

5 answers

El hecho de que demasiados detalles de implementación se filtraban a un nivel superior, es decir, mostraban demasiado

 18
Author: Óscar López,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-19 16:03:32

... cero para indicar la lista vacía ...

Porque 0==() ha sido el emoticono de la pornografía desde 1958.

Ahora lo sabes.

 20
Author: Trystan Spangler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-29 05:50:43

El documento original Fortran III spec, un documento técnico difundido en el invierno de 1958 describe algunas adiciones muy explícitas al lenguaje Fortran II, incluyendo ... montaje en línea.

El PDF está aquí

Una descripción tentadora de las "adiciones" sigue:

Extracto de I., Ziller, Adiciones a Fortran II, 1958

Algún código tabú es

Programación pornográfica utilizando el no lanzado Fortran III

Misteriosamente, Fortran-III fue nunca lanzado al público (ver sección 5.) , pero se difunde de forma limitada moda antes de desvanecerse silenciosamente.

 9
Author: Cris Stringfellow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-30 05:24:00

Creo que se trata de mezclar valores numéricos y lógicos, que todavía se pueden ver en construcciones populares, probablemente originadas en Fortran, como while (1). Hay muchos algoritmos C" inteligentes", que se basan en el hecho de que 0 es falso y todos los demás valores no lo son.

Lo mismo se aplica en general a las llamadas API, como en POSIX o Linux kernel, algunas de las cuales devuelven 0 en caso de fallo, mientras que algunas -1 (hay una regla general, cuándo aplicar cuál, pero es solo folclore, por lo que a menudo se rompe). Teniendo en cuenta el hecho de que en la época de McCarthy, esas cosas aún no se desarrollaron, se puede ver su poder "profético" incluso aquí.

 6
Author: Vsevolod Dyomkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-23 08:39:20

Tal vez fue su manera de hablar de referencias nulas: el error de mil millones de dólares (T. Hoare).

 6
Author: Basile Starynkevitch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-22 17:40:21