HAL/S
HAL/S (High-order Assembly Language/Shuttle) ist eine Programmiersprache, die für Echtzeitanwendungen in Raumfahrzeugen von Intermetrics im Auftrag der NASA entwickelt wurde.
Die Entwicklungen begannen Ende der 1960er Jahre unter dem Namen HAL. Mit Beginn des Space-Shuttle-Projekts wurde 1972 der Zusatz /S hinzugefügt, da ein Großteil der Software des Shuttles in dieser Sprache geschrieben wurde.<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:P.J. Lytle|P.J. Lytle: }}{{#if:|{{#if:Introduction|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Introduction}}]{{#if:PDF| (PDF)}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Introduction}}}}%7C[{{#invoke:URLutil|getNormalized|1=http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Introduction}}}}]}}{{#if:PDF| (PDF{{#if:Current Status of the HAL/S Compiler on the Modcomp Classic 7870 ComputerNational Aeronautics and Space Administration{{#if: 2014-02-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:de|de||{{#if:|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF}}%7C%7C}}}}{{#if:Introduction|{{#if:{{#invoke:WLink|isValidLinktext|1=Introduction|lines=0}}||}}}}{{#if: Current Status of the HAL/S Compiler on the Modcomp Classic 7870 Computer| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Current Status of the HAL/S Compiler on the Modcomp Classic 7870 Computer}}}}{{#if: National Aeronautics and Space Administration| National Aeronautics and Space Administration{{#if: |,|{{#if: 2014-02-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format|{{{datum}}}|noerror=1}}
|{{#invoke:DateTime|format|{{{datum}}}|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum={{{datum}}}|class=Zitationswartung}} }}{{#if: |,|{{#if: 2014-02-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2014-02-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:National Aeronautics and Space Administration|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:342954||(?)}}}}}}{{#if: Approximately 85% of the Shuttle Software is coded in HAL/S: a body of 2 million lines of comments, data declarations and executable lines of code.2014-02-27|;}}}}{{#if: 2014-02-27| {{#if:National Aeronautics and Space Administration{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2014-02-27 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2014-02-27|class=Zitationswartung}} }} {{#invoke:DateTime|format|2014-02-27|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:de|de||{{#if:|1}}}}|{{#if:Current Status of the HAL/S Compiler on the Modcomp Classic 7870 ComputerNational Aeronautics and Space Administration{{#if: 2014-02-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if:PDF | | (}}
}}{{#ifeq:{{#if:de|de|de}}|de||
{{#invoke:Multilingual|format|{{{sprache}}}|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:de|de|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2014-02-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}Approximately 85% of the Shuttle Software is coded in HAL/S: a body of 2 million lines of comments, data declarations and executable lines of code.|{{#if: Approximately 85% of the Shuttle Software is coded in HAL/S: a body of 2 million lines of comments, data declarations and executable lines of code.|: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: Approximately 85% of the Shuttle Software is coded in HAL/S: a body of 2 million lines of comments, data declarations and executable lines of code.
| {{#if:
| {{#if: Approximately 85% of the Shuttle Software is coded in HAL/S: a body of 2 million lines of comments, data declarations and executable lines of code.
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF | {{#if:{{#invoke:URLutil|isWebURL|http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF | {{#if:{{#invoke:URLutil|isWebURL|http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF | {{#if:{{#invoke:URLutil|isWebURL|http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF | {{#if:{{#invoke:URLutil|isWebURL|http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[http://ipnpr.jpl.nasa.gov/progress_report/42-64/64AA.PDF }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref> HAL/S wurde auch in anderen Raumfahrtprojekten verwendet, zum Beispiel zur Lageregelung der Galileo-Sonde.
HAL/S wurde in XPL, einem Dialekt von PL/I, geschrieben.
Grundprinzipien
Die drei Zielsetzungen beim Design der Sprache waren Verlässlichkeit, Effizienz und Plattformunabhängigkeit. Luft- und raumfahrttypische Aufgaben (wie Vektor- und Matrixrechnung) können in einer Weise ausgeführt werden, die für Leute mit Raumfahrtwissen, die keine tiefen Programmierkenntnisse haben, leicht verständlich ist.
HAL/S verzichtet auf Konstrukte, die als Fehlerquellen bekannt sind. Beispielsweise gibt es keine Unterstützung für dynamische Speicherverwaltung. Die Sprache bietet dafür besondere Unterstützung für Echtzeitanwendungen. Manche Elemente wie beispielsweise »GOTO« wurden hauptsächlich deshalb bereitgestellt, um maschinelle Übersetzungen von anderen Sprachen zu erleichtern.<ref>NASA: <templatestyles src="Webarchiv/styles.css" />{{#if:20090319104733
| {{#ifeq: 20090319104733 | *
| {{#if: Programming in HAL/S | {{#invoke:WLink|getEscapedTitle|Programming in HAL/S}} | {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20090319104733}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Programming in HAL/S | {{#invoke:WLink|getEscapedTitle|Programming in HAL/S}} | {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20090319104733}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Programming in HAL/S | {{#invoke:WLink|getEscapedTitle|Programming in HAL/S}} | {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Programming in HAL/S | {{#invoke:WLink|getEscapedTitle|Programming in HAL/S}} | {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Programming in HAL/S | {{#invoke:WLink|getEscapedTitle|Programming in HAL/S}} | {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Programming in HAL/S | {{#invoke:WLink|getEscapedTitle|Programming in HAL/S}} | {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20090319104733|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf}}
|| {{#if: || }}
}}{{#if: Programming in HAL/S
| {{#if: {{#invoke:WLink|isBracketedLink|Programming in HAL/S}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://klabs.org/richcontent/software_content/hal_s/programming_in_hal-s.pdf }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}, auf klabs.org. (PDF)</ref>
Syntax
HAL/S arbeitet weitgehend mit freiem Format: Anweisungen können an einem beliebigen Punkt einer Zeile beginnen und sich über die folgenden Zeilen erstrecken, und mehrere Anweisungen können, wenn gewünscht, in eine einzige Zeile gesetzt werden. Allerdings können einzelne Zeichen am Anfang einer Zeile eine besondere Bedeutung haben. Zum Beispiel wird eine Zeile als Kommentar erkannt und beim Kompilieren ignoriert, wenn sie mit dem Buchstaben »C« beginnt.
Eine Besonderheit der HAL/S-Syntax ist die Unterstützung eines optionalen Dreizeilen-Eingabeformats, in dem drei Quellcode-Zeilen eine Anweisung darstellen. Die erste und die dritte Zeile werden dabei für Superskripte (Exponenten) und Subskripte (Indizes) verwendet, was eine Art mathematische Notation im Code ermöglicht.
Beispielsweise kann die Gleichung <math>x = a^2 + b_i^2</math> so geschrieben werden:
E 2 2 M X = A + B S I
Ansonsten werden Exponenten wie in Fortran und PL/I mit zwei Sternchen gekennzeichnet; Indizes werden in Klammern mit vorangestelltem Dollarzeichen eingefügt. Das obige Beispiel könnte also auch als Einzeiler wie folgt dargestellt werden:
X = A ** 2 + B$(I) ** 2
Namensgebung
Der Name HAL wurde von Ed Copps, Gründungsdirektor der Firma Intermetrics, die die Sprache für die NASA entwickelte, zu Ehren des MIT-Kollegen Hal Laning gewählt. HAL war aber auch der Name des sprechenden Bordcomputers des Raumschiffs Discovery One aus einem der bekanntesten Science-Fiction-Filme, 2001: Odyssee im Weltraum von 1968 und ist daher ein besonders passender Name für eine Raumfahrt-affine Programmiersprache.
Weblinks
- Computers in Spaceflight: The NASA Experience. (englisch)
- HAL/S Documents (englisch)
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Programmiersprache
- Raumfahrttechnik
- NASA