Вторая часть небольшого экскурса в Пролог

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

мужик(фродо_беггинс).
родитель(банго_беггинс, бильбо_беггинс).

Пример правила, выглядел так:

папа(X, Y) :- мужик(X), родитель(X, Y).

Факты могут иметь и более сложный вид:

родитель(мужик (банго, беггинс), мужик (бильбо, беггинс)).

Структура зависит от представления данных и логики приложения.
Правила, они же, предикаты, они же — утверждения, представляют собой, своего рода формулы:

папа(X, Y) :- мужик(X), родитель(X, Y).

Здесь X, Y — переменные, а запятая между утверждениями, выполняет роль логического «И». Логическое «ИЛИ» записывается как знак точки с запятой «;». Символом точки «.», заканчиваются все предложения (строки) в прологе.
Универсальность использования утверждений, и главное отличие от функций в том как они могут быть использованы. Это проще всего пояснить на примере, опишем предикат, сравнивающий два значения:

compare(X,Y) :- X = Y.

А вот два примера его использования:

?- compare(2,2).
true. – сравниваем два числа, получаем результат ИСТИНА


?- compare(2,X).
X = 2. – задаем одно из чисел и система «догадывается», какое значение сделает условие истинным.

Несколько полезных ссылок:

  • SWI-prolog, — отличная кроссплатформенная реализация классического пролога, с интерфейсами для интеграции с C, C++, Java.
  • SWI-Prolog-Editor, — в комплекте со SWI-prolog идет emacs, но это IDE будет попроще, к томуже есть разные локализации, в том числе и русская.

Comments

comments

Leave a reply:

Site Footer

Sliding Sidebar

About Me

About Me

Для кого этот блог?

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

Что заставило меня создать его?

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

Немного о себе.

Мой первый серьезный опыт в IT это работа над desktop приложениями в компании «Эксперт-Софт». У истоков её стояли несколько амбициозных и талантливых молодых людей, с огнем в глазах и желанием работать «как майкрософт». То чем мы там занимались вполне могли бы сегодня назвать «стартапом». Рук было откровенно мало, поэтому приходилось заниматься всем: кодированием на Delphi, написанием скриптов на VBA, дизайном, вёрсткой и поддержкой вебсайта, работой над рекламной полиграфией, проектированием интерфейсов и БД. Работы было много, но запал был велик, команда очень разношерстная, гармонично дополняя друг-друга в решении нетривиальных задач. Благодаря тому что пришлось попробовать многое, постепенно вырисовалось понимание того чем хочется заниматься, и как. Софтверным программированием я был сыт по горло. Массы проблем десктопного софта в вебе просто не было, по определению. Зато был четкий фокус на дизайне, юзабилити, скорости. Поэтому когда пришла пора уходить из «Эксперт-Софт», я без всякого сожаления стал искать работу как разработчик для web. Поскольку городишко у нас не очень большой, выбор был практически предопределен. Так я стал работать в «Оникс-Системз», где и продолжаю работать поныне. За время работы в компании я как разработчик принимал участие в работе над несколькими десятками проектов. Несколько десятков проектов было сделано мною как фрилансером. Самым большим проектом в котором я сыграл роль менеджера, считаю свою семью. Также довольно большой проект мы сейчас поднимаем с командой разработчиков (на данный момент команда состоит из четырех php разработчиков, одного flex кодера и тестировщика). Отсюда, большой интерес к современным практикам и методологиям, разным подходам в управлении командой, повышению эффективности и качества работы. По мере сил, вдохновения и свободного времени, я буду писать об этом.

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

e-mail:
skype: denis.sheremetov
Старый сайт, с музычкой и флешом

Прочая онлайновая деятельность: