JOVIAL (زبان برنامه‌نویسی) کیست؟ توضیح بده.
JOVIAL یک زبان برنامه‌نویسی سطح بالا است که بر اساس طراحی شده و برای توسعه سیستم‌های تعبیه‌شده تخصیص یافته است (سیستم‌های کامپیوتری تخصصی که برای انجام یک یا چند وظیفه اختصاصی طراحی شده‌اند و معمولاً به عنوان بخشی از یک دستگاه بزرگتر و کامل‌تر که شامل قطعات مکانیکی نیز می‌شود، تعبیه می‌شوند). این زبان یک اصلی و مهم در دهه‌های ۱۹۶۰ و ۱۹۷۰ بود.تاریخچه.JOVIAL به عنوان یک زبان برنامه‌نویسی "سطح بالا" و جدید از سال ۱۹۵۹ توسط تیمی در (SDC) به سرپرستی برای نوشتن نرم‌افزارهای الکترونیک هواپیماهای نظامی توسعه یافت.نام "JOVIAL" مخفف عبارت "نسخه خاص جولز" " از زبان بین‌المللی جبری است؛ زبان بین‌المللی الگوریتمی" (IAL) نامی بود که در اصل برای پیشنهاد شده بود. طبق گفته شوارتز، این زبان در ابتدا "OVIAL" نامیده می‌شد، اما این نام به دلایل مختلفی مورد مخالفت قرار گرفت. سپس "JOVIAL" پیشنهاد شد، بدون اینکه معنی خاصی به "J" نسبت داده شود. به‌طور کمی طنزآمیز، پیشنهاد شد که زبان به نام شوارتز نامگذاری شود، زیرا او رئیس جلسه بود و این نام غیررسمی باقی ماند.در دهه ۱۹۶۰، JOVIAL بخشی از مجموعه "پروژه‌های نظامی L" ایالات متحده بود، به ویژه ( (SACCS))، به دلیل نبود زبان‌های برنامه‌نویسی محاسبات بلادرنگ موجود. حدود ۹۵ درصد از پروژه SACCS، که توسط شرکت بین‌المللی تلفن و تلگراف (ITT) مدیریت می‌شد و نرم‌افزار آن عمدتاً توسط SDC نوشته شده بود، به زبان JOVIAL توسعه یافته بود. این پروژه نرم‌افزاری دو سال به طول انجامید و کمتر از ۱۴۰۰ سال-برنامه‌نویس صرف شد، که کمتر از نصف زمان معادل در پروژه L بود.در اواخر دهه ۱۹۷۰ و اوایل دهه ۱۹۸۰، نیروی هوایی ایالات متحده یک واحد پردازش مرکزی (CPU) استاندارد به نام MIL-STD-1750A را پذیرفت و برنامه‌های JOVIAL بعدی برای آن پردازنده ساخته شدند. چندین فروشنده تجاری کامپایلرها و ابزارهای برنامه‌نویسی مرتبط برای ساخت JOVIAL برای پردازنده‌هایی مانند MIL-STD-1750A را ارائه دادند، از جمله (ACT)، ، 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، ، ، و ، ، و Mac OS X روی PowerPC نیز موجود است. علاوه بر این، که بخش‌هایی از Advanced Computer Techniques را به دست آورده است، همچنان کامپایلرها و ابزارهای مرتبط با JOVIAL را تا آوریل ۲۰۲۰ لیست می‌کند.بیشتر نرم‌افزارهایی که به زبان JOVIAL پیاده‌سازی شده‌اند، هستند و نگهداری آنها به‌طور فزاینده‌ای دشوارتر می‌شود. در دسامبر ۲۰۱۴، گزارش شد که نرم‌افزاری مشتق شده از کد JOVIAL که در دهه ۱۹۶۰ تولید شده بود، در یک خرابی عمده زیرساخت کنترل ترافیک هوایی بریتانیا نقش داشت و آژانسی که از آن استفاده می‌کند، یعنی ، مجبور به آموزش کارکنان فناوری اطلاعات خود در زبان JOVIAL بود تا بتوانند این نرم‌افزار را نگهداری کنند، که قرار نبود تا سال ۲۰۱۶ جایگزین شود.تاثیر.زبان‌هایی که تحت تأثیر JOVIAL قرار گرفته‌اند شامل "CORAL"، ، "زبان برنامه‌نویسی فضایی" (SPL)، و تا حدی CMS-2 هستند. همچنین، یک زیرمجموعه از JOVIAL به نام TINT، مشابه ، در دهه ۱۹۶۰ توسعه یافت.ویژگی‌ها.JOVIAL شامل ویژگی‌هایی است که در ALGOL استاندارد وجود ندارند، مانند آیتم‌ها (که اکنون به عنوان ساختارها شناخته می‌شوند)، آرایه‌هایی از آیتم‌ها، متغیرهای وضعیت (که اکنون به عنوان شناخته می‌شوند) و زبان اسمبلی درون‌خطی.این زبان همچنین امکاناتی برای داده‌های "بسته‌بندی شده" در جداول را فراهم می‌کرد. بسته‌بندی جدول به تخصیص آیتم‌ها در یک ورودی به کلمات ذخیره‌سازی (بیت‌ها در یک واحد داده) اشاره دارد. این امر با توجه به حافظه و ذخیره‌سازی محدود سیستم‌های محاسباتی دوره JOVIAL اهمیت داشت.مخزن ارتباطی (COMPOOL) در JOVIAL مشابه کتابخانه‌های فایل‌های سرآمد (header) در زبان‌هایی مانند PL/I و C است.کاربردها.سیستم‌های برجسته‌ای که از نرم‌افزار جاسازی‌شده JOVIAL استفاده می‌کنند شامل:مثال.مثال زیر از "کتابچه راهنمای برنامه‌نویسی کامپیوتری برای زبان JOVIAL (J73)" گرفته شده است:این مثال یک رویه به نام codice_1 را تعریف می‌کند که یک آرگومان ورودی به نام codice_2 به صورت عدد بدون علامت و یک آرگومان خروجی به نام codice_3 به صورت عدد اعشاری دارد. این رویه در آرایه 1000 عضوی codice_4 جستجو می‌کند تا ورودی‌ای پیدا کند که با codice_2 مطابقت داشته باشد، سپس متغیر اعشاری codice_3 را به عنصر codice_7 با شاخص آرایه مشابه تنظیم می‌کند. اگر عنصر مطابقتی پیدا نشود، مقدار codice_3 به codice_9 تنظیم می‌شود.