Translate

domingo, 17 de julho de 2022

De C++ ao COBOL no IBM Z : Você Não Está Trocando de Linguagem. Está Descobrindo um Novo Conceito de Engenharia de Software.

 

Bellacosa Mainframe do c++ ao cobol no zos

☕ Um Café no Bellacosa Mainframe

De C++ ao COBOL no IBM Z

Você Não Está Trocando de Linguagem. Está Descobrindo um Novo Conceito de Engenharia de Software.

"Quem domina C++ já aprendeu a controlar memória, desempenho e arquitetura. Aprender COBOL no IBM Z significa descobrir como aplicar essa disciplina ao software que movimenta bancos, bolsas de valores, seguradoras, governos e companhias aéreas há mais de meio século."

Existe um mito que acompanha praticamente todo desenvolvedor C++ quando ouve a palavra COBOL.

"É uma linguagem antiga."

"Não tem orientação a objetos."

"Não tem templates."

"Não tem STL."

"Não tem RAII."

"Não tem ponteiros."

Curiosamente...

Nenhuma dessas características explica por que bilhões de transações financeiras continuam sendo processadas diariamente em IBM Z.

Porque o IBM Z nunca foi uma competição de linguagens.

Sempre foi uma competição de confiabilidade.

E esse é justamente o ponto onde muitos programadores C++ descobrem que já possuem muito mais em comum com o mundo Mainframe do que imaginavam.


O programador C++ já pensa como um engenheiro

Quem programa em C++ normalmente desenvolveu algumas virtudes raras.

Ele sabe que desempenho importa.

Ele entende custo de memória.

Conhece pilha (stack) e heap.

Sabe que concorrência é difícil.

Entende compilação.

Conhece linkedição.

Sabe que ABI existe.

Já ouviu falar em alignment.

Conhece cache.

Sabe otimizar algoritmos.

Entende estruturas de dados.

Aprendeu que software não é apenas escrever código.

É construir sistemas.

E adivinhe?

Essa filosofia é extremamente compatível com o IBM Z.


A maior diferença não é COBOL

A maior mudança será perceber que no Mainframe o protagonista não é a linguagem.

É o ambiente.

No Windows você pensa em:

  • aplicação

  • executável

  • DLL

  • usuário

No IBM Z você passa a pensar em:

  • Job

  • Dataset

  • Região

  • CICS

  • IMS

  • DB2

  • RACF

  • JES2

  • Workload

  • Segurança

  • Disponibilidade

Você deixa de desenvolver apenas programas.

Passa a desenvolver partes de um ecossistema gigantesco.


Bellacosa Mainframe c++ versus cobol no zos

C++ e COBOL possuem mais semelhanças do que parece

À primeira vista parecem opostos.

Mas compare.

Ambos são compilados

Não existe interpretação.

Existe compilador.

Existe otimização.

Existe geração de código objeto.

Existe linkedição.

Existe build.

Tudo isso será familiar.


Ambos valorizam desempenho

No desktop você mede milissegundos.

No Mainframe mede milhões de transações por hora.

A preocupação é a mesma.

Executar rapidamente.

Consumir poucos recursos.

Não desperdiçar CPU.


Ambos valorizam estabilidade

Em C++ um ponteiro inválido pode derrubar um processo.

No Mainframe um erro pode impedir milhões de pagamentos.

A consequência muda.

A responsabilidade também.


Ambos vivem muitos anos

Aplicações C++ frequentemente permanecem décadas.

O mesmo acontece com COBOL.

Você aprenderá rapidamente que software corporativo envelhece muito mais lentamente do que aplicações web.


Ambos exigem disciplina

C++ não perdoa descuidos.

COBOL também não.

A diferença é que os erros costumam aparecer em regras de negócio.

Não em segmentation faults.


Onde tudo muda

Agora começam as diferenças.


Memória

Em C++ você administra memória.

new

delete

smart pointers

RAII

ownership

No COBOL praticamente toda memória já está definida.

Você declara estruturas.

O runtime administra tudo.

Não existe malloc para o desenvolvedor comum.

Você passa menos tempo gerenciando memória.

E muito mais tempo modelando dados.


Dados são o centro do universo

No C++ muitos desenvolvedores começam pensando em objetos.

No COBOL começa-se pensando em registros.

Campos.

Layouts.

Arquivos.

Tabelas.

Copys.

Estruturas.

A pergunta muda.

Em vez de:

"Qual classe criar?"

Você pergunta:

"Como esse registro representa o negócio?"


Legibilidade acima de tudo

Em C++ frequentemente vemos código extremamente compacto.

Templates.

Metaprogramação.

Lambdas.

Concepts.

Operator overloading.

No COBOL o objetivo sempre foi outro.

Código que qualquer desenvolvedor consiga ler daqui vinte anos.

Você rapidamente perceberá que clareza vale ouro.


Regras de negócio

Aqui acontece uma mudança importante.

Grande parte do código COBOL não implementa algoritmos complexos.

Implementa decisões empresariais.

Calcular juros.

Validar CPF.

Fechar folha.

Liquidar títulos.

Atualizar contas.

Emitir boletos.

Processar seguros.

Calcular impostos.

É programação.

Mas profundamente ligada ao negócio.


Batch é uma mudança de mentalidade

Quem veio do Windows costuma pensar em aplicações interativas.

No Mainframe você aprende Batch.

Recebe arquivos.

Valida.

Ordena.

Consolida.

Atualiza bancos.

Gera relatórios.

Tudo cuidadosamente orquestrado.

Muitos iniciantes subestimam Batch.

Depois descobrem que ele continua sendo uma das maiores forças do IBM Z.


Online também existe

Não pense que tudo é Batch.

Você conhecerá o CICS.

Ali surgem conceitos familiares.

Sessões.

Transações.

Chamadas.

Programas.

Controle de fluxo.

Mas com disponibilidade muito maior do que normalmente encontramos em aplicações tradicionais.


Banco de Dados

Se você conhece PostgreSQL, SQL Server ou Oracle, já possui uma excelente base.

Aprender DB2 será muito mais simples.

Você encontrará:

SELECT

INSERT

UPDATE

DELETE

JOIN

CURSOR

COMMIT

ROLLBACK

Índices.

Plano de acesso.

A sintaxe muda pouco.

A engenharia por trás é impressionante.


Arquivos ainda são importantes

Enquanto muitos ambientes modernos vivem exclusivamente de bancos relacionais, o IBM Z continua dominando processamento de arquivos gigantescos.

VSAM.

Sequential Files.

GDG.

Flat Files.

Isso surpreende muitos desenvolvedores.

Mas faz sentido quando milhões de registros precisam ser processados continuamente.


Segurança não é um detalhe

Em muitos ambientes segurança aparece no fim do projeto.

No IBM Z ela nasce junto.

RACF.

Perfis.

Grupos.

Permissões.

Auditoria.

Controle de acesso.

Tudo extremamente integrado.


A melhor trilha para um programador C++

Se eu estivesse orientando um excelente desenvolvedor C++, faria exatamente este caminho.


Etapa 1

Não aprenda COBOL primeiro.

Aprenda IBM Z.

Entenda:

  • o que é um Mainframe

  • por que existe

  • quais problemas resolve

  • disponibilidade

  • redundância

  • processamento de missão crítica

Sem isso COBOL parecerá apenas uma linguagem antiga.


Etapa 2

Aprenda z/OS

Entenda:

  • Dataset

  • PDS

  • PDSE

  • Sequential

  • VSAM

  • Catalog

  • Volume

  • Job

  • Step

Esses conceitos aparecerão diariamente.


Etapa 3

Aprenda TSO/ISPF

Aprenda a navegar.

Editar.

Compilar.

Executar.

Comparar arquivos.

Pesquisar membros.

Como um programador Linux aprende Bash.


Etapa 4

Aprenda JCL

Esse é provavelmente o maior choque.

JCL não é linguagem de programação.

É descrição de execução.

