MUMPS

Поделись знанием:
(перенаправлено с «ДИАМС»)
Перейти к: навигация, поиск

MUMPS (англ. Massachusetts General Hospital Utility Multi-Programming System — Мульти-программная система Общеклинической больницы Массачусетса; иногда M, или М-система) — язык программирования, созданный в 1966—1967 годах для использования в лечебной индустрии.

Из MUMPS в 1970-х годах вышла свободная медицинская система VA VistA, стандарт де-факто медицинской информационной системыК:Википедия:Статьи без источников (тип: не указан)[источник не указан 4481 день].





История

Определение MUMPS как языка программирования условно, так как он зародился во времена кристаллизации языков программирования, и сфера его применения простирается от работы с медицинским оборудованием до операционных СУБД и экспертных систем (например, VA VistA).

MUMPS зародился в специфичной медицинской среде кардиологов (Octo Barnett). Изначально разработан с целью облегчить написание приложений баз данных, одновременно с максимальным использованием компьютерных ресурсов. Часто использовался в лечебных учреждениях и для финансовых информационных систем и баз данных (особенно для разработанных в 1970-х и начале 1980-х годов) и продолжает использоваться у ряда клиентов. Сейчас MUMPS является базовым языком в системах DSM, MSM, M3-LITE, GT.M, Caché, MiniM.

Глобальные массивы в MUMPS системах используются для построения и управления базами данных. Структура глобальных массивов — уникальная особенность языка MUMPS. Эти массивы автоматически записываются на диск, без необходимости резервирования и адресации пространства для записи, относятся к иерархическим и разрежённым структурам по самой своей природе. В массивах может содержаться произвольное количество уровней иерархии, причём данные могут содержаться на любом из уровней массива. Индексом массива может быть любое корректное MUMPS выражение, результатом оценки которого может быть число, или строка символов.[1]

Свободная версия MUMPS GT.M оптимизирована для транзакций, может быть платформой разработки, имеет компилятор соответствующий стандарту ANSI/ISO. Используется в различных отраслях, более всего в финансах и здравоохранении.

Основные идеи MUMPS

  • MUMPS охватывает многие области, обычно более присущие операционным системам общего назначения, которые обеспечивают функционирование и разработку прикладных программ. Кроме просто интерпретатора языка, ему присущи функции управления базами данных, и кроме того обеспечение хорошего интерфейса с устройствами ввода-вывода. В дополнение к этому, большинство из версий MUMPS допускают работу в многопользовательских и многозадачных режимах с использованием принципов разделения времени между заданиями.
  • MUMPS является интерпретирующим языком. MUMPS-команды могут запускаться на исполнение прямо с клавиатуры или записываться в виде программ на диск. MUMPS интерпретирует типы данных в контексте совершаемых над ними операций. В непосредственном режиме пользователь легко может проверить любую из языковых конструкций, с помощью отладчика провести отладку программ и их процедур, просмотреть и изменить в любой момент содержание локальных и глобальных переменных.
  • Интерпретация данных как программы (косвенность, фактически лямбда-исчисление). Два пути использования косвенности: оператор XECUTE, в котором поле данных, используемое как аргумент оператора, исполняется как набор MUMPS инструкций; использование оператора косвенности @, который позволяет заменить полями данных аргументы операторов.
  • Глобаль — массив, автоматически адресуемый для записи на диск. основная форма записи данных MUMPS. Глобали являются разрежёнными массивами и занимаемое ими пространство на диске определяется только размером данных, записываемых при индексах. Глобали могут быть распределены одновременно между многими пользователями. Глобальные переменные доступны всем процессам работающим в одной директории. индексация — организация взаимного расположения записей внутри массива называется индексацией и достигается в MUMPS с помощью индексов глобальных массивов. Индексами в этих массивах могут быть не только числа, но и любые символьные строки имеющие значение (семантику), которая затем используется в программах. например это может быть программный код обработки узла.
  • Многоосевое кодирование часто используется в медицинских информационных системах, для кодирования диагнозов и лечебных процедур которые могут иметь множественные ссылки в своем коде. Диагноз может иметь в себе элемент указывающий на поражение определенного органа тела или конкретной части органа, (например, левая вентрикулярная стенка сердца), другое поле указывает на функциональные изменения в этом месте (воспаление), третье поле указывает на причину, вызвавшую заболевание (травма). Каждое из полей является элементом иерархической структуры, комбинация трех полей создает единый код заболевания, несущий в себе три ссылки.
  • В большинстве MUMPS реализаций глобальные структуры основываются на концепции так называемых сбалансированных деревьев (именуемых также и В-деревьями). В-деревья представляют собой мощный инструмент для организации разрежённых структур с использованием ключей (индексов). При этом обеспечивается эффективный механизм записи и чтения данных с минимальным количеством обращений к диску.
  • MUMPS является строчно-ориентированным языком, каждая строка может содержать много операторов (количество ограничено только пределом длины строки — обычно 255 символов). Отдельные операторы и функции языка могут быть сгруппированы вместе в одной физической строке программы:
  • ^ [System,Directory]Name(Subscripts) — синтаксис глобальной ссылки, на программу или данные. Идентификатор System обозначает, что ссылка относится к области расположенной в той же системе (на том же узле сети), что и текущий процесс. Идентификатор области (Directory), указывает, что обращение производится к области назначенной текущему процессу при его запуске;
  • % — начало имени библиотечного массива;
  • : — пост-условие оператора;
  • $ — начало имены системных переменных;
  • [ — операция «строка содержит»;
  • ] — операция «строка следует»;
  • $Z — функции фирм-разработчиков MUMPS и не являющиеся стандартными.

