Speedcoding , Speedcode o SpeedCo fue el primer lenguaje de programación de alto nivel [ a ] creado para una computadora IBM . [ 1 ] El lenguaje fue desarrollado por John W. Backus en 1953 para la IBM 701 para admitir cálculos con números de punto flotante . [ 2 ]
La idea surgió de la dificultad de programar la máquina IBM SSEC cuando Backus fue contratado para calcular posiciones astronómicas a principios de 1950. [ 3 ] El sistema Speedcoding era un intérprete y se centraba en la facilidad de uso a costa de los recursos del sistema. Proporcionaba pseudoinstrucciones para funciones matemáticas comunes: logaritmos, exponenciación y operaciones trigonométricas. El software residente analizaba las pseudoinstrucciones una por una y llamaba a la subrutina apropiada. Speedcoding también fue la primera implementación de operaciones de entrada/salida decimales. Aunque redujo sustancialmente el esfuerzo de escribir muchos trabajos, el tiempo de ejecución de un programa escrito con la ayuda de Speedcoding solía ser de diez a veinte veces mayor que el del código máquina. [ 4 ] El intérprete ocupaba 310 palabras de memoria, aproximadamente el 30% de la memoria disponible en un 701. [ 1 ]
Historia y desarrollo
En agosto de 1952, varias docenas de ingenieros de IBM y clientes del IBM 701 se reunieron en Poughkeepsie, Nueva York, para intercambiar ideas y mejores prácticas sobre la programación de las nuevas máquinas en lenguaje ensamblador. Varios asistentes expresaron su frustración por la lentitud de la programación y la depuración en ensamblador, y cuestionaron la utilidad del 701 en aplicaciones donde se necesitaban soluciones rápidas a los problemas, o cuando el valor de una solución justificaba el tiempo de cálculo, pero no el costo de la programación y la depuración. Los asistentes también se quejaron de problemas con la "escalabilidad", es decir, la necesidad de controlar rigurosamente el punto decimal en las operaciones aritméticas. [ 5 ]
John W. Sheldon, supervisor de la Oficina de Computación Técnica de IBM que asistió a la reunión, y otros consideraron que un sistema de programación "interpretativo" que utilizara operaciones de punto flotante era la mejor solución a este problema. Sheldon le pidió a John Backus, quien previamente había trabajado en un traductor de código CPC a SSEC , que supervisara la creación de un nuevo lenguaje de programación interpretativo de punto flotante para uso interno de IBM. El propio Backus había expresado previamente su interés en mejorar los métodos de programación y observó que los costos de computación se dividían aproximadamente a partes iguales entre el costo de la computación y el costo del personal de programación, y que el gasto adicional de las pruebas hacía que la mano de obra representara un gasto considerablemente mayor. A partir de 1953, Backus y cinco colegas diseñaron este nuevo lenguaje y lo llamaron "Speedcoding", cuyo uso pronto se extendió fuera de IBM a las instalaciones de clientes del sistema 701. [ 5 ]
Sintaxis y semántica
Los programas de speedcoding se organizan como una serie de instrucciones, cada una de las cuales se almacena en memoria como una palabra de datos de 72 bits. Una instrucción generalmente consta de dos operaciones (OP 1 y OP 2 ) y 4 direcciones de memoria. La primera operación (OP 1 ) es una operación matemática o de entrada/salida que tiene 3 direcciones de memoria asociadas, una o más de las cuales pueden modificarse según la naturaleza de la operación. Las operaciones matemáticas incluyen aritmética básica, raíz cuadrada y funciones trigonométricas. Las operaciones lógicas incluyen funcionalidad para leer, escribir, saltar y rebobinar cinta magnética , así como operaciones para interactuar con datos almacenados en la memoria de tambor . La segunda operación (OP 2 ) es una operación lógica que tiene la dirección de memoria asociada restante. Las operaciones lógicas permiten ejecutar las instrucciones en un orden diferente al de su escritura, lo que permite implementar gotos, condicionales, bucles y otros comportamientos avanzados. [ 6 ]
Palabras clave de operaciones aritméticas y de entrada/salida reservadas [ 6 ]
- AGREGAR
- SUB
- ADDAB
- ABADD
- SUBAB
- ABSUB
- MPY
- NGMPY
- DIV
- NGDIV
- RAÍZ CUADRADA
- SENO
- ARTÁN
- EXP
- LN
- MOVER
- WRTPJ
- WRTPK
- WRTPL
- WRTPM
- RFTPJ
- RFTPL
- RFTPM
- RBTPJ
- RBTPK
- RBTPL
- RBTPM
- SFTPJ
- SFTPK
- SFTPL
- SFTPM
- SBTPJ
- SBTPK
- SBTPL
- SBTPM
- RWTPJ
- RWTPK
- RWTPL
- RWTPM
- EFTPJ
- EFTPK
- EFTPL
- EFTPM
- WRDRP
- WRDRQ
- RFDRP
- RFDRQ
- IMPRIMIR
- EXPULSAR
- NOOP
Palabras clave lógicas reservadas [ 6 ]
- TR
- TRPL
- TRMN
- TRZ
- SNTRP
- SNTRQ
- TIA
- TIB
- TIC
- TIBC
- TIAC
- TIABC
- TDA
- TDC
- TDAB
- TDBC
- TDAC
- TDABC
- SETRA
- SETRB
- SETRC
- SKRA
- SKRB
- SKRC
- RADDA
- RADDB
- RADDC
- RADDD
- ADDA
- ADDB
- ADDC
- TDAH
- SUBA
- SUBB
- SUBC
- SUBD
- STA
- STB
- STC
- ETS
- SALTAR
- PRCH
- STCH
- ECHTR
Véase también
Notas
- ↑ Significa simbólico y orientado a la expresividad del lenguaje natural en contraposición a la codificación orientada a instrucciones de máquina o hardware.
Referencias
- 1 2 Allen, Frances "Fran" Elizabeth (septiembre de 1981). "La historia de la tecnología de procesamiento de lenguaje en IBM". IBM Journal of Research and Development . 25 (5): 535– 548. doi : 10.1147/rd.255.0535 .
- ↑ Shasha, Dennis Elliot ; Lazere, Cathy (1998). Fuera de sí: Las vidas y descubrimientos de 15 grandes científicos informáticos . Nueva York, EE. UU.: Copernicus , Springer-Verlag New York, Inc. ISBN 0-387-98269-8LCCN 98-16911 . SPIN 10693423.
- ↑ Backus, John W. (5 de septiembre de 2006). Booch, Grady (ed.). "Historia oral de John Backus" (PDF) . Número de referencia: X3715.2007 (Entrevista). Ashland, Oregón, EE. UU.: Museo de Historia de la Computación . Archivado (PDF) del original el 8 de abril de 2022. Recuperado el 23 de abril de 2011 .(42 páginas)
- ↑ Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). Los sistemas 360 y los primeros 370 de IBM . MIT Press . pág. 38. ISBN 0-262-16123-0.
- 1 2 Bashe, Charles; Johnson, Lyle; Palmer, John; Pugh, Emerson (17 de marzo de 1986). Los primeros ordenadores de IBM . MIT Press. págs. 332–338 . ISBN 9780262523936. Consultado el 25 de agosto de 2023 .
- 1 2 3 Sistema de codificación de velocidad IBM para las máquinas de procesamiento electrónico de datos tipo 701 (PDF) . Nueva York, EE. UU.: International Business Machines Corporation . 1954 [1953-09-10]. Formulario 24-6059-0 (5-54:2M-W). Archivado (PDF) del original el 04-07-2022 . Recuperado el 04-07-2022 .
Lecturas adicionales
- Sistema de codificación de velocidad IBM para las máquinas de procesamiento electrónico de datos tipo 701 (PDF) . Nueva York, EE. UU.: International Business Machines Corporation . 1954 [1953-09-10]. Formulario 24-6059-0 (5-54:2M-W). Archivado (PDF) del original el 04-07-2022 . Recuperado el 04-07-2022 .(48 páginas)
- Backus, John W. (enero de 1954). "El sistema de codificación de velocidad IBM 701" (PDF) . Journal of the ACM . 1 (1): 4– 6. Archivado (PDF) del original el 16 de mayo de 2022. Recuperado el 4 de julio de 2022 .
- Backus, John W.; Harlan, Herrick (13-14 de mayo de 1954). "IBM 701 Speedcoding and Other Automatic-programming Systems" . Actas del Simposio sobre Programación Automática para Computadoras Digitales . Washington D. C., EE. UU.: Oficina de Investigación Naval . págs. 106-113 . Consultado el 4 de julio de 2022 .
- Sammet, Jean E. (1969). Lenguajes de programación: historia y fundamentos . Prentice-Hall .
- Lenguajes de programación procedimental
- Lenguajes de programación numérica
- Software de IBM
- Lenguajes de programación creados en 1953