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

از ویکی‌پدیا، دانشنامهٔ آزاد
CMS-2
CMS-2Y Programmers Reference Manual
پارادایم برنامه‌نویسیImperative
طراحی شده توسطRAND, Intermetrics
توسعه‌دهندهComputer Sciences Corporation
ظهوریافته در1968
متأثر از
CS-1, Fortran, JOVIAL and PL/I[۱]

CMS-2 یک زبان برنامه‌نویسی سیستم‌های جاسازی شده‌است که به وسیلهٔ نیروی دریایی ایالات متحده استفاده شده‌است.[۲] آن اوایل تلاش به منظور توسعه یک زبان برنامه‌نویسی کامپیوتری سطح بالای استاندارد شده برای بهبود کد قابل حمل و استفاده مجدد انجام می‌شد. CMS-2 درجه اول برای سیستم‌های داده‌های تاکتیکیروی نی دریایی ایالات متحده توسعه یافت. (NTDS).[۱]

CMS-2 توسط شرکت رند در اوایل دهه ۱۹۷۰ توسعه داده شد و مخفف "سیستم نظارت کامپایلر" است. بعد از نام "CMS-2" یک حرف قرار می‌گیرد که تعیین کنندهٔ نوع سیستم هدف است. برای مثال CMS_2M پردازنده‌های ۱۶ بیتی نیروی دریایی را هدف قرار می‌دهد، مانند /AYK-14.[۲]

تاریخچه[ویرایش]

CMS-2 برای FCPCPAC (ناوگان برنامه‌نویسی کامپیوتر مرکز اقیانوس آرام) در San Diego,CA توسعه داده شد و توسط تشکیلات علوم کامپیوتر در سال ۱۹۶۸ با کمک طراحی از Intermetrics پیاده‌سازی شد. این زبان ادامه پیدا کرد تا مورد توسعه قرار گرد و در نهایت تعدادی از کامپیوترها را پشتیبانی کرد از جمله کامپیوترهای AN/UYK-7 و AN/UYK-43 و UYK-20 و UYK-44.[۳][۴]

ویژگی‌های زبان[ویرایش]

CMS-2 برای تشویق برنامه ماژولار، اجازهٔ کامپایل مستقل بخش‌های یک سیستم کامل طراحی شد. این زبان توضیح گرا است. منبع به شکل آزاد است و ممکن است برای برنامه‌نویسی راحت سازماندهی شود. انواع داده‌ها شامل اعداد ثابت، اعداد ممیز شناور، بولی، حروف و وضعیت است. ارجاع مستقیم، دستکاری حروف و های رشته های بیتی مجاز است. کد نمادین دستگاه ممکن است شامل کدی به عنوان کد مستقیم باشد.[۱]

ساختار برنامه[ویرایش]

یک برنامهٔ CMS-2 تشکیل شده از بخش‌ها است. بخش‌ها ساخته شده از نمادها هستند که به وسیلهٔ یک جداکننده از هم جدا شده‌اند. این دسته از نمادها عبارتند از عملگرها، شناسه‌ها و ثابت‌ها. عملگرها شکل‌های اولیهٔ زبان هستند که به وسیلهٔ کامپایلر برای یک عمل خاص یا تعریفی خاص در یک برنامه اختصاص داده شده‌اند. شناسه‌ها نام‌های منحصر به فردی هستند که توسط برنامه‌نویس برای داده‌های بخش‌ها، عناصر برنامه و برچسب‌های بخش تخصیص می‌یابند. ثابت‌ها مقدارهای مشخص شده‌ای هستند که ممکن است عددی، رشته‌های Hollerith، مقدارهای وضعیت‌ها یا بولی باشد.

بخش‌های CMS-2 به شکل آزاد هستند و با یک علامت دلار خاتمه می‌یابند. یک برچسب بخش ممکن است در ابتدای توضیحات برای ارجاع به آن قرار داده شود.

یک برنامهٔ منبع CMS-2 از دو نوع توضیحات تشکیل شده‌است. بخش‌های اعلانی اطلاعات کنترلی اساسی را برای کامپایلر محیا می‌کند و ساختار داده‌های مرتبط با یک برنامهٔ خاص را تعریف می‌کند. بخش‌های پویا باعث می‌شوند که کامپایلر دستورالعمل‌های اجرایی دستگاه را تولید کند.

