Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Conspekt.doc
Скачиваний:
11
Добавлен:
31.08.2019
Размер:
1.39 Mб
Скачать

3.12.1 Структура памяти лисп - машины

В случае программной реализации программная память подразделяется на следующие области:

  1. Командный код интерпритатора;

  2. Область, отводимая под стек;

  3. Область свободных ячеек(FCS);

  4. Область двоичных программ(BPS);

  5. Область ввода-вывода.

В хорошей Лисп-системе программист имеет средства для регулирования этими областями.

Основная особенность Лисп-машин требуется большой объем памяти под стек.

Назначение областей памяти Лисп-систем:

1 область – расположен код функции Eval.

3 область – создаются, хранятся, а затем уничтожаются динамические структуры данных. Начинается эта область с атома Nil.

4 область – предназначена для хранения заранее откомпелиро-ванных процедур.

5 область – предназаначена для организации буферов ввода-вывода и работы с входными и выходными потоками.

При работе в среде STANDART-LISP и некоторых других средах (на машинах среднего класса main frame) всегда можно получить информацию о распределении памяти (при загрузке STANDART-LISPа в памяти организуется 5 областей).

Уточненная структура лисповской ячейки

Ранее лисповская ячейка была представлена в форме

CAR CDR

Реально Лисп-ячейка имеет боле сложную структуру (а не только два указателя на начало и хвост атома).

Рассмотрим пример Лисп-ячейки для 64-разрядной машины

Тег1

Car

Тег2

Cdr

0

1

2

3

4

5

6

7

Указатель на головной элемент списка

Указатель на “хвостовую” часть списка

Здесь цифрами обозначены байты памяти, занимаемые ячейкой.

Поля Тег1 и Тег2 – это специальные поля, содержащие признаки, позволяющие идентифицировать содержимое Лисп-ячейки.

Признаки Тегов:

  1. атом, не атом

  2. число, не число

  3. форма числа и др.

Таких признаков набирается 16.

При реализаци предикатов проверяются значения тех или иных тегов. Теги позволяют ускорять обработку содержимого Лисповской ячейки.

3.12.2 Диалекты языка лисп

Наибольшее распространение получили следующие диалекты:

  1. Common Lisp

  2. Golden common lisp

  3. Inter lisp

  4. Mu lisp

Наиболее общая и популярная версия языка - COMMON LISP. Позволяет обрабатывать все структуры данных, описанные в этом конспекте, структуры подобные тем, которые имеются в алгоритмических языках (Паскаль). Набор встроенных функций - более 800. Особенность - отличие, связанное с передачей параметров функций. Различают параметры обязательные, необходимые, ключевые, остаточные и дополнительные. Отличие системы вв/вывода- более мощная.

Адаптированный к PC - Golden Common Lisp - урезанный COMMON + содержит средства доступа ко всем функциям DOS через прерывания + наличие системы управления окнами + встроенный text editor, позволяет выполнять синтаксический анализ.

MuLisp- около 200 функций, имеет встроенную систему обучения, возможность встраивания ассемблерных процедур. Может использовать часть функций из версий языка: InterLisp и Common Lisp.

InterLisp- более 400 функций, но использует нестандартные имена функций.

Тенденции развития:

1. Приближение программ на языке Лисп к программам на алгоритмических языках, включение структур данных и основных управляющих конструкций алгоритмических языков.

2. Интеграция языка Лисп в системы программирования, построенные на классических алгоритмических языках.

3. Разработка объектно-ориентированных версий языка.

4. LispC, с возможностью использования всех библиотек С.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]