En la historia de la informática, la programación óptima o la codificación óptima es la práctica de organizar las instrucciones de un programa de computadora en la memoria para minimizar el tiempo que la máquina pasa esperando instrucciones. Es de interés histórico principalmente debido al diseño de muchas de las primeras computadoras digitales.
La mayoría de las primeras computadoras usaban algún tipo de memoria en serie, principalmente memoria de línea de retardo o tambores magnéticos. A diferencia de la memoria de acceso aleatorio de las computadoras modernas, las palabras en la memoria en serie están disponibles de una en una; el tiempo necesario para acceder a una palabra en particular depende de la "distancia" entre ella y la palabra que se está leyendo en ese momento. Si una línea de demora dada contiene n palabras, el tiempo promedio para leer una palabra seríatiempos de palabras. Sin una codificación óptima, tal máquina pasaría la mayor parte de su tiempo esperando ociosamente instrucciones y datos. [1]
Para evitar este problema, muchas máquinas, particularmente Alan Turing 's ACE y sus descendientes, incluidos un campo que especifica la dirección de la siguiente instrucción a ejecutar en su formato de instrucción. Un programador que emplee una codificación óptima buscaría el tiempo necesario para ejecutar la instrucción actual, calcularía hasta dónde se movería el sistema de memoria en ese tiempo y luego colocaría la siguiente instrucción para el programa en esa ubicación. Por lo tanto, cuando se completara la instrucción actual y la computadora buscara la siguiente como se especifica en la instrucción, esa ubicación de memoria estaría llegando y podría leerse inmediatamente. Por ejemplo, si un programador acababa de codificar una instrucción ADD en la dirección 400 y la instrucción ADD requería 4 tiempos de palabra para ejecutarse, el programador establecería el campo "Next Address" de la instrucción en 404 y colocaría la siguiente instrucción allí.
En los Estados Unidos, la codificación óptima se empleó más comúnmente en el IBM 650 [2] y el Bendix G-15 . Ambas máquinas tenían ensambladores optimizadores (SOAP para IBM, POGO para Bendix) que podían automatizar esta tarea.
Ver también
- Mel Kaye , autor de un fragmento de programación óptima particularmente inteligente que ha entrado en la tradición informática. [ cual? ]
Referencias
- ^ Manual de IBM SOAP
- ^ Kugel, Herb (22 de octubre de 2001). "El IBM 650" . Dr. Dobb's.