Desenvolvimento

25 mar, 2019

Do clipper ao AdvPL

Publicidade

Não tem como falarmos da história e do crescimento da TOTVS sem falar sobre o AdvPL. Mas afinal de contas, o que significa essa sigla?

Provavelmente você já tenha ouvido falar neste termo em algum lugar na internet. Alguns a chamam de Advanced Programming Language, outros de Advanced Protheus Language.

Mas independente de como você tenha a visto, o AdvPL foi (e continua sendo) uma das chaves que sustentaram e impulsionaram o crescimento da empresa e a transformaram no que ela é hoje.

Para entender tudo isso precisamos começar do início. Em primeiro lugar, o AdvPL não é nada menos que a linguagem de programação proprietária da TOTVS. O que isso significa?

Quer dizer que todas as nossas soluções são baseadas e escritas em uma tecnologia que nós mesmos desenvolvemos! Isso não é incrível?

Entretanto, por mais incrível que isso possa parecer, tenho certeza que aí do outro lado da tela você deve estar se perguntando:

  • “Mas por que a TOTVS tem uma linguagem própria? As linguagens atuais não são suficientes?”

Essa pergunta não é nada mais do que justa. Para entender o real motivo de mantermos o desenvolvimento dessa linguagem a todo vapor, precisamos fazer uma breve viagem no tempo.

O tempo do Clipper x customização

Antes mesmo da TOTVS ter esse nome, sua história começou há muitos anos, com uma empresa chamada Microsiga (que mais tarde comprou a Datasul, RM e Logocenter, mudando assim o nome para TOTVS, unificando as marcas). Nesta época, a empresa vendia um produto chamado Siga Advanced.

Este produto nada mais era do que uma linha de softwares ERP (sistema integrado de gestão empresarial), ou seja, soluções que ajudavam na administração ponta a ponta das empresas.

Na época, usávamos o Clipper como tecnologia base para todas as soluções. E tudo andou muito bem por bastante tempo. Mas como alegria de desenvolvedor dura pouco, as dificuldades começaram a aparecer.

Primeiramente, como você já pode imaginar, o nosso ERP era um produto que precisava ser muito flexível. Isso significa que havia uma grande necessidade de que ele fosse customizável, que os campos, dados e respectivos metadados fossem adaptáveis ao contexto de cada um dos clientes. Osso duro de roer, né?

Além disso, com a evolução e aumento do número de clientes, o produto começou a evoluir a tal ponto que chegou um momento em que nosso ERP já possuía mais de 15 módulos (sendo que cada um era compilador em um executável). O compilador era 16 bits e a tecnologia simplesmente não estava mais dando conta.

Precisávamos de uma mudança ou então íamos atolar na lama

Foi então que surgiu o grande questionamento: “Qual linguagem adotar?”. No tempo, o Delphi era bastante forte e foi uma das opções a serem consideradas.

Um piloto foi rodado internamente mas, apesar do sucesso, não foi adotado, uma vez que exigiria que toda a base do ERP (que já existia em produção) fosse reescrita.

Diante desse problema gigante, acabou surgindo a ideia de criarmos nosso próprio ambiente de desenvolvimento.

Dessa forma conseguiríamos implementar tudo o que já tínhamos da nossa base e expandir a tecnologia para que atendesse às nossas demandas.

Foi neste ponto que surgiu o nosso tão querido AdvPL.

Estrutura do AdvPL

O AdvPL (Advanced Programming Language) é uma linguagem de programação padrão xBase (Clipper, Visual Objects e depois Fivewin) com comandos, funções, operadores, estruturas de controle de fluxo e palavras reservadas, que permite o desenvolvimento de programas seguidos do paradigma de orientação a objetos ou procedural.

Para atender às demandas da época e antecipar as tendências, o AdvPL foi construído sob uma arquitetura client-server de modo a aproveitar toda a base já existente e, além disso, acrescentar funcionalidades para que os desenvolvedores pudessem criar produtos ainda mais incríveis para os clientes por meio de integrações com interfaces como a web, e-mail, multimídia e outros ambientes.

Quando os códigos AdvPL são compilados, todos os arquivos de código fonte tornam-se unidades de inteligência básicas, chamadas de APOs (Advanced Protheus Objects).

Esses APOs são mantidos em um repositório e carregados dinamicamente pelo servidor de aplicação (TOTVS | Application Server) para a execução.

No entanto, não existe link edição ou união física do código compilado a um determinado ambiente ou aplicação, o que permite executar funções criadas em AdvPL em qualquer ponto do ambiente ERP.

O compilador e o interpretador da linguagem AdvPL é o próprio servidor de aplicação (Application Server), e existe um ambiente visual para desenvolvimento integrado (Development Studio), onde o código-fonte pode ser criado, compilado e depurado.

Legal, né?

Desenvolvimento da linguagem hoje

Como a tecnologia não para de evoluir, o AdvPL também não parou no tempo. Para manter a linguagem sempre relevante e competitiva com as novidades do mercado de desenvolvimento, dividimos a manutenção dela em dois segmentos paralelos: manutenção e inovação.

Dentro do primeiro tópico estamos falando de questões de correções de bugs e problemas relacionados (achou que não tínhamos problemas? Todos temos).

O segundo tópico que diz respeito a inovação envolve a nossa preocupação na construção do roadmap da linguagem. Para isso, envolvemos o estudo e testes intensos de funcionalidades para a linguagem junto aos clientes e nossas equipes internas  – afinal, o maior cliente do AdvPL somos nós.

No entanto, não ache que isso é uma tarefa fácil. Para conseguir fazer tudo isso acontecer de forma gradual e segura, precisamos de muito tempo e um carinho especial com todo o nosso código legado.

Este tem sido um dos primórdios da linguagem desde o seu início há 20 anos atrás: o respeito com o código antigo.

Outro ponto importante sobre o AdvPL é que ele segue a tendência mundial de integração entre tecnologias. Gosta de Python? JavaScript? TypeScript? Hoje já estamos integrados a todos eles nos mais diversos aspectos dos produtos.

O futuro está logo aí

Dentre os nossos próximos desafios, está o TL++, uma espécie de superset do AdvPL (do mesmo modo que o TypeScript está para o JavaScript).

Esse novo trabalho está trazendo novos recursos incríveis para a linguagem, como uma orientação a objetos mais robusta, tipagem forte e algumas quebras de limitações da plataforma (como o tamanho do nomes das variáveis, namespace e anotações).

Paralelo a tudo isso, também estamos seguindo para o nosso próximo grande desafio: a programação na nuvem.

Quer saber mais sobre o AdvPL? Fique ligado nos próximos artigos e ouça o nosso último podcast, que conta toda história da AdvPL.

Referências

***

Artigo original publicado no TOTVS Developers e republicado com a autorização: https://medium.com/totvsdevelopers/do-clipper-ao-advpl-3ca312ba5386