Маклисп - Maclisp

Маклисп
ПарадигмыМультипарадигма: функциональный, процедурный, отражающий, мета
СемьяЛисп
РазработаноРичард Гринблатт
Джон Л. Уайт
РазработчикМассачусетский технологический институт: Проект MAC
Впервые появилсяИюль 1966 г.; 54 года назад (1966-07)
Печатная дисциплинадинамичный, сильный
Язык реализацииязык ассемблера, PL / I
ПлатформаPDP-6, PDP-10
Операционные системыНесовместимая система разделения времени, ТОП-10, ТОП-20, Мультики
Расширения имени файла.lisp, .fasl
Под влиянием
Лисп 1.5
Под влиянием
Common Lisp

Маклисп (или МАКЛИСП, иногда стилизованный Маклисп или MacLISP) это язык программирования, а диалект языка Лисп. Он возник в Массачусетский Институт Технологий (MIT) Проект MAC[1] (от которого он получил свой префикс) в конце 1960-х и был основан на Lisp 1.5.[2] Ричард Гринблатт был основным разработчиком исходной кодовой базы для PDP-6;[1] Джон Л. Уайт отвечал за его дальнейшее обслуживание и развитие. Название Маклисп начал использоваться в начале 1970-х годов, чтобы отличить его от других вилки PDP-6 Lisp, особенно BBN Lisp.

История

Маклисп является потомком Лисп 1.5.[3] Maclisp отличается от Lisp 1.5, используя ячейка значения для доступа и хранения динамических значений переменные;[4] Lisp 1.5 использовал линейный поиск в списке ассоциаций для определения значения переменной.[5] Оценка переменных Maclisp выполняется быстрее, но имеет другую семантику переменных. Maclisp также использовал макросы для чтения, чтобы сделать более читаемым ввод и вывод, названный ввод, вывод (Ввод / вывод). Вместо входа (ЦИТАТА A), можно было войти получить то же самое s-выражение. Хотя обе реализации помещают функции в список свойств, Maclisp использует другой синтаксис для определения функций.[6] Maclisp также имеет функцию загрузки по запросу.[7]

Маклисп начал Корпорация цифрового оборудования PDP-6 и PDP-10 компьютеры под управлением Несовместимая система разделения времени (ЕГО); позже он был перенесен на все остальные операционные системы PDP-10, например, Разделение времени / Общая операционная система, ТОП-10 и ТОП-20. Первоначальная реализация была в язык ассемблера, но более поздняя реализация на Мультики используемый PL / I. Маклисп значительно развился за время своей жизни. Основные особенности[который? ] были добавлены, которые в других языковых системах обычно соответствуют основным номерам выпусков.[сомнительный ]

Maclisp использовался для реализации Macsyma система компьютерной алгебры (CAS) или программа символьной алгебры. Разработка Macsyma также привела к нескольким функциям[который? ] в Maclisp. В ШРДЛУ программа block-world была написана на Maclisp, поэтому этот язык широко использовался в искусственный интеллект (AI) исследовательское сообщество до начала 1980-х годов. Он также использовался для реализации других языков программирования, таких как Планировщик и Схема. Multics Maclisp использовался для реализации первого основанного на Лиспе Emacs.

Maclisp был влиятельной реализацией Лиспа, но больше не поддерживается активно. Теперь он работает на PDP-10 эмуляторы и может использоваться для экспериментов с ранними программами ИИ.

Характеристики

Маклисп начал с небольшого фиксированного числа типы данных: минусы ячейка, атом (позже названный символ), целое число, и число с плавающей запятой. Более поздние дополнения включали: массивы, которые никогда не были первоклассными типами данных; целые числа произвольной точности (бигнумы); струны; и кортежи. Все объекты (кроме inums) были реализованы как указатели, а их тип данных определялся блоком памяти, на который он указывал, с особым случаем для малых чисел (inums).

Программы могут быть интерпретированный или составлен. Скомпилированное поведение было таким же, как и интерпретируемое, за исключением того, что локальные переменные по умолчанию были лексическими в скомпилированном коде, если только не объявлено SPECIAL,[8] и для встроенных операций, таких как CAR и CDR, проверка ошибок не проводилась. Компилятор Ncomplr (середина 1970-х) ввел быструю числовую поддержку языков Lisp, генерируя Машинный код (инструкции) для арифметики вместо вызова интерпретирующих подпрограмм, которые отправляются по типу данных. Это сделало арифметику Лиспа сопоставимой по скорости с Фортран для скалярных операций (хотя реализация массивов и циклов Fortran оставалась намного быстрее).

Исходная версия была ограничена 18-битным словом адрес памяти PDP-10, и значительные усилия были затрачены на то, чтобы реализация была легкой и простой. Multics Maclisp имел гораздо большее адресное пространство, но был дорогостоящим в использовании. Когда память и вычислительная мощность PDP-10 были превышены, Лисп-машина было изобретено: Лисп-машина Лисп является прямым потомком Маклиспа. Несколько других Лисп также использовались диалекты, и необходимость объединения сообщества привела к появлению современных Common Lisp язык.

имя

Маклисп был назван в честь Проект MAC, и не имеет отношения к Apple Macintosh (Mac) компьютер, который старше его на десятилетия. Различные системы Lisp для Macintosh не имеют особого сходства с Maclisp.[9]

использованная литература

  1. ^ а б Леви, Стивен (1984). Хакеры: Герои компьютерной революции. Doubleday. ISBN  0-385-19195-2.
  2. ^ Отчет о ходе реализации проекта MAC IV: июль 1966 г. - июль 1967 г. (PDF) (Отчет). нет данных п. 19. Языком более высокого уровня, используемым для большей части программы лаборатории зрения, является система PDP-6 LISP. Эта система основана в основном на языке программирования LISP 1.5, но была значительно изменена по ряду направлений. Они включают в себя множество новых функций и услуг, в том числе средства для связи с программами, написанными на других языках.
  3. ^ Луна 1974, п. 1
  4. ^ Луна 1974, п. 47
  5. ^ Лисп 1.5 п. 13, оценивая атом е в окружающей среде а сделано с (cdr (ассоциированный e a)). Это предполагает линейный поиск в списке ассоциаций а. Более подробное описание глобальных констант и ошибок дано на стр. 71; он выполняет линейный поиск в списке свойств перед поиском в списке ассоциаций.
  6. ^ Maclisp использует defun; Lisp 1.5 использует определить.
  7. ^ Луна 1974, п. 107; то автозагрузка свойство.
  8. ^ Питман, Кент (16 декабря 2007 г.). «Пересмотренное руководство Maclisp (The Pitmanual), издание Sunday Morning». maclisp.info. Декларации HyperMeta, Inc. и компилятор, понятие «переменные». Получено 20 октября, 2018. Если связываемая переменная была объявлена ​​специальной, привязка компилируется как код для имитации способа, которым интерпретатор связывает переменные.
  9. ^ Питман, Кент (16 декабря 2007 г.). «Пересмотренное руководство Maclisp (The Pitmanual), издание Sunday Morning». maclisp.info. HyperMeta Inc. стр. 1 FAQ q1. Получено 20 октября, 2018. Project MAC не имел ничего общего с Apple «Mac». И МАКЛИСП тоже.

внешние ссылки