Prolog

Материал из Lurkmore

Перейти к: навигация, поиск
Wrar64.pngA long time ago, in a galaxy far, far away...
События и явления, описанные в этой статье, были давно, и помнит о них разве что пара-другая олдфагов. Но Анонимус не забывает!

Prolog (сокр. от французского PROgrammation en LOGique) — декларативный язык логического программирования, состоящий из фактов и правил логического вывода чуть менее, чем полностью.

Содержание

История

Впервые появился в начале 1970х годов. Интерес к языку возрос в 80-х годах, когда японские ученые решили использовать его для создания систем искусственного интеллекта в рамках национальной программы «компьютеры пятого поколения».

После облома этого нацпроекта интерес к языку поугас, однако его до сих пор используют в некоторых вузах при изучении математической логики, искусственного интеллекта и т. п. матана. Студенты этому абсолютно не рады, олдфагам известен DOS-вирус «Гражданская оборона», целенаправленно поражающий Turbo Prolog и программы на нём.

Также фрагменты кода на Прологе были обнаружены в некой системной DLL от Windows NT4, код предположительно отвечал за привязку стека протоколов к сетевым картам.

Примеры кода

Классика жанра:

helloworld:- write('Hello World!').

После чего этот скрипт загружается в интерпретатор и выполняется запрос:

?- helloworld.
Hello World!
true. 
 
?-

Чуть более сложный пример:

% это факты: PHP, Java и Visual Basic являются быдлокодерскими языками
быдлокодерский_язык(php).
быдлокодерский_язык(java).
быдлокодерский_язык(visual_basic).
 
% это тоже факты: Вася - программист на похапе, Петя - на асме, 
% Раджеш - на Visual Basic, Джон - на С и Адольф - на Brainfuck 
программист(вася, php).
программист(петя, assembler).
программист(раджеш, visual_basic).
программист(джон, pure_c).
программист(адольф, brainfuck).
 
% а это - правило вывода - "быдлокодер - это программист на быдлокодерском языке"
быдлокодер(Некто):- программист(Некто, Язык), быдлокодерский_язык(Язык).

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

?- быдлокодер(А).
  A = вася;
  A = раджеш;
false.
 
?-

false в конце означает, что других быдлокодеров найти не удалось.

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

ххх: Пролог это пиздец.
ууу: Вот кодишь ты на нормальном языке, все более или менее кодится, ок, норм. Кодишь на прологе — и блять словно ты накурился. Ты, вроде бы, тоже кодишь, но этой какой-то ад и пиздец невообразимый, где запах можно описать стулом, а время — фиолетовое.

Bashorgrufavicon.pngБездна

Впрочем, сегодня примерно те же конструкции используется в запросах к СУБД на языке SQL.

Warning!

Студент, запомни: твой научник тоже был романтичным студентом, и ему тоже не давали покоя «инновационные технологии» своего времени. Возможно, некоторые из них он полюбил на всю жизнь. На пике популярности Prolog позиционировался как универсальный silver bullet, после которого никаких других языков не нужно, чем заразил умы многих. Если профессор пытается загипнотизировать тебя бородой на написание диплома на Прологе — беги! Вполне вероятно, что у него тяжелая травма на этой почве, и каждый год он выбирает жертву, которая будет пытаться смыть его позор и доказать всем. Тебя ждёт неминуемый FAIL с необходимостью переписать весь код за два дня до защиты, его ждёт новая жертва. По словам приезжих членов комиссии из default city, прецеденты всё ещё случаются по всей стране.

Галерея

См. также

Ссылки


Это незавершённая статья. Вы можете помочь, исправив и дополнив её.
Источник — «http://lurkmo.re/Prolog»