Maclisp (или Maclisp , иногда в стиле Maclisp или Maclisp ) является языком программирования , диалект языка Lisp . Он возник в рамках проекта MAC [1] Массачусетского технологического института (MIT) (от которого он получил свой префикс) в конце 1960-х годов и был основан на Lisp 1.5. [2] Ричард Гринблатт был главным разработчиком исходной кодовой базы для PDP-6 ; [1] Джон Л. Уайт отвечал за его дальнейшее обслуживание и развитие. Имя Маклисп начал использоваться в начале 1970-х годов, чтобы отличить его от других форков PDP-6 Lisp, особенно от BBN Lisp .
Парадигмы | Мультипарадигма : функциональная , процедурная , рефлексивная , мета |
---|---|
Семья | Лисп |
Разработано | Ричард Гринблатт Джон Л. Уайт |
Разработчик | Массачусетский технологический институт : Project MAC |
Впервые появился | Июль 1966 г . |
Печатная дисциплина | динамичный , сильный |
Язык реализации | Язык ассемблера , PL / I |
Платформа | ПДП-6 , ПДП-10 |
Операционные системы | Несовместимая система разделения времени , TOPS-10 , TOPS-20 , Multics |
Расширения имени файла | .lisp , .fasl |
Под влиянием | |
Лисп 1.5 | |
Под влиянием | |
Common Lisp |
История
Maclisp является потомком Lisp 1.5 . [3] Maclisp отличается от Lisp 1.5 тем, что использует ячейку значения для доступа и хранения динамических значений переменных ; [4] Lisp 1.5 использовал линейный поиск в списке ассоциаций для определения значения переменной. [5] Оценка переменных Maclisp выполняется быстрее, но имеет другую семантику переменных. Maclisp также использовал макросы для чтения, чтобы сделать ввод и вывод более читаемым , что называется вводом / выводом (I / O). Вместо ввода (QUOTE A)
можно было ввести 'A
то же s-выражение . Хотя обе реализации помещают функции в список свойств, Maclisp использует другой синтаксис для определения функций. [6] Maclisp также имеет функцию загрузки по запросу. [7]
Maclisp начал работу над компьютерами PDP-6 и PDP-10 Digital Equipment Corporation с несовместимой системой разделения времени (ITS); позже он был перенесен на все другие операционные системы PDP-10, например, Timesharing / Total Operating System , TOPS-10 и TOPS-20 . Оригинальная реализация была на ассемблере , но позже реализация на Multics используется PL / I . Маклисп значительно развился за время своей жизни. Основные особенности [ какие? ], которые в других языковых системах обычно соответствуют номерам основных выпусков. [ сомнительно ]
Maclisp использовался для реализации системы компьютерной алгебры Macsyma (CAS) или программы символьной алгебры. Развитие Macsyma также привело к появлению нескольких функций [ какие? ] в Maclisp. Программа SHRDLU блочного мира была написана на Maclisp, поэтому этот язык широко использовался в сообществе исследователей искусственного интеллекта (ИИ) в начале 1980-х годов. Он также использовался для реализации других языков программирования, таких как Planner и Scheme . Multics Maclisp использовался для реализации первых Emacs на основе Lisp .
Maclisp был влиятельной реализацией Лиспа, но больше не поддерживается активно. Теперь он работает на эмуляторах PDP-10 и может использоваться для экспериментов с ранними программами искусственного интеллекта.
Характеристики
Maclisp начал с небольшого фиксированного числа типов данных : cons- ячейка, атом (позже названный символом ), целое число и число с плавающей запятой . Более поздние добавления включали: массивы , которые никогда не были первоклассными типами данных; целые числа произвольной точности (бигнумы); струны ; и кортежи . Все объекты (кроме inums) были реализованы как указатели , а их тип данных определялся блоком памяти, на который он указывал, с особым случаем для малых чисел (inums).
Программы можно интерпретировать или компилировать . Скомпилированное поведение было таким же, как и интерпретируемое, за исключением того, что локальные переменные были лексическими по умолчанию в скомпилированном коде, если только они не были объявлены SPECIAL, [8] и не выполнялась проверка ошибок для встроенных операций, таких как CAR и CDR. Компилятор Ncomplr (середина 1970-х) представил быструю числовую поддержку языков Lisp, генерируя машинный код (инструкции) для арифметики, а не вызывая интерпретирующие процедуры, которые отправляются по типу данных. Это сделало арифметику Lisp сравнимой по скорости с Fortran для скалярных операций (хотя реализация массивов и циклов Fortran оставалась намного быстрее).
Первоначальная версия была ограничена 18-битным адресом памяти слов PDP-10, и значительные усилия были затрачены на то, чтобы реализация была простой и простой. Multics Maclisp имел гораздо большее адресное пространство, но был дорогостоящим в использовании. Когда память и обработка мощности PDP-10 были превышены, Lisp машина была изобретена: Lisp Machine Лисп является прямым потомком Maclisp. Также использовались несколько других диалектов Лиспа , и необходимость объединения сообщества привела к созданию современного языка Common Lisp .
Имя
Maclisp был назван в честь Project MAC и не имеет отношения к компьютеру Apple Macintosh (Mac), которому он предшествовал на десятилетия. Различные системы Lisp для Macintosh не имеют особого сходства с Maclisp. [9]
Рекомендации
- ^ a b Леви, Стивен (1984). Хакеры: Герои компьютерной революции . Даблдэй. ISBN 0-385-19195-2.
- ^ Отчет о ходе реализации проекта MAC IV: июль 1966 г. - июль 1967 г. (PDF) (Отчет). ndp 19. Языком
более высокого уровня, используемым для большей части программы лаборатории зрения, является система PDP-6 LISP. Эта система основана в основном на языке программирования LISP 1.5, но в нее были внесены многочисленные изменения. Они включают в себя множество новых функций и услуг, в том числе средства для связывания с программами, написанными на других языках.
- Перейти ↑ Moon 1974 , p. 1
- Перейти ↑ Moon 1974 , p. 47
- ^ Лисп 1.5 стр. 13, оценка атома
e
в окружающей средеa
завершена(cdr (assoc e a))
. Это включает линейный поиск в списке ассоциацийa
. Более подробное описание глобальных констант и ошибок дано на стр. 71; он выполняет линейный поиск в списке свойств перед поиском в списке ассоциаций. - ^ Маклисп использует
defun
; Lisp 1.5 используетdefine
. - Перейти ↑ Moon 1974 , p. 107;
autoload
собственность. - ^ Питман, Кент (16 декабря 2007 г.). «Пересмотренное руководство Maclisp (The Pitmanual), издание Sunday Morning» . maclisp.info . Объявления HyperMeta, Inc. и компилятор, понятие «переменные» . Проверено 20 октября 2018 года .
Если связываемая переменная была объявлена специальной, привязка компилируется как код для имитации способа, которым интерпретатор связывает переменные.
- ^ Питман, Кент (16 декабря 2007 г.). «Пересмотренное руководство Maclisp (The Pitmanual), издание Sunday Morning» . maclisp.info . HyperMeta Inc. стр. 1 FAQ q1 . Проверено 20 октября 2018 года .
Project MAC не имел ничего общего с Apple «Mac». И МАКЛИСП тоже.
Внешние ссылки
- http://www.softwarepreservation.org/projects/LISP/maclisp_family/ содержит библиографию Maclisp.
- Джон Л. Уайт. Временное руководство пользователя LISP. Записка по искусственному интеллекту № 190, проект MAC, Массачусетский технологический институт, март 1970 г., 87 страниц. ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-190.pdf утверждает: «MACLISP» относится к реализации PDP / 6 языка программирования LISP, используемой в группе искусственного интеллекта проекта MAC. . "
- «В 1973 и 1974 годах Дэвид А. Мун возглавил работу по внедрению MacLisp на Honeywell 6180 под Multics. В рамках этого проекта он написал первое действительно исчерпывающее справочное руководство для Maclisp, которое стало известно как« Moonual ». " [Стил и Габриэль 1993]
- Джон Л. Уайт [JONL], Эрик Розен [ECR], Ричард М. Столлман [RMS], Гай Л. Стил-младший [GLS], Ховард И. Кэннон [HIC], Боб Кернс [RWK]. Новости LISP. Примечания к выпуску MacLisp.
- Джон Л. Уайт. LISP: Программа - это данные: историческая перспектива MacLISP. Материалы конференции пользователей MACSYMA 1977 года. Управление научной и технической информации НАСА (Вашингтон, округ Колумбия, июль 1977 г.), страницы 181–189. PDF
- Маккарти, Джон ; Abrahams, Paul W .; Эдвардс, Дэниел Дж .; Харт, Тимоти П .; Левин, Михаил I. (1985) [1962]. Руководство программиста LISP 1.5 (2-е изд.). MIT Press . ISBN 0-262-13011-4.
- Луна, Дэвид (1974). Справочное руководство Maclisp (PDF) .
- Пересмотренное руководство Maclisp (1983) Кента Питмана
- Компилятор Multics MACLISP (1977) Бернарда Гринберга