بخش‌های اعلانی که داده‌ها را برای یک برنامه تعریف می‌کنند در واحدهایی دسته‌بندی می‌شوند که طراحی‌های داده‌ها نامیده می‌شوند. طراحی‌های داده‌ها متشکل از تعریف‌های دقیق برای مناطق ذخیره‌سازی داده‌های موقتی و دائم، ورودی‌ها، خروجی‌ها و واحدهای خاص داده‌ها است. بخش‌های پویا که بر روی داده‌ها عمل می‌کنند ویا محاسبات را انجام می‌دهند به صورت متدها دسته‌بندی می‌شوند. طراحی‌های داده و متدها بار دیگر به صورت عناصر سیستم یک برنامهٔ CMS-2 دسته‌بندی می‌شوند. کامپایلر عناصر سیستم را به یک سیستم زمان کامپایل ترکیب می‌کند. یک سیستم زمان کامپایل مکن است مستقل یا بخشی از برنامهٔ بزرگتر باشد.[۱]

بخش‌های اعلانی داده‌ها[ویرایش]

بخش‌های اعلانی داده‌ها اطلاعات مربوط به تعریف عناصر داده‌ها را در اختیار کامپایلر قرار می‌دهد. آن‌ها فرمت، ساختار و ترتیب عناصر را در یک سیستم زمان کامپایل تعریف می‌کنند. سه نوع اصلی داده‌ها عبارت اند از متغیرها، سوئیچ‌ها و مجموعه‌ها.[۱]

سوئیچ‌ها[ویرایش]

سوئیچ‌ها برای انتقال کنترل برنامه به یک مکان خاص در سیستم زمان کامپایل مورد استفاده قرار می‌گیرند. آن‌ها شامل یک مجموعه از شناسه‌ها یا نقاط سوئیچ کردن هستند که انتقالات برنامه و شاخه‌ها را تسهیل می‌کنند. سوئیچ آدرس برنامهٔ یک برچسب بخش یا نام متد را نشان می‌دهد.

متغیرها[ویرایش]

یک متغیر یک تکه از داده‌ها است. ممکن است شامل یک بیت، چندین بیت یا چندین کلمه باشد. ممکن است یک مقداری در زمان تعریف متغیر به آن اختصاص داده شود. متغیرها ممکن است یک مقدار ثابت یا یک مقدار قابل تغییر را در خود نگه دارند. انواع داده شامل اینتیجر، اعداد ممیز شناور، اعداد ثابت، رشته‌های حروف Hollerith، وضعیت یا بولی باشند.

مجموعه‌ها[ویرایش]

جدول‌ها مجموعه‌های مرتب اطلاعات ساخت یافته یکسان را نگه می‌دارد. واحد متداول داده‌ها در یک جدول یک آیتم[۱] است. آیتم‌ها ممکن است به فیلدها تقسیم شوند که کوچکترین قسمت یک جدول هستند. نوع داده‌های مجاز در فیلدها عبارتند از اینتیجر، اعداد ثابت، اعداد ممیز شناور، رشته‌های حروف Hollerith، وضعیت یا بولی. یک آرایه یک توسعه از مفهوم جدول است. واحد ساختاری اصلی یک آرایه، آیتم است. آیتم‌های آرایه شامل فیلدهایی است که با برنامه‌نویس تعریف می‌شوند.

بخش‌های پویا[ویرایش]

بخش‌های پویا عملیات پردازشی را مشخص می‌کنند و در نتیجه کد اجرایی را به وسیله کامپایلر تولید می‌کننند. یک بخش پویا شامل یک عملگر است که به وسیلهٔ یک لیست از عملوندها و عملگرهای اضافی ای تعیب می‌شود. یک عملوند ممکن است یک نام تنها، یک ثابت، یک ارجاع به عناصر داده یا یک عبارت باشد.[۱]

عملگرهای بخش[ویرایش]

عملگرهای اصلی CMS-2 در زیر آمده‌اند.

