Введение
Язык программирования HAL/S (High order Assembly Language/Shuttle) — это компилятор и кросс-компилятор для аэрокосмических приложений реального времени, используемый NASA и связанными агентствами (например, JPL). Он применяется в американских космических проектах с 1973 года, а наиболее значительное его применение было в программе «Космический челнок» (около 85% программного обеспечения челнока было написано на HAL/S). Разработан HAL/S компанией Intermetrics в 1972 году для NASA и поставлен в 1973 году. HAL/S написан на XPL, диалекте PL/I. Хотя HAL/S предназначен прежде всего для программирования бортовых компьютеров, он достаточно универсален для удовлетворения практически всех потребностей в производстве, верификации и поддержке аэрокосмических и других приложений реального времени. Согласно документации за 2005 год, его поддержка осуществлялась проектом HAL/S компании United Space Alliance.
HAL/S (High order Assembly Language/Shuttle) is a real time aerospace programming language compiler and cross compiler for avionics applications used by NASA and associated agencies (JPL, etc.). It has been used in many U. S. space projects since 1973 and its most significant use was in the Space Shuttle program (approximately 85% of the Shuttle software was coded in HAL/S). It was designed by Intermetrics in 1972 for NASA and delivered in 1973. HAL/S is written in XPL, a dialect of PL/I. Although HAL/S is designed primarily for programming on board computers, it is general enough to meet nearly all the needs in the production, verification, and support of aerospace and other real time applications. According to documentation from 2005, it was being maintained by the HAL/S project of United Space Alliance.
Цели и принципы
Три ключевых принципа при разработке языка заключались в надёжности, эффективности и машинно-независимости. Язык разработан для выполнения задач, связанных с аэрокосмической областью (таких как векторная и матричная арифметика), таким образом, чтобы они были легко понятны людям, обладающим знаниями в области космических полётов, но необязательно владеющим навыками компьютерного программирования. HAL/S был разработан без включения некоторых конструкций, которые считались источниками ошибок. Например, в нём отсутствует поддержка динамического выделения памяти. Язык предоставляет специальную поддержку для сред выполнения в реальном времени. Некоторые элементы, такие как оператор "GOTO", были предусмотрены главным образом для упрощения автоматического перевода программ с других языков. (страница 82)
Название "HAL" было предложено Эдом Коппсом, одним из основателей Intermetrics, в честь Хала Лэнинга, его коллеги из MIT. На странице предисловия спецификации языка HAL/S:
Типы данных
HAL/S изначально поддерживает целые числа, числа с плавающей точкой, векторы, матрицы, логические значения и строки из 8-битных символов, максимальная длина которых составляет 255. Структурированные типы могут быть определены с помощью оператора DECLARE STRUCT.