Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
JOVIAL
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Programming language}} {{Infobox programming language | name = JOVIAL | logo = <!-- Filename only --> | logo caption = | screenshot = <!-- Filename only --> | screenshot caption = | paradigms = [[Procedural programming|Procedural]], [[Imperative programming|imperative]], [[Structured programming|structured]] | family = [[ALGOL]] | designer = [[System Development Corporation]] | developer = Software Engineering Associates<ref>{{cite web |url=http://www.seadeo.com/ |title=Software Engineering Associates, Inc. (SEA) |access-date=2006-08-17 |archive-date=2019-12-21 |archive-url=https://web.archive.org/web/20191221091502/http://www.seadeo.com/ |url-status=dead }}</ref> | released = {{Start date and age|1960}} | latest release version = | latest release date = <!-- {{Start date and age|yyyy|mm|dd|df=yes}} --> | typing = [[Type system#Type checking|static]], [[Strong and weak typing|strong]], [[Type system#Safely and unsafely typed systems|safe]], [[Structural type system|structural]] | scope = [[Scope (computer science)|Lexical]] | implementations = [[MVS]], [[OpenVMS]], [[macOS]], [[Microsoft Windows|Windows]], [[Linux]], [[SPARC]], [[PowerPC]], [[MIL-STD-1750A]], other legacy systems | dialects = J3, J3B-2, J73 | influenced by = [[ALGOL]], [[Semi-Automatic Ground Environment|SAGE]] | influenced = [[CMS-2 (programming language)|CMS-2]], [[Coral 66]], [[SYMPL]] | license = | website = }} '''JOVIAL''' is a [[high-level programming language]] based on [[ALGOL 58]], specialized for developing [[embedded system]]s (specialized computer systems designed to perform one or a few dedicated functions, usually embedded as part of a larger, more complete device, including mechanical parts). It was a major [[system programming language]] through the 1960s and 1970s.<ref name=":0" /> ==History== [[File:Computer Programming Manual for the Jovial (J73) Language.djvu|thumb|left|upright=0.75|Computer Programming Manual for the Jovial (J73) Language]] JOVIAL was developed as a new "high-order"<ref name=jovialmanual>{{cite book |last=Softech, Inc. |title=Computer Programming Manual for the JOVIAL (J73) Language |date=June 1981 |publisher=Rome Air Development Center |location=Rome, New York |page=1 |url=http://apps.dtic.mil/dtic/tr/fulltext/u2/a101061.pdf |access-date=May 16, 2018|url-status=live |archive-url=https://web.archive.org/web/20180729170726/http://www.dtic.mil/dtic/tr/fulltext/u2/a101061.pdf|archive-date=July 29, 2018}}</ref>{{rp|1}} [[programming language]] starting in 1959 by a team at [[System Development Corporation]] (SDC) headed by [[Jules Schwartz]] to compose software for the electronics of military aircraft.<ref>{{cite journal |url=http://purl.umn.edu/107628 |title=Oral History interview with Jules I. Schwartz |last=Schwartz |first=Jules I. |website=[[Charles Babbage Institute]] |date=7 April 1989 |publisher=University of Minnesota}} Schwartz worked for the [[RAND Corporation]] on various defense related projects: especially [[Semi-Automatic Ground Environment]] (SAGE) and [[JOHNNIAC]]. When RAND organized the [[System Development Corporation]], Schwartz went to the new company. For most of the interview, Schwartz describes his association with SAGE, his part in the computer laboratory work on [[time-sharing]] for the [[AN/FSQ-32]] computer, [[computer network]]s, control system projects (such as TDMS), and his interactions with [[J. C. R. Licklider]], [[Lawrence G. Roberts]], and [[Robert Saxton Taylor]]. He discusses his later position at [[Computer Sciences Corporation]].</ref> The name ''JOVIAL'' is an acronym for ''Jules' Own Version''<ref>{{Cite web|title=Ed and Kay, JOVIAL Pioneers|url=https://jovial.com/JOVIAL/index.html|access-date=2021-02-23|website=jovial.com}}</ref> ''of the International Algebraic Language''; ''International Algorithmic Language'' (IAL) was a name proposed originally for [[ALGOL 58]].<ref>{{Cite journal|last=Shaw|first=Christopher J.|date=1963-12-01|title=A specification of JOVIAL|url=https://doi.org/10.1145/763973.763978|journal=Communications of the ACM|volume=6|issue=12|pages=721โ736|doi=10.1145/763973.763978|s2cid=1427629|issn=0001-0782|doi-access=free}}</ref> According to Schwartz, the language was originally called ''OVIAL'', but this was opposed for various reasons. ''JOVIAL'' was then suggested, with no meaning attached to the ''J''. Somewhat jokingly it was suggested that the language be named after Schwartz, since he was the meeting [[chairperson]], and this unofficial name stuck.<ref name=Schwartz>{{cite journal |last=Schwartz |first=Jules I. |title=The Development of Jovial |journal=ACM SIGPLAN Notices |date=August 8, 1978 |volume=13 |issue=8 |page=203 |url=http://jovial.com/documents/p203-schwartz-jovial.pdf |access-date=January 28, 2015 |doi=10.1145/960118.808385|s2cid=17913060 }}</ref> During the 1960s, JOVIAL was a part of the US Military ''L-project'' series, particularly the [[ITT 465L Strategic Air Command Control System]] (the [[Strategic Automated Command and Control System]] (SACCS) project), due to a lack of [[real-time computing]] programming languages available. Some 95 percent of the SACCS project, managed by [[ITT Inc.|International Telephone & Telegraph]] (ITT) with software mainly written by SDC, was written in JOVIAL. The software project took two years and fewer than 1,400 programmer years, less than half of the equivalent time in the [[Semi-Automatic Ground Environment|SAGE]] L-project.<ref>{{cite book |last=Campbell-Kelly |first=Martin |date=2003 |title=From airline reservations to Sonic the Hedgehog: a history of the software industry |url=https://archive.org/details/fromairlinereser00camp_410 |url-access=limited |publisher=[[MIT Press]] |location=Cambridge, Massachusetts |pages=[https://archive.org/details/fromairlinereser00camp_410/page/n62 46]-7 |isbn=0-262-03303-8}}</ref> [[Image:Advanced Computer Techniques Ada Jovial Fortran 1750A pin button.jpg|thumb|right|upright=0.75|Pin button showing JOVIAL as one of the languages that [[Advanced Computer Techniques]] made cross-compilers for]] During the late 1970s and early 1980s, the [[United States Air Force]] adopted a standardized [[central processing unit]] (CPU), the [[MIL-STD-1750A]], and subsequent JOVIAL programs were built for that processor. Several commercial vendors provided [[compiler]]s and related [[programming tool]]s to build JOVIAL for processors such as the MIL-STD-1750A, including [[Advanced Computer Techniques]] (ACT), [[TLD Systems]], Proprietary Software Systems (PSS), and others.<ref>{{cite journal |url=http://purl.umn.edu/107622 |title=Oral history interview with Oscar Schachter |last=Schachter |first=Oscar |page=17 |website=[[Charles Babbage Institute]] |date=7 May 2004 |publisher=University of Minnesota}}</ref><ref>{{cite news |title=JOVIAL (J73) and MIL-STD-1750A ISA Software Support Tools |work=AdaโJOVIAL Newsletter |publisher=High Order Language Control Facility, Wright-Patterson AFB, U.S. Air Force |date=September 1993 |pages=21โ24}}</ref> JOVIAL was standardized during 1973 with MIL-STD-1589 and was revised during 1984 with ''MIL-STD-1589C''. It is still used to update and maintain software on older military vehicles and aircraft. There are three dialects in common use: J3, J3B-2, and J73. {{As of|2010}}, JOVIAL is no longer maintained and distributed by the USAF JOVIAL Program Office (JPO). Software formerly distributed by the JPO is still available through commercial resources at Software Engineering Associates, Inc., (SEA) as are other combinations of host/target processors including [[Microsoft Windows|Windows]], [[Linux]], [[Mac OS X]] on [[PowerPC]], [[SPARC]], [[VAX]], [[1750A]], [[PowerPC]], [[Texas Instruments TMS9900|TI-9989]], [[Zilog Z8000|Zilog Z800x]], [[Motorola 68000 family|Motorola 680x0]], and [[IBM System 360]], [[IBM System/370|System 370]], and [[IBM System z|System z]]. Further, [[DDC-I]], which acquired parts of Advanced Computer Techniques, also lists JOVIAL compilers and related tools {{as of|2020|04|lc=y}}.<ref name=":0">{{cite web |url=https://www.ddci.com/products_legacy/ |title=Mature Development Systems, Field Proven on Hundreds of Applications |author=<!-- Unstated. --> |date=2020 |website=DDC-I |location=Phoenix, Arizona |access-date=22 April 2020}}</ref> Most software implemented in JOVIAL is [[mission critical]], and maintenance is growing more difficult. In December 2014, it was reported that software derived from JOVIAL code produced in the 1960s was involved in a major failure of the [[United Kingdom]]'s [[air traffic control]] infrastructure, and that the agency that uses it, [[NATS Holdings]], was having to train its IT staff in JOVIAL so they could maintain this software, which was not scheduled for replacement until 2016.<ref>{{cite news |url=https://www.telegraph.co.uk/news/aviation/11291495/UK-flights-chaos-Air-traffic-control-computers-using-software-from-the-1960s.html |title=UK flights chaos: Air traffic control computers using software from the 1960s |last=Rayner |first=Gordon |date=December 12, 2014 |newspaper=[[Daily Telegraph]] |access-date=2020-04-21}}</ref> ==Influence== Languages influenced by JOVIAL include ''[[CORAL 66|CORAL]]'', ''[[SYMPL]]'', ''Space Programming Language'' (SPL), and to some extent ''[[CMS-2 (programming language)|CMS-2]]''.<ref name=NAVEDTRA_10088-B>{{citation |title=Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B |author=<!-- Unstated, human name --> |publisher=[[United States Navy]] |date=1978}}</ref> An [[Interactive computing|interactive]] subset of JOVIAL called TINT, similar to [[JOSS]] was developed in the 1960s.<ref name=Schwartz /> ==Features== JOVIAL includes features not found in standard ALGOL, such as items (now called [[Record (computer science)|structure]]s), [[Array data type|arrays]] of items, status variables (now called [[Enumerated type|enumeration]]s) and [[Inline assembler|inline assembly language]].<ref>{{cite book |last1=Halang |first1=Wolfgang A. |last2=Stoyenko |first2=Alexander D. |title=Constructing Predictable Real Time Systems |year=1991 |publisher=Springer Verlag |isbn=978-1-4615-4032-8 |page=31 |url=https://www.springer.com/computer/communication+networks/book/978-0-7923-9202-6?token=gbgen&wt_mc=Google-_-Book%20Search-_-Springer-_-EN}}</ref> It also included provisions for "packed" data within tables. Table packing refers to the allocation of items within an entry to words of storage (bits in a unit of data). This was important with respect to the limited memory and storage of the computing systems of the JOVIAL era. The Communication Pool (COMPOOL) in Jovial is similar to libraries of header files for languages such as PL/I and C. ==Applications== Notable systems using embedded JOVIAL software include: *[[Milstar]] communications satellite *[[AGM-129 ACM|Advanced Cruise Missile]] *[[Boeing B-52 Stratofortress|B-52]], [[Rockwell B-1 Lancer#B-1B program|B-1B]],<ref>{{cite journal |author=<!-- Human name --> |title=Jovial to smooth U.S. Air Force shift to Ada |journal=Defense Electronics |date=March 1, 1984 |url=http://business.highbeam.com/438317/article-1G1-3161147/jovial-smooth-us-air-force-shift-ada |access-date=January 28, 2015 |url-status=dead |archive-url=https://web.archive.org/web/20121012015607/http://business.highbeam.com/438317/article-1G1-3161147/jovial-smooth-us-air-force-shift-ada |archive-date=2012-10-12 }}</ref> [[Northrop Grumman B-2 Spirit|B-2]] bombers *[[Lockheed C-130 Hercules|C-130]], [[Lockheed C-141 Starlifter|C-141]], [[Boeing C-17 Globemaster III|C-17]] [[Military transport aircraft|transport aircraft]] *[[General Dynamics F-111 Aardvark|F-111]], [[McDonnell Douglas F-15 Eagle|F-15]], [[General Dynamics F-16 Fighting Falcon|F-16]] (prior to Block 50), [[Lockheed F-117 Nighthawk|F-117]] fighter aircraft *[[LANTIRN]] *[[Lockheed U-2|U-2]] aircraft *[[Boeing E-3 Sentry]] [[Airborne Early Warning and Control|AWACS]] aircraft (Prior to Block 40/45) *Navy [[Aegis Combat System|Aegis]] cruisers *Army Multiple Launch Rocket System ([[M270 Multiple Launch Rocket System|MLRS]]) *Army [[Sikorsky UH-60 Black Hawk]] helicopters *[[Pratt & Whitney F100|F100]], [[Pratt & Whitney PW2000|F117]], [[Pratt & Whitney F119|F119]] [[jet engine]]s *[[NORAD]] air defense & control system (Hughes HME-5118ME system) *[[NATO Integrated Air Defense System|NATO Air Defence Ground Environment]] (NADGE) system *[[RL10]] rocket engines *Civil NAS ([[National Airspace System]]) Air Traffic Control * [[APG-70]], [[APG-71]], and [[APG-73]] airborne [[radar]] systems<ref>{{cite web |url=https://wrc.navair-rdte.navy.mil/warfighter_enc/weapons/SensElec/RADAR/anapg73.htm |title=AN/APG-73, Warfighter's Encyclopedia |url-status=dead |archive-url=https://web.archive.org/web/20041105105841/https://wrc.navair-rdte.navy.mil/warfighter_enc/weapons/SensElec/RADAR/anapg73.htm |archive-date=2004-11-05}}</ref> ==Example== The following example is taken from ''Computer Programming Manual for the JOVIAL (J73) Language.{{r|jovialmanual|p=12}} <syntaxhighlight lang="text"> 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 </syntaxhighlight> This example defines a procedure named <code>RETRIEVE</code> which takes an unsigned integer input argument <code>CODE</code> and a floating-point output argument <code>VALUE</code>. It searches the 1000-element array <code>TABCODE</code> for an entry that matches <code>CODE</code>, and then sets the floating-point variable <code>VALUE</code> to the element of array <code>TABVALUE</code> having the same matching array index. If no matching element is found, <code>VALUE</code> is set to <code>โ99999.0</code>. == References == {{Reflist}} == External links == *[http://jovial.com/documents/p203-schwartz-jovial.pdf The Development of Jovial] * {{cite web |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}} * [https://web.archive.org/web/20090423065636/http://www.jovial.hill.af.mil/ April 2006 archive of the JOVIAL Program Office] * [https://web.archive.org/web/20070905194139/http://rocky.dlib.vt.edu/~cs4624/spring_2001/history_of_prog_lang/schwartz.html Page on Jules Schwartz], including film of a humorous talk on the development of JOVIAL{{Dead link|date=October 2010}} * [https://web.archive.org/web/20061214090232/http://dodssp.daps.dla.mil/ DODSSP] U.S. Department of Defense Single Stock Point for Military Specifications, Standards and Related Publications * [http://www.seadeo.com/ Software Engineering Associates] {{Webarchive|url=https://web.archive.org/web/20191221091502/http://www.seadeo.com/ |date=2019-12-21 }} * [https://web.archive.org/web/20141031215637/http://www.ddci.com/products_DJCS.php DDC-I, Inc.: DDC-I JOVIAL Compiler System (DJCS)] * Archived at [https://ghostarchive.org/varchive/youtube/20211211/3Z5j7nydZcs Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20151017111326/https://www.youtube.com/watch?v=3Z5j7nydZcs Wayback Machine]{{cbignore}}: {{cite AV media |url=https://www.youtube.com/watch?v=3Z5j7nydZcs |title=Jules Schwartz lecture on JOVIAL |medium=video |language=en |last=Schwartz |first=Jules |publisher=YouTube |access-date=2020-04-22}}{{cbignore}} * {{cite web |last1=Hogan |first1=Michael Olin |title=The History of JOVIAL |url=https://scholarworks.calstate.edu/downloads/6969z3909 |website=California State University |access-date=Mar 11, 2022}} {{ALGOL programming}} {{DEFAULTSORT:Jovial}} [[Category:Procedural programming languages]] [[Category:Avionics programming languages]] [[Category:Systems programming languages]] [[Category:High Integrity Programming Language]] [[Category:ALGOL 58 dialect]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:ALGOL programming
(
edit
)
Template:As of
(
edit
)
Template:Cbignore
(
edit
)
Template:Citation
(
edit
)
Template:Cite AV media
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite news
(
edit
)
Template:Cite web
(
edit
)
Template:Dead link
(
edit
)
Template:Infobox programming language
(
edit
)
Template:R
(
edit
)
Template:Reflist
(
edit
)
Template:Rp
(
edit
)
Template:Short description
(
edit
)
Template:Webarchive
(
edit
)