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

CMS-2 یک زبان برنامه‌نویسی سیستم‌های جاسازی شده‌است که به وسیلهٔ نیروی دریایی ایالات متحده استفاده شده‌است. آن اوایل تلاش به منظور توسعه یک زبان برنامه‌نویسی کامپیوتری سطح بالای استاندارد شده برای بهبود کد قابل حمل و استفاده مجدد انجام می‌شد. CMS-2 درجه اول برای سیستم‌های داده‌های تاکتیکیروی نی دریایی ایالات متحده توسعه یافت. (NTDS).U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 
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.Mark Wilson - personal experience working with UYK-20 and UYK-44 on Aegis ORTS

 ویژگی‌های زبان 
CMS-2 برای تشویق برنامه ماژولار، اجازهٔ کامپایل مستقل بخش‌های یک سیستم کامل طراحی شد. این زبان توضیح گرا است. منبع به شکل آزاد است و ممکن است برای برنامه‌نویسی راحت سازماندهی شود. انواع داده‌ها شامل اعداد ثابت، اعداد ممیز شناور، بولی، حروف و وضعیت است. ارجاع مستقیم، دستکاری حروف و های رشته های بیتی مجاز است. کد نمادین دستگاه ممکن است شامل کدی به عنوان کد مستقیم باشد.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 

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

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

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

بخش‌های اعلانی که داده‌ها را برای یک برنامه تعریف می‌کنند در واحدهایی دسته‌بندی می‌شوند که طراحی‌های داده‌ها نامیده می‌شوند. طراحی‌های داده‌ها متشکل از تعریف‌های دقیق برای مناطق ذخیره‌سازی داده‌های موقتی و دائم، ورودی‌ها، خروجی‌ها و واحدهای خاص داده‌ها است. بخش‌های پویا که بر روی داده‌ها عمل می‌کنند ویا محاسبات را انجام می‌دهند به صورت متدها دسته‌بندی می‌شوند. طراحی‌های داده و متدها بار دیگر به صورت عناصر سیستم یک برنامهٔ CMS-2 دسته‌بندی می‌شوند. کامپایلر عناصر سیستم را به یک سیستم زمان کامپایل ترکیب می‌کند. یک سیستم زمان کامپایل مکن است مستقل یا بخشی از برنامهٔ بزرگتر باشد.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 

 بخش‌های اعلانی داده‌ها 
بخش‌های اعلانی داده‌ها اطلاعات مربوط به تعریف عناصر داده‌ها را در اختیار کامپایلر قرار می‌دهد. آن‌ها فرمت، ساختار و ترتیب عناصر را در یک سیستم زمان کامپایل تعریف می‌کنند. سه نوع اصلی داده‌ها عبارت اند از متغیرها، سوئیچ‌ها و مجموعه‌ها.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 

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

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

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

 بخش‌های پویا 
بخش‌های پویا عملیات پردازشی را مشخص می‌کنند و در نتیجه کد اجرایی را به وسیله کامپایلر تولید می‌کننند. یک بخش پویا شامل یک عملگر است که به وسیلهٔ یک لیست از عملوندها و عملگرهای اضافی ای تعیب می‌شود. یک عملوند ممکن است یک نام تنها، یک ثابت، یک ارجاع به عناصر داده یا یک عبارت باشد.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 

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

 عملگرهای ویژه 
عملگرهای ویژه ارجاع به ساختارهای داده و عملیات بر روی آن‌ها را تسهیل می‌کند.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 
 اپراتور تابعBIT به یک رشته از بیت‌ها در یک عنصر داده ارجاع می‌دهدCHAR به یک رشته کاراکتر ارجاع می‌دهد CORAD به یک آدرس هسته ارجاع می‌دهد ABS مقدار مطلق یک عبارت را به دست می‌آورد COMP مکمل یک عبارت بولی

 برنامه ساختار اعلان‌ها 
بخش‌های پویا توصیف کنندهٔ عملیات پردازش یک برنامه دسته‌بندی شده را به بلوک‌های بخش‌هایی به نام متدها هستند.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 
 آغاز حائل پایان حائل هدف سیستم پایان-سیستم یک سیستم زمان کامپایل را حائل می‌شود SYS-DD پایان-SYS-DD Delimits یک سیستم طراحی داده در سیستم کامپایل شده SYS-مجموعه مقالات پایان-SYS-مجموعه مقالات Delimits یک سیستم متدی در یک سیستم زمان کامپایل LOC-DD پایان-LOC-DD Delimits محلی طراحی داده‌ها در یک سیستم روش روش پایان-مجموعه مقالات Delimits یک متد در یک متد سیستم EXEC-مجموعه مقالات پایان-مجموعه مقالات Delimits یک روش وظیفه-حالت در یک متد سیستم(XCMS-2 تنها، تنها به نام از اجرایی-دولت روش) تابع  Delimits یک تابع در متد سیستم  پایان-SYS-PROC Delimits یک متد سیستم reentrant در یک سیستم زمان کامپایل(XCMS-2) AUTO-DD پایان-AUTO-DD Delimits ناحیهٔ داده پویا در یک متد سیستم reentrant است که باید هر دفعه اختصاص داده شود. متد سیستم reentrant برای اجرا آغاز می‌شود (XCMS-2)HEADEND-HEAD Delimits یک بسته هدر در یک سیستم زمان کامپایل

 ورودی/خروجی سطح بالای بخش‌ها 
ورودی/خروجی بخش‌ها ارتباط با دستگاه‌های سخت‌افزاری را در حالی که در محیط غیر بلادرنگ در یک سیستم نظارتی در حال اجرا است را مهیا می‌کند.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 
عملگر تابع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 و نوار ابزار و فلوچارت بود.U.S. Navy (1978), Digital Computer Basics Rate Training Manual, NAVEDTRA 10088-B, U.S. Navy 

 مانیتور 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

 منابع 

 پیوند به بیرون 
 CMS-2Y Programmers Reference Manual for the AN UYK-7 and AN UYK-43 (اکتبر ۱۹۸۶)
 the Feasibility of Emulating the AN/UYK-7 Computer on the AADC Signal Processing Element
 Dictionary of Programming Languages entry for CMS-2

رده:زبان‌های برنامه‌نویسی سیستمی
رده:سامانه‌های توکار
رده:ویکی‌سازی رباتیک