2011-12-17 21 views
25

En el History of Lisp, McCarthy escribe:¿Qué quiso decir John McCarthy por * programación pornográfica *?

La aparición inesperada de un intérprete tendían a congelar la forma de la lengua, y algunas de las decisiones tomadas en lugar alegremente por los `` Las funciones recursivas ... '' de papel más tarde resultó desafortunado. Estos incluyen la notación COND para expresiones condicionales que lleva 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 falso. Además de fomentar 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?

Respuesta

18

El hecho de que demasiados detalles de implementación estaban goteando en un nivel superior, es decir, mostrando demasiado

+0

¿La * programación pornográfica * sería un código que sale de su nivel semántico correcto, como el ensamblaje en línea? –

+16

Eso parece tener sentido: Código que usa * conocimiento íntimo *. –

+2

I lol'd ... "exponiendo tus partes privadas" – csauve

6

Quizás fue su manera de hablar sobre null references: the billion dollar mistake (T. Hoare).

+1

Eso podría ser parte de esto, pero espero que haya un ejemplo más cercano a 1958 (el tiempo se discute en esa parte del documento). –

6

creo que se trata de mezclar los valores numéricos y de lógica, que aún se pueden ver en las construcciones populares, probablemente se originó en Fortran, como while (1). Hay muchos algoritmos C "inteligentes" que se basan en el hecho de que 0 es falso y que ningún otro valor lo es.

Lo mismo se aplica en general a las llamadas API, como en POSIX o kernel de Linux, algunas de las cuales devuelven 0 en caso de error, mientras que algunas -1 (hay una regla general, cuándo aplicarlas, pero es solo folclore, tan a menudo está roto). Teniendo en cuenta el hecho de que, en la época de McCarthy, esas cosas aún no estaban desarrolladas, puedes ver su poder "profético" incluso aquí.

19

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

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

Ahora sabes.

+1

Muy agradable, una de las publicaciones SE más divertidas.También vea [this] (http://math.stackexchange.com/a/74348/86776), [this] (http://math.stackexchange.com/a/54568/86776) y [this] (http: //math.stackexchange.com/questions/689619/how-to-find-the-equation-of-one-curve-in-xy-plan-which-satisfies-such-functions). :-) – mvw

9

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

La PDF es here

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

Extract from I.,Ziller, Additions to Fortran II, 1958

Algunos código tabú es

Pornographic programming using the un-released Fortran III

Misteriosamente, Fortran-III era never released to the public (see section 5.), pero se diseminó de manera limitada b antes de desvanecerse silenciosamente.

+0

Excelente. ¡Justo a tiempo! –

+0

wow gracias! Mi primer bounty arrr –

+0

De nada. Gracias por desenterrar esto! Estaba a punto de dejar que la recompensa expire. –

Cuestiones relacionadas