Translate

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

domingo, 1 de maio de 2022

De Go ao COBOL no IBM Z : Você Não Está Saindo da Programação Moderna. Está Descobrindo Onde Ela Aprendeu a Ser Confiável.

Bellacosa Mainframe do go ao cobol no zos

☕ Um Café no Bellacosa Mainframe

De Go ao COBOL no IBM Z

Você Não Está Saindo da Programação Moderna. Está Descobrindo Onde Ela Aprendeu a Ser Confiável.

"A velocidade impressiona. A estabilidade conquista. O IBM Z existe porque algumas aplicações simplesmente não podem parar."

Se você programa em Go (Golang), provavelmente já desenvolveu APIs REST, microsserviços, aplicações concorrentes, ferramentas de linha de comando, sistemas distribuídos ou soluções em nuvem.

Você conhece conceitos como:

  • goroutines

  • channels

  • interfaces

  • JSON

  • HTTP

  • testes automatizados

  • concorrência

  • Docker

  • Git

  • CI/CD

À primeira vista, aprender COBOL em IBM Z pode parecer um retorno aos anos 70.

Na realidade, acontece exatamente o contrário.

Você descobrirá uma plataforma que há décadas executa alguns dos sistemas mais críticos do planeta com níveis de disponibilidade, consistência e confiabilidade que poucas arquiteturas distribuídas conseguem igualar.

Não é trocar tecnologia.

É ampliar repertório.


A maior surpresa

Quem vem do universo Go normalmente acredita que COBOL seja apenas uma linguagem antiga.

Mas COBOL é apenas uma pequena parte do ecossistema.

Na prática você aprenderá uma arquitetura inteira composta por:

  • z/OS

  • JES2

  • TSO/ISPF

  • SDSF

  • JCL

  • VSAM

  • Db2

  • CICS

  • RACF

  • SMF

  • DFSMS

  • WLM

É parecido com alguém que conhece Go e pensa que Kubernetes é apenas um editor de YAML.

Não é.

Existe todo um ecossistema por trás.


Bellacosa Mainframe go versus cobol no zos

O que Go e COBOL têm em comum?

Muito mais do que parece.

Ambos valorizam simplicidade

Go ficou famoso por eliminar complexidade desnecessária.

COBOL nasceu com a mesma filosofia.

Um programa COBOL costuma ser extremamente legível.

Exemplo em Go

if saldo >= valor {
    saldo -= valor
}

COBOL

IF SALDO >= VALOR
    SUBTRACT VALOR FROM SALDO
END-IF

A sintaxe muda.

A lógica não.


Os dois gostam de código explícito

Go evita "mágicas".

COBOL também.

Você sempre sabe:

  • onde os dados estão

  • quem alterou

  • quando alterou

Essa previsibilidade explica por que bancos gostam tanto de COBOL.


Os dois valorizam estabilidade

Go prioriza compatibilidade.

IBM faz praticamente o mesmo.

Existe código COBOL escrito décadas atrás que continua compilando.

Poucas plataformas conseguem oferecer isso.


Ambos tratam processamento intensivo

Go costuma aparecer em:

  • gateways

  • APIs

  • proxies

  • observabilidade

  • streaming

COBOL aparece em:

  • compensação bancária

  • cartões

  • folha de pagamento

  • seguros

  • previdência

  • governo

Nos dois casos estamos falando de sistemas críticos.


Ambos processam grandes volumes

Go trabalha muito bem com milhares de conexões.

COBOL trabalha muito bem com bilhões de registros.

São desafios diferentes.

Mas ambos exigem eficiência.


Onde começam as diferenças?

Aqui começa a mudança de mentalidade.


Go nasceu na Internet

Go nasceu para:

  • cloud

  • containers

  • microsserviços

  • APIs

  • concorrência

O IBM Z nasceu décadas antes.

Seu foco sempre foi:

  • processamento massivo

  • consistência

  • segurança

  • disponibilidade

