MDL (programming language): Difference between revisions

Content deleted Content added
Bluebot (talk | contribs)
tagging, added uncategorised tag
WP:LINKs: update-standardize, adds. WP:REFerence WP:CITation parameters: update-standardize-conforms, cut inapplicable, reorders, adds, fills.
 
(76 intermediate revisions by 55 users not shown)
Line 1:
{{Short description|Lisp-like programming language}}
'''MDL''' (the MIT Design Language) is a descendant of the [[Lisp programming language|Lisp]] [[programming]] language. It allows user-defined data types and had some advanced I/O features. Its syntax distinguishes among executable lists, non-executable lists, strings, and arrays, and between global and local values of variables. Although MDL is obsolete, some of its features have been incorporated in later versions of Lisp.
{{Infobox programming language
| name = MDL
| logo = <!-- Filename only -->
| logo caption =
| screenshot = <!-- Filename only -->
| screenshot caption =
| paradigms = [[Multi-paradigm programming language|Multi-paradigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]], [[Reflective programming|reflective]], [[Metaprogramming|meta]]
| family = [[Lisp (programming language)|Lisp]]
| designers = [[Gerald Sussman]], [[Carl Hewitt]], Chris Reeve, [[Bruce Daniels]]
| developer = [[Massachusetts Institute of Technology|MIT]] [[Project MAC]]
| released = {{Start date and age|1971}}
| latest release version = 105
| latest release date = {{Start date and age|1980}}
| typing = [[Dynamic typing|Dynamic]], [[Strong and weak typing|strong]]
| scope = [[Scope (programming)|Static, lexical]]
| programming language = MDL
| discontinued = Yes
| platform = [[PDP-10]], [[VAX]], [[Apollo/Domain]]
| 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]]
| file ext =
| file format = <!-- or: | file formats = -->
| website = <!-- {{URL|www.example.com}} -->
| implementations =
| dialects =
| influenced by = [[Lisp (programming language)|Lisp]]
| 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">
{{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 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 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 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 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}}
MDL's claim to fame is that it was used to write the original version of the [[Zork]] [[computer game]].
 
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 was originally named "Muddle", and was designed for the Dynamic Modeling Group at [[Massachusetts Institute of Technology|MIT]]'s [[Project MAC|Laboratory for Computer Science]] and implemented on the [[PDP-10]] computer under the [[Incompatible Timesharing System]].
 
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.
{{Uncategorized|November 2006}}
 
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 |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.
{{Compu-lang-stub}}
 
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==
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 lang="clojure">
<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>>
</syntaxhighlight>
 
==See also==
* [[Zork Implementation Language]]
* [[Zork]]
* [[Scheme (programming language)]]
* [[Planner (programming language)]]
 
==References==
{{Reflist}}
 
==External links==
 
{{Lisp programming language}}
 
{{DEFAULTSORT:Mdl (Programming Language)}}
[[Category:Dynamically typed programming languages]]
[[Category:Functional languages]]
[[Category:Lisp programming language family]]
<!-- Hidden categories below -->
[[Category:Articles with example Lisp (programming language) code]]