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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Site Footer

Sliding Sidebar

About Me

About Me

For whom this blog for?

For those who are interested in modern Internet technologies, IT business, startups, management, quality control, personal effectiveness, motivation. Here I write about what is interesting, about problems I faced and solutions I found. I hope it will be interesting to you either.

What motivates me to write?

The desire to improve, to study deeper topics that interest me. Find people with similar problems and tasks, together look for ways out and solutions.

Feel free to contact if you have anything to say to me

Old Flash site with my artistic works and misuc.