Quelle est une bonne alternative à la variable de nom pour une langue qui n'a que des références ou des étiquettes immuables?

11

Par exemple, dans les langages fonctionnels, les variables sont à affectation unique et leurs valeurs sont immuables une fois affectées. Ils ont donc deux états non liés et liés , une fois liés, ils ne peuvent pas être modifiés.

Y a-t-il un terme mathématique ou un autre terme informatique qui est le plus approprié pour telle chose? Quelque chose qui n'implique pas sémantiquement la variance ou la mutabilité.

Sinon, il n'existe pas de terme et si vous conceviez un langage qui avait de telles constructions, quelle autre que la variable de mot utiliseriez-vous pour celles-ci?

Je ne cherche vraiment sondage des idées, je suis en train de déterminer s'il y a déjà une industrie acceptée (tout secteur) à long terme pour une telle chose.


la source
1
Appelez-les simplement immutables ;)
Oded
variable finale?
smp7d
9
Le terme mathématique pour ces types de variables serait "variable". Le concept de variable mutable n'existait vraiment que lorsque les langages de programmation étaient entrés en scène.
sepp2k
1
Je ne suis pas d'accord avec @ sepp2k. Le terme "variable" a été introduit par Leibniz dans son développement du calcul différentiel, et il fait partie des mathématiques et de la physique depuis lors. Ces quantités variables ont nécessairement besoin de pouvoir changer. Sinon, l'idée de $ \ Delta x $ ou $ dx $ n'a aucun sens.
Michael Bächtold
1
@ sepp2k je ne suis pas d'accord. Il existe un concept de réaffectation en mathématiques, bien qu'il ne soit pas traditionnellement appelé ainsi. Les mathématiciens introduisent constamment des variables dites x, y dans leur contexte (sans leur attribuer une valeur) et supposent quelque chose à leur sujet, disons y + x = 5. Ils peuvent ensuite supposer que x = 1 et conclure y = 4. Ils peuvent abandonner l'hypothèse x = 1 et assumer x = 2 à la place, et conclure y = 3. Pour moi, c'est un changement de x, et nous parlons toujours de la même variable x, car l'hypothèse x + y = 5 est vraie dans les deux contextes.
Michael Bächtold

Réponses:

4

Et le "symbole"?

J'ai vu une vidéo sur F # où l'orateur a dit:

vous n'attribuez une valeur à une variable de vous lier une valeur à un symbole .

(Toujours à la recherche de la référence pour cela.)

Chaque fois que je rencontre le mot «variable» dans des endroits où de telles constructions sont immuables, je pense silencieusement «symbole lié».

harpo
la source
10

Appelez-les simplement des variables. Les mathématiques ont des variables; les langages fonctionnels ont le même type de variables.

Voir également cet essai de Bob Harper sur cette question de terminologie .

Ryan Culpepper
la source
Bien que cela corresponde à ce que je cherchais, le lien fourni suscite plus de débats que de réponses.
@JarrodRoberson, prenez simplement l'essai lié comme "pourquoi la variable est un terme approprié"; n'hésitez pas à ignorer la partie sur les "assignables".
Ryan Culpepper
1
oui, les assignables sont une sorte de redingue dans cette discussion. Mais personnellement , je suis toujours sémantiquement coincé sur la varier partie de les variables et le fait que la science informatique n'est pas une corrélation directe à 100% à des termes mathématiques dans beaucoup de cas.
4

C'est toujours une variable si elle peut prendre différentes valeurs dans différentes invocations. En d'autres termes, même s'il ne peut pas être modifié une fois attribué, ce symbole peut être affecté initialement à différentes valeurs. Cela contraste avec une constante qui contient la même valeur chaque fois qu'elle est invoquée.

Karl Bielefeldt
la source
1

constant, ou const serait probablement familier aux personnes utilisant des langages tels que C et C ++,

Nemanja Trifunovic
la source
1

Nom . La même chose peut être raisonnablement appelée par plusieurs noms ( x = 4; y = 4); et un nom, une fois défini, ne change jamais de référent. x = 2; x = 3n'a pas autant de sens que de dire qu'une pieuvre n'est pas une pieuvre.

Jon Purdy
la source
J'aime ça, j'envisageais le terme labelmais ça namemarche bien et sinon mieux.
0

Pourquoi ne pas simplement s'en tenir à ce terme? Ce n'est peut-être pas approprié à 100%, mais lorsque vous choisissez un nom différent, cela causera probablement plus de malentendus que ceux que vous essayez de résoudre. Les concepteurs d'autres langages fonctionnels peuvent avoir le même problème, mais ils décident d'utiliser le terme "variable" non plus.

XSLT (qui est largement utilisé):

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

Haskell:

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

Schème:

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

Erlang:

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

Tous utilisent également le terme "variable".

Bien sûr, d'autres concepteurs de langage préfèrent parler de "liaisons" ou de "valeurs liées", comme ici pour F #:

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

Doc Brown
la source
0

Selon le contexte, "variable" ou "liaison" fonctionnerait. Je pense que "contraignant" est plus susceptible d'apparaître dans des déclarations comme letdans Haskell ou Lisp.

Tikhon Jelvis
la source