fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Присоединяйтесь к революции М

Присоединяйтесь к революции М

Если да, то будущее здравоохранения теперь в ваших руках.

Что вам нужно сделать?

Изучить язык программирования М и научить ему других.

Что такое язык программирования М?

Язык программирования M также известен как MUMPS. Что расшифровывается как Massachusetts General Hospital Utility Multi-Programming System.

M – это многопользовательский, строго императивный язык, разработанный для

манипулирования и управления массивными базами данных. Он используется в нише компьютерного рынка с высокой доступностью и надежностью, которая включает в себя банковское дело и больницы. Он предоставляет простые абстракции данных, в которых все значения данных являются строками символов, а все данные могут быть структурированы как многомерные массивы. Структуры данных M разрежены, в качестве подзаголовков используются строки символов. Сам по себе M – это язык, объединенный с механизмом баз данных.

Сложно ли изучать язык M?

Вот обычная программа Hello World, написанная на языке M:

Белые пробелы в M имеют большое значение. Команды обычно начинаются со второго столбца. Аргументы отделяются от команд одним пробелом.

Скучен ли язык M?

Вовсе нет, M начинается легко и быстро становится интересным.

Вот одна из самых интересных возможностей M – разреженный индексированный массив:

В этом примере строки “Main Street”, “1056”, “Apt 23” и “August 15” используются в качестве индексов в разреженном массиве “ClientAddresses”.

Разреженные массивы – это одна из особенностей, которая делает M уникально подходящим для приложений здравоохранения, поскольку он соответствует естественной разреженности данных, возникающих в результате серии маловероятных событий, составляющих медицинскую карту.

А вот серия Фибонначи, вычисленная в M:

В число учреждений, использующих M, входят: AmeriPath (теперь часть Quest Diagnostics), Care Centric, Epic Systems Corporation, EMIS, Partners HealthCare, MEDITECH, GE Healthcare (ранее IDX Systems и Centricity), больницы Министерства по делам ветеранов, Министерства обороны и Индийской службы здравоохранения. Среди финансовых пользователей: Ameritrade, крупнейшая в США служба онлайн-трейдинга с более чем 12 миллиардами транзакций в день, а также Банк Англии и банк Barclays.

Почему я никогда не слышал о M (или MUMPS)?

Область применения M очень специфична для высоковостребованных и высокопроизводительных баз данных, требующих поддержки разреженных данных. Большинство разработчиков M уже много лет работают в специфических нишах высокопроизводительных медицинских и финансовых приложений. Инициатива по внедрению EHR во всех больницах США выводит программирование на M на первый план, где потребуются тысячи разработчиков для обслуживания и поддержки всех этих установок.

Крут ли M? Могу ли я писать на нем мобильные приложения?

Как только вы освоите основные приемы программирования на языке M, вы можете проверить EWD, среду Enterprise Web Development, и начать взаимодействовать с приложениями баз данных M с мобильных устройств, включая iOS и Android [2].

Я увлекаюсь базами данных NoSQL. Почему меня должна интересовать база данных M?

Потому что M – это база данных NoSQL. M – это действительно язык, в который интегрирован механизм базы данных для постоянного хранения данных. M существовал задолго до появления SQL. Кроме того, M – это высокомасштабируемая и надежная система баз данных.

Вполне вероятно, что ваша платежная ведомость и ваш банковский счет управляются базой данных M.

Как настроить среду программирования M?

Вы можете получить виртуальную машину с уже установленной на ней средой программирования M здесь:

Или вы можете следовать инструкциям на этой странице, чтобы создать свою собственную:

В обоих случаях вы будете использовать реализацию M с открытым исходным кодом под названием GT.M [3], разработанную и поддерживаемую компанией Fisglobal [4].

Где я могу узнать больше об M?

Эта статья должна стать первой в серии. В следующей части мы рассмотрим M 101 – базовое введение в программирование на языке M, включая основы управления потоком и подпрограммы.

