4 ms·
MUMPS
- EvanAnderson 1y agoWorth linking for a hotter take: https://thedailywtf.com/articles/A_Case_of_the_MUMPS https://thedailywtf.com/articles/A_Case_of_the_MUMPS
- BeFlatXIII 1y agoS Y=$C(34),X="W ""S Y=$C(34),X=""_Y X ""F %=1:1:6 W $P(X,Y,%),Y,Y"" W Y,"" X X""" X X
- roywiggins 1y agoI ran across SHA1 implemented in MUMPS once. And handwritten bitwise operations, since MUMPS doesn't have those as operators.
- timschmidt 1y agoOof. Unrelated to MUMPS, but the worst I've ever run into was a reimplementation of PHP's register_globals 20 years after it'd been patched out as a security nightmare, because the developer enjoyed the convenience.
- roywiggins 1y agoOne fun thing about MUMPS is that if you don't use the newfangled "new" keyword when declaring them, variables iirc are all global to the file. Or record, or whatever not-quite-a-file entity contains source code in MUMPS systems (8 character hard limit on filenames) And of course some code ends up relying on ambient global state to function properly, so the codebase is strewn with "environment setting" methods that set up the required globals before you call the functions that rely on them. The other fun one iirc is that calling a function inside the "true" branch of an IF can clobber the global TEST flag and cause the "false" branch to execute as well, since the "else" keyword relies on $TEST to decide what to do. The fix is to end it with a noop "if true" to unclobber $TEST. The other worst MUMPS code was MUMPS code that used string concatenation to generate more MUMPS code from the worst DSL you've ever seen, MUMPS code that seemed to partially implement a MUMPS interpreter...
- Forge36 1y agoA statement that writes itself? Neat!
- dang 1y agoA Case of the MUMPS (2007) - https://news.ycombinator.com/item?id=36268931 https://news.ycombinator.com/item?id=36268931 - June 2023 (109 comments)
- tkclough 1y agoI work in MUMPS daily and this is such an odd take to me. It's entirely possible to write very readable and maintainable MUMPS, and I find it fairly pleasant to write. There's lots of poorly written code, sure, but you can write bad software in any language.
- surgical_fire 1y agoClassic. Probably one of their best articles.
- kiernanmcgowan 1y agoHey there to all the EPIC kids poking their head in this thread. Where did you all end up post-EPIC?
- vwem 1y agoWent to a smaller company for a short time, than ended up at FAANGs. Epic had some nice features and it was really cool working directly with nurses and doctors. But it has some churn issues and the software sucks to use, especially with Epic's insistence on "all software built in house". While a good marketing ploy, it results in reinventing crappier wheels.
- caycep 1y agoas a long suffering user, it always seemed like an ancient enterprise app. Always have to log in through some horrible Citrix setup to use it too...
- mandevil 1y agoLooks like someone just got hired to work at Epic!
- paxys 1y ago> First appeared 1966; 59 years ago That's honestly impressive. Though I don't envy people who have to work on this stuff.
- exizt88 1y ago> OPERATORS: No precedence, executed left to right, parenthesize as desired. 2+3*10 yields 50. How do you even come up with this?
- Jtsummers 1y agoIt's easier to parse since you can process it in-order, makes for an easier single pass approach.
- tbrownaw 1y agoSimplicity of implementation?
- skissane 1y agoNot just simplicity-the original implementation was for a very resource-constrained 1960s minicomputer, where a more complex implementation would have slowed the system down even more and left less memory for running the actual business application
- jorkingit 1y agoSmalltalk does the same thing!
- valleyer 1y agoBecause it's dead-simple to parse? Remember that not all machines back then had hardware call-stacks.
- tuveson 1y agoIt’s definitely easier to parse, but you can use shunting yard to do operator precedence parsing using very little extra memory and no recursion. I feel like the language is just poorly designed.
- skissane 1y agoTo be charitable to its original designers, information was much less easily accessible in the 1960s than today-although the shunting yard algorithm had been published in the research literature in 1961, practitioners working 5-6 years later may plausibly have been unaware of it-it wasn’t like nowadays where they could easily discover it in Wikipedia or by asking an LLM.
- skissane 1y agoThe core idea-a language with a built-in persistent key-value store-is actually pretty cool. The classic implementation is filled with horrible warts, although arguably many of them were helpful in squeezing a production multiuser system into the tiny resource constraints of the original 1960s implementation platform (18-bit PDP-7, same machine as Unix was birthed on, although Unix soon moved to the 16-bit PDP-11, which was in practice more spacious) Modern implementations make many of those warts optional, although they still support them for backward compatibility The biggest problem with the language in practice is that many major code bases (e.g. VistA) are still predominantly written in the legacy extremely terse coding style rather than a more modern readable style. I do wonder why there isn’t more effort put into migrating to a more modern style, especially since with the kinds of tools we have nowadays that migration could be (at least partially) automated.
- mamcx 1y agoFoxPro(dBase family) was a much better take on the idea. I also dream of something modern like this (https://tablam.org https://tablam.org) but is certainly a significant undertaking. Accept partners!
- skissane 1y ago> FoxPro(dBase family) was a much better take on the idea xBase is arguably a very different idea - it is based on flat-file/key-indexed databases, akin to VSAM on IBM mainframes, but wrapped in a 4GL. The experience of xBase is very similar to many mainframe 4GLs, what made it distinctive was providing that experience on low-end platforms (it started out on 8-bit CP/M systems, but it was on 16-bit DOS that it really took off) By contrast, MUMPS has multidimensional associative arrays as a basic data type, and the difference between temporary (in-memory) and persistent (on-disk) arrays is simply whether the variable name is prefixed by a caret. Perl’s tied arrays are close, but tied arrays are a rather peripheral feature of Perl (many Perl code bases never use them), but a central feature of MUMPS
- RodgerTheGreat 1y agoYou might find some interesting ideas in Lil, which is also a kdb+ descendant: http://beyondloom.com/tools/trylil.html http://beyondloom.com/tools/trylil.html
- cmrdporcupine 1y agoThese kind of hierarchical / network database systems are what caused E.F. Codd to tear his hair out and write https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
- jampekka 1y agoCodd tore his hair out also about it becoming SQL.
- telecomhacker 1y agoPart-time MUMPS programmer here for a health system in NYC. I still love writing in it. The rates are way better than other eco-systems (e.g. Python, Java, blah blah) , probably because the eco-system isn't diluted with low-wage workers from India/China. This is because 95%+ of Epic/Ex-Epic employees are American. I would even argue it is the patriotic language of choice due to that reason. Expected pay of 85-120/hour, which pays way more than my full-time job. It's a fun language to write in, and the adrenaline rush you get when you get a triple index loop working is awesome. Also random fact - according to Epic HR , the average college GPA of Epic employees was 3.5, which is probably the perfect formula in hiring loyal corporate servants. I always thought it was weird that I had to apply with my transcripts and resume.
- jampekka 1y agoI'm not sure I love paying it with worse health services though. My city has sunk almost a billion dollars into a dysfunctional Epic pile of MUMPS. But I guess it's nice to see the healthcare software disgrace works well at least for some.
- skissane 1y ago> My city has sunk almost a billion dollars into a dysfunctional Epic pile of MUMPS. I don’t know if the alternatives - e.g. Oracle Health/Cerner - are really that much better - and if Epic is as bad as you say, I suspect that says more about their corporate culture than choice of programming language
- jampekka 1y agoThat was the story why Epic was chosen. It was made to be a dilemma between Epic and Cerner, by design. In reality it's not a dilemma. In other cities and countries there are EHR systems from other vendors that work less bad and with lower cost.
- telecomhacker 1y agoI primarily work on clinical data, and from that side, the technology stack—MUMPS included—has its quirks but generally gets the job done. The real dysfunction in U.S. healthcare isn’t the software or the language itself, but the system it’s built to serve. The core issues lie in the incentives around revenue cycle management and the structure of the insurance industry. Blaming MUMPS is like blaming COBOL for bank fees—it’s the system, not just the syntax.
- roywiggins 1y agoFeast your eyes on Caché Server Pages. Mumps on the web. https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCSP_config https://docs.intersystems.com/latest/csp/docbook/DocBook.UI....
- jampekka 1y agoThe layout being broken on mobile is totally on-brand.
- zeruch 1y agoI learned MUMPS years ago at UC Davis (Dick Walters, one of the language maintainers, was tenured there) and I found it a really interesting, but deeply weird language. Walters himself was a considerate, patient dude with me, struggling to deal with at the time a truly strange beast.
- burnt-resistor 1y agoThat's where I heard about it. I was a student from 2000-2009 when Sean Davis was around. If anyone remembers, CSIF used NIS (not even NIS+) and all password hashes were available to everyone on any cluster machine by running `getent passwd`. John the Ripper found about 90 short/dictionary-based passwords within one minute on a machine of that era.
- moomin 1y agoObligatory: https://thedailywtf.com/articles/a_case_of_the_mumps https://thedailywtf.com/articles/a_case_of_the_mumps
- dang 1y agoRelated. Others? A Case of the MUMPS (2007) - https://news.ycombinator.com/item?id=36268931 https://news.ycombinator.com/item?id=36268931 - June 2023 (109 comments) M, or MUMPS is a procedural language with a built-in NoSQL database - https://news.ycombinator.com/item?id=19388048 https://news.ycombinator.com/item?id=19388048 - March 2019 (2 comments) MUMPS - https://news.ycombinator.com/item?id=18936990 https://news.ycombinator.com/item?id=18936990 - Jan 2019 (6 comments) Isn't There a Vaccine for MUMPS? - https://news.ycombinator.com/item?id=17898927 https://news.ycombinator.com/item?id=17898927 - Sept 2018 (2 comments) Introduction to the Mumps Language (2017) [pdf] - https://news.ycombinator.com/item?id=16309237 https://news.ycombinator.com/item?id=16309237 - Feb 2018 (42 comments) The Mumps Programming Language - https://news.ycombinator.com/item?id=13859961 https://news.ycombinator.com/item?id=13859961 - March 2017 (178 comments) MUMPS Instance - https://news.ycombinator.com/item?id=13618649 https://news.ycombinator.com/item?id=13618649 - Feb 2017 (1 comment) Ask HN: Encryption and Security in MUMPS - https://news.ycombinator.com/item?id=13542953 https://news.ycombinator.com/item?id=13542953 - Feb 2017 (4 comments) 50 year old NoSQL DB that is better than MongoDB - https://news.ycombinator.com/item?id=12791425 https://news.ycombinator.com/item?id=12791425 - Oct 2016 (2 comments) MUMPS, the Archaic Health-Care Programming Language - https://news.ycombinator.com/item?id=9895311 https://news.ycombinator.com/item?id=9895311 - July 2015 (49 comments) I am a MUMPS programmer – Ask me anything - https://news.ycombinator.com/item?id=6312391 https://news.ycombinator.com/item?id=6312391 - Sept 2013 (68 comments)
- clabretro 1y agoGreat hands on video with MUMPS: https://youtu.be/Ij9k7EQ5AZQ https://youtu.be/Ij9k7EQ5AZQ
- lowmagnet 1y agoI used to convert data from a mumps system to a cobol based one 30 years ago. Fun times
- jaybrendansmith 1y agoWay back in the day, while bored at my SaaS MUMPS support job, I wrote a version of the 'artillery' game in MUMPS, complete with graphics and explosions. I still wish I had that code somewhere :)
- UltraSane 1y agoI worked at Epic the EMR company that probably has written more lines of M than any other company. Their EMR suite is the most popular in the US. They have a very high ratio of testers to programmers and I always wondered if this is because their ancient M code base is very brittle.
- hellojesus 1y agoI just heard about it for the first time today on the Primeagen post where TJ mentioned his first job was at Epic where he used Mumps. I assume that is how this came about timing-wise. https://youtu.be/_CwpzZ8AVio https://youtu.be/_CwpzZ8AVio
- JohnDeHope 1y agoThis was the first programming language I got paid to code in. It really did look like line noise. Good times.
- robertclaus 1y agoThe description of MUMPS always misses what working with it directly is actually like (at least for me). It feels more like a custom OS than a programming language. Code being stored alongside data so changes apply live in the system, writing schemas and indexes by hand, and the difficulties combining it with other standard programming tools make it a fairly unique experience in 2025.
- niemandhier 1y agoThis has some similarities to SAPs ADAP.
- larodi 1y agoMy mother used to program this DB when she was pregnant with me in the 1980s. But it was a stolen version for the communist block, known as ДАИМС, and they actually shipped an EHCR system, which must've been like 40 years ahead of its time. Then СССР collapsed and all dev went down. Sadly, she didn't continue pursuing a careering in programming.