¿Cuál es una buena alternativa a la variable de nombre para un lenguaje que solo tiene referencias o etiquetas inmutables?

11

Por ejemplo, en lenguajes funcionales, las variables son de asignación única y sus valores son inmutables una vez asignados. Por lo tanto, tienen dos estados sin consolidar y vinculados , una vez vinculados no se pueden cambiar.

¿Hay algún término matemático u otro término informático que sea más apropiado para tal cosa? Algo que semánticamente no implica varianza o mutabilidad.

Si no existe, como el término, y si estuviera diseñando un lenguaje que tuviera tales construcciones, ¿qué otra cosa que la variable de palabra usaría para estas?

Realmente no estoy buscando sondear ideas, estoy tratando de averiguar si ya existe un término aceptado de la industria (cualquier industria) para tal cosa.


fuente
1
Simplemente llámalos inmutables ;)
Oded
variable final?
smp7d
99
El término matemático para este tipo de variables sería "variable". El concepto de una variable mutable realmente no existió hasta que los lenguajes de programación entraron en escena.
sepp2k
1
No estoy de acuerdo con @ sepp2k. El término "variable" fue introducido por Leibniz en su desarrollo del cálculo diferencial, y ha sido parte de las matemáticas y la física desde entonces. Esas cantidades variables necesariamente necesitan la posibilidad de cambiar. De lo contrario, la idea de $ \ Delta x $ o $ dx $ no tiene sentido.
Michael Bächtold
1
@ sepp2k No estoy de acuerdo. No es un concepto de re-asignación en las matemáticas, aunque tradicionalmente no se llama así. Los matemáticos constantemente introducen variables que dicen x, y en su contexto (sin asignarles un valor) y asumen algo sobre ellas, digamos y + x = 5. Luego pueden suponer que x = 1 y concluir y = 4. Pueden abandonar la suposición x = 1 y asumir x = 2 en su lugar, y concluir y = 3. Para mí eso es un cambio en x, y todavía estamos hablando de la misma variable x, ya que el supuesto x + y = 5 se cumple en ambos contextos.
Michael Bächtold

Respuestas:

4

¿Qué pasa con el "símbolo"?

Vi un video en F # donde el orador dijo:

no asigna un valor a una variable , vincula un valor a un símbolo .

(Todavía estoy buscando la referencia para esto).

Cada vez que encuentro la palabra "variable" en lugares donde tales construcciones son inmutables, pienso en silencio como "símbolo encuadernado".

harpo
fuente
10

Solo llámalos variables. Las matemáticas tienen variables; Los lenguajes funcionales tienen el mismo tipo de variables.

Vea también este ensayo de Bob Harper sobre este tema terminológico .

Ryan Culpepper
fuente
Si bien esto está en la línea de lo que estaba buscando, el enlace proporcionado solo genera más debate que respuestas.
@JarrodRoberson, simplemente tome el ensayo vinculado como "por qué variable es un término apropiado"; no dude en ignorar la parte sobre "asignables".
Ryan Culpepper
1
Sí, los asignables son una especie de arenque en esa discusión. Pero personalmente sigo semánticamente atrapado en el variarán parte de las variables y el hecho de que la informática no es una correlación directa 100% a términos matemáticos en muchos casos.
4

Sigue siendo una variable si puede tomar varios valores en diferentes invocaciones. En otras palabras, aunque no se puede cambiar una vez asignado, ese símbolo se puede asignar a diferentes valores inicialmente. Eso contrasta con una constante que contiene el mismo valor cada vez que se invoca.

Karl Bielefeldt
fuente
1

constante o constante probablemente sea familiar para las personas que usan lenguajes como C y C ++,

Nemanja Trifunovic
fuente
1

Nombre . La misma cosa puede ser llamada razonablemente por múltiples nombres ( x = 4; y = 4); y un nombre, una vez definido, nunca cambia su referente. x = 2; x = 3tiene tan poco sentido como decir que un pulpo no es un pulpo.

Jon Purdy
fuente
Me gusta esto, estaba considerando el término labelpero namefunciona de manera justa y mejor si no mejor.
0

¿Por qué no seguir con ese término? Puede que no sea 100% apropiado, pero cuando eliges un nombre diferente, eso probablemente causará más malentendidos que los que intentas resolver. Los diseñadores de otros lenguajes funcionales pueden tener el mismo problema, pero también decidieron usar el término "variable".

XSLT (que se usa ampliamente):

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 ellos también usan el término "variable".

Por supuesto, otros diseñadores de idiomas prefieren hablar de "enlaces" o "valores vinculados", como aquí para F #:

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

Doc Brown
fuente
0

Dependiendo del contexto, "variable" o "enlace" funcionaría. Creo que "vinculante" es más probable que aparezca en declaraciones como leten Haskell o Lisp.

Tikhon Jelvis
fuente