La historia de Mel es un ejemplo arquetípico del folclore de la programación informática . Su protagonista, Melvin Kaye , [1] es un " programador real " ejemplar cuyas sutiles técnicas fascinan a sus colegas.
La historia de Mel, de Ed Nather, detalla la extraordinaria destreza en programación de un ex colega suyo, "Mel", en Royal McBee Computer Corporation . [2] [3] Aunque originalmente fue escrita en prosa, la historia de Nather fue modificada por alguien en una forma de "verso libre" que se ha generalizado. [4] [5]
Se sabe poco sobre Mel Kaye, más allá del hecho de que se le atribuye la "mayor parte de la programación" del compilador ACT-1 de 1959 para la computadora Royal McBee LGP-30 . [6] [7] En la historia de Nather, Kaye es retratado como propenso a evitar optimizar ensambladores a favor de crear código para aprovechar las peculiaridades del hardware, por ejemplo, aprovechar la rotación de la memoria de batería del LGP-30 para evitar escribir bucles de retardo en el código.
La historia, tal como la escribió Nather, trataba sobre el trabajo de Kaye en la reescritura de un programa de blackjack del LGP-30 a un sistema más nuevo de Royal McBee, el RPC-4000 ; los ejecutivos de ventas de la compañía habían solicitado modificar el programa para que pudieran accionar un interruptor del panel frontal y hacer que el programa perdiera (y que el usuario ganara). Kaye accedió a la solicitud a regañadientes, pero para su propio deleite, se equivocó en la prueba y, en cambio, el interruptor haría que el programa ganara todas las veces (y que el usuario perdiera).
Después de la partida de Kaye, se le pidió a Nather que corrigiera el error. Mientras examinaba el código, se sorprendió al descubrir que contenía lo que parecía ser un bucle infinito , pero el control no permanecía dentro del bucle. Finalmente, se dio cuenta de que Kaye estaba usando código automodificable para procesar elementos de una matriz y había codificado el bucle de tal manera que se aprovechara de un desbordamiento de enteros . Agregar 1 al campo de dirección de una instrucción que hacía referencia a la dirección x normalmente solo cambiaba la dirección a x +1. Pero cuando x ya era la dirección más alta posible, no solo la dirección volvía a 0, sino que se llevaba un 1 a los bits desde los que se leería el código de operación ; en este caso, se cambiaba el código de operación a "saltar a" para que la instrucción completa se convirtiera en "saltar a la dirección 0". Esto impresionó tanto a Nather que, por respeto, abandonó la tarea e informó que no podía encontrar el error.
Nather contó esta historia de memoria, más de 20 años después. Se sabe que algunos detalles técnicos son incorrectos, incluida la ubicación de un bit indicador de "índice" en la palabra de instrucción; el uso que Kaye hizo de él presumiblemente le dio a Nather la pista vital de que se estaba utilizando un truco de codificación. Sin embargo, existen trucos plausibles que Kaye podría haber implementado en el RPC-4000 real y que coinciden en gran medida con el relato de Nather. [8]
Las primeras computadoras con diseño de máquina IAS no tenían registro de índice. El uso de código automodificable era necesario para las operaciones con matrices. La instrucción LGP-30 y 2000
"reemplazaba el contenido de la parte de la dirección de la palabra en la posición de memoria 2000 con el contenido de la parte de la dirección de la palabra en el acumulador" para facilitar la escritura de código automodificable. [9]
El ensayo fue publicado originalmente en el grupo de noticias de Usenet "net.followup" el 21 de mayo de 1983 por utastro!nather (la dirección de correo electrónico UUCP de Ed Nather en ese momento). [2] [3]
Las computadoras Royal McBee fueron desarrolladas y fabricadas por Librascope , y la documentación escrita para el programa de blackjack fue escrita por Mel Kaye de Librascope Inc. La edición de agosto de 1956 de The Librazette , el boletín de Librascope, contiene una historia sobre el entrenamiento en el LGP-30 y menciona que algunos ingenieros de aplicaciones de Librascope fueron transferidos a la nómina de Royal McBee. Entre los ingenieros nombrados se encuentra Mel Kaye. [1]
Hay una fotografía en la portada de ese número que muestra esa primera clase de programadores neófitos del LGP-30 y los instructores, incluido Mel Kaye. [10]
{{cite journal}}
: CS1 maint: DOI inactivo a partir de noviembre de 2024 ( enlace )