JOVIAL je vysokoúrovňový programovací jazyk podobný ALGOL , který se specializuje na vývoj vestavěných systémů .
JOVIAL byl vyvinut v roce 1959 jako nový „vysoce kvalitní“ programovací jazyk týmem System Development Corporation (SDC) vedeným Julesem Schwartzem za účelem vytvoření softwaru pro elektroniku vojenských letadel [1] . Jméno JOVIAL je zkratkou pro Julesovu vlastní verzi mezinárodního algebraického jazyka . _ Podle Schwartze se jazyk původně jmenoval OVIAL, ale tento název byl z různých důvodů odmítnut. Poté byl navržen název „JOVIAL“ bez jakéhokoli významu písmene „J“ (v angličtině. , fr. , španělština atd. žoviální "veselý; veselý"). Bylo vtipně naznačeno, že jazyk je pojmenován po Schwartzovi, který schůzi předsedal, a tento neformální název se konečně ujal. [2]
V 60. letech byl JOVIAL součástí řady amerických vojenských projektů, konkrétně 465L (projekt SACCS ) kvůli nedostatku dostupných jazyků pro zpracování v reálném čase. Asi 95 % softwaru SACCS bylo napsáno v JOVIAL. [3]
Koncem 70. a začátkem 80. let americké letectvo přijalo standardizovaný procesor MIL-STD-1750A a programy byly pro tento procesor napsány v JOVIAL. Pro takové procesory vyvinulo několik komerčních společností kompilátory a související vývojové nástroje JOVIAL ( Advanced Computer Techniques , TLD Systems , Proprietary Software Systems a další). [4] [5]
JOVIAL byl standardizován v roce 1973 jako MIL-STD- 1589 ; vývoj jazyka byl zdokumentován v roce 1984 v MIL-STD-1589C . Jazyk je stále široce používán pro aktualizaci a údržbu softwaru na starších vojenských vozidlech a letadlech. Existují tři dialekty: J3, J3B-2 a J73.
Od roku 2010 již JOVIAL není podporován ani distribuován programovou kanceláří USAF JOVIAL (JPO). Software dříve distribuovaný JPO je stále dostupný prostřednictvím komerčních zdrojů Software Engineering Associates, Inc. (SEA) a také další hostitelské procesory včetně Microsoft Windows , Linux , Mac OS X na PowerPC , SPARC , VAX , 1750A , PowerPC , TI-9989 , Zilog Z800x , Motorola 680x0 a IBM System 360 / System 370 / System z . Také DDC-I , který získal části Advanced Computer Techniques , stále zobrazuje kompilátory JOVIAL a související nástroje. [6]
Většina programů implementovaných na JOVIAL je kritická a jejich údržba je stále obtížnější. V prosinci 2014 bylo oznámeno, že software využívající JOVIAL, vydaný v 60. letech, souvisel s velkým selháním infrastruktury řízení letového provozu Spojeného království a že agentura, která jej používá, musela školit své IT pracovníky v programování JOVIAL tak, aby mohli pracovat s tímto softwarem, jehož výměna se plánuje až v roce 2016. [7] Proto je převod JOVIAL kódu na nové platformy stále častější. Převod JOVIAL do jiných jazyků v současnosti provádí společnost Semantic Designs , k převodu některých programů JOVIAL pro bombardér B - 2 na C byl použit DMS Software Reengineering Toolkit [osm]
Podle Schwartze byl JOVIAL ovlivněn programovacími jazyky jako CORAL , SYMPL , Space Programming Language (SPL) a do určité míry CMS-2 . [9] Interaktivní podmnožina JOVIAL s názvem TINT , podobná JOSS , byla vyvinuta v 60. letech 20. století. [2]
JOVIAL obsahuje funkce, které nenajdete ve standardním ALGOL, jako jsou záznamy, pole záznamů a inline assembler. [deset]
Následující příklad je převzat z JOVIAL Programming Guide (J73). [jedenáct]
PROC RETRIEVE(KÓD:HODNOTA); ZAČÍT KÓD POLOŽKY U; HODNOTA POLOŽKY F; HODNOTA = -99999.; PRO I:0 BY 1, KDYŽ I<1000; IF CODE = TABCODE(I); ZAČÍT HODNOTA = TABVALUE(I); VÝSTUP; KONEC KONECTento příklad definuje pojmenovanou proceduru RETRIEVE, která přebírá CODEargument celého čísla bez znaménka a výstupní argument s plovoucí desetinnou čárkou VALUE . Vyhledá v poli 1000 prvků TABCODEpoložku, která se shoduje, CODEa poté nastaví VALUEproměnnou s pohyblivou řádovou čárkou na prvek pole TABVALUE, který má stejný odpovídající index pole. Pokud není nalezen žádný odpovídající prvek, hodnota VALUEje -99999,0.