В чем состоит особенность логического программирования ответ кратко

Обновлено: 05.07.2024

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

Содержание

Язык и система Пролог

Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики исчисления предикатов, представляющей собой подмножество логики предикатов первого порядка.

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

Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.

Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщенными сведениями.

Базы Знаний

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

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

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

Логическая модель знаний

Базы Знаний в Информатике - то совокупность фактов и правил вывода в экспертных системах и системах логического программирования, реализующие осмысленные ответы на вопросы.

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

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

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

Базы знаний экспертных систем в этом смысле становятся логическими моделями людей-экспертов, обладающих теми или иными достоверными и недостоверными знаниями.

Тестирование знаний студентов можно понимать и осмысливать как тестирование баз знаний логических моделей учащихся - студентов, школьников и слушателей курсов.


Прежде чем начинать обзор языков, необходимо сначала узнать, что это такое и зачем оно нужно.

Что такое логическое программирование?

Древо языков

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

В чем различия?

Многие объединяют логические языки программирования с функциональными, однако они обладают некоторыми различиями, о которых мы далее поговорим.

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

Однако существуют и минусы. Не все можно описать с помощью логики, поэтому в таких программах функции будут работать не всегда так, как нужно, или вообще не будут работать.

Кому полезно учить языки программирования логического типа?

Стоит сразу ответить на вопрос: учить данные языки полезно всем – от школьника до человека в возрасте. Ведь логические языки программирования способны буквально заставить наш мозг думать логически. Также такие языки будут очень полезны в создании искусственного интеллекта или при работе с данными.

Логические языки программирования

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

Язык prolog

Данный язык был разработан в 1972 году Аленом Колмероэ и является актуальным и свежим и на сегодняшний день. Хоть это и не самый простой язык в плане синтаксиса, но зато весьма полезен в понимании логики компьютера. Посмотрите, как выглядит код, описывающий книгу:

Пример написания программы

Такое описание довольно просто понять и разобрать что к чему. Именно поэтому обучение подобному языку дальше не составит огромных трудностей и не потребует танцев с бубном.

Давайте дальше разберем его плюсы и минусы.

1. Код легко понять и запомнить.

Как уже упоминалось выше, код в языке Prolog пишется не так уж и сложно. Он довольно прост, в понимании обычного пользователя.

2. Выражения и факты.

Данный язык можно использовать без каких-либо вычислений, опираясь только на выражения и факты.

3. Путь не влияет.

Какой бы путь к реализации вашей задумки вы ни выбрали, он практически никогда не влияет на результат выполнения программы.

Проблемы языка

1. Слабые инвестиции.

Из-за того, что этот язык мало поддерживают в материальном плане – он развивается довольно медленно, маленькими шажками.

2. Невозможность создания комплексных программ.

Данный язык будет невозможно использовать без связки с другим, если вы хотите создавать более сложные программы с большим функционалом.

3. Вычислительные операции.

Для вычислительных операций опять же придется использовать другие языки.

Пошедший от языка Prolog, Mercury создан, чтобы решить две проблемы, связанные с популярным языком программирования.

Логические языки программирования довольно сильно уступают в производительности императивному типу.

В языках такого типа уходит довольно много времени на отладку программы, а также производится меньше проверок на ошибки в программе, из-за чего порой происходят неприятности.

Пример кода на Mercury:

Заключение

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

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

Самым известным языком логического программирования является Prolog.

Первым языком логического программирования был язык Planner (см. обзор Шапиро (Ehud Shapiro) [1989]), в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Planner использовался для того, чтобы понизить требования к вычислительным ресурсам (с помощью метода backtracking) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан язык Prolog, который не требовал плана перебора вариантов и был, в этом смысле, упрощением языка Planner.

От языка Planner также произошли логические языки программирования QA-4, Popler, Conniver и QLISP. Языки программирования Mercury, Visual Prolog, Oz и Fril произошли уже от языка Prolog. На базе языка Planner было разработано также несколько альтернативных языков логического программирования, не основанных на методе поиска с возвратами (backtracking), например, Ether (см. обзор Шапиро [1989]).

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

Наиболее известным языком логического программирования является Prolog(Programming in Logic), созданный в 1973 г. французским учёным А. Кольмероэ.

Это факт, который сообщает, что кошки питаются мышами.

eats (X, Y):- eats (X, Z), eats (Z, Y).

Это правило, по которому следует, что если Z питается X и Z питается Y, то X питается Y.

Формально это верное правило, хотя по отношению к реальности оно может быть бессмысленным.

Далее можно поставить вопрос:

Тогда будет получен ответ: Y == mice.

Объектно-ориентированное программирование

