No olvidemos a Mel Kaye de Royal McBee, el programador más real de todos los tiempos. Desde el archivo de jerga:
La historia de mel
Esto fue publicado en Usenet por su autor, Ed Nather (), el 21 de mayo de 1983.
Un artículo reciente dedicado al lado machista de la programación.
Hizo la declaración calva y sin barniz:
Los programadores reales escriben en FORTRAN.
Tal vez lo hacen ahora,
en esta decadente era de
Cerveza Lite, calculadoras manuales y software “fácil de usar”
pero de vuelta en los buenos viejos tiempos,
cuando el término “software” sonaba divertido
y Real Computers estaban hechas de tambores y tubos de vacío,
Los programadores reales escribieron en código de máquina.
No es FORTRAN. No RATFOR. Ni siquiera el lenguaje ensamblador.
Codigo de maquina.
Números hexadecimales crudos, sin adornos, inescrutables.
Directamente.
No sea una nueva generación de programadores.
crecer en ignorancia de este glorioso pasado,
Me siento obligado a describir,
lo mejor que pueda a través de la brecha generacional,
Cómo un programador real escribió código.
Lo llamaré mel
porque ese era su nombre.
Conocí a Mel cuando fui a trabajar para Royal McBee Computer Corp.,
una filial ahora extinta de la empresa de máquinas de escribir.
La firma fabricó la LGP-30,
Un pequeño, barato (para los estándares del día).
ordenador con memoria de tambor,
y acababa de empezar a fabricar
El RPC-4000, un muy mejorado,
Más grande, mejor, más rápido – computadora con memoria de tambor.
Los núcleos cuestan demasiado,
y no estaban aquí para quedarse, de todos modos.
(Es por eso que no has oído hablar de la compañía,
o la computadora.)
Me habían contratado para escribir un compilador de FORTRAN.
para esta nueva maravilla y Mel fue mi guía para sus maravillas.
Mel no aprobó los compiladores.
“Si un programa no puede reescribir su propio código”,
preguntó, “¿de qué sirve?”
Mel había escrito,
en hexadecimal,
El programa de computadora más popular de la compañía.
Funcionó en la LGP-30
y jugó blackjack con clientes potenciales
en programas de computación.
Su efecto fue siempre dramático.
El stand de LGP-30 fue embalado en cada show,
y los vendedores de IBM se pararon alrededor
hablando uno al otro.
Si esto realmente vendió computadoras o no
Fue una pregunta que nunca discutimos.
El trabajo de Mel era re-escribir.
El programa de blackjack para el RPC-4000.
(¿Puerto? ¿Qué significa eso?)
La nueva computadora tenía un uno más uno
esquema de direccionamiento,
en el que cada instrucción de la máquina,
además del código de operación
y la dirección del operando necesario,
Tenía una segunda dirección que indicaba dónde, en el tambor giratorio,
Se ubicó la siguiente instrucción.
En el lenguaje moderno,
Cada instrucción individual fue seguida por un ¡A IR!
Pon eso en la pipa de Pascal y ahúmalo.
Mel amaba el RPC-4000
Porque pudo optimizar su código:
Es decir, localizar instrucciones en el tambor.
así que justo cuando uno terminó su trabajo,
Lo siguiente sería simplemente llegar a la “cabeza de lectura”
y disponible para su ejecución inmediata.
Había un programa para hacer ese trabajo,
un “ensamblador optimizado”,
pero Mel se negó a usarlo.
“Nunca sabes dónde van a poner las cosas”,
él explicó, “así que tendrías que usar constantes separadas”.
Pasó mucho tiempo antes de que entendiera ese comentario.
Como Mel conocía el valor numérico
de cada código de operación,
y asignó sus propias direcciones de batería,
Cada instrucción que escribió también podría ser considerada
Una constante numérica.
Él podría recoger una instrucción anterior de “agregar”, por ejemplo,
y multiplicarse por ello,
Si tuviera el valor numérico correcto.
Su código no era fácil de modificar para otra persona.
Comparé los programas optimizados a mano de Mel
con el mismo código masajeado por el programa de ensamblador optimizado,
y Mel siempre corrió más rápido.
Eso se debió a que el método de diseño de programas de arriba hacia abajo
no había sido inventado todavía,
y Mel no lo habría usado de todos modos.
Escribió las partes más internas de su programa primero,
para que tuvieran la primera opción
de las ubicaciones de direcciones óptimas en el tambor.
El ensamblador optimizado no era lo suficientemente inteligente como para hacerlo de esa manera.
Mel nunca escribió bucles de retardo de tiempo, tampoco,
incluso cuando el baldío Flexowriter
Se requiere un retraso entre los caracteres de salida para funcionar correctamente.
Acaba de localizar instrucciones en el tambor.
por lo que cada uno sucesivo fue justo después de la cabeza de lectura
cuando era necesario;
El tambor tuvo que ejecutar otra revolución completa.
para encontrar la siguiente instrucción.
Él acuñó un término inolvidable para este procedimiento.
Aunque “óptimo” es un término absoluto,
Como “único”, se convirtió en práctica verbal común.
para que sea relativo:
“No es del todo óptimo” o “menos óptimo”
o “no muy óptimo”.
Mel llamó a las ubicaciones máximas de retraso de tiempo
El “más pesimista”.
Después de que terminó el programa de blackjack.
y lo tengo para correr
(“Incluso el inicializador está optimizado”,
dijo con orgullo),
Obtuvo una solicitud de cambio del departamento de ventas.
El programa utiliza un elegante (optimizado).
generador de números aleatorios
para barajar las “cartas” y repartir desde el “mazo”,
y algunos de los vendedores consideraron que era demasiado justo,
ya que a veces los clientes perdían.
Querían que Mel modificara el programa.
Así, en el ajuste de un interruptor de sentido en la consola,
Podrían cambiar las probabilidades y dejar que el cliente gane.
Mel se resistió.
Sintió que esto era evidentemente deshonesto,
cual era
y que incidió en su integridad personal como programador,
lo que hizo,
por lo que se negó a hacerlo.
El jefe de ventas habló con Mel,
al igual que el Gran Jefe y, a instancias del jefe,
unos pocos programadores compañeros.
Mel finalmente se rindió y escribió el código,
pero él consiguió la prueba al revés,
y, cuando se encendió el interruptor de los sentidos,
El programa haría trampa, ganando cada vez.
Mel estaba encantada con esto,
alegando que su subconsciente era incontrolablemente ético,
y se negó rotundamente a arreglarlo.
Después de que Mel había dejado la compañía por una pauta más verde,
El Gran Jefe me pidió que mirara el código.
y ver si puedo encontrar la prueba y revertirla.
Con algo de mala gana, accedí a mirar.
Rastrear el código de Mel fue una verdadera aventura.
A menudo he sentido que la programación es una forma de arte,
cuyo valor real solo puede ser apreciado
por otro versado en el mismo arte arcano;
Hay gemas preciosas y golpes brillantes.
oculto a la vista y admiración humana, a veces para siempre,
Por la naturaleza misma del proceso.
Puedes aprender mucho sobre un individuo
simplemente leyendo su código,
Incluso en hexadecimal.
Mel fue, creo, un genio anónimo.
Tal vez mi mayor sorpresa fue
Cuando encontré un bucle inocente que no tenía ninguna prueba.
No prueba Ninguno
El sentido común decía que tenía que ser un circuito cerrado,
Donde el programa circularía, para siempre, sin cesar.
El control del programa pasó a través de él, sin embargo,
Y con seguridad fuera del otro lado.
Me tomó dos semanas para averiguarlo.
La computadora RPC-4000 tenía una instalación realmente moderna.
llamado un registro de índice.
Permitió al programador escribir un bucle de programa.
que usaba una instrucción indexada dentro;
cada vez a través de,
el número en el registro índice
Fue agregado a la dirección de esa instrucción,
por lo que se referiría
al siguiente dato de una serie.
Sólo tenía que incrementar el registro índice.
cada vez a través de
Mel nunca lo usó.
En su lugar, él tiraría las instrucciones en un registro de la máquina,
añadir uno a su dirección,
y guárdalo de nuevo.
Luego ejecutaría la instrucción modificada.
desde el registro.
El bucle fue escrito por lo que este tiempo de ejecución adicional.
fue tenido en cuenta –
Justo cuando esta instrucción terminó,
el siguiente estaba justo debajo de la cabeza de lectura del tambor,
Listo para ir.
Pero el bucle no tenía ninguna prueba en ello.
La clave vital vino cuando me di cuenta.
el bit de registro de índice,
el bit que se encuentra entre la dirección
y el código de operación en la palabra de instrucción,
fue encendido
sin embargo, Mel nunca usó el registro de índice,
dejándolo en cero todo el tiempo.
Cuando la luz se encendió casi me cegó.
Había localizado los datos en los que estaba trabajando.
cerca de la parte superior de la memoria –
las ubicaciones más grandes que las instrucciones podrían abordar –
Así que, después de que se manejó el último dato,
incrementando la dirección de instrucción
Lo haría desbordar.
El acarreo añadiría uno al
Código de operación, cambiándolo al siguiente en el conjunto de instrucciones:
una instrucción de salto.
Efectivamente, la siguiente instrucción del programa fue
en la ubicación de la dirección cero,
y el programa se fue felizmente en su camino.
No me he mantenido en contacto con Mel,
así que no sé si alguna vez se rindió al diluvio de
Cambio que ha lavado las técnicas de programación.
desde aquellos días pasados.
Me gusta pensar que no lo hizo.
En cualquier evento,
Me impresionó lo suficiente como para dejar de buscar el
prueba ofensiva,
diciéndole al Gran Jefe que no pude encontrarlo.
No parecía sorprendido.
Cuando salí de la empresa,
El programa de blackjack todavía haría trampa.
Si encendiste el interruptor de sentido correcto,
Y creo que así debe ser.
No me senti comodo
hackear el código de un programador real.
Esta es una de las grandes épicas heroicas de hackers, verso libre o no. En unas pocas imágenes de repuesto, captura más sobre la estética y la psicología de la piratería que todos los volúmenes académicos sobre el tema juntos. (Pero para un punto de vista opuesto, vea la entrada para Real Programmer ).
[1992 PostScript: el autor escribe: “La presentación original a la red no estaba en verso libre, ni en ninguna aproximación, era un estilo de prosa recta, en párrafos no justificados. Al rebotar en la red, aparentemente se modificó en la forma de ‘verso libre’ que ahora es popular. En otras palabras, fue hackeado en la red. Eso parece apropiado, de alguna manera ”. El autor agrega que le gusta más la versión de ‘verso libre’ que su prosa original …]
[Actualización de 1999: El apellido de Mel es ahora conocido. El manual para la LGP-30 se refiere a “Mel Kaye de Royal McBee que hizo la mayor parte de la programación […] del sistema ACT 1”.]
[2001: El Royal McBee LPG-30 resulta tener otro reclamo a la fama. Resulta que el meteorólogo Edward Lorenz estaba haciendo simulaciones del clima en un LGP-30 cuando, en 1961, descubrió el “Efecto Mariposa” y el caos computacional. Esto parece, de alguna manera, apropiado.]
[2002: Una copia del manual de programación para la LGP-30 está disponible en http://ed-thelen.org/comp-hist/l …]