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] 。
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のために設計された。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ソフトウェアを使用した主要なシステムには以下のものがある。
以下の例は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