It is currently Thu Mar 28, 2024 1:55 pm


All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 14 posts ]  Go to page Previous  1, 2
Author Message
 Post subject: Re: Fourth Generation of MUMPS (and Mumpsters)
PostPosted: Thu Sep 01, 2011 4:50 am 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
toad wrote:
4: 1990-1995 (MUMPS 1990). As MUMPS 1984 and VISTA (DHCP as it was known then) succeeded and led to increasingly complex software, it created its own problems, following the cosmic principle that success breeds failure. First, angry vendors who felt MUMPS's success robbed them of potential profit launched increasingly transparent attacks on MUMPS and MUMPS-based systems, leading to an interesting and developing new vein of insecurity and overcompensation.


True true. Unfortunately in Oz, DEC just did NOT want to sell/recommend/use MUMPS.
I was in DEC software support in 1976 and saw this from the inside.

After I left DEC, I went on to become the bigest MUMPS house in OZ with over 200 sites at peak... Could never really take off with all the negative stuff though.

Ray


Top
Offline Profile  
 
 Post subject: Re: Fourth Generation of MUMPS (and Mumpsters)
PostPosted: Thu Sep 01, 2011 5:04 am 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
toad wrote:
4: 1990-1995 (MUMPS 1990).
It's important to note the cultural sea change in this capitulation. Not only were Mumpsters trying to change the name of their language, rather than choosing an original name that conveyed medical informatics in any way they opted for the most anonymous name they could think of - and in clear imitation of C, aping the mainstream in the hope of being accepted by them. It didn't work - it could never have worked - and the important thing about it is not its success or failure as a strategy but the deep and novel insecurity it revealed.


My recollection of that time was that only Terry wanted to call it M. I and most others were happy with MUMPS (I mean how do you google M - slight time slip there).

At that time (1992) I was a Bronze member of MUG but totally resigned when they insisted the new name was M.

Interesting to note that the ANSI/MDC X11.1 - 1995 Standard refers to the language as M and MUMPS interchangeably as does the ISO/IEC 11756 of 1 June 1999.

Ray


Top
Offline Profile  
 
 Post subject: Re: Third Generation MUMPS and Mumpsters - Subscript Indirec
PostPosted: Thu Sep 01, 2011 5:22 am 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
toad wrote:
I was as guilty as everyone else of failing to use the newer, clearer syntax. Honestly, I didn't even notice it was there, despite studying MUMPS repeatedly using all the books available. As part of the MUMPS Books project, I'm going to have to review all these works to find out whether they fully explained it or not; I suspect I'll find it was presented at best briefly without a clear explanation of how and why to use it, though it's certainly possible it was fully explained and I and everyone else just missed it.


As I was usually using some variety of DSM, I found everything I needed in the manuals. Unfortunately, I have since chucked the lot. My MUMPS manuals have a passable discussion on some of the constructs but I'm no documentation writer.

I have copies of all the ANSI standards and the 1999 ISO one but these don't make much sense to the casual reader. MUMPS by example (just google it) is probably the best current documentation although Ed includes things like ASTART which I don't think made it to any standard and probably not to any implementation either.

Ray


Top
Offline Profile  
 
 Post subject: Re: Fourth Generation of MUMPS (and Mumpsters)
PostPosted: Thu Sep 01, 2011 5:41 am 
User avatar

Joined: Mon Nov 01, 2010 3:33 pm
Posts: 104
Location: Australia
Real Name: Ray Newman
Began Programming in MUMPS: 01 Jul 1976
toad wrote:
4: 1990-1995 (MUMPS 1990).
The New command, parameter passing, and functions (extrinsic calls and argumented Quit) introduced outstanding new power for controlling the scope of variables. Since variables are the greatest common source of spaghetti logic in MUMPS, these improvements were much needed, much used, and began a dramatic change in the look and feel of MUMPS code that is still playing out, since some packages introduced these new features more quickly and thoroughly than others.

Likewise, argumentless Do did the same for the scope of execution by (1) breaking free of the line-oriented length limitations of For, If, and Else that used to cause us to add named subroutines for no better reason than to extend the amount of logic within their scope, and (2) creating anonymous subroutines whenever we wanted to, for example to create variable-scoping boundaries for the New command to work with. Stacking $Test within do-blocks was crucial to making the former work.

Getting control of these two kinds of scope - variables and execution - extended our ability to reduce unnecessary complications (like labels we didn't need) and to increase needed system complexity (like more sophisticated package interactions). This was the standard that made MUMPS able to handle the open-ended development needed for enterprise-level systems.

This fourth generation also included some nice syntactic sugar - argumentless For got rid of the need for throw-away loop variables, Set $Extract simplified our handling of fixed-length fields, merge simplified our ability to move whole trees of data about, $Query made traversing trees easier, and $Get helped get rid of some ugly $Select/$Data constructs for handling potentially undefined variables - even aside from the usual collection of minor extensions and corrections. Routines and symbol-table sizes were only raised another thousand characters, but that still felt like plenty considering all the ways this standard gave us to reduce the size of our code by using the new, more concise language constructs. Likewise, the maximum variable-name length was doubled again to one hundred twenty-seven characters, to give us more room to name our increasingly complex data structures.


I felt that the scoping within extrinsic functions (and DO) was the most 'growed up' improvement here. I could finally write that library without bothering with variable names.
Each library module looked like:
FUNCT(ARG1,ARG2,%,VAR1,VAR2,...) ; Entry for function FUNCT
I $D(%) DIE ; Only permitted 2 arguments the rest are for local use (note the DIE cmd)

And yes, the syntactic sugar was nice. We used to use F %W=0:0 where %W meant WHILE.
After I got the sources to DSM-11, I found the interpreter would in this case laboriously add zero to zero for each itteration.

I will re-read your post again (I don't know why I missed it when it first came up).
I have been using MUMPS for a bloody long time and really just saw it as incremental improvements from the initial introduction of the standard (did you know that version 1 of DSM didn't allow type ahead on the terminal and did not have string subscripts). Some improvements I introduced myself once I purloined the sources of DSM-11. We even ported DSM-11 to the Digital PC-350 (if you know what that was).

Ray


Top
Offline Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 14 posts ]  Go to page Previous  1, 2

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 17 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Theme created StylerBB.net