عملگر نقش
SET محاسبات را انجام می‌دهد یا برای تخصیص مقدار استفاده می‌شود
SWAP محتوای دو واحد داده را جابه‌جا می‌کند
GOTO جریان اجرایی یک برنامه را تعییر می‌دهد یا یک بخش سوئیچ را صدا می‌زند
IF یک مقایسه یا عبارت بولی را برای اجرای شرطی بیان می‌کند
VARY یک چرخهٔ برنامه را ایجاد می‌کند
FIND یک جدول را برای داده‌ای جستجو می‌کند

عملگرهای ویژه[ویرایش]

عملگرهای ویژه ارجاع به ساختارهای داده و عملیات بر روی آن‌ها را تسهیل می‌کند.[۱]

اپراتور تابع
BIT به یک رشته از بیت‌ها در یک عنصر داده ارجاع می‌دهد
CHAR به یک رشته کاراکتر ارجاع می‌دهد
CORAD به یک آدرس هسته ارجاع می‌دهد
ABS مقدار مطلق یک عبارت را به دست می‌آورد
COMP مکمل یک عبارت بولی

برنامه ساختار اعلان‌ها[ویرایش]

بخش‌های پویا توصیف کنندهٔ عملیات پردازش یک برنامه دسته‌بندی شده را به بلوک‌های بخش‌هایی به نام متدها هستند.[۱]

آغاز حائل پایان حائل هدف
سیستم پایان-سیستم یک سیستم زمان کامپایل را حائل می‌شود
SYS-DD پایان-SYS-DD Delimits یک سیستم طراحی داده در سیستم کامپایل شده
SYS-مجموعه مقالات پایان-SYS-مجموعه مقالات Delimits یک سیستم متدی در یک سیستم زمان کامپایل
LOC-DD پایان-LOC-DD Delimits محلی طراحی داده‌ها در یک سیستم روش
روش پایان-مجموعه مقالات Delimits یک متد در یک متد سیستم
EXEC-مجموعه مقالات پایان-مجموعه مقالات Delimits یک روش وظیفه-حالت در یک متد سیستم(XCMS-2 تنها، تنها به نام از اجرایی-دولت روش)
تابع END-FUNCTION Delimits یک تابع در متد سیستم
SYS-PROC-REN پایان-SYS-PROC Delimits یک متد سیستم reentrant در یک سیستم زمان کامپایل(XCMS-2)
AUTO-DD پایان-AUTO-DD Delimits ناحیهٔ داده پویا در یک متد سیستم reentrant است که باید هر دفعه اختصاص داده شود. متد سیستم reentrant برای اجرا آغاز می‌شود (XCMS-2)
HEAD END-HEAD Delimits یک بسته هدر در یک سیستم زمان کامپایل

ورودی/خروجی سطح بالای بخش‌ها[ویرایش]

ورودی/خروجی بخش‌ها ارتباط با دستگاه‌های سخت‌افزاری را در حالی که در محیط غیر بلادرنگ در یک سیستم نظارتی در حال اجرا است را مهیا می‌کند.[۱]

عملگر تابع
FILE محیط و بقیهٔ اطلاعات مورد نیاز برای یک ورودی و خروجی را تعریف می‌کند
OPEN کارهای عادی I/O را مقداردهی اولیه می‌کند
CLOSE یک فایل را غیرفعال می‌کند و علامت پایان فایل را می‌نویسد
INPUT یک عمل ورودی را از یک دستگاه خارجی به یک قسمت میانگیر فایل هدایت می‌کند
OUTPUT یک عمل خروجی را از یک قسمت میانگیر فایل به یک دستگاه خروجی هدایت می‌کند
FORMAT تبدیل دلخواه بین بلوک‌های دادهٔ خارجی و تعریف‌های دادهٔ داخلی را مشخص می‌کند
ENCODE عناصر داده را به یک قسمت خاص منتقل می‌کند که این انتقال با یک فرمت خاص تطبیق می‌کند.
DECODE عملیات عکس ENCODE
ENDFILE یک نشانهٔ پایان فایل مناسب را قرار می‌دهد
POS عملگر ویژه برای قراردادن یک نوار فایل مغناطیسی
LENGHT عملگر ویژه برای به دست آوردن طول یک ورودی/خروجی

