stringtranslate.com

Маклисп

Maclisp (или MACLISP , иногда называемый MacLisp или MacLISP ) — язык программирования , диалект языка Lisp . Он возник в рамках проекта MAC [1] Массачусетского технологического института (MIT) (от которого он получил свой префикс) в конце 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 и может использоваться для экспериментов с ранними программами искусственного интеллекта.

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

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]

Рекомендации

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

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