Tuesday, April 11, 2006

Nostalgia and MUMPS

There's been a bit of nostalgia recently with posts about an Oracle V4 Virtual Machine. Partially prompted by some of the items in Mark's article, I thought I'd reflect back a bit too.

My first employer after getting a degree was a Regional Health Authority in England. While I was (fortunately) assigned to a new Ingres-based project, their primary language was something called Mumps. This is one of those languages where you've either worked somewhere with it, or never heard of it. I didn't have much to do with it bar the occasional look at the interface modules that supplied us with flat files for loading into our database. Since that was a good few years ago, some of my recollections could be inaccurate.

Mumps isn't a relational database itself, though apparently you can run a relational database and even SQL on it. It stores data in Btree structures called global arrays. There would be a file system layer under that but that is invisible in practical terms, in the same way datafiles are hidden by tables in Oracle. My first problem with Mumps is that there is no internal structure enforced with a global. It would be similar to having a single column VARCHAR2 in a table, and storing all the column data in there. Without that data structure, you don't have 'columns' much less datatyping, check constraints, foreign keys and so forth. Data integrity is purely the responsibility of the application. Oh, and by the way, Mumps doesn't have an access control mechanism analagous to Grants or Roles. Add, drop, delete or update, you can do it all.

All in all, it seems to address many of the 'faults' identified in Mark's article.

My other problem with Mumps was it is the only language I've worked with where whitespace within the code is important. While it did help to ensure all the code looked the same, it was only because it was all equally yuck. It didn't help that for various reasons (some historic or for standards compatibility),there is a maximum length for variable names of eight characters. I haven't had to force myself to keep to that since I was coding BASIC on a ZX81 with 1Kb of RAM. It makes code nearly unreadable.

You can, if you wish, read more about Mumps on Wikipedia, with its critics currently sidelined off in another article.