Если у вас есть конкретные вопросы и темы, которые вы хотели бы обсудить, пожалуйста, напишите их в комментариях, и я рассмотрю их в последующих статьях.

Возможно, вам также будет полезно ознакомиться со следующими книгами:

  1. M Programming by Richard F. Walters
  2. The Complete MUMPS by John Lewkowicz

Ссылки

31 Комментарии

Почему будущее здравоохранения должно быть написано на MUMPS?

Здравоохранение – это отрасль, которая отстает в технологиях как минимум на 10 лет, не кажется ли вам, что продвижение MUMPS вместо продвижения использования более новых технологий (в данном случае языков программирования) в IT-здравоохранении противоречит движению здравоохранения в “будущее”?

Здравоохранение, и особенно новые люди, приходящие в сферу медицинских ИТ, должны использовать все новые открытия, которые были сделаны с момента создания MUPS более 50 лет назад, вместо того, чтобы перенимать все плохие привычки, которые уже есть в отрасли.

Спасибо, что поделились этой статьей и что обратили внимание на ИТ-индустрию здравоохранения!

Как давний пользователь M, я расстраиваюсь, когда все говорят о “языке M”. Сильной стороной M является не язык (не то чтобы он был плох, но он довольно устарел), а база данных. Язык М” отлично справляется с управлением этой базой данных, а также со значительной частью закулисной бизнес-логики. Однако он не приспособлен для работы с современными пользовательскими интерфейсами. Мы используем HTML, Javascript, Ajax, node.js, Adobe flex и другие для нашей “фронт-эндовой” работы. Нет причин, по которым вы не можете использовать любой язык или инструмент разработки для выполнения этой части работы. Попытка втиснуть данные о здравоохранении в таблицы SQL – это гораздо худшее занятие.

Но проблема лишь в том, что очень немногие люди в мире ИТ знают о технологии M, а когда вы начинаете, вам нужно знать основные команды, для которых нам нужно выучить MUMP. Несомненно, база данных – это вещь, но внезапно пытаться выучить язык без какой-либо доступной помощи.

Но проблема лишь в том, что очень немногие люди в мире ИТ знают о технологии M, а когда вы начинаете, вам нужно знать основные команды, для которых нам нужно выучить MUMP. Несомненно, база данных – это вещь, но внезапно пытаться выучить язык без какой-либо доступной помощи.

Очевидно, люди говорят, что программное обеспечение VistA намного быстрее работает с MUMP, чем с любым другим современным языком программирования, и никто из IT-компаний не заинтересован в экспериментах в эти дни.

Вы привели хороший аргумент. Вы правы, будущее не обязательно должно быть написано на языке M.

Однако реальность на земле и в настоящем такова, что лучшие EHR и те, которые имеют самые большие развертывания в США, написаны на M, как проприетарные, так и с открытым исходным кодом. Это десятки миллионов строк кода, которые в настоящее время работают в тысячах медицинских учреждений. Для поддержки этого программного обеспечения необходимо активное сообщество.

Аргумент, что “язык старый”, сам по себе не состоятелен. То есть, языки не устаревают. Настоящая проблема возникает, когда на языке говорит недостаточное количество людей, и именно эту проблему призвана решить данная серия сообщений.

Дело не в том, что “M – единственный вариант”, а в том, что “M – действительно важный вариант”, и что в этом пространстве необходимо новое поколение разработчиков.

Должны ли другие по-прежнему выбирать программирование на C++, Python или Java? Конечно, почему бы и нет.

Но это не меняет текущей реальности, где десятки миллионов строк кода M работают в учреждениях здравоохранения, и для их поддержки потребуется большое сообщество. Это проверенные системы, которые в настоящее время ежедневно спасают жизни людей и снижают стоимость оказания медицинской помощи.

Для молодых разработчиков, желающих участвовать в значимых проектах, M – отличный вариант.

Вы правы. Языки не устаревают.

И да, если программист хочет работать в некоторых компаниях, которые вы упомянули, то, безусловно, M – это вариант для него.

