Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Lisp (LISt processing language ) – язык программирования




 

История

В 1956 г. на Дартмундской конференции (США) Дж.Маккарти впервые предложил термин «искусственный интеллект» (ИИ). И хотя до сих пор не утихают страсти вокруг этого термина и развившегося научного направления в его рамках, исследователи единодушны в использовании языков программирования для данной области. Значительное число работ по ИИ (особенно американских ученых) реализовано на одном из старых языков программирования ЛИСПе. Этот вновь проявленный интерес к нему объясняется его эффективностью при решении задач искусственного интеллекта.

Название язык получил от английских слов LISt Processing (LISP), что означает «обработка списков». Своими корнями ЛИСП уходит в математическую логику. В 20-30-х годах такие математики, как Т.Сколем, К.Гедель и А.Черч, привнесли новые идеи в логику, которые позже воплотились в ЛИСПе. Вообще первым языком для обработки списков был не ЛИСП, а IPL (аббревиатура от английских слов «Information Processing Language» — язык для обработки информации), разработанный Г.Сайманом, А.Ньюэллом и Дж. Шоу в середине 50-х годов.

В 1956-1959 гг. Дж.Маккарти вместе со студентами Массачусетского технологического института (МТИ) разработал новый изящный язык для работы со списками, которому и дал имя ЛИСП. Причем многие студенты внесли существенный вклад в эту разработку. В частности, Д.Эдвардс запрограммировал процесс очистки памяти от ненужных массивов, так называемой сборки мусора (garbage collection), являющийся фундаментальным понятием в ЛИСПе да и в других языках.

После своего появления ЛИСПу присваивали много эпитетов, отражающих его черты, — это язык функций, символьный язык, язык обработки списков, рекурсивный язык. С позиций сегодняшней классификации ЛИСП определяют как язык программирования функционального типа, в основу которого положен метод lambda-исчисления (метод lambda-исчисления разработан в 30-е годы А.Черчем в качестве строгой математической модели для вычисления функций).

Впервые ЛИСП, также как и ФОРТРАН, был реализован на вычислительной машине IBM704.

Программы и данные ЛИСПа существуют в форме символьных выражений, которые характеризуются в виде списковых структур. ЛИСП имеет дело с двумя видами объектов: атомами и списками. Атомы — это символы, используемые для идентификации объектов, которые могут быть числовыми или символьными (понятия, материалы, люди и т.д.). Список — это последовательность из нуля или более символов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. ЛИСП манипулирует списками путем использования трех примитивных функций: CAR, CDR, CONS, из которых получаются все другие функции обработки списков. В функции CAR в качестве значения аргумента используется первый элемент списка; значением аргумента в функции CDR является оставшаяся часть списка после удаления первого элемента, а функция CONS собирает вновь то, что CAR и CDR разбили на части. Интересно отметить, что слова «CAR» и «CDR» остались в ЛИСПе на память от первой реализации языка на ламповом компьютере IBM704. Они являются сокращением английских слов, означающих «содержимое адресной части регистра» и «содержимое уменьшаемой части регистра», соответственно терминами, характерными для машин первого поколения.

Во многих отношениях ЛИСП отличается от других языков прежде всего тем, что выполнение программы не состоит в последовательности шагов, как в других языках. В основном ЛИСП относится к языкам интерпретирующего типа, однако в некоторых его диалектах имеется функция COMPILE, которая может использоваться для компилирования ЛИСП-программ.

Хотя языку уже под 30 лет и он имеет некоторые недостатки, включая бесконечные скобки (любимый акроним разработчиков ИИ — «масса идиотских скобок»), он остается популярным на всех этапах создания систем ИИ, в частности экспертных систем. Одна из причин этого заключается в его общности и концептуальной простоте, другая — в часто упоминаемой щедрой среде поддержки. Но его зрелость и завершенность находятся в противоречии с его стандартизацией. в настоящее время существует несколько диалектов языка, каждому из которых присущи своя степень возможностей и свои характеристики. Такими диалектами являются COMMONLISP, ZETALISP, INTERLISP, INTERLISP-D, MACLISP и др.

В 60-е годы предпринимались попытки аппаратной реализации ЛИСПа, но на уровне техники того времени эти попытки оказались безуспешными, и только в начале 70-х годов с бурным развитием техники интегральных схем появилась возможность решения этой задачи. В 1974 г. в МТИ была начата разработка ЛИСП-компьютера, в котором аппаратно реализовывался язык лисп. Этапами создания ЛИСП-компьютера явились разработки CONS-компьютера и CADR-компьютера. Появлению ЛИСП-компьютера в немалой степени в конце 70-х годов способствовали разработки экспертных систем в рамках решения проблем ИИ, когда ЛИСП-компьютеры применялись в качестве рабочих станций для конструирования и развития экспертных систем.

С 1982 г. ЛИСП-компьютеры выпускаются серийно многими фирмами: Tektronix, LISP Machines Inc., Symbolics, Texas Instruments, Xerox. В этих машинах реализованы различные версии ЛИСПа. В настоящее время ведутся работы по созданию ЛИСП-компьютера с параллельной обработкой.

В нашей стране впервые интерпретатор ЛИСПа был создан для вычислительной машины БЭСМ-6 в конце 60-х годов, затем появилась система LISP-1204 для ЭВМ ODRA-1204, разработанная на основе трех диалектов:LISP-1.5, ЛИСП для БЭСМ-6 и INTERLISP. В 1975 г. интерпретатор ЛИСПа (в основу положен интерпретатор для БЭСМ-6) разработан для ЕС ЭВМ, а в начале 80-х годов язык ЛИСП (на основе INTERLISP) реализован на много процессорном вычислительном комплексе «Эльбрус». В последние годы среди отечественных реализаций языка нужно отметить реализации FRL/ЛИСПа.

 

От других языков программирования Лисп отличается следующими свойствами:

 

1. Одинаковая форма данных и программ;

2. Хранение данных, не зависящее от места;

3. Автоматическое и динамическое управление памятью;

4. Функциональная направленность;

5. Интерпретирующий и компилирующий режимы работы;

6. Пошаговое программирование;

Теперь рассмотрим эти свойства более подробно.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных