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

Последняя неделя была наполнена впечатлениями от языка Пролог. Раньше сталкивался с этим только поверхностно, но в ближайшем будущем, надеюсь, придется использовать его в реальном проекте. Хочу поделиться впечатлениями и рассказать о базовом синтаксисе. Для людей, которые долгое время имели дело с имперетивными языками (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:

Site Footer

Sliding Sidebar

About Me

About Me

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

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

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

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

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

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

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

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

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