Небольшая вводная в язык программирования Пролог

Последняя неделя была наполнена впечатлениями от языка Пролог. Раньше сталкивался с этим только поверхностно, но в ближайшем будущем, надеюсь, придется использовать его в реальном проекте. Хочу поделиться впечатлениями и рассказать о базовом синтаксисе. Для людей, которые долгое время имели дело с имперетивными языками (C, JavaScript, C#, etc) это должно быть настоящим переворотом сознания. По началу, кажется что язык написан марсианами. Ни проверок, ни циклов в их классическом представлении, даже функции заменены предикатами.

Возникает вопрос, — а на что нужен этот самый пролог, если уже есть C++, C#, Java и даже php. Пролог бесполезен для написания драйверов, программ с разухабистым GUI, веб приложений. Зато с успехом применяется для решений задач логистики, планирования расписаний, искусственного интеллекта. В общем, инструмент специализированный, при правильном его применении способный творить чудеса.

Классический пример программы на прологе, описание генеалогического дерева:

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

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

Основа синтаксиса — константы: банго_беггинс, бильбо_беггинс и проч. Константы могут быть также цифрами, строками (строки заключаются в двойные кавычки).
Переменные в прологе, начинаются с прописной буквы или знака подчеркивания, переменная, состоящая просто из подчеркивания «_», означает неименованную переменную (что либо, другими словами).
А теперь сила пролога, определяем предикат «папа»:

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

Т.е. если родитель «мужик», считаем его папой. А теперь, — пример использования:

?- папа(банго_беггинс, бильбо_беггинс). % (спрашиваем у системы)
true. – получаем ответ

Или, например, узнаем кто дети Банго Беггинса:

?- родитель(банго_беггинс, X). % пишем запрос
X = бильбо_беггинс. – получаем правильный ответ

Или, например, узнаем всех пап:

?- папа(X, _). % формируем запрос
X = банго_беггинс ; - получаем первый правильный ответ
X = бильбо_беггинс ; - получаем второй правильный ответ
false – правильные ответы, исчерпаны

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

Comments

comments

4 comments On Небольшая вводная в язык программирования Пролог

Leave a reply:

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Site Footer

Sliding Sidebar

About Me

About Me

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

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

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

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

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

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

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

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

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