Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экз языки.docx
Скачиваний:
21
Добавлен:
20.09.2019
Размер:
67.44 Кб
Скачать

7. Лисп. Решение интеллектуальных задач

Лисп (LISP, от англ. LISt Processing — «обработка списков») — семейство языков программирования, основанных на представлении программы системой линейных списков символов, которые притом являются основной структурой данных языка.

Требования к языку ИИ

• Представление фактов в удобной для дальнейшей интерпретации форме;

• Хранение фактов;

• Порождение новых фактов в процессе работы и их использование;

• Использование типичных стратегий и подходов обработки фактов.

Джон Маккарти решил, что задача будет облегчена, если рассматривать слово как последовательный список букв; фразу или предложение – как список слов, текст –как список предложений. Он так и поступил, создав обработчик списков – LISts Processing, или, сокращенно, LISP.

Лисп ориентирован на разработку программ для решения задач не численного характера.  Большим достоинством Лиспа является его функциональная направленность, т. е. программирование ведется с помощью функций. Причем функция понимается как правило, сопоставляющее элементам некоторого класса соответствующие элементы другого класса. Сам процесс сопоставления не оказывает никакого влияния на работу программы, важен только его результат – значение функции. Это позволяет относительно легко писать и отлаживать большие программные комплексы. Ясность программ, четкое разграничение их функций, отсутствие каверзных побочных эффектов при их выполнении является обязательными требованиями к программированию таких логически сложных задач, каковыми являются задачи искусственного интеллекта. Дисциплина в программировании становится особенно важной, когда над программой работает не один человек, а целая группа программистов.

Язык программирования Лисп предназначен в первую очередь для обработки символьной информации. Поэтому естественно, что в мире Лиспа числа играют далеко не главную роль. Основные типы данных в Лиспе называются “атом” и “точечная пара”.

Для создания искусственного интеллекта нужно было создать язык, который бы: представлял в удобной для дальнейшей интерпретации форме факты; умел бы хранить их; в момент обработки мог бы расширять базу фактов и в дальнейшем использовать новые факты так, как будто они поступили извне. Джон Маккарти решил, что задача будет облегчена, если рассматривать слово как последовательный список букв; фразу или предложение — как список слов, текст — как список предложений. Он так и поступил, создав обработчик списков — LISts Processing, или, сокращенно, LISP.  Разработанный Джоном Маккарти язык чудесным образом реализовал представление знаний путем установления соответствий между символами и их значениями. Используя LISP, программист как бы обучал машину, наполняя ее знаниями. Язык LISP обладает еще одним любопытным свойством. Если программы на стандартном процедурном языке, в том числе и объектно-ориентированном, остаются неизменными в течение всего процесса выполнения в памяти компьютера, то LISP-программа, поскольку она является и базой знаний, и набором команд одновременно, в процессе работы может, так сказать, увеличиваться в объеме и в некоторой степени изменять собственную структуру. Подчас это может оказаться прямо-таки спасением.

Использование

• 1998 NASA запустило беспилотный космический корабль Deep Space 1 с задачей изучения планет нашей Солнечной системы. Когда Deep Spaceнаходился на расстоянии более ста миллионов километров от Земли, в программе была на LISP обнаружена ошибка. Используя возможности языка LISP, удалось удаленно найти ошибку и внести изменения.

• Специальный диалект Лисп используется в AutoCad (www.autodesk.com) вкачестве языка расширений для пользователя.

• Common Lisp – конструктор электронных магазинов Yahoo! Store(store.yahoo.com) и веб-сервер cl-http.

• Редактор Emacs, написанный на Emacs-Lisp, диалекте Лисп. Это - один из двух лучших редакторов для программистов (другим является vim).

• Менеджер окон Sawfish для GNOME основан на диалекте Лиспа.

• Электронная таблица Gnumeric написана с использованием диалекта Лисп.

• GIMP использует диалект Лисп для написания сценариев.

• Примитивный диалект Лисп используется в качестве языка сценариев музыкального редактора Cakewalk.

• В качестве языка текстового представления данных подобие списочного формата Лиспа используется в инициализационных файлах сервера Oracle и в файлах моделей Rational Rose