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(ジョヴィアル)は、ALGOL 58をベースにした高水準プログラミング言語であり、組み込みシステム開発用に特化されている。1960-1970年代を通じて主要なシステムプログラミング言語だった[2]。
歴史
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Computer_Programming_Manual_for_the_Jovial_%28J73%29_Language.djvu/page1-170px-Computer_Programming_Manual_for_the_Jovial_%28J73%29_Language.djvu.jpg)
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]。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Advanced_Computer_Techniques_Ada_Jovial_Fortran_1750A_pin_button.jpg/170px-Advanced_Computer_Techniques_Ada_Jovial_Fortran_1750A_pin_button.jpg)
1970年代後半から1980年代はじめにかけて、アメリカ空軍はCPUの標準であるMIL-STD-1750Aを採用し、その後のJOVIAL言語はこのCPUのために設計された。ACT、TLD 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.) の商用リソースを通じて入手可能である。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コンパイラとプログラミングツールを販売している[2]。
JOVIALによって開発されたソフトウェアの大部分はミッションクリティカルであり、その維持は年々困難になりつつある。2014年12月、イギリスの航空交通管制インフラストラクチャーの重要な欠陥に1960年代に書かれたJOVIALのコードに由来するソフトウェアが含まれると報道された。報道によれば、そのソフトウェアを使用しているイギリス航空管制公社(NATS)はソフトウェアの維持のためにIT部門にJOVIALの訓練を施す必要があるため、2016年までは更新される予定がないとされる[11]。
影響
JOVIALの影響を受けた言語にはCORAL、SYMPL、SPL(Space Programming Language)があり、CMS-2にもある程度影響を及ぼしている[12]。1960年代にはJOVIALの対話的サブセットであるTINTというJOSSに似た言語が開発された[7]。
特徴
標準ALGOLにないJOVIALの特徴としてはアイテム(今でいう構造体)、アイテムの配列、状態変数(今でいう列挙型)、インラインアセンブリ言語がある[13]。
JOVIALはまたテーブルの「詰めこみ (packed)」データを含む。テーブルの詰めこみはアイテムを記憶のワードの中に割りあてることを指し、当時のコンピュータシステムの限られた記憶容量を節約するために重要だった。
JOVIALの「Communication Pool (COMPOOL)」はPL/IやC言語などのヘッダファイルのライブラリに似たものである。
使用
組み込みJOVIALソフトウェアを使用した主要なシステムには以下のものがある。
- MILSTAR通信衛星
- ACM巡航ミサイル
- B-52、B-1B[14]、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航空機搭載レーダーシステム[15]
例
以下の例は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
になる。
脚注
- ^ Software Engineering Associates, Inc. (SEA), http://www.seadeo.com/
- ^ a b “Mature Development Systems, Field Proven on Hundreds of Applications”. DDC-I (2020年). 22 April 2020閲覧。
- ^ 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 May 16, 2018閲覧。
- ^ 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(コンピュータ・サイエンシズ・コーポレーション)に移ってからの地位についても論じている。
- ^ “Ed and Kay, JOVIAL Pioneers”. jovial.com. 2021年2月23日閲覧。
- ^ 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.
- ^ 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 January 28, 2015閲覧。.
- ^ 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
- ^ Schachter, Oscar (7 May 2004). Oral history interview with Oscar Schachter. University of Minnesota. p. 17. http://purl.umn.edu/107622.
- ^ “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. (September 1993)
- ^ Rayner, Gordon (December 12, 2014). “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日閲覧。
- ^ Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, United States Navy, (1978)
- ^ 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
- ^ “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 January 28, 2015閲覧。.
- ^ 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
外部リンク
- The Development of Jovial
- MIL-STD-1589C, Military Standard: JOVIAL (J73), United States Department of Defense, (6 Jul 1984), http://everyspec.com/MIL-STD/MIL-STD-1500-1599/download.php?spec=MIL-STD-1589C.014577.pdf
- 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 - YouTube
- “The History of JOVIAL”. California State University. Mar 11, 2022閲覧。