JOVIAL

JOVIAL（ジョヴィアル）は、ALGOL 58をベースにした高水準プログラミング言語であり、組み込みシステム開発用に特化されている。1960-1970年代を通じて主要なシステムプログラミング言語だった。

**歴史**
JOVIAL (J73) プログラミングマニュアル
JOVIALは軍用機の電子部分のソフトウェアを設計するための「高階1」プログラミング言語として、1959年にジュールズ・シュウォーツJules Schwartzを長とするSDCSystem Development Corporationのチームによって開発された。
「JOVIAL」という名前は「Jules' Own Version of the IAL」の頭字語とされる。ここで「IAL (International Algebraic Language)」とはALGOL 58の本来の名称として提案されていたものである。シュウォーツによれば、最初は「OVIAL」という名前だったが、さまざまな理由から反対を受けたため、「JOVIAL」（英語で「陽気な」という意味を持つ）の名が提案された。この「J」には特に意味がなかったが、シュウォーツが委員長であったために半ば冗談として言語をジュールズ・シュウォーツの名にちなんで名付けることが提案され、この非公式の名前が定着したという。
1960年代にはリアルタイムシステムプログラム言語の欠如のため、JOVIALは米軍の「L計画」シリーズ、とくにITT 465L戦略航空指揮統制システム（SACCS計画）の一部を構成した。SACCS計画の約95%はITTによって管理され、そのソフトウェアはSDCによってJOVIALで書かれた。このソフトウェアは2年間をかけて1400人年未満で開発され、これはSAGEにくらべて半分以下の工数だった。
ACT社がクロスコンパイラを作った言語のひとつとしてJOVIALが挙げられている
1970年代後半から1980年代はじめにかけて、アメリカ空軍はCPUの標準であるMIL-STD-1750Aを採用し、その後のJOVIAL言語はこのCPUのために設計された。ACT、TLD Systems、PSS(Proprietary Software Systems)ほかいくつかの商用ベンダーがMIL-STD-1750AなどのCPUに対するJOVIALコンパイラおよび関連するプログラミングツールを提供した。
JOVIAL言語は1973年にMIL-STD-1589として標準化され、1984年に改訂されてMIL-STD-1589Cになった。現在も古い軍用車両や軍用機のソフトウェアを更新・維持するために使用されている。J3、J3B-2、J73の3つの方言が広く使われる。
現在、アメリカ空軍のJOVIAL管理部門(JPO: JOVIAL Program Office)はもはやJOVIALを管理・配布していない。かつてJPOによって配布されていたソフトウェアは現在もSEA (Software Engineering Associates, Inc.) の商用リソースを通じて入手可能である。Windows、Linux、PowerPC用のMac OS X、SPARC、VAX、MIL-STD-1750A、PowerPC、TI-9989、Z8000、モトローラ 680x0、IBM System/360・System/370・System zといった多様なホスト/ターゲット・プロセッサの組み合わせについても同様である。ACTの一部分を買収したDDC-Iも2020年4月現在JOVIALコンパイラとプログラミングツールを販売している。
JOVIALによって開発されたソフトウェアの大部分はミッションクリティカルであり、その維持は年々困難になりつつある。2014年12月、イギリスの航空交通管制インフラストラクチャーの重要な欠陥に1960年代に書かれたJOVIALのコードに由来するソフトウェアが含まれると報道された。報道によれば、そのソフトウェアを使用しているイギリス航空管制公社(NATS)はソフトウェアの維持のためにIT部門にJOVIALの訓練を施す必要があるため、2016年までは更新される予定がないとされる。

**影響**
JOVIALの影響を受けた言語にはCORAL、SYMPL、SPL(Space Programming Language)があり、CMS-2にもある程度影響を及ぼしている。1960年代にはJOVIALの対話的サブセットであるTINTというJOSSに似た言語が開発された。

**特徴**
標準ALGOLにないJOVIALの特徴としてはアイテム（今でいう構造体）、アイテムの配列、状態変数（今でいう列挙型）、インラインアセンブリ言語がある。
JOVIALはまたテーブルの「詰めこみ (packed)」データを含む。テーブルの詰めこみはアイテムを記憶のワードの中に割りあてることを指し、当時のコンピュータシステムの限られた記憶容量を節約するために重要だった。
JOVIALの「Communication Pool (COMPOOL)」はPL/IやC言語などのヘッダファイルのライブラリに似たものである。

**使用**
組み込みJOVIALソフトウェアを使用した主要なシステムには以下のものがある。- MILSTAR通信衛星- ACM巡航ミサイル- B-52、B-1B、B-2爆撃機- C-130、C-141、C-17輸送機- F-111、F-15、F-16（ブロック50以前）、F-117戦闘機- LANTIRN- U-2航空機- ボーイングE-3早期警戒管制機（ブロック40/45以前）- 海軍のイージス巡洋艦- 陸軍のMLRS（多連装ロケットシステム）- 陸軍のUH-60 ブラックホークヘリコプター- F100、F117、F119ジェットエンジン- NORADの航空防衛・制御システム（ヒューズH5118ME）- NATO防空管制組織(NADGE)システム- RL-10ロケットエンジン- 全米航空システム(NAS)の航空交通管制- APG-70、APG-71、APG-73航空機搭載レーダーシステム

**例**
以下の例はJOVIAL (J73) プログラミングマニュアルからの引用であるp=12。
PROC RETRIEVE(CODE:VALUE);
BEGIN
ITEM CODE U;
ITEM VALUE F;
VALUE = -99999.;
FOR I:0 BY 1 WHILE I
この例では符号なし整数CODEを引数に取り、浮動小数点数VALUEを出力するRETRIEVEという手続きを定義している。手続きの中で1000の要素を持つTABCODEからCODEに一致する要素を検索し、配列TABVALUEの中の対応する添字をもつ要素の値をVALUEに代入している。一致する要素がない場合、VALUEの値は-99999.0になる。

**脚注**

**外部リンク**
 The Development of Jovial- citation |title=MIL-STD-1589C, Military Standard: JOVIAL (J73) |url=http://everyspec.com/MIL-STD/MIL-STD-1500-1599/download.php?spec=MIL-STD-1589C.014577.pdf |publisher=United States Department of Defense |date=6 Jul 1984-  April 2006 archive of the JOVIAL Program Office-  Jules Schwartz - JOVIAL（JOVIALの開発に関するユーモアにあふれた動画へのリンクがあったが、リンク切れ）-  DODSSP U.S. Department of Defense Single Stock Point for Military Specifications, Standards and Related Publications-  Software Engineering Associates-  DDC-I, Inc.: DDC-I JOVIAL Compiler System (DJCS)- Jules Schwartz lecture on JOVIAL- accessdate=Mar 11, 2022