سیستم نظارت کامپایلر 2 (CMS-2)[ویرایش]

سیستم نظارت کامپایلر 2 (CMS-2) یک سیستم بود که بر روی UNIVAC CP-642B (AN/USQ-20) اجرا شد. نرم‌افزار سیستم شامل مانیتور، کامپایلر، بارکنندهٔ کتابخانهٔ CP-642 و نوار ابزار و فلوچارت بود.[۱]

مانیتور MS-2[ویرایش]

یک سیستم عامل پردازش دسته‌ای که که اجرای اجزاء CMS-2 و کارهای اجرا شدهٔ کاربر در کامپیوتر CP-642 را کنترل می‌کند. ورودی و خروجی، نرم‌افزار امکانات کتابخانه و ابزارهای اشکال‌زدایی را فراهم می‌کند. کار حسابداری نیز ارائه شده‌است.

کامپایلر CMS-2[ویرایش]

یک کامپایلر برای CS-1 و زبان CMS-2 که تولیدکنندهٔ کد هدف برای کامپیوترهای CP-642, L-304, AN/UYK-7,1830A و ۱۲۱۸/۱۲۱۹ است. در طول دهه ۱۹۷۰ نسخه‌های مختلف کامپایلر CMS-2 وجود داشت که بسته به کامپیوتر مورد استفاده، برای کامپایل مورد استفاده قرار می‌گرفت. قسمتی از کد منبع باید بازنویسی می‌شد تا برای اجرای بعضی توابع به کار آیند؛ و نسخه‌های مختلف CMS-2 مشکلاتی با ابزار اشکال زدایی داشتند.

کامپایلر XCMS-2[ویرایش]

کامپایلر توسعه یافتهٔ CMS-2 با اضافه کردن ویژگی‌های زبان برای کامپیوتر AN/UYK-7 است و تنها کد هدف AN/UYK-7 را تولید می‌کند.

کتابخانهٔ CMS-2[ویرایش]

یک سیستم مدیریتی است که ذخیره‌سازی و دسترسی به منبع و کد هدف را فراهم می‌کند.

بار کنندهٔ کد هدف CP-642[ویرایش]

دو بارکنندهٔ کد هدف برای بارگذاری کد هدف مطلق یا جابه‌جا پذیر.

نوار ابزار[ویرایش]

مجموعه‌ای از ابزارها برای مدیریت داده‌ها بر روی نوار مغناطیسی است.

فلوچارت ساز CMS-2[ویرایش]

نرم‌افزار فلوچارت ساز بخش‌های فلوچارت ساز را در کد منبع CMS-2 پردازش می‌کند و خروجی آن یک فلوچارت است که به یک چاپگر سرعت بالا فرستاده می‌شود.

جستارهای وابسته[ویرایش]

  • Ada
  • AN/AYK-14
  • AN/UYK-7
  • AN/UYK-20
  • AN/UYK-43
  • AN/UYK-44
  • AN/USQ-17
  • AN/USQ-20
  • JOVIAL
  • Naval Tactical Data System
  • TACPOL

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

  1. ۱٫۰۰ ۱٫۰۱ ۱٫۰۲ ۱٫۰۳ ۱٫۰۴ ۱٫۰۵ ۱٫۰۶ ۱٫۰۷ ۱٫۰۸ ۱٫۰۹ U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy خطای یادکرد: برچسب <ref> نامعتبر؛ نام «NAVEDTRA_10088-B» چندین بار با محتوای متفاوت تعریف شده‌است. (صفحهٔ راهنما را مطالعه کنید.).
  2. ۲٫۰ ۲٫۱ Neal Ziring (1998-10-19). "CMS-2". Ziring MicroWeb. Archived from the original on 14 December 2016. Retrieved 2014-07-08.{{cite web}}: نگهداری یادکرد:ربات:وضعیت نامعلوم پیوند اصلی (link)
  3. Mark Wilson - personal experience working with UYK-20 and UYK-44 on Aegis ORTS
  4. Fleet Combat Direction Systems Support Activity (1986), CMS-2Y Programmers Reference Manual for the AN/UYK-7 and AN/UYK-43 Computers, U.S. Navy

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