Translate

Mostrar mensagens com a etiqueta imperativo. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta imperativo. Mostrar todas as mensagens

terça-feira, 28 de outubro de 2025

☕💣 “ANTES DO COBOL EXISTIA O CAOS” — A VERDADEIRA HISTÓRIA DA LÓGICA DE PROGRAMAÇÃO NO MAINFRAME IBM Z 💣☕

 

Bellacosa Mainframe e a Logica de Programação Mainframe

☕💣 “ANTES DO COBOL EXISTIA O CAOS” — A VERDADEIRA HISTÓRIA DA LÓGICA DE PROGRAMAÇÃO NO MAINFRAME IBM Z 💣☕

Do código selvagem ao raciocínio estruturado que move bancos, governos e o planeta inteiro

Quando alguém começa no universo Mainframe IBM Z, normalmente pensa:

  • “Vou aprender COBOL”

  • “Vou aprender JCL”

  • “Vou aprender DB2”

  • “Vou aprender CICS”

Mas existe algo MUITO mais importante antes disso:

🔥 APRENDER A PENSAR COMO UM PROGRAMADOR DE ALTA PLATAFORMA

E aqui está um segredo que poucos contam aos iniciantes:

Mainframe não é só tecnologia.

Mainframe é DISCIPLINA DE RACIOCÍNIO.

Os grandes sistemas bancários, cartões de crédito, previdência, folha de pagamento, companhias aéreas e bolsas financeiras sobreviveram décadas porque foram construídos sobre uma lógica extremamente organizada.

E essa organização nasceu de três grandes pilares:


☕ 1. O PARADIGMA IMPERATIVO — “FAÇA ISSO, DEPOIS AQUILO”

O começo de tudo

O paradigma imperativo é a forma mais antiga e natural de programação.

Ele funciona como uma receita de bolo:

  1. Pegue farinha

  2. Misture ovos

  3. Ligue o forno

  4. Asse por 40 minutos

Na programação:

1. Leia o arquivo
2. Valide o registro
3. Atualize o saldo
4. Grave o resultado

O computador executa instruções em sequência.


🔥 Origem histórica

O paradigma imperativo nasceu praticamente junto com os computadores comerciais.

Décadas de 1940 e 1950:

  • Assembly

  • Linguagem de máquina

  • Primeiros compiladores

Tudo era baseado em:

“Mandar o computador fazer algo”

Daí o nome:

Imperativo = comando


☕ Como isso chegou ao Mainframe?

Os primeiros sistemas IBM comerciais funcionavam exatamente assim:

  • Ler cartão perfurado

  • Processar linha por linha

  • Atualizar arquivos

  • Imprimir relatórios

O mundo corporativo nasceu imperativo.

E até hoje grande parte do processamento batch do z/OS continua seguindo essa lógica.


💣 Exemplo simples de lógica imperativa

Objetivo:

Somar salários

Pseudocódigo:

LER FUNCIONARIO
SOMAR SALARIO
GRAVAR TOTAL

COBOL simplificado:

ADD SALARIO TO TOTAL-SALARIOS.

O foco está na ação.


☕ Curiosidade histórica

Os primeiros programadores literalmente desenhavam fluxos em papel gigantesco.

Fluxogramas eram fundamentais porque:

  • Memória era caríssima

  • CPU era limitada

  • Um erro podia desperiçar horas de processamento

Por isso nasceu uma obsessão no Mainframe:

🔥 RACIOCINAR ANTES DE CODIFICAR

Algo que muitos ambientes modernos perderam.


☕ 2. O PARADIGMA PROCEDURAL — “DIVIDA O PROBLEMA”

Com o crescimento dos sistemas, surgiu um problema gigantesco:

O código virou um monstro impossível de manter

Programas tinham:

  • 20 mil linhas

  • 50 mil linhas

  • 100 mil linhas

Sem organização.

Então surgiu a ideia revolucionária:

“Separar o programa em procedimentos”


🔥 O que é programação procedural?

É dividir o sistema em partes menores.

Exemplo:

PROCEDIMENTO-VALIDA-CLIENTE
PROCEDIMENTO-CALCULA-JUROS
PROCEDIMENTO-GRAVA-ARQUIVO

Cada parte faz uma tarefa específica.


☕ Isso mudou o Mainframe para sempre

O COBOL abraçou completamente o paradigma procedural.

Por isso existem:

  • SECTION

  • PARAGRAPH

  • PERFORM

Exemplo clássico:

PERFORM CALCULA-TOTAL.
PERFORM IMPRIME-RELATORIO.

💣 O nascimento do “programador corporativo”

Aqui nasceu o conceito moderno de desenvolvimento empresarial.

Antes:

  • um programador fazia tudo

Depois:

  • equipes dividiam responsabilidades

  • módulos eram reaproveitados

  • manutenção ficou possível

Isso permitiu o crescimento dos bancos nos anos 70 e 80.


☕ Exemplo prático procedural

Sistema de folha de pagamento

Divisão lógica:

1. Ler funcionário
2. Calcular INSS
3. Calcular IR
4. Calcular salário líquido
5. Gravar resultado

Cada bloco vira um procedimento.


🔥 Exemplo COBOL

PERFORM LE-FUNCIONARIO
PERFORM CALCULA-INSS
PERFORM CALCULA-IR
PERFORM CALCULA-LIQUIDO
PERFORM GRAVA-ARQUIVO

Observe:

O programa ficou legível

E legibilidade no Mainframe vale ouro.


☕ Curiosidade importante

Muitos sistemas bancários antigos ainda possuem procedimentos escritos nos anos 80 rodando ATÉ HOJE.

E continuam funcionando porque a estrutura procedural ajudou na manutenção.

Isso é um dos motivos pelos quais:

Mainframe envelhece melhor que muita plataforma moderna.


☕ 3. O PARADIGMA PROCEDURAL ESTRUTURADO — “PAREM DE USAR GOTO”

Aqui entramos numa das maiores revoluções da computação.

Durante décadas, programas eram cheios de:

GOTO
JUMP
DESVIO
SALTO

Isso criava o famoso:

💣 “SPAGHETTI CODE”

Código impossível de entender.


🔥 O problema do GOTO

Imagine isto:

SE ERRO VAI PRA LINHA 900
SE SUCESSO VAI PRA 1200
SE FALHA VOLTA PRA 300

Ninguém entendia nada.

Sistemas corporativos viravam labirintos.


☕ Surge a programação estruturada

Nos anos 60 e 70, cientistas como:

  • Edsger Dijkstra

  • Niklaus Wirth

começaram uma revolução:

“Programas devem ter estrutura lógica clara”


🔥 Conceitos fundamentais

A programação estruturada trouxe:

Sequência

FAÇA A
FAÇA B
FAÇA C

Decisão

SE SALDO < 0
   COBRAR TAXA
SENAO
   CONTINUAR

Repetição

ENQUANTO HOUVER REGISTRO
   PROCESSAR

☕ Isso mudou o COBOL moderno

O COBOL começou a abandonar:

GO TO ERRO.

e passou a usar:

IF ERRO
   PERFORM TRATA-ERRO
END-IF

💣 O nascimento da manutenção moderna

A programação estruturada permitiu:

  • menor número de bugs

  • manutenção segura

  • auditoria

  • rastreabilidade

  • estabilidade bancária

Sem isso:

  • internet banking seria inviável

  • PIX seria inviável

  • processamento massivo seria caótico


☕ Exemplo estruturado em COBOL

Antes (caótico)

IF SALDO LESS THAN ZERO
   GO TO ERRO.

Depois (estruturado)

IF SALDO < ZERO
   PERFORM TRATA-ERRO
ELSE
   PERFORM PROCESSA-CONTA
END-IF

Muito mais claro.


🔥 O grande segredo do Mainframe

O Mainframe não sobreviveu décadas por acaso.

Ele sobreviveu porque criou uma cultura baseada em:

  • previsibilidade

  • organização

  • rastreabilidade

  • clareza

  • controle

Isso nasceu diretamente da programação estruturada.


☕ COMO UM INICIANTE DEVE ESTUDAR LÓGICA MAINFRAME?

Aqui está uma sequência extremamente poderosa.


🔥 ETAPA 1 — PENSAR EM FLUXO

Antes de escrever COBOL:

Pergunte:

O que entra?
O que processa?
O que sai?

Esse é o DNA do batch.


🔥 ETAPA 2 — DIVIDIR O PROBLEMA

Nunca tente resolver tudo de uma vez.

Separe:

  • leitura

  • validação

  • cálculo

  • gravação

  • relatório


🔥 ETAPA 3 — ELIMINAR CAOS

Evite:

  • desvios desnecessários

  • lógica duplicada

  • código confuso


🔥 ETAPA 4 — ESCREVER PARA O FUTURO

No Mainframe:

Você não escreve código para hoje.

Você escreve código que alguém manterá em 2045.

Esse pensamento muda tudo.


☕ EXEMPLO REAL DE RACIOCÍNIO MAINFRAME

Imagine um processamento bancário noturno.

Entrada

Arquivo com:

  • contas

  • saldos

  • movimentações


Processamento

O sistema:

  1. lê registro

  2. valida dados

  3. calcula juros

  4. aplica tarifas

  5. atualiza saldo

  6. grava resultado

  7. gera relatório


🔥 ISSO É LÓGICA MAINFRAME

Fluxo.
Controle.
Previsibilidade.

Não existe “mágica”.

Existe engenharia.


☕ CURIOSIDADES QUE POUCOS INICIANTES SABEM

💣 COBOL foi criado para legibilidade humana

A ideia era que gestores conseguissem ler partes do código.

Por isso comandos parecem inglês.


💣 O GOTO quase destruiu sistemas corporativos

Houve programas tão caóticos que ninguém conseguia corrigir bugs sem quebrar outra coisa.


💣 Mainframe ajudou a criar engenharia de software moderna

Muitos conceitos de:

  • modularização

  • auditoria

  • processamento seguro

  • versionamento lógico

amadureceram em ambientes corporativos IBM.


💣 Batch influenciou computação moderna

Pipelines modernos, ETL, processamento distribuído e até workflows cloud possuem heranças conceituais do batch mainframe.


🔥 DIFERENÇA ENTRE OS 3 PARADIGMAS

ParadigmaIdeia CentralProblema Resolvido
ImperativoMandar executarFazer o computador trabalhar
ProceduralDividir tarefasOrganizar sistemas
EstruturadoControlar fluxoEvitar caos

☕ O QUE O INICIANTE PRECISA ENTENDER

Aprender COBOL sem lógica é perigoso.

Porque você vira:

“digitador de sintaxe”

Mas o mercado precisa de:

🔥 PROFISSIONAIS QUE ENTENDEM PROCESSAMENTO CORPORATIVO

Quem domina lógica:

  • entende batch

  • entende online

  • entende integração

  • entende performance

  • entende debugging

  • entende negócios


💣 A GRANDE VERDADE SOBRE O MAINFRAME

O Mainframe não é antigo porque usa COBOL.

O Mainframe é DURADOURO porque foi construído em cima de princípios sólidos de engenharia.

E esses princípios começam aqui:

  • paradigma imperativo

  • paradigma procedural

  • programação estruturada


☕ CONCLUSÃO — O DIA EM QUE VOCÊ COMEÇA A “PENSAR MAINFRAME”

O verdadeiro programador de alta plataforma não é aquele que decora comandos.

É aquele que consegue olhar um problema empresarial gigante e pensar:

entrada
processamento
controle
segurança
saída
rastreabilidade

Quando isso acontece…

🔥 VOCÊ PAROU DE APRENDER COBOL

E COMEÇOU A APRENDER ENGENHARIA DE SOFTWARE CORPORATIVA.


quarta-feira, 3 de janeiro de 2024

Descubra o que foi/é a Crise do Software.

Do que estou falando? Do caos atrás dos teclados, devido a instabilidade dos primeiros anos da computação com softwares imprecisos e os gastos milionários em CPDS. Esse termo foi cunhado na década de 70 do século passado e até hoje motiva muita discussão entre acadêmicos e profissionais.
Leia na InTEGRA

terça-feira, 7 de abril de 2015

A Confusão Semântica que Atravessa Gerações de Programadores

Bellacosa Mainframe conversa sobre a confusao semantica entre Logica e Paradigma

A Confusão Semântica que Atravessa Gerações de Programadores

Jovem padawan, muitos programadores antes de você ouviram que “lógica de programação” é um tipo de linguagem ou paradigma. Não é. Lógica é a forma de pensar; paradigma é a forma de construir.

A confusão nasceu nas salas de aula, onde simplificar ajuda a começar, mas deixa cicatrizes conceituais. Assim, gerações repetem termos imprecisos sem perceber.

Quando você distingue pensamento algorítmico de modelo estrutural, o código deixa de ser magia e vira engenharia. Entenda isso cedo e evitará debates inúteis, documentação confusa e decisões ruins de arquitetura. 

