Translate

Mostrar mensagens com a etiqueta Desenvolvimento Web. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Desenvolvimento Web. Mostrar todas as mensagens

segunda-feira, 4 de abril de 2022

☕💣 OPERADOR, O SINAL => ACABOU DE INVADIR O DATA CENTER! Arrow Functions: A Revolução das Funções Modernas Explicada para Quem Vem do COBOL Mainframe

 

Bellacosa Mainframe 

☕💣 OPERADOR, O SINAL => ACABOU DE INVADIR O DATA CENTER!

Arrow Functions: A Revolução das Funções Modernas Explicada para Quem Vem do COBOL Mainframe

Se você programa COBOL há anos, provavelmente está acostumado com estruturas como:

PERFORM CALCULA-IMPOSTO.

ou

CALL "PROGRAMA1" USING WS-DADOS.

Quando entra no mundo JavaScript moderno, uma das primeiras coisas que aparecem é um símbolo aparentemente estranho:

() => {}

Essa construção é chamada de Arrow Function (Função Seta).

À primeira vista parece criptografia de hacker.

Mas, na prática, ela representa apenas uma forma mais moderna e compacta de escrever funções.


Um Pouco de História

As Arrow Functions foram introduzidas em:

ECMAScript 6 (ES6) - 2015

O ECMAScript é a especificação oficial do JavaScript.

A proposta foi desenvolvida por diversos membros do comitê TC39, responsável pela evolução da linguagem JavaScript.

A inspiração veio principalmente de linguagens funcionais como:

  • Haskell

  • Scala

  • CoffeeScript

  • C#

  • Java 8 (Lambdas)

O objetivo era:

  • Escrever menos código

  • Tornar funções mais legíveis

  • Resolver problemas com o contexto do this


Como Era Antes

Função tradicional:

function soma(a, b) {
   return a + b;
}

Uso:

console.log(soma(10,5));

Resultado:

15

A Mesma Coisa com Arrow Function

const soma = (a, b) => {
   return a + b;
};

Resultado:

15

Mesma lógica.

Sintaxe diferente.


Traduzindo para a Cabeça de um Coboleiro

Imagine:

CALCULA-SOMA.
    COMPUTE WS-RESULTADO = WS-A + WS-B.

Arrow Function:

(a,b) => a+b

É como se fosse:

ENTRADA -> PROCESSAMENTO

O símbolo:

=>

significa aproximadamente:

"transforma isso em"

ou

"recebe isto e executa aquilo"

Anatomia da Arrow Function

Exemplo:

const dobro = (numero) => {
   return numero * 2;
};

Partes:

(numero)

Parâmetro de entrada.

=>

Arrow.

{
   return numero * 2;
}

Bloco executado.


Forma Super Compacta

Quando existe apenas um retorno:

const dobro = numero => numero * 2;

Equivale a:

const dobro = function(numero){
   return numero * 2;
}

Comparação Lado a Lado

Tradicional

function quadrado(x){
   return x*x;
}

Arrow

const quadrado = x => x*x;

Exemplo Prático de Mainframe

Imagine um arquivo contendo salários.

COBOL:

PERFORM VARYING I FROM 1 BY 1
   UNTIL I > TOTAL-REGISTROS

   COMPUTE WS-NOVO-SALARIO =
           WS-SALARIO(I) * 1.10

END-PERFORM

JavaScript:

salarios.map(salario => salario * 1.10);

Observe:

salario => salario * 1.10

é uma Arrow Function.


O Que é map()?

O método percorre uma lista.

Para cada elemento executa a função.

Visualmente:

1000
2000
3000

Passa por:

salario => salario * 1.10

Resultado:

1100
2200
3300

Por Que Virou Tão Popular?

Antes:

numeros.forEach(function(numero){
   console.log(numero);
});

Depois:

numeros.forEach(numero => console.log(numero));

Menos código.

Mais legibilidade.


O Grande Problema Que Ela Resolve

No JavaScript existe algo chamado:

this

Ele gera muita confusão.

Exemplo antigo:

function Pessoa() {

   this.nome = "Bellacosa";

   setTimeout(function() {

      console.log(this.nome);

   },1000);

}

Resultado:

undefined

Porque o this muda de contexto.


Com Arrow Function

function Pessoa() {

   this.nome = "Bellacosa";

   setTimeout(() => {

      console.log(this.nome);

   },1000);

}

Resultado:

Bellacosa

A Arrow Function herda o contexto externo.

Isso eliminou milhares de bugs.


Vantagens

1. Menos Código

Antes:

function(x){
   return x*2;
}

Depois:

x => x*2

2. Melhor Leitura

Especialmente em:

filter()
map()
reduce()
forEach()

3. Resolve Problemas de this

Grande vantagem.


4. Ideal para Programação Funcional

Muito usada em:

  • React

  • Angular

  • Vue

  • Node.js


Desvantagens

Não Possui Próprio this

Às vezes isso é ruim.

const pessoa = {
   nome: "João",
   falar: () => {
      console.log(this.nome);
   }
}

Pode não funcionar como esperado.


Não Pode Ser Usada Como Construtor

Isto funciona:

function Pessoa(){}
new Pessoa();

Isto não:

const Pessoa = () => {};
new Pessoa();

Erro.


Menos Clara em Funções Grandes

Isto:

const calcula = () => {
   ...
   ...
   ...
   ...
}

Às vezes fica menos legível que uma função tradicional.


Linguagens que Possuem Conceito Semelhante

Java

x -> x * 2

C#

x => x * 2

Kotlin

{ x -> x * 2 }

Scala

x => x * 2

Python

lambda x: x * 2

Ruby

->(x) { x * 2 }

Como Ler uma Arrow Function

Quando encontrar:

(cliente) => cliente.nome

Leia mentalmente:

Receba cliente
Retorne cliente.nome

Outro exemplo:

(a,b) => a+b

Leia:

Receba A e B
Retorne A+B

Como Construir Uma

Passo 1

Escreva a função tradicional.

function multiplica(a,b){
   return a*b;
}

Passo 2

Remova a palavra function.

(a,b){
   return a*b;
}

Passo 3

Adicione a seta.

(a,b) => {
   return a*b;
}

Passo 4

Se houver apenas um retorno:

(a,b) => a*b

Pronto.


Truque Para Coboleiros

Sempre pense:

ENTRADA => SAÍDA

Exemplos:

x => x*2

"Recebe X e devolve o dobro."


nome => nome.toUpperCase()

"Recebe nome e devolve maiúsculo."


cliente => cliente.saldo

"Recebe cliente e devolve saldo."


Regra de Ouro

Se você enxergar:

=> 

Pergunte:

O que entra?

Está à esquerda.

(cliente)

O que sai?

Está à direita.

cliente.nome

Então:

(cliente) => cliente.nome

significa:

ENTRA CLIENTE
SAI O NOME

Exatamente como uma pequena rotina COBOL que recebe um registro e devolve um campo.


Resumo Bellacosa Mainframe

Se fosse explicar Arrow Function para um operador ou programador COBOL em uma única frase:

Arrow Function é uma forma moderna, compacta e mais inteligente de escrever rotinas pequenas em JavaScript, funcionando como um "PERFORM inline" que recebe dados à esquerda da seta e devolve um resultado à direita.

Quando você começar a estudar React, Node.js, APIs REST, automações em N8N ou agentes de IA em JavaScript, verá Arrow Functions em praticamente todo lugar. Entender => é equivalente a aprender PERFORM, CALL e SECTION nos primeiros dias de COBOL: é um dos fundamentos da linguagem moderna.


segunda-feira, 30 de novembro de 2020

☕💣 FastAPI: O Framework Python que Está Conectando a Nova Geração ao Mundo Mainframe


Bellacosa Mainframe e framework FastAPI


☕💣 FastAPI: O Framework Python que Está Conectando a Nova Geração ao Mundo Mainframe

Introdução

Nos últimos anos, poucas tecnologias cresceram tão rapidamente no universo Python quanto o FastAPI. Em um mercado cada vez mais orientado por APIs, microsserviços, computação em nuvem e inteligência artificial, o FastAPI tornou-se uma das ferramentas preferidas para a construção de aplicações modernas.

Mas afinal:

  • O que é FastAPI?

  • Quem criou?

  • Quando surgiu?

  • Como funciona?

  • Por que ele ficou tão popular?

  • Qual sua relação com o universo Mainframe?

Para profissionais acostumados com COBOL, CICS, IMS, DB2 e z/OS, compreender o FastAPI é também entender como as novas aplicações estão consumindo e expondo serviços em arquiteturas distribuídas.


A Origem do FastAPI

O FastAPI foi criado por Sebastián Ramírez, desenvolvedor de software da América Latina conhecido na comunidade Python como "tiangolo".

O projeto nasceu da necessidade de criar um framework que reunisse simultaneamente:

  • Alto desempenho

  • Facilidade de desenvolvimento

  • Tipagem forte

  • Documentação automática

  • Compatibilidade com padrões modernos da web

O lançamento inicial ocorreu em 2018.

Na época, o mercado Python era dominado principalmente por:

  • Django

  • Flask

  • Pyramid

  • Tornado

Embora extremamente populares, essas soluções possuíam algumas limitações para aplicações REST modernas.

Sebastián percebeu que era possível criar uma alternativa mais simples e ao mesmo tempo extremamente rápida.

O resultado foi o FastAPI.