Quem entende JCL entende o Mainframe.


Etapa 5

Agora sim...

COBOL.

Comece apenas com:

IDENTIFICATION DIVISION

DATA DIVISION

WORKING-STORAGE

PROCEDURE DIVISION

IF

PERFORM

EVALUATE

READ

WRITE

MOVE

COMPUTE

Nada mais.


Etapa 6

Arquivos

Aprenda:

Sequential

VSAM

KSDS

ESDS

READ

WRITE

START

REWRITE

DELETE


Etapa 7

SQL

COBOL + DB2.

Aqui você descobrirá onde grande parte dos sistemas corporativos realmente vivem.


Etapa 8

CICS

Aprenda:

COMMAREA

MAP

Pseudo Conversação

LINK

XCTL

RETURN

RESP

Depois Channels e Containers.


Etapa 9

Debug

SDSF

JES2

Spool

Abends

Dump

Mensagens

SYSOUT

SYSUDUMP

SYSABOUT

Aprenda a investigar problemas.


Etapa 10

Modernização

Somente depois disso avance para:

REST

JSON

XML

z/OS Connect

MQ

Kafka

Java

Python

OpenAPI

Git

VS Code

Zowe

Ansible

OpenShift

Porque agora você compreenderá onde essas tecnologias entram.


O que treinar diariamente

Sugiro uma rotina simples.

Segunda

Resolver pequenos exercícios COBOL.

Terça

Ler JCL.

Quarta

Executar Batch.

Quinta

SQL no DB2.

Sexta

Ler código legado.

Sábado

Refatorar programas COBOL.

Domingo

Estudar arquitetura IBM Z.

Em poucos meses você terá construído uma visão muito superior à de quem apenas decorou comandos.


O maior erro de quem vem do C++

O desenvolvedor tenta transformar COBOL em C++.

Não faça isso.

COBOL resolve outro tipo de problema.

Quanto antes aceitar isso, mais rápido aprenderá.


O maior desafio

Não será aprender comandos.

Será aprender o domínio bancário.

Seguros.

Cartões.

Folha.

Tributos.

Previdência.

Liquidação financeira.

No IBM Z, entender o negócio vale tanto quanto dominar a linguagem.


O que um programador C++ aprende com o Mainframe

Depois de algum tempo algo curioso acontece.

Você volta ao C++ diferente.

Mais disciplinado.

Mais cuidadoso.

Mais preocupado com rastreabilidade.

Mais atento à estabilidade.

Mais consciente do impacto de uma mudança.

Porque o IBM Z ensina uma lição rara.

Software não existe apenas para impressionar desenvolvedores.

Existe para manter empresas funcionando.

Existe para pagar salários.

Existe para processar aposentadorias.

Existe para autorizar cartões.

Existe para movimentar bolsas de valores.

Existe para garantir que um avião possa decolar porque milhares de reservas foram processadas corretamente.

Essa responsabilidade muda completamente a forma como enxergamos programação.


Conclusão

Se você domina C++, já possui uma base extraordinária.

Você entende algoritmos, compilação, desempenho e arquitetura. Agora chegou a hora de aprender algo que poucas universidades ensinam: como grandes organizações constroem sistemas capazes de operar 24 horas por dia, sete dias por semana, durante décadas, com confiabilidade quase absoluta.

COBOL no IBM Z não substitui o C++.

Ele complementa sua formação.

Você continuará pensando como engenheiro, mas passará a enxergar software por outra perspectiva: continuidade, governança, auditoria, integridade dos dados e estabilidade operacional.

No Bellacosa Mainframe costumo dizer que aprender IBM Z é como visitar uma usina hidrelétrica depois de anos construindo geradores portáteis.

Os dois produzem energia.

Mas em escalas completamente diferentes.

O mesmo vale para C++ e COBOL.

Você não está abandonando a programação moderna.

Está descobrindo onde muitos dos sistemas mais importantes do planeta aprenderam a nunca falhar.

E essa é uma experiência que transforma qualquer desenvolvedo

Sem comentários:

Enviar um comentário