Obscurecendo o ABAP

Quando eu ainda dava aula de ABAP e nas raras oportunidades que tenho de programar em ABAP eu sempre advogo pelo uso do código explícito ao invés de código implícito.

Farei uma analogia entre o idiona português e o inglês. Uma das maiores dificuldades que tenho morando aqui na terra do Tio Sam é a pronúncia. De uma maneira prática, no português pronunciamos todas as sílabas das palavras e isso torna a pronúncia muito mais fácil. Agora no inglês temos diversas regras de pronúncia que você só aprende com o tempo. Em termos de pronúncia, considero o português muito mais explícito do que o inglês e isso o torna muito mais fácil de se ler.

A recomendação da SAP e de boa parte dos programadores é você ser sempre explícito ao escrever seu código ABAP. Por exemplo: evitar LOOP AT itab e usar LOOP AT itab INTO wa. Ou seja, deixar explícito todo o que o seu código está fazendo e não deixar nada subentendido.

No entanto, hoje me deparo com um post de Programação Funcional em ABAP e minha cabeça começa entrar em parafuso. Começo a ficar preocupado em estar ficando velho (um eufemismo para obsoleto).

FunctionalProgramming

“Por que você gosta tanto de programação funcional? O que pegou você?” Recursividade em cáuda e a nossa recompensa.

Eu defendo a tese de que qualquer um pode aprender qualquer coisa. Mas existe uma exceção no meu caso, expressões regulares. Se algum dia eu conseguir escalar o Everest eu estarei lá no cúme e pensarei, “mas eu não consegui aprender regex”. Regex é uma das coisas mais obcuras que existe para mim, justamente por haver tantas regras subentendidas eu ainda não sei lidar tão bem com isso.

Outro caso.

Estava programando para o Pebble e a linguagem usada é C padrão. Enquando estava programando a parte do relógio em C estava tranquilo e curtindo a viagem. Quando fui para a parte do celular com JavaScript, bum!, programação funcional, ainda que superficial, mas suficiente para me confundir.

Foi depois desse episódio do Pebble que encontrei tais posts sobre programação funcional em ABAP. Nos comentários vi muitas pessoas dizendo maravilhas de programação funcional e a discussão “explícito versus implícito” apareceu novemente. Será que eu estou ficando para trás? Minha busca por sempre escrever código explícito acabou por me atrapalhar em entender novos conceitos?

No texto do Christian Drumm, ele compara três problemas resolvidos com ABAP “tradicional” e usando uma abordagem mais funcional (disponível a partir da versão 7.40). Os exemplos em ABAP tradicional são claros como água, aqueles usando novos comandos do ABAP ainda me parecem muito obscuros.

Será que estou me tornando um ABAPossauro?! Será que cachorro velho ainda pode aprender novos truques?

São respostas que terei que descobrir nesses próximos dias.

4 Responses

  1. abapzombie says:

    Grande Furlan, ao ler o seu post não pude deixar de lembrar de mim mesmo quando aprendi sobre closures em javascript ou sobre algumas técnicas usando yield em ruby. Fiquei com uma grande cara de WTF no começo, mas aos poucos a gente vai absorvendo e passa a ser menos WTF (para deixar de ser WTF por completo, acho que só com o tempo).

    Fiquei fora algumas semanas então não acompanhei a discussão de functional programming no SCN. Vou ler tudo e depois volto para comentar com mais propriedade. 🙂

    Abs!

  2. Fábio Pagoti says:

    Me ensina closures?

    Se rolar um prototype agradeço mais ainda!

  3. antelio says:

    Dilemas sempre ao nosso redor, fazer um puxadinho no que existe ou se faz um novo recomeço.
    Não tem como uma sintaxe funcional pegar em uma linguagem que herda de Cobol, Adabas. O legado sempre será permitido e sempre será o caminho mais fácil, simples e direto.
    Nem ao menos programação orientada a objeto (ou classe) pega direito.

  4. Flávio Furlan says:

    Isso é verdade, FP só virá com o tempo mesmo. Eu começo assistir os tutoriais e até entendo o conceito, mas a sintaxe ainda é um completo WTF! Mas como diz o conhecido ditado do Sr. João Andarilho: “Keep walking.”