Licença Open Source

O FastAPI é distribuído sob a licença:

MIT License

Uma das licenças mais permissivas do mercado.

Isso significa que empresas podem:

  • Utilizar gratuitamente

  • Modificar

  • Distribuir

  • Incorporar em produtos comerciais

sem necessidade de pagamento de royalties.

Essa característica acelerou sua adoção em bancos, fintechs, seguradoras e grandes corporações.


O Que é FastAPI?

FastAPI é um framework para desenvolvimento de APIs REST utilizando Python.

Seu objetivo principal é permitir que desenvolvedores construam serviços web modernos de forma rápida, segura e altamente performática.

De forma simplificada:

Aplicação Cliente
       ↓
API FastAPI
       ↓
Banco de Dados
       ↓
Sistemas Legados
       ↓
Serviços Externos

O FastAPI funciona como uma camada de integração capaz de receber solicitações, processar regras de negócio e retornar respostas.


Por Que o Nome "FastAPI"?

A palavra "Fast" não foi escolhida por acaso.

O FastAPI foi projetado para oferecer desempenho extremamente elevado.

Os testes realizados pela comunidade mostram resultados próximos a frameworks escritos em linguagens tradicionalmente mais rápidas, como:

  • Go

  • Java

  • Node.js

  • C#

Isso ocorre graças à utilização de componentes modernos do ecossistema Python.


Os Pilares do FastAPI

O framework foi construído sobre três tecnologias fundamentais:

Starlette

Responsável pela camada web.

Fornece:

  • Rotas

  • Requisições HTTP

  • Respostas

  • WebSockets

É equivalente ao motor que controla o tráfego das requisições.


Pydantic

Responsável pela validação dos dados.

Permite garantir que as informações recebidas estejam corretas antes de serem processadas.

Exemplo:

class Cliente(BaseModel):
    codigo: int
    nome: str

Se alguém enviar um valor inválido, o próprio framework rejeita a requisição.


Uvicorn

Servidor ASGI utilizado para executar aplicações FastAPI.

Pode ser comparado ao ambiente de execução da aplicação.


Como Funciona uma API?

Antes de entender o FastAPI, precisamos entender o conceito de API.

API significa:

Application Programming Interface

Em termos simples:

É uma forma padronizada para que sistemas conversem entre si.

Por exemplo:

Aplicativo Mobile
       ↓
API
       ↓
Sistema Bancário

Quando o usuário consulta o saldo, o aplicativo não acessa diretamente o banco de dados.

Ele chama uma API.

A API consulta os dados e devolve a resposta.


O Conceito de Endpoint

No FastAPI, cada serviço é chamado de endpoint.

Exemplo:

@app.get("/clientes")

Significa:

GET /clientes

Quando alguém acessar essa URL, o código correspondente será executado.

Para um profissional de CICS, podemos fazer a seguinte analogia:

Transação CICS
      =
Endpoint REST

Cada endpoint representa uma funcionalidade específica.


Exemplo de Código

Um serviço extremamente simples:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def inicio():
    return {
        "mensagem": "Olá Mundo"
    }

Ao acessar:

http://localhost:8000

A resposta será:

{
  "mensagem": "Olá Mundo"
}

Tipagem Moderna

Uma das maiores inovações do FastAPI é o uso intensivo de tipagem.

Exemplo:

@app.get("/cliente/{codigo}")
def cliente(codigo:int):
    return {"codigo":codigo}

Observe:

codigo:int

O framework entende automaticamente que o parâmetro deve ser um número inteiro.

Se um valor inválido for informado, a requisição é rejeitada.


Documentação Automática

Uma das funcionalidades mais admiradas pelos desenvolvedores.

Ao iniciar a aplicação:

uvicorn main:app --reload

O FastAPI gera automaticamente:

/docs

Utilizando Swagger UI.

E também:

/redoc

Utilizando ReDoc.

Isso elimina horas de documentação manual.


JSON: A Linguagem Universal

O principal formato utilizado pelo FastAPI é o JSON.

Exemplo:

{
  "codigo":1001,
  "nome":"Bellacosa"
}

Para quem trabalha com Mainframe, JSON pode ser visto como uma evolução moderna da COMMAREA.

No passado:

01 DFHCOMMAREA.
   05 CODIGO PIC 9(5).
   05 NOME   PIC X(30).

Hoje:

{
   "codigo":1001,
   "nome":"Bellacosa"
}

O objetivo continua sendo o mesmo:

Trocar informações entre sistemas.


Operações HTTP

O FastAPI suporta os principais métodos HTTP.

GET

Consulta dados.

@app.get("/clientes")

POST

Inclui dados.

@app.post("/clientes")

PUT

Atualiza informações.

@app.put("/clientes")

DELETE

Remove registros.

