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

JOVIAL
パラダイム 手続き型命令型構造化
登場時期 1960年 (64年前) (1960)
設計者 System Development Corporation (SDC)
開発者 Software Engineering Associates (SEA)[1]
型付け 静的強い型付け安全構造的
主な処理系 MVS, OpenVMS, macOS, Windows, Linux, SPARC, PowerPC, MIL-STD-1750A, 他のレガシーシステム
方言 J3, J3B-2, J73
影響を受けた言語 ALGOL, SAGE
影響を与えた言語 CMS-2, Coral 66, SYMPL
関連言語 ALGOL
テンプレートを表示

歴史 編集

 
JOVIAL (J73) プログラミングマニュアル

JOVIALは軍用機の電子部分のソフトウェアを設計するための「高階[3]:1プログラミング言語として、1959年にジュールズ・シュウォーツ (Jules Schwartzを長とするSDC (System Development Corporationのチームによって開発された[4]

「JOVIAL」という名前は「Jules' Own Version of the IAL」の頭字語とされる[5]。ここで「IAL (International Algebraic Language)」とはALGOL 58の本来の名称として提案されていたものである[6]。シュウォーツによれば、最初は「OVIAL」という名前だったが、さまざまな理由から反対を受けたため、「JOVIAL」(英語で「陽気な」という意味を持つ)の名が提案された。この「J」には特に意味がなかったが、シュウォーツが委員長であったために半ば冗談として言語をジュールズ・シュウォーツの名にちなんで名付けることが提案され、この非公式の名前が定着したという[7]

1960年代にはリアルタイムシステムプログラム言語の欠如のため、JOVIALは米軍の「L計画」シリーズ、とくにITT 465L戦略航空指揮統制システム(SACCS計画)の一部を構成した。SACCS計画の約95%はITTによって管理され、そのソフトウェアはSDCによってJOVIALで書かれた。このソフトウェアは2年間をかけて1400人年未満で開発され、これはSAGEにくらべて半分以下の工数だった[8]

 
ACT社がクロスコンパイラを作った言語のひとつとしてJOVIALが挙げられている

1970年代後半から1980年代はじめにかけて、アメリカ空軍CPUの標準であるMIL-STD-1750Aを採用し、その後のJOVIAL言語はこのCPUのために設計された。ACTTLD Systems、PSS(Proprietary Software Systems)ほかいくつかの商用ベンダーがMIL-STD-1750AなどのCPUに対するJOVIALコンパイラおよび関連するプログラミングツールを提供した[9][10]

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.) の商用リソースを通じて入手可能である。WindowsLinuxPowerPC用のMac OS XSPARCVAX、MIL-STD-1750A、PowerPC、TI-9989Z8000モトローラ 680x0IBM System/360System/370System zといった多様なホスト/ターゲット・プロセッサの組み合わせについても同様である。ACTの一部分を買収したDDC-Iも2020年4月現在JOVIALコンパイラとプログラミングツールを販売している[2]

JOVIALによって開発されたソフトウェアの大部分はミッションクリティカルであり、その維持は年々困難になりつつある。2014年12月、イギリス航空交通管制インフラストラクチャーの重要な欠陥に1960年代に書かれたJOVIALのコードに由来するソフトウェアが含まれると報道された。報道によれば、そのソフトウェアを使用しているイギリス航空管制公社(NATS)はソフトウェアの維持のためにIT部門にJOVIALの訓練を施す必要があるため、2016年までは更新される予定がないとされる[11]

影響 編集

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

特徴 編集

標準ALGOLにないJOVIALの特徴としてはアイテム(今でいう構造体)、アイテムの配列、状態変数(今でいう列挙型)、インラインアセンブリ言語がある[13]

JOVIALはまたテーブルの「詰めこみ (packed)」データを含む。テーブルの詰めこみはアイテムを記憶のワードの中に割りあてることを指し、当時のコンピュータシステムの限られた記憶容量を節約するために重要だった。

JOVIALの「Communication Pool (COMPOOL)」はPL/IC言語などのヘッダファイルのライブラリに似たものである。

使用 編集

組み込みJOVIALソフトウェアを使用した主要なシステムには以下のものがある。

編集

以下の例はJOVIAL (J73) プログラミングマニュアルからの引用である[3]

PROC RETRIEVE(CODE:VALUE);
   BEGIN
   ITEM CODE U;
   ITEM VALUE F;
   VALUE = -99999.;
   FOR I:0 BY 1 WHILE I<1000;
      IF CODE = TABCODE(I);
         BEGIN
         VALUE = TABVALUE(I);
         EXIT;
      END
   END

この例では符号なし整数CODEを引数に取り、浮動小数点数VALUEを出力するRETRIEVEという手続きを定義している。手続きの中で1000の要素を持つTABCODEからCODEに一致する要素を検索し、配列TABVALUEの中の対応する添字をもつ要素の値をVALUEに代入している。一致する要素がない場合、VALUEの値は-99999.0になる。

脚注 編集

  1. ^ Software Engineering Associates, Inc. (SEA), http://www.seadeo.com/ 
  2. ^ a b Mature Development Systems, Field Proven on Hundreds of Applications”. DDC-I (2020年). 2020年4月22日閲覧。
  3. ^ a b Softech, Inc. (June 1981). Computer Programming Manual for the JOVIAL (J73) Language. Rome, New York: Rome Air Development Center. p. 1. オリジナルのJuly 29, 2018時点におけるアーカイブ。. https://web.archive.org/web/20180729170726/http://www.dtic.mil/dtic/tr/fulltext/u2/a101061.pdf 2018年5月16日閲覧。 
  4. ^ Schwartz, Jules I. (7 April 1989). Oral History interview with Jules I. Schwartz. University of Minnesota. http://purl.umn.edu/107628.  シュウォーツはランド研究所でいくつかの防衛関係の計画、とくにSAGE(半自動式防空管制組織)とJOHNNIACに携わっていた。ランド研究所がSDCを組織したときにシュウォーツは新しい会社に移った。このインタビューにおいてシュウォーツは自分とSAGEのかかわり、AN/FSQ-32コンピュータ上のタイムシェアリングシステムコンピュータネットワーク・制御システム計画(TDMSなど)に関する研究所における彼の役割、および彼とJ・C・R・リックライダーローレンス・ロバーツ、ロバート・サクストン・テイラーとの関係について語っている。シュウォーツはまた後にCSC(コンピュータ・サイエンシズ・コーポレーション)に移ってからの地位についても論じている。
  5. ^ Ed and Kay, JOVIAL Pioneers”. jovial.com. 2021年2月23日閲覧。
  6. ^ Shaw, Christopher J. (1963-12-01). “A specification of JOVIAL”. Communications of the ACM 6 (12): 721–736. doi:10.1145/763973.763978. ISSN 0001-0782. https://doi.org/10.1145/763973.763978. 
  7. ^ a b Schwartz, Jules I. (August 8, 1978). “The Development of Jovial”. ACM SIGPLAN Notices 13 (8): 203. doi:10.1145/960118.808385. http://jovial.com/documents/p203-schwartz-jovial.pdf 2015年1月28日閲覧。. 
  8. ^ Campbell-Kelly, Martin (2003). From airline reservations to Sonic the Hedgehog: a history of the software industry. Cambridge, Massachusetts: MIT Press. pp. 46-7. ISBN 0-262-03303-8. https://archive.org/details/fromairlinereser00camp_410 
  9. ^ Schachter, Oscar (7 May 2004). Oral history interview with Oscar Schachter. University of Minnesota. p. 17. http://purl.umn.edu/107622. 
  10. ^ “JOVIAL (J73) and MIL-STD-1750A ISA Software Support Tools”. Ada–JOVIAL Newsletter (High Order Language Control Facility, Wright-Patterson AFB, U.S. Air Force): pp. 21–24. (1993年9月) 
  11. ^ Rayner, Gordon (2014年12月12日). “UK flights chaos: Air traffic control computers using software from the 1960s”. Daily Telegraph. https://www.telegraph.co.uk/news/aviation/11291495/UK-flights-chaos-Air-traffic-control-computers-using-software-from-the-1960s.html 2020年4月21日閲覧。 
  12. ^ Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, United States Navy, (1978) 
  13. ^ Halang, Wolfgang A.; Stoyenko, Alexander D. (1991). Constructing Predictable Real Time Systems. Springer Verlag. p. 31. ISBN 978-1-4615-4032-8. https://www.springer.com/computer/communication+networks/book/978-0-7923-9202-6?token=gbgen&wt_mc=Google-_-Book%20Search-_-Springer-_-EN 
  14. ^ “Jovial to smooth U.S. Air Force shift to Ada”. Defense Electronics. (March 1, 1984). オリジナルの2012-10-12時点におけるアーカイブ。. https://web.archive.org/web/20121012015607/http://business.highbeam.com/438317/article-1G1-3161147/jovial-smooth-us-air-force-shift-ada 2015年1月28日閲覧。. 
  15. ^ AN/APG-73, Warfighter's Encyclopedia, オリジナルの2004-11-05時点におけるアーカイブ。, https://web.archive.org/web/20041105105841/https://wrc.navair-rdte.navy.mil/warfighter_enc/weapons/SensElec/RADAR/anapg73.htm 

外部リンク 編集