| Bellacosa Mainframe e o teorema dos macacos infinitos |
☕ Um Café no Bellacosa Mainframe
O Macaco, Shakespeare e o PERFORM UNTIL: quando a Matemática descobriu que, com tempo infinito, até código sem documentação funciona
🐒 Um milhão de macacos, máquinas de escrever, Hamlet, COBOL e o pequeno problema de o Universo acabar antes do processamento
Imagine a seguinte cena.
Estamos em algum CPD perdido nos anos 1980.
Ar-condicionado fazendo aquele barulho de turbina de Boeing, luz fluorescente, operador carregando formulário contínuo, impressora de linha martelando papel como se tivesse uma dívida pessoal com a celulose e, num canto da sala, alguém acaba de apresentar o mais ambicioso projeto de automação da história da informática:
um milhão de macacos diante de um milhão de máquinas de escrever.
O gerente entra.
— Qual é o objetivo do projeto?
— Produzir Shakespeare.
— Qual o prazo?
— Infinito.
— Qual o orçamento?
— Infinito.
— Quantos recursos?
— Um milhão de macacos.
O gerente pensa durante alguns segundos.
— Podemos colocar metade como terceiros?
É nesse momento que um programador COBOL sensato levanta a mão:
— Desculpe... existe SLA?
Não.
— Existe estimativa de CPU?
Não.
— Existe checkpoint/restart?
Também não.
— Então isso vai dar problema.
E assim chegamos a uma das ideias mais deliciosamente estranhas da matemática: o chamado Teorema do Macaco Infinito.
Em sua versão popular, ele diz aproximadamente o seguinte:
se um macaco pressionar aleatoriamente as teclas de uma máquina de escrever por tempo infinito, em algum momento produzirá qualquer texto finito determinado — inclusive Hamlet, de Shakespeare.
Matematicamente, sob hipóteses adequadas de independência e de probabilidades não nulas para os caracteres, a afirmação é essencialmente verdadeira: à medida que o número de tentativas independentes cresce sem limite, a probabilidade de uma sequência finita específica nunca aparecer tende a zero. (Wikipedia)
Mas existe uma pequena diferença entre:
matematicamente acontecer quase certamente
e
você ficar esperando acontecer.
Essa diferença mede aproximadamente vários universos, algumas mortes térmicas, um número ofensivo de bananas e provavelmente três reuniões de mudança em produção.
Prepare o café.
Hoje vamos descobrir como macacos digitadores nos levam de Émile Borel a Shakespeare, de probabilidade a brute force, de COBOL a inteligência artificial — e por que infinito é uma palavra que deve deixar qualquer profissional de produção imediatamente desconfiado.
🧮 Capítulo I — Antes de Shakespeare havia um francês com ideias perigosas
A associação moderna entre macacos digitando e probabilidade aparece no trabalho do matemático francês Émile Borel.
Em 1913, Borel publicou um trabalho sobre mecânica estatística e irreversibilidade no qual usou a imagem de macacos datilógrafos como comparação para acontecimentos de probabilidade extraordinariamente pequena. A metáfora reapareceria em seu livro Le Hasard, de 1914. (Wikipedia)
E aqui aparece a primeira surpresa.
A história original não era exatamente:
UM MACACO ESCREVERÁ HAMLET.
Era praticamente o contrário.
Borel queria mostrar que existem acontecimentos cuja probabilidade é tão ridiculamente pequena que, embora não sejam logicamente impossíveis, podemos tratá-los como operacionalmente impossíveis.
Em uma das formulações associadas a Borel, imagine um milhão de macacos trabalhando durante dez horas por dia diante de máquinas de escrever. Seria absurdamente improvável que produzissem exatamente os livros das grandes bibliotecas do mundo. Borel usava uma improbabilidade monstruosa como referência para discutir eventos ainda menos plausíveis na mecânica estatística. (Wikipedia)
Ou seja:
o famoso “um milhão de macacos” realmente aparece na história.
Mas o sentido original se perdeu um pouco durante o caminho.
O público guardou:
MACACO + TEMPO = SHAKESPEARE.
Borel provavelmente teria respondido:
— Monsieur, não foi exatamente isso que eu quis dizer.
Mas já era tarde.
A internet ainda não existia, porém o meme já havia escapado.
🎭 Capítulo II — Entra Shakespeare, perseguido por um macaco
No mundo anglófono, a metáfora passou a ser ligada especialmente a Shakespeare.
Isso faz enorme sentido cultural.
Se você disser:
“Uma sequência aleatória infinita eventualmente contém qualquer substring finita.”
a maior parte das pessoas procura imediatamente uma janela para escapar.
Agora diga:
“Um macaco pode escrever Hamlet.”
Pronto.
Você tem atenção.
Shakespeare tornou-se uma espécie de benchmark literário da improbabilidade.
O equivalente cultural de perguntar:
CAN IT RUN CRYSIS?
Só que em literatura:
CAN MONKEY WRITE HAMLET?
Com o tempo, a ideia ganhou diversas versões:
um macaco durante tempo infinito;
infinitos macacos durante tempo infinito;
milhões de macacos;
máquinas de escrever;
teclados;
Shakespeare inteiro;
apenas Hamlet;
uma frase específica.
A essência matemática, entretanto, é muito mais simples.
O macaco é irrelevante.
A máquina de escrever também.
Shakespeare também.
Poderíamos substituir tudo por:
GERADOR_ALEATORIO
+
ALFABETO_FINITO
+
TENTATIVAS_SEM_LIMITE
+
SEQUENCIA_ALVO_FINITA
E pronto.
Temos o problema.
☕ Capítulo III — O programa COBOL que explica o macaco
Vamos traduzir tudo para algo compreensível por um programador COBOL iniciante.
Imagine um teclado extremamente simplificado com apenas três teclas:
A
B
C
E queremos produzir:
ABC
Em cada posição existem três possibilidades.
Para acertar o primeiro caractere:
1 / 3
Para acertar dois:
1 / 3 × 1 / 3
Para acertar três:
1 / 3 × 1 / 3 × 1 / 3
Portanto:
1 / 27
Existem 27 sequências possíveis de três caracteres:
AAA
AAB
AAC
ABA
ABB
ABC
...
CCC
Uma delas é ABC.
Nada assustador.
Vamos aumentar.
Se tivermos 30 caracteres possíveis no teclado e procurarmos uma sequência de dez caracteres:
30^10
combinações.
Isso já dá aproximadamente:
590.490.000.000.000
possibilidades.
E dez caracteres não são Hamlet.
São praticamente o nome de um dataset escrito por alguém particularmente econômico.
🐍 Capítulo IV — O verdadeiro vilão chama-se crescimento exponencial
Programadores iniciantes muitas vezes olham para probabilidades assim e pensam:
— Tudo bem. Basta aumentar a quantidade de máquinas.
É neste momento que entra pela porta o crescimento exponencial, vestindo armadura medieval e carregando uma galinha.
Ele olha para você.
Você olha para ele.
Ele diz:
— Não.
Cada caractere adicional multiplica o espaço de possibilidades pelo número de teclas.
Se temos K caracteres possíveis e queremos encontrar uma determinada sequência de comprimento L, a probabilidade de acertá-la exatamente numa tentativa é:
1 / K^L
Com 30 teclas:
1 caractere = 1 / 30
2 caracteres = 1 / 900
3 caracteres = 1 / 27.000
4 caracteres = 1 / 810.000
...
A coisa cresce de forma brutal.
Em 2024, Stephen Woodcock e Jay Falletta, da University of Technology Sydney, fizeram justamente uma análise moderna dessa questão no artigo A numerical evaluation of the Finite Monkeys Theorem. Eles trabalharam com um teclado hipotético de 30 teclas e calcularam quanto trabalho aleatório seria necessário para produzir vários textos. (Universidade de Tecnologia de Sydney)
O resultado é magnífico.
Não para os macacos.
Para a matemática.
🍌 Capítulo V — Comecemos com BANANAS
Os pesquisadores calcularam que o número esperado de teclas até aparecer:
BANANAS
é aproximadamente:
30^7
ou cerca de:
21,9 bilhões
de teclas. (Opus)
Agora imagine o responsável pelo projeto entrando na reunião.
— Temos algum resultado?
— Temos.
— Shakespeare?
— Não.
— Hamlet?
— Não.
— Uma frase?
— Também não.
— O quê?
— BANANAS.
— Quantos bilhões de teclas?
— Cerca de 22.
Silêncio.
O macaco solicita promoção.
💾 Capítulo VI — O brute force dos primatas
Agora chegamos à conexão com informática.
O Teorema do Macaco Infinito é uma bela alegoria para brute force.
Imagine que precisamos descobrir uma senha:
ABC
Uma estratégia intelectualmente sofisticada poderia estudar padrões, contexto, histórico, probabilidades etc.
O brute force diz:
AAA
AAB
AAC
...
ABA
...
ABC
Achou.
Nenhuma inteligência foi necessária.
Apenas enumeração.
É praticamente o algoritmo do macaco, com a pequena vantagem de o computador não jogar fezes no teclado.
Podemos imaginar um pseudocódigo:
PERFORM UNTIL SHAKESPEARE-FOUND
GENERATE-RANDOM-CHARACTER
ADD CHARACTER TO BUFFER
SEARCH BUFFER FOR HAMLET
END-PERFORM.
Existe apenas um pequeno problema.
SHAKESPEARE-FOUND talvez não aconteça antes de:
UNIVERSE-END = 'Y'
E ninguém colocou essa condição no PERFORM.
Temos então:
PERFORM UNTIL SHAKESPEARE-FOUND
quando talvez devêssemos ter escrito:
PERFORM UNTIL SHAKESPEARE-FOUND
OR UNIVERSE-DESTROYED
OR BUDGET-EXHAUSTED
OR MONKEYS-UNIONIZED
Essa última condição é importantíssima.
🏭 Capítulo VII — Produção não aceita infinito
Aqui existe uma lição séria escondida atrás da banana.
Em matemática podemos tranquilamente dizer:
N → ∞
Em produção, o gerente pergunta:
— Quanto demora?
Você:
— Quando N tende ao infinito...
Gerente:
— QUANTO DEMORA?
Produção possui:
CPU limitada;
memória limitada;
energia limitada;
storage limitado;
orçamento limitado;
prazo limitado;
paciência humana extremamente limitada.
É por isso que existe uma diferença colossal entre um problema teoricamente solucionável e um problema computacionalmente viável.
Essa distinção aparece por toda a informática.
Você pode desenvolver um algoritmo que encontra uma solução.
Mas se ele precisar de:
10^100000
operações, parabéns:
você resolveu matematicamente o problema e operacionalmente criou decoração para a documentação.
♾️ Capítulo VIII — O infinito é um trapaceiro elegante
O ponto mais importante do Teorema do Macaco Infinito não são os macacos.
É o infinito.
Imagine um evento que tenha uma probabilidade minúscula, mas diferente de zero, de acontecer em cada tentativa independente.
Digamos:
P = 0,000000000000000000001
Uma tentativa?
Provavelmente falha.
Mil?
Provavelmente falha.
Um bilhão?
Talvez continue falhando.
Mas quando o número de tentativas caminha matematicamente para o infinito, a probabilidade de o evento nunca ocorrer tende a zero.
Daí surge o famoso:
“quase certamente”.
Em teoria da probabilidade, probabilidade 1 não deve ser confundida ingenuamente com necessidade lógica absoluta; “almost surely” é um termo técnico. No modelo clássico do macaco, contudo, qualquer sequência finita específica aparecerá quase certamente sob as hipóteses de geração aleatória independente apropriadas. (Wikipedia)
O infinito simplesmente continua tentando.
Ele não tem reunião às 17h.
Não possui mudança emergencial.
Não entra de férias.
Não tem filho para buscar.
Não precisa explicar CAPEX.
E não recebe:
IEF450I JOB MONKEY01 ABEND S0C7
🐒 Capítulo IX — Alguém resolveu experimentar com macacos reais
Evidentemente, em algum momento da história alguém disse:
— Tudo bem, mas e se colocarmos macacos de verdade diante de um teclado?
A humanidade chegou até a Lua porque fazemos perguntas assim.
Em 2002, um projeto ligado à University of Plymouth colocou um computador no recinto de seis macacos no Paignton Zoo, na Inglaterra. O trabalho tinha caráter artístico/experimental, não era uma tentativa científica séria de demonstrar o teorema. (WIRED)
Os seis macacos chamavam-se Elmo, Gum, Heather, Holly, Mistletoe e Rowan. (WIRED)
Isso já parece elenco de sitcom.
Os pesquisadores provavelmente esperavam algo como:
HFJSOIEQKMDKWO...
O universo respondeu:
SSSSSSSSSSSSSSSSSSSSSSSSSSS
Os animais produziram apenas algumas páginas de texto, predominantemente com a letra S; outras letras apareceram ocasionalmente. O macho dominante também atacou o equipamento com uma pedra, e o teclado recebeu tratamento biológico que definitivamente não fazia parte das especificações originais. (WIRED)
A experiência revelou uma falha fundamental no modelo.
O macaco matemático é:
RANDOM-GENERATOR.
O macaco verdadeiro é:
IF KEYBOARD = INTERESTING
PERFORM INVESTIGATE
PERFORM HIT-WITH-STONE
PERFORM RANDOM-BEHAVIOUR
END-IF.
Macacos reais não são geradores aleatórios uniformes.
Possuem preferências, comportamentos, curiosidade, aprendizagem, hierarquia e intenção.
Mike Phillips, ligado ao projeto, destacou justamente que os animais eram mais complexos que simples geradores aleatórios e perceberam que pressionar uma tecla causava uma reação na tela. (WIRED)
Ou seja:
Borel inventou um dispositivo probabilístico.
As pessoas colocaram pelo.
Chamaram de macaco.
Depois esqueceram que era metáfora.
Clássico problema de requisitos.
🧠 Capítulo X — Random não significa inteligência
E aqui chegamos a algo extraordinariamente importante.
Suponha que o macaco produza:
TO BE OR NOT TO BE
Ele escreveu Shakespeare?
Fisicamente:
sim.
Semanticamente?
A coisa fica interessante.
Ele não sabe inglês.
Não conhece Hamlet.
Não sabe o que é existência.
Nunca sofreu uma crise existencial diante de um castelo dinamarquês.
Provavelmente está pensando:
BANANA.
A sequência possui significado para nós, porque reconhecemos o padrão.
Para o gerador, são apenas símbolos.
Isso nos leva diretamente até inteligência artificial.
🤖 Capítulo XI — “Então o ChatGPT é um macaco estatístico?”
Não.
E essa diferença é maravilhosa.
O macaco do teorema clássico possui, no modelo mais simples:
P(A) = P(B) = P(C) = ...
Cada tecla pode ser escolhida independentemente, sem conhecimento do contexto anterior.
Se ele escreveu:
TO BE OR NOT TO
a próxima letra não se torna magicamente mais provável por causa disso.
Para o gerador uniforme, poderia vir:
X
ou:
Q
ou:
Z
com probabilidades determinadas apenas pelo mecanismo aleatório.
Um modelo de linguagem funciona de maneira radicalmente diferente.
Ele trabalha com distribuições condicionais.
Simplificando brutalmente:
P(próximo token | contexto anterior)
Se temos:
IDENTIFICATION DIVISION.
PROGRAM-ID.
um modelo treinado em código COBOL sabe estatisticamente que certos tokens seguintes são muito mais compatíveis com aquele contexto que outros.
Ele não precisa testar igualmente:
BANANA
ELEPHANT
WORKING-STORAGE
PERFORM
PROCEDURE
ZXCVBN
porque aprendeu relações estruturais da linguagem.
Essa diferença é gigantesca.
🗜️ Capítulo XII — Conhecimento é redução do espaço de busca
Essa talvez seja a maior lição de toda a história.
Inteligência frequentemente significa eliminar possibilidades ruins antes de testá-las.
Imagine que existam:
30^100
sequências possíveis.
Brute force precisa considerar praticamente todo o espaço.
Conhecimento diz:
— Algumas sequências são muitíssimo mais prováveis.
É exatamente o que fazemos como seres humanos.
Se você vê:
MOVE CUSTOMER-NAME TO
você espera algo como:
WS-CUSTOMER-NAME
Não:
BANANA
Não porque banana seja fisicamente impossível.
Mas porque seu conhecimento do contexto reduziu dramaticamente a probabilidade dessa opção.
Experiência é, sob determinado ângulo, um compressor de espaço de busca.
O programador iniciante olha 500 linhas e vê 500 linhas.
O programador experiente olha e diz:
— O problema provavelmente está nesses quinze comandos.
O iniciante pergunta:
— Como você sabe?
Trinta anos de produção responderiam:
— Porque já vi esse gremlin antes.
🏰 Capítulo XIII — Sherlock Holmes e o macaco
Imagine dois sistemas investigando um erro.
Sistema A — Macaco
Testa todas as possibilidades:
CPU?
MEMÓRIA?
DISCO?
VSAM?
DB2?
CICS?
JCL?
RACF?
DNS?
CAFETEIRA?
FASE DA LUA?
Sistema B — programador experiente
Recebe:
ABEND S0C7
e pensa:
— Data exception. Vamos procurar dados não numéricos em campo tratado como numérico.
Ele reduziu instantaneamente o espaço de busca.
Não encontrou a solução por magia.
Encontrou porque possui um modelo interno do sistema.
É isso que torna conhecimento tão poderoso.
Conhecimento não apenas fornece respostas.
Conhecimento elimina bilhões de respostas idiotas.
🎲 Capítulo XIV — Aleatoriedade não é criatividade
Outra armadilha filosófica aparece aqui.
Se o macaco produzir Hamlet inteiro, nós obtivemos:
OUTPUT = HAMLET
Mas não necessariamente:
CREATIVITY = TRUE
O texto possui forma idêntica.
A origem do texto é completamente diferente.
Essa questão voltou com força na época da IA generativa. O próprio estudo de Woodcock e Falletta observa que a distinção entre uma sequência produzida intencionalmente por um criador cognoscente e uma sequência idêntica surgida sem intenção possui relevância contemporânea no debate sobre IA generativa. (Opus)
E aqui entramos numa caverna filosófica suficientemente profunda para perdermos três filósofos, dois sysprogs e um consultor Gartner.
Porque agora podemos perguntar:
o significado está no autor?
No texto?
No leitor?
Se Hamlet aparece aleatoriamente, continua sendo Hamlet?
Se ninguém sabe que apareceu, ele contém significado?
Se uma IA produz algo novo combinando estruturas aprendidas, isso é criação?
E se um humano faz exatamente isso com suas experiências?
Neste ponto o Ministério dos Macacos informa que nosso formulário filosófico foi preenchido com caneta azul quando deveria ser preta.
Processo cancelado.
🌌 Capítulo XV — O Universo pediu CANCEL
Em 2024, Woodcock e Falletta fizeram algo particularmente divertido:
retiraram o infinito.
Perguntaram:
e se tivermos um Universo finito?
Eles modelaram chimpanzés digitando uma tecla por segundo e consideraram escalas temporais cosmológicas gigantescas. Mesmo usando recursos absurdamente generosos, textos complexos continuariam praticamente inalcançáveis por digitação aleatória. (Universidade de Tecnologia de Sydney)
Para as obras completas de Shakespeare, estimadas no estudo em cerca de 884.647 palavras, o número esperado de teclas alcança uma ordem aproximadamente equivalente a 10^7.448.366. (Opus)
Observe cuidadosamente.
Não é:
7 milhões
Nem:
10 elevado a 7 milhões
por acidente tipográfico.
É uma potência cuja grandeza já entra no território onde calculadoras olham para você e pedem demissão.
A conclusão prática do estudo foi justamente que o resultado intuitivo do teorema infinito é enganoso quando tentamos transportá-lo para um Universo de recursos finitos. (Universidade de Tecnologia de Sydney)
Traduzido para mainframe:
THEORETICAL:
JOB WILL COMPLETE.
PRODUCTION:
MAXCC=UNIVERSE.
🧯 Capítulo XVI — Lição de produção número 1: “possível” não significa “viável”
Guarde isto.
É excelente para programação, arquitetura e engenharia:
possibilidade matemática não implica viabilidade operacional.
Um algoritmo pode encontrar a resposta.
Mas:
em quanto tempo?
usando quanta memória?
com qual custo?
com quantas tentativas?
com qual consumo energético?
dentro de qual SLA?
Essa pergunta separa frequentemente:
SOLUÇÃO ACADÊMICA
de:
SOLUÇÃO DE PRODUÇÃO.
Seu sistema pode tecnicamente processar um arquivo realizando busca sequencial milhões de vezes.
Ele funciona.
Até chegar o fechamento.
Às 23h55.
Quando alguém pergunta:
— POR QUE ESTA PORCARIA AINDA ESTÁ EXECUTANDO?
E você responde:
— Tecnicamente terminará.
Essa frase nunca salvou ninguém numa war room.
🔍 Capítulo XVII — Lição número 2: tente reduzir o universo antes de procurar
Suponha que você tenha 100 possibilidades por posição.
Uma senha de dez posições produz:
100^10
combinações.
Mas se você descobrir que:
começa com letra;
possui determinada estrutura;
pertence a um vocabulário;
segue alguma regra;
o universo encolhe.
Essa é uma ideia central em inúmeros algoritmos.
Não necessariamente devemos procurar mais rápido.
Às vezes precisamos procurar menos.
Índices fazem isso.
Estatísticas fazem isso.
Heurísticas fazem isso.
Conhecimento de domínio faz isso.
Machine learning faz isso.
Experiência humana faz isso.
Um índice Db2 é, em espírito, uma forma civilizada de dizer:
“Não seja um macaco lendo todas as linhas.”
🗃️ Capítulo XVIII — O TABLESPACE SCAN dos macacos
Imagine uma tabela contendo um bilhão de clientes.
Queremos:
SELECT *
FROM CLIENTE
WHERE CPF = :CPF;
Sem índice adequado:
PROCURA PROCURA PROCURA PROCURA PROCURA...
É o macaco estatístico.
Com índice:
ÍNDICE
↓
PÁGINA
↓
REGISTRO
Pronto.
A diferença fundamental?
Informação estrutural.
O índice possui conhecimento sobre onde procurar.
O macaco possui apenas persistência.
E persistência sem estratégia é apenas desperdício muito disciplinado.
🎬 Capítulo XIX — Easter egg nº 1: Os Simpsons
A metáfora ficou tão popular que apareceu em inúmeras obras culturais.
Um exemplo particularmente famoso está em The Simpsons: Montgomery Burns mantém macacos trabalhando em máquinas de escrever e examina um texto que começa quase como a abertura de A Tale of Two Cities, de Charles Dickens, mas contém um erro absurdo. O estudo de Woodcock e Falletta inclusive menciona a referência. (Opus)
A piada funciona porque todos entendemos intuitivamente:
quase certo não serve.
Em texto literário talvez seja engraçado.
Em:
UPDATE ACCOUNT
SET BALANCE = ...
um caractere errado pode transformar a terça-feira num documentário criminal.
🐍 Capítulo XX — Easter egg nº 2: Ministério da Digitação Aleatória
Imagine agora um departamento governamental britânico responsável pelo projeto.
MINISTRY OF RANDOM PRIMATE TEXT GENERATION
Funcionário:
— Seu macaco possui licença para Shakespeare?
— Não sabia que precisava.
— Formulário 27-B.
— Onde consigo?
— Departamento de Licenciamento de Primatas Literários.
— Onde fica?
— Segundo andar.
— Mas este prédio só tem um andar.
— Então terá que preencher o formulário solicitando a existência do segundo.
— Onde consigo esse formulário?
— Segundo andar.
Essa é provavelmente uma representação bastante fiel do infinito burocrático.
Ao contrário do infinito matemático, ele realmente existe.
🧪 Capítulo XXI — Faça você mesmo o experimento
Você não precisa comprar um macaco.
O RH provavelmente também proibiria.
Podemos construir mentalmente nosso próprio experimento.
Objetivo:
COBOL
Alfabeto:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
São 26 possibilidades por posição.
A probabilidade de produzir COBOL numa tentativa específica de cinco caracteres é:
1 / 26^5
Como:
26^5 = 11.881.376
temos aproximadamente:
1 chance em 11,9 milhões
Agora experimente procurar:
HELLO
Mesma dificuldade.
Depois:
HELLO WORLD
Muito mais difícil.
Depois:
IDENTIFICATION DIVISION
Boa sorte.
Depois:
programa COBOL inteiro compilável
Aqui seu macaco provavelmente solicitará aposentadoria.
🧬 Capítulo XXII — A grande diferença entre busca cega e linguagem
Agora voltamos à IA.
Imagine que queremos completar:
O gato subiu no...
O macaco uniforme considera aproximadamente equivalentes:
telhado
submarino
IBM
parafuso
Júpiter
abacaxi
Um modelo linguístico aprendeu que algumas continuações possuem probabilidade muito maior dadas as palavras anteriores.
Portanto:
ALEATÓRIO PURO
não é:
MODELO PROBABILÍSTICO DE LINGUAGEM
Ambos podem possuir elementos probabilísticos.
Mas um possui estrutura aprendida.
Isso equivale a substituir:
TENTE TUDO
por:
TENTE PRIMEIRO AQUILO QUE FAZ SENTIDO.
Esse princípio é gigantesco.
📚 Capítulo XXIII — Então Shakespeare venceu o macaco?
Sim.
E não.
Shakespeare não precisava experimentar todas as combinações possíveis da língua inglesa até acidentalmente surgir:
HAMLET
Ele possuía:
linguagem;
repertório;
cultura;
memória;
intenção;
experiência;
estruturas narrativas;
conhecimento das pessoas;
capacidade de selecionar.
Criatividade humana não é uma roleta girando caracteres.
Criamos dentro de espaços altamente estruturados.
Eliminamos possibilidades.
Escolhemos outras.
Revisamos.
Associamos.
Recombinamos.
E talvez esteja aí uma ligação fascinante entre literatura, programação e inteligência:
criar é navegar inteligentemente num espaço gigantesco de possibilidades.
👴 Capítulo XXIV — O velho COBOLzeiro também é um modelo treinado
Você mostra um dump gigantesco para alguém com trinta anos de produção.
Ele olha.
Passa alguns segundos.
Aponta:
— Aqui.
O jovem pergunta:
— COMO VOCÊ DESCOBRIU?
Ele talvez responda:
— Experiência.
Mas “experiência” esconde muita coisa.
Durante décadas aquele cérebro atualizou implicitamente:
P(CAUSA | SINTOMAS)
O profissional experiente sabe que:
S0C7
aumenta a probabilidade de certos problemas.
Que:
FILE STATUS 35
aponta para determinadas categorias.
Que determinada mensagem de CICS leva a determinadas suspeitas.
Ele não testa aleatoriamente todas as causas possíveis do Universo.
Ele executa uma espécie de:
ORDER BY PROBABILIDADE DESCENDING
na cabeça.
É por isso que substituir experiência exclusivamente por procedimentos pode ser tão difícil.
Documentação registra regras.
Experiência frequentemente registra probabilidades implícitas.
🚨 Capítulo XXV — E aqui mora uma armadilha
Heurísticas reduzem brutalmente o espaço de busca.
Mas podem errar.
O especialista pensa:
— S0C7? Já sei.
E deixa de investigar uma causa nova.
Esse é o outro lado da moeda.
O macaco não possui preconceitos.
O especialista possui.
Por isso bons processos combinam:
EXPERIÊNCIA
+
EVIDÊNCIA
+
TESTE
+
OBSERVABILIDADE
Conhecimento deve guiar a procura.
Não substituir a prova.
Senão saímos do Teorema do Macaco Infinito e entramos no Teorema do Sysprog Convencido:
dado tempo suficiente, ele acabará culpando a aplicação.
🧑💻 Capítulo XXVI — Cinco dicas práticas do macaco para quem está começando em COBOL
A primeira é simples:
antes de escrever código, reduza o problema.
Não tente resolver o Universo inteiro.
Descubra entradas, saídas, regras e condições.
Depois, quando der erro, não procure aleatoriamente.
Pergunte:
O QUE MUDOU?
QUAL FOI A ENTRADA?
QUAL FOI A MENSAGEM?
QUAL ROTINA EXECUTOU?
QUAL ERA O ESTADO ANTERIOR?
Terceiro:
aprenda a reconhecer padrões.
ABENDs, return codes, file status, SQLCODE, mensagens do sistema: cada informação reduz possibilidades.
Quarto:
meça complexidade.
Um processamento que funciona para mil registros pode virar pesadelo com cem milhões.
Quinto:
não confunda força computacional com inteligência.
Às vezes comprar mais CPU apenas permite executar uma estratégia ruim mais rapidamente.
Um milhão de macacos ainda são macacos.
☕ Capítulo XXVII — O café finalmente chega
Depois de toda essa aventura podemos retornar ao começo.
A frase:
“Um milhão de macacos diante de máquinas de escrever acabariam produzindo Shakespeare”
é uma versão popular de uma família de ideias probabilísticas cujo uso moderno da metáfora remonta especialmente a Émile Borel, no início do século XX. Borel empregava macacos datilógrafos para tornar intuitivas probabilidades extraordinariamente pequenas; posteriormente, Shakespeare tornou-se o alvo cultural favorito da metáfora. (Wikipedia)
Matematicamente, sob as condições do modelo ideal, uma sequência finita acaba aparecendo quase certamente quando o número de tentativas independentes cresce sem limite. (Opus)
Fisicamente, contudo, temos um pequeno inconveniente:
não possuímos infinito.
Temos orçamento.
Temos prazo.
Temos CPU.
Temos memória.
Temos energia.
Temos Universo.
E aparentemente todos eles possuem limite.
🐒 Epílogo — MONKEY01 entrou em produção
No último andar do CPD, a equipe finalmente inicia o job.
//MONKEY01 JOB ...
//STEP01 EXEC PGM=SHAKESPEARE
O operador acompanha.
Cinco minutos.
Nada.
Uma hora.
Nada.
Um ano.
Nada.
Um milhão de anos.
Nada.
Bilhões de anos.
As estrelas desaparecem.
Buracos negros evaporam.
O Universo caminha lentamente para a escuridão.
Então, subitamente:
TO BE OR NOT TO BE...
O operador, que por alguma razão inexplicável ainda está de plantão, abre um chamado:
INCIDENTE:
OUTPUT INESPERADO ENCONTRADO.
SEVERIDADE:
BAIXA.
AÇÃO:
ENCAMINHAR PARA APLICAÇÃO.
O programador COBOL olha o texto.
Olha o macaco.
Olha novamente.
E percebe a verdadeira lição de Borel.
O impossível talvez não seja realmente impossível.
Mas existe uma quantidade enorme de coisas que são tão improváveis que esperar por elas é uma arquitetura extremamente ruim.
E talvez toda a história da computação seja, em certa medida, nossa tentativa de derrotar o macaco.
Índices dizem:
não procure tudo.
Algoritmos dizem:
organize a procura.
Heurísticas dizem:
comece pelo provável.
Experiência diz:
eu já vi algo parecido.
Machine learning diz:
aprendi quais caminhos costumam funcionar.
Modelos de linguagem dizem:
dado tudo que veio antes, algumas continuações fazem muito mais sentido que outras.
E o velho programador COBOL diante da máquina de café simplesmente diz:
— Antes de fazer qualquer coisa, mostra o log.
Talvez essa seja uma das formas mais puras de inteligência.
Não possuir todas as respostas.
Mas saber onde não vale a pena procurar.
No fundo, Émile Borel colocou um macaco diante de uma máquina de escrever e acabou nos ensinando algo sobre matemática, entropia, algoritmos, produção, experiência, linguagem e inteligência artificial.
O macaco jamais pediu toda essa responsabilidade.
Ele só queria uma banana.
E alguém colocou um teclado na frente dele.
☕🐒⌨️
MONKEY01 ENDED - MAXCC=0000
Finalmente.
Shakespeare foi produzido.
Tempo total:
∞
O financeiro recusou a fatura.
Sem comentários:
Enviar um comentário