Что является хорошей альтернативой переменной name для языка, который имеет только неизменные ссылки или метки?


11

Например, в функциональных языках переменные являются одним присваиванием, а их значения неизменны после присвоения. Таким образом, у них есть два состояния, не связанных и связанных , однажды связанные они не могут быть изменены.

Существует ли какой-либо математический термин или другой термин в области компьютерных наук, который наиболее подходит для таких вещей, как вещь? То, что семантически не подразумевает дисперсию или изменчивость.

Если не существует, например, термин и если вы разрабатываете язык с такими конструкциями, что, кроме переменной слова , вы бы использовали для них?

Я на самом деле не ищу опрос для идей, я пытаюсь выяснить, есть ли уже принятый термин (любая отрасль) для такого понятия.


1
Просто назовите их неизменными ;)
Одед

конечная переменная?
smp7d

9
Математический термин для таких переменных будет «переменным». Понятие изменчивой переменной действительно не существовало, пока языки программирования не вошли в картину.
sepp2k

1
Я не согласен с @ sepp2k. Термин «переменная» был введен Лейбницем в его развитии дифференциального исчисления, и с тех пор он стал частью математики и физики. Эти переменные количества обязательно нуждаются в возможности изменить. В противном случае идея $ \ Delta x $ или $ dx $ не имеет смысла.
Михаэль Бехтольд

1
@ sepp2k Я не согласен. Там является концепция повторного назначения в математике, хотя он традиционно не называется именно так. Математики постоянно вводят переменные, скажем, x, y в своем контексте (не присваивая им значения), и предполагают что-то о них, например, y + x = 5 Далее они могут предположить, что x = 1 и заключить y = 4. Они могут отбросить предположение x = 1, принять вместо этого x = 2 и заключить y = 3. Для меня это изменение x, и мы все еще говорим об одной и той же переменной x, поскольку предположение x + y = 5 справедливо в обоих контекстах.
Михаэль Бехтольд

Ответы:


4

Что насчет "символа"?

Я видел видео на F #, где говорящий сказал:

Вы не присваиваете значение переменной , вы привязываете значение к символу .

(Все еще ищу ссылку для этого.)

Всякий раз, когда я сталкиваюсь со словом «переменная» в местах, где такие конструкции неизменны, я молча думаю «связанный символ».


10

Просто назовите их переменными. Математика имеет переменные; функциональные языки имеют одинаковые переменные.

Смотрите также это эссе Боба Харпера по этому вопросу терминологии .


Хотя это соответствует тому, что я искал, предоставленная ссылка только вызывает больше споров, чем ответов.

@JarrodRoberson, просто примите связанное эссе как «почему переменная является подходящим термином»; не стесняйтесь игнорировать часть о «назначаемых».
Райан Калпеппер

1
да, в этой дискуссии присваиваемые вещи - своего рода красная сельдь. Но лично я до сих пор семантический застрял на варьировать часть переменных и тот факт , что информатика не является прямой корреляцией 100% к математике терминам во многих случаях.

4

Это все еще переменная, если она может принимать различные значения в разных вызовах. Другими словами, даже если он не может быть изменен после назначения, этот символ может быть изначально назначен различным значениям. Это в отличие от константы, которая содержит одно и то же значение каждый раз, когда она вызывается.



1

Имя . Одна и та же вещь может быть разумно вызвана несколькими именами ( x = 4; y = 4); и имя, определенное однажды, никогда не меняет своего референта. x = 2; x = 3имеет такой же смысл, как сказать, что осьминог не осьминог.


Мне нравится это, я рассматривал термин, labelно nameработает хорошо и хорошо, если не лучше.

0

Почему бы просто не придерживаться этого термина? Это может не подходить на 100%, но если вы выберете другое имя, которое, вероятно, вызовет больше недоразумений, чем те, которые вы пытаетесь решить. У разработчиков других функциональных языков может быть та же проблема, но они также решили использовать термин «переменная».

XSLT (который широко используется):

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

Haskell:

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

Схема:

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

Erlang:

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

Все они тоже используют термин «переменная».

Конечно, другие дизайнеры языка предпочитают говорить о «привязках» или «связанных значениях», как здесь для F #:

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


0

В зависимости от контекста «переменная» или «привязка» будет работать. Я думаю, что «связывание» более вероятно встречается в таких утверждениях, как letв Haskell или Lisp.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.