ЦМС-2
Парадигма | Императив |
---|---|
Разработано | РЭНД , Интерметрика |
Разработчик | Корпорация компьютерных наук |
Впервые появился | 1968 |
Под влиянием | |
CS-1 , Фортран , JOVIAL и PL/I [1] |
CMS-2 — это встроенных систем, язык программирования используемый ВМС США . [2] Это была ранняя попытка разработать стандартизированный язык программирования высокого уровня, призванный улучшить переносимость и возможность повторного использования кода. CMS-2 была разработана в первую очередь для систем тактических данных ВМС США ( NTDS ). [1]
CMS-2 была разработана корпорацией RAND в начале 1970-х годов и означает «Система мониторинга компилятора». За названием «ЦМС-2» в литературе следует буква, обозначающая тип целевой системы. Например, CMS-2M нацелен на 16-битные процессоры ВМФ, такие как AN/AYK-14 . [2]
История
[ редактировать ]CMS-2 была разработана для FCPCPAC (Центр компьютерного программирования флота - Тихоокеанский регион) в Сан-Диего, Калифорния. Он был реализован Computer Sciences Corporation в 1968 году при поддержке Intermetrics . Язык продолжал развиваться и в конечном итоге стал поддерживать ряд компьютеров, включая AN/UYK-7 и AN/UYK-43 , а также UYK-20 и UYK-44. [3] компьютеры. [4]
Особенности языка
[ редактировать ]CMS-2 была разработана для поощрения модульности программы, позволяя независимо компилировать части общей системы. Язык ориентирован на утверждения. Исходный код имеет произвольную форму и может быть организован для удобства программирования. Типы данных включают фиксированную точку, плавающую точку, логическое значение, символ и статус. Разрешены прямые ссылки и манипуляции со строками символов и битов. Может быть включен символьный машинный код, известный как прямой код. [1]
Структура программы
[ редактировать ]Программа CMS-2 состоит из операторов. Операторы состоят из символов, разделенных разделителями. Категории символов включают операторы, идентификаторы и константы. Операторы — это примитивы языка, назначенные компилятором для определенных операций или определений в программе. Идентификаторы — это уникальные имена, присваиваемые программистом блокам данных, элементам программы и меткам операторов. Константы — это известные значения, которые могут быть числовыми, строками Холлерита, значениями состояния или логическими значениями.
Заявления CMS-2 имеют произвольную форму и заканчиваются знаком доллара. Метка утверждения может быть помещена в начале утверждения для справочных целей.
Исходная программа CMS-2 состоит из двух основных типов операторов. Декларативные операторы предоставляют компилятору базовую управляющую информацию и определяют структуру данных, связанных с конкретной программой. Динамические операторы заставляют компилятор генерировать исполняемые машинные инструкции (объектный код).
Декларативные операторы, определяющие данные для программы, сгруппированы в блоки, называемые проектами данных. Проекты данных состоят из точных определений временных и постоянных областей хранения данных, областей ввода, областей вывода и специальных блоков данных. Динамические операторы, которые воздействуют на данные или выполняют вычисления, сгруппированы в процедуры. Структуры данных и процедуры далее группируются для формирования системных элементов программы CMS-2. Компилятор объединяет элементы системы в систему времени компиляции. Система времени компиляции может быть автономной или частью более крупной программы. [1]
Декларативные заявления о данных
[ редактировать ]Декларативные операторы данных предоставляют компилятору информацию об определениях элементов данных. Они определяют формат, структуру и порядок элементов данных в системе времени компиляции. Тремя основными типами данных являются переключатели, переменные и агрегаты. [1]
Переключатели
[ редактировать ]Переключатели обеспечивают передачу управления программой в определенное место в системе времени компиляции. Они содержат набор идентификаторов или точек переключения для облегчения передачи и перехода программы. Переключатель представляет собой программный адрес метки оператора или имени процедуры.
Переменные
[ редактировать ]Переменная — это отдельный фрагмент данных. Он может состоять из одного бита, нескольких битов или слов. Значение может быть присвоено в определении переменной. Переменные могут содержать постоянное или изменяющееся значение. Типы данных включают целые числа, фиксированную точку, плавающую точку, строки символов Холлерита, статус или логические значения.
Агрегаты
[ редактировать ]Таблицы содержат упорядоченные наборы одинаково структурированной информации. Общей единицей данных в таблице является элемент. Элементы могут быть разделены на поля — наименьшее подразделение таблицы. Допустимые типы данных, содержащиеся в полях, включают целое число, фиксированную точку, плавающую точку, строку символов Холлерита, статус или логическое значение. Массив является расширением концепции таблицы. Основной структурной единицей массива является элемент. Элементы массива содержат поля, определенные программистом.
Динамические операторы
[ редактировать ]Динамические операторы определяют операции обработки и приводят к созданию компилятором исполняемого кода. Динамический оператор состоит из оператора, за которым следует список операндов и дополнительных операторов. Операндом может быть одно имя, константа, ссылка на элемент данных или выражение. [1]
Операторы операторов
[ редактировать ]Ниже приведены основные операторы CMS-2.
Оператор | Функция |
---|---|
НАБОР | Выполнить вычисления или присвоить значение |
МЕНЯТЬ | Обмен содержимым двух блоков данных |
ПЕРЕЙТИ К | Измените ход программы или вызовите переключатель операторов |
ЕСЛИ | Выражает сравнение или логическое выражение для условного выполнения. |
ОТЛИЧАТЬСЯ | Установить программный цикл |
НАХОДИТЬ | Ищет в таблице данные |
Специальные операторы
[ редактировать ]Специальные операторы облегчают ссылки на структуры данных и операции над ними. [1]
Оператор | Функция |
---|---|
КУСОЧЕК | Ссылка на строку битов в элементе данных |
ЧАР | Ссылается на строку символов |
КОРАД | Ссылается на основной адрес |
АБС | Получает абсолютное значение выражения |
КОМП | Дополняет логическое выражение |
Объявления структуры программы
[ редактировать ]Динамические операторы, описывающие операции обработки программы, сгруппированы в блоки операторов, называемые процедурами. [1]
Начальный разделитель | Конечный разделитель | Цель |
---|---|---|
СИСТЕМА | КОНЕЧНАЯ СИСТЕМА | Разграничивает систему времени компиляции |
СИС-ДД | КОНЕЦ-SYS-ДД | Ограничивает дизайн системных данных в скомпилированной системе. |
СИС-ПРОЦ | END-SYS-PROC | Разграничивает системную процедуру в системе времени компиляции. |
ЛОК-ДД | КОНЕЦ-ЛОК-ДД | Ограничивает структуру локальных данных в системной процедуре. |
ПРОЦЕДУРА | КОНЕЦ-ПРОЦ | Разграничивает процедуру в системной процедуре |
EXEC-PROC | КОНЕЦ-ПРОЦ | Разграничивает процедуру состояния задачи в системной процедуре (только XCMS-2, вызывается только из процедуры исполнительного состояния) |
ФУНКЦИЯ | КОНЕЧНАЯ ФУНКЦИЯ | Разграничивает функцию в системной процедуре |
СИС-ПРОЦ-РЕН | END-SYS-PROC | Разграничивает реентерабельную системную процедуру в системе времени компиляции (только XCMS-2) |
АВТО-ДД | КОНЕЦ-АВТО-ДД | Разграничивает область динамических данных в реентерабельной системной процедуре, которая должна выделяться каждый раз, когда реентерабельная системная процедура инициируется для выполнения (только XCMS-2). |
ГОЛОВА | КОНЦЕВАЯ ГОЛОВКА | Разграничивает пакет заголовка в системе времени компиляции. |
Операторы ввода/вывода высокого уровня
[ редактировать ]Операторы ввода/вывода обеспечивают связь с аппаратными устройствами во время работы в среде, отличной от реального времени, под системой мониторинга. [1]
Оператор | Функция |
---|---|
ФАЙЛ | Определяет среду и другую информацию для ввода и вывода. |
ОТКРЫТЬ | Инициализирует процедуры ввода-вывода |
ЗАКРЫВАТЬ | Деактивирует файл, записывает и отмечает конец файла. |
ВХОД | Направляет операцию ввода с внешнего устройства в область файлового буфера. |
ВЫХОД | Направляет операцию вывода из области файлового буфера на внешнее устройство. |
ФОРМАТ | Определяет желаемое преобразование между блоками внешних данных и определениями внутренних данных. |
КОДИРОВАТЬ | Управляет преобразованием элементов данных в общую область с преобразованием в соответствии с заданным форматом. |
ДЕКОДЕРОВАТЬ | Управляет распаковкой общей области и передачей в блоки данных, как указано в объявлении формата. |
я дома | Размещает метку конца файла на соответствующих носителях записи. |
POS-терминал | Специальный оператор для позиционирования файла на магнитной ленте |
ДЛИНА | Специальный оператор для получения длины входной/выходной записи |
Система мониторинга компилятора 2 (CMS-2)
[ редактировать ]Система мониторинга компилятора 2 (CMS-2) — это система, работавшая на UNIVAC CP-642B ( AN/USQ-20 ). Системное программное обеспечение включало монитор , компилятор, библиотекарь, загрузчик CP-642, ленточную утилиту и блок-схему. [1]
Монитор МС-2
[ редактировать ]На компьютере CP-642 работает операционная система пакетной обработки, которая контролирует выполнение компонентов CMS-2 и пользовательских заданий. Он обеспечивает ввод/вывод, возможности библиотеки программного обеспечения и инструменты отладки. Также ведется учет должностей.
Компилятор CMS-2
[ редактировать ]Компилятор языков CS-1 и CMS-2, генерирующий объектный код для компьютеров CP-642 , L-304, AN/UYK-7 , 1830A и 1218/1219 . В 1970-е годы существовали разные версии компилятора CMS-2, в зависимости от того, какой компьютер использовался для компиляции кода. Некоторый исходный код пришлось переписать, чтобы обойти некоторые функции. А в разных версиях CMS-2 были проблемы со средствами отладки.
Компилятор XCMS-2
[ редактировать ]Расширенный компилятор CMS-2, добавляющий языковые возможности для компьютера AN/UYK-7. Он генерирует только объектный код AN/UYK-7.
Библиотекарь ЦМС-2
[ редактировать ]Система управления файлами, обеспечивающая хранение и доступ к исходному и объектному коду.
CP-642 Загрузчики объектного кода
[ редактировать ]Два загрузчика объектного кода для загрузки абсолютного или перемещаемого объектного кода.
Ленточная утилита
[ редактировать ]Набор утилит для управления данными на магнитной ленте.
Блок-схема CMS-2
[ редактировать ]Программное обеспечение блок-схемы обрабатывает операторы блок-схемы в исходном коде CMS-2 и выводит блок-схему на высокоскоростной принтер.
См. также
[ редактировать ]- Есть
- АН/АЙК-14
- АН/УИК-7
- АН/УИК-20
- АН/УИК-43
- АН/УИК-44
- АН/USQ-17
- АН/USQ-20
- ВЕСЕЛЫЙ
- Система военно-морских тактических данных
- ТАКПОЛ
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и ж г час я дж ВМС США (1978), Руководство по обучению основам цифровых компьютеров, NAVEDTRA 10088-B , ВМС США
- ^ Jump up to: а б Нил Зиринг (19 октября 1998 г.). «ЦМС-2» . Зиринг МикроВеб. Архивировано из оригинала 23 ноября 2014 г. Проверено 8 июля 2014 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Марк Уилсон - личный опыт работы с УИК-20 и УИК-44 на Иджис ОРТС.
- ^ Деятельность по поддержке систем боевого управления флотом (1986), Справочное руководство программистов CMS-2Y для компьютеров AN / UYK-7 и AN / UYK-43 , ВМС США.