image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Fernanda Araujo
Fernanda Araujo23/06/2025 10:31
Compartilhe

Paradigmas de Linguagens de Programação em Python: Python Lógico (Part. 09)

  • #Python

Aprender diferentes paradigmas de programação nos ajuda a pensar de formas diversas e a escolher abordagens mais adequadas para certos tipos de problemas. Hoje, vamos explorar o paradigma lógico, um estilo de programação baseado em regras e dedução automática — bem diferente da forma sequencial tradicional.

Embora o Python não seja uma linguagem lógica nativa, ele permite simular esse paradigma com bibliotecas específicas. Para tornar essa jornada mais divertida e didática, vamos aprender esse conceito por meio da Nico Robin, a arqueóloga do bando dos Chapéus de Palha em One Piece, que decifra os mistérios do mundo a partir dos Poneglyphs — uma metáfora perfeita para a programação lógica.

🔎 O que é Programação Lógica?

(com o exemplo da Nico Robin e os Poneglyphs 🗿📜)

A programação lógica é um paradigma declarativo baseado em lógica de predicados, onde você declara fatos e regras, e o sistema é responsável por deduzir respostas a partir dessas informações. O raciocínio é feito por um motor lógico de inferência, que resolve perguntas de forma simbólica, sem que o programador diga como chegar à resposta.

Isso lembra exatamente o que Robin faz: ela encontra fragmentos de verdade espalhados pelo mundo (os Poneglyphs), e, com base em seu conhecimento, reconstrói a história perdida e localiza artefatos lendários. Vamos modelar isso em lógica!

Fatos: os Poneglyphs encontrados

prolog

% Localização dos Poneglyphs e seus tipos
poneglyph(ilha_ohara, historico).
poneglyph(ilha_sky_piea, historico).
poneglyph(ilha_zou, road).
poneglyph(ilha_wano, road).
poneglyph(ilha_alabasta, localização_pluton).

% Robin é a única que sabe ler
sabe_ler_poneglyph(robin).

Regra: Robin descobre segredos se encontrar Poneglyphs não-históricos

prolog

descobre_segredo(Personagem, Ilha) :-
  sabe_ler_poneglyph(Personagem),
  poneglyph(Ilha, Tipo),
  Tipo \= historico.

Consulta: Quais segredos Robin pode descobrir?

prolog

?- descobre_segredo(robin, Ilha).
% Ilha = ilha_zou ;
% Ilha = ilha_wano ;
% Ilha = ilha_alabasta.

Você declara os fatos e as regras, e o sistema responde automaticamente. Esse é o poder do paradigma lógico.

🧠 Comparativo: Python vs Prolog

image

🐍 Python é uma linguagem lógica?

Não. Python é uma linguagem multiparadigma, mas não possui suporte nativo ao paradigma lógico, como Prolog. Em lógica, é necessário um mecanismo de inferência, unificação de variáveis e backtracking — funcionalidades ausentes no núcleo do Python.

Contudo, com bibliotecas como:

  • kanren (miniKanren para Python)
  • pyDatalog
  • sympy.logic
  • constraint

...é possível simular o comportamento lógico, e realizar consultas e deduções com base em fatos e regras.

Exemplo prático com kanren: Robin em Python

Vamos simular um exemplo similar ao anterior com a biblioteca kanren, usando Python puro:

python

from kanren import Relation, facts, run, var

# Definindo os fatos
poneglyph = Relation()
facts(poneglyph,
  ("ilha_ohara", "historico"),
  ("ilha_sky_piea", "historico"),
  ("ilha_zou", "road"),
  ("ilha_wano", "road"),
  ("ilha_alabasta", "localizacao_pluton")
)

# Quem sabe ler
sabe_ler = Relation()
facts(sabe_ler, ("robin",))

# Variáveis lógicas
x = var()

# Consulta: quais segredos Robin pode descobrir (onde tipo != historico)?
def descobre_segredo(pessoa):
  return run(0, x,
      sabe_ler(pessoa),
      poneglyph(x, var()),
      ~poneglyph(x, "historico")
  )

print(descobre_segredo("robin"))
# Saída esperada: ('ilha_zou', 'ilha_wano', 'ilha_alabasta')

💡 Aplicações do Paradigma Lógico

A lógica é útil quando precisamos descrever conhecimento e deixá-lo operar por si só, como em:

  • Sistemas especialistas (regras de decisão)
  • IA simbólica e raciocínio dedutivo
  • Consultas sobre grafos de conhecimento
  • Regras de negócio (com compliance e validação)

📦 Outras bibliotecas Python úteis

image

🔚 Conclusão

Assim como Nico Robin reconstrói a verdade escondida no mundo com base em fragmentos de pedra, o paradigma lógico nos permite inferir respostas com base em fatos e regras — sem programar cada passo.

Embora o Python não seja uma linguagem lógica nativa, sua versatilidade permite que ele adote esse estilo de pensamento, especialmente com o suporte de bibliotecas como kanren. Esse paradigma é uma poderosa ferramenta para quem deseja explorar raciocínio automático, IA simbólica e modelagem de regras complexas.

👉 No próximo artigo, vamos explorar sobre Python declarativo...

image

Compartilhe
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander - Cibersegurança #2
Comentários (1)
DIO Community
DIO Community - 23/06/2025 16:47

Fernanda, seu artigo sobre programação lógica em Python é uma ótima introdução ao paradigma lógico e sua aplicação, mesmo em uma linguagem multiparadigma como Python. A analogia com Nico Robin e os Poneglyphs é uma maneira criativa e acessível de explicar como a lógica de predicados funciona, tornando o conteúdo mais atraente e fácil de entender.

Gostei muito de como você explicou a diferença entre Python e Prolog, esclarecendo que, embora Python não seja uma linguagem lógica nativa, ainda é possível simular esse comportamento com bibliotecas como kanren. O exemplo prático com a biblioteca foi muito eficaz para ilustrar a ideia e mostrar como podemos realizar deduções lógicas no Python.

Minha pergunta para você é: quais seriam as possíveis limitações de usar Python para programação lógica em comparação com linguagens nativas como Prolog? E como você acredita que essa abordagem pode ser aplicada em projetos do dia a dia?