Octo Barnett |
MUMPS (англ. Massachusetts General Hospital Utility Multi-Programming System — Масачусетская основная мульти-программная система для госпиталей; иногда M или М-система) — язык программирования созданный 1966-67 для использования в лечебной индустрии. Из MUMPS в 70-х годах вышла свободная медицинская система VA VistA, де-факто стандарт медицинской информационной системы.
Обозначение MUMPS, как язык программирования условно, т.к. он зародился во времена кристаллизации языков программирования, и его системная компетенция органично распространяется от нюансов работы с медицинским оборудованием, до операций СУБД и экспертных систем (см. например системные уровни VA VistA).
Весьма характерно, что MUMPS зародился в специфичной медицинской среде кардиологов (Octo Barnett).
Изначально разработан с целью сделать написание приложений баз данных легким, вместе с максимальным использованием компьютерных ресурсов. Часто использовался в лечебных учреждениях и для финансовых информационных систем и баз данных (особенно для разработанных в 1970х и начале 1980х годов) и продолжает использоватся у многих клиентов. Сейчас MUMPS является базовым языком в системах DSM, MSM, M3-LITE, GT.M, CACHE, которые эффективно применяются в промышленности и финансовых учреждениях, на транспорте и в связи.
MUMPS создан после Лисп (Лябда-исчисление и списки), BASIC (легкий, интерактивный, компактный язык), ПЛ/1 (структуриованный язык больших машин - см. конфликт с mainframe вычислительными центрами VistA разработчиков до языков структурного программирования C, Pascal, имеет свой синтаксис и терминологию. Он предлагает ряд уникальных возможностей, не доступных в других языках, развивает интересные концепции программирования и архитектуру баз данных.
Глобальные массивы в MUMPS системах используются для построения и управления базами данных. Структура глобальных массивов уникальная особенность языка MUMPS. Эти массивы автоматически записываются на диск, без необходимости резервирования и адресации пространства для записи, относятся к иерархическим и разрежённым структурам по самой своей природе. В массивах может содержаться произвольное количество уровней иерархии /индексов/, причём данные могут содержаться на любом из уровней массива. Индексом массива может быть любое корректное MUMPS выражение, результатом оценки которого может быть число, или строка символов. Все о языке программирования и системе MUMPS. Джон Левкович (гл. 10)
В силе языка MUMPS можно убедится на примере концептуальных диаграм системы VA VistA (95 файлов .pdf). Это пожалуй единственное в Интернете открытое хранилище нетривиальных схем большой организации. Такие файлы, из этой директории, как Расписание (SD.pdf), здание больницы (EN.pdf), экономика (PRC.pdf), администрирование (MAS.pdf), онкология (ONC.pdf), лаборатория (LR-LAB_DATA.pdf) содержат сотни элементов данных и тысячи связей бразующих густую сетку. И это все работает, постоянно развивается, изменяется (причем существенно в силу изменений законодательства, организаци и пр. (см. также Глоссарий концептов ВистЫ на английском и русском языках)
Свободная версия MUMPS GT.M (основаная загрузка [1] крупной финансовой корпорации FIS (Fidelity National Information Services). Оптимизированна для транзакций, может быть платформой разработки, имеет компилятор соотвествующий стандарту ANSI/ISO. Используется в различных отраслях, более всего в финансах и здравоохранении (читай VA VistA). Описание GT.M
Интерпретирующая технология и мощная глобальная БД позволяют концентрировать в системе построенной на MUMPS самые тончайшие аспекты элементов автоматизированной системы управления, и соотвественно строить Базу Знаний. Наиболее сильно это выразилось в медицинской системе VA VistA, в которой сконцентрирован 25-летний обширнейший опыт управления медицинским учреждением в Ветеранской Службе МО США.
Используется метафора "MUMPS - древовидная БД". Более точная метафора: MUMPS - иерархия осьминогов. Т.е. древовидная структура в узлах которой могут находится ламбда-выражения более похоже на иерархию живых существ, осьминогов (имеющих древовидную топологию тела). Символьная природа компьютерной среды - в этом случае аналогична нелокальности интеллекта-жизни. Интеллектуальный феномен осьминогов рассмотрен например С.В. Савельев. Происхождение мозга. //"Веди" М2005.
Выборка из книги Джона Левковича.
MUMPS это больше, чем просто один из языков программирования, он также охватывает многие области более присущие обычно операционным системам общего назначения, которые обеспечивают функционирование и разработку прикладных программ. Кроме просто интерпретатора языка, ему присущи функции управления базами данных, и кроме того обеспечение хорошего интерфейса с устройствами ввода/вывода. В дополнение к этому, большинство из версий MUMPS допускают работу в многопользовательских и многозадачных режимах с использованием принципов разделения времени между заданиями..
MUMPS является интерпретирующим языком. MUMPS команды могут запускаться на исполнение прямо с клавиатуры или записываться в виде программ на диск. MUMPS интерпретирует типы данных в контексте совершаемых над ними операций. В непосредственном режиме Вы легко можете проверить любую из языковых конструкций, с помощью отладчика провести отладку программ и их процедур, просмотреть и изменить в любой момент содержание локальных и глобальных переменных.
интерпретация данных как программы (косвенность, фактически лямбда-исчисление) Два пути использования косвенности : (1) - оператор XECUTE (в Лиспе сердце системы функция EVAL), в котором поле данных, используемое как аргумент оператора, исполняется как набор MUMPS инструкций, и (2) - использование оператора косвенности @, который позволяет заменить полями данных аргументы операторов (в Лиспе макрос).
глобаль - массив автоматически адресуемый для записи на диск. основная форма записи данных MUMPS. Глобали являются разрежёнными массивами и занимаемое ими пространство на диске определяется только размером данных, записываемых при индексах. Глобали могут быть распределены одновременно между многими пользователями. Глобальные переменные доступны всем процессам работающим в одной директории. индексация - организация взаимного расположения записей внутри массива называется индексацией и достигается в MUMPS с помощью индексов глобальных массивов. Индексами в этих массивах могут быть не только числа, но и любые символьные строки имеющие значение (семантику), которая затем используется в программах. например это может быть программный код обработки узла (аналогия с функцией EVAL Лиспa).
многоосевое кодирование часто используется в медицинских информационных системах, для кодирования диагнозов и лечебных процедур которые могут иметь множественные ссылки в своем коде. Диагноз может иметь в себе элемент указывающий на поражение определенного органа тела или конкретной части органа, (например, левая вентрикулярная стенка сердца), другое поле указывает на функциональные изменения в этом месте (воспаление), третье поле указывает на причину, вызвавшую заболевание (травма). Каждое из полей является элементом иерархической структуры, комбинация трех полей создает единый код заболевания, несущий в себе три ссылки. (На эту возможность могу существенно опереться современные системные подходы к здоровью, например В.В. Рево "Системная семиотика болезнейц человека и общества")
В-деревья В большинстве MUMPS реализаций глобальные структуры основываются на концепции так называемых сбалансированных деревьев (именуемых также и В-деревьями). В-деревья представляют собой мощный инструмент для организации разряженных структур с использованием ключей (индексов). При этом обеспечивается эффективный механизм записи и чтения данных с минимальным количеством обращений к диску.
MUMPS является строчно-ориентированным языком, каждая строка может содержать много операторов (количество ограничено только пределом длины строки - обычно 255 символов). Отдельные операторы и функции языка могут быть сгруппированы вместе в одной физической строке программы.
^ [System,Directory]Name(Subscripts) синтаксис глобальной ссылки, на программу или данные. Идентификатор System обозначает, что ссылка относится к области расположенной в той же системе /на том же узле сети/, что и текущий процесс. Идентификатор области (Directory), указывает, что обращение производится к области назначенной текущему процессу при его запуске.
% начало имени библиотечного массива
: пост-условие оператора
$ начало имены системных переменных
[ операция "строка содержит"
] операция "строка следует"
$Z функции фирм-разработчиков MUMPS и не являющиеся стандартными.
Программа Hello world написанная на MUMPS будет выглядеть так:
hello() write "Hello, World!",! quit
и может быть запущена из командной строки MUMPS командой «do
^hello()
». С того момента как MUMPS стал поддерживать последовательные
команды в одной строке, а команды стало возможно записывать однобуквенным
сокращением, эту программу можно записать более компактно:
hello() w "Hello, World!",! q
- пример строчного характера языка.
Материал из Википедии — свободной энциклопедии