Translate

quinta-feira, 12 de maio de 2022

O Arquivo Secreto do JSON : Os Recursos Avançados do Enterprise COBOL que Quase Ninguém Aprende...

 

Bellacosa Mainframe e o arquivo secreto do json

☕ Um Café no Bellacosa Mainframe

O Arquivo Secreto do JSON

Os Recursos Avançados do Enterprise COBOL que Quase Ninguém Aprende... Mas que Movem Bilhões de Transações Todos os Dias

"Existem programadores que sabem escrever COBOL. Existem programadores que sabem integrar COBOL ao mundo moderno. A diferença entre eles pode ser apenas uma instrução chamada JSON PARSE."


Prólogo — A Porta Número 3270

Era quase meia-noite.

As luzes do CPD permaneciam acesas como sempre.

O z16 processava milhões de transações silenciosamente. Em algum lugar daquele prédio, centenas de aplicações CICS conversavam entre si, acessando DB2, VSAM, MQ e dezenas de microsserviços espalhados pela nuvem.

Na tela verde do terminal 3270, um jovem Programador Padawan acabara de receber sua primeira missão.

Integrar um programa COBOL com uma API REST.

A documentação dizia apenas:

"Receber um JSON."

Somente isso.

Nenhuma explicação.

Nenhum diagrama.

Nenhuma pista.

Foi naquele momento que ele descobriu que o maior mistério do Mainframe moderno não era o COBOL.

Era o JSON.

Pegue seu café.

Hoje vamos abrir um dos arquivos mais secretos do Enterprise COBOL.


Quando o IBM Z Aprendeu um Novo Idioma

Durante décadas o Mainframe falava uma linguagem extremamente organizada.

Cada campo possuía tamanho fixo.

Cada byte tinha uma posição.

Cada registro obedecia um layout rígido.

Exemplo:

Cliente........30 bytes
Conta..........10 bytes
Saldo..........09 bytes

Nada podia sair do lugar.

Era como uma biblioteca onde todos os livros ocupavam exatamente a mesma prateleira.

Então surgiu a Internet.

Depois vieram smartphones.

Cloud.

Microsserviços.

Open Banking.

PIX.

Aplicativos.

Inteligência Artificial.

Todos falavam uma língua completamente diferente.

JSON.

Ao invés de posições fixas...

Possuíam nomes.

Ao invés de layouts...

Possuíam objetos.

Ao invés de registros...

Possuíam documentos.

Durante algum tempo muitos acreditaram que COBOL jamais conversaria naturalmente com esse novo mundo.

Estavam completamente enganados.


O Nascimento do JSON PARSE

A IBM resolveu o problema adicionando dois comandos revolucionários ao Enterprise COBOL:

JSON PARSE

e

JSON GENERATE

Essas duas instruções mudaram completamente a forma como aplicações COBOL se integram ao restante do mercado.

Hoje um programa escrito há quarenta anos pode conversar com uma aplicação Android, um sistema em Java, um microsserviço em Go, uma aplicação Python ou um modelo de Inteligência Artificial.

Sem precisar reinventar a roda.


O Grande Tradutor Invisível

Imagine um tradutor simultâneo.

Uma pessoa fala japonês.

Outra fala português.

O tradutor escuta.

Converte.

Entrega a mensagem.

É exatamente isso que o parser faz.

Ele recebe:

{
   "nome":"Maria",
   "idade":30
}

e transforma automaticamente em:

05 WS-NOME.
05 WS-IDADE.

Nenhuma linha extra de código.

Nenhum parser artesanal.

Nenhuma rotina gigantesca.


O Que Acontece Dentro do Enterprise COBOL?

Pouca gente sabe.

Mas internamente o compilador cria uma estrutura extremamente sofisticada.

Quando encontra:

JSON PARSE

ele gera código capaz de:

✔ analisar caractere por caractere;

✔ identificar objetos;

✔ validar aspas;

✔ converter números;

✔ interpretar arrays;

✔ localizar campos;

✔ detectar erros;

✔ copiar os valores para a Working-Storage.

Tudo isso acontece em microssegundos.


JSON PARSE WITH DETAIL

Aqui começamos a entrar na parte que muitos programadores nunca utilizam.

Imagine receber um JSON com erro.

Sem WITH DETAIL.

Você sabe apenas que falhou.

Com:

JSON PARSE WS-JSON

INTO WS-DADOS

WITH DETAIL

ON EXCEPTION

DISPLAY "ERRO"

END-JSON

o compilador produz informações muito mais ricas sobre o ponto exato da falha.

Isso facilita enormemente o diagnóstico em produção.

Em grandes bancos, localizar rapidamente o campo inválido pode significar minutos em vez de horas de investigação.

☕ Curiosidade Bellacosa: muitos incidentes de integração não são causados pelo COBOL, mas por mudanças discretas em contratos JSON feitos por equipes externas sem comunicação adequada.


NAME OF — Quando Dois Mundos Usam Nomes Diferentes

Imagine o seguinte cenário.

API:

customerName

COBOL:

CLIENTE-NOME

Os nomes não coincidem.

Em vez de alterar um copybook utilizado por dezenas de programas, o Enterprise COBOL permite realizar o mapeamento de nomes com recursos como NAME OF, preservando a estrutura interna da aplicação.

Isso é extremamente útil quando uma API segue convenções como camelCase e o ambiente Mainframe utiliza nomes tradicionais em maiúsculas.


SUPPRESS — O Segredo dos JSONs Elegantes

Imagine um cadastro.

Telefone

Email

Fax

Todos vazios.

Sem SUPPRESS.

{
   "telefone":"",
   "email":"",
   "fax":""
}

Com SUPPRESS.

{
}

Ou apenas:

{
   "nome":"Luke"
}

Arquivos menores.

Menos tráfego.

Mais desempenho.

Menor consumo de banda.

Em ambientes de alta escala, alguns poucos bytes economizados por mensagem representam milhões de bytes ao longo do dia.


COUNT IN — Descobrindo Quantos Objetos Foram Processados

Imagine receber uma lista de clientes.

[
...
]

Como saber quantos registros realmente foram convertidos?

Entra em cena:

COUNT IN

Ele informa quantos elementos foram efetivamente processados.

Extremamente útil para:

  • auditoria;

  • logs;

  • validação;

  • conferência de cargas;

  • integração batch.


CONVERTING — O Pequeno Mágico

Nem sempre dois sistemas utilizam os mesmos valores.

API:

true

COBOL:

"S"

Outro sistema:

1

Outro:

"ATIVO"

O recurso CONVERTING permite realizar essas transformações de forma controlada, reduzindo código repetitivo e centralizando regras de conversão.


Arrays Complexos — O Labirinto do Minotauro

É aqui que muitos iniciantes se perdem.

Observe:

Clientes

↓

Telefones

↓

Endereços

↓

Documentos

Objetos dentro de objetos.

Arrays dentro de arrays.

No COBOL isso é representado através de grupos e OCCURS.

CLIENTE

↓

ENDERECOS OCCURS

↓

TELEFONES OCCURS

O parser percorre cada nível da estrutura, preenchendo automaticamente as tabelas.

É como explorar um enorme arquivo de fichas organizado em gavetas, pastas e divisórias.


OCCURS DEPENDING ON

Nem sempre sabemos quantos registros existirão.

Hoje chegam cinco clientes.

Amanhã cinquenta.

Depois mil.

O OCCURS DEPENDING ON permite estruturas variáveis, mas exige atenção redobrada: o contador deve refletir corretamente a quantidade de elementos, caso contrário leituras incompletas ou acessos inválidos podem ocorrer.


O Fantasma do UTF-8

Existe um fantasma que assombra integrações.

Seu nome:

UTF-8.

O Mainframe tradicional trabalha naturalmente em EBCDIC.

Grande parte da Internet utiliza UTF-8.

Quando a conversão é esquecida...

acentos desaparecem.

Caracteres ficam ilegíveis.

Nomes tornam-se símbolos estranhos.

Antes de culpar o JSON, verifique sempre a codificação.

Esse detalhe já consumiu incontáveis horas de troubleshooting em ambientes corporativos.


O Castelo do z/OS Connect

Agora imagine o seguinte cenário.

Aplicativo.

Internet.

API REST.

z/OS Connect.

CICS.

COBOL.

DB2.

Esse é um dos caminhos mais comuns atualmente.

O z/OS Connect funciona como um diplomata.

Ele recebe JSON.

Traduz.

Entrega ao programa COBOL.

Depois faz exatamente o caminho inverso.

O desenvolvedor trabalha na lógica de negócio enquanto a infraestrutura cuida do protocolo.


CICS e JSON

Durante muito tempo o CICS falava principalmente COMMAREA.

Hoje ele também conversa utilizando:

CHANNEL.

CONTAINER.

JSON.

Isso permitiu criar aplicações muito maiores do que os antigos limites impostos por COMMAREA.

Além disso, o modelo de canais facilita integrações complexas e transporte de documentos maiores.


APIs REST — O Novo Correio do Mainframe

As APIs REST funcionam como um serviço postal moderno.

GET.

Buscar.

POST.

Criar.

PUT.

Atualizar.

DELETE.

Excluir.

O JSON é a carta.

O HTTP é o carteiro.

O COBOL continua sendo o especialista que decide o que fazer quando a carta chega.


O Caminho de Uma Transação

Imagine um PIX.

Aplicativo.

API.

Gateway.

z/OS Connect.

CICS.

JSON PARSE.

COBOL.

DB2.

JSON GENERATE.

Resposta.

Tudo isso pode acontecer em poucos milissegundos.

Enquanto você termina de piscar os olhos, milhares de mensagens semelhantes atravessaram esse caminho.


Segurança Nunca É Opcional

Nem todo JSON recebido deve ser considerado confiável.

Boas práticas incluem:

  • validar tamanho do payload;

  • tratar exceções com ON EXCEPTION;

  • inicializar estruturas antes do parse;

  • rejeitar campos inesperados quando necessário;

  • proteger informações sensíveis;

  • evitar registrar senhas, tokens ou números completos de cartões em logs.

Segurança começa antes mesmo da primeira linha de lógica de negócio.


Performance — O Mito do JSON Lento

Existe quem diga que JSON é lento.

Depende.

O parser nativo do Enterprise COBOL foi otimizado para esse trabalho.

Na maioria dos casos, o gargalo não está no processamento do JSON, mas na comunicação de rede, no acesso ao banco de dados ou em integrações externas.

Um bom desenho de aplicação, buffers bem dimensionados e estruturas adequadas fazem enorme diferença.


Armadilhas Que Todo Padawan Enfrenta

  • Buffer pequeno para armazenar o JSON.

  • Campos numéricos recebendo texto.

  • Datas em formatos diferentes.

  • Arrays maiores do que o OCCURS previsto.

  • Objetos opcionais não tratados.

  • Mudanças silenciosas em contratos de API.

  • Esquecimento da conversão EBCDIC ↔ UTF-8.

  • Logs excessivos em produção.

Reconhecer essas armadilhas cedo economiza muitas madrugadas de plantão.


O Checklist do Mestre Jedi do JSON

Antes de colocar uma aplicação em produção, pergunte:

  • O JSON foi validado?

  • Há tratamento ON EXCEPTION?

  • Os buffers suportam o maior payload esperado?

  • Os campos opcionais foram considerados?

  • A codificação está correta?

  • O contrato da API está documentado?

  • Os logs preservam a privacidade dos dados?

  • O desempenho foi testado com volumes reais?

Se todas as respostas forem "sim", você está muito mais próximo de uma implantação tranquila.


☕ Easter Egg Bellacosa

Nas antigas revistas de mistério noir dos anos 1950, sempre existia um personagem discreto que parecia apenas observar a história. No final, descobria-se que ele era a peça-chave de toda a investigação.

No universo do Mainframe moderno, o JSON desempenha um papel semelhante.

Ele raramente aparece nas manchetes. Quase ninguém comenta sobre ele em reuniões executivas. Porém, é esse "mensageiro silencioso" que leva ordens, saldos, cadastros, pagamentos, consultas e confirmações entre sistemas espalhados pelo planeta.

Da próxima vez que você abrir um aplicativo bancário e visualizar um saldo em segundos, lembre-se: em algum lugar do caminho, um programa COBOL pode ter recebido um JSON, transformado aquela mensagem em estruturas internas, consultado um banco de dados e respondido antes mesmo que você terminasse de tocar a tela do celular.


Conclusão — O Verdadeiro Mistério Nunca Foi o JSON

Quando os primeiros programadores COBOL surgiram, ninguém imaginava que décadas depois seus programas conversariam com smartphones, APIs REST, aplicações em nuvem e modelos de Inteligência Artificial.

Mas a essência permaneceu exatamente a mesma.

Receber dados.

Validar.

Processar.

Garantir integridade.

Responder com segurança.

O JSON não substituiu o COBOL.

Ele apenas abriu uma nova porta.

E, como todo bom investigador das antigas histórias noir descobriria, o segredo nunca esteve na porta.

O segredo sempre esteve em compreender o que existe do outro lado.

O Programador Padawan que domina JSON PARSE, JSON GENERATE, WITH DETAIL, NAME OF, SUPPRESS, COUNT IN, CONVERTING, arrays complexos e integrações com CICS e z/OS Connect deixa de ser apenas um mantenedor de sistemas legados. Ele se torna um tradutor entre dois mundos: a robustez do IBM Z e a velocidade do ecossistema digital moderno.

Enquanto bilhões de transações continuarem atravessando o planeta todos os dias, haverá espaço para profissionais capazes de unir tradição e inovação. E talvez esse seja o maior mistério do Mainframe: a tecnologia mais antiga em produção continua encontrando novas maneiras de conversar com o futuro.

quarta-feira, 11 de maio de 2022

Muito Além da Tartaruga Espiritual: Como a Segunda Temporada Mostra que Grandes Crises Exigem Cooperação, Arquitetura e Engenharia de Sistemas

 

Bellacosa Mainframe apresenta a segunda temporada de Tate no yusha no nariagari 

☕ Um Café no Bellacosa Mainframe

Tate no Yūsha no Nariagari Season 2 (盾の勇者の成り上がり Season 2)

Muito Além da Tartaruga Espiritual: Como a Segunda Temporada Mostra que Grandes Crises Exigem Cooperação, Arquitetura e Engenharia de Sistemas

"No Mainframe, os maiores incidentes nunca são resolvidos por um único programa. Eles exigem integração, coordenação e profissionais que saibam enxergar o sistema como um todo."


Ficha Técnica

Título original: 盾の勇者の成り上がり Season 2

Título internacional: The Rising of the Shield Hero Season 2

Baseado na obra de: Aneko Yusagi

Ilustrações (Light Novel): Seira Minami

Estúdio: Kinema Citrus (coprodução de animação com Dr. Movie)

Diretor: Masato Jinbo

Composição da série: Keigo Koyanagi

Trilha sonora: Kevin Penkin

Estreia: 6 de abril de 2022

Exibição: abril a junho de 2022

Episódios: 13


Gênero

  • Isekai

  • Fantasia

  • Dark Fantasy

  • Aventura

  • Drama

  • Ação

  • Política

  • Estratégia

  • RPG


Classificação

16 anos

Contém:

  • violência

  • guerra

  • conflitos políticos

  • perdas

  • manipulação

  • sofrimento psicológico


O Studio

A segunda temporada continuou sob responsabilidade da Kinema Citrus, mas contou com forte participação da Dr. Movie, estúdio sul-coreano conhecido por colaborar em grandes produções japonesas.

Visualmente a animação continua competente.

O maior problema esteve na adaptação.


Sinopse

Após derrotar a Igreja dos Três Heróis, surge uma ameaça completamente diferente.

Uma criatura colossal chamada Tartaruga Espiritual desperta.

Ela não é simplesmente um monstro.

É praticamente uma arma viva criada para proteger o equilíbrio do mundo.

Mas alguém está manipulando seu poder.

Naofumi precisa impedir uma catástrofe que ameaça milhões de vidas.


Resumo

A temporada adapta principalmente os arcos:

  • Spirit Tortoise

  • Outro Mundo

Ao contrário da primeira temporada, aqui a narrativa deixa de focar apenas na injustiça sofrida por Naofumi.

Agora ele já é reconhecido como herói.

O desafio muda.

Ele precisa agir como comandante.


História

A enorme Tartaruga Espiritual começa a destruir cidades inteiras.

Seu objetivo aparente é absorver almas.

Posteriormente descobre-se que tudo fazia parte do plano de Kyo Ethnina, um cientista de outro mundo que utiliza energia espiritual para aumentar seu próprio poder.

Naofumi derrota a criatura.

Depois atravessa um portal dimensional.

E passa a lutar em outro mundo completamente diferente.


Os Personagens

Naofumi

Mais maduro.

Mais calmo.

Agora assume papel semelhante ao de um arquiteto de sistemas.

Coordena equipes.

Distribui tarefas.

Analisa riscos.


Raphtalia

Recebe enorme desenvolvimento.

Sua independência cresce bastante.

Mostra que não depende apenas de Naofumi para ser forte.


Filo

Continua sendo o equilíbrio emocional da equipe.

Mesmo em momentos dramáticos, representa esperança.


Rishia Ivyred

Talvez a personagem que mais evolui.

Antes insegura.

Depois extremamente determinada.

Mostra que talento sem confiança dificilmente floresce.


Kizuna Kazeyama

Heroína da Caça.

Pertence ao outro mundo.

Rapidamente cria excelente parceria com Naofumi.

Seu estilo lembra administradores experientes que entendem que colaboração gera melhores resultados.


Kyo Ethnina

O principal antagonista.

Não luta apenas por força.

Ele acredita que conhecimento sem ética justifica qualquer experimento.

É um excelente exemplo do cientista brilhante que ignora as consequências.


O que esta temporada tem de diferente?

A primeira temporada era profundamente emocional.

A segunda é muito mais técnica.

Ela apresenta:

  • novos sistemas de magia;

  • outro universo;

  • novos heróis;

  • regras completamente diferentes;

  • mecânicas inéditas.

É quase como migrar de um Data Center IBM Z para uma arquitetura distribuída em nuvem.

As regras continuam existindo.

Mas funcionam de outra forma.


As Aventuras

Durante a temporada acompanhamos:

  • combate contra a Tartaruga Espiritual;

  • investigação sobre almas absorvidas;

  • batalha contra familiares gigantes;

  • viagem dimensional;

  • prisão de Raphtalia;

  • encontro com Kizuna;

  • exploração de outro mundo;

  • evolução de novas armas;

  • confronto final contra Kyo.

Cada arco introduz novas mecânicas e amplia o universo da série.


Temáticas

A segunda temporada fala muito menos sobre preconceito.

Seu foco passa a ser:

  • responsabilidade;

  • liderança;

  • trabalho em equipe;

  • estratégia;

  • ciência sem ética;

  • consequências do poder;

  • cooperação internacional.


As Mensagens Ocultas

1. Nenhum sistema é isolado

A Tartaruga Espiritual afeta todo o mundo.

Assim como um incidente em um Data Center pode afetar milhares de empresas.


2. Conhecimento sem ética destrói

Kyo representa a inteligência usada apenas para benefício próprio.

É o equivalente ao engenheiro que ignora segurança para atingir metas.


3. Grandes problemas exigem integração

Nenhum herói derrota a crise sozinho.

Assim como em TI:

  • Desenvolvimento

  • Infraestrutura

  • Segurança

  • Banco de Dados

  • Redes

  • Operações

precisam trabalhar juntos.


4. Liderança é distribuir responsabilidades

Naofumi deixa de resolver tudo sozinho.

Ele aprende a confiar na equipe.


Analogia Bellacosa Mainframe

Imagine um banco.

O ambiente principal continua funcionando.

Mas existe outro Data Center.

Outra arquitetura.

Outro conjunto de aplicações.

Outro banco de dados.

Outro protocolo.

Quando ocorre um desastre em um ambiente, é preciso integrar sistemas completamente diferentes.

É exatamente isso que Naofumi enfrenta ao chegar ao outro mundo.

Cada ambiente possui regras próprias, mas ambos precisam permanecer sincronizados para garantir a continuidade do serviço.


O que dividiu opiniões?

Grande parte dos fãs considerou que:

  • a adaptação condensou muitos capítulos;

  • personagens receberam menos desenvolvimento;

  • o arco da Tartaruga Espiritual foi acelerado;

  • algumas motivações ficaram superficiais.

Apesar disso, a trilha sonora de Kevin Penkin, a direção de arte e os episódios finais foram amplamente elogiados.


Impacto Cultural

A segunda temporada manteve a franquia em destaque, mas recebeu avaliações mais mistas do que a primeira devido ao ritmo acelerado da adaptação. Ainda assim, expandiu o universo da obra ao introduzir um segundo mundo, novos heróis e diferentes sistemas de poder, preparando o terreno para os acontecimentos da terceira temporada e mantendo o interesse da comunidade de fãs.


Nota Bellacosa Mainframe

CritérioNota
História⭐⭐⭐⭐☆ (8,0/10)
Desenvolvimento de personagens⭐⭐⭐⭐☆ (7,8/10)
Construção do mundo⭐⭐⭐⭐⭐ (9,5/10)
Ação⭐⭐⭐⭐☆ (8,5/10)
Trilha sonora⭐⭐⭐⭐⭐ (10/10)
Ritmo⭐⭐⭐☆☆ (6,8/10)
Originalidade⭐⭐⭐⭐⭐ (9,0/10)

