Парадигма | Императив |
---|---|
Разработано | RAND , Интерметрика |
Разработчик | Корпорация компьютерных наук |
Впервые появился | 1968 |
Под влиянием | |
CS-1, Фортран , JOVIAL и PL/I [1] |
CMS-2 — язык программирования встроенных систем, используемый ВМС США . [2] Это была ранняя попытка разработать стандартизированный язык программирования высокого уровня, предназначенный для улучшения переносимости кода и возможности повторного использования. CMS-2 был разработан в первую очередь для тактических систем данных ВМС США ( NTDS ). [1]
CMS-2 была разработана корпорацией RAND в начале 1970-х годов и расшифровывается как «Compiler Monitor System». Название «CMS-2» сопровождается в литературе буквой, обозначающей тип целевой системы. Например, CMS-2M нацелена на 16-разрядные процессоры ВМС, такие как AN/AYK-14 . [2]
CMS-2 был разработан для FCPCPAC (Fleet Computer Programming Center - Pacific) в Сан-Диего, Калифорния. Он был реализован 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.
Оператор | Функция |
---|---|
НАБОР | Выполнить расчеты или присвоить значение |
МЕНЯТЬ | Обменять содержимое двух блоков данных |
ПЕРЕЙТИ | Изменить ход выполнения программы или вызвать оператор switch |
ЕСЛИ | Выражает сравнение или логическое выражение для условного выполнения. |
ОТЛИЧАТЬСЯ | Установить программный цикл |
НАХОДИТЬ | Выполняет поиск данных в таблице. |
Специальные операторы облегчают ссылки на структуры данных и операции над ними. [1]
Оператор | Функция |
---|---|
КУСОЧЕК | Ссылка на строку битов в элементе данных |
ЧАР | Ссылается на строку символов |
КОРАД | Ссылается на основной адрес |
АБС | Получает абсолютное значение выражения |
КОМП | Дополняет логическое выражение |
Динамические операторы, описывающие операции обработки программы, группируются в блоки операторов, называемые процедурами. [1]
Начальный разделитель | Конечный разделитель | Цель |
---|---|---|
СИСТЕМА | КОНЕЧНАЯ СИСТЕМА | Разграничивает систему времени компиляции |
SYS-DD | КОНЕЦ-СИС-ДД | Разграничивает дизайн системных данных в скомпилированной системе |
SYS-PROC | КОНЕЦ-СИСТЕМ-ПРОЦЕСС | Разграничивает системную процедуру в системе времени компиляции |
LOC-DD | КОНЕЦ-МЕСТО-ДД | Разграничивает локальный дизайн данных в системной процедуре |
ПРОЦЕДУРА | КОНЕЦ ПРОЦЕССА | Разграничивает процедуру в системной процедуре |
EXEC-PROC | КОНЕЦ ПРОЦЕССА | Разграничивает процедуру состояния задачи в системной процедуре (только XCMS-2, вызывается только из процедуры состояния исполнителя) |
ФУНКЦИЯ | КОНЕЦ-ФУНКЦИЯ | Разграничивает функцию в системной процедуре |
SYS-PROC-REN | КОНЕЦ-СИСТЕМ-ПРОЦЕСС | Разграничивает повторно используемую системную процедуру в системе времени компиляции (только XCMS-2) |
АВТО-ДД | КОНЕЦ-АВТО-ДД | Разграничивает область динамических данных в процедуре реентерабельной системы, которая должна выделяться каждый раз, когда процедура реентерабельной системы инициируется для выполнения (только XCMS-2) |
ГОЛОВА | КОНЕЦ-ГОЛОВКА | Разграничивает пакет заголовков в системе времени компиляции |
Операторы ввода/вывода обеспечивают связь с аппаратными устройствами во время работы в среде не в реальном времени под управлением системы мониторинга. [1]
Оператор | Функция |
---|---|
ФАЙЛ | Определяет среду и другую информацию для ввода и вывода. |
ОТКРЫТЬ | Инициализирует процедуры ввода-вывода |
ЗАКРЫВАТЬ | Деактивирует файл и записывает метку конца файла |
ВХОД | Направляет операцию ввода с внешнего устройства в область файлового буфера. |
ВЫХОД | Направляет операцию вывода из области файлового буфера на внешнее устройство. |
ФОРМАТ | Определяет желаемое преобразование между внешними блоками данных и определениями внутренних данных. |
КОДИРОВАНИЕ | Управляет преобразованием элементов данных в общую область, с преобразованием в соответствии с заданным форматом |
ДЕКОДИРОВАТЬ | Руководит распаковкой общей области и передачей в блоки данных, как указано в декларации формата. |
КОНЕЦФАЙЛА | Размещает отметку конца файла на соответствующих носителях записи. |
POS | Специальный оператор для позиционирования файла на магнитной ленте |
ДЛИНА | Специальный оператор для получения длины записи ввода/вывода |
Compiler Monitor System 2 (CMS-2) была системой, работавшей на UNIVAC CP-642B ( AN/USQ-20 ). Системное программное обеспечение включало монитор , компилятор, библиотекаря, загрузчик CP-642, утилиту ленты и хартию потока. [1]
Операционная система пакетной обработки, которая управляет выполнением компонентов CMS-2 и пользовательских заданий, запущенных на компьютере CP-642. Она обеспечивает ввод/вывод, возможности библиотеки программного обеспечения и инструменты отладки. Также предоставляется учет заданий.
Компилятор для языков CS-1 и CMS-2, который генерирует объектный код для компьютеров CP-642 , L-304, AN/UYK-7 , 1830A и 1218/1219 . В 1970-х годах существовали различные версии компилятора CMS-2, в зависимости от того, какой компьютер использовался для компиляции кода. Часть исходного кода приходилось переписывать, чтобы обойти некоторые функции. И различные версии CMS-2 имели проблемы с инструментами отладки.
Расширенный компилятор CMS-2, добавляющий языковые возможности для компьютера AN/UYK-7. Он генерирует только объектный код AN/UYK-7.
Система управления файлами, обеспечивающая хранение и доступ к исходному и объектному коду.
Два загрузчика объектного кода для загрузки абсолютного или перемещаемого объектного кода.
Набор утилит для управления данными на магнитной ленте.
Программное обеспечение для построения блок-схем обрабатывает операторы блок-схем в исходном коде CMS-2 и выводит блок-схему на высокоскоростной принтер.
{{cite web}}
: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )