| Bellacosa Mainframe apresenta algoritmos na programação |
☕💥 Algoritmos no Mainframe: Da Matemática de Al-Khwarizmi ao COBOL no z/OS
Ou como um programador COBOL Padawan descobre que, antes de existir código, existia lógica
"Um bom algoritmo faz um bom programa. Um excelente algoritmo faz o programador parecer um mago. Um algoritmo ruim faz o operador do turno da madrugada querer abrir um chamado para exorcismo."
— Bellacosa Mainframe
Introdução
Existe uma frase que gosto de repetir aos meus alunos padawans:
"COBOL não é difícil. Difícil é pensar."
E isso pode soar estranho.
Muitos acreditam que programar significa decorar comandos, aprender sintaxe, conhecer verbos COBOL ou dominar JCL.
Não.
Programar é, essencialmente, aprender a pensar de forma estruturada.
E isso possui um nome.
Algoritmo.
Antes do COBOL.
Antes do Assembler.
Antes do FORTRAN.
Antes do System/360.
Antes do z16.
Antes do ChatGPT.
Já existiam algoritmos.
E a história deles é simplesmente fantástica.
O nascimento dos algoritmos
A palavra algoritmo deriva do nome do matemático persa:
Muhammad ibn Musa al-Khwarizmi
(cerca de 780–850 d.C.)
Ele escreveu um tratado chamado:
"Kitab al-Jabr wa-l-Muqabala"
Livro que deu origem à palavra:
Algebra
E seu nome latinizado tornou-se:
Algorismus
Posteriormente:
Algorithm
Ou seja...
Cada vez que fazemos:
ADD A TO B GIVING TOTAL
estamos usando ideias desenvolvidas há mais de mil anos.
Algoritmos antes dos computadores
Curiosamente, algoritmos são muito mais antigos que computadores.
Exemplos:
Receitas culinárias
Procedimentos militares
Construção de pirâmides
Cálculos astronômicos
Navegação marítima
Tributação romana
Tudo era algoritmo.
Apenas não era chamado assim.
O primeiro algoritmo famoso
O algoritmo de Euclides.
300 a.C.
Encontrar o MDC.
Exemplo:
MDC(48,18)
Passo 1
48 mod 18 = 12
Passo 2
18 mod 12 = 6
Passo 3
12 mod 6 =0
Resposta
6
Dois mil anos depois...
Continuamos utilizando a mesma lógica.
A chegada dos computadores
Década de 1940.
ENIAC
UNIVAC
EDSAC
LEO I
IBM 650
IBM 7070
A grande dificuldade não era processador.
Era ensinar uma máquina a pensar.
E pensar significava:
Transformar problemas em algoritmos.
O nascimento do mainframe
1952
IBM 701
1954
IBM 704
1964
System/360
Um dos projetos mais revolucionários da história.
Pela primeira vez:
Uma arquitetura única.
Diversos equipamentos.
Compatibilidade.
E o software começava a ganhar importância.
O problema dos programas gigantes
Década de 50.
Empresas começavam a automatizar:
Folha de pagamento
Seguros
Bancos
Governo
Previdência
Surgiu um problema.
Como ensinar milhares de pessoas a desenvolver sistemas?
Resposta:
Criando linguagens de alto nível.
COBOL nasce em 1959
CODASYL.
Grace Hopper.
Departamento de Defesa Americano.
Objetivo:
Criar uma linguagem próxima do inglês.
Exemplo:
READ CLIENTE
IF SALDO > 1000
PERFORM LIBERA-CREDITO
END-IF
Mas existe um detalhe importante.
COBOL não pensa.
Quem pensa é o desenvolvedor.
COBOL apenas executa.
O algoritmo continua sendo o verdadeiro cérebro.
O algoritmo escondido dentro do COBOL
Muitos iniciantes acreditam:
"Aprendi COBOL."
Não.
Aprendeu comandos.
Programar é construir algoritmos.
Exemplo.
Problema:
Calcular média.
Padawan inexperiente:
ADD A TO B
ADD C TO TOTAL
DIVIDE 3 INTO TOTAL
Padawan treinado:
Entrada
3 notas
Processamento
Somar
Dividir
Saída
Média
Ele pensa primeiro.
Codifica depois.
Características de um algoritmo
Entrada
Pode possuir dados.
Exemplo:
Arquivo VSAM
DB2
MQ
GDG
SYSIN
Saída
Relatório
Arquivo
Mensagem
Tela CICS
API JSON
Finitude
Todo algoritmo precisa terminar.
Exemplo ruim:
PERFORM FOREVER
Exemplo bom:
PERFORM UNTIL EOF='S'
Clareza
Evitar ambiguidades.
Ruim:
"Processar cliente"
Bom:
Ler registro
Validar CPF
Consultar saldo
Atualizar DB2
Gravar auditoria
Algoritmos nos Batchs Mainframe
Imagine.
Banco processando PIX.
2 bilhões de registros.
A lógica continua igual.
Entrada
SORTIN
Processamento
JOINKEYS
ICETOOL
COBOL
Saída
SORTOUT
Relatórios
DB2
MQ
O algoritmo do fechamento bancário
Leitura
Validação
Consolidação
Apuração
Tributação
Geração de extrato
Backup
Auditoria
Tudo algoritmo.
Algoritmos no CICS
O novato vê:
EXEC CICS RECEIVE
EXEC CICS SEND
EXEC CICS LINK
Mas por trás existe:
Receber dados
Validar
Consultar
Persistir
Retornar
Fluxo decisório.
Algoritmos no Natural
Mesmo conceito.
MAP
READ
FIND
END-FIND
ESCAPE TOP
DECIDE ON
São apenas ferramentas.
O raciocínio continua sendo algoritmo.
Pseudocódigo
Excelente ferramenta para padawans.
Exemplo.
Transferência bancária.
Inicio
Ler conta origem
Ler conta destino
Ler valor
Saldo suficiente ?
SIM
Debitar
Creditar
Gerar log
Nao
Retornar erro
Fim
Só depois escrevemos COBOL.
Fluxogramas
Muito utilizados nos anos 70.
Analistas desenhavam:
Retângulos
Losangos
Setas
Pastas físicas.
Canetas.
Régua.
Pranchetas.
Sim.
Mainframe já existia antes do Visio.
Algoritmos de busca
Busca sequencial.
Busca binária.
Hash.
Índices VSAM.
DB2 Index.
B-tree.
LSM Trees.
Todos são algoritmos.
Algoritmos de ordenação
Mainframe ama ordenação.
DFSORT.
SYNCSORT.
ICETOOL.
Métodos famosos:
Bubble Sort
Merge Sort
QuickSort
HeapSort
No universo IBM, o Merge Sort praticamente reina.
Complexidade computacional
Nem todo algoritmo é igual.
O(1)
Constante
O(log n)
Busca binária
O(n)
Linear
O(n²)
Bubble
O(2ⁿ)
Exponencial
O dia em que um COBOL virou um monstro
Já vi programa COBOL com:
70 mil linhas.
350 PERFORM.
1200 IF.
85 GO TO.
Documentação inexistente.
Autor aposentado em 1998.
Chamado aberto em produção.
Ninguém sabe mexer.
Por quê?
Ausência de algoritmo.
Código cresceu.
Pensamento não.
Design de algoritmos
Força Bruta
Dividir e conquistar
Backtracking
Greedy
Programação dinâmica
Mesmo em bancos.
Mesmo em seguradoras.
Mesmo em governo.
Algoritmos modernos no IBM Z
Hoje temos:
z16
z17
LinuxONE
OpenShift
zCX
API Connect
z/OS Connect
Kafka
Python
Java
Node.js
AI
Machine Learning
Mas adivinhe.
O algoritmo continua sendo rei.
Inteligência Artificial também vive de algoritmos
Redes neurais.
Transformers.
LLMs.
Árvores.
Regressão.
Clustering.
Tudo algoritmo.
A IA não substituiu algoritmos.
Ela apenas os sofisticou.
O maior erro dos novos programadores
Querer aprender linguagem.
Antes de aprender lógica.
É equivalente a comprar um sabre de luz sem saber usar a Força.
Conselhos para um Padawan COBOL
Primeiro pense.
Depois desenhe.
Depois escreva.
Depois teste.
Depois otimize.
Nunca faça o inverso.
Pergunte sempre:
Quais entradas?
Qual processamento?
Qual saída?
Existem exceções?
Qual volume?
Como recuperar falhas?
Como auditar?
Como escalar?
O algoritmo invisível que move o mundo
Quando um cliente faz PIX.
Existe algoritmo.
Quando um avião decola.
Existe algoritmo.
Quando uma seguradora calcula prêmio.
Existe algoritmo.
Quando um cartão aprova compra.
Existe algoritmo.
Quando o INSS paga benefícios.
Existe algoritmo.
Quando um CICS responde em menos de um segundo.
Existe algoritmo.
E quando um velho programa COBOL criado em 1987 continua funcionando perfeitamente em um IBM Z moderno...
Existe um bom algoritmo escondido ali.
Considerações finais
Muitos dizem que COBOL é uma linguagem antiga.
Discordo.
COBOL é apenas um meio de expressão.
A verdadeira tecnologia imortal chama-se algoritmo.
Ela nasceu com matemáticos árabes, sobreviveu aos impérios, atravessou a Revolução Industrial, alimentou os primeiros computadores, ajudou a criar o System/360, sustentou bancos por décadas, acompanhou a internet, chegou ao z/OS, conversa hoje com APIs REST e provavelmente continuará existindo quando estivermos programando computadores quânticos.
Portanto, jovem Padawan, lembre-se:
Você não é pago para escrever DISPLAY, MOVE, ADD ou EXEC CICS.
Você é pago para transformar problemas caóticos em sequências ordenadas de decisões capazes de gerar valor para empresas, governos e pessoas.
E esse poder, desde Al-Khwarizmi até o IBM z17, continua tendo exatamente o mesmo nome:
Algoritmo.
☕🚀 E como diria um velho mestre do Bellacosa Mainframe:
"Código envelhece. Linguagens mudam. Frameworks desaparecem. Mas um algoritmo elegante continua sendo reconhecido por qualquer programador, em qualquer época, em qualquer plataforma."
Sem comentários:
Enviar um comentário