Но, на мой взгляд, эти компании и их решения не меняют здравоохранение. Это старые и дорогие решения.

Я к тому, что зачем пытаться перевести людей на язык, на котором никто не говорит, вместо того, чтобы перевести отрасль на современные тенденции, которые нравятся всем вокруг – я не говорю о том, чтобы изменить кодовую базу компаний/решений, которые вы упомянули, а наоборот, создать новые продукты под более новые и сексуальные архитектуры, которые все ищут.

Я считаю, что если бы больше компаний в здравоохранении программировали на node.js, rails, NoSQL (не M. ), python/django и т.д., то больше программистов было бы привлечено в отрасль. Как вы думаете?

Спасибо за ответ!

Да, я согласен с вами в том, что другие более новые технологии также должны сыграть важную роль в сфере здравоохранения.

В частности, я рад, что вы упомянули node.js, поскольку это подводит нас к разговору о EWD ) – “Enterprise Web Development”, Ajax-фреймворке, который облегчает написание приложений, управляемых базами данных. EWD интегрирует модель безопасных сессий в веб-фреймворк реального времени, основанный на Node.js и Javascript. На стороне сервера EWD взаимодействует с базой данных M. Это пример того, как новые и старые (проверенные) технологии могут быть успешно объединены для удовлетворения потребностей пользователей. На лицевой стороне мы получаем графический интерфейс пользователя, который может быть развернут на iPad и Android, а на стороне сервера мы получаем надежность, масштабируемость и скорость базы данных M.

На самом деле мы будем использовать EWD и M в нашем текущем классе открытого кода в RPI, ) для выполнения классных проектов, объединяющих мобильные устройства, которые подключаются к установкам VistA.

Вы также упомянули python и django, что тоже интересно. Студенты в нашем классе также будут работать над проектами, связанными с Indivo ), используя python и django.

Вы правильно поняли, что M – не единственный путь к будущим приложениям в здравоохранении, и что множество различных технологий будут играть в этом пространстве совместную роль. Как и в других областях применения, важно использовать правильные инструменты для каждого из различных компонентов системы.

Я видел эту систему в работе, это очень мощная система, которая выкуривает практически любую другую распределенную систему, которая может быть создана с помощью более новых технологий. Прежде чем вы меня упрекнете, я старый архитектор-разработчик на C, Unix, Java, JEE. В этом пространстве язык M следует рассматривать как специфический язык домена (DSL). Конечно, вы можете написать любое из приложений, используемых в VistA, на других языках, но уровень усилий и выразительность языков не сравнятся с тем, что могут сделать разработчики M; по крайней мере, без значительных усилий. Тот, кто думает, что это БС, явно не изучал ни язык, ни БД. Конечно, в БД есть недостатки, связанные с транзакциями, но она разработана для адаптации к потребностям больниц и медицинских таксономий в целом. В связи с этим требуется большая гибкость, и именно это сделало дизайн VistA таким надежным. Она допускает динамические изменения и не требует разработки схемы заранее. Медицинская сфера динамична, в отличие от многих других видов бизнеса. Здесь существует масса правил и специфической информации, которая приведет к тому, что любая реляционная СУБД, пытающаяся делать подобные вещи, потерпит полный крах; я убедился в этом на собственном опыте. Я и раньше видел аргументы в пользу новых технологий, и раньше был на их стороне, но в данном случае M – это правильный язык и БД для этого решения. Расширение его возможностей с помощью RESTful API и тому подобных вещей – это, конечно, замечательная вещь, и, безусловно, ее следует делать. Но не стоит выплескивать ребенка вместе с водой из ванны.

Отличная статья. Я работал с M более 2 десятилетий в различных медицинских учреждениях. Удивительно, как она поддерживала многопользовательские системы от 286-х компьютеров до миникомпьютеров (помните их?), от мэйнфреймов IBM до современных серверов. В одной крупной компании одно и то же приложение работало на OpenVMS, Unixware, Linux и Windows. Хотя есть области, в которых он не подходит, для хранения и доступа к большим объемам индексированных данных его трудно превзойти.

