Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функциональное и логическое программирование – стили декларативного программирования




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

Основной конструкцией в функциональных языках служит символьное выражение (S-выражение). К S-выражениям относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций.

Функция трактуется как однозначное отображение из области определения функции в область значений функции, что полностью соответствует математическому определению функции.

Функциональный язык программирования включает следующие элементы:

• классы констант, которыми могут манипулировать функции;

• набор базовых (определенных в данной системе) функций, называемых примитивами;

• правила построения новых функций на основе примитивов;

• правила формирования выражений па основе вызовов функций.

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

• вызовы функций-примитивов заменяются соответствующими значениями;

• вызовы определенных программистом функций заменяются их телами, в которых параметры замещены аргументами.

В функциональном программировании не используется концепция памяти как хранилища значений переменных, характерная для фон-неймановской вычислительной архитектуры. Операторы присваивания отсутствуют, вследствие чего переменные обозначают не области памяти, а объекты программы, что полностью соответствует понятию переменной в математике. В функциональном программировании нет существенных различий между константами и функциями, то есть между данными и программами. В результате этого функция может быть значением вызова другой функции, а также элементом структурированного объекта. Число аргументов при вызове функции не обязательно должно совпадать с числом параметров, указанных при ее описании. Таким образом, функциональные языки можно определить как языки сверхвысокого уровня по отношению к языкам высокого уровня.

Логическое программирование базируется на понятии отношения (реляция). Поэтому существует другое название логического программирования – реляционное программирование. Программа представляет собой совокупность определений отношений между объектами и цели.

Процесс выполнения логической программы трактуется как процесс доказательства общезначимости логической формулы, построенной из программы по правилам, установленным семантикой используемого языка. Результат вычисления является побочным продуктом этого процесса.

В логическом программировании нужно только специфицировать факты, описывающие задачу, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативном характере языков логического программирования, которые характеризуются:

• высоким уровнем;

• строгой ориентацией на символьные вычисления;

• возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные.

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

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

 

Системы искусственного интеллекта – основная область приложения функционального и логического программирования

Под термином системы искусственного интеллекта (СИИ) понимаются кибернетические системы, моделирующие некоторые стороны интеллектуальной деятельности человека – логическое, аналитическое мышление. Задачей-максимум в области СИИ можно считать понимание принципов и механизмов интеллектуальной деятельности человека. Однако в идеале вряд ли такая задача достижима когда-либо вообще. Практически работы в области СИИ проводились по отдельным задачам, каждая из которых предполагала имитирование отдельной, строго ограниченной области интеллектуальной деятельности. Ниже следует перечень основных из этих задач:

• проблемы естественного языка (ЕЯ-проблемы), основная цель – общение с ЭВМ на естественном для человека языке;

• экспертные системы – системы обработки данных, основанные на знаниях и экспертных оценках в некоторой области;

• распознавание образов – автоматическое наблюдение и идентификация (классификация) объектов;

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

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

Разработка естественно-языковых интерфейсов и машинный перевод. В настоящее время используется более сложная модель, включающая анализ и синтез естественно-языковых сообщений. Модель состоит из нескольких блоков: морфологический анализ – анализ слов в тексте; синтаксический анализ – анализ предложений, грамматики и связей между словами; семантический анализ – анализ смысла каждого предложения на основе некоторой предметно-ориентированной базы знаний; прагматический анализ — анализ смысла предложений в окружающем контексте на основе собственной базы знаний. Синтез включает аналогичные этапы, но несколько в другом порядке.

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 387; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.