Desde a Grécia Antiga, filósofos têm buscado reduzir a complexidade natural a princípios simples. Gottfried Wilhelm Leibniz (1646–1716), no entanto, deu um passo que nenhum grego havia dado: não se contentou em descrever o mundo, quis calculá-lo. Matemático, lógico, diplomata e metafísico, Leibniz foi o primeiro pensador a formalizar a aritmética binária (1679) e a sonhar com uma linguagem universal capaz de transformar qualquer disputa filosófica em uma simples operação de cálculo, bastaria, dizia ele, que os debatedores se sentassem e dissessem: "Calculemus!" ("Vamos calcular!").
Três séculos depois, vivemos a primeira geração de máquinas que parece, enfim, testar essa hipótese na prática. Todo processador do planeta opera sobre 0s e 1s que Leibniz descreveu quando ninguém via utilidade prática nisso. E os grandes modelos de linguagem, ao tentar formalizar qualquer domínio do conhecimento humano em esquemas estruturados que uma máquina possa executar, parecem estar, sem saber, terminando um projeto que ele começou. Este artigo percorre quatro ideias centrais de Leibniz: o binário, a characteristica universalis, as mônadas e a otimização do "melhor mundo possível", e mostra como cada uma delas ecoa em conceitos que usamos todos os dias em engenharia de software e IA.
Desenvolvimento
O Cálculo Binário e a Profecia da Máquina de Pensar
Em 1679, Leibniz escreveu Explication de l'Arithmétique Binaire, no qual demonstrava que qualquer número podia ser representado usando apenas dois símbolos: 0 e 1. Ele não fez isso por necessidade prática, não havia máquina alguma para explorar essa descoberta, mas por fascínio filosófico e até teológico: em uma carta ao Duque de Brunswick, Leibniz descreveu o sistema binário como uma metáfora da criação, onde o 1 representava Deus (ou a unidade primordial) e o 0 representava o nada, e todos os números (toda a realidade) poderiam ser gerados a partir dessa dualidade mínima.
O que era metáfora teológica no século XVII é, hoje, a base literal de tudo que rodamos em produção. Cada boolean, cada bit de memória, cada porta lógica AND/OR/NOT de um processador é uma reencenação direta da intuição de Leibniz: a complexidade máxima emerge da combinação de uma diferença mínima.
Leibniz também especulou sobre uma machina arithmetica capaz de executar operações lógicas automaticamente, décadas antes de Babbage e mais de dois séculos antes de Turing. Ele não construiu essa máquina, mas construiu a ideia de que pensar poderia, em algum grau, ser mecanizado.
A Characteristica Universalis e o "Calculemus!"
A ambição mais ousada de Leibniz não era o binário, era a characteristica universalis: uma linguagem formal e simbólica capaz de representar qualquer conceito humano, de tal forma que qualquer disputa filosófica, jurídica ou científica pudesse ser resolvida por cálculo puro, sem ambiguidade. Sua frase mais citada resume o projeto: diante de um desacordo, os filósofos simplesmente pegariam suas canetas e diriam "calculemus" (vamos calcular) e a resposta correta emergiria do cálculo, não da retórica.
Leibniz nunca completou esse projeto. A linguagem natural resistiu à formalização total por séculos. Mas a busca por uma "gramática universal" que máquinas possam usar para raciocinar sobre qualquer domínio nunca desapareceu, ela apenas migrou de forma. Hoje, ela aparece em:
- JSON Schema e OpenAPI, que descrevem estruturas de dados de forma inequívoca e executável;
- Protocolos de tool-calling, como o Model Context Protocol (MCP), que permitem que um modelo de linguagem "converse" com ferramentas externas através de esquemas formais compartilhados;
- Prompts estruturados, que tentam converter intenção humana ambígua em instruções que um sistema possa executar de forma determinística.
Veja um esquema de definição de ferramenta usado por um agente de IA, não é uma coincidência que ele pareça uma tentativa moderna de characteristica universalis: uma notação formal, compartilhada entre humano e máquina, para que qualquer "disputa" sobre o que fazer seja resolvida por execução, não por interpretação.
// Um fragmento moderno da "characteristica universalis":
// uma linguagem formal que humano e máquina compartilham
const ferramentaClima = {
name: "consultar_clima",
description: "Retorna a previsão do tempo para uma cidade",
parameters: {
type: "object",
properties: {
cidade: { type: "string", description: "Nome da cidade" },
unidade: { type: "string", enum: ["celsius", "fahrenheit"] }
},
required: ["cidade"]
}
};
Onde Leibniz sonhava com filósofos resolvendo disputas metafísicas por cálculo, temos hoje agentes de IA resolvendo tarefas por invocação de funções, a mesma aposta, aplicada a um domínio mais modesto, porém real.
As Mônadas: da Metafísica às Monads da Programação Funcional
Aqui está uma curiosidade histórica pouco explorada fora dos círculos de filosofia: Leibniz é o autor do termo mônada (do grego monas, "unidade"). Em sua Monadologia (1714), ele descreve as mônadas como substâncias simples, indivisíveis, que compõem toda a realidade. A característica mais intrigante é que as mônadas "não têm janelas" ("les monades n'ont point de fenêtres"), elas não trocam informação diretamente entre si; toda a aparência de interação entre elas é, na verdade, resultado de uma harmonia pré-estabelecida por Deus.
A palavra monad reaparece séculos depois na teoria das categorias matemáticas e, a partir dela, na programação funcional, via Haskell, popularizada por trabalhos como os de Philip Wadler. Não é uma linhagem filosófica direta, mas a analogia estrutural é notável: uma Monad em programação funcional também encapsula um valor sem expor seu estado interno diretamente ("sem janelas"), e a interação entre computações encadeadas segue regras fixas e previsíveis, a própria noção de bind/flatMap funciona como uma "harmonia pré-estabelecida" entre operações que nunca acessam o estado umas das outras diretamente.
// Uma Monad simples: Maybe, "sem janelas" para o valor ausente
const Maybe = {
of: (value) => ({ value, isNothing: value === null || value === undefined }),
map(m, fn) {
return m.isNothing ? m : Maybe.of(fn(m.value));
}
};
const resultado = Maybe.of(10);
const dobrado = Maybe.map(resultado, x => x * 2);
const semValor = Maybe.of(null);
const tentativa = Maybe.map(semValor, x => x * 2); // não quebra, propaga ausência
console.log(dobrado); // { value: 20, isNothing: false }
console.log(tentativa); // { value: null, isNothing: true }
O paralelo não prova que Wadler leu Leibniz ao nomear o conceito, mas mostra como a intuição de unidades fechadas que se compõem em harmonia previsível é recorrente o suficiente para reaparecer, séculos depois, resolvendo um problema completamente diferente: efeitos colaterais em código funcional.
O Melhor dos Mundos Possíveis: Otimização e Função de Perda
Na Teodiceia (1710), Leibniz defende que Deus, entre infinitos mundos possíveis, escolheu criar o melhor de todos, não um mundo perfeito e sem sofrimento, mas o que maximiza o melhor equilíbrio possível entre todas as variáveis em jogo. A ideia foi ridicularizada por Voltaire em Cândido, mas sua estrutura lógica sobrevive intacta em um lugar inesperado: todo algoritmo de otimização em machine learning.
Treinar um modelo é, literalmente, buscar, entre um espaço de configurações possíveis (os pesos da rede), aquela que minimiza uma função de custo, dado um conjunto de restrições. Gradient descent não busca a perfeição absoluta (erro zero, impossível na maioria dos problemas reais); busca o melhor equilíbrio alcançável dentro das restrições dadas, exatamente a lógica leibniziana do "melhor mundo possível" entre as alternativas disponíveis.
// Uma metáfora leibniziana: escolher, entre "mundos possíveis" (valores de x), aquele que minimiza a função de custo
function funcaoCusto(x) {
return (x - 3) ** 2 + 1; // mínimo em x = 3
}
function gradientDescent(xInicial, taxa = 0.1, passos = 50) {
let x = xInicial;
for (let i = 0; i < passos; i++) {
const gradiente = 2 * (x - 3); // derivada de (x-3)^2 + 1
x = x - taxa * gradiente;
}
return x;
}
console.log(gradientDescent(10)); // converge para ~3, o "melhor mundo possível"
Desafios e Limites: Gödel contra o Sonho de Leibniz
Seria desonesto encerrar essa analogia sem reconhecer seu limite mais duro. O sonho leibniziano do calculemus pressupõe que todo enunciado verdadeiro pode, em princípio, ser demonstrado por cálculo formal. Em 1931, Kurt Gödel mostrou que isso é falso: em qualquer sistema formal suficientemente poderoso para expressar aritmética, existem enunciados verdadeiros que não podem ser provados dentro do próprio sistema. Alan Turing, poucos anos depois, chegaria a uma conclusão irmã pela via computacional: o problema da parada mostra que não existe algoritmo geral capaz de decidir, para todo programa, se ele eventualmente termina.
Isso importa para IA de forma muito concreta: não existe characteristica universalis completa. Todo esquema formal (um JSON Schema, um protocolo de tool-calling, um prompt estruturado) é uma aproximação útil, nunca uma captura total da intenção humana. Sistemas agentivos ainda tropeçam exatamente na fronteira entre o que é formalizável e o que exige julgamento contextual. Reconhecer esse limite não invalida o projeto leibniziano, apenas o coloca no lugar correto: uma ferramenta poderosa de aproximação, não uma promessa de completude.
Perspectivas Futuras: IA Neuro-Simbólica e Agentes com Ferramentas
A fronteira mais promissora hoje é justamente onde Leibniz teria mais interesse: sistemas neuro-simbólicos, que combinam a capacidade estatística e flexível das redes neurais com a precisão e auditabilidade de representações simbólicas formais. Um agente de IA moderno que decide qual ferramenta invocar, com quais parâmetros, seguindo um esquema JSON rigorosamente tipado, é uma implementação parcial (imperfeita, mas real) da aposta leibniziana: raciocínio complexo mediado por uma notação formal compartilhada entre agentes (humanos ou não).
O caminho à frente provavelmente não é abandonar a flexibilidade estatística dos LLMs em favor de lógica pura, nem o inverso; é, como o próprio Leibniz talvez apreciasse, buscar o melhor equilíbrio possível entre as duas abordagens.
Conclusão
Leibniz nunca viu um computador, mas deixou para essa área quatro heranças que usamos diariamente sem perceber sua origem: o bit, a busca por linguagens formais que máquinas possam executar, a intuição de unidades encapsuladas que se compõem previsivelmente, e a lógica de otimizar entre alternativas possíveis. Nenhuma dessas ideias chegou a nós intacta ou sem contestação, Gödel e Turing lembram que há limites reais ao sonho do cálculo universal. Mas a arquitetura de pensamento que Leibniz desenhou no século XVII continua sendo, em grande parte, a arquitetura sobre a qual construímos sistemas de IA no século XXI. Vale a pena revisitar seus textos não como curiosidade histórica, mas como um mapa surpreendentemente atual do que ainda estamos tentando construir.
Referências
- Leibniz, G. W. Explication de l'Arithmétique Binaire. Mémoires de l'Académie Royale des Sciences, 1703.
- Leibniz, G. W. Monadologia. Tradução e notas. São Paulo: Martins Fontes, 2009.
- Leibniz, G. W. Ensaios de Teodiceia. Tradução de Cristiano Novaes de Rezende. Campinas: Editora Unicamp, 2013.
- Couturat, L. La Logique de Leibniz d'après des Documents Inédits. Paris: Félix Alcan, 1901.
- Gödel, K. On Formally Undecidable Propositions of Principia Mathematica and Related Systems. 1931.
- Turing, A. M. On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 1937.
- Wadler, P. Monads for Functional Programming. In: Advanced Functional Programming, Springer, 1995.
- Model Context Protocol Specification. Anthropic, 2024–2025.
- Russell, S., & Norvig, P. Artificial Intelligence: A Modern Approach. 4ª ed. Pearson, 2020.
Top comments (0)