Маклисп
Парадигмы | Мультипарадигма : функциональная , процедурная , рефлексивная , мета. |
---|---|
Семья | Лисп |
Разработано | Ричард Гринблатт Джон Л. Уайт |
Разработчик | Массачусетский технологический институт : Проект MAC |
Впервые появился | июль 1966 года |
Дисциплина набора текста | динамичный , сильный |
Язык реализации | Язык ассемблера , PL/I |
Платформа | ПДП-6 , ПДП-10 |
ТЫ | Несовместимая система разделения времени , TOPS-10 , TOPS-20 , Multics |
Расширения имен файлов | .лисп , .fasl |
Под влиянием | |
Лисп 1.5 | |
Под влиянием | |
Общий Лисп |
Maclisp (или MACLISP , иногда называемый MacLisp или MacLISP ) — язык программирования , диалект языка Lisp . Он возник в Массачусетского технологического института (MIT). рамках проекта MAC [1] (от которого он получил свой префикс) в конце 1960-х годов и был основан на Lisp 1.5. [2] Ричард Гринблатт был главным разработчиком исходной кодовой базы для PDP-6 ; [1] Джон Л. Уайт отвечал за его дальнейшее обслуживание и развитие. Название Maclisp начало использоваться в начале 1970-х годов, чтобы отличить его от других ответвлений PDP-6 Lisp, особенно от BBN 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 начинался с Digital Equipment Corporation PDP-6 и PDP-10, компьютеров работающих под управлением несовместимой системы разделения времени (ITS); позже он был портирован на все остальные операционные системы PDP-10, например, Timesharing/Total Operating System , TOPS-10 и TOPS-20 . Первоначальная реализация была на языке ассемблера , но более поздняя реализация на Multics использовала PL/I . Maclisp значительно развился за время своего существования. Основные особенности [ который? ] были добавлены, которые в других языковых системах обычно соответствуют основным номерам выпусков. [ сомнительно – обсудить ]
Maclisp использовался для реализации Macsyma системы компьютерной алгебры (CAS) или программы символьной алгебры. Разработка Macsyma также привела к появлению нескольких функций. [ который? ] в Маклиспе. Программа создания мира блоков SHRDLU была написана на Maclisp, поэтому этот язык широко использовался в исследовательском сообществе искусственного интеллекта (ИИ) в начале 1980-х годов. Он также использовался для реализации других языков программирования, таких как Planner и Scheme . Multics Maclisp использовался для реализации первого Emacs на основе Lisp .
Maclisp был влиятельной реализацией Lisp, но больше не поддерживается активно. Теперь он работает на эмуляторах PDP-10 и может использоваться для экспериментов с ранними программами искусственного интеллекта.
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ЛИСП 1, 1.5, ЛИСП 2 (заброшенный) | |||||||||||||||
Маклисп | |||||||||||||||
Интерлисп | |||||||||||||||
леев | |||||||||||||||
Лисп-машина Лисп | |||||||||||||||
Схема | Р5РС | Р6РС | R7RS маленький | ||||||||||||
НОЛЬ | |||||||||||||||
ЗИЛ (язык реализации Zork) | |||||||||||||||
Франц Лисп | |||||||||||||||
Общий Лисп | стандарт ANSI | ||||||||||||||
Лисп | |||||||||||||||
Схема СО | |||||||||||||||
XLISP | |||||||||||||||
Т | |||||||||||||||
На схеме | |||||||||||||||
Эмакс Лисп | |||||||||||||||
АвтоЛИСП | |||||||||||||||
ПикоЛисп | |||||||||||||||
Гамбит | |||||||||||||||
EuLisp | |||||||||||||||
ИСЛИСП | |||||||||||||||
ОпенЛисп | |||||||||||||||
Схема PLT | Ракетка | ||||||||||||||
новыйЛИСП | |||||||||||||||
GNU Коварство | |||||||||||||||
Визуальный ЛИСП | |||||||||||||||
Кложур | |||||||||||||||
Дуга | |||||||||||||||
ЛФЭ | |||||||||||||||
Он | |||||||||||||||
Хиалисп |
Характеристики
[ редактировать ]Maclisp начинался с небольшого, фиксированного количества типов данных : cons- ячейка, атом (позже названный символом ), целое число и число с плавающей запятой . Более поздние дополнения включали: массивы , которые никогда не были первоклассными типами данных; целые числа произвольной точности (бигнумы); струны ; и кортежи . Все объекты (кроме inums) были реализованы как указатели , а их тип данных определялся блоком памяти, на который они указывали, с особым случаем для небольших чисел (inums).
Программы можно интерпретировать или компилировать . Поведение компилируемого кода было таким же, как и интерпретированное, за исключением того, что локальные переменные в скомпилированном коде по умолчанию были лексическими, если только они не были объявлены SPECIAL. [8] и для встроенных операций, таких как CAR и CDR, проверка ошибок не выполнялась. Компилятор Ncomplr (середина 1970-х годов) представил в языках Lisp быструю числовую поддержку, генерируя машинный код (инструкции) для арифметических действий, а не вызывая интерпретирующие процедуры, которые распределяются по типу данных. Это сделало арифметику Лиспа сравнимой по скорости с арифметикой Фортрана для скалярных операций (хотя реализация массивов и циклов Фортрана оставалась намного быстрее).
Первоначальная версия была ограничена 18-битным адресом памяти PDP-10, и значительные усилия были затрачены на сохранение компактности и простоты реализации. Multics Maclisp имел гораздо большее адресное пространство, но его использование было дорогостоящим. Когда память и вычислительная мощность PDP -10 были превышены, была изобретена машина Lisp : Lisp Machine Lisp является прямым потомком Maclisp. несколько других диалектов Лиспа Также использовалось , и необходимость объединения сообщества привела к созданию современного языка Common Lisp .
Имя
[ редактировать ]Maclisp был назван в честь Project MAC и не имеет отношения к компьютеру Apple Macintosh (Mac), которому он предшествовал десятилетиями, или к Джону Маккарти . Различные системы Lisp для Macintosh не имеют особого сходства с Maclisp. [9]
Ссылки
[ редактировать ]- ^ Jump up to: а б Леви, Стивен (1984). Хакеры: герои компьютерной революции . Даблдэй. ISBN 0-385-19195-2 .
- ^ Отчет о ходе проекта MAC IV: июль 1966 г. - июль 1967 г. (PDF) (Отчет). ndp 19. Архивировано из оригинала (PDF) 8 марта 2016 года.
Языком более высокого уровня, используемым в большей части программ лаборатории машинного зрения, является система PDP-6 LISP. Эта система основана главным образом на языке программирования LISP 1.5, но была значительно модифицирована во многих отношениях. Они включают в себя множество новых функций и услуг, в том числе средства для связи с программами, написанными на других языках.
- ^ Луна 1974 , с. 1
- ^ Луна 1974 , с. 47
- ^ Лисп 1,5 стр. 13, оценка атома
e
в окружающей средеa
покончено с(cdr (assoc e a))
. Это включает в себя линейный поиск в списке ассоциаций.a
. Более подробное описание с глобальными константами и ошибками приведено на стр. 71; перед поиском в списке ассоциаций он выполняет линейный поиск в списке свойств. - ^ Маклисп использует
defun
; Лисп 1.5 используетdefine
. - ^ Луна 1974 , с. 107; тот
autoload
свойство. - ^ Питман, Кент (16 декабря 2007 г.). «Пересмотренное руководство Maclisp (Pitmanual), воскресное утреннее издание» . maclisp.info . HyperMeta, Inc. Декларации и компилятор, понятие «переменные» . Проверено 20 октября 2018 г.
Если связываемая переменная объявлена специальной, привязка компилируется как код, имитирующий способ связывания переменных интерпретатором.
- ^ Питман, Кент (16 декабря 2007 г.). «Пересмотренное руководство Maclisp (The Pitmanual), воскресное утреннее издание» . maclisp.info . HyperMeta Inc. с. 1 Часто задаваемые вопросы Q1 . Проверено 20 октября 2018 г.
Проект MAC не имел ничего общего с Apple «Mac». И MACLISP тоже.
Внешние ссылки
[ редактировать ]- 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]. Новости ЛИСП. Примечания к выпуску MacLisp.
- Джон Л. Уайт. LISP: Программа — это данные: исторический взгляд на MacLISP. Материалы конференции пользователей MACSYMA 1977 года. Бюро научной и технической информации НАСА (Вашингтон, округ Колумбия, июль 1977 г.), страницы 181–189. PDF
- Маккарти, Джон ; Абрахамс, Пол В.; Эдвардс, Дэниел Дж.; Харт, Тимоти П.; Левин, Майкл И. (1985) [1962]. Руководство программиста LISP 1.5 (2-е изд.). МТИ Пресс . ISBN 0-262-13011-4 .
- Мун, Дэвид (1974). Справочное руководство Maclisp (PDF) . Архивировано (PDF) из оригинала 5 октября 2011 г.
- Пересмотренное руководство по Maclisp (1983) Кента Питмана
- Компилятор Multics MACLISP (1977) Бернарда Гринберга