Prolog

filósofo
Se você vem do universo da programação imperativa — onde cada linha de código é uma instrução para o computador executar, passo a passo — prepare-se para uma revolução no seu modo de pensar. Prolog é uma linguagem que inverte o jogo: em vez de dizer como resolver um problema, você descreve o que é o problema e deixa a máquina descobrir a solução.

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.
Destaque: Prolog também está voltando com força em abordagens neuro-simbólicas, combinando grandes modelos de linguagem com a capacidade de raciocínio lógico e explicável do Prolog.

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

  1. Acesse a página de downloads do SWI-Prolog.
  2. Baixe o instalador para 64 bits (recomendado).
  3. Execute o arquivo .exe e 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:

Linux (Ubuntu/Debian)

O SWI-Prolog mantém um PPA oficial:

Para outras distribuições, verifique a disponibilidade do pacote ou use o Snap:

Primeiro Contato com o SWI-Prolog

Abra o terminal (ou o atalho do SWI-Prolog) e digite swipl. Você verá algo como:

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:

ComandoO 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
💡 Dica: Use a tecla 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:

Agora, no terminal do SWI-Prolog, carregue o arquivo:

Faça consultas:

Observação: Prolog usa letras minúsculas para átomos (constantes como ana, jose) e maiúsculas para variáveis (X, Y, Pessoa). Esse é um erro comum para iniciantes!

Exercícios Práticos

  1. Instalação e primeiros passos: Instale o SWI-Prolog, inicie o terminal e saia usando halt.
  2. Crie um banco de dados familiar: Crie um arquivo familia.pl com fatos: pai(jose, maria)., mae(ana, maria)., pai(jose, carlos).. Carregue e consulte: Quem é pai de maria?
  3. Regras simples: Adicione irmao(X, Y) :- pai(P, X), pai(P, Y), X \= Y.. Teste: Maria e Carlos são irmãos?
  4. Listas: Teste no terminal: ?- member(3, [1,2,3,4]). (isso retorna true porque 3 está na lista).
  5. Explore: Use ?- help(consult). para ler a documentação integrada.

Boas Práticas e Referências

  • Organize seu código: Crie arquivos .pl para 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.

Programação Lógica

filósofo

declarar o que é, não como fazer

Programação lógica inverte a lógica tradicional de programação. Em vez de dizer “como” resolver um problema, você declara “o que” é verdade sobre ele. O programador descreve fatos, regras e objetivos, deixando a máquina descobrir a solução. Por exemplo, você declara “pai(joao, maria)” e “pai(maria, ana)”. Pergunta então “avô(joao, ana)?”. O sistema aplica regras como “avô(X, Y) :- pai(X, Z), pai(Z, Y)” para responder. Dessa forma, o foco muda da construção de algoritmos para a especificação do conhecimento.

prolog: a linguagem mais representativa

Prolog é a linguagem de programação lógica mais conhecida e influente da história. Seu nome deriva de “Programming in Logic” e reflete sua base teórica sólida. Programas em Prolog consistem em cláusulas de Horn, que são regras com cabeça e corpo. O sistema responde a consultas usando um mecanismo de busca chamado unificação. Além disso, ele utiliza encadeamento para trás para encontrar todas as soluções possíveis. A linguagem foi amplamente usada em sistemas especialistas, processamento de linguagem natural e pesquisa acadêmica. Seu legado permanece vivo em áreas que exigem raciocínio simbólico sofisticado.

unificação: o mecanismo de casamento

A unificação é o processo de encontrar atribuições de variáveis que tornam duas expressões iguais. É o coração do mecanismo de inferência em programação lógica. Por exemplo, unificar “pai(joao, X)” com “pai(joao, maria)” atribui X = maria. Unificar “pai(Y, maria)” com “pai(joao, maria)” atribui Y = joao. Esse processo pode ocorrer com estruturas complexas aninhadas e variáveis em ambas as expressões. Quando a unificação falha, o sistema retrocede (backtrack) para tentar caminhos alternativos. Esse mecanismo permite busca inteligente sem que o programador precise codificar explicitamente cada tentativa.

backtracking: explorando alternativas automaticamente

O backtracking permite que o sistema explore múltiplas possibilidades de forma sistemática. Quando uma tentativa de unificação falha, o Prolog retorna ao ponto anterior e tenta outra alternativa. Por exemplo, para encontrar “filho(joao, X)”, o sistema pode testar cada pai possível até encontrar correspondência. Ele mantém pontos de escolha registrados durante a execução para explorar caminhos diferentes. Esse comportamento elimina a necessidade de escrever estruturas de controle complexas manualmente. Consequentemente, o programador concentra-se nas regras e fatos, deixando a busca a cargo da máquina. É como ter um solucionador de problemas que tenta caminhos diferentes até encontrar a resposta.

exemplos práticos e aplicações

Sistemas de genealogia são o exemplo clássico de aplicação em programação lógica. Com fatos sobre relações familiares e regras para “irmão”, “tio” ou “primo”, o sistema responde perguntas complexas. Processamento de linguagem natural também utiliza Prolog para análise gramatical e extração de significado. Sistemas de recomendação podem implementar regras de negócio de forma elegante com poucas linhas. Embora menos visível hoje, a programação lógica influenciou linguagens como SQL e sistemas de regras modernos. Para iniciantes, ela oferece uma forma diferente de pensar sobre programação: declarar conhecimento e deixar o raciocínio acontecer.

LinkedIn
Share
Instagram