@app.delete("/clientes")

Segurança

O FastAPI possui recursos avançados de autenticação.

Entre eles:

  • OAuth2

  • JWT

  • API Keys

  • LDAP

  • Active Directory

  • OpenID Connect

Isso permite integração com ambientes corporativos de grande porte.


Serviços Modernos Criados com FastAPI

Hoje encontramos FastAPI em:

Bancos

  • Consulta de saldo

  • PIX

  • Open Finance

  • Cartões

Seguradoras

  • Cálculo de apólices

  • Sinistros

E-commerce

  • Catálogo

  • Pedidos

  • Estoque

Saúde

  • Prontuários

  • Agendamentos

Governo

  • Portais digitais

  • Serviços públicos


FastAPI e Inteligência Artificial

Uma das razões do crescimento explosivo do FastAPI é a Inteligência Artificial.

Ferramentas modernas utilizam FastAPI para expor modelos de IA.

Exemplos:

  • Chatbots

  • Assistentes virtuais

  • Sistemas RAG

  • LLMs

  • Processamento de documentos

Muitas soluções de IA usam FastAPI como camada de acesso.


FastAPI e Mainframe

Aqui encontramos um tema extremamente interessante.

Muitas empresas possuem décadas de investimento em Mainframe.

Os sistemas COBOL continuam executando funções críticas como:

  • Contas correntes

  • Folha de pagamento

  • Processamento de cartões

  • Previdência

  • Seguros

Entretanto, novas aplicações precisam acessar esses sistemas.

É nesse momento que o FastAPI entra em cena.


Cenário Típico de Integração

Imagine:

Aplicativo Mobile
        ↓
FastAPI
        ↓
z/OS Connect
        ↓
CICS
        ↓
Programa COBOL

O usuário realiza uma operação.

A API recebe a solicitação.

O FastAPI chama um serviço no Mainframe.

O COBOL processa a transação.

A resposta retorna em JSON.


FastAPI Consumindo Web Services do Mainframe

É comum encontrar arquiteturas como:

FastAPI
     ↓
REST
     ↓
z/OS Connect
     ↓
COBOL

ou

FastAPI
     ↓
SOAP
     ↓
CICS Web Services

Nesse modelo, o FastAPI funciona como uma ponte entre o mundo moderno e os sistemas legados.


FastAPI como Camada de Modernização

Muitas organizações utilizam FastAPI para:

  • Encapsular sistemas legados

  • Expor APIs modernas

  • Criar microsserviços

  • Construir portais web

  • Desenvolver aplicativos móveis

Sem alterar os programas COBOL existentes.

Essa estratégia reduz riscos e custos.


Comparação com Tecnologias Mainframe

MainframeFastAPI
CICSServidor de APIs
TransaçãoEndpoint
COMMAREAJSON
COBOLPython
RACFOAuth/JWT
BMSFront-End Web
MQAPIs REST
Programa OnlineServiço HTTP

Vantagens do FastAPI

Entre os principais benefícios estão:

  • Desenvolvimento rápido

  • Curva de aprendizado simples

  • Alto desempenho

  • Documentação automática

  • Tipagem forte

  • Integração com IA

  • Integração com Mainframe

  • Grande comunidade

  • Código limpo


Limitações

Nenhuma tecnologia é perfeita.

Algumas limitações incluem:

  • Ecossistema mais novo que Django

  • Menor quantidade de plugins

  • Dependência do Python

  • Necessidade de conhecimento de APIs REST

Mesmo assim, seu crescimento continua acelerado.


Conclusão

O FastAPI tornou-se uma das tecnologias mais importantes do ecossistema Python moderno. Lançado em 2018 por Sebastián Ramírez sob licença MIT, ele revolucionou a criação de APIs ao combinar simplicidade, velocidade e recursos avançados de validação e documentação.

Para profissionais de Mainframe, o FastAPI não deve ser visto como concorrente do COBOL ou do CICS. Pelo contrário. Ele atua como uma poderosa camada de integração que permite conectar aplicações modernas aos sistemas corporativos que continuam movimentando bilhões de transações diariamente.

Em muitos projetos atuais, o COBOL permanece responsável pelas regras de negócio mais críticas, enquanto o FastAPI assume o papel de porta de entrada para aplicativos móveis, soluções em nuvem, plataformas digitais e sistemas de inteligência artificial.

Em outras palavras, o FastAPI está para a Internet moderna assim como o CICS esteve para o processamento online corporativo durante décadas: uma plataforma capaz de transformar regras de negócio em serviços acessíveis, escaláveis e disponíveis para milhões de usuários.

☕💣 Bellacosa Mainframe Insight: "O COBOL continua guardando as regras de negócio. O FastAPI apenas abre a porta para que o mundo moderno converse com elas."