MDL (язык программирования)
Парадигмы | Мультипарадигма : функциональная , процедурная , рефлексивная , мета. |
---|---|
Семья | Лисп |
Разработано | Джеральд Сассман , Карл Хьюитт , Крис Рив, Брюс Дэниэлс |
Разработчик | Проект MIT MAC |
Впервые появился | 1971 год |
Финальный выпуск | 105
/ 1980 |
Дисциплина набора текста | Динамичный , сильный |
Объем | Статический, лексический |
Язык реализации | леев |
Платформа | PDP-10 , VAX , Apollo/домен |
ТЫ | ИТС , ТЕНЕКС , ТОПС-20 , БСД , AEGIS |
Лицензия | с открытым исходным кодом |
Под влиянием | |
Лисп | |
Под влиянием | |
ZIL , Планировщик , Схема , Common Lisp , Java , Пролог , Smalltalk ; модель актера , интерактивная фантастика |
MDL ( Язык разработки моделей , [ 1 ] или в просторечии также называется « Больше типов данных, чем Lisp». [ 2 ] : 3 или язык дизайна MIT [ нужна ссылка ] ) — язык программирования , потомок языка Лисп . Его первоначальная цель заключалась в обеспечении языковой поддержки высокого уровня для группы динамического моделирования в Массачусетского технологического института (MIT) рамках проекта MAC . [ 3 ] Он был разработан в 1971 году на ПДП-10 под управлением ИТС и позже работал на «Техснабэкспорте» , ТОПС-20 , [ 4 ] [ 5 ] БСД , [ 2 ] : 6 и ЭГИС . [ 6 ]
Первоначальная команда разработчиков состояла из Джеральда Сассмана и Карла Хьюитта из Лаборатории искусственного интеллекта, а также Криса Рива, Брюса Дэниэлса и Дэвида Кресси из Группы динамического моделирования. Позже Стю Галли, также из группы динамического моделирования, написал документацию MDL. [ нужна ссылка ]
Первоначально MDL назывался Muddle . [ 4 ] : 2 Этот стиль самоуничижительного юмора не получил широкого понимания и признания за пределами проекта MAC. Таким образом, название было преобразовано в MDL. [ нужна ссылка ]
MDL предоставляет несколько улучшений классического Lisp. Он поддерживает несколько встроенных типов данных, включая списки, строки и массивы, а также определяемые пользователем типы данных. Он предлагает многопоточную оценку выражений и сопрограммы . Переменные могут содержать как локальное значение внутри области, так и глобальное значение для передачи данных между областями. Расширенные встроенные функции поддерживали интерактивную отладку программ MDL, поэтапную разработку и реконструкцию исходных программ из объектных программ.
Хотя MDL устарел, некоторые его возможности были включены в более поздние версии Lisp. Джеральд Сассман продолжил разработку языка Scheme в сотрудничестве с Гаем Стилом , который позже написал спецификации для Common Lisp и Java . Карл Хьюитт уже опубликовал идею языка Planner еще до начала проекта MDL, но его последующие размышления о Planner отражали уроки, извлеченные из создания MDL. Концепции планировщика повлияли на такие языки, как Пролог и Smalltalk . Smalltalk и Simula , в свою очередь, повлияли на будущую работу Хьюитта над моделью актера .
Но наибольшее влияние MDL оказал на программный жанр интерактивной фантастики (IF). Игра IF под названием Zork , иногда называемая Dungeon, была впервые написана на MDL. [ 7 ] Позже Рив, Дэниелс, Галли и другие члены Dynamic Modeling основали Infocom , компанию, которая выпустила множество ранних коммерческих произведений интерактивной фантастики.
В 1980 году Марк Бланк и Джоэл Берез адаптировали язык MDL для создания подмножества под названием ZIL ( Язык реализации Zork ), который широко использовался Infocom для создания своих отмеченных наградами игр.
Пример кода
[ редактировать ]Это образец 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>>
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Супник, Боб (25 октября 2006 г.). «GET LAMP Интервью Боба Супника» (Интервью). Беседовал Джейсон Скотт. 15:00.
- ^ Jump up to: а б Ликлайдер, JCR (январь 1988 г.). «Графическое программирование и мониторинг RADC-TR-88-7» (PDF) . Римский центр развития авиации. Архивировано (PDF) из оригинала 3 мая 2019 г. Проверено 18 мая 2019 г.
- ^ Дорнбрук, Майкл; Бланк, Марк (1980). «Букварь по программированию MDL MIT-LCS-TR-292» (PDF) . Массачусетский технологический институт, лаборатория компьютерных наук . Проверено 18 мая 2019 г.
- ^ Jump up to: а б Галли, Стю В.; Пфистер, Грег (1979). «Язык программирования MDL» (PDF) . Массачусетский технологический институт, лаборатория компьютерных наук . Проверено 18 декабря 2018 г. ( Транскрипция Markdown/HTML )
- ^ Леблинг, П. Дэвид (май 1980 г.). «Среда программирования MDL» (PDF) . Массачусетский технологический институт, лаборатория компьютерных наук . Проверено 18 декабря 2018 г.
- ^ Лим, По Чуан (1982). «Устройственно-независимый графический менеджер для MDL» (PDF) . Массачусетский технологический институт. п. 69 . Проверено 18 мая 2019 г.
- ^ Дайер, Ричард (6 мая 1984 г.). «Мастера игры» . Бостон Глобус . Архивировано из оригинала 7 июня 1997 г.
- ^ "Zork-mdl.zip" .
- ^ Супник, Боб (04 июня 2018 г.). «Комплекты программного обеспечения» . Компьютерное моделирование и история (SimH) . Bitsavers.org . Проверено 18 декабря 2018 г.
- ^ Супник, Боб (2 сентября 2007 г.). «Комплекты программного обеспечения» . Компьютерное моделирование и история (SimH) . Форум ПРП-11 . Проверено 18 декабря 2018 г.