Começarei, talvez, apresentando o leitor deste artigo, pois nada atrai mais a atenção para o texto do que empatia pelo protagonista, até porque você agora está desempenhando o papel dele. Provavelmente, tendo ouvido ou lido uma vez a frase "programação lógica" e cheio de interesse, você, como atual ou futuro programador, foi ao Google. O primeiro link, é claro, leva à Wikipedia - leia a definição:
A programação lógica é um paradigma de programação baseado em prova automática de teoremas, bem como uma seção de matemática discreta que estuda os princípios de inferência lógica de informações com base em fatos dados e regras de inferência. A programação lógica é baseada na teoria e no aparato da lógica matemática usando os princípios matemáticos das resoluções.
"Hmm" - você pensa, e isso diz tudo. Complicado! E aqui nosso bravo herói deveria ter seguido o segundo link, mas me permitirei fazer um pequeno encarte, descrevendo o personagem principal: Você , na minha ideia, é um iniciante em programação e, mesmo que não, definitivamente não está familiarizado com sua aparência lógica ... Se o leitor já está um pouco (ou até muito) tentado com conhecimento nesta área, recomendo a leitura do artigo O que é programação lógica e por que precisamos , já que você tem interesse e curiosidade pelo assunto, e deixe o estudo do material abaixo para colegas menos experientes.
Então é hora do segundo link. O que será? Artigo sobre Habré? Talvez um artigo sobre outro recurso? Depois de ler os primeiros parágrafos em sites diferentes, você provavelmente não entenderá muito, já que, em primeiro lugar, o material é geralmente destinado a um leitor experiente e, em segundo lugar, não há tantas informações boas e compreensíveis sobre o assunto na Internet falante de russo, in- Em terceiro lugar, por alguma razão, sempre há um "prólogo" (estamos falando da linguagem de programação Prolog, é claro), mas a linguagem em si parece ser usada por muito poucas pessoas (honroso 35º lugar na classificação TIOBE ). No entanto, nosso herói não perde a motivação e, depois de um tempo, tropeça neste mesmo artigo, querendo ainda entender:
O que é programação lógica
, , .

, , Pascal ( - ). Python, C/C++/C#, Java. , , - :
1
2
3
4
, , , , () . , . , , . , , , , . , , , , , … ?
:
.
- .
, .
. ? ! Prolog-e, . , Prolog () . , "" , .
, , ( ) " ":
% , -
human('Plato'). % -
human('Socrates'). % -
human('Aristotle'). % ,
% ... .
mortal(X) :- human(X). % : "X , X - "
, , :
?- mortal('Socrates').
true.
"true", , , , - .

, , . . . , . , , - . "human('Socrates')." ? "human" "mortal" - . , , , .
. ( ) , ( (true) (false)). - .
% Prolog ,
like('Petya', 'Milk'). % ,
good('Kesha'). %
number_of_sides('Triangle', 3). %
like('Misha', X). % , X
. "mortal(X) :- human(X).". - , (/) . :
a(X,Y,Z) :- b(X), c(Y,Z), d().
a , b, c d. : " b X c X, Y d , a X, Y, Z ".
, , . , . , , -:
% ,
eat(father, cheese).
eat(father, apple).
eat(father, melon).
eat(mother, meat).
eat(sister, meat).
eat('Petya', cheese).
eat(brother, orange).
( ):
?- eat(father, apple). %
true.
?- eat(father, meat). %
false.
?- eat(sister, X). %
X = meat.
?- eat(X, cheese). %
X = father ;
X = 'Petya'.
?- eat(X, Y). %
X = father,
Y = cheese ;
X = father,
Y = apple ;
X = father,
Y = melon ;
X = mother,
Y = meat ;
X = sister,
Y = meat ;
X = 'Petya',
Y = cheese ;
X = brother,
Y = orange.
, . , ( ) . , , , .
( , ) , . , , , . , :
d(X,X,1) :- !. % X X = 1
d(T,X,0) :- atomic(T). % = 0
d(U+V,X,DU+DV) :- d(U,X,DU), d(V,X,DV). % =
d(U-V,X,DU-DV) :- d(U,X,DU), d(V,X,DV).
d(-T,X,-R) :- d(T,X,R).
d(C*U,X,C*W) :- atomic(C), C\=X, !, d(U,X,W). % , =
d(U*V,X,Vd*U+Ud*V) :- d(U,X,Ud), d(V,X,Vd). %
d(U/V,X,(Ud*V-Vd*U)/(V*V)) :- d(U,X,Ud), d(V,X,Vd).
:
?- d((x-1)/(x+1),x,R).
R = ((1-0)*(x+1)-(1+0)*(x-1))/((x+1)*(x+1)).
, . , , Prolog- . , , . . 8- . : - , . , , - - , , , . " ", , ( , , ).
, , , .
speciality(X,tech_translator) :- studied_languages(X), studied_technical(X). % X - ,
speciality(X,programmer) :- studied(X,mathematics), studied(X, compscience). % X - ,
speciality(X,lit_translator) :- studied_languages(X), studied(X,literature). % X - ,
studied_technical(X) :- studied(X,mathematics). % X ,
studied_technical(X) :- studied(X,compscience). % ...
studied_languages(X) :- studied(X,english). % X ,
studied_languages(X) :- studied(X,german). % ...
studied(petya,mathematics). %
studied(petya,compscience). % ...
studied(petya,english). % ...
studied(vasya,german). %
studied(vasya,literature). %...
, , - :
?- speciality(X,tech_translator).
X = petya ;
X = petya ;
false.
… , … - , . , X, :
, , . , , - , false. , , -, . , , - . "" , :

