Glossário do AdvPL – Parte 01

Intodução

“Um glossário é uma lista alfabética de termos de um determinado domínio de conhecimento com a definição destes termos. Tradicionalmente, um glossário aparece no final de um livro e inclui termos citados que o livro introduz ao leitor ou são incomuns.” — Wikipédia

O que mais temos no mundo da informática são terminologias, siglas, acrônimos, etc. Alguns deles são comuns em desenvolvimento de software — independente da plataforma — e outros são específicos ou relacionados ao contexto de um sistema específico.  A ideia do glossário AdvPL é dar uma breve explicação sobre cada palavra ou terminologia, onde existem termos genéricos, e dentre eles alguns aplicam-se ao Protheus, ao ERP Microsiga e a linguagem AdvPL. E, este Glossário está em ordem “Analfabética” 😀

Glossário

AdvPL — Linguagem de programação com sintaxe xBase – como o CA Clipper — desenvolvida e implementada pela TOTVS em um ambiente de desenvolvimento Client-Server — chamado por Protheus — usada principalmente pela linha de produtos do ERP Microsiga.

Variável local — (ou variável de escopo local) É uma variável declarada dentro do corpo de uma função ou método através do statement “Local“, que indica que esta variável somente pode ser endereçada (ou referenciada) dentro do corpo da função ou método.

Variável privada — (ou variável de escopo privado) É uma variável declarada com o statement “Private“, ou inicializada através de atribuição de conteúdo sem declaração, dentro de uma função ou método. Ela torna-se visível para a função ou método atuais em tempo de execução a partir do momento que é declarada ou inicializada, e também é visível para funções ou métodos chamados no AdvPL a partir da função atual que a declarou.

Variável estática — (ou variável de escopo estático) É uma variável declarada explicitamente usando o statement “Static” dentro de um fonte AdvPL, fora do corpo de qualquer função ou método. Esta variável é visível e pode ser endereçada apenas por funções ou métodos declarados no mesmo arquivo-fonte, e criada em tempo de execução uma vez que qualquer função ou método daquele fonte seja chamado pela primeira vez durante a execução da aplicação.

Variável pública — (ou variável de escopo público) É uma variável explicitamente declarada com o statement “Public“, e uma vez declarada, ela torna-se visível a partir daquele momento para qualquer função ou método executado a parir de então, em qualquer ponto da pilha de chamadas (ou Stack).

Função estática — Função declarada explicitamente em um fonte AdvPL, usando o statement “STATIC Function“,somente é visível e pode ser chamada por funções ou métodos de classe declarados no mesmo arquivo-fonte AdvPL.

Função pública — Qualquer função não estática declarada no AdvPL — Inclusive uma USER Function — é uma função pública, sendo visível e passível de ser chamada qualquer outro programa AdvPL compilado no mesmo RPO — Repositório de Objetos.

Bloco de Código (Codeblock) — É o nome dado a um tipo de dado no AdvPL, usado para armazenar uma função anônima em uma variável, que pode ser passada e executada em outros pontos do código, fazendo referências inclusive a variáveis de escopo local.

RPO — Acrônimo de Repository of Protheus Objects, (também conhecido simplesmente por “Repositório”), é o termo usado no Protheus para identificar o arquivo ou container gerado pela compilação dos códigos AdvPL, usado para guardar o código -fonte AdvPL compilado.

IDE — Acrônimo de Integrated Development Environment, foi a primeira versão da ferramenta do ambiente tecnológico do Protheus que permite ao desenvolvedor de software programar, compilar e fazer debug do código AdvPL.

TDS — Acrônimo de Totvs Developer Studio, é a versão nova — evolução do IDE, baseada no Eclipse — do ambiente de desenvolvimento AdvPL. Possui também funcionalidades de monitoramento, gerenciamento de ambiente, Profiler, Replay e outras novidades.

LOG – Trata-se de um registro de atividades relevantes de um programa. Normalmente o servidor de aplicação AdvPL ( ou Application Server, ou Protheus Server), o DBAccess e o próprio ERP possuem registro de LOG. Estes registros podem ser gravados em arquivos com nome pré-determinado pela aplicação em formato TEXTO no sistema de arquivos, ou em algum SGDB (Banco de Dados).

ERRO – A palavra em si pode ter um significado realmente amplo. Não fazer algo que deveria ser feito, ou fazer pela metade, ou não fazer direito, conceitualmente caracteriza um “erro”. Porém, em AdvPL, convencionamos que “ERRO é uma ocorrência sistêmica não tratada, que interrompe e impede um processamento, gerando um LOG”. 

ACCESS VIOLATION — Forma reduzida da expressão “Memory Access Violation“, normalmente registrada pelo sistema operacional logo após a finalização anormal (ou QUEDA) de um serviço ou programa, devido a uma tentativa de acesso de um endereço inválido de memória.

SEGMENT FAULT —  Exatamente a mesma coisa que um “Access Violation”, porém esta ocorrência é emitida no Linux.

SGBD – Acrônimo de “Sistema Gerenciador de Banco de Dados“, é o nome dado a uma aplicação que gerencia, armazena e consulta informações — popularmente conhecido como apenas Banco de Dados.

Passar por Referência — Chamar uma função ou método usando o operador “@” antes da variável, para sinalizar ao Runtime do AdvPL que o parâmetro recebido pela função não é uma cópia — ou clone — da variável, mas sim uma referência da variável do escopo da chamada. Isto permite que uma função possa atribuir um novo valor na variável declarada na função como parâmetro, e esta atribuição na verdade seja feita na variável informada na chamada da função.

Referência implícita — Comportamento da passagem de parâmetros Advpl do tipo “B” (Codeblock), “O” (Objeto) e “A” (Array), onde naturalmente a variável é passada como argumento para a função por referência, sem o uso do operador “@“, por causa do conteúdo da variável.

Variável Global — Nome dado a um identificador, para permitir múltiplos programas em execução no mesmo Application Server a ler e gravar valores em uma mesma área de memória compartilhada. Em AdvPL, não existe um tipo global nativo declarado, as variáveis globais nomeadas são acessadas através de funções criadas para este fim.

Cache — Nome dado ao procedimento de usar uma área de memória (variável local, global, ou mesmo um serviço dedicado acessado por API) para armazenar identificadores e conteúdos previamente lidos — normalmente de um Banco de Dados — para que, o acesso a este valor seja feito a partir do último valor armazenado na memória — ao invés de realizar mais um acesso ao SGDB, que fatalmente terá mais custo de tempo e recurso do que pegar o valor da memória.

Leitura suja — Nome dado a um comportamento, normalmente do Banco de Dados, de permitir que uma consulta qualquer leia dados vindos de uma transação que ainda não fez commit.

Algoritmo recursivo — Lógica de programação de uma rotina ou sub-rotina, que durante o processamento, realiza chamadas para a própria rotina. Por exemplo, fazer uma busca ou varredura em todos os elementos de uma árvore. A função recebe o nó principal da árvore como parâmetro, e faz a varredura dos nós filhos, fazendo um loop e chamando novamente a função de busca, passando em cada chamada nó em questão. Uma função recursiva normalmente possui uma forma não recursiva de ser escrita.

JOB — Nome dado ao início de um processo sem dependência ou amarração de nenhuma interface.

RPC — Acrônimo de Remote Procedure Call, um recurso disponibilizado entre sistemas operacionais para permitir uma chamada de execução de aplicação em outra máquina. Em AdvPL, existe uma interface nativa para permitir um processo a estabelecer uma conexão sem interface com um outro Protheus Server, e executar chamadas de funções no ambiente alvo da conexão TCP, que pode estar no mesmo equipamento servidor ou em outra máquina.

LOOP – Ação de executar um trecho do código por repetidas vezes — chamadas iterações — até que uma condição pré-estabelecida se apresente, fazendo a aplicação sair do LOOP e continuar sua execução.

LOOP INFINITO — Devido a um erro de lógica na construção da rotina, ou um comportamento inesperado ou anormal de alguma instrução ou componente dentro do trecho de código em LOOP, a condição se saída nunca acontece, fazendo o programa executar indefinidamente aquele trecho de código, até que a aplicação seja derrubada ou finalizada externamente.

Application Server Nome pelo qual é conhecido o servidor de aplicação AdvPL — responsável por atender a conexões da aplicação SmartClient e executar código AdvPL. Também chamado de “Protheus Server”.

SmartClient — Aplicação Cliente do AdvPL, responsável por executar programas AdvPL com interface gráfica nativa. Também conhecida de versões anteriores como “Protheus Remote”.

PAU — Amigo(a), um sistema não têm “pau”. Ele pode ter uma não conformidade, um comportamento não esperado, uma falha na lógica de implementação. Pau é um pedaço de madeira 😉

Lentidão — Normalmente diz-se que uma função ou oma tarefa apresenta lentidão (ou mais elegantemente, perda de desempenho ou desempenho inadequado) quando a tarefa não é executada em um tempo aceitável perante a complexidade da tarefa e o volume de dados. Uma medida de desempenho baseada em tempo é sempre relativa, isto é, quando comparamos a tarefa X sendo executada na condição X e no ambiente Y, a mesma tarefa X em outro ambiente, ou com outra condição, ou com após uma atualização de um dos componentes do ambiente Y ( RPO de Produto, RPO de LIb/Framework, Binário, etc) apresenta desempenho pior.

Binário — O significado é amplo, mas aplicado ao AdvPL, nomeamos como “Binário” qualquer componente executável ou de link dinâmico (EXE e/ou DLL/SO). O Protheus Server, o Smartclient, o DBAccess, são componentes binários da tecnologia Protheus. Como existem vários tipos de atualização — RPO, Patches de RPO , Binários e configurações, quando alguém diz que “atualizou o ambiente”, é necessário saber e informar quais componentes foram atualizados e quais eram as versões e builds anterior e atual para facilitar os processos na identificação por não conformidades na aplicação.

Update sem Where — Trata-se da aplicação direta em um banco de dados relacional (SGBD) de uma instrução que atualiza uma ou mais colunas de uma tabela, onde faltou especificar uma condição para que apenas alguns — e não TODOS —  registros fossem atualizados. É considerado um erro primário, que quando feito em um banco de dados oficial (ou em produção), pode causar sérios transtornos — pois você vai ter que restaurar uma cópia recente desta tabela de um backup para obter de volta os dados antes da atualização.

Conclusão

O Glossário é um tópico sem fim, conforme aparecerem mais terminologias a serem enumeradas, novos posts vão saindo.

Desejo a todos novamente TERABYTES DE SUCESSO !!! 

Referências

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s