Clareza conceitual é uma arma poderosa na Força — e também na manutenção de sistemas que precisam sobreviver décadas.

🧠 1) “Lógica de programação” NÃO é um paradigma

“Lógica de programação” é um termo didático.

Ele se refere à capacidade de:

  • decompor um problema

  • definir passos ordenados

  • usar condições e repetições

  • estruturar algoritmos

Ou seja: é uma habilidade mental, não um modelo formal de linguagem.

Você pode usar lógica de programação em:

  • C

  • COBOL

  • Python

  • Java

  • Assembly

  • até planilhas 😄

👉 Portanto, lógica ≠ paradigma


🏛️ 2) Paradigma procedural é o termo técnico correto

Na teoria da computação, linguagens são classificadas por paradigmas.

O procedural é um deles.

✔️ Paradigma Procedural

Baseia-se em:

  • sequência de instruções

  • procedimentos / funções

  • alteração de estado

  • fluxo de controle explícito

Exemplos clássicos:

  • C

  • Pascal

  • COBOL

  • Fortran

  • PL/I

  • ALGOL

👉 Em COBOL, por exemplo, a PROCEDURE DIVISION é a essência procedural.


📚 3) Por que o ensino usa “lógica procedural”?

Principalmente por motivos pedagógicos:

🎓 A) Iniciantes não precisam de teoria de paradigmas

É mais simples dizer:

“Vamos aprender lógica de programação”

do que:

“Vamos estudar um paradigma imperativo/procedural”


🎓 B) Nem sempre usam uma linguagem “pura”

Cursos iniciais misturam:

  • pseudocódigo

  • fluxogramas

  • Portugol

  • Scratch

  • Python básico

Fica difícil falar de paradigma formal.


🎓 C) O objetivo é aprender a pensar, não a linguagem

Antes de aprender:

  • OOP

  • Funcional

  • Concorrente

  • Declarativo

o aluno precisa aprender a resolver problemas passo a passo.


⚙️ 4) Relação com o paradigma imperativo

Tecnicamente, procedural é um subtipo de outro paradigma:

👉 Imperativo

Imperativo
├── Procedural
└── Orientado a Objetos

Ambos usam:

  • comandos

  • estado mutável

  • execução sequencial


🏆 5) No mundo mainframe isso é muito claro

COBOL clássico é procedural puro:

  • fluxo top-down

  • parágrafos e seções

  • controle explícito

  • pouca abstração estrutural

Embora o COBOL moderno suporte OO, a cultura mainframe ainda é fortemente procedural.


✅ Conclusão

Dizemos “lógica de programação procedural” por tradição educacional — mas o termo técnico correto é:

👉 Paradigma procedural

Resumo rápido:

  • 🧠 Lógica de programação = habilidade de pensar algoritmicamente

  • 🏛️ Paradigma procedural = modelo formal de construção de programas

  • 🎓 O ensino simplifica a terminologia para iniciantes

segunda-feira, 9 de junho de 2014

COBOL Imperativo, Procedural e Procedural Estruturado



COBOL Imperativo, Procedural e Procedural Estruturado

Três fases da mesma linguagem (e três estados de espírito no CPD)

Ao estilo Bellacosa Mainframe, servido quente no El Jefe Midnight Lunch



☕ Introdução: o mesmo COBOL, três mentalidades

Quem olha de fora acha que COBOL é tudo igual desde 1959. Quem viveu mainframe sabe: o COBOL mudou — não tanto na sintaxe, mas na forma de pensar.

Imperativo, Procedural e Procedural Estruturado não são dialetos oficiais escritos em pedra. São estágios evolutivos, reflexo direto de:

  • Limitações de hardware

  • Pressões de negócio

  • Maturidade da engenharia de software

Entender essas diferenças é entender por que tanto código legado funciona… e por que outro tanto assombra equipes até hoje.


🧠 COBOL no modo Imperativo — o nascimento selvagem

📅 Quando surgiu

Final dos anos 50 e início dos 60, junto com o próprio COBOL.

🎯 Ideia central

“Faça exatamente isso. Agora isso. Agora pule para lá.”

O foco é comando direto. O programa é uma lista de ordens explícitas para a máquina.

🧩 Características

  • Uso intenso de GO TO

  • Fluxo não linear

  • Dependência forte da ordem física do código

  • Parágrafos longos e multifuncionais

