A morte do AdvPL!?

Cristiano Denardi Alarcon
TOTVS Developers
Published in
3 min readJun 27, 2024

A essa altura do campeonato qualquer desenvolvedor Protheus já deve pelo menos ter ouvido sobre o TLPP, a nova linguagem da TOTVS que veio “substituir” o AdvPL, bom companheiro de muitas batalhas.

Então agora você deve estar pensando:

[1] “Bom, por um lado é bom, pois se estão investindo em uma nova linguagem é sinal que vem recursos novos.”

[2] “Porém, como ficam as inúmeras implementações já feitas em AdvPL? Teremos que migrar? Pensando rápido, só em Protheus estamos falando algo em torno de milhões de linhas de código. Sem contar as inúmeras customizações em clientes.”

[3] “E a curva de aprendizado? não é possível que agora que me tornei Sênior em AdvPL volto para Júnior pois nada sei de TLPP e terei que recomeçar.”

[4] “Acho que tudo isso já me fez cansar e vou ficar com o AdvPL até quando não for mais possível. Até lá já lançarão migradores de códigos e nem vai doer. É, vou esperar!!!”

São muitas dúvidas e todas são válidas, eu mesmo já passei por essa fase e hoje sou um desenvolvedor TLPP convicto, então gostaria de transmitir através da minha experiência um pouco de luz às suas inseguranças.

Portanto, vamos item a item:

1 De fato o TLPP traz recursos bem interessantes há muito tempo solicitado pelos desenvolvedores e nesse ponto posso afirmar, eu não consigo mais programar sem o TLPP.

Recursos como namespace, nomes longos, annotations, tipagem forte, parâmetros nomeados, try…catch entre outros que, além de viabilizar muitas soluções, trazem agilidade no desenvolvimento e qualidade para o código.

Olha como é simples utilizar os recursos escrevendo um teste com PROBAT:

#include "tlpp-probat.th"

namespace test.unit // TLPP: Determino uma [NAMESPACE]

// TLPP: Aplico a [ANNOTATION] do PROBAT
@TestFixture( suite='artigo', priority=1 )
// TLPP: Função com [NOME LONGO] e retorno [TIPADO]
function U_exemploParaDemonstrarNomesLongos() as logical

// TLPP: Variáveis com [NOMES LONGOS] e [TIPADAS]
local cStringDecoded as character
local cStringEncoded as character
local lResultAssert as logical
local cResultAssert as character
local cErrorDescription as character

cStringDecoded := 'I love TLPP'
cStringEncoded := 'SSBsb3ZlIFRMUFA='

// TLPP: [TRY...CATCH]
try
cResultAssert := Encode64( cStringDecoded )

// TLPP: [PARÂMETROS NOMEADOS]
lResultAssert := tlpp.probat.assertEquals(;
xValue=cResultAssert,;
xExpected=cStringEncoded;
)

catch oError
lResultAssert := .F.
cErrorDescription := oError:description
endtry

if ( lResultAssert )
/*
----------------------------------------------------
TLPP:
Inverti a ordem dos parâmetros e ainda assim funciona,
pois estou utilizando [PARÂMETROS NOMEADOS].
----------------------------------------------------
*/
lResultAssert := tlpp.probat.assertEquals(;
xExpected=cStringDecoded,;
xValue=Decode64(cResultAssert);
)
else
tlpp.probat.assertError(;
cError = 'Encode64() fail: ' + cValToChar( cErrorDescription );
)
endif

return .T.

2 Essa dúvida talvez seja a mais frequente entre os desenvolvedores e portanto iremos direto ao ponto.

Os fontes em AdvPL não serão extintos e nem ficarão obsoletos ao ponto de um dia parar de funcionar. O AdvPL NÃO MORRERÁ \o/.

Programas em TLPP e AdvPL coexistirão e os recursos serão compartilhados entre eles.

O principal ponto é que os novos recursos somente são disponibilizados para fontes em TLPP, então para usá-los você terá que utilizar código-fonte “.tlpp”.

3 Garantimos que seus conhecimentos não serão perdidos por alguns motivos:

  • O AdvPL permanecerá! Manutenção e evolução em programas já existentes farão parte do seu dia a dia.
  • A sintaxe do TLPP é muito similar ao AdvPL e apenas será necessário aprender os recursos novos, sendo assim, é o mesmo esforço que aprender sobre uma nova rotina, nada que qualquer desenvolvedor não tenha em seu DNA.

Não será um recomeço e sim uma evolução em sua carreira.

Além disso, tenho a plena convicção que vocês curtirão demais os novos recursos e assim como eu, não viverão mais sem eles.

4Como já sabemos que o AdvPL não morrerá e portanto, não haverá ruptura, então você pode aprender aos poucos os novos recursos e ir gradualmente adicionando fontes TLPP em seus projetos. Sem pressa mas em constante aprendizado, logo você fará grandes voos em TLPP.

E para facilitar nesse processo, em breve disponibilizaremos novos artigos, “Por que programar em TLPP?” e “Como iniciar e migrar para o TLPP?”.

Fiquem atentos nos próximos dias!

Por fim, desejamos uma excelente jornada com o TLPP.

--

--

Cristiano Denardi Alarcon
TOTVS Developers

Dev especializado em TLPP e AdvPL. Atua na equipe TOTVSTEC tlppCore. Interessado em compartilhar conhecimento e experiências sobre desenvolvimento de software.