HAL / S ( H igh orden A SAMBLEA L anguage / S huttle ) [1] [2] es un tiempo real aeroespacial lenguaje de programación compilador y compilador cruzado para aplicaciones de aviónica utilizados por la NASA y los organismos asociados ( JPL , etc.) . Se ha utilizado en muchos proyectos espaciales de EE. UU. Desde 1973 y su uso más significativo fue en el programa del Transbordador Espacial (aproximadamente el 85% del software del Transbordador está codificado en HAL / S). [3] Fue diseñado por Intermetrics en 1972 para la NASA y entregado en 1973. HAL / S está escrito en XPL, Un dialecto de PL / I . [4] Aunque HAL / S está diseñado principalmente para programar computadoras a bordo, es lo suficientemente general como para satisfacer casi todas las necesidades en la producción, verificación y soporte de aplicaciones aeroespaciales y otras aplicaciones en tiempo real. Según la documentación de 2005, estaba siendo mantenido por el proyecto HAL / S de United Space Alliance . [5]
Metas y principios
Los tres principios clave en el diseño del lenguaje fueron confiabilidad, eficiencia e independencia de la máquina . El lenguaje está diseñado para permitir que las tareas relacionadas con la industria aeroespacial (como la aritmética de vectores / matrices ) se realicen de una manera que sea fácilmente comprensible para las personas que tienen conocimientos de vuelos espaciales, pero que no necesariamente tienen competencia con la programación de computadoras.
HAL / S se diseñó para no incluir algunos constructos que se pensaba que eran la causa de errores . Por ejemplo, no hay soporte para la asignación de memoria dinámica. El lenguaje proporciona soporte especial para entornos de ejecución en tiempo real .
Algunas funciones, como " GOTO ", se proporcionaron principalmente para facilitar las traducciones mecánicas de otros idiomas. [5] (página 82) [6]
"HAL" fue sugerido como el nombre del nuevo lenguaje por Ed Copps, director fundador de Intermetrics , en honor a Hal Laning, un colega del MIT . En la página del Prefacio de la Especificación del idioma HAL / S, [5] dice:
- Las contribuciones fundamentales al concepto y la implementación de MAC fueron realizadas por el Dr. J. Halcombe Laning del Draper Laboratory .
Se propuso una propuesta para una versión estándar de la NASA basada en tierra de HAL llamada HAL / G para "tierra", pero la inminente aparición del lenguaje de programación Ada que pronto se llamará contribuyó a la falta de interés de Intermetrics en continuar este trabajo. En cambio, Intermetrics pondría énfasis en cuál sería el finalista "Rojo" que no sería seleccionado.
Se han implementado sistemas de compilación de host en computadoras IBM 360/370, Data General Eclipse y Modcomp IV / Classic. Los sistemas informáticos de destino han incluido IBM 360/370 , IBM AP-101 (computadora de aviónica del transbordador espacial), Sperry 1819A / 1819B, Data General Nova y Eclipse, CII Mitra 125, Modcomp II y IV, NASA Std. Nave espacial Computer-1 y Computer-2, ITEK ATAC 16M ( Proyecto Galileo ), y desde 1978 el microprocesador RCA CDP1802 COSMAC (Proyecto Galileo y otros). [7]
Sintaxis
HAL / S es un lenguaje en su mayoría de forma libre : las declaraciones pueden comenzar en cualquier lugar de una línea y pueden extenderse a las líneas siguientes, y se pueden ajustar varias declaraciones en la misma línea si es necesario. Sin embargo, los caracteres que no son espacios en la primera columna de una línea de programa pueden tener un significado especial. Por ejemplo, la letra 'C' en la primera columna indica que toda la línea es un comentario y el compilador debe ignorarla.
Una característica particularmente interesante de HAL / S es que admite, además de un formato de texto normal de una sola línea, un formato de entrada opcional de tres líneas en el que se utilizan tres líneas de código fuente para cada declaración. En este formato, la primera y la tercera línea se pueden utilizar para superíndices (exponentes) y subíndices (índices). El formato de varias líneas fue diseñado para permitir la escritura de código HAL / S que es similar a la notación matemática .
Como ejemplo, la declaración podría escribirse en formato de una sola línea como:
X = A ** 2 + B $ (I) ** 2
La exponenciación se indica con dos asteriscos , como en PL / I y Fortran . El subíndicese denota con un signo de dólar , con la expresión de subíndice entre paréntesis . El mismo fragmento de código podría escribirse en formato de varias líneas como:
E 2 2MX = A + BSI
En el ejemplo, la línea de base de la declaración se indica con una 'M' en la primera columna, la línea de exponente se indica con una 'E' y la línea de subíndice se indica con una 'S'.
Ejemplo
El siguiente es un programa HAL / S simple. [8] Cada programa comienza con una PROGRAM
declaración etiquetada ; la etiqueta consta de un identificador seguido de dos puntos. Todas las variables deben declararse en el DECLARE
grupo, que precede a cualquier declaración ejecutable. Cada programa termina con una CLOSE
declaración delimitante.
SIMPLE: PROGRAMA;EL CÓDIGO C EN ESTE TIPO ESFUENTE DE C HAL / S DECLARAR PI CONSTANTE (3.14159266); DECLARAR ESCALAR R; LEER (5) R; ESCRIBIR (6) PI R ** 2; CIERRE SIMPLE;
Tipos de datos
HAL / S tiene soporte nativo para enteros , escalares de coma flotante , vectores , matrices , booleanos y cadenas de caracteres de 8 bits, limitado a una longitud máxima de 255. Los tipos estructurados se pueden componer usando una declaración.DECLARE STRUCT
Ver también
- IBM AP-101 , la computadora de aviónica del transbordador espacial
- Fortress , un lenguaje de programación con soporte sintáctico avanzado para expresiones matemáticas
- COLASL un lenguaje de programación para IBM 7030 Stretch con un formato "natural" similar
Referencias
- ^ "Software STS" . NSTS 1988 Manual de referencia de noticias . NASA . Consultado el 30 de marzo de 2011 .
- ^ Lea "Una evaluación de los procesos de desarrollo de software de vuelo del transbordador espacial" en NAP.edu .
- ^ Lytle, PJ (1981). "Estado actual del compilador HAL / S" . Archive.org .
- ^ "El desarrollo de Hal / S" . Departamento de Ciencias de la Computación, Universidad de Toronto .
- ^ a b c "Especificación de idioma HAL / S" (PDF) . Noviembre de 2005. Archivado desde el original (PDF) el 26 de febrero de 2009 . Consultado el 16 de noviembre de 2016 .
- ^ Ryer, Michael J. (1979). "Programación en HAL / S" (PDF) . Fuente: Servidor de informes técnicos de la NASA . Consultado el 14 de febrero de 2016 .
- ^ Lytle, PJ (1981). "Estado actual del compilador HAL / S" .
- ^ Ryer, Michael (septiembre de 1978). Programación en HAL / S (PDF) . NASA. pag. 2-1.
enlaces externos
- Oficina de Diseño Lógico de la NASA: Computadoras y aviónica del transbordador espacial
- Incluye especificaciones de lenguaje y compilador , guía del programador y manual de usuario .
- Computadoras en vuelos espaciales: la experiencia de la NASA - Por George Tomayko (Apéndice II: "HAL / S, un lenguaje en tiempo real para vuelos espaciales")