The Story of Mel
# The Story of Mel

La historia de Mel es una pieza arquetípica del folclore de la programación informática. El protagonista, Melvin Kaye, es un "programador de verdad" ejemplar cuyas técnicas sutiles fascinan a sus colegas.

## Historia

The Story of Mel de Ed Nather detalla la extraordinaria proeza de programación de un antiguo colega suyo, "Mel", en la Royal McBee Computer Corporation. Aunque originalmente escrita en prosa, la historia de Nather fue modificada por alguien en forma de "verso libre" que se ha generalizado.

Poco se sabe sobre Mel Kaye, más allá del hecho de que se le atribuyó "la mayor parte de la programación" del compilador ACT-1 de 1959 para la computadora Royal McBee LGP-30. En la historia de Nather, se describe a Kaye como propenso a evitar la optimización de los ensambladores en favor de la creación de código para aprovechar las peculiaridades del hardware, por ejemplo, aprovechando la rotación del tambor magnético del LGP-30 para evitar escribir bucles de retardo en el código.

La historia, escrita por Nather, menciona el trabajo de Kaye en la reescritura de un programa de blackjack del LGP-30 a un sistema Royal McBee más nuevo, el RPC-4000; los ejecutivos de ventas de la empresa habían solicitado modificar el programa para poder accionar un interruptor del panel frontal y hacer que el programa perdiera (y el usuario ganara). Kaye accedió a regañadientes a la solicitud, pero para su propio deleite, se equivocó en la prueba y, en cambio, el cambio 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 arreglara el error. Mientras examinaba el código, se quedó perplejo al descubrir que contenía lo que parecía ser un bucle infinito, pero el control no permanecía dentro del bucle. Eventualmente, se dio cuenta de que Kaye estaba usando código automodificable para procesar elementos de una matriz y había codificado el ciclo de tal manera que aprovechaba un desbordamiento . Agregando 1 al campo de dirección de una instrucción que se refería 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 se ajustaba 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 cambiando el código de operación a "saltar a" para que el la instrucción completa se convirtió en "saltar a la dirección 0". Esto impresionó tanto a Nather que, por respeto, abandonó la tarea e informó que no pudo encontrar el error.

Las primeras computadoras de diseño de máquinas IAS no tenían registro de índice. El uso de código automodificable era necesario para las operaciones de matrices. La instrucción LGP-30 y 2000 "reemplazó el contenido de la parte de la dirección de la palabra en la ubicació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.

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 de UUCP de Ed Nather en ese momento).

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 informativo de Librascope, contiene una historia sobre la capacitación 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.

Hay una fotografía en la portada de ese número que muestra esa primera clase de programadores neófitos de LGP-30 y los instructores, incluido Mel Kaye.