Центральным понятием объектно-ориентированного программирования является объект. Объект интегрирует некоторое состояние (данные) и доступные только ему механизмы изменения этого состояния (методы). Объединение данных и методов в объекте называется инкапсуляцией. Инкапсуляция скрывает от пользователя подробности работы объекта, тем самым упрощая пользование методами объекта, а также предохраняет от случайных ошибок, нарушающих состояние объекта. Другая особенность такого программирования заключается в том, что сущность объекта и его методов может быть отделена от конкретной формы данного объекта в программе. Например, некоторый метод реализует алгоритм, не конкретизируя точно, с какой структурой данных он работает. В реальной программе этот метод будет подстраиваться под конкретную структуру данных. Такой принцип программирования называется полиморфизмом. В процессе программирования создаются различные типы объектов. При этом несколько разных объектов могут иметь ряд одинаковых свойств или методов. Логично выделить эти свойства как свойства более общего объекта, а исходные объекты сделать наследниками этих свойств. Этот принцип называется наследованием.

Таким образом, язык объектно-ориентированного программирования имеет в своём составе механизмы реализации трёх главных принципов такого программирования: инкапсуляции, полиморфизма и наследования.

Наиболее распространённым языком объектно-ориентированного программирования, видимо, следует считать язык С++. Он был разработан в 1982 г. Б. Страуструпом. В 1998 г. был принят ISO-стандарт языка.

Язык С++ полностью включает в себя язык С. Главная часть программы на языке С++ состоит из определений классов (типов объектов) и член-функций классов (методов).

Язык программирования Adaбыл разработан в 1979 г. по заказу Министерства обороны США и является обязательным для многих военных приложений. Основное назначение языка – создание больших программ для работы в реальном времени. Синтаксис языка очень похож на синтаксис языка Pascal. Существенным недостатком языка является его громоздкость.

Контрольные вопросы

1. Какая основная цель преследовалась при создании ЭВМ с параллельной обработкой данных?

2. Что такое производительность ЭВМ и как её можно оценить?

3. Почему существуют несколько различных способов оценки производительности?

4. Что такое алгоритм?

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

Наиболее известным языком логического программирования является Prolog(Programming in Logic), созданный в 1973 г. французским учёным А. Кольмероэ.




Это факт, который сообщает, что кошки питаются мышами.

eats (X, Y):- eats (X, Z), eats (Z, Y).

Это правило, по которому следует, что если Z питается X и Z питается Y, то X питается Y.

Формально это верное правило, хотя по отношению к реальности оно может быть бессмысленным.

Далее можно поставить вопрос:

Тогда будет получен ответ: Y == mice.

Объектно-ориентированное программирование

Центральным понятием объектно-ориентированного программирования является объект. Объект интегрирует некоторое состояние (данные) и доступные только ему механизмы изменения этого состояния (методы). Объединение данных и методов в объекте называется инкапсуляцией. Инкапсуляция скрывает от пользователя подробности работы объекта, тем самым упрощая пользование методами объекта, а также предохраняет от случайных ошибок, нарушающих состояние объекта. Другая особенность такого программирования заключается в том, что сущность объекта и его методов может быть отделена от конкретной формы данного объекта в программе. Например, некоторый метод реализует алгоритм, не конкретизируя точно, с какой структурой данных он работает. В реальной программе этот метод будет подстраиваться под конкретную структуру данных. Такой принцип программирования называется полиморфизмом. В процессе программирования создаются различные типы объектов. При этом несколько разных объектов могут иметь ряд одинаковых свойств или методов. Логично выделить эти свойства как свойства более общего объекта, а исходные объекты сделать наследниками этих свойств. Этот принцип называется наследованием.

Таким образом, язык объектно-ориентированного программирования имеет в своём составе механизмы реализации трёх главных принципов такого программирования: инкапсуляции, полиморфизма и наследования.

Наиболее распространённым языком объектно-ориентированного программирования, видимо, следует считать язык С++. Он был разработан в 1982 г. Б. Страуструпом. В 1998 г. был принят ISO-стандарт языка.

Язык С++ полностью включает в себя язык С. Главная часть программы на языке С++ состоит из определений классов (типов объектов) и член-функций классов (методов).

Язык программирования Adaбыл разработан в 1979 г. по заказу Министерства обороны США и является обязательным для многих военных приложений. Основное назначение языка – создание больших программ для работы в реальном времени. Синтаксис языка очень похож на синтаксис языка Pascal. Существенным недостатком языка является его громоздкость.

Контрольные вопросы

1. Какая основная цель преследовалась при создании ЭВМ с параллельной обработкой данных?

2. Что такое производительность ЭВМ и как её можно оценить?

3. Почему существуют несколько различных способов оценки производительности?

Читайте также: