☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

segunda-feira, 3 de maio de 2021

☕ OPERADOR, COMO UMA LENDA SOBREVIVE SEM DETALHES?

 

Bellacosa Mainframe e algo faltando em Another

☕ OPERADOR, COMO UMA LENDA SOBREVIVE SEM DETALHES?

A origem da maldição remonta ao famoso aluno da Classe 3-3 que morreu décadas antes.

Mas quando tentamos reconstruir os fatos encontramos algo estranho.

As informações são nebulosas.

Mudam conforme a fonte.

Faltam detalhes.

Existem contradições.

É quase como se estivéssemos lendo um arquivo parcialmente apagado.


O QUE ACONTECE NO MUNDO REAL?

Você trouxe um exemplo perfeito.

A "Loira do Banheiro".

😂

Toda escola brasileira possui uma versão própria.

E o mais curioso é que:

Mesmo sendo uma lenda urbana...

Todo mundo conhece os detalhes.


Na minha escola havia histórias semelhantes.

E normalmente os relatos eram absurdamente específicos.


Sempre existe alguém dizendo:

"Foi em 1982."

Outro responde:

"Não, foi em 1979."


Mas todos sabem:

  • onde aconteceu

  • quem viu

  • qual banheiro era

  • qual horário

  • quem desmaiou


O FENÔMENO DA MEMÓRIA COLETIVA

A psicologia social chama isso de:

Memória Compartilhada

Quando uma comunidade vive um evento marcante, ela cria uma narrativa coletiva.


Com o tempo surgem:

  • exageros

  • distorções

  • lendas

Mas o núcleo da história permanece.


O PROBLEMA DE ANOTHER

Na Classe 3-3 ocorreu algo muito maior.


Um estudante morreu.


A turma inteira passou a agir como se ele ainda estivesse vivo.


Depois surgiram fenômenos sobrenaturais.


Décadas de mortes.


E mesmo assim ninguém consegue contar exatamente a história?


É estranho.

Muito estranho.


Bellacosa Mainframe

Imagine uma empresa.


Em 1972 ocorre:

INCIDENTE CRÍTICO

O incidente gera problemas durante:

40 ANOS

E quando alguém pergunta:

"Como começou?"

A resposta é:

NÃO SABEMOS

😂


Impossível.


O QUE EU ESPERAVA?

Exatamente o que você esperava.


Um verdadeiro folclore escolar.


Algo do tipo:


"Ele sentava na carteira perto da janela."


"Gostava de beisebol."


"Foi atropelado voltando para casa."


"Os colegas continuaram guardando seu lugar."


"Uma foto antiga ainda existe."


"Uma professora aposentada lembra dele."


ISSO TERIA DEIXADO TUDO MAIS FORTE

Porque transformaria a maldição em algo humano.


Hoje ela parece quase abstrata.


Mas imagine se existisse:

  • um nome

  • uma história

  • uma personalidade


O peso emocional seria enorme.


A EXPLICAÇÃO MAIS PROVÁVEL

Minha interpretação é que Ayatsuji fez isso de propósito.


Porque ele queria que a origem fosse:

MITO

e não

DOCUMENTO HISTÓRICO

Quanto menos sabemos...

Mais universal o fenômeno se torna.


MAS EXISTE UM PREÇO

E o preço é exatamente a sensação que você teve.


Você termina pensando:

"Espera aí... ninguém investigou isso direito?"


COMPARANDO COM HIGURASHI

Em Higurashi.


A vila conhece suas histórias.


Conhece suas tragédias.


Conhece seus mortos.


Tudo possui contexto.


COMPARANDO COM SHIKI

Em Shiki.


A comunidade inteira reage.


Discute.


Investiga.


Lembra.


EM ANOTHER

Às vezes parece que a cidade sofre de amnésia institucional.


UMA TEORIA CURIOSA

Pensando em tudo que conversamos:

  • Reiko te marcou.

  • Yukari te marcou.

  • O silêncio após as mortes te marcou.

  • A ausência de exorcistas te marcou.

  • As bonecas te marcaram.


Percebe um padrão?


O que mais te incomoda não são os elementos sobrenaturais.


É a falta de comportamento humano realista ao redor deles.


Você parece menos interessado em:

FANTASMAS

e mais interessado em:

COMO AS PESSOAS REAGIRIAM A FANTASMAS

Essa é uma diferença enorme.


A VERSÃO BELLACOSA MAINFRAME

Se o Bellacosa fosse diretor da Escola Yomiyama, existiria:

DATASET:
ORIGEM.MALDICAO.HISTORICO

Com:

  • nome completo

  • foto

  • boletim escolar

  • causa da morte

  • depoimentos

  • linha do tempo

  • relatório de incidentes

😂


E uma senhora aposentada apareceria no episódio 7 dizendo:

"Eu estudei com ele..."

Pronto.

Eu teria chorado mais nessa cena do que em metade das mortes do anime.


VEREDITO FINAL DO OPERADOR

Sua observação é extremamente válida.

Porque em comunidades reais:

  • escolas

  • cidades pequenas

  • bairros

  • empresas

eventos traumáticos geram memória.

Muita memória.

Às vezes até memória demais.

A lenda da Loira do Banheiro sobrevive justamente porque cada geração acrescenta novos detalhes.

Já em Another acontece o oposto.

A origem da maior tragédia da cidade permanece surpreendentemente vaga.

Isso ajuda a construir o mistério.

Mas também contribui para aquele sentimento que você vem descrevendo desde o final do anime:

"Faltam peças nesse quebra-cabeça."

☕💣👁️

E talvez seja por isso que, dias depois, você continua investigando Another como um operador analisando logs antigos:

JOB: MALDICAO33

STATUS:
ENCERRADO

LOGS DISPONÍVEIS:
PARCIAIS

DOCUMENTAÇÃO:
INCOMPLETA

OPERADOR:
AINDA INVESTIGANDO

Porque a maior anomalia da série talvez não seja a maldição.

Talvez seja a quantidade de informações que deveriam existir... mas desapareceram junto com ela. 👁️📂☂️💀


domingo, 2 de maio de 2021

☕💣🚀 PADAWAN, O ZUNIT É O MOMENTO EM QUE O MAINFRAME APRENDEU A DESCONFIAR DOS PROGRAMADORES!

 

Bellacosa Mainframe e o zunit testes unitarios em ibm mainframe 

☕💣🚀 PADAWAN, O ZUNIT É O MOMENTO EM QUE O MAINFRAME APRENDEU A DESCONFIAR DOS PROGRAMADORES!

Durante décadas, o desenvolvedor COBOL vivia numa realidade curiosa.

Ele alterava um programa de 30.000 linhas.

Compilava.

Executava.

Rezava.

Se nada explodisse em produção, considerava um sucesso.

Foi assim em milhares de empresas durante mais de 50 anos.

Então surgiu uma pergunta perigosa:

"E se o COBOL pudesse ser testado automaticamente antes de chegar à produção?"

Foi dessa necessidade que nasceu o IBM ZUnit.

Uma das tecnologias mais subestimadas do ecossistema z/OS moderno.


O QUE É O ZUNIT?

O IBM ZUnit é um framework de testes unitários para aplicações desenvolvidas no ambiente IBM Z.

Seu objetivo é simples:

  • testar programas COBOL

  • testar programas PL/I

  • validar regras de negócio

  • automatizar regressões

  • integrar testes ao DevOps

Antes do ZUnit:

Alteração
↓
Compilação
↓
Execução Manual
↓
Análise de Resultado
↓
Torcer para funcionar

Com ZUnit:

Alteração
↓
Compilação
↓
Execução Automática
↓
Validação Automática
↓
Relatório
↓
Deploy

É a filosofia do:

"Confiar é bom. Testar é melhor."


HISTÓRIA

Até meados dos anos 2000, o conceito de testes automatizados era dominado pelo mundo Java.

Existiam:

  • JUnit

  • NUnit

  • xUnit

Enquanto isso, no mainframe:

TESTE = EXECUTAR O JOB

A IBM percebeu que isso não era sustentável.

O crescimento de:

  • DevOps

  • Agile

  • CI/CD

exigia automação.

Então nasceu o projeto que mais tarde se tornaria:

IBM ZUnit Test Framework

integrado ao ambiente de desenvolvimento IBM.


DATA DE LANÇAMENTO

O ZUnit apareceu inicialmente integrado ao:

IBM Rational Developer for System z (RDz)

por volta de:

2014–2015

Posteriormente evoluiu para:

IBM Developer for z/OS (IDz)

onde continua sendo desenvolvido.

Atualmente faz parte do ecossistema:

  • IBM Developer for z/OS

  • IBM Dependency Based Build

  • IBM Wazi

  • IBM DevOps for Z


A GRANDE IDEIA

Imagine um programa COBOL:

CALCULA-DESCONTO.

Entrada:

VALOR = 1000

Saída esperada:

DESCONTO = 100

O ZUnit permite registrar:

Entrada
↓
Execução
↓
Saída Esperada

e repetir esse teste automaticamente milhares de vezes.


FILOSOFIA DO TESTE UNITÁRIO

Padawan...

O teste unitário não verifica o sistema inteiro.

Ele verifica uma unidade.

Normalmente:

Programa COBOL
ou
Subprograma COBOL

Exemplo:

CALCJUROS

Recebe:

VALOR
TAXA
PRAZO

Retorna:

JUROS

O ZUnit verifica apenas essa lógica.


COMO FUNCIONA

O framework captura:

INPUT

Parâmetros
Arquivos
Áreas de memória

PROCESSAMENTO

Executa o programa.

OUTPUT

Compara com resultado esperado.


ARQUITETURA

IDz
 │
 │
 ▼
 Test Case
 │
 ▼
 Test Runner
 │
 ▼
 Programa COBOL
 │
 ▼
 Resultado
 │
 ▼
 Relatório

COMPONENTES PRINCIPAIS

Test Case

Define:

Dados de Entrada

Test Scenario

Conjunto de testes.

Exemplo:

Cliente VIP
Cliente Normal
Cliente Inadimplente

Test Runner

Executa automaticamente.


Assertions

Comparam resultados.

Exemplo:

Esperado = 100
Obtido = 100

PASSOU.


INSTALAÇÃO

Normalmente o ZUnit não é instalado isoladamente.

Ele vem integrado ao:

IBM Developer for z/OS

IBM Developer for z/OS

Componentes comuns:

z/OS
IDz
JES
ISPF
COBOL Compiler
ZUnit Runtime

PRÉ-REQUISITOS

Geralmente:

  • Enterprise COBOL

  • z/OS

  • IDz

  • USS configurado

  • JES ativo

Em ambientes corporativos:

LPAR DEV
LPAR QA

normalmente já possuem tudo configurado.


EXEMPLO PRÁTICO

Programa

IDENTIFICATION DIVISION.
PROGRAM-ID. SOMA.

WORKING-STORAGE SECTION.

01 NUM1 PIC 9(4).
01 NUM2 PIC 9(4).
01 RESULTADO PIC 9(5).

PROCEDURE DIVISION.

ADD NUM1 TO NUM2
GIVING RESULTADO.

GOBACK.

CRIANDO O TESTE

No IDz:

File
 ↓
 New
 ↓
 ZUnit Test Case

Selecionar:

Programa SOMA

Definir:

NUM1 = 10
NUM2 = 20

Resultado esperado:

30

EXECUÇÃO

Runner executa:

SOMA

Obtém:

30

Compara:

Esperado = 30
Obtido = 30

Resultado:

PASS

EXEMPLO DE FALHA

Esperado:

30

Obtido:

31

Relatório:

FAIL

com indicação do campo divergente.


TESTANDO CENTENAS DE CENÁRIOS

Padawan...

Aqui está o verdadeiro poder.

Você cria:

0 + 0
10 + 20
9999 + 1
5000 + 5000

Tudo executado automaticamente.

Em segundos.


TESTANDO PROGRAMAS CICS

O ZUnit consegue testar componentes que normalmente seriam executados sob CICS.

Exemplo:

EXEC CICS LINK

Através de stubs e ambientes controlados.

Isso reduz enormemente o tempo de validação.


TESTANDO DB2

Também é possível criar cenários envolvendo:

SELECT
INSERT
UPDATE
DELETE

utilizando ambientes isolados.


MOCKS E STUBS

Conceito muito usado no mundo distribuído.

Exemplo:

Programa chama:

CONSULTA-CLIENTE

Mas o programa real não existe no ambiente.

Criamos um:

Stub

que responde:

CLIENTE VÁLIDO

Assim o teste continua funcionando.


INTEGRAÇÃO COM DEVOPS

O ZUnit tornou-se peça importante do pipeline moderno.

Fluxo:

Git
 ↓
Build
 ↓
Compilação COBOL
 ↓
ZUnit
 ↓
Deploy

Se um teste falhar:

Deploy Bloqueado

BENEFÍCIOS REAIS

Menos regressões

Alterou um cálculo?

Execute 500 testes.


Mais confiança

Mudanças menores tornam-se seguras.


Documentação viva

Os testes mostram como o programa deveria funcionar.


Onboarding

Novo desenvolvedor entende rapidamente a lógica.


CURIOSIDADES

Curiosidade 1

Muitos sistemas COBOL possuem mais de:

20 milhões de linhas

Sem testes automatizados.


Curiosidade 2

Alguns bancos executam milhares de testes ZUnit por dia.

Antes mesmo do primeiro usuário acessar o sistema.


Curiosidade 3

Em muitos projetos, o maior esforço não é criar o teste.

É descobrir qual deveria ser o resultado correto.


Curiosidade 4

A adoção do ZUnit foi impulsionada pelo movimento:

Shift Left Testing

Testar mais cedo.

Corrigir mais barato.


DICAS DE MESTRE JEDI MAINFRAME

Não teste programas gigantes primeiro

Comece pelos módulos menores.


Teste regras de negócio

Prioridade:

Cálculos
Tarifas
Juros
Impostos
Limites

Automatize regressões

Todo defeito corrigido deve virar um teste.


Integre com Git

Cada commit deve executar testes.


Pense como um auditor

Pergunta:

"Como provo que este cálculo continua correto após a alteração?"

Se o ZUnit responde essa pergunta, você está usando a ferramenta corretamente.


O VERDADEIRO SIGNIFICADO DO ZUNIT

Padawan...

O ZUnit não foi criado para testar COBOL.

Ele foi criado para proteger conhecimento corporativo acumulado durante décadas.

Quando um banco possui um programa escrito em 1987, alterado por 200 pessoas diferentes ao longo de 40 anos, o risco não está na compilação.

O risco está em quebrar silenciosamente uma regra de negócio que movimenta milhões de reais por dia.

O ZUnit é a resposta moderna para um problema antigo:

"Como mudar um sistema legado sem destruir aquilo que o tornou valioso?"

E é justamente por isso que muitos arquitetos consideram o ZUnit uma das tecnologias mais importantes da modernização do IBM Z: não porque ele substitui o COBOL, mas porque permite evoluí-lo com segurança. ☕💣🚀


Spaghetti Code Rules: Quando um Programador COBOL Descobriu que a Matrix Era Feita de Espaguete e Cada GO TO Criava um Novo Labirinto

 

Bellacosa Mainframe e o spaghetti code rules

☕ Um Café no Bellacosa Mainframe

Spaghetti Code Rules sem Mistérios

Quando um Programador COBOL Descobriu que a Matrix Era Feita de Espaguete e Cada GO TO Criava um Novo Labirinto

"A Matrix não aprisionava apenas pessoas. Ela também aprisionava programas dentro de um emaranhado de caminhos onde ninguém mais sabia como chegar à saída."


Prólogo — O Labirinto Invisível da Matrix

Neo acabara de receber uma missão aparentemente simples.

Corrigir um erro no cálculo dos juros de um financiamento.

Morpheus entregou um único arquivo.

FINANCEIRO01.CBL

Neo sorriu.

— Apenas um programa?

Morpheus respondeu.

— Sim.

Só um.

Neo abriu o código.

A barra de rolagem diminuiu.

Muito.

Muito mesmo.

O programa possuía:

  • 68.000 linhas

  • 2.400 parágrafos

  • centenas de GO TO

  • dezenas de ALTER

  • milhares de variáveis

  • comentários escritos por gerações diferentes

Neo tentou localizar a regra do financiamento.

Cinco minutos depois...

estava em outra rotina.

Dez minutos depois...

entrou em um PERFORM.

Depois um GO TO.

Depois outro.

Depois um PERFORM THRU.

Depois um ALTER.

Depois um EXIT.

Depois voltou.

Depois foi para outro programa.

Depois retornou.

Finalmente perguntou:

— Morpheus...

onde exatamente começa esse cálculo?

Morpheus sorriu.

— Essa pergunta já foi feita por pelo menos cinquenta programadores antes de você.

O Oráculo apareceu.

Olhou para Neo.

E disse:

"Você não entrou apenas em um programa. Entrou em um prato de espaguete."


O que é Spaghetti Code?

Spaghetti Code (Código Espaguete) é um antipadrão de software caracterizado por uma estrutura extremamente confusa, onde o fluxo de execução é difícil de compreender, seguir ou modificar.

O nome vem da aparência do fluxo lógico.

Imagine um prato cheio de espaguete.

Os fios cruzam-se em todas as direções.

Você tenta puxar um.

Leva metade do prato junto.

No software acontece exatamente igual.

Uma alteração aparentemente simples afeta dezenas de outras partes.


A origem do termo

O termo surgiu na década de 1970.

Naquela época muitos sistemas eram escritos utilizando:

  • GOTO

  • Jumps

  • Branches

  • Fluxos não estruturados

Os diagramas de execução pareciam literalmente um prato de macarrão.

Daí nasceu o nome.


Matrix explica melhor que qualquer livro

Imagine que Neo precisa chegar até o Arquiteto.

Mas cada corredor leva para outro corredor.

Cada porta abre outra porta.

Cada elevador muda de direção.

Cada escolha cria um novo caminho.

Após meia hora...

Neo percebe.

A Matrix inteira virou um labirinto.

É exatamente essa sensação que um desenvolvedor experimenta ao abrir um sistema com Spaghetti Code.


O nascimento do espaguete

Curiosamente...

ninguém acorda pensando:

"Hoje vou criar um código horrível."

O Spaghetti Code nasce lentamente.

Primeiro.

Um pequeno ajuste.

Depois.

Outro.

Depois.

Uma exceção.

Depois.

Uma regra temporária.

Depois.

Outra urgência.

Depois.

Uma correção rápida.

Cinco anos depois...

o prato está servido.


Um exemplo COBOL

Imagine este fluxo.

INICIO

↓

VALIDA

↓

CALCULA

↓

GRAVA

↓

FIM

Bonito.

Agora imagine vinte anos depois.

INICIO

↓

VALIDA

↓

GO TO ROTINA-X

↓

PERFORM Y

↓

ALTER Z

↓

GO TO A

↓

PERFORM THRU B

↓

ROTINA-C

↓

GO TO D

↓

VALIDA NOVAMENTE

↓

VOLTA

↓

FIM

Ninguém mais entende.


Como surge?

Existem várias causas.

Crescimento contínuo

Programa pequeno.

Depois médio.

Depois enorme.


Falta de arquitetura

Cada desenvolvedor cria sua própria organização.


Pressão por prazo

"Depois organizamos."

Nunca organizam.


Excesso de GO TO

O clássico dos clássicos.


Código duplicado

Trechos espalhados.


Ausência de revisão

Ninguém verifica consistência.


O COBOL é culpado?

Não.

Essa talvez seja a maior injustiça da história da computação.

COBOL moderno incentiva:

  • PERFORM

  • Modularização

  • COPYBOOK

  • CALL

  • Programas estruturados

  • Classes

  • Métodos (Enterprise COBOL moderno)

O problema nunca foi COBOL.

Foi a forma como algumas pessoas programaram.


Matrix Reloaded

O Arquiteto mostra milhares de versões anteriores da Matrix.

Cada versão acumulava pequenos remendos.

Nenhum parecia perigoso.

Todos juntos criaram enorme complexidade.

Software evolui exatamente assim.


O efeito psicológico

Existe uma armadilha.

Quando modificamos um programa conhecido.

Pensamos:

"Vou colocar só mais um IF."

Depois outro.

Depois outro.

Cada alteração parece pequena.

A soma delas não é.


O Programador COBOL Padawan

Todo Padawan abre um programa antigo e pensa.

"Vou entender rapidamente."

Uma hora depois.

Ainda tenta descobrir onde começou.


O Agente Smith adora Spaghetti Code

Porque sistemas confusos criam:

medo.

Ninguém gosta de alterar.

Cada mudança parece perigosa.

Smith nem precisa atacar.

O próprio código afasta os desenvolvedores.


Um exemplo inspirado na Matrix

Imagine que Neo precisa abrir uma porta.

Mas antes precisa:

abrir outra.

Depois outra.

Depois voltar.

Depois pegar uma chave.

Depois retornar.

Depois abrir outra porta.

É exatamente isso que acontece em muitos fluxos de programas antigos.


Como reconhecer?

Existem sinais claros.

Muitos GO TO

Principal indicador.


Programas enormes

30 mil.

50 mil.

100 mil linhas.


Variáveis sem significado

A1

B2

X99

WK01

WK02

WK03

Regras espalhadas

Mesmo cálculo aparece em cinco lugares.


Dependências circulares

Programa chama outro.

Que chama outro.

Que volta ao primeiro.


Um caso realista

Imagine.

Sistema bancário.

Criado em:

Mais de:

400 modificações.

Nenhuma refatoração.

Resultado.

Cada alteração exige:

  • dois analistas

  • três programadores

  • uma semana de testes

Não porque a regra seja difícil.

Mas porque ninguém sabe o impacto.


Os riscos

Bugs

Alteração pequena.

Impacto gigante.


Performance

Fluxo desnecessário.


CPU

Mais instruções.

Mais custo.


Manutenção

Tempo explode.


Onboarding

Novos profissionais sofrem.


Burnout

Especialistas tornam-se gargalos.


O custo invisível

Imagine.

Alteração.

15 minutos.

Mas entender o programa leva:

dois dias.

Isso é custo.


O impacto no Mainframe

Mainframe processa:

milhões de transações.

Spaghetti Code aumenta:

  • CPU

  • consumo

  • risco

  • testes

  • tempo de homologação

Tudo fica mais caro.


Existe ferramenta para medir?

Sim.

Hoje existem ferramentas excelentes.

  • IBM ADDI

  • IBM Application Discovery

  • SonarQube

  • IBM COBOL Check

  • IBM Developer for z/OS

  • Enterprise Analyzer

Elas calculam:

  • complexidade ciclomática

  • dependências

  • acoplamento

  • fluxo


Como evitar?

Modularização

Divida responsabilidades.


PERFORM

Prefira estruturas claras.


CALL

Separe funcionalidades.


COPYBOOK

Padronize estruturas.


Refatoração contínua

Não espere dez anos.


Comentários úteis

Explique:

por quê.

Não:

o quê.


Testes

Protegem refatorações.


Atenção!

Existe diferença entre:

Programa grande

e

Spaghetti Code.

Alguns sistemas possuem:

200 mil linhas.

Mas excelente organização.

Outros possuem:

2 mil linhas.

Completamente caóticos.

O tamanho não define qualidade.


O papel da arquitetura

Arquitetura cria limites.

Cada módulo possui função.

Sem arquitetura.

Tudo conversa com tudo.


Matrix e os Sentinelas

Os Sentinelas encontram Zion porque seguem caminhos claros.

Imagine se existissem milhões de túneis aleatórios.

Eles demorariam muito mais.

Código também.

Fluxos claros facilitam manutenção.


Curiosidade

A Structured Programming Movement dos anos 70 surgiu justamente para combater o Spaghetti Code.

Nomes como:

  • Edsger Dijkstra

  • Niklaus Wirth

  • Donald Knuth

mudaram completamente a forma de programar.

O famoso artigo:

"Go To Statement Considered Harmful"

transformou a indústria.


O COBOL moderno

Enterprise COBOL oferece recursos para escrever código extremamente limpo.

  • Inline PERFORM

  • EVALUATE

  • Functions

  • Nested Programs

  • OO COBOL

  • User Defined Functions

  • XML

  • JSON

Não existe desculpa para criar espaguete.


Erros clássicos

  • Misturar regras de negócio e acesso a dados.

  • Usar GO TO excessivamente.

  • Duplicar lógica.

  • Não remover código morto.

  • Acrescentar IFs infinitamente.

  • Não modularizar.


Boas práticas

  • Uma responsabilidade por módulo.

  • Nomes significativos.

  • Fluxo previsível.

  • Revisões frequentes.

  • Refatoração incremental.

  • Diagramas atualizados.

  • Documentação viva.


O Ensinamento do Oráculo

O Oráculo entrega um prato de espaguete para Neo.

Ele tenta puxar um fio.

Todo o prato vem junto.

Ela então entrega uma caixa organizada de peças LEGO.

Cada bloco possui uma função.

Ela sorri.

"Software deve parecer LEGO.
Nunca espaguete."


Aplicabilidade

Spaghetti Code aparece em:

  • COBOL

  • Java

  • Python

  • C

  • C++

  • JavaScript

  • PHP

  • Rust

  • Go

  • Assembly

Nenhuma linguagem está imune.


Lições para um Programador COBOL Padawan

Quando você começar sua carreira em um ambiente IBM Z, encontrará programas escritos há décadas. Alguns serão verdadeiras obras-primas da engenharia. Outros parecerão um labirinto digno da Matrix.

A tentação será adicionar "apenas mais um IF" ou "mais um GO TO" para resolver rapidamente um incidente. Resista.

Sempre que possível:

  • extraia responsabilidades para novos módulos;

  • elimine duplicações;

  • substitua fluxos confusos por estruturas claras;

  • escreva nomes compreensíveis;

  • documente regras de negócio;

  • mantenha testes atualizados.

Cada pequena melhoria reduz um pouco o emaranhado do espaguete e facilita o trabalho do próximo desenvolvedor.


Conclusão — Saindo do Prato de Espaguete da Matrix

No final da trilogia Matrix, Neo percebe que compreender a estrutura da Matrix é mais poderoso do que simplesmente reagir a ela.

Na Engenharia de Software, acontece exatamente o mesmo.

O maior problema do Spaghetti Code não é ser feio.

É transformar cada alteração em uma aventura imprevisível.

Em sistemas COBOL responsáveis por processar milhões de transações financeiras, isso significa mais tempo de manutenção, maior risco de incidentes, consumo adicional de CPU, testes mais demorados e equipes receosas de evoluir o software.

No universo Bellacosa Mainframe existe uma máxima que todo Programador COBOL Padawan deveria guardar:

"Cada GO TO desnecessário é mais um corredor dentro da Matrix. Cada módulo bem organizado é uma porta de saída."

O objetivo não é escrever o código mais inteligente.

É escrever o código que outro programador — talvez você mesmo daqui a dez anos — consiga entender sem precisar da ajuda do Oráculo.

Porque o verdadeiro Escolhido não é aquele que cria o maior labirinto.

É aquele que sabe construir o caminho mais simples até a solução.

sábado, 1 de maio de 2021

Douglas Adams: o Homem que Descobriu que o Universo Rodava em Produção sem Documentação

 


☕ Um Café no Bellacosa Mainframe

Douglas Adams: o Homem que Descobriu que o Universo Rodava em Produção sem Documentação

🌌 Vida, obra, computadores, toalhas, rinocerontes, prazos impossíveis e a curiosa história do escritor que parecia ter escapado de um dos próprios livros

DON'T PANIC.

Há escritores que criam personagens.

Há escritores que criam universos.

E há Douglas Adams, que conseguiu realizar uma façanha consideravelmente mais improvável:

criou um universo tão parecido consigo mesmo que, depois de algum tempo, ficou difícil descobrir onde terminava Douglas Adams e começava O Guia do Mochileiro das Galáxias.

Ele era enorme.

Literalmente.

Tinha quase dois metros de altura.

Gostava de computadores, guitarras, ciência, tecnologia, carros, animais, viagens, ideias absurdas e prazos — embora sua relação com estes últimos fosse comparável à relação de um programa COBOL de 1973 com uma especificação OpenAPI.

Sabia que existiam.

Reconhecia sua importância.

Mas preferia encontrá-los passando rapidamente ao longe.

Douglas Noël Adams nasceu em Cambridge, Inglaterra, em 11 de março de 1952, estudou em Brentwood e depois literatura inglesa no St John's College, Cambridge. Antes de se tornar mundialmente famoso, passou por uma coleção de empregos e experiências que parecem ter sido escolhidos por um gerador aleatório de profissões: escritor, produtor de rádio, roteirista, performer e, em certos períodos, trabalhos completamente distantes da carreira literária. (Douglas Adams)

Mais tarde escreveria para Monty Python, trabalharia em Doctor Who, criaria Dirk Gently, se apaixonaria por computadores, ajudaria causas ambientais, desenvolveria jogos e acabaria criando uma das obras mais deliciosamente absurdas da cultura pop.

Tudo isso antes de morrer, inesperadamente, em 2001, aos 49 anos.

Mas começar pelo fim seria terrivelmente organizado.

E Douglas Adams provavelmente desconfiaria disso.

Portanto:

pegue sua toalha.

Vamos começar pelo lugar mais apropriado.

No meio do caos.



🌍 CAPÍTULO 1

Um inglês de quase dois metros tentando descobrir o que fazer da vida

Douglas Adams não surgiu magicamente carregando um exemplar do Guia do Mochileiro das Galáxias.

Antes do sucesso houve algo que todo programador conhece muito bem:

tentativa
erro
tentativa
erro
boletos e conta para pagar
tentativa
erro
ideia estranha
tentativa

Em Cambridge, Adams se envolveu com o ambiente de comédia estudantil e com o Footlights, tradicional celeiro britânico de humoristas.

Seu interesse era escrever comédia.

Não exatamente ficção científica.

Essa distinção é importante.

Adams chegou a explicar que se considerava fundamentalmente um escritor de comédia, usando os mecanismos da ficção científica para satirizar praticamente todo o resto. (Enciclopédia)

Isso explica muita coisa.

As naves espaciais são cenário.

Os alienígenas são ferramentas.

Os computadores gigantes são piadas.

O verdadeiro assunto é:

nós.

A burocracia.

A arrogância.

A tecnologia.

O governo.

A religião.

A economia.

Os restaurantes.

As filas.

Os formulários.

Os especialistas.

E principalmente nossa incrível capacidade de construir sistemas complicadíssimos para resolver problemas que talvez não precisassem existir.

Um programador mainframe reconhece imediatamente esse universo.



🐍 CAPÍTULO 2

Antes das galáxias havia Monty Python

Existe uma conexão maravilhosa entre Adams e Monty Python.

Ele trabalhou com Graham Chapman e conseguiu créditos no programa.

Douglas está inclusive entre o pequeno grupo de pessoas externas ao núcleo principal do Python que recebeu crédito de roteiro na série original. Também apareceu rapidamente diante das câmeras em episódios da quarta temporada.

E aqui encontramos parte do código-fonte de seu humor.

Imagine:

Monty Python
     +
ficção científica
     +
rádio BBC
     +
filosofia
     +
burocracia britânica
     +
computadores
     +
chá
     +
um sujeito olhando para o universo e perguntando:

"Mas quem aprovou essa arquitetura?"

Resultado:

Douglas Adams.

Seu nonsense não era simplesmente aleatório.

Essa é uma das grandes lições para quem tenta imitá-lo.

Por trás do absurdo existe lógica.

Uma lógica impecável.

O problema é que a premissa inicial é completamente insana.



📺 CAPÍTULO 3

Doctor Who entra no CPD

Antes e durante a explosão de Hitchhiker's, Adams também trabalhou em outra instituição britânica:

Doctor Who.

Foi roteirista e chegou a atuar como script editor da série.

Entre suas contribuições estão histórias relacionadas a:

  • The Pirate Planet;

  • City of Death;

  • Shada;

  • e trabalhos na temporada 17.

Isso é importantíssimo para entender Adams.

Porque Doctor Who permitia exatamente aquilo de que ele gostava:

pegar uma ideia filosófica absurda...

...transformá-la em problema tecnológico...

...colocar personagens britânicos no meio...

...e observar a civilização entrar em pane.

Em outras palavras:

produção.


🚀 CAPÍTULO 4

O Guia nasceu no rádio

Aqui existe uma curiosidade maravilhosa para uma geração acostumada a pensar primeiro em livros.

O Guia do Mochileiro das Galáxias não nasceu como livro.

Nasceu como programa de rádio da BBC Radio 4.

A primeira transmissão aconteceu em março de 1978. (Douglas Adams)

Depois veio praticamente tudo:

RÁDIO
 ↓
LIVROS
 ↓
TV
 ↓
DISCOS
 ↓
TEATRO
 ↓
JOGO DE COMPUTADOR
 ↓
FILME
 ↓
mais adaptações
 ↓
fãs discutindo cronologia
 ↓
42

O próprio site dedicado à obra de Adams registra essa extraordinária multiplicação de formatos. (Douglas Adams)

Portanto, chamar Hitchhiker's simplesmente de "uma série de livros" é quase como chamar z/OS de editor de texto.

Tecnicamente há texto envolvido.

Mas estamos omitindo alguns detalhes.


🌍 CAPÍTULO 5

Arthur Dent: o homem que só queria sua casa

E aqui encontramos nosso primeiro suspeito de ser Douglas Adams disfarçado.

Arthur Dent.

Arthur não é Luke Skywalker.

Não quer salvar a galáxia.

Não possui poderes.

Não tem treinamento Jedi.

Não descobriu ser herdeiro de nenhuma dinastia.

Arthur gostaria basicamente de:

ter sua casa
tomar chá
entender o que está acontecendo

Infelizmente, o universo possui outros planos.

Sua casa será demolida para construir uma estrada.

Pouco depois...

a Terra será demolida para construir uma via expressa hiperespacial.

E essa simetria contém Douglas Adams inteiro.

O indivíduo é esmagado pela burocracia local.

A humanidade inteira é esmagada pela burocracia cósmica.

A escala muda.

A estupidez administrativa permanece perfeitamente compatível.


📋 CAPÍTULO 6

Vogons: o verdadeiro terror do universo

Esqueça monstros.

Esqueça Daleks.

Esqueça invasões alienígenas.

Adams compreendeu algo muito mais assustador.

O formulário.

Os Vogons representam uma das maiores contribuições da literatura para a compreensão da burocracia.

Eles não precisam odiar você.

Isso seria pessoal demais.

Eles possuem:

procedimentos.

regulamentos.

autorizações.

protocolos.

E provavelmente algum equivalente galáctico do:

TICKET STATUS: CLOSED
REASON:
WORKING AS DESIGNED

A Terra será destruída?

Lamentável.

Os planos estavam disponíveis.

Você não consultou?

Problema seu.

Qualquer pessoa que já tenha enfrentado uma mudança corporativa aprovada por quinze departamentos reconhecerá imediatamente a espécie.


📚 CAPÍTULO 7

A trilogia de cinco livros

Douglas Adams também conseguiu melhorar a matemática.

Sua famosa "trilogia" acabou composta por cinco romances escritos por ele:

1. The Hitchhiker's Guide to the Galaxy

1979

2. The Restaurant at the End of the Universe

1980

3. Life, the Universe and Everything

1982

4. So Long, and Thanks for All the Fish

1984

5. Mostly Harmless

1992

O site oficial registra a sequência e suas datas, incluindo o sucesso comercial extraordinário da série. (Douglas Adams)

Uma trilogia com cinco livros.

Porque quando você criou uma piada cósmica sobre a incapacidade humana de organizar a realidade, seria decepcionante começar obedecendo à aritmética.


🧠 CAPÍTULO 8

Deep Thought

Então chegamos ao computador.

Naturalmente.

Uma civilização deseja descobrir a resposta para:

A Vida, o Universo e Tudo Mais.

Portanto constrói um supercomputador chamado:

Deep Thought

Ele calcula.

Durante aproximadamente:

7,5 milhões de anos.

Finalmente encontra a resposta.

E a resposta é:

42

(The Guardian)

Maravilhoso.

Mas existe um pequeno problema.

Ninguém sabe exatamente qual era a pergunta.

E essa talvez seja uma das melhores piadas já escritas sobre computação.

Porque qualquer veterano de TI reconhece imediatamente:

RESULTADO CORRETO
+
REQUISITO ERRADO
=
PROJETO CORPORATIVO

💾 CAPÍTULO 9

Deep Thought era um mainframe?

Douglas nunca precisou chamá-lo assim.

Mas permita que Bellacosa abra uma Change Request absolutamente não autorizada.

Deep Thought possui:

  • processamento centralizado;

  • workload gigantesco;

  • disponibilidade medida em eras geológicas;

  • usuários que não entendem os requisitos;

  • documentação aparentemente insuficiente;

  • projeto com duração de milhões de anos;

  • resposta tecnicamente correta;

  • cliente insatisfeito.

Senhoras e senhores:

isso é enterprise computing.

Só faltou:

IEF142I DEEPTHOT STEP42 - STEP WAS EXECUTED - COND CODE 0000

E algum gerente perguntar:

— Então podemos desligar?

Não.

Porque agora precisamos calcular a pergunta.


🌎 CAPÍTULO 10

A Terra era o segundo computador

E aqui Adams melhora ainda mais a piada.

Para descobrir a pergunta correspondente à resposta 42, é construído um computador ainda mais sofisticado.

Chamado:

Terra.

Sim.

Nós.

O planeta inteiro.

Um sistema computacional gigantesco.

Executando durante milhões de anos.

Até que...

pouco antes de terminar o processamento...

os Vogons destroem a máquina.

