JOVIAL (زبان برنامهنویسی)
پارادایم برنامهنویسی | Procedural, imperative, structured |
---|---|
خانواده | ALGOL |
طراحی شده توسط | System Development Corporation |
توسعهدهنده | Software Engineering Associates[۱] |
ظهوریافته در | ۱۹۶۰ |
static, strong, safe, structural | |
دامنه | Lexical |
پیادهسازیهای بزرگ | |
MVS, OpenVMS, macOS, Windows, Linux, SPARC, PowerPC, MIL-STD-1750A, other legacy systems | |
گویش | |
J3, J3B-2, J73 | |
متأثر از | |
ALGOL, SAGE | |
تأثیر گذاشته بر | |
CMS-2, Coral 66, SYMPL |
JOVIAL یک زبان برنامهنویسی سطح بالا است که بر اساس ALGOL 58 طراحی شده و برای توسعه سیستمهای تعبیهشده تخصیص یافته است (سیستمهای کامپیوتری تخصصی که برای انجام یک یا چند وظیفه اختصاصی طراحی شدهاند و معمولاً به عنوان بخشی از یک دستگاه بزرگتر و کاملتر که شامل قطعات مکانیکی نیز میشود، تعبیه میشوند). این زبان یک زبان برنامهنویسی سیستم اصلی و مهم در دهههای ۱۹۶۰ و ۱۹۷۰ بود.[۲]
تاریخچه[ویرایش]
JOVIAL به عنوان یک زبان برنامهنویسی "سطح بالا"[۳]: 1 و جدید از سال ۱۹۵۹ توسط تیمی در شرکت توسعه سیستم (SDC) به سرپرستی جولز شوارتز برای نوشتن نرمافزارهای الکترونیک هواپیماهای نظامی توسعه یافت.[۴]
نام JOVIAL مخفف عبارت نسخه خاص جولز[۵] از زبان بینالمللی جبری است؛ زبان بینالمللی الگوریتمی (IAL) نامی بود که در اصل برای ALGOL 58 پیشنهاد شده بود.[۶] طبق گفته شوارتز، این زبان در ابتدا OVIAL نامیده میشد، اما این نام به دلایل مختلفی مورد مخالفت قرار گرفت. سپس JOVIAL پیشنهاد شد، بدون اینکه معنی خاصی به J نسبت داده شود. بهطور کمی طنزآمیز، پیشنهاد شد که زبان به نام شوارتز نامگذاری شود، زیرا او رئیس جلسه بود و این نام غیررسمی باقی ماند.[۷]
در دهه ۱۹۶۰، JOVIAL بخشی از مجموعه پروژههای نظامی L ایالات متحده بود، به ویژه سیستم کنترل فرماندهی هوایی استراتژیک ITT 465L (پروژه سیستم فرماندهی و کنترل خودکار استراتژیک (SACCS))، به دلیل نبود زبانهای برنامهنویسی محاسبات بلادرنگ موجود. حدود ۹۵ درصد از پروژه SACCS، که توسط شرکت بینالمللی تلفن و تلگراف (ITT) مدیریت میشد و نرمافزار آن عمدتاً توسط SDC نوشته شده بود، به زبان JOVIAL توسعه یافته بود. این پروژه نرمافزاری دو سال به طول انجامید و کمتر از ۱۴۰۰ سال-برنامهنویس صرف شد، که کمتر از نصف زمان معادل در پروژه SAGE L بود.[۸]
در اواخر دهه ۱۹۷۰ و اوایل دهه ۱۹۸۰، نیروی هوایی ایالات متحده یک واحد پردازش مرکزی (CPU) استاندارد به نام MIL-STD-1750A را پذیرفت و برنامههای JOVIAL بعدی برای آن پردازنده ساخته شدند. چندین فروشنده تجاری کامپایلرها و ابزارهای برنامهنویسی مرتبط برای ساخت JOVIAL برای پردازندههایی مانند MIL-STD-1750A را ارائه دادند، از جمله Advanced Computer Techniques (ACT)، TLD Systems، Proprietary Software Systems (PSS) و دیگر موارد.[۹][۱۰]
JOVIAL در سال ۱۹۷۳ با استاندارد MIL-STD-1589 استاندارد شد و در سال ۱۹۸۴ با استاندارد MIL-STD-1589C بازنگری شد. این زبان هنوز برای بهروزرسانی و نگهداری نرمافزار در خودروها و هواپیماهای نظامی قدیمی استفاده میشود. سه گویش رایج در این زمینه مورد استفاده هستند: J3، J3B-2، و J73.
از سال ۲۰۱۰، JOVIAL دیگر توسط دفتر برنامه JOVIAL نیروی هوایی ایالات متحده (JPO) نگهداری و توزیع نمیشود. نرمافزاری که قبلاً توسط JPO توزیع میشد، همچنان از طریق منابع تجاری در شرکت Software Engineering Associates, Inc. (SEA) در دسترس است، همچنین ترکیبات دیگر میزبان/پردازنده هدف شامل Windows، Linux ، SPARC، VAX، 1750A، PowerPC، TI-9989، Zilog Z800x، Motorola 680x0 و IBM System 360، System 370، System z و Mac OS X روی PowerPC نیز موجود است. علاوه بر این، DDC-I که بخشهایی از Advanced Computer Techniques را به دست آورده است، همچنان کامپایلرها و ابزارهای مرتبط با JOVIAL را تا آوریل ۲۰۲۰ لیست میکند.[۲]
بیشتر نرمافزارهایی که به زبان JOVIAL پیادهسازی شدهاند، بحرانی و ماموریتمحور هستند و نگهداری آنها بهطور فزایندهای دشوارتر میشود. در دسامبر ۲۰۱۴، گزارش شد که نرمافزاری مشتق شده از کد JOVIAL که در دهه ۱۹۶۰ تولید شده بود، در یک خرابی عمده زیرساخت کنترل ترافیک هوایی بریتانیا نقش داشت و آژانسی که از آن استفاده میکند، یعنی NATS Holdings، مجبور به آموزش کارکنان فناوری اطلاعات خود در زبان JOVIAL بود تا بتوانند این نرمافزار را نگهداری کنند، که قرار نبود تا سال ۲۰۱۶ جایگزین شود.[۱۱]
تاثیر[ویرایش]
زبانهایی که تحت تأثیر JOVIAL قرار گرفتهاند شامل CORAL، SYMPL، زبان برنامهنویسی فضایی (SPL)، و تا حدی CMS-2 هستند.[۱۲] همچنین، یک زیرمجموعه تعاملی از JOVIAL به نام TINT، مشابه JOSS، در دهه ۱۹۶۰ توسعه یافت.[۷]
ویژگیها[ویرایش]
JOVIAL شامل ویژگیهایی است که در ALGOL استاندارد وجود ندارند، مانند آیتمها (که اکنون به عنوان ساختارها شناخته میشوند)، آرایههایی از آیتمها، متغیرهای وضعیت (که اکنون به عنوان شمارشها شناخته میشوند) و زبان اسمبلی درونخطی.[۱۳]
این زبان همچنین امکاناتی برای دادههای "بستهبندی شده" در جداول را فراهم میکرد. بستهبندی جدول به تخصیص آیتمها در یک ورودی به کلمات ذخیرهسازی (بیتها در یک واحد داده) اشاره دارد. این امر با توجه به حافظه و ذخیرهسازی محدود سیستمهای محاسباتی دوره JOVIAL اهمیت داشت.
مخزن ارتباطی (COMPOOL) در JOVIAL مشابه کتابخانههای فایلهای سرآمد (header) در زبانهایی مانند PL/I و C است.
کاربردها[ویرایش]
سیستمهای برجستهای که از نرمافزار جاسازیشده JOVIAL استفاده میکنند شامل:
- ماهواره ارتباطی Milstar
- موشک کروز پیشرفته
- بمبافکنهای B-52، B-1B،[۱۴] B-2
- هواپیماهای ترابری C-130، C-141، C-17
- هواپیماهای جنگنده F-111، F-15، F-117، F-16
- LANTIRN
- هواپیمای U-2
- هواپیماهای Boeing E-3 Sentry AWACS (قبل از Block 40/45)
- رزمناوهای Navy Aegis
- سیستم راکتانداز چندگانه ارتش (MLRS)
- هلیکوپترهای Sikorsky UH-60 Black Hawk ارتش
- موتورهای جت F100، F117، F119
- سیستم دفاع هوایی و کنترل NORAD (سیستم Hughes HME-5118ME)
- سیستم دفاع هوایی زمینی ناتو (NADGE)
- موتورهای موشکی RL10
- کنترل ترافیک هوایی سیستم هوایی ملی (NAS) مدنی
- سیستمهای رادار هوابرد APG-70، APG-71، و APG-73[۱۵]
مثال[ویرایش]
مثال زیر از کتابچه راهنمای برنامهنویسی کامپیوتری برای زبان JOVIAL (J73)[۳]:12 گرفته شده است:
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
این مثال یک رویه به نام RETRIEVE
را تعریف میکند که یک آرگومان ورودی به نام CODE
به صورت عدد بدون علامت و یک آرگومان خروجی به نام VALUE
به صورت عدد اعشاری دارد. این رویه در آرایه 1000 عضوی TABCODE
جستجو میکند تا ورودیای پیدا کند که با CODE
مطابقت داشته باشد، سپس متغیر اعشاری VALUE
را به عنصر TABVALUE
با شاخص آرایه مشابه تنظیم میکند. اگر عنصر مطابقتی پیدا نشود، مقدار VALUE
به 99999.0-
تنظیم میشود.
منابع[ویرایش]
- ↑ "Software Engineering Associates, Inc. (SEA)".
- ↑ ۲٫۰ ۲٫۱ "Mature Development Systems, Field Proven on Hundreds of Applications". DDC-I. Phoenix, Arizona. 2020. Retrieved 22 April 2020.
- ↑ ۳٫۰ ۳٫۱ Softech, Inc. (June 1981). Computer Programming Manual for the JOVIAL (J73) Language (PDF). Rome, New York: Rome Air Development Center. p. 1. Archived (PDF) from the original on July 29, 2018. Retrieved May 16, 2018.
- ↑ Schwartz, Jules I. (7 April 1989). "Oral History interview with Jules I. Schwartz". Charles Babbage Institute. 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 networks, 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.
- ↑ "Ed and Kay, JOVIAL Pioneers". jovial.com. Retrieved 2021-02-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. S2CID 1427629.
- ↑ ۷٫۰ ۷٫۱ Schwartz, Jules I. (August 8, 1978). "The Development of Jovial" (PDF). ACM SIGPLAN Notices. 13 (8): 203. doi:10.1145/960118.808385. S2CID 17913060. Retrieved 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.
- ↑ Schachter, Oscar (7 May 2004). "Oral history interview with Oscar Schachter". Charles Babbage Institute. University of Minnesota: 17.
- ↑ "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. September 1993. pp. 21–24.
- ↑ Rayner, Gordon (December 12, 2014). "UK flights chaos: Air traffic control computers using software from the 1960s". Daily Telegraph. Retrieved 2020-04-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.
- ↑ "Jovial to smooth U.S. Air Force shift to Ada". Defense Electronics. March 1, 1984. Archived from the original on 2012-10-12. Retrieved January 28, 2015.
- ↑ "AN/APG-73, Warfighter's Encyclopedia". Archived from the original on 2004-11-05.
پیوند به بیرون[ویرایش]
- The Development of Jovial
- "MIL-STD-1589C, Military Standard: JOVIAL (J73)" (PDF). United States Department of Defense. 6 Jul 1984.
- April 2006 archive of the JOVIAL Program Office
- Page on Jules Schwartz, including film of a humorous talk on the development of 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)
- Archived at Ghostarchive and the Wayback Machine: Schwartz, Jules. Jules Schwartz lecture on JOVIAL (video) (به انگلیسی). YouTube. Retrieved 2020-04-22.
- Hogan, Michael Olin. "The History of JOVIAL". California State University. Retrieved Mar 11, 2022.