Transparência referencial

A transparência referencial é uma característica de partes de programas de computador. Uma parte de um programa é chamada de "referencialmente transparente" se ela puder ser substituída pelo valor que ela devolve sem alterar o comportamento do programa. Uma função referencialmente transparente deve ser pura - deve sempre dar a mesma saída se receber a mesma entrada, e não deve ter nenhum efeito colateral - partes do programa que executam uma ação que não seja a de devolver um valor. O oposto de transparência referencial é a opacidade referencial.

Em matemática, todas as funções são referencialmente transparentes, porque uma função matemática só pode pegar valores para dentro e cuspir um valor para fora. Na programação, isto nem sempre é verdade - uma função pode também descobrir que dia do ano é, ou imprimir uma mensagem para a tela. Devido a esta diferença, algumas pessoas usam outros nomes para funções na programação, como procedimentos.

A transparência referencial permite que programadores e compiladores pensem no código como um sistema de reescrita - algo que pega uma expressão e a substitui por algo mais. Isto pode ajudar em várias tarefas, como por exemplo:

  • Provar que o programa ou código está correto - que ele faz exatamente o que deve fazer, não importa o que aconteça.
  • Tornando um algoritmo mais simples.
  • Tornando mais fácil mudar o código e, ao mesmo tempo, ter certeza de que ele faz o que é suposto fazer.
  • Fazendo o código funcionar mais rápido ou de uma forma que use menos memória.

Há várias maneiras de se fazer a última tarefa - as mais conhecidas são a memorização (salvar respostas após a primeira vez), a eliminação da subexpressão comum (descobrir se vale a pena combinar duas partes do código que são iguais), a avaliação preguiçosa (não encontrar a resposta até que o código realmente precise dela) e a paralelização (trabalhar em vários problemas ao mesmo tempo).

Perguntas e Respostas

P: O que é transparência referencial?


R: A transparência referencial é uma característica de partes de programas de computador onde uma parte do programa pode ser substituída pelo valor que ela devolve sem alterar o comportamento do programa.

P: O que é o oposto de transparência referencial?


R: O oposto de transparência referencial é a opacidade referencial.

P: Todas as funções na matemática são referencialmente transparentes?


R: Sim, todas as funções em matemática são referencialmente transparentes, porque uma função matemática só pode receber valores e cuspir um valor.

P: Como a transparência referencial ajuda os programadores e compiladores?


R: A transparência referencial permite aos programadores e compiladores pensar em código como um sistema de reescrita - algo que toma uma expressão e a substitui por algo mais. Isso ajuda em tarefas tais como provar que o programa ou código está correto, tornando um algoritmo mais simples, tornando mais fácil mudar o código enquanto ainda se tem certeza de que ele faz o que deve fazer, e fazendo o código funcionar mais rápido ou usar menos memória.

P: Quais são algumas técnicas usadas para fazer o código rodar mais rápido ou usar menos memória?


R: Algumas técnicas usadas para fazer o código rodar mais rápido ou usar menos memória incluem memorização (salvar respostas após a primeira vez), eliminação de subexpressão comum (descobrir se vale a pena combinar duas partes do código que são iguais), avaliação preguiçosa (não encontrar a resposta até que o código realmente precise dela), e paralelização (trabalhar em múltiplos problemas ao mesmo tempo).

P: Há alguma diferença entre as funções na programação, em comparação com as funções na matemática?


R: Sim, há uma diferença entre as funções na programação em comparação com aquelas na matemática -Na programação, uma função pode também descobrir em que dia do ano ela é ou imprimir uma mensagem para a tela, enquanto isso não é possível com funções matemáticas.

AlegsaOnline.com - 2020 / 2023 - License CC3