Isso muda completamente o modo de pensar.


Concorrência

Em Go você escreve:

go processar()

E cria uma goroutine.

No Mainframe a concorrência existe em outro nível.

Ela é administrada pelo sistema operacional.

Você aprenderá conceitos como:

  • Address Spaces

  • Dispatching

  • SRB

  • TCB

  • WLM

  • CICS Tasks

Ou seja:

menos código concorrente.

Mais gerenciamento sistêmico.


Persistência

Go normalmente conversa com:

  • PostgreSQL

  • MySQL

  • Redis

  • MongoDB

No Mainframe você encontrará:

  • Db2

  • VSAM

  • IMS

São tecnologias extremamente maduras.


Deploy

No Go:

go build

No IBM Z:

  • compilação

  • link-edit

  • geração de load module

  • execução via JCL

  • promoção entre ambientes

Existe um pipeline muito mais estruturado.


Arquitetura

Em Go:

API

Service

Repository

Banco

No Mainframe:

Tela CICS

Programa COBOL

Db2

VSAM

Mensageria

Batch

Relatórios

É outra arquitetura.


O que um programador Go já leva pronto?

Muito mais do que imagina.

Você já sabe:

Resolver problemas

Esta continua sendo a habilidade principal.


Estruturas de dados

Você entende:

  • registros

  • arrays

  • mapas

  • strings

COBOL apenas usa outra sintaxe.


Modularização

Você já separa responsabilidades.

COBOL também possui:

  • COPYBOOKS

  • SUBPROGRAMS

  • CALL


Testes

Go incentiva testes.

Hoje o Mainframe também.

Ferramentas modernas incluem:

  • zUnit

  • IBM Test Accelerator

  • COBOL Check


Git

Cada vez mais empresas utilizam:

  • GitHub

  • GitLab

  • Azure DevOps

inclusive para COBOL.


O que precisa aprender do zero?

Agora começa a verdadeira jornada.


1. COBOL

Primeiro aprenda apenas:

  • DATA DIVISION

  • PROCEDURE DIVISION

  • WORKING-STORAGE

  • PIC

  • MOVE

  • COMPUTE

  • IF

  • PERFORM

  • EVALUATE

  • FILE SECTION

Sem pressa.


2. Arquivos

Aprenda:

  • Sequential

  • VSAM KSDS

  • ESDS

  • RRDS

Entenda por que arquivos ainda são importantes.


3. JCL

Aqui muitos iniciantes desistem.

Não desista.

JCL é apenas uma forma de dizer ao z/OS:

"Execute este programa usando estes arquivos."

Pense nele como um YAML extremamente poderoso.


4. TSO/ISPF

Você aprenderá:

  • editar

  • copiar datasets

  • compilar

  • navegar

É seu novo ambiente de desenvolvimento.


5. SDSF

Imagine um painel onde você acompanha:

  • jobs

  • logs

  • spool

  • mensagens

É isso.


6. JES2

Depois descubra quem realmente executa tudo.

Esse é o papel do JES2.


7. Db2

Depois do COBOL, estude SQL embarcado.

Você verá:

EXEC SQL

END-EXEC

Não é muito diferente de usar database/sql em Go.


8. CICS

Aqui o Mainframe ganha vida.

Você aprenderá:

  • transações

  • telas

  • COMMAREA

  • CHANNEL

  • CONTAINER

É como desenvolver um servidor de aplicações extremamente otimizado.


9. RACF

Segurança.

Autorização.

Perfis.

Permissões.

O equivalente ao IAM do mundo IBM Z.


10. Monitoramento

Aprenda a ler:

  • mensagens

  • ABENDs

  • dumps

  • logs

Essa habilidade vale ouro.


O que deve praticar?

Não apenas estudar.

Praticar.

Muito.


Semana 1

Escrever pequenos programas COBOL.

Somar.

Subtrair.

Calcular médias.

Ler teclado.

Formatar saída.


Semana 2

Arquivos.

Criar.

