Jaka jest dobra alternatywa dla zmiennej name dla języka, który ma tylko niezmienne odwołania lub etykiety?


11

Na przykład w językach funkcjonalnych zmienne są pojedynczymi przypisaniami, a ich wartości są niezmienne po przypisaniu. Więc mają dwa stany niezwiązane i powiązane , raz powiązanego nie można zmienić.

Czy istnieje jakiś termin matematyczny lub inny termin informatyczny, który jest najbardziej odpowiedni dla takich rzeczy? Coś, co semantycznie nie implikuje wariancji lub zmienności.

Jeśli nie, nie istnieje taki termin, jak i jeśli projektujesz język, który ma takie konstrukcje, to co innego niż zmienna słów użyłbyś do nich?

Ja nie bardzo patrząc na sondzie pomysłów, próbuję dowiedzieć się, czy istnieje już przemysł Zaakceptowany (dowolny przemysł) określenie takiej rzeczy.


1
Po prostu nazywaj je niezmiennymi ;)
Oded

ostatnia zmienna?
smp7d,

9
Matematyczny termin dla tego rodzaju zmiennych to „zmienna”. Koncepcja zmiennej podlegającej modyfikacji nie istniała, dopóki na obrazie nie pojawiły się języki programowania.
sepp2k

1
Nie zgadzam się z @ sepp2k. Termin „zmienna” został wprowadzony przez Leibniza w jego opracowaniu rachunku różniczkowego i od tego czasu jest częścią matematyki i fizyki. Te zmienne ilości z konieczności wymagają możliwości zmiany. W przeciwnym razie pomysł $ \ Delta x $ lub $ dx $ nie ma sensu.
Michael Bächtold

1
@ sepp2k Nie zgadzam się. Jest to koncepcja przekwalifikowania w matematyce, chociaż nie jest to tradycyjnie nazywane w ten sposób. Matematycy stale wprowadzają zmienne w swoim kontekście (x, y) (bez przypisywania im wartości) i zakładają coś o nich, powiedzmy y + x = 5. Następnie mogą założyć, że x = 1 i wyciągnąć y = 4. Mogą porzucić założenie x = 1 i zamiast tego założyć x = 2 i dojść do wniosku, że y = 3. Dla mnie jest to zmiana x, a my wciąż mówimy o tej samej zmiennej x, ponieważ założenie x + y = 5 obowiązuje w obu kontekstach.
Michael Bächtold

Odpowiedzi:


4

Co z „symbolem”?

Widziałem wideo na F #, w którym mówca powiedział:

nie przypisujesz wartości zmiennej , wiążesz wartość z symbolem .

(Wciąż szukam odniesienia do tego.)

Ilekroć spotykam słowo „zmienna” w miejscach, w których takie konstrukty są niezmienne, cicho myślę „związany symbol”.


10

Po prostu nazywaj je zmiennymi. Matematyka ma zmienne; języki funkcjonalne mają ten sam rodzaj zmiennych.

Zobacz także ten esej Boba Harpera na ten temat terminologiczny .


Chociaż jest to zgodne z tym, czego szukałem, podany link wywołuje więcej debaty niż odpowiedzi.

@JarrodRoberson, po prostu weź link do eseju jako „dlaczego zmienna jest właściwym terminem”; możesz zignorować część dotyczącą „przypisywalnych”.
Ryan Culpepper

1
tak, te przypisania są rodzajem czerwonego śledzia w tej dyskusji. Ale osobiście nadal semantycznie utknąłem na różnych częściach zmiennych, a fakt, że informatyka w wielu przypadkach nie jest w 100% bezpośrednią korelacją z warunkami matematycznymi.

4

Nadal jest zmienną, jeśli może przyjmować różne wartości w różnych wywołaniach. Innymi słowy, nawet jeśli nie można go zmienić po przypisaniu, symbol ten można początkowo przypisać do różnych wartości. Jest to w przeciwieństwie do stałej, która zawiera tę samą wartość przy każdym wywołaniu.



1

Nazwa . To samo można rozsądnie nazwać wieloma nazwami ( x = 4; y = 4); a raz zdefiniowana nazwa nigdy nie zmienia swojego odniesienia. x = 2; x = 3nie ma sensu mówić, że ośmiornica nie jest ośmiornicą.


Podoba mi się, zastanawiałem się nad tym terminem, labelale namedziała dobrze i dobrze, jeśli nie lepiej.

0

Dlaczego nie trzymać się tego terminu? Może nie być w 100% odpowiednie, ale kiedy wybierzesz inną nazwę, która prawdopodobnie będzie przyczyną większej liczby nieporozumień niż te, które próbujesz rozwiązać. Projektanci innych języków funkcjonalnych mogą mieć ten sam problem, ale postanowili również użyć terminu „zmienna”.

XSLT (który jest szeroko stosowany):

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

Haskell:

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

Schemat:

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

Erlang:

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

Wszyscy używają również terminu „zmienna”.

Oczywiście inni projektanci języków wolą mówić o „powiązaniach” lub „wartościach powiązanych”, tak jak tutaj dla F #:

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


0

W zależności od kontekstu zadziała „zmienna” lub „wiązanie”. Myślę, że „wiążące” częściej pojawia się w wypowiedziach takich jak letw Haskell czy Lisp.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.