| MDL | |
|---|---|
| Paradigms | Multi-paradigm:functional,procedural,reflective,meta |
| Family | Lisp |
| Designed by | Gerald Sussman,Carl Hewitt, Chris Reeve,Bruce Daniels |
| Developer | MITProject MAC |
| First appeared | 1971; 54 years ago (1971) |
| Final release | 105 / 1980; 45 years ago (1980) |
| Typing discipline | Dynamic,strong |
| Scope | Static, lexical |
| Implementation language | MDL |
| Platform | PDP-10,VAX,Apollo/Domain |
| OS | ITS,TENEX,TOPS-20,BSD,AEGIS |
| License | Open-source |
| Influenced by | |
| Lisp | |
| Influenced | |
| ZIL,Planner,Scheme,Common Lisp,Java,Prolog,Smalltalk;actor model,interactive fiction | |
MDL (Model Development Language,[1] or colloquially also referred to asMore Datatypes than Lisp[2]: 3 orMIT Design Language[citation needed]) is aprogramming language, a descendant of the languageLisp. Its initial purpose was to providehigh-level programming language support for the Dynamic Modeling Group atMassachusetts Institute of Technology's (MIT)Project MAC.[3] It was developed in 1971 on aPDP-10 runningITS and later ran onTENEX,TOPS-20,[4][5]BSD,[2]: 6 andAEGIS.[6]
The initial development team consisted ofGerald Sussman andCarl Hewitt of the Artificial Intelligence Lab, and Chris Reeve,Bruce Daniels, and David Cressey of the Dynamic Modeling Group. Later, Stu Galley, also of the Dynamic Modeling Group, wrote the MDL documentation.[citation needed]
MDL was initially calledMuddle.[4]: 2 This style of self-deprecating humor was not widely understood or appreciated outside of Project MAC. So the name was sanitized to MDL.[citation needed]
MDL provides several enhancements to classic Lisp. It supports several built-in data types, including lists, strings and arrays, and user-defined data types. It offersmultithreaded expression evaluation andcoroutines.Variables can carry both a local value within a scope, and a global value, for passing data between scopes. Advanced built-in functions supported interactivedebugging of MDL programs, incrementaldevelopment, and reconstruction of source programs from object programs.
Although MDL is obsolete, some of its features have been incorporated in later versions of Lisp. Gerald Sussman went on to develop theScheme language, in collaboration withGuy Steele, who later wrote the specifications forCommon Lisp andJava. Carl Hewitt had already published the idea for the languagePlanner before the MDL project began, but his subsequent thinking on Planner reflected lessons learned from building MDL. Planner concepts influenced languages such asProlog andSmalltalk. Smalltalk andSimula, in turn, influenced Hewitt's future work on theactor model.
But the largest influence that MDL had was on thesoftware genre ofinteractive fiction (IF). An IF game namedZork, sometimes called Dungeon, was first written in MDL.[7] Later, Reeve, Daniels, Galley and other members of Dynamic Modeling went on to startInfocom, a company that produced many earlycommercial works of interactive fiction.
In 1980Marc Blank and Joel Berez adapted the MDL language to create a subset called ZIL (Zork Implementation Language) which was used extensively byInfocom to create their award winning games.
This is a sample of PDP-10 MDL:[8][9][10]
<DEFINEEXIT-TO(EXITSRMS)#DECL((EXITS)EXIT(RMS)<UVECTOR[RESTROOM]>)<MAPF<><FUNCTION(E)#DECL((E)<ORDIRECTIONROOMCEXITNEXITDOOR>)<COND(<TYPE?.EDIRECTION>)(<AND<TYPE?.EROOM><MEMQ.E.RMS>><MAPLEAVET>)(<AND<TYPE?.ECEXIT><MEMQ<2.E>.RMS>><MAPLEAVET>)(<AND<TYPE?.EDOOR><OR<MEMQ<DROOM1.E>.RMS><MEMQ<DROOM2.E>.RMS>>><MAPLEAVET>)>>.EXITS>>