M is an interesting programming language for two main reasons. First, it is a relatively old language, its first incarnation being the MUMPS language created at the Massachusetts General Hospital in 1967. Second, it is one of a few high-level languages for which there is an ANSI standard. Despite this and other assets, M is little known outside of its user community, which traditionally has been the medical and health communities. For example, M is currently being used for the Department of Defense’s multibillion-dollar Comprehensive Health Care System project.
M is mostly a procedural interpreted language, with language-specific features for handling large data files. The language has gone through three ANSI standard reviews, in 1984, 1990, and 1995. For readers seeking more information, the author mentions the M Technology Association, located in Silver Spring, Maryland (301-431-4070).
The book’s 25 chapters are organized into two parts, as follows:
Part 1: M for the Novice Programmer
A Brief Introduction to Computers
Introduction to M
Basic Components of M
Operations on Number Values
Logical Operators, Comparisons
Operations on Strings
Introduction to M Commands
Command Lines and Conditional Tests
Routine Structure and Execution Flow Control
Program Structure
Local Arrays
Global Variables
External Communication: Files and Devices
Some Special Features of M
Indirection: Dynamic Reference Modification for Execution Control and Data Management
Access Control of Local Variables
Implementation-Specific Components of M
An Applications Example: A Course Grading Package
Part 2: M for the Experienced Programmer
(19)Overview of M for Experienced Programmers
(20)Distributed Systems: Multitasking and Multiuser M (Networks, Locks, Transaction Processing, and More)
(21)Interacting with the Operating System (Structured System Variables, Internationalization, and More)
(22)Interfacing M to Other Standards (SQL, GKS, X Windows)
(23)M and [Microsoft] Windows Environments
(24)Error Handling in M
(25)Looking into the Future
The book is well written, and each chapter contains many examples illustrating various language constructs. The author lists several Web sites (p. 16) where more information on M and software is available. It would be nice if the book included a disk with an M interpreter and some source code examples. Like Forth, LISP, and Ada, the language will never grow beyond its niche. Nevertheless, for those using or trying to learn the language, this is a nice book to have on hand.