Qual é uma boa alternativa para a variável name para um idioma que possui apenas referências ou rótulos imutáveis?

11

Por exemplo, nas linguagens funcionais, as variáveis são de atribuição única e seus valores são imutáveis ​​depois de atribuídos. Portanto, eles têm dois estados ilimitados e limitados ; uma vez vinculados, eles não podem ser alterados.

Existe algum termo matemático ou outro termo de ciência da computação que seja mais apropriado para algo como coisa? Algo que semanticamente não implica variação ou mutabilidade.

Se não existir, como termo, e se você estiver projetando uma linguagem que tenha essas construções, que outra variável além da palavra você usaria para isso?

Estou não realmente olhando para pesquisa de ideias, estou tentando descobrir se já existe uma indústria aceite (qualquer setor) prazo para tal coisa a.


fonte
1
Basta chamá-los de imutáveis ;)
Oded
variável final?
smp7d
9
O termo matemático para esses tipos de variáveis ​​seria "variável". O conceito de uma variável mutável realmente não existia até que as linguagens de programação entrassem em cena.
sepp2k
1
Não concordo com @ sepp2k. O termo "variável" foi introduzido por Leibniz em seu desenvolvimento do cálculo diferencial e faz parte da matemática e da física desde então. Essas quantidades variáveis ​​precisam necessariamente da possibilidade de mudar. Caso contrário, a ideia de $ \ Delta x $ ou $ dx $ não faz sentido.
Michael Bächtold 26/03
1
@ sepp2k eu discordo. Não é um conceito de re-atribuição em matemática, embora tradicionalmente não se chama assim. Os matemáticos constantemente introduzem variáveis ​​digam x, y em seu contexto (sem atribuir-lhes um valor) e assumem algo sobre elas, digam y + x = 5. Em seguida, eles podem assumir que x = 1 e concluir y = 4. Eles podem abandonar a suposição x = 1 e assumir x = 2 e concluir y = 3. Para mim, isso é uma mudança em x, e ainda estamos falando da mesma variável x, já que a suposição x + y = 5 é válida em ambos os contextos.
Michael Bächtold 27/03

Respostas:

4

E o "símbolo"?

Eu vi um vídeo no F # onde o orador disse:

você não atribui um valor a uma variável , vincula um valor a um símbolo .

(Ainda procurando a referência para isso.)

Sempre que encontro a palavra "variável" em lugares onde essas construções são imutáveis, silenciosamente penso "símbolo de ligação".

harpo
fonte
10

Apenas chame-os de variáveis. A matemática tem variáveis; linguagens funcionais têm o mesmo tipo de variáveis.

Veja também este ensaio de Bob Harper sobre esta questão terminológica .

Ryan Culpepper
fonte
Enquanto isso está na linha do que eu estava procurando, o link fornecido apenas gera mais debate do que respostas.
@JarrodRoberson, considere o ensaio vinculado como "por que variável é um termo apropriado"; fique à vontade para ignorar a parte sobre "atribuíveis".
Ryan Culpepper
1
sim, os atribuíveis são uma espécie de arenque nessa discussão. Mas pessoalmente eu ainda estou semanticamente preso no variam parte de variáveis e esse fato que a informática não é um 100% correlação direta com termos matemáticos em lotes de casos.
4

Ainda é uma variável se puder assumir vários valores em diferentes invocações. Em outras palavras, mesmo que não possa ser alterado depois de atribuído, esse símbolo pode ser atribuído a diferentes valores inicialmente. Isso contrasta com uma constante que contém o mesmo valor toda vez que é invocada.

Karl Bielefeldt
fonte
1

constant ou const provavelmente familiar a pessoas que usam linguagens como C e C ++,

Nemanja Trifunovic
fonte
1

Name . A mesma coisa pode ser chamada razoavelmente por vários nomes ( x = 4; y = 4); e um nome, uma vez definido, nunca muda seu referente. x = 2; x = 3faz tão pouco sentido quanto dizer que um polvo não é um polvo.

Jon Purdy
fonte
Eu gosto disso, eu estava considerando o termo, labelmas namefunciona muito bem, se não melhor.
0

Por que não ficar apenas com esse termo? Pode não ser 100% apropriado, mas quando você escolhe um nome diferente que provavelmente causará mais mal-entendidos do que os que você tenta resolver. Designers de outras linguagens funcionais podem ter o mesmo problema, mas também decidiram usar o termo "variável".

XSLT (amplamente utilizado):

http://www.w3schools.com/xsl/el_variable.asp

Haskell:

http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-240003.2

Esquema:

http://www.scheme.com/tspl2d/binding.html

Erlang:

http://www.erlang.org/doc/reference_manual/expressions.html

Todos eles também estão usando o termo "variável".

Obviamente, outros designers de linguagem preferem falar de "ligações" ou "valores vinculados", como aqui para F #:

http://msdn.microsoft.com/en-us/library/dd233238.aspx

Doc Brown
fonte
0

Dependendo do contexto, "variável" ou "ligação" funcionaria. Eu acho que "obrigatório" é mais provável que apareça em declarações como letem Haskell ou Lisp.

Tikhon Jelvis
fonte