, ( ), . , ("" ). ( ). , 1, , . ., (). ? , . :
% : w - , b - , e -
is_ball(w). % w -
is_ball(b). % b -
near([X,e|T],[e,X|T]) :- is_ball(X). % ,
near([e,X|T],[X,e|T]) :- is_ball(X).
jump([X,Y,e|T],[e,Y,X|T]) :- is_ball(X), is_ball(Y). % ,
jump([e,Y,X|T],[X,Y,e|T]) :- is_ball(X), is_ball(Y).
% . ,
move(L1,L2) :- near(L1,L2).
move(L1,L2) :- jump(L1,L2).
move([X|T1],[X|T2]) :- move(T1,T2).
% . X Y
% Y , Y -
prolong([X|T],[Y,X|T]) :- move(X,Y), not(member(Y,[X|T])).
% - , - , - ,
bdth([[X|T]|_],X,R) :- reverse([X|T], R). % , ( , )
bdth([P|QI],Y,R) :- bagof(Z,prolong(P,Z),T), append(QI,T,QO), !, bdth(QO,Y,R). % ,
bdth([_|T],Y,R) :- bdth(T,Y,R). % , bagof false,
bsearch(X,Y,R) :- bdth([[X]],Y,R). % bdth
% ,
solve :- bsearch([w,w,w,e,b,b,b],[b,b,b,e,w,w,w],P), write(P), nl, length(P, Len), write(Len), nl.
solve, , , - . ( ) , , . - , ( ()) . . , , ( ) . , , .
. , ? : . , , . : , 1, 2, 4 . . :
% - , - , - ,
dpth_id([X|T],X,R,0) :- reverse([X|T], R). %
dpth_id(P,Y,R,N) :- N > 0, prolong(P,P1), N1 is N - 1, dpth_id(P1,Y,R,N1). % >0,
generator(1). % 1
generator(N) :- generator(M), N is M + 1. % 2, 3, 4 . .
isearch(X,Y,R) :- generator(D), dpth_id([X],Y,R,D). % , .
-, , , ( reverse, ). , ( ). -, "" , , ( , ), . -, - , . , , : 16.
, , , . , . , "". , , ? :
near([w,e|T],[e,w|T]).
near([e,b|T],[b,e|T]).
jump([w,X,e|T],[e,X,w|T]) :- is_ball(X).
jump([e,X,b|T],[b,X,e|T]) :- is_ball(X).
, . , ( ), -, , -, , -, . . , , . , , . , .

, .
: - . , , , , , , . , , . , . , . , . , " ", " ?" , , " ". - , , "" ( , , ). , . . .
: , - . , , ( ). . , , ( , , ).
-: , , . , . , . . , , , IT . - , -, , - . , , . .
, , ( , ). , ( ) . Prolog-. , , ( ), , ( . . ), : , , .
2021-
, :
- , , , , - . , ( , ) , , .
- , . -, - ( , , ). -, , , . -, , , . -, , , .
E aqui resta apenas desejar um 2021 produtivo !