TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

A Case of the MUMPS (2007)

106 pointsby ahiknsralmost 2 years ago

26 comments

pavlovalmost 2 years ago
For context, MUMPS is from 1966. It’s a database access language created for hardware constraints which are hard to fathom today:<p><i>”Early MUMPS memory partitions were limited to 2048 bytes so aggressive abbreviation greatly aided multi-programming on severely resource limited hardware, because more than one MUMPS job could fit into the very small memories extant in hardware at the time. The ability to provide multi-user systems was another language design feature. The word &quot;Multi-Programming&quot; in the acronym points to this. Even the earliest machines running MUMPS supported multiple jobs running at the same time. With the change from mini-computers to micro-computers a few years later, even a &quot;single user PC&quot; with a single 8-bit CPU and 16K or 64K of memory could support multiple users, who could connect to it from (non-graphical) video display terminals.”</i><p>(<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;MUMPS" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;MUMPS</a>)<p>How would you design a programming language that operates concurrently on a large shared database with just 2 kilobytes of scratch memory available for each process?<p>Oh, and the CPU to execute these concurrent jobs clocks at 0.5 MHz, and Unix won’t even be invented for another five years, so your implementation will of course be in machine code. You’re practically designing the operating system as part of the language.<p>It’s fascinating and somewhat horrifying to think that a system designed for this bygone era still survives in its own special vertical.
评论 #36280612 未加载
评论 #36275491 未加载
评论 #36271450 未加载
jacquesmalmost 2 years ago
MUMPS (aka &#x27;M&#x27;, MUMPS loves brevity to the point of obscurity) was - without anything else coming close - the weirdest language&#x2F;runtime I&#x27;ve ever had to work with. Fun times, though, especially when someone accidentally deleted the editor. Now, how that could happen requires some insight into how mumps works under the hood: the in system editor (which, on that particular distribution was called &#x27;e&#x27;) is a string. Just like any other string you can assign a value to it and there weren&#x27;t that many safeguards in place to protect important strings.<p>Recovering from that particular &#x27;oopsie&#x27; cost me a day and a bit, part of which was to write a rudimentary editor, without an editor. I think I got some apple pie out of that one :) I don&#x27;t regret having seen the last of &#x27;MUMPS&#x27; but it is very persistent and in healthcare and insurance you still come across it every now and then.<p>Mumps has some interesting aspects though, one of these is that it raises evaluation of expressions to a way of life, and in that sense it is closer to a functional language (but with statements, if that makes any sense) than your typical interpreted language from that era, which had strict barriers between code and data.
评论 #36277186 未加载
评论 #36269948 未加载
tsurbaalmost 2 years ago
The Finnish capital area gov bought the health system from Epic systems made with Mumps for ~500 million € around 5 years ago, despite every software professional saying they shouldn’t.<p>And just like predicted it’s utter dogpoo now that it’s being deployed, and has already caused a bunch of health hazards and people quitting due to its impossibly bad and confusing interface.<p>You can guess will it be cheap to fix it now, as it probably was delivered up to the waterfall spec, and there is that one company in the world that owns the code and can change the software.<p>Worst case of corruption I’ve seen, in a country where its a saying we don’t have corruption.
评论 #36270536 未加载
评论 #36271242 未加载
评论 #36276993 未加载
评论 #36271031 未加载
SuperNinKenDoalmost 2 years ago
From <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;MUMPS" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;MUMPS</a><p>Since MUMPS interprets source code by context, there is no need for reserved words. You may use the names of language commands as variables, so the following is perfectly legal MUMPS code:<p><pre><code> GREPTHIS() NEW SET,NEW,THEN,IF,KILL,QUIT SET IF=&quot;KILL&quot;,SET=&quot;11&quot;,KILL=&quot;l1&quot;,QUIT=&quot;RETURN&quot;,THEN=&quot;KILL&quot; IF IF=THEN DO THEN QUIT:$QUIT QUIT QUIT ; (quit) THEN IF IF,SET&amp;KILL SET SET=SET+KILL QUIT MUMPS can be made more obfuscated by using the contracted operator syntax, as shown in this terse example derived from the example above: GREPTHIS() N S,N,T,I,K,Q S I=&quot;K&quot;,S=&quot;11&quot;,K=&quot;l1&quot;,Q=&quot;R&quot;,T=&quot;K&quot; I I=T D T Q:$Q Q Q T I I,S&amp;K S S=S+K Q</code></pre>
评论 #36273746 未加载
rwmjalmost 2 years ago
It&#x27;s surprising how common MUMPS is (or certainly was in the 1980s through 90s when I briefly used COSTAR). Basically if it&#x27;s an old medical records database or system it could be MUMPS. Also, very weird language, it reminded me a lot of 80s-era BASIC, if accidentally altering a variable in BASIC could corrupt some medical records.<p>Also does anyone remember MQL (&quot;Medical Query Language&quot;)? It was a way for doctors to write queries on the MUMPS database. As I recall it was totally imperative (unlike SQL) so basically any query started with an outer for loop over patient records. Any query even slightly complicated involved nested loops and the associated O(n^k) performance.<p>Edit: Found a paper describing MQL: <a href="https:&#x2F;&#x2F;www.ncbi.nlm.nih.gov&#x2F;pmc&#x2F;articles&#x2F;PMC2578357&#x2F;pdf&#x2F;procascamc00007-0772.pdf&#x2F;?tool=EBI" rel="nofollow">https:&#x2F;&#x2F;www.ncbi.nlm.nih.gov&#x2F;pmc&#x2F;articles&#x2F;PMC2578357&#x2F;pdf&#x2F;pro...</a> which includes this example:<p><pre><code> 10 FOR EACH PATIENT ; WHEN PRIMARY MD IS SMITH 20 WHEN DATE AFTER TODAY-1 YEAR, DIVISION IS DX, CODE IS TUBERCULOSIS 30 LIST NAME, UNIT NUMBER, DATE, STATUS </code></pre> (To be fair this is far more approachable than writing the equivalent in raw MUMPS)
评论 #36269551 未加载
surgical_firealmost 2 years ago
Wow, I remember reading this article when it was new. This was such a trip down memory lane. I really enjoyed The Daily WTF, but for whatever reason I stopped reading it over the years.<p>But reading this reminds me of my favourite article there: <a href="https:&#x2F;&#x2F;thedailywtf.com&#x2F;articles&#x2F;itappmonrobot" rel="nofollow">https:&#x2F;&#x2F;thedailywtf.com&#x2F;articles&#x2F;itappmonrobot</a><p>It has an odd beauty to it.
评论 #36270031 未加载
评论 #36269896 未加载
lgessleralmost 2 years ago
Used to write MUMPS at a certain company, and there were lots of &quot;wtf&quot; moments but this is one I&#x27;m particularly fond of. In the system, all dates are represented as an integer starting from an arbitrarily defined earliest date represented as 0, December 31, 1840 (<a href="http:&#x2F;&#x2F;www.mumps.cz&#x2F;gtm&#x2F;books&#x2F;pg&#x2F;UNIX_manual&#x2F;webhelp&#x2F;content&#x2F;ch08s05.html" rel="nofollow">http:&#x2F;&#x2F;www.mumps.cz&#x2F;gtm&#x2F;books&#x2F;pg&#x2F;UNIX_manual&#x2F;webhelp&#x2F;content...</a>). OK, fine, whatever. But another fact about MUMPS is that associative arrays (= Python dictionaries, or Java maps) are automatically sorted. Weird language feature, and probably a questionable one, but also on its own, not the worst thing in the world.<p>However, these two facts put together mean that date-keyed associative arrays are always ordered from earliest to latest, and for reasons that I&#x27;ve forgotten, it was at least at one point inefficient to use the MUMPS facilities for reverse traversal of the associative arrays.<p>The solution? Defining <i>another</i> date format, which is `121531 - $d` where `$d` is a value in the standard MUMPS date representation. This was then used instead of or alongside the standard representation for indexing associative arrays.<p>Practically, this was a huge hazard for code correctness as you needed to be absolutely sure of which format the date number was in. This additionally marks Monday, September 27, 2173 as the festive occasion of date sorting doomsday, as it is the date on which the secondary format would cross over into negative values and probably start causing all kinds of subtle bugs throughout the system. Let&#x27;s hope we will have moved on to better systems by then!
评论 #36274131 未加载
n8henriealmost 2 years ago
I&#x27;m an emergency physician in a US healthcare system (run by the federal government) whose electronic medical record is apparently written in MUMPS.<p>Dealing with simultaneous crashing patients and crashing EMRs is a challenge. Daily popups notifying me of out-of-bounds index errors or [insert memory safety error] that I&#x27;ve given up screenshotting and sending to IT, because none of them know MUMPS either. Can&#x27;t order a critical medication or view the result of a critical lab result because EHR is crashing again...<p>In spite of at least basic familiarity with bash, python, go, rust, nix, and having at least looked into Haskell, Common Lisp, and a few others... the few snippets of our EHR&#x27;s backend MUMPS I&#x27;ve seen completely unintelligible to me.<p>My understanding is that the bus factor for vast swaths of our EMR infra is ~1.
评论 #36277032 未加载
z3ugmaalmost 2 years ago
I quite liked working in M (fka MUMPS) when I had the chance to.<p>It&#x27;s terse. Language commands can be abbreviated to one letter, and the syntax is whitespace-aware, so you can fit a lot of code on one computer screen, take it in, and review it.<p>If you&#x27;re curious, I wrote a tutorial for it at <a href="https:&#x2F;&#x2F;learnxinyminutes.com&#x2F;docs&#x2F;m&#x2F;" rel="nofollow">https:&#x2F;&#x2F;learnxinyminutes.com&#x2F;docs&#x2F;m&#x2F;</a>
评论 #36274856 未加载
评论 #36274771 未加载
quickthrower2almost 2 years ago
Shows you how varied career trajectories can be. Most people need a job for money and in a shitty market anyones first job can be like this, even if they have potential to be great, this can set people back. Really I advise anyone to default look for another job as soon as they get their first one. (Whether you take that job depends, but good to see what else there is once income has been secured)
评论 #36269510 未加载
评论 #36270115 未加载
atemerevalmost 2 years ago
Some of the ideas from MUMPS (like global transparent object persistence) were useful, and with the syntax modernized and some rough edges smoothed, you can enjoy them with MUMPS spiritual successor, YottaDB. I highly recommend it to try.
lanman95almost 2 years ago
I still work with Meditech Magic, which is derived from MUMPS. Meditech was founded by Neil Pappalardo, the original developer of MUMPS. A strange system for sure, but it is incredibly fast and reliable. Since the early 2000s it has run on top of Windows Server, and uses a proprietary terminal emulator and encrypted telnet for establishing connections to the system. Magic has long been eclipsed by their newer 3-tier and web platforms, though there&#x27;s still lots of Magic installations still out there.
评论 #36280651 未加载
dangalmost 2 years ago
Related:<p><i>M, or MUMPS is a procedural language with a built-in NoSQL database</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19388048" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19388048</a> - March 2019 (2 comments)<p><i>MUMPS</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18936990" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18936990</a> - Jan 2019 (6 comments)<p><i>Introduction to the Mumps Language (2017) [pdf]</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=16309237" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=16309237</a> - Feb 2018 (42 comments)<p><i>The Mumps Programming Language</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13859961" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13859961</a> - March 2017 (178 comments)<p><i>MUMPS Instance</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13618649" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13618649</a> - Feb 2017 (1 comment)<p><i>Ask HN: Encryption and Security in MUMPS</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13542953" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=13542953</a> - Feb 2017 (4 comments)<p><i>50 year old NoSQL DB that is better than MongoDB</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12791425" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=12791425</a> - Oct 2016 (2 comments)<p><i>MUMPS, the Archaic Health-Care Programming Language</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9895311" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9895311</a> - July 2015 (49 comments)<p><i>I am a MUMPS programmer – Ask me anything</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=6312391" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=6312391</a> - Sept 2013 (68 comments)
评论 #36274862 未加载
评论 #36276794 未加载
hwcalmost 2 years ago
I had the exact same experience.<p>The company in question is Epic Systems, maker of very popular medical records software.
评论 #36270510 未加载
评论 #36269309 未加载
评论 #36269659 未加载
评论 #36270252 未加载
评论 #36269695 未加载
saagarjhaalmost 2 years ago
Maybe my mind has already gone insane but I’m reading the part where the company is using the language “cleverly” and all I’m seeing is software engineering practices being applied to a language to make it scale across large projects. Sure, you can be upset that the language sucks or whatever, but given that you have a bunch of legacy code in a language that doesn’t have modern affordances, these all seem very reasonable and in some cases almost admirable. I’ve been in codebase with similarly poor languages (BASIC, C, assembly) and doing things like imposing “namespaces” or refactoring code into “modules” within the confines of what your tools let you do would have been very helpful.
评论 #36285819 未加载
Rochusalmost 2 years ago
Yet another fascinating technology from the sixties still in use today; at least the database part of it came back into fashion with NoSql; the language, on the other hand, does not exactly promote readability.
评论 #36269500 未加载
评论 #36269060 未加载
jim_lawlessalmost 2 years ago
I knew of a financial system running on a DEC VAX some years ago that used MUMPS. I also know a programmer who had been employed at a local telemarketing company in the 1990&#x27;s. That company used MUMPS.<p>He had said that they had their star-programmer there who could dash out complicated MUMPS data queries in very short order. My friend said he had some fun programming in it, but he left the telemarketing company to move on to more conventional programming languages.
drallisonalmost 2 years ago
I worked on the MUMPS Standard when I taught in the Medical Informatics Committee at UC San Francisco. When I first encountered the language, I was appalled. For example, in pre-standard MUMPS, lines with no trailing blanks and lines with one trailing blank had a different interpretation. For those interested, <a href="https:&#x2F;&#x2F;nvlpubs.nist.gov&#x2F;nistpubs&#x2F;Legacy&#x2F;hb&#x2F;nbshandbook118.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;nvlpubs.nist.gov&#x2F;nistpubs&#x2F;Legacy&#x2F;hb&#x2F;nbshandbook118.p...</a>. At one of the standardization meetings, I embarrassed myself by called MUMPS a &quot;viral disease&quot; because of the pathology of the programming language as defined to an audience of people who saw it as a practical tool they used every day. The standard helped stabilize the language. I acquired an appreciation for the incredible skill application programmers can adapt a general purpose extensible language to do their bidding.
frr149almost 2 years ago
MUMPS: A lousy language with a brilliant data structure
评论 #36269405 未加载
评论 #36269322 未加载
ivraatiemsalmost 2 years ago
A couple of things that have changed (allegedly) at the company described in this post since the time it was written:<p>* Most of the non-M&#x2F;MUMPS code is now written in C# with a TypeScript&#x2F;JavaScript web front-end. The M stuff is all database stuff and VB is pretty much gone.<p>* The toolchains used to manage M code and work around all the complex idiosyncrasies of the language are vastly improved and abstract away a lot of the pain of working in it (that isn&#x27;t directly the result of the language itself, of course).<p>* The cleverness has gone off the charts, and so has the insanity. (The company tried to force all developers to work in-office during COVID until the county told them to stop it.)<p>Or so I&#x27;ve been told.
cafardalmost 2 years ago
Some years ago, I co-worker&#x27;s son got two offers for summer jobs: one in New York for a financial company, one in Minnesota for a company making health-systems software. The latter used MUMPS. I advised her that the son should take the New York job.
评论 #36270488 未加载
itsTelaxalmost 2 years ago
This hits home as I am a case of &quot;Bryan&quot;. 7 years of MUMPS,PSL experience as it was the first software developer job that I was offered. Always knew that I will need find a way to get out of it ...
quercusaalmost 2 years ago
HL7 starts to make more sense to me now.
评论 #36277040 未加载
评论 #36273919 未加载
评论 #36271266 未加载
markus_zhangalmost 2 years ago
Actually I don&#x27;t mind if I can land a 10-year job without much BS. Give me the job if it is...
lucas_membranealmost 2 years ago
So here&#x27;s the question: Was Dick Pick, the creator of Pick BASIC, vaccinated with MUMPS? Pick BASIC was sort of like a version of MUMPS for people who could not afford to go to the hospital, easier to swallow, but with similar side-effects impairing cognition. One severe case of cognitive decline from Pick BASIC became visionary, yielding Advanced Revelation.
BeFlatXIIIalmost 2 years ago
Larry Wall must&#x27;ve been a MUMPS fan (at least when he was designing Perl syntax)
评论 #36270125 未加载