A nice case of Mumps?
Mumps, now known as M, is a widely used language in American health care.
I have a soft spot for “legacy” languages – and I, for one, like getting legacies. Back in my day, we expected to learn new languages for different projects (learning Simula for a port simulation, for instance, made a lot more sense than trying to “standardise” on COBOL; or even FORTRAN, the usual simulation language then). So I was interested when a Register reader, Thomas H. Martin of Georgia, USA, emailed in praise of M, once known as MUMPS.
M is a high-level operating language with extremely strong data manipulation capabilities, Martin explains. “M was originally started at the Massachusetts General Hospital as a health care language, similar to Basic in being totally interpretive and compiled at run time,” he says, but “today M is pre-compiled and, in today’s implementations, extremely fast”.
According to Martin, “M has a rapid application development time; jobs that in some languages take from months to years can be done in days to weeks.” He enumerates some of the characteristics of M:
- Fast development time
- Easy to change your coding
- Uses sparse arrays, where data space is not allocated until actually needed
- Handles integers, floating point or text without having to differentiate between them
- Only 26 commands support the entire language
- Variables may be set up on the fly; no need to dimension them at program start
- Files may be created and indexed on the fly
- You can code functions on the fly
- High-level commands are available for interacting with the host OS
- You can scale data storage up into hundreds of terabytes
- There's a full compliment of management utilities, including database repair without third-party participation
- It supports "Post-conditionality", a concept not found in any other language Martin is aware of
- It can interface with Windows via a broker
- It can use HL7 (ANSI standards for the exchange, management and integration of electronic healthcare information) to communicate with any other computer in the world
- It supports string lengths of up to 32767 bytes
- It supports the construction and use of objects
- It can create web-based applications, using objects and “server pages”
- It integrates with other M applications easily and seamlessly
Out of that list, I'd pick the sparse array handling and the compact nature of M itself (only 26 commands – reminds me of REXX and I like that too, especially as it has open implementations; as, of course, does M); and perhaps the scalability, management and database repair facilities, as indicators of what makes M different. On the other hand, I'd have to do some extra reading on “post-conditionality”; and not having to distinguish integers from text (and not having to declare variables) worries me a bit - I can see how they're useful but, IMHO, such features can make for interesting errors if misused – as in FORTRAN.
Principally, according to Martin again, M is a “roll ‘n’ scroll” language that uses terminal emulators - almost any terminal emulator will do as long as it can emulate at least a VT-100 – and, of course, this immediately makes M a loser in the fashion stakes. However, M's approach is far more efficient (in terms of screen real-estate) for data entry than a Windows screen.
As "UK plc" is in the process of upgrading the UK National Health System (NHS), it's worth noting that the most famous implementation of M is in the US Department of Veterans Affairs Hospital system: VistA; which stands for Veterans Health Information Systems and Technology Architecture. This hospital system is totally electronic, requires no paper record storage and, Martin says, completely supports all hospital functions, including Lab, Radiology, ADT/Scheduling, HL7 and many others.
Its file management system is the VA Filemanager, based on an application created in the 1970s by George Timson. This system, it's claimed, is simple to use, provides a complete data dictionary for an application and is self-documenting. The VA system supports all M platforms and is now public domain. Recently, it has been scaled down to operate individual physician offices and, for the first time, physician offices can be totally automated for the cost of the equipment needed and an M license.
This sounds like a good “success reference” for the NHS – is the "new NHS" likely to be running as well 35 years after first implementation? And will we still be commemorating the names of its architects? Of course, with modern technology, it should be far more successful – but I wonder...
Today, Martin tells me, there are only a few M operating systems. In the past, there was Micronetics Mumps, Greystone Mumps (GTM), Digital Standard Mumps (DSM-11, VAX DSM), Datatree and Open M. A few years back, however, Intersystems Corporation bought out all but GTM, and now we have Caché, a very high-level, multi-platform implementation of M, and also a successful “post relational” DBMS in its own right (and not limited to M, of course). But today, you can run M on practically any platform/operating system.
So, should all of you out there learn M today? That's a big question, and I really doubt if it's for everyone, but there are certainly good reasons for adopting Caché, for large, modern, database-oriented systems – and then M is available as a “free-ish” gift (there'll be training and cultural costs, of course, if not others). At the very least, I think M is rather more than just an interesting part of programming history – and, like much of our “legacy”, is still in use in some successful systems.®
David Norfolk is the author of IT Governance, published by Thorogood. More details here.