O que é Prolog?
Prolog é a abreviação de Programming in Logic (Programação em Lógica). Criada no início dos anos 1970 por Alain Colmerauer e sua equipe, a linguagem nasceu do desejo de usar teoremas automáticos para processamento de linguagem natural. A ideia central é simples e poderosa: um programa Prolog é um conjunto de fatos e regras que descrevem relações. O motor de inferência da linguagem usa esses elementos para deduzir novas informações a partir das consultas que você faz.
Enquanto em Python ou C você escreve algo como x = 2 + 2 para calcular um valor, em Prolog você declara verdades como pai(jose, ana). e pergunta ao sistema: “Quem é o pai de ana?” A resposta não vem de um algoritmo passo a passo, mas de um processo de unificação e backtracking automático.
Paradigma Declarativo vs. Imperativo
Para entender a diferença, pense em duas abordagens para chegar a um destino:
| Paradigma Imperativo (Python, C, Java) | Paradigma Declarativo (Prolog) |
|---|---|
| Você descreve o caminho: vire à esquerda, ande 100m, vire à direita… | Você descreve o destino: quero chegar à praça central. O sistema descobre a rota. |
| O foco está no controle — como as instruções são executadas. | O foco está na lógica — quais relações e fatos são verdadeiros. |
| Variáveis são reatribuídas continuamente. | Variáveis, uma vez ligadas a um valor, só mudam via backtracking (desfazendo a ligação). |
| O programa é uma sequência de comandos. | O programa é uma base de conhecimento com fatos e regras. |
Em Prolog, você não diz “calcule a raiz quadrada”. Você afirma “a raiz quadrada de X é Y se Y*Y = X” e pergunta raiz(9, R).. A diferença é sutil, mas transforma completamente a experiência de programar.
Onde Prolog é Utilizado?
Apesar de ser uma linguagem de nicho, Prolog brilha em áreas onde estrutura, conhecimento e inferência são fundamentais:
- Inteligência Artificial (IA) e Sistemas Especialistas: MYCIN (diagnóstico médico), XCON (configuração de computadores) e sistemas modernos de raciocínio simbólico.
- Processamento de Linguagem Natural (PNL): Análise gramatical, compreensão de texto e geração de linguagem.
- Sistemas de Recomendação e Tutoriais Inteligentes: Regras de inferência para aconselhamento personalizado.
- Verificação de Software e Prova de Teoremas: Raciocínio formal sobre a correção de programas.
- Bioinformática: Modelagem de relações complexas em sequências genéticas.
Guia de Instalação: SWI-Prolog
A implementação mais popular e ativa é o SWI-Prolog, disponível para todos os sistemas operacionais. Vamos instalá-la:
Windows
- Acesse a página de downloads do SWI-Prolog.
- Baixe o instalador para 64 bits (recomendado).
- Execute o arquivo
.exee siga as instruções do instalador.
macOS
- Opção 1 (Instalador gráfico): Baixe o arquivo
.dmg(universal para Intel e Apple Silicon) e arraste o SWI-Prolog para a pasta Applications. - Opção 2 (Homebrew): No terminal, execute:
1brew install swi-prolog
Linux (Ubuntu/Debian)
O SWI-Prolog mantém um PPA oficial:
|
1 2 3 |
sudo add-apt-repository ppa:swi-prolog/stable sudo apt update sudo apt install swi-prolog |
Para outras distribuições, verifique a disponibilidade do pacote ou use o Snap:
|
1 |
sudo snap install swi-prolog |
Primeiro Contato com o SWI-Prolog
Abra o terminal (ou o atalho do SWI-Prolog) e digite swipl. Você verá algo como:
|
1 2 3 4 |
Welcome to SWI-Prolog ... For help, use ?- help(Topic). or ?- apropos(Word). ?- |
O prompt ?- é a linha de consulta — ali você interage com o sistema.
Exemplo prático:
- Salve seu programa ‘familia.pl’ em ‘C:/Prolog’
- Em SWI-Prologo execute:
- Acessando o diretório, execute cd(‘C:/Prolog’).
- Para listar os programas execute ls
- Para acessar o seu programa salvo no diretório consult(‘familia.pl’).
- Agora pode fazer as consultas ao seu programa
Comandos Básicos:
| Comando | O que faz |
|---|---|
?- consult('meu_programa.pl'). ou ?- [meu_programa]. | Carrega um arquivo de código Prolog |
?- [user]. | Digite fatos/regras diretamente no terminal (Ctrl+D no Linux/macOS ou Ctrl+Z no Windows para finalizar) |
?- halt. | Sai do SWI-Prolog |
?- pwd. | Mostra o diretório atual |
?- cd('caminho'). | Muda o diretório de trabalho |
Tab para autocompletar e as setas para acessar o histórico de comandos.Hello World em Prolog
Vamos criar nosso primeiro programa. Abra um editor de texto, crie um arquivo chamado hello.pl e adicione:
|
1 2 3 4 5 6 7 8 |
% Um fato simples pessoa(ana). pessoa(jose). % Uma regra: alguém é "conhecido" se for uma pessoa conhecido(X) :- pessoa(X). |
Agora, no terminal do SWI-Prolog, carregue o arquivo:
|
1 2 |
?- [hello]. true. |
Faça consultas:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
?- pessoa(ana). % Pergunta: Ana é uma pessoa? true. ?- conhecido(jose). % José é conhecido? true. ?- conhecido(maria). % Maria é conhecida? false. ?- pessoa(X). % Quem são as pessoas? X = ana ; X = jose. |
ana, jose) e maiúsculas para variáveis (X, Y, Pessoa). Esse é um erro comum para iniciantes!
Exercícios Práticos
- Instalação e primeiros passos: Instale o SWI-Prolog, inicie o terminal e saia usando
halt. - Crie um banco de dados familiar: Crie um arquivo
familia.plcom fatos:pai(jose, maria).,mae(ana, maria).,pai(jose, carlos).. Carregue e consulte: Quem é pai de maria? - Regras simples: Adicione
irmao(X, Y) :- pai(P, X), pai(P, Y), X \= Y.. Teste: Maria e Carlos são irmãos? - Listas: Teste no terminal:
?- member(3, [1,2,3,4]).(isso retornatrueporque 3 está na lista). - Explore: Use
?- help(consult).para ler a documentação integrada.
Boas Práticas e Referências
- Organize seu código: Crie arquivos
.plpara cada conjunto de regras (ex.:familia.pl,geometria.pl). - Use comentários:
%para comentários de linha — ajudam a entender a lógica mais tarde. - Teste incrementalmente: Carregue seu arquivo com
[nome].e consulte cada regra após adicioná-la. - Cuidado com a ordem das regras: O Prolog tenta resolver na ordem em que você escreveu. Regras mais gerais podem bloquear as mais específicas.
- Documentação oficial: A documentação do SWI-Prolog é excelente. Use
?- apropos(palavra).para buscar tópicos.
veja https://www.areadetrampo.com.br/prolog/