Como é possível programar utilizando apenas variáveis imutáveis / “somente leitura”?

5

Acredito que há idiomas em que todos os nomes com valores associados não podem ter seus valores associados alterados. Um exemplo seria uma linguagem em que todos os nomes se comportam como a no código C a seguir:

int main(void)
{
  const int a = 0;
  a = 1;
}

, ou seja, todos os nomes agem como o que C chama de "variável somente de leitura" aqui.

Eu sei que certas construções, como o loop for de C, não seriam possíveis se não fosse possível reatribuir variáveis. Mas acredito que os idiomas em que as variáveis são exclusivamente de leitura usarão funções recursivas de cauda para realizar o looping.

Se uma linguagem não permite atribuir novos valores a variáveis, quais recursos (como a recursão da cauda, no exemplo acima) são necessários para permitir a gravação de programas, que de outra forma seriam difíceis / impossíveis de escrever sem redesignação? / p>     

por Jackson 18.09.2016 / 20:29
fonte

1 resposta

7

Com apenas constantes e sem quaisquer variáveis, todos os seus programas seriam totalmente previsíveis e - através de propagação constante - poderiam ser simplesmente reescritos, produzindo diretamente a saída esperada.

Como você gerenciaria a entrada do usuário nesse mundo? Como você definiria funções aritméticas simples, como f (x) = x ^ 2 sem precalcular e embutir em seu programa uma infinidade de combinações?

No entanto, existem vários idiomas funcionais . Nestes você tem constantes como em qualquer idioma. Mas também variáveis / parâmetros, que podem ter um valor (por exemplo, parâmetro de função, entrada do usuário), mas não podem ser alterados depois disso. Então, não falamos sobre constantes, mas sobre variáveis imutáveis .

Nesta abordagem funcional, você pode escrever programas com a expressividade completa de uma máquina de tingir . O código é mais fácil de analisar em termos de propagação de valor, já que cada função é sem estado (isto é, depende apenas da entrada da função). E você não precisa lidar com efeitos colaterais em variáveis globais ou locais. Tenha em mente, no entanto, que tal linguagem funcional (por exemplo, Caml , ou F # ) ainda não são mainstream.

    
por 18.09.2016 / 22:20
fonte