Dúvidas Frequentes

Há tipos recursivos em PIG?

Para os tipos recursivos na linguagem seria necessário ter alocação dinâmica de memória em heap. Como não teremos esse recurso, a estrutura recursiva inteira deveria definida estaticamente (isto é, "hard coded" pelo programador), o que não tem muita utilidade. Sendo assim, não temos tipos recursivos.

A ausência de tipos recursivos não deve causar muito prejuízo, já que a natureza dos problemas em computação gráfica, processamento de imagem e geometria computacional geralmente não envolve recursão (ou ela é evitada a todo custo).

Existe alias em PIG?

Aliasing se refere a existência de dois ou mais nomes para acessar o mesmo endereço de memória. A maioria das linguagens permitem alguma forma de \textit{aliasing} -- ponteiros podem apontar para o mesmo endereço; referências podem indicar o mesmo objeto; tipos podem ser apelidados; uniões permitem acessar o mesmo endereço de memória de duas formas diferentes; operadores podem ser sobrecarregados; constantes/enumerações podem "renomear" literais.

A existência de aliasing na linguagem é uma complicação para a redigibilidade dos programas, uma vez que, no geral, não há indicadores de que duas variáveis referenciam um mesmo endereço de memória. Pela mesma razão surgem os problemas de segurança: alterar a variável via um alias automaticamente altera o outro, e pode não ser claro quando ou onde a mudança ocorre. O exemplo clássico é quando dois ponteiros apontam para o mesmo endereço e deletamos a variável via um deles: o outro ponteiro é invalidado e o programador é forçado a ter isso em mente para não cometer erros. Além disso, aliasing complica a verificação formal de programas.

Na linguagem PIG, temos:

  • passagem de parâmetros por referência usam referências;
  • sobrecarga de funções e operadores (e funcoes, que ta incluso em operadores).

results matching ""

    No results matching ""