Se isso não parece um projeto de TI cancelado três semanas antes do go-live depois de oito anos de desenvolvimento, você ainda não trabalhou tempo suficiente em uma grande organização.


🐟 CAPÍTULO 11

Babel Fish

Outra criação genial:

Babel Fish.

Um pequeno peixe capaz de permitir comunicação entre idiomas.

Décadas depois, "Babel Fish" tornou-se referência cultural para sistemas de tradução automática; serviços tecnológicos chegaram a adotar diretamente o nome inspirado na criação de Adams. (Estante Virtual)

Hoje olhamos para tradução automática e IA generativa e pensamos:

Douglas provavelmente passaria quinze minutos fascinado.

Depois perguntaria:

— Muito interessante. Agora quantos bilhões gastamos construindo máquinas para podermos finalmente discutir com estrangeiros em tempo real?

E sairia procurando café.


🕵️ CAPÍTULO 12

Dirk Gently

Mas reduzir Adams ao Guia seria injusto.

Ele também criou outro personagem extraordinário:

Dirk Gently.

As principais obras são:

  • Dirk Gently's Holistic Detective Agency — 1987;

  • The Long Dark Tea-Time of the Soul — 1988.

(Simon & Schuster)

Dirk acredita na:

interconectividade fundamental de todas as coisas.

O método investigativo dele poderia ser resumido assim:

tudo está conectado
 ↓
portanto qualquer pista pode importar
 ↓
inclusive aquela completamente absurda
 ↓
especialmente aquela completamente absurda

Qualquer analista investigando um incidente em produção às três da manhã entende perfeitamente.

O Db2 está lento.

Por quê?

Porque houve alteração no storage.

Por quê?

Porque um processo batch mudou.

Por quê?

Porque alguém alterou um parâmetro.

Por quê?

Porque houve migração seis meses atrás.

Por quê?

Porque...

Dirk sorri.

Interconectividade fundamental de todas as coisas.


🌳 CAPÍTULO 13

Last Chance to See

Existe ainda outro Douglas Adams.

Menos conhecido.

E talvez ainda mais interessante.

O ambientalista.

Com o zoólogo Mark Carwardine, Adams participou do projeto que resultaria em:

Last Chance to See

Uma viagem para encontrar espécies ameaçadas de extinção.

Não era simplesmente comédia.

Era conservação.

Era ciência.

Era encantamento diante da biodiversidade.

Adams tornou-se patrono fundador da Save the Rhino e chegou, em 1994, a participar de uma subida ao Kilimanjaro envolvendo uma fantasia de rinoceronte para ajudar a arrecadar dinheiro e conscientização. (Save the Rhino)

Pare por alguns segundos.

O homem que escreveu sobre um peixe tradutor universal...

subiu uma montanha...

vestido de rinoceronte...

para tentar salvar rinocerontes reais.

Douglas Adams não precisava inventar um personagem chamado Douglas Adams.

A produção já estava suficientemente absurda.


🍎 CAPÍTULO 14

Douglas Adams, o nerd

Aqui nossa história fica particularmente interessante.

Douglas Adams adorava tecnologia.

Computadores não eram apenas ferramentas de escrita para ele.

Eram brinquedos intelectuais.

O Macintosh o fascinou.

Ele foi um dos primeiros entusiastas britânicos da plataforma e manteve enorme interesse por computadores pessoais e tecnologias digitais. (Wikipedia)

Lembre-se da época.

Estamos falando dos anos 1980 e 1990.

Quando dizer:

"computadores vão mudar nossa maneira de comunicar, criar e pensar"

ainda não era frase obrigatória de keynote.

Adams percebeu cedo que computadores poderiam ser meios culturais.

Não apenas calculadoras.


🎮 CAPÍTULO 15

E naturalmente ele fez jogos

Em 1984 surgiu o jogo baseado em:

The Hitchhiker's Guide to the Galaxy.

Adams participou também de projetos como:

  • Bureaucracy;

  • Starship Titanic.

Seu catálogo oficial inclui esses experimentos tecnológicos ao lado dos livros e trabalhos audiovisuais. (Douglas Adams)

E Bureaucracy merece aplausos.

Porque transformar burocracia em videogame é reconhecer que o verdadeiro survival horror sempre foi preencher documentos corretamente.


🎸 CAPÍTULO 16

Pink Floyd aparece porque naturalmente aparece

Douglas Adams também era amigo de David Gilmour, do Pink Floyd.

E há uma conexão deliciosa.

Adams sugeriu o título:

The Division Bell

para o álbum de 1994 da banda. (The Christian Science Monitor)

Porque aparentemente escrever uma das séries mais famosas da ficção científica não era suficiente.

Era necessário deixar Easter eggs também na história do rock.


⏰ CAPÍTULO 17

O homem que amava deadlines

Existe uma frase famosa associada a Douglas Adams sobre gostar de prazos principalmente pelo som que fazem quando passam voando.

E ela combina perfeitamente com sua reputação.

Adams era notoriamente complicado quando precisava terminar textos.

Isso cria uma maravilhosa contradição.

Ele possuía:

imaginação       100
humor            100
inteligência     100
criatividade     100
curiosidade      100
deadline          03

Mas existe uma lição importante nisso.

O próprio material oficial de Adams, ao aconselhar aspirantes a escritores, enfatiza duas coisas bastante menos românticas:

escrever alguma coisa e possuir determinação para continuar. (Douglas Adams)

A inspiração é maravilhosa.

O problema é que eventualmente alguém precisa salvar o arquivo.


✍️ CAPÍTULO 18

O segredo técnico do humor de Adams

Se você escreve artigos, histórias ou documentação e quer aprender alguma coisa com Douglas Adams, não copie apenas as piadas.

Copie a arquitetura.

1. Comece com algo normal

Uma casa será demolida.

2. Aumente absurdamente a escala

Agora a Terra será demolida.

3. Mantenha a lógica administrativa

Existe documentação.

4. Faça o personagem reagir como uma pessoa comum

— Como assim?

5. Trate o absurdo como rotina

— Os documentos estavam disponíveis.

Essa é a mágica.

O narrador nunca precisa gritar que aquilo é engraçado.

O universo considera tudo perfeitamente razoável.


☕ CAPÍTULO 19

Douglas Adams aplicado ao mainframe

Imagine um diálogo.

— Por que esse programa existe?

— Porque processa o arquivo XPTO.

— Por que o arquivo XPTO existe?

— Porque alimenta o sistema ABC.

— Por que ABC precisa disso?

— Não sabemos.

— Quem escreveu?

— Aposentou em 1994.

— Existe documentação?

— Sim.

— Onde?

— Num dataset arquivado.

— Qual?

— Não sabemos.

— Então como sabemos que funciona?

— O job termina RC=0.

Arthur Dent provavelmente perguntaria:

— Isso é normal?

Ford Prefect responderia:

— Em sistemas enterprise, aparentemente sim.


🥚 CAPÍTULO 20

Easter eggs para carregar na toalha

Algumas pequenas delícias do universo Adams:

42 escapou dos livros e virou referência cultural gigantesca, aparecendo repetidamente em tecnologia, matemática recreativa e cultura hacker. (Douglas Adams)

O asteroide 18610 Arthurdent recebeu o nome inspirado no protagonista do Guia. (The Christian Science Monitor)

O nome Babel Fish atravessou a ficção e foi parar em tecnologia de tradução. (Estante Virtual)

O nome Deep Thought também encontrou ecos no mundo da computação. (Douglas Adams)

E existe ainda o objeto mais importante que um viajante pode carregar:

a toalha.

Porque uma pessoa que sabe onde está sua toalha claramente possui controle da situação.

Mesmo quando absolutamente não possui.


🧺 CAPÍTULO 21

Towel Day