Hello, world! на MUMPS

Программа Hello, world!, написанная на MUMPS, будет выглядеть так:

hello()
write "Hello, World!",!
quit

Она может быть запущена из командной строки MUMPS командой:

do ^hello()

С того момента как MUMPS стал поддерживать последовательные команды в одной строке, а команды стало возможно записывать однобуквенным сокращением, эту программу можно записать более компактно:

hello() w "Hello, World!",! q

Критика

Даже в публикациях сторонников MUMPS утверждается, что эта технология является непопулярной и нераспространённой, и новые приложения баз данных чаще всего создаются с использованием SQL и популярных языков программирования[2].

Критики MUMPS прямо называют эту технологию устаревшей[3] и указывают на такие недостатки MUMPS как[3][4]:

Язык MUMPS критики называют провоцирующим ошибки, поскольку[3][4]:

  • отсутствует обязательное объявление (декларирование) переменных;
  • не поддерживаются привычные приоритеты арифметических операций (например, выражение 2+3×10 даёт в MUMPS значение 50);
  • лишний пробел или разрыв строки может совершенно изменить смысл синтаксической конструкции;
  • ключевые слова языка не зарезервированы и могут широко использоваться в качестве идентификаторов.

Напишите отзыв о статье "MUMPS"

Примечания

  1. Джон Левкович. Всё о языке программирования и системе MUMPS, гл. 10.
  2. Brand-new database-driven applications are likely to be written in SQL and C, PHP or another popular language. MUMPS’s lack of popularity and its differences from the modern languages in widespread use are perhaps its biggest drawbacks // [www.bookrags.com/wiki/Mumps Mumps at BookRags]
  3. 1 2 3 [www.developerdotstar.com/community/node/279 Mumps: a fatal disease or a programming language?]
  4. 1 2 [thedailywtf.com/Articles/A_Case_of_the_MUMPS.aspx A Case of the MUMPS]

См. также

  • Диамс — советский диалект языка
  • HL7 — стандарт медицинской информации
  • UMLS — язык описания ресурсов медицинской информации
  • VA VistA

Отрывок, характеризующий MUMPS

Князь Андрей вздохнул и распечатал другой конверт. Это было на двух листочках мелко исписанное письмо от Билибина. Он сложил его не читая и опять прочел письмо отца, кончавшееся словами: «скачи в Корчеву и исполни!» «Нет, уж извините, теперь не поеду, пока ребенок не оправится», подумал он и, подошедши к двери, заглянул в детскую. Княжна Марья всё стояла у кроватки и тихо качала ребенка.
«Да, что бишь еще неприятное он пишет? вспоминал князь Андрей содержание отцовского письма. Да. Победу одержали наши над Бонапартом именно тогда, когда я не служу… Да, да, всё подшучивает надо мной… ну, да на здоровье…» и он стал читать французское письмо Билибина. Он читал не понимая половины, читал только для того, чтобы хоть на минуту перестать думать о том, о чем он слишком долго исключительно и мучительно думал.


