Введение
Язык программирования, язык программирования MUMPS ("Massachusetts General Hospital Utility Multi Programming System"), или M, – это императивный язык программирования высокого уровня с интегрированной базой данных типа «ключ-значение» для обработки транзакций. Он был первоначально разработан в Массачусетской больнице для управления медицинскими записями пациентов и информационными системами больничных лабораторий. Технология MUMPS впоследствии стала преобладающей базой данных для систем медицинской информации и электронных медицинских карт в Соединенных Штатах. Информационные системы на базе MUMPS используются более чем в 40% больниц США, во всех федеральных больницах и клиниках США и обеспечивают медицинское обслуживание более чем 54% пациентов в США.
the programming language
MUMPS ("Massachusetts General Hospital Utility Multi Programming System"), or M, is an imperative, high level programming language with an integrated transaction processing key–value database. It was originally developed at Massachusetts General Hospital for managing patient medical records and hospital laboratory information systems. MUMPS technology has since expanded as the predominant database for health information systems and electronic health records in the United States. MUMPS based information systems run over 40% of the hospitals in the U. S., run across all of the U. S. federal hospitals and clinics, and provide health information services for over 54% of patients across the U. S.
A unique feature of the MUMPS technology is its integrated database language, allowing direct, high speed read write access to permanent disk storage. This provides tight integration of unlimited applications within a single database, and provides extremely high performance and reliability as an online transaction processing system.
Уникальной особенностью технологии MUMPS является ее интегрированный язык базы данных, обеспечивающий прямой и высокоскоростной доступ на чтение и запись к постоянному хранилищу данных. Это обеспечивает тесную интеграцию неограниченного числа приложений в рамках единой базы данных, а также исключительно высокую производительность и надежность как системы обработки транзакций в режиме реального времени.
the programming language
MUMPS ("Massachusetts General Hospital Utility Multi Programming System"), or M, is an imperative, high level programming language with an integrated transaction processing key–value database. It was originally developed at Massachusetts General Hospital for managing patient medical records and hospital laboratory information systems. MUMPS technology has since expanded as the predominant database for health information systems and electronic health records in the United States. MUMPS based information systems run over 40% of the hospitals in the U. S., run across all of the U. S. federal hospitals and clinics, and provide health information services for over 54% of patients across the U. S.
A unique feature of the MUMPS technology is its integrated database language, allowing direct, high speed read write access to permanent disk storage. This provides tight integration of unlimited applications within a single database, and provides extremely high performance and reliability as an online transaction processing system.
1960-е-1970-е годы - Бытие
MUMPS был разработан Нилом Паппалардо, Робертом А. Гринсом и Куртом Марблом в лаборатории доктора Окто Барнетта в Массачусетской больнице общего профиля (MGH) в Бостоне в 1966 и 1967 годах. Продавался параллельно после выпуска в 1978 году. Как аппаратные семейства, так и версии MUMPS были доступны до 1995 года от DEC. DSM 11 был портирован на Alpha в двух вариантах: DSM для OpenVMS и DSM для Ultrix. InterSystems с ISM (InterSystems M) на VMS (M/VX), ISM 11, позднее M/11+ на платформе PDP 11 (1978), M/PC на MS DOS, M/DG на Data General, M/VM на IBM VM/CMS и M/UX на различных Unix. Greystone Technology Corporation, основанная в 1980 году, предлагала компилируемую версию под названием GT.M для AIX, HP UX, UNIX и OpenVMS. DataTree Inc. с продуктом на базе Intel PC под названием DTM (1982). Micronetics Design Corporation (1980) с линейкой продуктов под названием MSM: MSM PC, MSM/386, MS UNIX, MSM NT, MSM/VM для IBM, платформы VAX/VMS и платформы OpenVMS Alpha. Computer Consultants (позже переименованная в MGlobal), компания из Хьюстона, первоначально разработала CCSM для 6800, затем для 6809, и в конечном итоге портировала её на 68000, что впоследствии привело к созданию MacMUMPS – продукта для Mac OS. Они также работали над реализацией MGM MUMPS. MGlobal также портировала свою реализацию на платформу DOS. MGlobal MUMPS был первым коммерческим MUMPS для IBM PC и единственной реализацией для классической Mac OS. Tandem Computers разработала реализацию для своих отказоустойчивых компьютеров. IBM некоторое время продавала реализацию MUMPS под названием MUMPS/VM, которая работала как виртуальная машина поверх VM/370. В этот период также наблюдалась значительная активность MDC. Второй пересмотр стандарта ANSI для MUMPS (X11.1 1984) был утвержден 15 ноября 1984 года.
DataTree Inc. with an Intel PC based product called DTM. (1982)
Micronetics Design Corporation (1980) with a product line called MSM. MSM PC, MSM/386, MS UNIX, MSM NT, MSM/VM fo IBM, VAX/VMS platforms and OpenVMS Alpha platforms. Computer Consultants (later renamed MGlobal), a Houston based company originally created CCSM on 6800, then 6809, and eventually a port to the 68000, which later became MacMUMPS, a Mac OS based product. They also worked on the MGM MUMPS implementation. MGlobal also ported their implementation to the DOS platform. MGlobal MUMPS was the first commercial MUMPS for the IBM PC and the only implementation for the classic Mac OS. Tandem Computers developed an implementation for their fault tolerant computers. IBM briefly sold a MUMPS implementation named MUMPS/VM which ran as a virtual machine on top of VM/370. This period also saw considerable MDC activity. The second revision of the ANSI standard for MUMPS (X11.1 1984) was approved on November 15, 1984.
1990-е годы
11 ноября 1990 года была утверждена третья редакция стандарта ANSI (X11.1 1990). В 1992 году этот же стандарт был принят как стандарт ISO 11756–1992. Использование "M" в качестве альтернативного названия языка было одобрено примерно в то же время. 8 декабря 1995 года ANSI утвердила четвертую редакцию стандарта (X11.1 1995), а в 1999 году он был принят ISO как ISO 11756:1999 и опубликован ANSI. В 1998 году MDC завершила дальнейшую переработку стандарта, но она не была представлена в ANSI для утверждения. В 1999 году был утвержден последний стандарт M (ISO/IEC 11756:1999). ISO подтвердила его актуальность в 2020 году. Вместе с ISO/IEC 15851:1999 (Open MUMPS Interconnect) и ISO/IEC 15852:1999 – интерфейсом программирования приложений MUMPS для окон.
Имя
Главному исполнительному директору InterSystems не нравилось название MUMPS, и он считал, что оно является серьезным препятствием для маркетинга. Таким образом, некоторая склонность к M стала ассоциироваться с поддержкой InterSystems. Стандарт ANSI 1990 года допускал использование как M, так и MUMPS, и после общемирового обсуждения в 1992 году группы пользователей Mumps официально сменили название на M. Этот спор также отражал соперничество между организациями (Ассоциация технологий M, Комитет по разработке MUMPS, комитеты по стандартам ANSI и ISO) в отношении того, кто определяет "официальное" название языка. По состоянию на 2020 год ISO по-прежнему упоминает как M, так и MUMPS в качестве официально признанных названий. Массачусетская общая больница зарегистрировала "MUMPS" как товарный знак в USPTO 28 ноября 1971 года и продлила регистрацию 16 ноября 1992 года, но позволила ей истечь 30 августа 2003 года.
Критика
Некоторые аспекты синтаксиса MUMPS сильно отличаются от синтаксиса более современных языков, что может вызывать путаницу, хотя эти аспекты различаются в разных версиях языка. В некоторых версиях пробелы в выражениях недопустимы, так как они завершают оператор: 2 + 3 – ошибка, и это нужно записывать как 2+3. Все операторы имеют одинаковый приоритет и являются левоассоциативными (2+3*10 вычисляется как 50). Операторами для "меньше или равно" и "больше или равно" являются '>' и '<' (то есть оператор логического отрицания ' плюс строгий оператор сравнения в противоположном направлении), хотя некоторые версии допускают использование более стандартных <= и >= соответственно. Точки (.) используются для отступов строк в блоке DO, а не пробелы. Команда ELSE не требует соответствующего IF, поскольку она работает, проверяя значение во встроенной системной переменной $test. Правила области видимости в MUMPS более гибкие, чем в других современных языках. Объявленные локальные переменные используют стек для определения области видимости. Рутина обычно может видеть все объявленные локальные переменные рутин, находящихся ниже неё в стеке вызовов, и рутины не могут помешать вызываемым ими рутинам изменять их объявленные локальные переменные, если только вызывающая рутина вручную не создаст новый уровень стека (do) и не создаст псевдонимы для каждой переменной, которую необходимо защитить (. new x,y) перед вызовом любых дочерних рутин. И наоборот, необъявленные переменные (переменные, создаваемые при использовании, а не при объявлении) имеют область видимости для всех рутин, работающих в одном процессе, и остаются в области видимости до завершения программы. Поскольку ссылки на базы данных MUMPS отличаются от ссылок на внутренние переменные только префиксом caret, очень легко непреднамеренно изменить базу данных или даже удалить "таблицу" базы данных.