Talk:MDL (programming language)

Latest comment: 13 years ago by Autarch in topic MicroStation Development language

It's maybe not very nice to say this, but MDL is notable primarily as the first (that I can remember) in the very long line of programming languages that could be described as "Lisp with several different kinds of parentheses".

Somehow "mainstream" programmers think that that main problem with Lisp is that it only has one kind of parentheses -- round ones -- and that this is Very Very Bad. The reason that Java (or Ruby or whatever the flavor of the month is) is better than Lisp is that it has square and squiggly parentheses too.

Obviously, it is MUCH MUCH easier to read

define foo(x, y, z) {
   if [ some_condition ] {
      do_this(x, z);
   } else {
      do_that(y);
   }
}

than

(define foo (x y z)
   (if (some_condition)
       (do_this x z)
       (do_that y)))

as any fool can see.

MDL had square and squiggly brackets, and you had to remember which random kind to use where, which was a Huge Advance on Lisp.

Of course, that meant that you couldn't have Lispy macros, but who needs macros? They are hard to understand because they have no squiggly brackets in them.



The above is one way to characterize MDL. Others have characterized MDL as "Lisp with arrays" or "Lisp with explicit datatypes", and the like. There is some truth to each of these characterizations. But they have to be all taken together to get the point. MDL wasn't so much one great idea as the confluence of several little ideas.

IIRC, the use of different kinds of brackets was not initially made in order to make the source code easier for people to read or write. It was written to make it easier to write a parser. As a human readability feature, the use of different kinds of brackets is of questionable importance, as the irony in the above comment indicates.

In addition to a parser, MDL contained a reverse parser in version 1. What this reverse parser did was to translate MDL code in the form of internal data structures back into MDL source code in the form of text. In some ways, the development team regarded MDL in the form of internal data structures as "real MDL source", and the external format in text form as a concession to people who liked working with text editors and such. The originating team also liked working with text editors themselves, so there's no snobbery in that.

Also note that by treating internal format MDL as "real source", it made it easier for programs to write other programs and try them out. This isn't too relevant to Dynamic Modelers, but it made a real difference to AI people. Lisp had this capability earlier. The reverse parser made it possible to capture programs written by programs in human readable form (To the extent that MDL is readable).

MDL FOUND edit

MDL105.EXE is currently available on TWENEX.ORG's public access TOPS-20, and (currently) in MY ACCCOUNT ONLY (hopefully, for all soon) in PDPPLANET.ORG's public access TOPS-20. --Signed, Troy Fullwood: EXPLORER OF THE GREAT DUNGEON OF ZORK!! (talk) 20:44, 4 June 2010 (UTC)Reply

MicroStation Development language edit

Just moved, trimmed and wikified the mention of the above - having a long digressive comment in brackets in the first sentence of the lede seemed too distracting. Autarch (talk) 01:19, 1 January 2011 (UTC)Reply