Билибин находился теперь в качестве дипломатического чиновника при главной квартире армии и хоть и на французском языке, с французскими шуточками и оборотами речи, но с исключительно русским бесстрашием перед самоосуждением и самоосмеянием описывал всю кампанию. Билибин писал, что его дипломатическая discretion [скромность] мучила его, и что он был счастлив, имея в князе Андрее верного корреспондента, которому он мог изливать всю желчь, накопившуюся в нем при виде того, что творится в армии. Письмо это было старое, еще до Прейсиш Эйлауского сражения.
«Depuis nos grands succes d'Austerlitz vous savez, mon cher Prince, писал Билибин, que je ne quitte plus les quartiers generaux. Decidement j'ai pris le gout de la guerre, et bien m'en a pris. Ce que j'ai vu ces trois mois, est incroyable.
«Je commence ab ovo. L'ennemi du genre humain , comme vous savez, s'attaque aux Prussiens. Les Prussiens sont nos fideles allies, qui ne nous ont trompes que trois fois depuis trois ans. Nous prenons fait et cause pour eux. Mais il se trouve que l'ennemi du genre humain ne fait nulle attention a nos beaux discours, et avec sa maniere impolie et sauvage se jette sur les Prussiens sans leur donner le temps de finir la parade commencee, en deux tours de main les rosse a plate couture et va s'installer au palais de Potsdam.
«J'ai le plus vif desir, ecrit le Roi de Prusse a Bonaparte, que V. M. soit accueillie еt traitee dans mon palais d'une maniere, qui lui soit agreable et c'est avec еmpres sement, que j'ai pris a cet effet toutes les mesures que les circonstances me permettaient. Puisse je avoir reussi! Les generaux Prussiens se piquent de politesse envers les Francais et mettent bas les armes aux premieres sommations.
«Le chef de la garienison de Glogau avec dix mille hommes, demande au Roi de Prusse, ce qu'il doit faire s'il est somme de se rendre?… Tout cela est positif.
«Bref, esperant en imposer seulement par notre attitude militaire, il se trouve que nous voila en guerre pour tout de bon, et ce qui plus est, en guerre sur nos frontieres avec et pour le Roi de Prusse . Tout est au grand complet, il ne nous manque qu'une petite chose, c'est le general en chef. Comme il s'est trouve que les succes d'Austerlitz aurant pu etre plus decisifs si le general en chef eut ete moins jeune, on fait la revue des octogenaires et entre Prosorofsky et Kamensky, on donne la preference au derienier. Le general nous arrive en kibik a la maniere Souvoroff, et est accueilli avec des acclamations de joie et de triomphe.
«Le 4 arrive le premier courrier de Petersbourg. On apporte les malles dans le cabinet du Marieechal, qui aime a faire tout par lui meme. On m'appelle pour aider a faire le triage des lettres et prendre celles qui nous sont destinees. Le Marieechal nous regarde faire et attend les paquets qui lui sont adresses. Nous cherchons – il n'y en a point. Le Marieechal devient impatient, se met lui meme a la besogne et trouve des lettres de l'Empereur pour le comte T., pour le prince V. et autres. Alors le voila qui se met dans une de ses coleres bleues. Il jette feu et flamme contre tout le monde, s'empare des lettres, les decachete et lit celles de l'Empereur adressees a d'autres. А, так со мною поступают! Мне доверия нет! А, за мной следить велено, хорошо же; подите вон! Et il ecrit le fameux ordre du jour au general Benigsen
«Я ранен, верхом ездить не могу, следственно и командовать армией. Вы кор д'арме ваш привели разбитый в Пултуск: тут оно открыто, и без дров, и без фуража, потому пособить надо, и я так как вчера сами отнеслись к графу Буксгевдену, думать должно о ретираде к нашей границе, что и выполнить сегодня.
«От всех моих поездок, ecrit il a l'Empereur, получил ссадину от седла, которая сверх прежних перевозок моих совсем мне мешает ездить верхом и командовать такой обширной армией, а потому я командованье оной сложил на старшего по мне генерала, графа Буксгевдена, отослав к нему всё дежурство и всё принадлежащее к оному, советовав им, если хлеба не будет, ретироваться ближе во внутренность Пруссии, потому что оставалось хлеба только на один день, а у иных полков ничего, как о том дивизионные командиры Остерман и Седморецкий объявили, а у мужиков всё съедено; я и сам, пока вылечусь, остаюсь в гошпитале в Остроленке. О числе которого ведомость всеподданнейше подношу, донеся, что если армия простоит в нынешнем биваке еще пятнадцать дней, то весной ни одного здорового не останется.
«Увольте старика в деревню, который и так обесславлен остается, что не смог выполнить великого и славного жребия, к которому был избран. Всемилостивейшего дозволения вашего о том ожидать буду здесь при гошпитале, дабы не играть роль писарскую , а не командирскую при войске. Отлучение меня от армии ни малейшего разглашения не произведет, что ослепший отъехал от армии. Таковых, как я – в России тысячи».
«Le Marieechal se fache contre l'Empereur et nous punit tous; n'est ce pas que с'est logique!
«Voila le premier acte. Aux suivants l'interet et le ridicule montent comme de raison. Apres le depart du Marieechal il se trouve que nous sommes en vue de l'ennemi, et qu'il faut livrer bataille. Boukshevden est general en chef par droit d'anciennete, mais le general Benigsen n'est pas de cet avis; d'autant plus qu'il est lui, avec son corps en vue de l'ennemi, et qu'il veut profiter de l'occasion d'une bataille „aus eigener Hand“ comme disent les Allemands. Il la donne. C'est la bataille de Poultousk qui est sensee etre une grande victoire, mais qui a mon avis ne l'est pas du tout. Nous autres pekins avons, comme vous savez, une tres vilaine habitude de decider du gain ou de la perte d'une bataille. Celui qui s'est retire apres la bataille, l'a perdu, voila ce que nous disons, et a ce titre nous avons perdu la bataille de Poultousk. Bref, nous nous retirons apres la bataille, mais nous envoyons un courrier a Petersbourg, qui porte les nouvelles d'une victoire, et le general ne cede pas le commandement en chef a Boukshevden, esperant recevoir de Petersbourg en reconnaissance de sa victoire le titre de general en chef. Pendant cet interregne, nous commencons un plan de man?uvres excessivement interessant et original. Notre but ne consiste pas, comme il devrait l'etre, a eviter ou a attaquer l'ennemi; mais uniquement a eviter le general Boukshevden, qui par droit d'ancnnete serait notre chef. Nous poursuivons ce but avec tant d'energie, que meme en passant une riviere qui n'est рas gueable, nous brulons les ponts pour nous separer de notre ennemi, qui pour le moment, n'est pas Bonaparte, mais Boukshevden. Le general Boukshevden a manque etre attaque et pris par des forces ennemies superieures a cause d'une de nos belles man?uvres qui nous sauvait de lui. Boukshevden nous poursuit – nous filons. A peine passe t il de notre cote de la riviere, que nous repassons de l'autre. A la fin notre ennemi Boukshevden nous attrappe et s'attaque a nous. Les deux generaux se fachent. Il y a meme une provocation en duel de la part de Boukshevden et une attaque d'epilepsie de la part de Benigsen. Mais au moment critique le courrier, qui porte la nouvelle de notre victoire de Poultousk, nous apporte de Petersbourg notre nomination de general en chef, et le premier ennemi Boukshevden est enfonce: nous pouvons penser au second, a Bonaparte. Mais ne voila t il pas qu'a ce moment se leve devant nous un troisieme ennemi, c'est le православное qui demande a grands cris du pain, de la viande, des souchary, du foin, – que sais je! Les magasins sont vides, les сhemins impraticables. Le православное se met a la Marieaude, et d'une maniere dont la derieniere campagne ne peut vous donner la moindre idee. La moitie des regiments forme des troupes libres, qui parcourent la contree en mettant tout a feu et a sang. Les habitants sont ruines de fond en comble, les hopitaux regorgent de malades, et la disette est partout. Deux fois le quartier general a ete attaque par des troupes de Marieaudeurs et le general en chef a ete oblige lui meme de demander un bataillon pour les chasser. Dans une de ces attaques on m'a еmporte ma malle vide et ma robe de chambre. L'Empereur veut donner le droit a tous les chefs de divisions de fusiller les Marieaudeurs, mais je crains fort que cela n'oblige une moitie de l'armee de fusiller l'autre.