Jump to content

MDL (programming language): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Sbarber2 (talk | contribs)
Fill in refnames, add double quotes to refnames, add ref for "MDL was initially called Muddle."
WP:LINKs: update-standardize, adds. WP:REFerence WP:CITation parameters: update-standardize-conforms, cut inapplicable, reorders, adds, fills.
 
(24 intermediate revisions by 15 users not shown)
Line 1: Line 1:
{{Short description|Lisp-like programming language}}
{{Infobox programming language
{{Infobox programming language
| name = MDL
| name = MDL
Line 5: Line 6:
| screenshot = <!-- Filename only -->
| screenshot = <!-- Filename only -->
| screenshot caption =
| screenshot caption =
| paradigms = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]], [[Reflection (computer programming)|reflective]], [[Metaprogramming|meta]]
| paradigms = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]], [[Reflective programming|reflective]], [[Metaprogramming|meta]]
| family = [[Lisp (programming language)|Lisp]]
| family = [[Lisp (programming language)|Lisp]]
| designers = [[Gerald Sussman]], [[Carl Hewitt]], Chris Reeve, [[Bruce Daniels]]
| designers = [[Gerald Sussman]], [[Carl Hewitt]], Chris Reeve, [[Bruce Daniels]]
Line 17: Line 18:
| discontinued = Yes
| discontinued = Yes
| platform = [[PDP-10]], [[VAX]], [[Apollo/Domain]]
| platform = [[PDP-10]], [[VAX]], [[Apollo/Domain]]
| operating system = [[Incompatible Timesharing System|ITS]], [[TOPS-20#TENEX|TENEX]], [[TOPS-20]], [[Berkeley Software Distribution|BSD]], [[Domain/OS#AEGIS|AEGIS]]
| operating system = [[Incompatible Timesharing System|ITS]], [[TENEX (operating system)|TENEX]], [[TOPS-20]], [[Berkeley Software Distribution|BSD]], [[Domain/OS#AEGIS|AEGIS]]
| license = [[Open-source license|Open-source]]
| license = [[Open-source license|Open-source]]
| file ext =
| file ext =
Line 25: Line 26:
| dialects =
| dialects =
| influenced by = [[Lisp (programming language)|Lisp]]
| influenced by = [[Lisp (programming language)|Lisp]]
| influenced = [[Planner (programming language)|Planner]], [[Scheme (programming language)|Scheme]], [[Common Lisp]], [[Java (programming language)|Java]], [[Prolog]], [[Smalltalk]]; [[actor model]], [[interactive fiction]]
| influenced = [[Z-machine|ZIL]], [[Planner (programming language)|Planner]], [[Scheme (programming language)|Scheme]], [[Common Lisp]], [[Java (programming language)|Java]], [[Prolog]], [[Smalltalk]]; [[actor model]], [[interactive fiction]]
}}
}}
'''MDL''' ('''Model Development Language''',<ref name="Supnik2006">{{cite interview |last1=Supnik |first1=Bob |interviewer=Jason Scott |title=GET LAMP Bob Supnik Interview |date=October 25, 2006 |url=https://archive.org/details/GETLAMP-Supnik |at=15:00}}</ref> or colloquially also referred to as '''More Datatypes than Lisp'''<ref name="Licklider1988">
'''MDL''' ('''More Datatypes than Lisp'''<ref name="Licklider1988" >
{{cite web |url=https://apps.dtic.mil/dtic/tr/fulltext/u2/a197342.pdf |title=Graphical Programming and Monitoring RADC-TR-88-7 |last=Licklider |first=J.C.R |date=January 1988 |website= |publisher=Rome Air Development Center |access-date=2019-05-18}}</ref>{{rp|3}} or '''MIT Design Language'''{{citation needed|date=May 2019}}) is a [[programming language]], a descendant of the language [[Lisp (programming language)|Lisp]]. Its initial purpose was to provide high level language support for the Dynamic Modeling Group at [[Massachusetts Institute of Technology]]'s (MIT) [[Project MAC]].<ref name="DornbrookBlank" >
{{cite report |last1=Licklider |first1=J. C. R. |author1-link=J. C. R. Licklider |date=January 1988 |url=https://apps.dtic.mil/dtic/tr/fulltext/u2/a197342.pdf |title=Graphical Programming and Monitoring RADC-TR-88-7 |publisher=Rome Air Development Center |url-status=live |archive-url=https://web.archive.org/web/20190503021117/https://apps.dtic.mil/dtic/tr/fulltext/u2/a197342.pdf |archive-date=May 3, 2019 |access-date=2019-05-18}}</ref>{{rp|3}} or '''MIT Design Language'''{{citation needed|date=May 2019}}) is a [[programming language]], a descendant of the language [[Lisp (programming language)|Lisp]]. Its initial purpose was to provide [[high-level programming language]] support for the Dynamic Modeling Group at [[Massachusetts Institute of Technology]]'s (MIT) [[Project MAC]].<ref name="DornbrookBlank">
{{cite web |url=http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-292.pdf |title=MDL Programming Primer MIT-LCS-TR-292 |last=Dornbrook |first=Michael | last2=Blank | first2=Marc |date= |website= |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2019-05-18}}</ref> It was initially developed in 1971 on a [[PDP-10]] computer on a [[time-sharing]] [[operating system]] named [[Incompatible Timesharing System]] (ITS). It later ran on [[TOPS-20#TENEX|TENEX]],[[TOPS-20]],<ref name="GalleyPfister1979" >
{{cite book |last1=Dornbrook |first1=Michael |last2=Blank |first2=Marc |date=1980 |url=http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-292.pdf |title=MDL Programming Primer MIT-LCS-TR-292 |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2019-05-18}}</ref> It was developed in 1971 on a [[PDP-10]] running [[Incompatible Timesharing System|ITS]] and later ran on [[TENEX (operating system)|TENEX]], [[TOPS-20]],<ref name="GalleyPfister1979">
{{cite web |url=http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_Programming_Language.pdf |title=The MDL Programming Language |last=Galley |first=Stu W. |last2=Pfister |first2=Greg |date=1979 |website= |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2018-12-18}}</ref><ref>
{{cite book |last1=Galley |first1=Stu W. |last2=Pfister |first2=Greg |date=1979 |url=http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_Programming_Language.pdf |title=The MDL Programming Language |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2018-12-18}} ([https://mdl-language.readthedocs.io/en/latest/ Markdown/HTML transcription])</ref><ref>
{{cite web |url=http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_Programming_Environment.pdf |title=The MDL Programming Environment |last=Lebling |first=P. David |date=May 1980 |website= |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2018-12-18}}</ref>, [[Berkeley Software Distribution|BSD]]<ref name="Licklider1988" />{{rp|6}}, and [[Domain/OS#AEGIS|AEGIS]]<ref name="Lim1982">
{{cite book |last1=Lebling |first1=P. David |date=May 1980 |url=http://ifarchive.org/if-archive/programming/mdl/manuals/MDL_Programming_Environment.pdf |title=The MDL Programming Environment |publisher=Massachusetts Institute of Technology, Laboratory for Computer Science |access-date=2018-12-18}}</ref> [[Berkeley Software Distribution|BSD]],<ref name="Licklider1988"/>{{rp|6}} and [[Domain/OS#AEGIS|AEGIS]].<ref name="Lim1982">
{{cite web |url=https://dspace.mit.edu/bitstream/handle/1721.1/102210/10219781-MIT.pdf#page=69 | page=69 |title=A Device-Independent Graphics Manager for MDL |last=Lim |first=Poh Chuan |date=1982 |website= |publisher=Massachusetts Institute of Technology |access-date=2019-05-18}}</ref>.
{{cite report |last1=Lim |first1=Poh Chuan |date=1982 |url=https://dspace.mit.edu/bitstream/handle/1721.1/102210/10219781-MIT.pdf#page=69 |title=A Device-Independent Graphics Manager for MDL |page=69 |publisher=Massachusetts Institute of Technology |access-date=2019-05-18}}</ref>


The initial development team consisted of [[Gerald Sussman]] and [[Carl 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|date=August 2013}}
The initial development team consisted of [[Gerald Sussman]] and [[Carl 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|date=August 2013}}


MDL was initially called ''Muddle''.<ref name="GalleyPfister1979" />{{rp|2}} This style of self-deprecating humor was not widely understood or appreciated outside of Project MAC and a few other early citadels of information technology. So the name was sanitized to MDL. {{citation needed|date=May 2013}}
MDL was initially called ''Muddle''.<ref name="GalleyPfister1979"/>{{rp|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|date=May 2013}}


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 offers [[Thread (computing)|multithreaded]] expression evaluation and [[coroutine]]s. [[Variable (computer science)|Variable]]s can carry both a local value within a scope, and a global value, for passing data between scopes. Advanced built-in functions supported interactive [[debugging]] of MDL programs, incremental [[Software development|development]], and reconstruction of source programs from object programs.
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 offers [[Thread (computing)|multithreaded]] expression evaluation and [[coroutine]]s. [[Variable (computer science)|Variable]]s can carry both a local value within a scope, and a global value, for passing data between scopes. Advanced built-in functions supported interactive [[debugging]] of MDL programs, incremental [[Software development|development]], 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 the [[Scheme (programming language)|Scheme]] language, in collaboration with [[Guy Steele]], who later wrote the specifications for [[Common Lisp]] and [[Java (programming language)|Java]]. Carl Hewitt had already published the idea for the language ''[[Planner (programming language)|Planner]]'' before the MDL project began, but his subsequent thinking on Planner reflected lessons learned from building MDL. Planner concepts influenced languages such as [[Prolog]] and [[Smalltalk]]. Smalltalk and [[Simula]], in turn, influenced Hewitt's future work on the [[actor model]].
Although MDL is obsolete, some of its features have been incorporated in later versions of Lisp. Gerald Sussman went on to develop the [[Scheme (programming language)|Scheme]] language, in collaboration with [[Guy Steele]], who later wrote the specifications for [[Common Lisp]] and [[Java (programming language)|Java]]. Carl Hewitt had already published the idea for the language ''[[Planner (programming language)|Planner]]'' before the MDL project began, but his subsequent thinking on Planner reflected lessons learned from building MDL. Planner concepts influenced languages such as [[Prolog]] and [[Smalltalk]]. Smalltalk and [[Simula]], in turn, influenced Hewitt's future work on the [[actor model]].


But the largest influence that MDL had was on the [[software]] genre of [[interactive fiction]] (IF). An IF game named [[Zork]], sometimes called Dungeon, was first written in MDL.<ref name="dyer19840506">{{Cite news |url=http://www.csd.uwo.ca/Infocom/Articles/globe84.html |title=Masters of the Game |last=Dyer |first=Richard |date=1984-05-06 |newspaper=The Boston Globe |archive-url=https://web.archive.org/web/19970607204921/http://www.csd.uwo.ca/Infocom/Articles/globe84.html |archive-date=1997-06-07 |dead-url=yes |df= }}</ref> Later, Reeve, Daniels, Galley and other members of Dynamic Modeling went on to start [[Infocom]], a company that produced many early [[Commercial software|commercial]] works of interactive fiction.
But the largest influence that MDL had was on the [[software]] genre of [[interactive fiction]] (IF). An IF game named [[Zork]], sometimes called Dungeon, was first written in MDL.<ref name="dyer19840506">{{Cite news |last1=Dyer |first1=Richard |date=1984-05-06 |url=http://www.csd.uwo.ca/Infocom/Articles/globe84.html |title=Masters of the Game |newspaper=The Boston Globe |url-status=dead |archive-url=https://web.archive.org/web/19970607204921/http://www.csd.uwo.ca/Infocom/Articles/globe84.html |archive-date=1997-06-07}}</ref> Later, Reeve, Daniels, Galley and other members of Dynamic Modeling went on to start [[Infocom]], a company that produced many early [[Commercial software|commercial]] works of interactive fiction.

In 1980 [[Marc Blank]] and Joel Berez adapted the MDL language to create a subset called ZIL ([[Zork Implementation Language]]) which was used extensively by [[Infocom]] to create their award winning games.


==Code sample==
==Code sample==
The original source code for the mainframe environment<ref>{{cite web |url=http://simh.trailing-edge.com/games/zork-mdl.zip |title=Zork-mdl.zip |last= |first= |date= |website= |publisher= |access-date=}}</ref><ref>{{cite web |url=http://simh.trailing-edge.com/software.html |title=Software Kits |last=Supnik |first=Bob |date=2018-06-04 |website=Computer Simulation and History (SimH) |publisher=Bitsavers.org |access-date=2018-12-18}}</ref> snippet shown below was downloaded originally from a Russian mirror.<ref>{{cite web |url=http://pdp-11.ru/simh_trailing-edge_com/software.html |title=Software Kits |last=Supnik |first=Bob |date=2007-09-02 |website=Computer Simulation and History (SimH) |publisher=Forum PDP-11 |access-date=2018-12-18}}</ref>
This is a sample of PDP-10 MDL:<ref>{{cite web |url=http://simh.trailing-edge.com/games/zork-mdl.zip |title=Zork-mdl.zip}}</ref><ref>{{cite web |url=http://simh.trailing-edge.com/software.html |title=Software Kits |last1=Supnik |first1=Bob |date=2018-06-04 |website=Computer Simulation and History (SimH) |publisher=Bitsavers.org |access-date=2018-12-18}}</ref><ref>{{cite web |url=http://pdp-11.ru/simh_trailing-edge_com/software.html |title=Software Kits |last1=Supnik |first1=Bob |date=2007-09-02 |website=Computer Simulation and History (SimH) |publisher=Forum PDP-11 |access-date=2018-12-18}}</ref>


<syntaxhighlight>
<syntaxhighlight lang="clojure">
<DEFINE EXIT-TO (EXITS RMS)
<DEFINE EXIT-TO (EXITS RMS)
#DECL ((EXITS) EXIT (RMS) <UVECTOR [REST ROOM]>)
#DECL ((EXITS) EXIT (RMS) <UVECTOR [REST ROOM]>)
<MAPF <>
<MAPF <>
<FUNCTION (E)
<FUNCTION (E)
#DECL ((E) <OR DIRECTION ROOM CEXIT NEXIT DOOR>)
#DECL ((E) <OR DIRECTION ROOM CEXIT NEXIT DOOR>)
<COND (<TYPE? .E DIRECTION>)
<COND (<TYPE? .E DIRECTION>)
(<AND <TYPE? .E ROOM> <MEMQ .E .RMS>>
(<AND <TYPE? .E ROOM> <MEMQ .E .RMS>>
<MAPLEAVE T>)
<MAPLEAVE T>)
(<AND <TYPE? .E CEXIT> <MEMQ <2 .E> .RMS>>
(<AND <TYPE? .E CEXIT> <MEMQ <2 .E> .RMS>>
<MAPLEAVE T>)
<MAPLEAVE T>)
(<AND <TYPE? .E DOOR>
(<AND <TYPE? .E DOOR>
<OR <MEMQ <DROOM1 .E> .RMS>
<OR <MEMQ <DROOM1 .E> .RMS>
<MEMQ <DROOM2 .E> .RMS>>>
<MEMQ <DROOM2 .E> .RMS>>>
<MAPLEAVE T>)>>
<MAPLEAVE T>)>>
.EXITS>>
.EXITS>>
</syntaxhighlight>
</syntaxhighlight>


==See also==
==See also==
* [[Zork Implementation Language]]
* [[Zork]]
* [[Zork]]
* [[Scheme (programming language)]]
* [[Scheme (programming language)]]
Line 81: Line 85:
[[Category:Functional languages]]
[[Category:Functional languages]]
[[Category:Lisp programming language family]]
[[Category:Lisp programming language family]]
<!-- Hidden categories below -->
[[Category:Articles with example Lisp (programming language) code]]

Latest revision as of 23:08, 25 December 2024

MDL
ParadigmsMulti-paradigm: functional, procedural, reflective, meta
FamilyLisp
Designed byGerald Sussman, Carl Hewitt, Chris Reeve, Bruce Daniels
DeveloperMIT Project MAC
First appeared1971; 54 years ago (1971)
Final release
105 / 1980; 45 years ago (1980)
Typing disciplineDynamic, strong
ScopeStatic, lexical
Implementation languageMDL
PlatformPDP-10, VAX, Apollo/Domain
OSITS, TENEX, TOPS-20, BSD, AEGIS
LicenseOpen-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 as More Datatypes than Lisp[2]: 3  or MIT Design Language[citation needed]) is a programming language, a descendant of the language Lisp. Its initial purpose was to provide high-level programming language support for the Dynamic Modeling Group at Massachusetts Institute of Technology's (MIT) Project MAC.[3] It was developed in 1971 on a PDP-10 running ITS and later ran on TENEX, TOPS-20,[4][5] BSD,[2]: 6  and AEGIS.[6]

The initial development team consisted of Gerald Sussman and Carl 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 called Muddle.[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 offers multithreaded expression evaluation and coroutines. Variables can carry both a local value within a scope, and a global value, for passing data between scopes. Advanced built-in functions supported interactive debugging of MDL programs, incremental development, 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 the Scheme language, in collaboration with Guy Steele, who later wrote the specifications for Common Lisp and Java. Carl Hewitt had already published the idea for the language Planner before the MDL project began, but his subsequent thinking on Planner reflected lessons learned from building MDL. Planner concepts influenced languages such as Prolog and Smalltalk. Smalltalk and Simula, in turn, influenced Hewitt's future work on the actor model.

But the largest influence that MDL had was on the software genre of interactive fiction (IF). An IF game named Zork, sometimes called Dungeon, was first written in MDL.[7] Later, Reeve, Daniels, Galley and other members of Dynamic Modeling went on to start Infocom, a company that produced many early commercial works of interactive fiction.

In 1980 Marc Blank and Joel Berez adapted the MDL language to create a subset called ZIL (Zork Implementation Language) which was used extensively by Infocom to create their award winning games.

Code sample

[edit]

This is a sample of PDP-10 MDL:[8][9][10]

<DEFINE EXIT-TO (EXITS RMS)
        #DECL ((EXITS) EXIT (RMS) <UVECTOR [REST ROOM]>)
        <MAPF <>
              <FUNCTION (E)
                 #DECL ((E) <OR DIRECTION ROOM CEXIT NEXIT DOOR>)
                 <COND (<TYPE? .E DIRECTION>)
                       (<AND <TYPE? .E ROOM> <MEMQ .E .RMS>>
                        <MAPLEAVE T>)
                       (<AND <TYPE? .E CEXIT> <MEMQ <2 .E> .RMS>>
                        <MAPLEAVE T>)
                       (<AND <TYPE? .E DOOR>
                             <OR <MEMQ <DROOM1 .E> .RMS>
                                 <MEMQ <DROOM2 .E> .RMS>>>
                        <MAPLEAVE T>)>>
              .EXITS>>

See also

[edit]

References

[edit]
  1. ^ Supnik, Bob (October 25, 2006). "GET LAMP Bob Supnik Interview" (Interview). Interviewed by Jason Scott. 15:00.
  2. ^ a b Licklider, J. C. R. (January 1988). Graphical Programming and Monitoring RADC-TR-88-7 (PDF) (Report). Rome Air Development Center. Archived (PDF) from the original on May 3, 2019. Retrieved 2019-05-18.
  3. ^ Dornbrook, Michael; Blank, Marc (1980). MDL Programming Primer MIT-LCS-TR-292 (PDF). Massachusetts Institute of Technology, Laboratory for Computer Science. Retrieved 2019-05-18.
  4. ^ a b Galley, Stu W.; Pfister, Greg (1979). The MDL Programming Language (PDF). Massachusetts Institute of Technology, Laboratory for Computer Science. Retrieved 2018-12-18. (Markdown/HTML transcription)
  5. ^ Lebling, P. David (May 1980). The MDL Programming Environment (PDF). Massachusetts Institute of Technology, Laboratory for Computer Science. Retrieved 2018-12-18.
  6. ^ Lim, Poh Chuan (1982). A Device-Independent Graphics Manager for MDL (PDF) (Report). Massachusetts Institute of Technology. p. 69. Retrieved 2019-05-18.
  7. ^ Dyer, Richard (1984-05-06). "Masters of the Game". The Boston Globe. Archived from the original on 1997-06-07.
  8. ^ "Zork-mdl.zip".
  9. ^ Supnik, Bob (2018-06-04). "Software Kits". Computer Simulation and History (SimH). Bitsavers.org. Retrieved 2018-12-18.
  10. ^ Supnik, Bob (2007-09-02). "Software Kits". Computer Simulation and History (SimH). Forum PDP-11. Retrieved 2018-12-18.
[edit]