- •Классическая теория моделей первого порядка
- •7. Лисп. Решение интеллектуальных задач
- •8. Язык программирования Пролог. Назначение, применение
- •11. Пролог. Файлы, Базы данных, Базы знаний
- •1. Загрузка файла бд в оперативную память:
- •2. Сохранение фактов бд в внешнем файле:
- •13. Модели представление знаний в Лиспе.
- •14. Модели представление знаний на Прологе.
- •Эквивалентность типов.
- •Эпистемология прагматизма
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