← Back to context

Comment by jacquesm

2 years ago

MUMPS (aka 'M', MUMPS loves brevity to the point of obscurity) was - without anything else coming close - the weirdest language/runtime I'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 'e') is a string. Just like any other string you can assign a value to it and there weren't that many safeguards in place to protect important strings.

Recovering from that particular 'oopsie' 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't regret having seen the last of 'MUMPS' but it is very persistent and in healthcare and insurance you still come across it every now and then.

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.

I actually took a University course in M by one of its maintainers, the late Dick Walters. While I never found any personal utility in the language, it was a curious 3 months of experimentation, and Walters was a great professor and fairly kind and helpful, probably because he realized how eccentric and borderline archaic M was.

  • I would have loved to follow such a course. Whatever I know and remember of it was learned 'the hard way' by reading code and digging into whatever problems it exhibited, not exactly a fun experience. But I have to admit: some of it was extremely clever and if you let go of the Unix file based mindset for a bit it actually was an interesting and refreshing experience. But I didn't think MUMPS was future proof enough to warrant investing more time into it and the only reason it still hangs on is for the same reason COBOL still does: large codebases that businesses rely on even if there isn't anybody there that still fully understands them.