Veredito Bellacosa Mainframe

A segunda temporada não alcança o impacto emocional da primeira, mas amplia significativamente a escala da narrativa. Ela troca a jornada de sobrevivência por uma história sobre integração de sistemas, cooperação entre equipes e liderança em tempos de crise. Para quem trabalha com IBM Z, DevOps ou arquitetura corporativa, a maior lição é clara: resolver incidentes complexos exige visão sistêmica, colaboração e responsabilidade — qualidades muito mais valiosas do que apenas poder bruto.


terça-feira, 10 de maio de 2022

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Erros de Programação, Git, Extensões de Arquivos e Inteligência Artificial para Construir Sistemas que Sobrevivem ao Tempo

 

Bellacosa Mainframe emtemdemdo erros

☕ Um Café no Bellacosa Mainframe

Muito Além da Sintaxe

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Erros de Programação, Git, Extensões de Arquivos e Inteligência Artificial para Construir Sistemas que Sobrevivem ao Tempo

"Aprender uma linguagem é importante. Aprender como os computadores pensam é o que realmente transforma um programador em um engenheiro de software."

Existe uma frase muito conhecida entre desenvolvedores experientes:

"Programar não é escrever código. Programar é resolver problemas."

E, curiosamente, quanto mais experiência um profissional adquire, menos tempo ele passa escrevendo código e mais tempo ele dedica a entender erros, interpretar logs, analisar requisitos, versionar alterações, revisar código, automatizar processos e estudar novas tecnologias.

Esse é um choque para muitos iniciantes.

O Programador COBOL Padawan costuma imaginar que a carreira será composta principalmente por escrever comandos MOVE, IF, PERFORM, READ, WRITE e EXEC SQL.

Mas basta entrar em um grande banco, uma seguradora ou uma empresa aérea para descobrir uma realidade completamente diferente.

Ali existem milhares de programas.

Milhões de linhas de código.

Centenas de desenvolvedores.

Diversas linguagens convivendo lado a lado.

COBOL.

PL/I.

Assembler.

Java.

Python.

JavaScript.

Go.

Rust.

SQL.

JCL.

REXX.

E, cada vez mais, Inteligência Artificial auxiliando todas essas equipes.

Nesse ambiente, conhecer apenas a sintaxe de uma linguagem é como saber dirigir um carro sem entender placas de trânsito, mecânica ou regras de circulação.

É por isso que as cinco listas apresentadas anteriormente representam muito mais do que simples curiosidades.

Na prática, elas resumem alguns dos pilares da Engenharia de Software moderna.

Vamos conversar sobre cada um deles.

Pegue seu café.


O computador nunca faz "o que você quis"

Uma das maiores descobertas de todo programador é perceber que computadores não possuem bom senso.

Eles fazem exatamente aquilo que foi programado.

Nem mais.

Nem menos.

Se existir uma pequena falha lógica, o computador executará essa falha com perfeição matemática.

É por isso que um erro aparentemente insignificante pode movimentar milhões de reais incorretamente.

No IBM Z isso acontece diariamente.

Não porque o mainframe seja ruim.

Muito pelo contrário.

Ele é extremamente confiável.

O problema sempre foi — e sempre será — o ser humano.


Existem erros... e existem erros

Quando alguém começa a aprender programação, normalmente acredita que erro significa apenas aquela mensagem vermelha que aparece na tela.

Na realidade existem diversas categorias.

Cada uma possui causas completamente diferentes.

Cada uma exige uma forma diferente de investigação.

É exatamente isso que diferencia um programador júnior de um engenheiro de software.


Syntax Error

O primeiro erro da carreira.

O compilador simplesmente não consegue entender o que você escreveu.

Imagine escrever em português:

Eu mercado fui ontem.

As palavras existem.

Mas a estrutura está incorreta.

O compilador pensa exatamente assim.

Em COBOL:

IF SALDO > 100
DISPLAY "OK"

Faltou o END-IF.

O compilador interrompe tudo.

Nada será executado.

Esse tipo de erro normalmente é simples.

O compilador informa linha, coluna e descrição.


Runtime Error

Agora a situação muda.

O programa compilou perfeitamente.

Foi para produção.

Começou a executar.

Depois...

ABEND.

No universo Mainframe, poucos termos assustam tanto quanto esse.

Um ABEND (Abnormal End) significa que alguma condição inesperada ocorreu durante a execução.

Alguns exemplos clássicos:

S0C1

S0C4

S0C7

S0CB

S322

SB37

SE37

SD37

Cada um deles conta uma história diferente.

Por exemplo...

Dividir por zero em Python gera:

ZeroDivisionError

No COBOL, dependendo do contexto, isso normalmente resulta em um S0CB.

Já acessar memória inválida pode gerar um S0C4, um dos ABENDs mais conhecidos entre programadores COBOL.

Por isso, aprender apenas a programar não basta.

É necessário aprender a investigar.

Ler dumps.

Interpretar mensagens.

Consultar SYSOUT.

Analisar o JES.

Entender SDSF.

Essa habilidade vale ouro.


O erro mais perigoso não gera mensagem

Esse é o famoso Logical Error.

O programa funciona.

Não apresenta erro.

Não gera dump.

Não gera ABEND.

Mas calcula errado.

Imagine um banco calculando juros de 1,59% quando deveria calcular 1,95%.

O programa executa normalmente.

Nenhum operador percebe.

Nenhum monitor dispara alerta.

Somente semanas depois alguém descobre um prejuízo milionário.

Esse tipo de erro explica por que testes automatizados, revisão de código e homologação são tão importantes.


Tipos de dados existem por um motivo

Quando o COBOL foi criado, muitos acreditavam que sua enorme quantidade de definições era exagerada.

Hoje entendemos que não era.

Cada tipo de dado existe para evitar erros.

Em Python podemos escrever:

idade = "30"

Visualmente parece correto.

Mas...

idade + 5

gera erro.

Em COBOL:

PIC 9(03)

é completamente diferente de

PIC X(03)

Essa rigidez é justamente o que torna sistemas bancários tão confiáveis.


Overflow e Underflow

Imagine um campo:

PIC 999

Ele aceita apenas três dígitos.

Se alguém tentar gravar:

1000

algo precisa acontecer.

Dependendo da situação ocorrerá truncamento, exceção ou erro de execução.

Já o Underflow acontece principalmente em cálculos científicos quando números extremamente pequenos perdem precisão.

Embora seja raro em aplicações comerciais, ele é muito comum em computação de alto desempenho e modelos de Inteligência Artificial.


Arquivos são muito mais importantes do que parecem

Outro assunto frequentemente ignorado pelos iniciantes são as extensões de arquivos.

".py"

".java"

".json"

".xml"

".sql"

Muitos acreditam que isso serve apenas para organizar arquivos.

Na realidade, cada extensão representa um ecossistema inteiro.

Quando você vê um arquivo ".java", imediatamente sabe que existe uma JVM envolvida.

Ao encontrar um ".sql", entende que haverá interação com um banco de dados.

Um ".json" normalmente representa troca de informações entre sistemas.

No IBM Mainframe a situação é um pouco diferente.

Grande parte do código está armazenada em membros de PDS ou PDSE.

Não existe necessariamente uma extensão visível.

Mesmo assim, cada biblioteca possui um propósito muito bem definido.

Um membro pode conter COBOL.

Outro JCL.

Outro PROC.

Outro REXX.

Outro COPYBOOK.

Outro DCLGEN.

A organização continua existindo.

Apenas mudou de formato.


O mundo moderno conversa em JSON

Durante décadas o XML dominou integrações corporativas.

SOAP.

Web Services.

Mensagens estruturadas.

Hoje a maior parte das APIs REST utiliza JSON.

Exemplo:

{
   "cliente":"Maria",
   "saldo":3500.90
}

É simples.

Leve.

Legível.

O COBOL moderno já possui suporte para JSON PARSE e JSON GENERATE, permitindo que programas tradicionais conversem diretamente com aplicações web e microsserviços.

Isso demonstra como o ecossistema IBM Z continua evoluindo.


Git mudou a Engenharia de Software

Antigamente, equipes compartilhavam código copiando arquivos.

Imagine dez programadores alterando o mesmo programa COBOL.

Caos.

Hoje isso seria impensável.

O Git resolveu esse problema.

Na prática, o Git funciona como uma máquina do tempo.

Cada Commit registra exatamente o que mudou.

Quem mudou.

Quando mudou.

E por quê.

Se um erro aparecer meses depois, basta consultar o histórico.

Essa rastreabilidade é indispensável em ambientes regulados, como bancos e seguradoras.


Commit não é backup

Esse é um erro comum entre iniciantes.

Commit significa registrar uma alteração lógica.

Um bom commit deve representar uma unidade de trabalho.

Exemplo ruim:

Correções

Exemplo excelente:

Corrige cálculo de IOF para operações acima de R$ 50.000

Percebe a diferença?

O histórico passa a contar uma história.


Branches são universos paralelos

Imagine que a produção está funcionando.

Você precisa desenvolver uma nova funcionalidade.

Não faz sentido quebrar o código principal.

Então cria-se uma Branch.

Ali você trabalha livremente.

Quando tudo estiver pronto, ocorre o Merge.

Essa ideia revolucionou o desenvolvimento colaborativo.


Conflitos fazem parte da profissão

Todo desenvolvedor, cedo ou tarde, encontrará um Merge Conflict.

Isso acontece quando duas pessoas alteram a mesma região do mesmo arquivo.

O Git não consegue decidir automaticamente.

Então pergunta ao ser humano.

Resolver conflitos é uma habilidade importante.

Não é um sinal de incompetência.

É consequência natural do trabalho em equipe.


O Git também chegou ao Mainframe

Durante décadas o versionamento em ambientes IBM Z foi realizado por ferramentas como Endevor, Changeman, Librarian, Panvalet e SCLM.

Hoje o cenário mudou.

Zowe.

Git.

GitHub.

GitLab.

Azure DevOps.

Pipeline CI/CD.

Tudo isso já faz parte da realidade do IBM Z.

O desenvolvedor COBOL moderno trabalha tanto no ISPF quanto no VS Code.


Inteligência Artificial começa pelos dados

Quando ouvimos falar em IA, pensamos imediatamente em ChatGPT.

Mas antes de existir qualquer modelo existe algo muito mais importante.

Dados.

Sem dados não existe aprendizado.

É por isso que Machine Learning começa pelo Dataset.

Imagine ensinar uma criança a reconhecer gatos.

Você mostra milhares de fotografias.

Ela aprende padrões.

Modelos de IA fazem exatamente isso.


Features são as pistas

Suponha um sistema bancário que detecta fraude.

Cada operação possui informações como:

Valor.

Cidade.

Horário.

Dispositivo.

Cliente.

Canal.

Cada uma dessas características recebe o nome de Feature.

Quanto melhores forem as Features, melhor tende a ser o modelo.


Labels representam a resposta correta

Em aprendizado supervisionado existe um professor.

Cada exemplo já possui a resposta.

Operação fraudulenta?

Sim.

Não.

Essas respostas são chamadas de Labels.

O algoritmo tenta aprender a relação entre Features e Labels.


Treinar não é decorar

Aqui surge um dos conceitos mais importantes da IA.

Overfitting.

Imagine um aluno que decorou todas as respostas da apostila.

Na prova, qualquer pergunta diferente o confunde.

Foi exatamente isso que aconteceu com o modelo.

Ele decorou.

Não aprendeu.

No extremo oposto está o Underfitting.

O aluno nem conseguiu compreender o conteúdo.

O modelo é simples demais.

Também falha.

O objetivo sempre é encontrar o equilíbrio.


Accuracy nem sempre significa qualidade

Imagine um banco com um milhão de operações.

Apenas mil são fraudulentas.

Um algoritmo responde sempre:

Não é fraude.

Resultado:

999 mil acertos.

Accuracy de 99,9%.

Parece excelente.

Mas encontrou exatamente zero fraudes.

Por isso profissionais utilizam outras métricas.

Precision.

Recall.

F1-Score.

ROC-AUC.

Cada métrica responde uma pergunta diferente.


Redes neurais não pensam

Esse é um dos maiores equívocos atuais.

Uma Rede Neural não possui consciência.

Ela ajusta milhões ou bilhões de pesos matemáticos.

O comportamento impressionante dos grandes modelos de linguagem surge da enorme quantidade de dados, parâmetros e capacidade computacional.

Ainda assim, continuam sendo modelos estatísticos.


O futuro do COBOL não é competir com a IA

É trabalhar junto dela.

Hoje um desenvolvedor pode utilizar IA para:

  • explicar programas COBOL antigos;

  • gerar documentação técnica;

  • criar testes automatizados;

  • sugerir refatorações;

  • converter layouts de arquivos;

  • produzir exemplos em Java ou Python;

  • revisar SQL;

  • explicar ABENDs;

  • auxiliar na escrita de JCL e REXX;

  • acelerar a compreensão de sistemas legados.

A IA não substitui o conhecimento do negócio.

Ela amplia a produtividade de quem já conhece o ambiente.


O verdadeiro diferencial continua sendo o raciocínio

Ferramentas mudam.

Linguagens surgem.

Frameworks desaparecem.

Mas alguns fundamentos permanecem praticamente inalterados desde os primórdios da computação.

Entender algoritmos.

Conhecer estruturas de dados.

Interpretar erros.

Versionar corretamente.

Escrever código legível.

Documentar alterações.

Testar antes de entregar.

Compreender o domínio do negócio.

Esses princípios continuam válidos para COBOL, Java, Python, Go, Rust, JavaScript ou qualquer outra tecnologia.


O Programador COBOL Padawan e a Jornada para se Tornar um Mestre

Todo grande profissional já foi iniciante.

Ninguém nasce sabendo interpretar um S0C4, resolver um conflito de Git, entender uma métrica de Machine Learning ou projetar uma arquitetura distribuída.

Essas habilidades são construídas com estudo, prática e curiosidade.

O Programador COBOL Padawan deve enxergar cada erro como uma oportunidade de aprendizado, cada commit como um registro da sua evolução, cada extensão de arquivo como a porta de entrada para um novo ecossistema e cada conceito de Inteligência Artificial como uma ferramenta que amplia sua capacidade de resolver problemas.

No Bellacosa Mainframe, costumamos dizer que o objetivo não é formar apenas programadores que saibam escrever código. Queremos formar profissionais capazes de compreender sistemas inteiros, conversar com equipes multidisciplinares, integrar tecnologias clássicas e modernas e tomar decisões técnicas conscientes.

A jornada começa com um simples DISPLAY "HELLO WORLD".

Depois evolui para programas COBOL, JCLs, consultas SQL, integrações REST, pipelines DevOps, versionamento com Git, observabilidade, automação e, mais recentemente, Inteligência Artificial aplicada ao desenvolvimento.

O segredo nunca foi decorar comandos.

O segredo é compreender os fundamentos que atravessam gerações de tecnologias.

Quem domina esses fundamentos consegue aprender qualquer linguagem, adaptar-se a qualquer plataforma e continuar relevante mesmo quando novas ferramentas surgem.

E talvez essa seja a maior lição desta conversa: o COBOL Padawan que aprende a pensar como engenheiro de software não fica preso ao passado; ele usa a solidez do legado para construir o futuro.

Porque, no fim das contas, linguagens mudam, frameworks envelhecem, bibliotecas são substituídas e paradigmas evoluem. Mas a capacidade de analisar problemas, entender sistemas complexos e entregar soluções confiáveis continuará sendo o maior patrimônio de qualquer profissional de tecnologia.

Então, da próxima vez que encontrar uma mensagem de erro, criar uma nova branch, analisar um arquivo JSON ou ouvir falar de Machine Learning, lembre-se: você não está estudando assuntos isolados. Está construindo a base que sustentará toda a sua carreira como desenvolvedor.

E essa é uma jornada que vale cada linha de código.

segunda-feira, 9 de maio de 2022

GIT - O Que Todo Programador COBOL Padawan Precisa Saber Sobre Controle de Versão Profissional na Era da Inteligência Artificial, DevOps e IBM Mainframe

 

Bellacosa Mainframe muito alem do git commit

☕ Um Café no Bellacosa Mainframe

Git Muito Além do git commit

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Controle de Versão Profissional na Era da Inteligência Artificial, DevOps e IBM Mainframe

"Existe uma enorme diferença entre saber usar comandos do Git e compreender como o Git realmente pensa. É exatamente essa diferença que separa um programador que apenas grava código de um engenheiro de software capaz de colaborar em projetos globais."


Introdução

Recentemente encontrei uma imagem bastante interessante intitulada "Top 20 Git Commands Every Developer Should Know". À primeira vista, ela parece apenas mais um resumo para consulta rápida.

Ela lista comandos como:

  • git init

  • git clone

  • git add

  • git commit

  • git push

  • git pull

e muitos outros.

Para um desenvolvedor iniciante, essa imagem parece representar praticamente todo o universo do Git.

Mas existe um detalhe importante.

Ela mostra o volante, o acelerador e o freio.

Ela não mostra o motor.

E quem trabalha com sistemas críticos — especialmente quem vem do universo IBM Mainframe — sabe que entender somente os comandos nunca foi suficiente.

No mundo do z/OS não basta decorar:

IEFBR14

É preciso entender:

  • JES2

  • Address Space

  • Dispatching

  • Storage

  • Dataset Catalog

  • VSAM

  • RACF

  • SMF

  • WLM

Da mesma forma, no Git não basta decorar comandos.

É preciso entender a arquitetura.

Hoje vamos tomar um café e mergulhar no funcionamento interno do Git.


Git não é apenas um programa

O Git é um Sistema Distribuído de Controle de Versão (Distributed Version Control System - DVCS).

Essa definição parece simples.

Mas ela muda completamente a forma como o desenvolvimento acontece.

Antes do Git existiam ferramentas como:

  • CVS

  • SourceSafe

  • SVN

Todas eram centralizadas.

Imagine um servidor.

Servidor

     Projeto

Todos os desenvolvedores dependiam dele.

Se o servidor parasse...

Ninguém trabalhava.

Se a rede caísse...

Ninguém fazia commit.


O Git mudou completamente essa arquitetura

Quando você executa:

git clone

Você não baixa apenas os arquivos.

Você baixa:

  • todos os commits

  • todas as branches

  • todas as tags

  • todo o histórico

Na prática, você cria um espelho completo do repositório.

É como se cada desenvolvedor carregasse um mini GitHub dentro do notebook.


Fazendo uma analogia com o Mainframe

Imagine um enorme PDS onde vivem todos os programas COBOL.

Agora imagine que cada desenvolvedor possui uma cópia completa daquele PDS, incluindo todas as versões desde a criação do sistema.

É exatamente isso que o Git faz.

Só que muito melhor.


A pasta mais importante do projeto

Quando executamos:

git init

Algo aparentemente simples acontece.

É criada uma pasta escondida.

.git

Muitos iniciantes ignoram essa pasta.

Grande erro.

É nela que mora todo o Git.

Se ela desaparecer...

O histórico desaparece.

Os commits desaparecem.

As branches desaparecem.

As tags desaparecem.

O projeto volta a ser apenas uma pasta comum.


O que existe dentro da pasta .git?

Normalmente encontramos algo parecido com isto:

.git

objects

refs

HEAD

config

hooks

logs

index

packed-refs

Cada item possui uma função específica.


objects

É o verdadeiro banco de dados do Git.

Tudo fica aqui.

Arquivos.

Commits.

Branches.

Trees.

Tags.

Tudo.


refs

São os ponteiros.

Eles dizem onde cada branch está.


HEAD

É o famoso ponteiro atual.

Sempre indica onde você está trabalhando.


config

Contém toda configuração local.

Usuário.

Email.

Remotos.

Aliases.


hooks

Automação.

Podemos executar scripts antes de:

  • commit

  • push

  • merge

Muito usado em DevOps.


O Git não salva diferenças

Essa talvez seja a maior surpresa para quem começa.

Muitos acreditam que o Git grava apenas as linhas modificadas.

Não.

Ele trabalha principalmente com snapshots.

Imagine um diretório.

Projeto

Programa1.cbl

Programa2.cbl

JCL1.jcl

README.md

Quando fazemos:

git commit

O Git registra um retrato completo daquele momento.

Como uma fotografia.

Não apenas um patch.

Isso torna a recuperação extremamente eficiente.


Os quatro tipos de objetos do Git

O banco interno do Git possui apenas quatro tipos fundamentais.

Blob

Representa o conteúdo de um arquivo.

Não conhece nomes.

Não conhece diretórios.

Conhece apenas bytes.


Tree

Organiza os blobs.

Funciona como um diretório.


Commit

Liga uma árvore ao histórico.

Contém:

  • autor

  • data

  • mensagem

  • commit anterior


Tag

Marca um commit especial.

Normalmente versões:

v1.0

v2.0

Release-2026

SHA: a identidade única de tudo

Cada objeto recebe um hash.

Exemplo:

c83f92b15c4...

Esse hash é calculado sobre o conteúdo.

Se um único byte mudar...

Todo o hash muda.

Essa característica garante integridade.


Os três estados dos arquivos

Esse é provavelmente o conceito mais importante do Git.

Todo arquivo percorre três etapas.

Working Directory

↓

Staging Area

↓

Repository

Working Directory

É onde editamos.

Abrimos o COBOL.

Mudamos um SELECT.

Alteramos um PERFORM.

Ainda não existe histórico.


Staging Area

É uma área intermediária.

O comando:

git add

Não grava nada.

Ele apenas prepara.

É como colocar documentos sobre a mesa antes de arquivá-los.


Repository

Somente quando executamos:

git commit

O histórico realmente nasce.


Git Status

Se existisse apenas um comando obrigatório seria:

git status

Ele responde perguntas como:

  • O que mudou?

  • O que será enviado?

  • O que ainda não entrou no commit?

Executar esse comando diversas vezes ao longo do dia é uma excelente prática.


Git Add

Existe uma diferença enorme entre:

git add arquivo.cbl

e

git add .

O primeiro adiciona apenas um arquivo.

O segundo adiciona praticamente tudo.

Isso inclui arquivos temporários.

Logs.

Arquivos de configuração.

Até senhas esquecidas.

Daí nasce a importância do:

.gitignore

Git Ignore

Imagine esquecer dentro do projeto:

senha.txt

backup.zip

log.txt

database.db

Sem o .gitignore, tudo isso pode ir para o repositório.

Alguns vazamentos famosos de credenciais ocorreram exatamente por causa disso.


Commits são sua documentação

Existe um velho hábito ruim.

Update

Outro.

Correções

Outro.

Mudanças

Meses depois...

Ninguém sabe o que foi alterado.

Uma boa mensagem explica a intenção.

Por exemplo:

Valida CPF antes da gravação no DB2

ou

Corrige cálculo do IOF para operações acima de R$ 50.000

Muito mais útil.


Branches: linhas paralelas de desenvolvimento

Imagine um banco.

Enquanto uma equipe trabalha no PIX...

Outra trabalha no Open Finance.

Outra corrige produção.

Tudo ao mesmo tempo.

Isso só é possível porque existem branches.

main

├── feature-pix

├── feature-openfinance

└── hotfix

Cada equipe trabalha isoladamente.


Merge

Quando uma funcionalidade termina:

feature-pix

ela precisa voltar para:

main

É aqui que entra o:

git merge

Ele une dois históricos.


Conflitos

Imagine dois desenvolvedores alterando a mesma linha.

Um escreve:

MOVE ZERO TO WS-TOTAL.

Outro escreve:

MOVE WS-VALOR TO WS-TOTAL.

Quem está certo?

O Git não decide.

Ele apresenta:

<<<<<<<
=======
>>>>>>>

E cabe ao desenvolvedor resolver.


Fetch versus Pull

Muitos iniciantes acreditam que são iguais.

Não são.

git fetch

Baixa novidades.

Mas não altera seu trabalho.

Já:

git pull

Baixa e integra imediatamente.

É praticamente:

fetch

+

merge

Em projetos críticos, muitos profissionais preferem primeiro:

git fetch

Analisar.

Depois integrar.


Push

Sem ele ninguém verá seu trabalho.

git push

Envia seus commits ao servidor.

É a promoção do desenvolvimento local para o repositório compartilhado.


Git Diff

Antes de qualquer commit execute:

git diff

Você verá exatamente:

-

+

Tudo que será enviado.

Isso evita inúmeros erros.


Git Stash

Imagine este cenário.

Você está desenvolvendo uma API.

Surge uma emergência em produção.

Você ainda não pode fazer commit.

O que fazer?

git stash

Ele guarda temporariamente tudo.

Depois:

git stash pop

Seu trabalho retorna exatamente como estava.


Git Reset

Esse comando merece respeito.

Especialmente:

git reset --hard

Ele pode apagar alterações locais sem possibilidade simples de recuperação.

Não é um comando para testar.

É um comando para compreender profundamente antes de usar.


O verdadeiro poder das branches

No Git, uma branch é extremamente leve.

Ela não copia o projeto.

Ela cria apenas um ponteiro.

Por isso podemos criar dezenas ou centenas delas.


O Git e o DevOps

Hoje praticamente toda pipeline utiliza Git.

Por exemplo:

Commit

↓

GitHub

↓

GitHub Actions

↓

Build

↓

Testes

↓

Deploy

↓

Produção

Sem Git praticamente não existe DevOps moderno.


GitHub não é Git

Outro erro muito comum.

Git é uma tecnologia.

GitHub é um serviço.

Também existem:

  • GitLab

  • Bitbucket

  • Azure DevOps

  • Gitea

  • Forgejo

Todos utilizam Git.


Git e Inteligência Artificial

Ferramentas como:

  • GitHub Copilot

  • ChatGPT

  • Claude

  • Gemini

podem escrever código.

Mas todas dependem de algo extremamente importante.

Histórico.

Contexto.

Versionamento.

Quando uma IA gera uma alteração, ela precisa ser rastreável.

Quem alterou?

Quando?

Por quê?

Qual problema resolveu?

Git responde todas essas perguntas.


Git no universo IBM Mainframe

Durante muitos anos o desenvolvimento Mainframe utilizou ferramentas como:

  • Endevor

  • Changeman

  • Librarian

  • Panvalet

Hoje muitas empresas estão integrando esses ambientes ao Git.

Isso permite:

  • CI/CD

  • Pull Requests

  • Code Review

  • Integração com Jenkins

  • GitHub Actions

  • Azure DevOps

  • IBM Dependency Based Build (DBB)

  • Zowe CLI

  • VS Code

  • OpenShift

  • Ansible

O código COBOL continua executando no IBM Z, mas o ciclo de desenvolvimento passa a seguir práticas modernas de engenharia de software.


Git para um COBOL Padawan

Se você está iniciando na programação COBOL, encare o Git como uma habilidade tão importante quanto aprender:

  • IF

  • PERFORM

  • EVALUATE

  • READ

  • WRITE

  • EXEC SQL

  • CICS LINK

Hoje um profissional que domina apenas a linguagem perde competitividade.

As empresas procuram desenvolvedores que também entendam de colaboração, automação, revisão de código e integração contínua.


Boas práticas para o dia a dia

Algumas recomendações fazem enorme diferença:

  • Faça commits pequenos e frequentes.

  • Cada commit deve representar uma única alteração lógica.

  • Escreva mensagens claras e objetivas.

  • Nunca desenvolva diretamente na branch main.

  • Revise as mudanças com git diff antes de cada commit.

  • Consulte git status constantemente.

  • Configure um .gitignore adequado ao seu projeto.

  • Prefira git fetch quando quiser analisar alterações antes de integrá-las.

  • Evite git reset --hard sem compreender totalmente suas consequências.

  • Utilize Pull Requests para revisão de código e compartilhamento de conhecimento.


Conclusão

O Git é muito mais do que uma coleção de comandos. Ele representa uma mudança de paradigma na forma como construímos software, promovendo colaboração, rastreabilidade e segurança. Para o programador COBOL Padawan, dominar essa ferramenta significa conectar décadas de experiência em sistemas corporativos às práticas modernas de DevOps, integração contínua e desenvolvimento assistido por Inteligência Artificial.

Assim como aprender JCL vai muito além de decorar //JOB e //EXEC, aprender Git vai muito além de executar git add, git commit e git push. O verdadeiro diferencial está em compreender sua arquitetura interna, seus objetos, seus fluxos de trabalho e a filosofia que sustenta um dos projetos de software mais influentes da história.

No universo Bellacosa Mainframe, o Git não substitui a disciplina que sempre caracterizou o desenvolvimento em IBM Z — ele a amplia. Ele oferece mecanismos para preservar conhecimento, facilitar auditorias, permitir revisões estruturadas e integrar aplicações legadas a pipelines modernas de entrega contínua. Em uma era em que a Inteligência Artificial acelera a escrita de código, o Git continua sendo a memória confiável do projeto, registrando cada decisão técnica e garantindo que a evolução do software seja transparente, reproduzível e segura.

O conselho final para todo COBOL Padawan é simples: não estude apenas os comandos. Estude os conceitos. Entenda como o Git pensa. Quando isso acontecer, você deixará de ser apenas um usuário da ferramenta e passará a utilizá-la como um verdadeiro engenheiro de software, preparado para atuar tanto em aplicações modernas quanto nos ambientes críticos que movimentam bancos, seguradoras, governos e grandes corporações ao redor do mundo. Afinal, tecnologias mudam, linguagens evoluem, mas a capacidade de controlar, compreender e colaborar sobre o código continuará sendo uma das competências mais valiosas da engenharia de software.

domingo, 8 de maio de 2022

Os Erros Invisíveis que Destroem um Projeto Antes Mesmo da Primeira Linha de Código

Bellacosa Mainframe e os erros invisivei que destroem um projeto



☕ Um Café no Bellacosa Mainframe

Os Erros Invisíveis que Destroem um Projeto Antes Mesmo da Primeira Linha de Código

"Arquitetura não é desenhar caixas e setas. É antecipar problemas que ainda não aconteceram."

Uma arquitetura pode parecer perfeita em um PowerPoint.

Microservices...
Docker...
Kubernetes...
Event Streaming...
Kafka...
REST...
GraphQL...
Cloud Native...

Tudo muito bonito.

Até o primeiro milhão de usuários.

Até o primeiro pico de Black Friday.

Até o primeiro deadlock.

Até a primeira perda de dados.

É nesse momento que aparecem os erros invisíveis.


1. Ignorar Consistência dos Dados

O erro

Muitos iniciantes acreditam que:

"Eventual Consistency resolve tudo."

Não resolve.

Consistência é uma decisão de negócio.

Não tecnológica.


Exemplo bancário

Imagine uma transferência.

Conta A
Saldo = 1000

↓

Transferir 900

↓

Conta B

Se um serviço atualizar a Conta A...

...e outro atualizar a Conta B alguns segundos depois...

Durante esses segundos:

Conta A = 100

Conta B = 0

O dinheiro "sumiu".

Ou pior...

Uma nova consulta pode permitir outra transferência.

Resultado:

Saldo negativo.


Quando Eventual Consistency funciona

Excelente para:

  • Feed do Instagram

  • Likes

  • Comentários

  • Catálogo de produtos

  • Estatísticas

Alguns segundos de atraso não importam.


Quando NÃO funciona

Nunca utilize em:

  • PIX

  • Bancos

  • Bolsa de Valores

  • Controle de Estoque

  • Reserva de assentos

  • Sistemas médicos

Nestes casos:

Strong Consistency

é obrigatória.


Mainframe

DB2 usa:

  • Commit

  • Rollback

  • Locking

  • Isolation Levels

Há décadas.

Muito antes da moda dos bancos NoSQL.


2. Não Definir Limites do Sistema

Este talvez seja o maior erro.

Imagine uma empresa.

Quem faz RH?

Quem faz Financeiro?

Quem faz Compras?

Agora imagine todos fazendo tudo.

É exatamente isso que acontece em sistemas mal divididos.


Sintoma

Um módulo chamado:

CustomerService

faz:

  • login

  • pagamento

  • envio de email

  • cadastro

  • estoque

  • geração de nota

  • relatórios

Virou um monólito.


Consequência

Qualquer alteração:

quebra tudo.


Boa arquitetura

Cada domínio possui responsabilidade única.

Order Service

Inventory

Billing

Notification

Shipping

Cada um evolui sozinho.


Conceito

Domain Driven Design

Bounded Context

Single Responsibility

Todos nascem desse princípio.


3. Ignorar Latência

Usuários não medem CPU.

Eles medem tempo.


Exemplo

Pesquisa Google

300 ms

Parece instantânea.

Agora imagine:

4 segundos.

Você já fechou a página.


Latência acumulada

Cliente

API Gateway

Auth

Inventory

Recommendation

Payment

Shipping

DB

Cada chamada adiciona:

20 ms

40 ms

80 ms

100 ms

...

No final:

1 segundo

Sem perceber.


Lei importante

Uma arquitetura com 20 microsserviços pode ser MAIS LENTA que um monólito.


Mainframe

Por isso CICS sempre priorizou:

  • poucas chamadas

  • processamento local

  • transações curtas


4. Subestimar a Carga

Outro erro clássico.

O sistema funciona perfeitamente...

...com 50 usuários.

Mas na Black Friday:

200 mil usuários

Tudo trava.


Perguntas importantes

Quantos usuários?

Quantas requisições?

Picos?

Sazonalidade?

Crescimento anual?


Capacidade

Sempre calcule:

Requests/second

Transactions/minute

IOPS

CPU

RAM

Storage

Network

Exemplo

Sistema:

1000 req/s

Promoção:

15000 req/s

Resultado:

Timeout.

Fila.

Erro 500.


5. Fazer Tudo Sincronamente

Imagine um e-commerce.

Cliente compra.

Sistema:

processa pagamento

envia email

gera nota

atualiza estoque

gera cashback

envia SMS

atualiza BI

Tudo esperando.

O usuário fica olhando.


Melhor abordagem

Pagamento

Resposta imediata

Eventos

Email

Nota

BI

Analytics

Machine Learning

Tudo assíncrono.


Tecnologias

Kafka

RabbitMQ

IBM MQ

SQS

Azure Service Bus

Pulsar


Benefícios

Escalabilidade

Baixa latência

Maior throughput

Resiliência


6. Não Planejar Evolução

Todo sistema muda.

Sempre.


Hoje:

Pix

Amanhã:

Pix Parcelado

Depois:

Pix Internacional

Depois:

IA financeira

Se sua arquitetura não suporta mudança...

Ela morre.


Arquitetura deve ser extensível

Open/Closed Principle

Plug-ins

Feature Flags

Configuration Driven

Interfaces

Strategy Pattern


7. Criar Pontos Únicos de Falha (Single Point of Failure)

Imagine:

1 servidor

↓

Banco

↓

Toda empresa

Servidor cai.

Empresa para.


Alta disponibilidade

Sempre pense em:

Load Balancer

Cluster

Replica

Failover

Geo-redundância

Backup


Mainframe

Sysplex

Parallel Sysplex

GDPS

foram criados exatamente para isso.


8. APIs Mal Projetadas

API é um contrato.

Contrato ruim gera caos.


Exemplo ruim

GET /data

Retorna:

qualquer coisa...

Exemplo melhor

GET /customers/{id}

Resposta consistente.

Documentada.

Versionada.


API deve possuir

Versionamento

Idempotência

Paginação

Rate Limit

Autenticação

Observabilidade

Documentação


9. Ignorar Backup e Recuperação

A pergunta não é:

"Meu sistema vai falhar?"

A pergunta correta é:

"Quando ele vai falhar?"


Recovery é parte da arquitetura

Backup

Snapshot

Point-in-Time Recovery

Replication

Disaster Recovery

Multi Region

Chaos Engineering


Conceitos fundamentais

RPO (Recovery Point Objective)

Quanto de dados você pode perder?

0 minutos

5 minutos

1 hora

RTO (Recovery Time Objective)

Quanto tempo o sistema pode ficar indisponível?

30 segundos

5 minutos

2 horas

Essas metas orientam a escolha da estratégia de backup e recuperação.


Um Décimo Erro que Poucos Mencionam: Falta de Observabilidade

Mesmo uma boa arquitetura pode fracassar se você não consegue enxergar o que acontece em produção.

Os três pilares da observabilidade são:

  • Logs: registram eventos e erros.

  • Métricas: mostram CPU, memória, latência, throughput e disponibilidade.

  • Traces distribuídos: acompanham uma requisição passando por vários serviços.

Ferramentas como Prometheus, Grafana, OpenTelemetry, Jaeger e Elastic Stack ajudam a identificar gargalos antes que eles se transformem em incidentes graves.


Um Décimo Primeiro Erro: Esquecer a Segurança Desde o Início

Segurança não deve ser um complemento adicionado ao final do projeto.

Uma arquitetura moderna precisa considerar desde o início:

  • Princípio do menor privilégio (Least Privilege)

  • Autenticação e autorização robustas

  • Criptografia em trânsito (TLS) e em repouso

  • Gestão de segredos

  • Auditoria e rastreabilidade

  • Proteção contra ataques como SQL Injection, XSS e CSRF

  • Rate limiting e proteção contra abuso

No ecossistema IBM Z, RACF, TLS, criptografia por hardware e auditoria integrada são exemplos de recursos que incorporam esses princípios há décadas.


O Que Todo Programador COBOL Padawan Deve Aprender

Uma lição importante é que System Design não é exclusivo de microsserviços ou da nuvem. Os princípios fundamentais são universais:

  • Modelar corretamente o domínio do negócio.

  • Entender os requisitos funcionais e não funcionais.

  • Projetar para disponibilidade, escalabilidade e recuperação.

  • Definir responsabilidades claras entre componentes.

  • Reduzir acoplamento e aumentar coesão.

  • Tratar desempenho, segurança e observabilidade como requisitos de primeira classe.

Os grandes sistemas corporativos escritos em COBOL, CICS, IMS e DB2 continuam processando bilhões de transações diariamente porque foram construídos com esses princípios. A tecnologia evolui, mas os fundamentos da boa arquitetura permanecem os mesmos. Um arquiteto experiente não é aquele que conhece mais ferramentas, e sim aquele que consegue prever os problemas antes que eles aconteçam e projetar sistemas preparados para enfrentá-los.


sábado, 7 de maio de 2022

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Como a Computação Evoluiu da Década de 1950 à Era dos Agentes de Inteligência Artificial

 

Bellacosa Mainframe e as ondas da informatica

☕ Um Café no Bellacosa Mainframe

As Grandes Ondas da Inovação

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Como a Computação Evoluiu da Década de 1950 à Era dos Agentes de Inteligência Artificial

"Você não está apenas aprendendo COBOL. Está estudando uma profissão que sobreviveu a todas as revoluções da computação e continua sendo um dos pilares da transformação digital mundial."


Existe uma crença muito comum entre quem está começando na área de tecnologia.

A ideia de que a informática evolui substituindo tudo o que veio antes.

Mas basta entrar em um grande banco, uma companhia aérea, uma seguradora, uma bolsa de valores ou um órgão do governo para perceber que isso simplesmente não é verdade.

Na prática, a computação funciona como uma grande cidade.

Casas antigas continuam existindo ao lado de arranha-céus.

Ferrovias continuam transportando milhões de pessoas mesmo depois da invenção dos aviões.

Da mesma forma, um programa COBOL escrito há quarenta anos pode estar sendo acessado neste exato momento por um aplicativo de celular desenvolvido na semana passada.

Essa é uma das maiores lições que um Programador COBOL Padawan precisa aprender.

A história da informática não é uma sucessão de substituições.

É uma sequência de camadas de inovação.

Vamos fazer uma viagem década por década para entender como chegamos até a Inteligência Artificial Generativa.

Pegue seu café.

Nossa máquina do tempo está pronta.


Década de 1950

O nascimento da computação comercial

Depois da Segunda Guerra Mundial, computadores deixaram de ser apenas equipamentos militares e começaram a entrar nas empresas.

Eram gigantescos.

Salas inteiras.

Milhares de válvulas.

Consumo absurdo de energia.

Pouquíssima memória.

Programar significava literalmente controlar o hardware.

Não existiam sistemas operacionais modernos.

Muito menos interfaces gráficas.

Cada instrução era preciosa.

Os profissionais dessa época eram mais próximos de engenheiros eletrônicos do que dos desenvolvedores que conhecemos hoje.

A grande inovação

Pela primeira vez, máquinas começaram a executar processos administrativos.

Folha de pagamento.

Contabilidade.

Estoque.

Cálculos científicos.

Era o início da automação empresarial.


Década de 1960

A Era do COBOL e dos Sistemas Corporativos

Em 1959 nasce uma linguagem que mudaria para sempre a história da informática.

COBOL.

Seu objetivo era simples.

Permitir que computadores falassem a linguagem dos negócios.

Enquanto outras linguagens eram voltadas para matemática, COBOL foi criado para representar empresas.

Clientes.

Contas.

Salários.

Pagamentos.

Impostos.

Contratos.

Essa visão revolucionária fez surgir os primeiros sistemas corporativos de larga escala.

Foi nessa época que bancos começaram a informatizar contas correntes.

Companhias aéreas iniciaram sistemas de reservas.

Governos passaram a processar milhões de registros automaticamente.

O paradigma dominante

Programação Procedural.

O computador seguia uma sequência de instruções.

LER

VALIDAR

CALCULAR

GRAVAR

IMPRIMIR

Simples.

Determinístico.

Confiável.

Até hoje bilhões de transações seguem exatamente esse modelo.


Década de 1970

O nascimento dos Bancos de Dados

Os computadores já executavam programas.

Mas surgiu um novo problema.

Como armazenar milhões de informações?

Foi então que nasceram grandes tecnologias como:

  • IMS

  • VSAM

  • IDMS

  • primeiros bancos relacionais

O conceito de dado passou a ser tão importante quanto o programa.

Agora existiam profissionais especializados em modelagem.

Modelagem de dados tornou-se uma ciência.

Também nasceram

CICS

Monitores transacionais

Processamento online

Terminais espalhados pelo país inteiro

Imagine um caixa eletrônico.

Quando você consulta saldo hoje, está usando conceitos arquiteturais desenvolvidos nessa década.


Década de 1980

A Revolução do Computador Pessoal

Enquanto os mainframes cresciam nos Data Centers, outro fenômeno acontecia.

Os computadores chegaram às mesas das pessoas.

IBM PC.

Apple.

MS-DOS.

Windows.

Planilhas eletrônicas.

Editor de textos.

O computador deixou de ser exclusivo das grandes empresas.

Agora qualquer escritório podia automatizar tarefas.

Ao mesmo tempo surgiram redes locais.

As empresas começaram a conectar computadores.

A informática deixava de ser centralizada.


Década de 1990

A Revolução da Orientação a Objetos

Os sistemas estavam gigantescos.

Milhões de linhas de código.

Projetos difíceis de manter.

Foi então que surgiu uma nova maneira de pensar.

Em vez de funções...

Objetos.

Classes.

Herança.

Polimorfismo.

Encapsulamento.

Linguagens como Java, C++ e Delphi popularizaram essa filosofia.

Agora não programávamos apenas processos.

Modelávamos o mundo.

Cliente.

Pedido.

Conta.

Produto.

Tudo virou objeto.

A reutilização tornou-se uma prioridade.


Outra revolução ocorreu silenciosamente

Internet.

World Wide Web.

HTTP.

HTML.

Navegadores.

O software deixou de morar apenas dentro das empresas.

Agora podia atender o planeta inteiro.


Década de 2000

A Era da Web

Empresas descobriram que poderiam vender pela Internet.

Nasceram:

Amazon

Google

Wikipedia

Facebook

YouTube

Milhões de aplicações web.

Ao mesmo tempo surgiu outra preocupação.

Projetos estavam demorando anos.

Clientes mudavam de ideia durante o desenvolvimento.

Foi então que nasceu o Manifesto Ágil.


Agile

A mudança foi cultural.

Antes

Planejar tudo.

Depois desenvolver.

Agora

Planejar.

Construir.

Entregar.

Aprender.

Repetir.

Scrum.

Kanban.

XP.

Lean.

A velocidade tornou-se vantagem competitiva.


Década de 2010

Cloud Computing

Outra mudança gigantesca.

Antes.

Comprar servidores.

Instalar servidores.

Configurar servidores.

Agora.

Criar servidores em minutos.

AWS.

Azure.

Google Cloud.

IBM Cloud.

Virtualização tornou-se padrão.

Containers apareceram.

Docker.

Kubernetes.

OpenShift.

Tudo ficou automatizado.


DevOps

Desenvolvimento e Operação deixaram de ser departamentos separados.

Surgiram

CI

CD

Git

GitHub

Jenkins

Terraform

Ansible

Infrastructure as Code.

Agora o próprio código construía infraestrutura.


O Mainframe também mudou

Muita gente acredita que Mainframe ficou parado.

Na verdade aconteceu exatamente o contrário.

Surgiram

Zowe

z/OS Connect

APIs REST

JSON

Git para COBOL

VS Code

Ansible for IBM Z

OpenShift

COBOL passou a conversar naturalmente com aplicações modernas.


Década de 2020

Inteligência Artificial Generativa

Essa talvez seja a maior ruptura desde a criação da Internet.

Os computadores deixaram de apenas executar comandos.

Agora interpretam linguagem humana.

Escrevem código.

Geram documentos.

Resumem textos.

Produzem imagens.

Explicam conceitos.

Modelos gigantes como os LLMs passaram a compreender contexto.

Não apenas palavras.


RAG

Logo surgiu um problema.

Os modelos não conheciam os documentos internos das empresas.

Então nasceu o Retrieval Augmented Generation.

O modelo continua inteligente.

Mas consulta documentos corporativos antes de responder.

É exatamente como um funcionário experiente consultando manuais antes de tomar uma decisão.


MCP

Depois surgiu outra evolução.

Model Context Protocol.

Os modelos passaram a acessar ferramentas externas.

Bancos.

APIs.

ERP.

Mainframe.

Agora eles não apenas respondem.

Executam tarefas.


A Nova Era

Sistemas Multi-Agentes

Estamos entrando em uma nova arquitetura.

Em vez de um único modelo fazendo tudo.

Diversos agentes especializados colaboram.

Imagine uma empresa.

Existe:

Gerente Financeiro.

Advogado.

Auditor.

Analista.

Contador.

Todos especialistas.

Os sistemas modernos seguem exatamente essa lógica.

Um agente planeja.

Outro pesquisa.

Outro programa.

Outro testa.

Outro documenta.

Outro monitora.

É uma empresa digital trabalhando vinte e quatro horas por dia.


O padrão escondido

Existe algo extremamente interessante observando toda essa evolução.

Cada década aumenta o nível de abstração.

DécadaPensamento dominante
1950Hardware
1960Procedimentos
1970Dados
1980Computadores Pessoais
1990Objetos
2000Processos e Internet
2010Plataformas e DevOps
2020Conhecimento e IA

Perceba.

Não é apenas evolução tecnológica.

É evolução intelectual.


O que provavelmente veremos na década de 2030

Se observarmos o padrão histórico, uma hipótese plausível é que a próxima onda será a Orquestração Cognitiva. Em vez de programadores descrevendo passo a passo o comportamento de um sistema, equipes irão definir objetivos, restrições e políticas, enquanto ecossistemas de agentes coordenarão pessoas, aplicações legadas, serviços em nuvem e robôs de software.

Podemos esperar:

  • Agentes especializados cooperando em larga escala.

  • Sistemas capazes de negociar recursos entre si.

  • Interfaces conversacionais substituindo parte das telas tradicionais.

  • Engenharia de software cada vez mais orientada por intenção e governança.

  • Maior foco em segurança, explicabilidade e auditoria das decisões tomadas por IA.

Assim como COBOL não desapareceu com a chegada da Orientação a Objetos, é improvável que a IA substitua todas as tecnologias anteriores. Ela será mais uma camada sobre uma base construída ao longo de décadas.


A grande lição para um Programador COBOL Padawan

Muitos iniciantes perguntam:

"Vale a pena aprender COBOL em plena era da Inteligência Artificial?"

A pergunta correta é outra.

"Quem melhor para integrar Inteligência Artificial aos sistemas que movimentam bancos, seguradoras, bolsas de valores, companhias aéreas e governos?"

A resposta é clara.

Quem conhece esses sistemas.

Quem entende regras de negócio.

Quem domina arquitetura corporativa.

Quem sabe como funciona uma transação CICS.

Quem compreende DB2.

Quem conhece JCL.

Quem entende segurança.

Quem conhece processamento batch.

Quem domina integração.

Esse profissional é justamente o Programador Mainframe.


O Café termina...

Se olharmos para trás, veremos válvulas, cartões perfurados, COBOL, bancos de dados, PCs, Internet, orientação a objetos, computação em nuvem, DevOps e Inteligência Artificial.

Cada geração acreditou estar vivendo a maior revolução da história.

E, de certa forma, estava.

Mas existe uma verdade que atravessa todas essas décadas:

A tecnologia muda. Os princípios permanecem.

Organizar informações.

Automatizar processos.

Resolver problemas.

Gerar valor para pessoas e organizações.

É exatamente isso que um programa COBOL faz desde 1959.

É exatamente isso que um sistema de IA faz hoje.

A diferença está nas ferramentas.

A missão continua a mesma.

E talvez essa seja a maior lição desta viagem pela história da computação: quem compreende os fundamentos não fica preso ao passado; torna-se capaz de construir o futuro. Afinal, as grandes ondas de inovação não apagam as anteriores — elas se apoiam nelas. É por isso que, em pleno século XXI, o COBOL continua processando bilhões de transações diariamente enquanto conversa com APIs, microsserviços e agentes de Inteligência Artificial. A próxima revolução já começou, e os Programadores COBOL Padawans têm um lugar privilegiado para participar dela.


sexta-feira, 6 de maio de 2022

As Melhores Plataformas Gratuitas para Aprender Programação e Tecnologia

 

Bellacosa Mainframe e dicas para iniciar na informatica de forma gratuitamente 

☕ Um Café no Bellacosa Mainframe

As Melhores Plataformas Gratuitas para Aprender Programação e Tecnologia

Você Não Está Aprendendo Apenas Linguagens. Está Construindo uma Nova Forma de Pensar.

"Todo programador experiente já foi um iniciante olhando para uma tela em branco, convencido de que nunca conseguiria entender aquilo. A diferença entre quem desistiu e quem construiu uma carreira não foi inteligência. Foi persistência."

Existe um mito muito antigo na informática.

O mito diz que existem pessoas que "nascem programadoras".

Que algumas crianças olham para um computador e imediatamente entendem códigos, algoritmos, redes, inteligência artificial e bancos de dados.

Depois de mais de trinta anos trabalhando com tecnologia, IBM Mainframe, COBOL e grandes sistemas corporativos, posso afirmar uma coisa com absoluta tranquilidade:

Isso simplesmente não existe.

Todo profissional que você admira já ficou perdido.

Todo especialista já digitou comandos errados.

Todo arquiteto de software já escreveu códigos horríveis.

Todo engenheiro já pesquisou no Google algo extremamente básico.

E todo programador começou exatamente como você está agora.

Sem saber praticamente nada.

A boa notícia?

Nunca foi tão fácil aprender.

Nunca existiram tantas plataformas gratuitas.

Nunca houve tanto material de qualidade disponível.

Nunca houve tantas oportunidades para quem deseja crescer.

Pegue seu café.

Hoje vamos conversar como dois amigos.


Antes de Aprender Linguagens, Aprenda a Aprender

Muitos iniciantes cometem exatamente o mesmo erro.

Eles perguntam:

"Qual linguagem paga mais?"

Ou:

"Qual linguagem devo aprender primeiro?"

Na verdade, essa é a pergunta errada.

A pergunta correta seria:

Como funciona um computador?

Porque linguagens mudam.

Ferramentas mudam.

Frameworks mudam.

Mas os fundamentos continuam praticamente iguais há décadas.

Foi exatamente isso que permitiu ao COBOL, criado em 1959, continuar executando bilhões de transações diariamente.

Os conceitos continuam vivos.

Mudam apenas as ferramentas.


Imagine uma Caixa de Ferramentas

Suponha que você queira construir uma casa.

Você compra um martelo.

Será que consegue construir tudo apenas com ele?

Claro que não.

Também precisará de:

  • Serra

  • Trena

  • Alicate

  • Chaves

  • Furadeira

  • Nível

  • Parafusadeira

Nenhuma ferramenta substitui a outra.

Na programação acontece exatamente a mesma coisa.

HTML não substitui Java.

Python não substitui SQL.

Git não substitui JavaScript.

Cada tecnologia resolve um tipo diferente de problema.


1. HTML — O Esqueleto da Internet

Se você abrir qualquer página da Internet, encontrará HTML.

Ele está em praticamente todos os sites do planeta.

Mas aqui vem uma surpresa.

HTML não é uma linguagem de programação.

Ele organiza informações.

É como a planta de uma casa.

Imagine um jornal.

Existe o título.

Depois o subtítulo.

Depois fotografias.

Depois os parágrafos.

HTML organiza exatamente isso.

Ele informa ao navegador:

"Aqui existe um título."

"Aqui existe uma tabela."

"Aqui existe uma imagem."

Sem HTML, praticamente não existiria Web.

É um excelente primeiro passo porque você aprende rapidamente e já consegue criar páginas simples em poucas horas.


2. CSS — A Arte de Deixar Tudo Bonito

Imagine um prédio recém-construído.

As paredes existem.

Os quartos também.

Mas tudo está cinza.

Sem pintura.

Sem decoração.

Sem móveis.

CSS faz exatamente esse trabalho.

Ele transforma algo simples em algo agradável.

Você decide:

  • cores

  • fontes

  • tamanhos

  • espaçamentos

  • animações

  • posicionamento

É o designer trabalhando junto do programador.

Hoje praticamente todo site moderno depende fortemente de CSS.


3. JavaScript — A Magia Começa

Até agora criamos páginas bonitas.

Mas elas ainda são "paradas".

JavaScript adiciona vida.

Quando você clica em um botão...

Quando aparece uma janela...

Quando o menu abre...

Quando um formulário verifica seus dados...

Existe uma enorme chance de existir JavaScript trabalhando nos bastidores.

É provavelmente a linguagem mais popular da Internet.

E uma das mais importantes do mercado.


Pense Como um Programador

Um programa nada mais faz do que responder perguntas.

Por exemplo:

"O cliente possui saldo?"

"Está logado?"

"Pode continuar?"

"Existe estoque?"

Você já faz isso diariamente.

Imagine fazer um café.

Você pensa:

"Existe água?"

"Existe pó?"

"Existe energia?"

Sem perceber, seu cérebro já executa algoritmos.

Programar significa ensinar o computador a fazer o mesmo raciocínio.


4. React — Construindo Interfaces Modernas

Se JavaScript fosse o motor de um carro...

React seria a carroceria moderna.

Ele organiza a construção de aplicações grandes.

Imagine montar um Lego.

Cada peça possui uma função.

Menu.

Botão.

Janela.

Tabela.

Tudo separado.

Depois tudo se encaixa.

Essa é a ideia do React.

Por isso empresas como Meta, Netflix e Airbnb utilizam essa tecnologia.


5. Python — O Canivete Suíço da Programação

Existe uma linguagem capaz de fazer praticamente tudo?

A resposta mais próxima é Python.

Ela aparece em:

Inteligência Artificial.

Automação.

Ciência de Dados.

Robótica.

Segurança.

Sites.

APIs.

Scripts.

Machine Learning.

Se você já ouviu falar em ChatGPT, provavelmente sabe que boa parte das ferramentas de Inteligência Artificial utiliza Python.

Ela ficou famosa porque sua sintaxe parece quase uma frase em inglês.

Isso reduz bastante a dificuldade para iniciantes.


O Segredo Não Está na Linguagem

Muitos acreditam que aprender Python os transformará automaticamente em especialistas.

Infelizmente não funciona assim.

A linguagem é apenas o lápis.

O desenho depende do artista.


6. Java — O Gigante Corporativo

Se Python domina startups...

Java domina grandes empresas.

Bancos.

Seguradoras.

Companhias aéreas.

Telecomunicações.

Órgãos governamentais.

Milhões de aplicações utilizam Java diariamente.

Sua principal característica é estabilidade.

Uma aplicação escrita há muitos anos ainda pode continuar funcionando perfeitamente.

Essa filosofia lembra bastante o IBM Mainframe.

Não é coincidência.

Grandes empresas valorizam confiabilidade.


7. PHP — Muito Mais Forte do Que Parece

Existe uma brincadeira recorrente na Internet dizendo que PHP morreu.

Curiosamente...

Ele continua extremamente vivo.

Boa parte dos sites do mundo roda sobre PHP.

O WordPress, responsável por milhões de páginas, utiliza essa linguagem.

Ela continua sendo excelente para desenvolvimento Web.

Nunca julgue uma tecnologia apenas porque virou meme.

O mercado costuma pensar diferente das redes sociais.


8. Cybersecurity — O Guarda-Costas Digital

Imagine deixar a porta da sua casa aberta.

Não parece uma boa ideia.

Com computadores acontece exatamente a mesma coisa.

Hackers procuram portas abertas.

Falhas.

Senhas fracas.

Erros.

Profissionais de segurança trabalham justamente para impedir isso.

Mesmo que você nunca queira trabalhar com segurança, entender seus conceitos fará você escrever sistemas melhores.


9. Linguagem C — Entendendo o Computador

Se você deseja realmente compreender como computadores funcionam...

Aprenda C.

Ela mostra coisas que linguagens modernas escondem.

Memória.

Ponteiros.

Processadores.

Sistema Operacional.

Compiladores.

Depois de aprender C, praticamente todas as outras linguagens parecem mais simples.


10. C++ — Performance Máxima

Jogos modernos.

Motores gráficos.

Simulações científicas.

Robótica.

Mercado financeiro.

Tudo isso utiliza C++.

É uma linguagem poderosa.

Complexa.

Mas extremamente rápida.

Quando desempenho é prioridade, C++ continua sendo uma excelente escolha.


11. AWS — O Computador Agora Mora na Nuvem

Antigamente as empresas compravam servidores.

Hoje muitas alugam infraestrutura.

Isso recebeu o nome de Cloud Computing.

AWS é uma das maiores plataformas desse mercado.

Mas existe um detalhe curioso.

A nuvem não eliminou os Data Centers.

Ela apenas mudou a forma de consumir recursos.

Na prática, alguém continua cuidando de computadores gigantescos.

Muitas vezes, esses computadores incluem IBM Z, Linux, servidores x86 e armazenamento corporativo trabalhando juntos.


12. Inteligência Artificial

Este provavelmente é o assunto mais comentado dos últimos anos.

Mas existe muito marketing.

IA não é magia.

Ela não pensa como seres humanos.

Ela identifica padrões.

Aprende com enormes quantidades de dados.

Produz respostas estatisticamente prováveis.

Quanto melhor você compreender programação...

Melhor utilizará Inteligência Artificial.

A IA não substitui conhecimento.

Ela potencializa quem já possui conhecimento.


13. Git — A Máquina do Tempo dos Programadores

Imagine escrever um livro durante seis meses.

No dia seguinte alguém apaga metade do texto.

Sem cópia.

Sem histórico.

Seria desesperador.

Git resolve exatamente esse problema.

Ele guarda versões.

Permite voltar atrás.

Mostra quem alterou cada linha.

Facilita o trabalho em equipe.

Hoje praticamente nenhuma empresa séria desenvolve software sem Git.

Aprender Git cedo economiza incontáveis horas de trabalho.


14. SQL — Conversando com Bancos de Dados

Imagine uma biblioteca com milhões de livros.

Como encontrar apenas um?

Você faz uma consulta.

SQL faz exatamente isso.

Ele conversa com bancos de dados.

Pergunta.

Filtra.

Ordena.

Atualiza.

Remove.

Insere informações.

Praticamente todo sistema corporativo utiliza algum banco de dados.

Logo, praticamente todo programador precisa conhecer SQL.


Mas Existe Algo Ainda Mais Importante

Observe atentamente a lista.

Ela mostra tecnologias.

Ferramentas.

Sites.

Cursos.

Mas existe algo invisível.

Algo que nenhuma plataforma ensina diretamente.

Aprender a resolver problemas.

Esse é o verdadeiro objetivo.

A linguagem mudará.

Os computadores mudarão.

As empresas mudarão.

Mas a capacidade de analisar um problema continuará valiosa.


O Que Todo Padawan Precisa Entender

No universo de Star Wars, um Padawan não aprende apenas a usar um sabre de luz.

Ele aprende disciplina.

Paciência.

Treinamento.

Raciocínio.

Com programação acontece exatamente igual.

Você não está aprendendo comandos.

Está treinando seu cérebro.

Cada exercício melhora sua capacidade lógica.

Cada erro fortalece sua experiência.

Cada bug ensina algo novo.


E Onde Entra o IBM Mainframe?

Talvez você imagine que essas plataformas não tenham relação alguma com Mainframe.

Na verdade, possuem muita relação.

Hoje um sistema bancário pode utilizar:

  • COBOL processando milhões de transações.

  • Java executando serviços corporativos.

  • APIs REST expondo funcionalidades.

  • React construindo interfaces.

  • SQL consultando bancos relacionais.

  • Python automatizando tarefas.

  • Git controlando versões.

  • AWS hospedando componentes na nuvem.

  • Inteligência Artificial analisando dados.

  • Ferramentas de segurança protegendo todo o ambiente.

Ou seja, o profissional moderno precisa compreender como essas peças trabalham juntas.

O Mainframe continua sendo um dos pilares desse ecossistema, convivendo com tecnologias modernas e integrando aplicações críticas ao restante da infraestrutura.


Não Tenha Medo de Errar

Talvez este seja o conselho mais importante deste artigo.

Você vai errar.

Muito.

Vai esquecer comandos.

Vai passar horas procurando um ponto e vírgula.

Vai achar que não nasceu para isso.

Todos nós passamos por essa fase.

O segredo nunca foi evitar erros.

O segredo sempre foi continuar estudando.

Cada pequeno programa escrito hoje será um degrau para algo maior amanhã.


Um Plano Simples Para os Próximos 90 Dias

Se você está começando agora, não tente aprender tudo ao mesmo tempo. Escolha um ritmo constante e realista.

Primeiro mês: aprenda lógica de programação, HTML e CSS. Crie páginas simples e acostume-se a pesquisar documentação.

Segundo mês: estude JavaScript, Git e SQL. Faça pequenos projetos e publique tudo em um repositório no GitHub.

Terceiro mês: escolha uma linguagem principal, como Python ou Java, e desenvolva um projeto completo que envolva interface, banco de dados e controle de versões.

Ao final desses três meses, você não será um especialista. Mas já terá construído uma base muito mais sólida do que a maioria das pessoas que apenas consomem vídeos sem praticar.


Conclusão

Aprender programação nunca foi apenas aprender uma linguagem.

É aprender a observar problemas, decompor desafios em pequenas partes, testar hipóteses, corrigir erros e evoluir continuamente.

As plataformas gratuitas apresentadas nesta lista são excelentes portas de entrada porque oferecem conteúdo acessível, exercícios práticos e uma comunidade enorme de estudantes. Porém, elas são apenas o começo da jornada. O verdadeiro crescimento acontece quando você transforma teoria em prática, cria projetos próprios, lê documentação, participa de comunidades e mantém a curiosidade viva.

Lembre-se de uma última lição do Bellacosa Mainframe:

"Nenhum Data Center foi construído em um único dia. Nenhum grande sistema nasceu completo. E nenhum programador acordou especialista. Todo gigante da tecnologia começou escrevendo seu primeiro 'Hello, World!'. O próximo pode muito bem ser você."

Prepare seu café, abra seu editor de código e dê o primeiro passo. O computador não espera perfeição. Ele espera apenas que você tenha coragem de começar.

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...