Ler.

Atualizar.

Excluir.


Semana 3

JCL.

Executar programas.

Ler SYSOUT.

Entender retorno.


Semana 4

VSAM.

Inserções.

Pesquisa.

Atualizações.


Semana 5

Db2.

CRUD.

Cursores.

SQLCODE.


Semana 6

CICS.

Primeira tela.

Primeira transação.

Primeiro programa online.


Semana 7

Debug.

ABEND.

S0C7.

S806.

S222.

S322.

Aprenda a gostar deles.

Eles serão seus professores.


Semana 8

Projeto completo.

Cadastro.

Consulta.

Alteração.

Relatório Batch.

Tela CICS.

Db2.

JCL.

Git.

Você finalmente entenderá como um sistema corporativo funciona.


A mudança de mentalidade

Quem vem do Go normalmente pensa:

"Como faço isso rapidamente?"

No Mainframe a pergunta costuma ser:

"Como faço isso para funcionar pelos próximos vinte anos?"

Essa diferença muda tudo.


O que estudar paralelamente?

Enquanto aprende COBOL, mantenha seus conhecimentos modernos.

Estude:

  • REST

  • JSON

  • XML

  • APIs

  • OpenAPI

  • Git

  • GitHub

  • Zowe

  • VS Code

  • DevOps

  • Jenkins

  • GitHub Actions

  • Docker

  • Kubernetes

  • OpenShift

O profissional mais valorizado hoje é aquele que conecta esses dois mundos.


Um roteiro de seis meses

Mês 1: Lógica em COBOL, DATA DIVISION, arquivos sequenciais, TSO/ISPF.

Mês 2: JCL, utilitários, SORT, IDCAMS, VSAM, SDSF.

Mês 3: Db2 para z/OS, SQL embarcado, cursores, tratamento de erros.

Mês 4: CICS, transações, BMS, COMMAREA, canais e containers.

Mês 5: Arquitetura IBM Z, RACF, desempenho, debugging, análise de ABENDs, Git, Zowe e VS Code.

Mês 6: Modernização: APIs REST, z/OS Connect, integração com aplicações Go, mensageria (IBM MQ), testes automatizados e DevOps para Mainframe.

Ao final desse período, desenvolva um projeto integrando uma API escrita em Go com um programa COBOL em CICS consumido via z/OS Connect. Essa experiência mostrará, na prática, que linguagens modernas e Mainframe não competem: elas cooperam.


O maior erro de quem vem do Go

Querer comparar cada comando.

Não faça isso.

COBOL não tenta ser Go.

Go não tenta ser COBOL.

Cada um resolve problemas diferentes.

Aprenda primeiro a pensar como um desenvolvedor Mainframe.

Depois faça as comparações.

Você compreenderá muito mais.


A maior vantagem competitiva

Existem milhares de excelentes desenvolvedores Go.

Mas poucos dominam Go e IBM Z.

Esse profissional consegue conversar com equipes de cloud, APIs, microsserviços e, ao mesmo tempo, entender os sistemas responsáveis por bilhões de transações financeiras diárias.

É justamente essa combinação que muitas organizações procuram em projetos de modernização.


Um conselho do Bellacosa

Não entre no universo Mainframe tentando provar que a tecnologia moderna é melhor.

Entre querendo entender por que tantas instituições continuam confiando nela depois de mais de seis décadas.

Você encontrará soluções elegantes para problemas complexos, uma disciplina de engenharia admirável e uma cultura de qualidade construída ao longo de gerações.

Depois de aprender COBOL, você continuará sendo um programador Go.

Mas será um programador Go que entende sistemas críticos, processamento em larga escala, arquitetura corporativa e confiabilidade de missão crítica.

E essa combinação abre portas que poucos profissionais conseguem atravessar.

Porque, no fim das contas, aprender Mainframe não é voltar ao passado.

É descobrir como o futuro continua sendo construído sobre uma base extremamente sólida.

Nos vemos no próximo café.