I became acquainted with MUMPS (MUMPS may also be called M, and its arguably most popular implementation is Intersystems’s Cache) in 1985, by writing a partial implementation of it for the DOS-based PCs of that period, then began working in MUMPS and MUMPS-like language (one such language is MIIS – possibly a truly extinct language now) app development shops. I’ve done such development work and system admin on and off ever since.
Re the title question “tips for learning MUMPS/M/Cache”...
I recommend simply learning its keyword, most of which can and typically are abbreviated by single letters, and the rest by 2-letters. M has about 26 commands and 26 intrinsic functions (about a dozen or so are most used) so learning them all is about equivalent to learning the alphabet. Install an implementation of it – the free, no-external-IP-connections-allowed Cache for Windows downloadable from Intersystem is a nice one – connect to it with a terminal (one comes packaged an pre-configured for than with Cache), and play with the language at the command line (also called programming or direct mode). Unless you manage a fairly exotic sequence of commands involving O[PEN] and U[SE], you can’t hurt any of your underlying files besides the ones it uses, so it’s a fairly safe playground.
Cache’s documentation (a website hosted locally by the language server itself) is adequate, but somewhat confusing, as it doesn’t distinguish between ANSI standard M and its implementation, called “Cache object script”, which has many non-standard extensions. Intersystems systematically avoids even acknowledging that it’s an implementation of M – when last I checked, a search of its documentation for “MUMPS” finds references only to the disease!
If you’re a language formalist, the M language standard is available as a print ANSI document, ANSI/MDC X11.1-1995 (1995 is the year of its last revision), which fully describes the language in EBNF (contextless grammer). I’ve googled phrases from it, and am pretty sure from the lack of hits that it can only be had in paper library stacks or ordering the pricey print document from ANSI.
As for “what’s it good for” …
Obviously, it’s good for getting a job supporting and developing enhancements and rereleases of old MUMPS applications.
It’s good for accessing and modifying huge text databases really fast – though you can get this performance and functionality via the layered classes and other language bindings offered by Cache and other vendors without needing to learn more than a smidgen of the M language.
Oddly – and I’m the only person I know who does much of this – it can be a very handy science and math prototyping language. Like most truly interpreted languages, it’s pure number-crunching performance is poor compared to a binary executable compiled from any of the many compiled languages (C, etc), but I find it unequalled as a “brainstorming” language, and on a machine with lots of CPU, it can solve significant problems in reasonable times.
It’s main weakness, IMHO, is a lack of intrinsic binding to anything except a text terminal. Although the 1990’s MDC (M development committee) put considerable effort into the “M Windows API” and bindings with window systems (mostly X), it didn’t make it into a language standard, and is very rarely implemented. In short, graphics in M are a PITA.