پرش به محتوا

JOVIAL (زبان برنامه‌نویسی)

از ویکی‌پدیا، دانشنامهٔ آزاد
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 (J73)

JOVIAL به عنوان یک زبان برنامه‌نویسی "سطح بالا"[۳]: 1  و جدید از سال ۱۹۵۹ توسط تیمی در شرکت توسعه سیستم (SDC) به سرپرستی جولز شوارتز برای نوشتن نرم‌افزارهای الکترونیک هواپیماهای نظامی توسعه یافت.[۴]

نام JOVIAL مخفف عبارت نسخه خاص جولز[۵] از زبان بین‌المللی جبری است؛ زبان بین‌المللی الگوریتمی (IAL) نامی بود که در اصل برای ALGOL 58 پیشنهاد شده بود.[۶] طبق گفته شوارتز، این زبان در ابتدا OVIAL نامیده می‌شد، اما این نام به دلایل مختلفی مورد مخالفت قرار گرفت. سپس JOVIAL پیشنهاد شد، بدون اینکه معنی خاصی به J نسبت داده شود. به‌طور کمی طنزآمیز، پیشنهاد شد که زبان به نام شوارتز نامگذاری شود، زیرا او رئیس جلسه بود و این نام غیررسمی باقی ماند.[۷]

در دهه ۱۹۶۰، JOVIAL بخشی از مجموعه پروژه‌های نظامی L ایالات متحده بود، به ویژه سیستم کنترل فرماندهی هوایی استراتژیک ITT 465L (پروژه سیستم فرماندهی و کنترل خودکار استراتژیک (SACCS))، به دلیل نبود زبان‌های برنامه‌نویسی محاسبات بلادرنگ موجود. حدود ۹۵ درصد از پروژه SACCS، که توسط شرکت بین‌المللی تلفن و تلگراف (ITT) مدیریت می‌شد و نرم‌افزار آن عمدتاً توسط SDC نوشته شده بود، به زبان JOVIAL توسعه یافته بود. این پروژه نرم‌افزاری دو سال به طول انجامید و کمتر از ۱۴۰۰ سال-برنامه‌نویس صرف شد، که کمتر از نصف زمان معادل در پروژه SAGE L بود.[۸]

دکمه پین نشان‌دهنده JOVIAL به عنوان یکی از زبان‌هایی که Advanced Computer Techniques برای آن کراس-کامپایلر ساخته است.

در اواخر دهه ۱۹۷۰ و اوایل دهه ۱۹۸۰، نیروی هوایی ایالات متحده یک واحد پردازش مرکزی (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 استفاده می‌کنند شامل:


مثال[ویرایش]

مثال زیر از کتابچه راهنمای برنامه‌نویسی کامپیوتری برای زبان 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- تنظیم می‌شود.

منابع[ویرایش]

  1. "Software Engineering Associates, Inc. (SEA)".
  2. ۲٫۰ ۲٫۱ "Mature Development Systems, Field Proven on Hundreds of Applications". DDC-I. Phoenix, Arizona. 2020. Retrieved 22 April 2020.
  3. ۳٫۰ ۳٫۱ 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.
  4. 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.
  5. "Ed and Kay, JOVIAL Pioneers". jovial.com. Retrieved 2021-02-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. S2CID 1427629.
  7. ۷٫۰ ۷٫۱ 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.
  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.
  9. Schachter, Oscar (7 May 2004). "Oral history interview with Oscar Schachter". Charles Babbage Institute. University of Minnesota: 17.
  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. September 1993. pp. 21–24.
  11. Rayner, Gordon (December 12, 2014). "UK flights chaos: Air traffic control computers using software from the 1960s". Daily Telegraph. Retrieved 2020-04-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.
  14. "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.
  15. "AN/APG-73, Warfighter's Encyclopedia". Archived from the original on 2004-11-05.

پیوند به بیرون[ویرایش]