GEORGE (General Order Generator) es un lenguaje de programación inventado por Charles Leonard Hamblin en 1957. [1] [2] [3] [4] Fue diseñado en torno a una pila emergente de inserción hacia abajo para operaciones aritméticas y empleó notación polaca inversa . [5] El lenguaje incluía bucles , subrutinas , condicionales , vectores y matrices .
Las expresiones algebraicas se escribían en notación polaca inversa; así, se escribía , y lo mismo se aplicaba a las demás operaciones aritméticas de resta, multiplicación y división.a b +
La expresión algebraica se escribió , donde ' ' significaba 'duplicar el valor'.a x dup × × b x × + c +
dup
Siguiendo la forma polaca inversa, una declaración de asignación para evaluar la fórmula se escribió como .a x dup × × b x × + c + (y)
La computadora evaluó la expresión de la siguiente manera: los valores de a
, luego x
, fueron empujados a la parte superior de la pila del acumulador ; ' dup
' hizo que una copia del valor más alto ( x
) fuera empujada a la parte superior de la pila del acumulador; Multiply ( ×
) hizo que los dos valores superiores, a saber, x
y x
, fueran eliminados (extraidos) y multiplicados, devolviendo el producto a la parte superior de la pila del acumulador. La segunda multiplicación ( ×
) hizo que los dos valores superiores en la pila (a saber, a
y x**2
) fueran extraídos y multiplicados, y que el producto ( a×x**2
) fuera empujado a la parte superior de la pila del acumulador. Y así sucesivamente con los componentes restantes de la expresión. La operación final, a saber ( y
), devolvió el valor de la expresión al almacenamiento sin cambiar el estado de la pila del acumulador.
Suponiendo que el valor en la parte superior de la pila del acumulador no fuera necesario inmediatamente, se eliminaría (borraría) utilizando el operador ( ;
).
El siguiente programa lee ocho valores y forma su suma:
0,1, 8 repeticiones (j) R+](PAG)
La manipulación de vectores y matrices requiere la notación de subíndices. En GEORGE, los subíndices precedían al nombre del vector o la matriz. Por lo tanto, se escribía A(j) j | A
. El siguiente programa lee el vector a de 10 valores, luego forma los cuadrados de esos valores y, por último, imprime esos valores.
1, 10 R1 (a)1, 10 repeticiones (j) j | un dup * j | (a) ;]1, 10 P1 (a)
La tabla de codificación GEORGE anterior ayudó a transcribir un programa en tarjetas perforadas.
Las operaciones condicionales se escribieron como saltos, de la siguiente manera: si a > 0 ir a 5 (que se transfiere a la etiqueta 5 si a es mayor que cero) se escribiría
0 a > 5 ↑
La etiqueta 5 se indicó incluyendo *5 en otras partes del programa. Las transferencias incondicionales se escribieron 5↑
Las llamadas a subrutinas se realizaron con la flecha hacia abajo, por ejemplo, para llamar a la subrutina etiquetada 17, escriba 17↓, donde la etiqueta 17 se codificó utilizando la columna 3 de la tabla anterior.
En la primera versión, que funcionó en mayo de 1957 en un DEUCE eléctrico inglés , todos los valores se almacenaban en formato binario de punto fijo en una palabra de 32 bits, con 16 lugares binarios.
En la segunda versión introducida en 1958, los valores se guardaban en forma de punto flotante, con un valor por palabra: 22 bits para la mantisa y 10 bits para el exponente.
Se necesitaba algún tipo de tabla de codificación porque el equipo de impresión de la época proporcionaba sólo 26 letras del alfabeto, un punto decimal, un signo más, un signo menos y una barra.
{{cite book}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace )[…] La
KDF9
es notable porque se cree que fue la primera computadora con formato de instrucción de dirección cero que se anunció (en 1960). Se entregó por primera vez aproximadamente al mismo tiempo (principios de 1963) que la otra famosa computadora de dirección cero, la
Burroughs B5000
en Estados Unidos. Al igual que muchas calculadoras de bolsillo modernas, una máquina de dirección cero permite el uso de aritmética polaca inversa; Esto ofrece ciertas ventajas a los escritores de compiladores. Se cree que la atención del equipo de English Electric se dirigió por primera vez al concepto de dirección cero a través del contacto con George (General Order Generator), un sistema de programación de código automático escrito para una computadora
Deuce
por la
Universidad de Sydney
, Australia, en la segunda mitad de la década de 1950. George utilizó el
polaco inverso
, y el equipo de KDF9 se sintió atraído por esta convención por la razón pragmática de querer mejorar el rendimiento al minimizar los accesos al almacenamiento principal. Esto puede contrastarse con la línea más "teórica" adoptada independientemente por
Burroughs
. Además de un
almacenamiento o pila de anidamiento
de hardware -el mecanismo básico de una computadora de dirección cero- el KDF9 tenía otros grupos de registros centrales para mejorar el rendimiento que le daban una estructura interna interesante. […][1] (NB. Esta es una versión editada de una charla dada al Grupo Noroeste de la Sociedad en el Museo de Ciencia e Industria, Manchester, Reino Unido, el 1 de octubre de 1996).