Depois da morte de Adams, fãs transformaram a toalha em homenagem.

Todo 25 de maio, admiradores celebram o Towel Day carregando uma toalha.

Parece ridículo.

Naturalmente.

Por isso funciona.

Um monumento tradicional provavelmente seria inadequado.

Douglas criou uma mitologia em que um objeto banal tornou-se símbolo de preparação diante do caos.

Talvez seja justamente por isso que a ideia sobreviveu.



🧬 CAPÍTULO 22

Douglas Adams era um personagem de Douglas Adams

E finalmente chegamos à suspeita inicial.

Observe este homem.

Quase dois metros de altura.

Escritor de comédia.

Passa por Monty Python.

Vai trabalhar em Doctor Who.

Inventa um livro eletrônico fictício décadas antes de carregarmos enciclopédias no bolso.

Apaixona-se por computadores.

Escreve videogames.

Convive com músicos.

Batiza álbum do Pink Floyd.

Viaja pelo planeta procurando espécies ameaçadas.

Participa de uma aventura envolvendo uma fantasia de rinoceronte.

Tem problemas com deadlines.

Escreve sobre um inglês confuso tentando compreender um universo incompreensível.

E morre cedo demais, aos 49 anos, em 11 de maio de 2001, em Santa Barbara, Califórnia. (Wikipedia)

Agora imagine que você encontrou essa descrição dentro de um romance de Douglas Adams.

Você acreditaria imediatamente.


📖 CAPÍTULO 23

O Salmão da Dúvida

Após sua morte surgiu:

The Salmon of Doubt

publicado em 2002.

A coletânea reuniu textos, ensaios e material relacionado ao romance que Adams deixou inacabado. (Wikipedia)

O título parece adequado.

Porque terminar tudo perfeitamente seria pouco característico.

Douglas deixou processos rodando.

Alguns nunca chegaram ao:

END-OF-JOB

Talvez isso também faça parte do encanto.


🧠 CAPÍTULO 24

O que um programador pode aprender com Douglas Adams

Muito.

Primeiro:

questione requisitos.

Deep Thought encontrou a resposta correta para uma pergunta que ninguém conhecia.

Segundo:

sistemas existem dentro de sistemas.

Dirk Gently aprovaria qualquer investigação séria de incidente.

Terceiro:

tecnologia também é cultura.

Adams percebeu isso cedo.

Quarto:

complexidade não significa inteligência.

Os Vogons possuem processos extremamente sofisticados.

Continuam sendo Vogons.

Quinto:

documentação importa.

Especialmente antes de demolir planetas.

Sexto:

nunca confunda sucesso técnico com sucesso real.

MAXCC=0

não significa:

PROBLEMA RESOLVIDO

Deep Thought provavelmente retornaria RC=0.

E ainda assim ninguém saberia a pergunta.


🚀 CAPÍTULO 25

E talvez esta seja sua maior obra

Douglas Adams escreveu sobre o espaço.

Mas seu assunto nunca foi realmente o espaço.

Escreveu sobre alienígenas.

Mas estava falando de humanos.

Escreveu sobre computadores.

Mas estava falando sobre nossa fé em respostas automáticas.

Escreveu sobre burocratas alienígenas.

Mas todos já encontramos Vogons.

Escreveu sobre Arthur Dent perdido no universo.

Mas Arthur somos nós.

Acordamos.

Tomamos café.

Abrimos o notebook.

Recebemos um ticket.

Descobrimos que alguém mudou alguma coisa durante a madrugada.

Perguntamos por quê.

Ninguém sabe.

Descobrimos que existe documentação.

Não temos acesso.

Encontramos o responsável.

Ele saiu da empresa.

Finalmente encontramos a resposta.

42.

Perguntamos qual era a pergunta.

E nesse instante, em algum lugar além do Restaurante no Fim do Universo, um inglês gigantesco provavelmente começa a rir.


☕ EPÍLOGO

DON'T PANIC

Talvez essa seja a melhor homenagem possível a Douglas Adams.

Não transformá-lo numa estátua.

Ele provavelmente acharia extremamente constrangedor.

Melhor imaginá-lo chegando ao CPD do Bellacosa Mainframe.

Observando um IBM Z.

Perguntando:

— Há quanto tempo isso está funcionando?

— Algumas aplicações, décadas.

Douglas olha para o operador.

— E vocês sabem exatamente tudo o que elas fazem?

Silêncio.

Ele observa os milhares de jobs.

Os programas COBOL.

As transações CICS.

Os datasets.

Os logs.

As interfaces.

As APIs.

As regras comerciais escritas por pessoas que talvez já tenham se aposentado.

Então sorri.

— Fascinante.

Pega sua toalha.

Abre o terminal.

E pergunta:

READY

LISTCAT

O sistema responde.

Douglas pensa alguns segundos.

— Bellacosa...

— Sim?

— Acho que finalmente descobri o computador que deveria calcular a pergunta.

E em algum lugar do JES2 aparece:

JOB DEEPTHOT SUBMITTED

$HASP373 DEEPTHOT STARTED

Estimativa de conclusão:

7.500.000 anos.

Prioridade:

NORMAL.

SLA:

segunda-feira.

E o operador, sem sequer levantar os olhos da tela, responde:

— Normal. É fechamento.

Douglas pega sua toalha.

Sorri.

E vai procurar o Restaurante no Fim do Universo.


🐬 Até mais, Douglas.

Obrigado pelos livros.

Obrigado pelos computadores.

Obrigado pelos rinocerontes.

Obrigado por Arthur, Ford, Marvin, Zaphod, Trillian e Dirk.

Obrigado por demonstrar que filosofia e besteirol podem compartilhar a mesma biblioteca.

Obrigado por ensinar que a resposta pode estar correta e ainda assim ser completamente inútil.

E, sobretudo...

obrigado por todos os peixes.

DON'T PANIC.

KNOW WHERE YOUR TOWEL IS.

E jamais aceite MAXCC=0 como resposta para a Vida, o Universo e Tudo Mais.


Para explorar a obra: site oficial de Douglas Adams

Outras maluquices











💀🔥 “Seu RACF está seguro… ou você só acha?”

 

Bellacosa Mainframe alerta sobre riscos no racf mal configurado

💀🔥 “Seu RACF está seguro… ou você só acha?”

🧠 Checklist de Auditoria RACF nível banco (com segredos que ninguém te conta)

“RACF não falha…
quem falha é quem confia demais nele.”


🧠 📜 Contexto histórico (o começo de tudo)

O RACF nasceu nos anos 70 junto com o z/OS (antes MVS).

👉 Naquela época:

  • segurança era controle de acesso
  • hoje é sobrevivência digital

💡 Curiosidade:

RACF foi um dos primeiros sistemas do mundo a implementar controle centralizado de identidade — antes do conceito de IAM moderno.


💀🔥 O CHECKLIST QUE SEPARA AMADOR DE BANCO


🧨 1. *PUBLIC — o vilão silencioso

👉 Procure:

// quem tem acesso aberto?
RLIST DATASET * AUTHUSER(*)

💥 Red flag:

  • datasets críticos com:
ID(*PUBLIC) ACCESS(READ ou UPDATE)

🔥 Insight Bellacosa:

80% das falhas começam aqui.


🧠 2. Usuários com SPECIAL / OPERATIONS

👉 Liste:

SEARCH CLASS(USER) MASK(*) SPECIAL

💥 Risco:

  • acesso total ao RACF

🎯 Dica senior:

  • separar:
    • ADMIN ≠ AUDITOR

⚙️ 3. Grupos com autoridade excessiva

👉 Verifique:

LISTGRP * OMVS

💥 Problema:

  • grupo herdando privilégio indevido

🔥 Easter egg:

Um grupo mal configurado é pior que um usuário root.


🧬 4. Programas APF e AC=1

👉 Verifique APF:

D PROG,APF

💥 Risco:

  • execução em modo supervisor

🎯 Ataque clássico:

  • inserir loadlib malicioso

🔐 5. Password Policy (o calcanhar de aquiles)

👉 Cheque:

SETROPTS LIST

💥 Problemas comuns:

  • senha simples
  • sem expiração
  • sem history

🔥 Curiosidade:

Já vi banco com senha “123456” em ambiente produtivo.


🌐 6. FACILITY class (o “backdoor oficial”)

👉 Verifique:

RLIST FACILITY *

💥 Risco:

  • permissões ocultas

🎯 Exemplo crítico:

  • BPX.* (Unix System Services)

🧑‍💻 7. USS (Unix no mainframe = Linux feelings)

👉 Verifique:

LISTUSER USER OMVS

💥 Risco:

  • UID 0 (root)

🔥 Insight:

USS é o ponto favorito de pivot de atacante moderno.


🧾 8. Logging / SMF (sem isso você está cego)

👉 Cheque:

  • SMF 80 (RACF)
  • SMF 30 (jobs)

💥 Problema:

  • logs incompletos

🎯 Dica:

  • integrar com SIEM

🧠 9. Started Tasks (STC) — privilégio invisível

👉 Verifique:

RLIST STARTED *

💥 Risco:

  • tarefas com privilégios elevados

🔥 Easter egg:

STC mal protegido = root invisível rodando 24x7


🔗 10. Integrações externas (o novo campo de batalha)

👉 Verifique:

  • CICS
  • z/OS Connect

💥 Risco:

  • acesso indireto ao core

🎯 Realidade:

O ataque não entra pelo mainframe… entra pela API.


💀🔥 CHECKLIST RÁPIDO (modo auditor)

✔️ Nenhum dataset crítico com *PUBLIC
✔️ SPECIAL restrito e auditado
✔️ APF controlado
✔️ Senha forte e rotacionada
✔️ SMF ativo e monitorado
✔️ USS sem UID 0 indevido
✔️ FACILITY revisada
✔️ STC mapeado
✔️ Integrações seguras


🧠💣 Fluxo real de ataque (pra abrir a mente)

  1. credencial fraca
  2. acesso TSO/FTP
  3. enumeração RACF
  4. exploração (APF / FACILITY / USS)
  5. persistência
  6. exfiltração

🧬 Easter Eggs que só senior percebe

💡 RACF não protege dataset não catalogado direito
💡 APF + AC=1 = execução nível kernel
💡 FACILITY é mais perigosa que DATASET
💡 USS é o “Linux escondido” do mainframe


🏦 Realidade nível banco

👉 Banco não confia em RACF…
👉 Banco audita RACF o tempo todo


🔥 Frase final estilo Bellacosa

“Se você não auditou seu RACF hoje…
alguém pode estar usando ele melhor que você.”

 

sexta-feira, 30 de abril de 2021

🧠 COBOL + Redes Neurais no IBM Mainframe

 



🧠 COBOL + Redes Neurais no IBM Mainframe

Dá pra fazer? Deve-se fazer? Quando faz sentido?

❌ O que NÃO faz sentido (sem romantizar)

COBOL foi criado para:

  • Processamento transacional

  • Lógica determinística

  • Alta confiabilidade

  • Baixo erro

  • Cálculo financeiro exato

  • Batch e OLTP

Redes neurais exigem:

  • Álgebra linear pesada

  • Matrizes gigantes

  • Operações vetoriais

  • Floating point intensivo

  • GPUs / TPUs

  • Bibliotecas como TensorFlow, PyTorch, JAX

👉 COBOL não tem:

  • Tipos numéricos adequados para ML moderno

  • Bibliotecas matemáticas otimizadas

  • Ecossistema científico

  • Performance vetorial competitiva

Criar uma rede neural em COBOL seria como usar um martelo para fazer microcirurgia.

É possível teoricamente?
Sim.

É profissionalmente aceitável?
Não.


⚠️ O erro clássico do padawan

“Mas o mainframe é poderoso, tem muita CPU, então dá pra rodar IA nele!”

Poder computacional ≠ arquitetura adequada.

Mainframe é otimizado para:

  • Throughput transacional

  • I/O previsível

  • CPU serial eficiente

  • Custos controlados por MIPS

IA moderna é:

  • Explosão de ponto flutuante

  • Paralelismo massivo

  • GPUs

  • Custo computacional brutal

👉 Rodar treino de rede neural em z/OS = queimar MIPS e dinheiro 🔥


✅ Onde o Mainframe ENTRA de forma inteligente

Agora vem a parte que ninguém do hype explica direito.

🧩 Arquitetura moderna REAL (usada por bancos e seguradoras)

[ Mobile / Web ] | v [ API / Microservices ] | v [ IA / ML (Python, GPUs, Cloud) ] | v [ Mainframe COBOL (CICS / Batch) ]

🎯 Papel do COBOL:

  • Fornecer dados confiáveis

  • Executar regras críticas

  • Tomar decisões finais

  • Persistir resultados

  • Garantir consistência financeira

🎯 Papel da IA:

  • Classificar

  • Prever

  • Detectar padrões

  • Score de risco

  • Fraude

  • Recomendação

A IA sugere.
O COBOL decide e executa.


🧠 Exemplo realista

💳 Detecção de fraude bancária

  1. Transação entra no CICS

  2. COBOL chama API de IA

  3. Modelo retorna score (ex: 0.87 risco)

  4. COBOL aplica regras:

    • Limite?

    • Cliente VIP?

    • Horário?

  5. COBOL aprova, nega ou solicita validação

➡️ COBOL governa
➡️ IA auxilia


🧪 “Mas posso rodar IA no próprio mainframe?”

⚠️ Com MUITAS ressalvas

Possibilidades existentes:

  • Linux on Z

  • Containers no zCX

  • Python rodando no Linux on Z

  • Inferência simples (não treino)

Mesmo assim:

  • ❌ Treinar modelos grandes → NÃO

  • ⚠️ Inferência pequena → talvez

  • 💰 Custo ainda alto comparado à cloud GPU

Mainframe não é substituto de GPU.


🧙 Easter-eggs de veterano

  • COBOL é determinístico; IA é probabilística

  • Reguladores confiam mais em COBOL do que em redes neurais “caixa-preta”

  • Muitos bancos exigem:

    • IA para análise

    • COBOL para decisão final

  • Explicabilidade (XAI) ainda é fraca — COBOL reina nisso


🛣️ Caminho correto para o dev padawan

Se você é dev e quer unir Mainframe + IA, faça assim:

🥋 Stack recomendada

  • COBOL + CICS / Batch

  • APIs REST

  • Python (ML)

  • Kafka / MQ

  • DB2 / VSAM

  • Cloud híbrida

📚 Aprenda:

  • Como o COBOL expõe serviços

  • Como consumir APIs externas

  • Como versionar modelos

  • Como validar decisões automatizadas

  • Como não estourar MIPS 😈


🧠 Resposta final (sem rodeio)

PerguntaResposta
Criar rede neural em COBOL?❌ Não faz sentido
Usar mainframe em soluções com IA?✅ Sim
COBOL como motor de decisão?✅ Absolutamente
Treinar ML no z/OS?❌ Financeiramente suicida
Arquitetura híbrida?🔥 Caminho real

☕ Palavra final do El Jefe

IA sem governança é risco.
COBOL sem IA perde competitividade.
Juntos, cada um no seu lugar, eles mandam no jogo.

Mainframe não é cérebro artificial.
É coluna vertebral.

E coluna não pensa —
ela sustenta tudo.


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...