🧨 Comentário Bellacosa

Era compreensível. Memória era cara, CPU era lenta e ninguém pensava em manutenção a longo prazo.

Funcionou ontem? Então não mexe.

🥚 Easter Egg

Muito código imperativo ainda roda em produção porque ninguém tem coragem de tocar.


🧠 COBOL Procedural — organização por rotinas

📅 Quando ganhou força

Anos 60 e 70, com sistemas maiores e equipes crescendo.

🎯 Ideia central

“Organize o programa em procedimentos reutilizáveis.”

Aqui surge a noção clara de rotinas, chamadas e retorno.

🧩 Características

  • Uso intenso de PERFORM

  • Divisão do programa em parágrafos

  • Fluxo mais previsível

  • Ainda aceita GO TO (e muita gente abusou)

⚠️ O perigo oculto

Procedural não é automaticamente estruturado.

Você pode ter um código procedural organizado e ainda assim caótico.

🥚 Easter Egg

Parágrafos chamados 9999-FIM ou EXIT-PROG são herança direta dessa fase.


🧠 COBOL Procedural Estruturado — quando o COBOL vira engenharia

📅 Quando surgiu

Final dos anos 70 e anos 80, influenciado pela programação estruturada (Dijkstra, Böhm & Jacopini).

🎯 Ideia central

“Fluxo previsível é mais importante que truque de performance.”

Aqui o COBOL ganha disciplina formal.

🧩 Características

  • Eliminação prática do GO TO

  • Uso sistemático de:

    • IF / END-IF

    • EVALUATE / END-EVALUATE

    • PERFORM UNTIL / END-PERFORM

  • Parágrafos pequenos e coesos

  • Código que se lê como um roteiro lógico

🏦 Razão de negócio

  • Auditoria

  • Confiabilidade

  • Manutenção por décadas

Bancos e seguradoras exigiram esse padrão.


📊 Comparativo rápido

EstiloControle de fluxoManutençãoRisco
ImperativoCaóticoDifícilAlto
ProceduralMédioMelhorMédio
Procedural EstruturadoPrevisívelExcelenteBaixo

🛠️ Passo a passo: migrando o pensamento

1️⃣ Pare de pensar em linhas, pense em fluxo

Pergunte:

  • Onde começa?

  • Onde decide?

  • Onde termina?

2️⃣ Um parágrafo, uma responsabilidade

Se o nome precisa de “E”, “OU” e “TAMBÉM”… está grande demais.

3️⃣ Substitua IFs aninhados por EVALUATE

Mais legível, mais auditável.

4️⃣ Use PERFORM como se fosse chamada de função

Mesmo sem parâmetros formais, o conceito é o mesmo.


🔐 Segredos de veterano

🔹 Código estruturado reduz incidentes noturnos.

🔹 Auditor confia mais em código previsível do que em código “esperto”.

🔹 Performance se resolve depois; clareza primeiro.

🔹 Todo sistema legado parece ruim… até você entender o contexto em que nasceu.


🧾 Curiosidades de bastidor

  • Muitos padrões internos de bancos proíbem GO TO há mais de 30 anos.

  • Há programas imperativos mais antigos que seus mantenedores.

  • COBOL estruturado influenciou diretamente padrões de codificação em PL/I e até Java.


🥚 Easter Eggs do CPD

🕰️ Parágrafos numerados (1000-INICIO) são fósseis vivos.

🐘 Compiladores modernos reclamam de GO TO, mas ainda aceitam — respeito aos ancestrais.

☕ Quanto mais estruturado o código, menos café o time consome em fechamento.


✅ Boas práticas Bellacosa Mainframe

✔ Evite GO TO como se fosse vazamento em produção
✔ Prefira clareza a micro-otimização
✔ Nomeie parágrafos com linguagem de negócio
✔ Estruture pensando no próximo mantenedor
✔ Código bom é código explicável


🌙 Conclusão: não é sobre sintaxe, é sobre mentalidade

Imperativo, Procedural e Procedural Estruturado contam a história da maturidade do software corporativo.

O COBOL não ficou velho.
Ele ficou responsável.

E no mundo mainframe, responsabilidade é o que mantém sistemas rodando…

sem glamour, sem barulho e sem falhar.

Bellacosa Mainframe, direto do CPD para o El Jefe Midnight Lunch 🌙