А синтаксис базового языка не создает такого барьера для входа, как некоторые более современные языки.

Спасибо за отличную статью! Я программировал на M в течение 20 лет как в здравоохранении, так и в банковской сфере.

Я понимаю, что автор из Open Souce, но действительно несправедливо говорить о M без упоминания InterSystems, особенно когда все приведенные организации (кроме MEDITECH) являются долгосрочными клиентами Caché/Ensemble, А НЕ GT.M´s .

Да, спасибо, что указали на это.

Я намеренно придерживаюсь GT.M. ( ), потому что это то, что я планирую использовать для последующих обучающих постов, и, конечно, как вы указали, потому что это открытый исходный код.

Но вы правильно заметили, что Intersystems Cache ) имеет большое значение для сообщества M.

Тридцать с лишним лет назад я начал использовать MUMPS и существовавший тогда VA File Manager в академическом амбулаторном отделении для внедрения системы записи на прием к врачу и приложения для отслеживания результатов лабораторных исследований. В то время как университетская больница потратила 4,5 миллиона долларов на красивую систему HIS на базе IBM, которая не удовлетворила медицинский персонал и была выброшена через несколько лет, мы потратили несколько тысяч и получили то, что прослужило более десяти лет! Сегодня я все еще использую MUMPS для работы с наборами данных, с которыми другие, похоже, не могут справиться с помощью сексуальных, “современных” инструментов. Конечно, базовый интерфейс терминала MUMPS нельзя назвать красивым или сексуальным, но язык обладает мощными возможностями работы со строками, база данных работает невероятно быстро, а благодаря разреженным массивам она занимает минимум места на диске. Таким образом, я могу носить с собой на ноутбуке всю большую больничную базу данных! Попробуйте сделать это с одной из “современных” РБД. Я использую и Caché, и GT.M, и если не считать того факта, что мне приходится платить за многопользовательскую емкость в одной из них, но не в другой, они обе работают отлично. И оба предоставляют свои данные и обработку строк инструментам графического программирования, которые выглядят современно и сексуально – так что мы можем порадовать пользователей как внешним видом, так и производительностью. “Современный и сексуальный”, безусловно, относится к новому Porsche, но под капотом находится двигатель, работающий по циклу Отто, разработанному в 1876 году. Конечно, есть более новые альтернативы, такие как газовые турбины и роторные двигатели, но двигатель цикла Отто стоит в этом Porsche, или Lamborghini – называйте как хотите – потому что он все еще работает для данного применения по (иногда) разумной цене. Вот почему MUMPS по-прежнему является двигателем под капотом многих высокопроизводительных систем обработки данных: он работает превосходно и по цене, которая имеет экономический смысл.

Когда вы сказали “носить всю базу данных больницы с собой на ноутбуке”, я не мог не вспомнить обо всех новостях, где такие ноутбуки были потеряны или оставлены в такси. Надеюсь, вы хотя бы шифруете диск.

Спасибо за отличную статью! Я начал использовать MUMPS 20 лет назад (Epic Systems) и получил огромное удовольствие.

В 2011 году я начал разрабатывать Java Framework вокруг MUMPS (фокус на GT.M, но он должен быть перенесен на Caché). Мне нравится гибкость хранения и индексирования данных MUMPS, но я хочу, чтобы мой веб-сервер и большинство бизнес-логики были на Java.

Мой фреймворк все еще находится на ранних стадиях разработки. Но всем заинтересованным стоит заглянуть сюда http://www.divconq.com/ .

LOL – день апрельских дураков в следующем месяце, ребята.

Это антикварный тотальный таймвастер, который просто испачкает ваш мозг. Идите изучайте “Perl” или что-нибудь другое полезное, что действительно используется в банках и т.д. в наши дни.

(и да – я работаю в банке).

