Conhecendo a linguagem TL++

Como muitos analistas me perguntam, hoje vim trazer um overview sobre a linguagem TL++, a evolução da AdvPL.

É galerinha, quando eu fazia parte da Engenharia de Software da TOTVS há uns 6 anos atrás (via antigo ByYou / Fluig), o projeto ainda era um esboço chamado de AdvPL++, hoje ele já está no mercado, e essa linguagem é chamada TL++ (TOTVS Language Plus Plus ou “Tê – Élé – Mais – Mais”).

Entre as novidades, algumas limitações que vinham do antigo Clipper foram quebradas, porém ainda existem muitos mistérios entre a comunidade, e aqui vim falar alguns deles (dos que sei pelo menos rs). Abaixo alguns recursos e características sobre a TL++:

  • Extensão de arquivo é .tlpp
  • Modelo padrão MVC em AdvPL não funcionará em TL++ (por causa da ModelDef e ViewDef serem estáticas)
  • Melhorias em orientação a objetos (como encapsulamento, métodos estáticos e annotations)
  • Utilização de namespaces
  • Suporte nativo a JSON
  • Nomes longos em funções, variáveis, etc (antes o limite era de 10 caracteres)
  • Disponibilização de Tipagem Forte de dados (esse é possível usar em AdvPL)

Sabendo de algumas dessas características, vamos ver um pequeno exemplo abaixo, onde eu montei uma User Function simples apenas para testar o nome de variáveis (o nome do arquivo que eu fiz foi zTst.tlpp):

/*/{Protheus.doc} zFuncaoTesteTLPP
Funcao de teste do TL++
@author Atilio
@since 20/06/2020
@version 1.0
@type function
@obs Se fosse em AdvPL, o nome da User Function iria ate zFuncaoT (por causa do u_)
/*/

User Function zFuncaoTesteTLPP()
    Local nVariavelComNomeGrande AS NUMERIC
    Local nVariavelComNomeGrande2 AS NUMERIC

    //Antes em AdvPL, nesse momento ele iria considerar apenas os 10 primeiros caracteres, logo as duas variaveis seriam nVariavelC
    nVariavelComNomeGrande := 10
    Alert(nVariavelComNomeGrande2)
Return

E agora o print, demonstrando que ambas as variaveis, existem e possuem valor distinto na memória.

Exemplo de programa

A intenção da linguagem é ser o back-end, enquanto o PO-UI (antigo Portinari) ficaria encarregado do front-end. Porém, todavia, no entanto, entretanto… Não é apenas renomear um arquivo de .prw para .tlpp, e achar que já está programando em TL++.

Se você fizer isso, é o mesmo que criar um arquivo em .cpp (C++) e utilizar comandos e recursos da Linguagem C pura. Acontece que existem bibliotecas específicas da TL++, que não foram ainda liberadas para desenvolvedores externos utilizar.

Eu conversei com um amigo meu da TOTVS Matriz, e ele me disse que a posição de liberação da linguagem, é esperar a garantia estendida de algumas releases do Protheus finalizar, para daí sim liberar ao público, talvez por isso vemos pouquíssimos exemplos de TL++ na internet.

Então jovem, não precisa ficar afobado, no tempo certo as bibliotecas estarão disponíveis para nós. Enquanto isso, aproveite a boa e velha programação em AdvPL.

Caso você queira ir dando uma aprofundada na linguagem, segue documentação oficial do TDN: https://tdninterno.totvs.com/pages/viewpage.action?pageId=334340072

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

6 Responses

  1. Patini disse:

    muito boa explicação Grande Daniel San……como sempre dando uma aula…..

  2. Maicon Macedo disse:

    Professor, excelente artigo.
    Considerando o tempo decorrido desde a publicação do seu artigo, pode nos dizer se a TOTVS já liberou as bibliotecas específicas do TL++?
    Eu vi algumas referências em dois artigos do TDN, mas não tenho ideia de como obter essas bibliotecas. São estes dois artigos aqui:
    https://tdn.totvs.com/display/tec/Downloads
    https://tdn.totvs.com/pages/viewpage.action?pageId=555860439

    Pode nos ajudar de alguma forma?

    Obrigado pelo constante apoio.

  3. Maicon Macedo disse:

    Perfeito, grande mestre.
    Eu já havia lido a sua publicação, mas não havia testado. Vou colocar isso na minha lista de atividades.
    Muito obrigado pelo retorno.

Deixe uma resposta para PatiniCancelar resposta

Terminal de Informação