MAD (язык программирования)
-
История и разработка MAD
- MAD (Michigan Algorithm Decoder) разработан в 1959 году в Мичиганском университете.
- Основан на языке АЛГОЛ, но не похож на него.
- Использовался для преподавания программирования и разработки операционных систем.
-
Версии MAD
- Оригинальный MAD разработан для IBM 704, 709, 7090 и других мэйнфреймов.
- MAD/I разработан для IBM System/360 и MTS.
- GOM (Старый добрый MAD) разработан для IBM System/370 и MTS.
-
Особенности MAD
- Быстрый компилятор по сравнению с другими языками того времени.
- MADTRAN использовался для перевода FORTRAN на MAD.
- MAD/I имеет синтаксис, аналогичный ALGOL 60, и важные функции PL/I.
-
Языковые элементы
- MAD и GOM состоят из различных элементов, включая формат ввода, имена, типы данных, массивы и матрицы, операторы и декларации.
- GOM имеет дополнительные режимы данных и операторы указателя.
-
Примеры программ
- Пример программы «hello, world» выводит строку на терминал.
- MAD использует логические элементы управления кареткой и сокращения для упрощения кода.
-
Влияние и наследие
- MAD оказал значительное влияние на развитие программирования и операционных систем.
- GOM продолжает использоваться в современных системах программирования.
-
Основные элементы программы MAD
- Программа может содержать информацию об измерениях
- Используются стираемые переменные
- Параметры могут быть векторными переменными
- Включаются и выключаются списки
- Ссылки могут быть включены или выключены
-
Инструкции и операторы
- Переменная = выражение (присвоение)
- Перенос в statement-label
- ВСЯКИЙ раз, когда логическое выражение, исполняемый оператор
- ИЛИ ВСЯКИЙ РАЗ, КОГДА логическое выражение
- Иначе
- ОКОНЧАНИЕ УСЛОВНОГО
- ПРОДОЛЖИТЬ (оператор «ничего не делать»)
- ЧЕРЕЗ оператор-метку, ДЛЯ ЗНАЧЕНИЙ переменной = список выражений (итерация)
- ПРИСВОИТЬ СПИСКУ ЗНАЧЕНИЕ элемента массива
- СОХРАНИТЬ список ДАННЫХ
- ВОССТАНОВИТЬ список ДАННЫХ
- ПАУЗЫ НЕТ
- ЗАВЕРШЕНИЕ ПРОГРАММЫ
-
Инструкции по вводу и выводу данных
- СЧИТЫВАНИЕ ДАННЫХ
- СЧИТЫВАНИЕ И ПЕЧАТЬ ДАННЫХ
- ФОРМАТ ЧТЕНИЯ, список
- ЧТЕНИЕ BCD-КАССЕТЫ n, формат, список
- СЧИТЫВАНИЕ ДВОИЧНОЙ ЛЕНТЫ n, список
- РАСПЕЧАТАТЬ список РЕЗУЛЬТАТОВ
- РАСПЕЧАТАТЬ список РЕЗУЛЬТАТОВ BCD
- РАСПЕЧАТАТЬ ВОСЬМЕРИЧНЫЙ список РЕЗУЛЬТАТОВ
- НАПЕЧАТАТЬ КОММЕНТАРИЙ $string$
- ФОРМАТ ПЕЧАТИ, список
- ПЕЧАТЬ В ЛИНЕЙНОМ ФОРМАТЕ, список
- ЗАПИСЬ НА КАССЕТУ BCD n, формат, список
- ЗАПИШИТЕ ДВОИЧНУЮ ЛЕНТУ n, перечислите
- ФОРМАТ ПЕРФОРАТОРА формат, список
- ПОСМОТРИТЕ НА ФОРМАТ FORMAT, list
- ПЕРЕМОТКА ЛЕНТЫ НАЗАД n
- КОНЕЦ ФАЙЛОВОЙ ЛЕНТЫ n
- ОБРАТНАЯ ЗАПИСЬ НА КАССЕТЕ n
- ЗАПИСЬ ОБРАТНОГО ПРОБЕЛА НА ЛЕНТЕ n
- ФАЙЛ С ОБРАТНЫМ ПРОСТРАНСТВОМ НА ЛЕНТЕ n
- ФАЙЛ ОБРАТНОГО ПРОБЕЛА ЛЕНТЫ n
- УСТАНОВЛЕННАЯ ЛЕНТА НИЗКОЙ ПЛОТНОСТИ n
- УСТАНОВИТЕ ТАБЛИЦУ ВЫСОКОЙ ПЛОТНОСТИ n
- РАЗГРУЗИТЬ ЛЕНТУ n
-
Функции
- Имена функций заканчиваются точкой
- Поддерживаются внутренние и внешние функции
- Внутренние функции компилируются как часть программы
- Внешние функции компилируются отдельно
- Допускается определение внутренних функций одним оператором
- Рекурсивные функции разрешены
- ВНУТРЕННЯЯ ФУНКЦИЯ -имя функции.(список аргументов) = выражение
- ВНУТРЕННЯЯ ФУНКЦИЯ-имя функции.(список аргументов)
- ВНЕШНЯЯ ФУНКЦИЯ -имя функции.(список аргументов)
- ЗАПИСЬ НА ИМЯ NAME.
- КОНЕЦ ФУНКЦИИ
- ФУНКЦИЯ ВОЗВРАЩАЕТ [ выражение ]
- ВОЗВРАТ ОШИБКИ
- СОХРАНИТЬ И ВЕРНУТЬ
- ВОССТАНОВЛЕНИЕ ДАННЫХ
- ВОССТАНОВИТЬ ВОЗВРАТ
- ВЫПОЛНИТЬ процедуру.(список аргументов)
-
Определение и переопределение оператора
- Возможность расширения языка путем переопределения операторов
- Определения составляются с использованием операторов объявления MAD и мнемоники на языке ассемблера
- ОПРЕДЕЛИТЬ ДВОИЧНЫЙ ОПЕРАТОР defined-op, ранг приоритета существующий-режим работы STRUCTURE mode-параметры
- ОПРЕДЕЛИТЬ УНАРНЫЙ ОПЕРАТОР defined-op, ранг приоритета существующий-режим работы STRUCTURE mode-параметры
- СТРУКТУРА РЕЖИМА mode-no = режим-не существует-режим работы-нет
- СТРУКТУРА РЕЖИМА режим-нет = режим-не существует-режим работы-нет ТОЙ ЖЕ ПОСЛЕДОВАТЕЛЬНОСТИ, ЧТО И режим-не существует-режим работы-нет
-
Предопределенные пакеты определений
- Три предопределенных пакета определений (MATRIX, DOUBLE PRECISION и COMPLEX) доступны для включения в исходные программы MAD
- ВКЛЮЧАЮЩИЙ пакет
-
Дополнительная информация
- АЛГОЛ 58
- АЛГОЛ 60
- Записи
- Рекомендации
- Сокращенное описание языка компиляции MAD
- CCLSYS, программа, облегчающая использование переводчика MAD
- Компьютерный учебник по языку Mad
- Внутренняя организация безумного переводчика
- Введение в Алгоритмические Методы, Использующие язык MAD
- Введение в цифровые компьютеры и язык MAD
- Язык компьютеров
- MAD at Michigan: его функции и особенности
- Блок-схемы Мичиганского алгоритмического декодера
-
Внешние ссылки
- Ретрокомпилятор Эрика Рэймонда для MAD
- Тривиальный пример безумной программы
- Поддержка IBM 7094 от Дэйва Питтса