MUMPS используется в банках (GT.M нацелен на этот рынок), а также в кредитных союзах. Я полагаю, что Caché используется в TD Ameritrade.

Видимо, в здравоохранении это недостаточно полезно.

Молодец “Unidentified” – ты работаешь в банке и знаешь perl – который, конечно, является одним из тех языков нового поколения, и банки любят его за простоту использования и то, как он может обрабатывать данные миллионов клиентов в мгновение ока.

Mumps все еще занимает свое место, и для любого, кто пренебрегает им на основании его возраста, явно нужно пойти и прочитать еще несколько брошюр.

Отвергая что-то на основании его возраста, вы поступаете несправедливо по отношению к нашим старшим в человеческом смысле и к другим предметам в смысле DP: . Unix и его потомкам (Linux, BSD и т.д.) . C++, C# и другие потомки C . Lisp/Scheme/etc, который до сих пор жив и здравствует, и чьи черты проявляются в более новых языках.

Альтернативой может быть eXist DB и собственная база данных XML. Markmail использует ее, и производительность с использованием Xquery заслуживает внимания. Это позволит использовать SOA и восстанавливаемые веб-сервисы, где могут быть использованы другие веб-технологии.

Вот это да! Взрыв из прошлого. В свое время я работал со всеми крупными компаниями в мире MUMPS: InterSystems, DEC и Greystone.

У MUMPS много классных возможностей, которые даже сегодня кажутся передовыми, но в 1970-х они были просто невероятными. Например, он без типов; все является строкой; мы не называли это так в то время, но он почти объектно-ориентированный, если A=”1.2″ и B=”3.4″, то A+B=”4.6″, но если вы их конкатенируете (я забыл синтаксис), то это будет “1.23.4”.

Кроме того, код программы хранился в базе данных, *и мог быть изменен сам по себе*! Да, код был данными, а данные могли быть кодом. *множество* MUMPS-кодов формируют строку кода и затем выполняют ее. Дикие, дикие вещи.

Что касается того, что это выглядит старо, да, наверное, так и есть. Но посмотрите на “Pig” для Hadoop. В нем явно чувствуется ретро. MUMPS впишется в эту систему!

Я с нетерпением жду остальных статей!

Похоже, что MUMPS – это скорее оболочка сценариев / среда, наложенная поверх SQL-сервера или чего-то подобного, а не “язык” как таковой. Кажется, что можно легко написать серию MUMPS скриптов и вызывать/управлять ими из BASH среды на Linux хосте, или даже через cgi/java скрипты с HTML сервера.

По-видимому, лучшим вариантом будет упрощение создания и взаимодействия с реляционной базой данных произвольного содержания.

На самом деле, мне кажется, что это не слишком отличается от скриптов icicle, которые мы писали для доступа к нашей базе данных на работе.

Не путайте зрелость метода с его слабостью. Я часто пишу на Си и ассемблере; в основании пирамиды есть сила.

“Кажется, что MUMPS – это скорее скриптовая оболочка / среда, наложенная поверх SQL-сервера или чего-то подобного” – это не может быть дальше от истины! Я начинал писать для DEC PDP/11 и VAX/VMS, где на PDP MUMPS был операционной системой (поиск по DEC DSM). Его язык и база данных с иерархическим хранением, в отличие от структурированного (SQL) – и позже он получил слои SQL, чтобы быть совместимым с большим количеством приложений “бизнес-объектов”, но обычно данные все еще были иерархическими с отображением данных, происходящим за сценами SQL (кто-нибудь помнит EDA-SQL?). На VMS и Unix он даже имел прямые интерфейсы к сокетам TCP/IP, где все становилось действительно интересным, поскольку открывало совершенно новый мир. Еще в конце 90-х (согласно сообщению в google groups за февраль 1998 года) я запускал веб-сервисы прямо из движка базы данных.

Я могу назвать банки, торговые площадки, солиситоров, супермаркеты, розничные магазины, страховые брокеры, которые использовали эту систему.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *