[nem-pl] Operator przypisania

Marcin 'Qrczak' Kowalczyk qrczak at knm.org.pl
Mon May 17 17:35:50 CEST 2004


W liście z pon, 17-05-2004, godz. 16:56 +0200, Kamil Skalski napisał:

> 1. przyzwyczajenia mas programistów i powszechność '='
> 2. łatwość wklepywania '='
> 3. docelowy programista nigdy nie spyta o co chodzi w '=' bo już się z tym 
> gdzieś zetknął
> 
> Decyzja co prawda jeszcze nie zapadła, ale tak to już bywa, że czasami trzeba 
> zrezygnować z czegoś eleganckiego (SML, Haskell ? ;) na rzecz czegoś 
> użytecznego.

Jako głosujący za '=' podam swoje argumenty.

Mamy trzy konstrukcje składniowe:
1. Nazwanie wyniku wyrażenia niezmienialną nazwą zmiennej (inny punkt
   widzenia: utworzenie niezmienialnej zmiennej o dan\ej wartości).
2. Utworzenie zmienialnej zmiennej z daną wartością początkową.
3. Zmiana wartości zmienialnej zmiennej.

Fakt: 1 jest podobne do 2 (różnią się tylko tym, czy zmienna
może się później zmienić), a 2 jest podobne do 3 (2 to utworzenie
niezaincjalizowanej zmiennej i wykonanie 3).

Dla 1 praktycznie wszystkie języki, które w ogóle mają taką konstrukcję
i jakiś znaczek w niej, zgadzają się na '='. Tutaj nie ma wątpliwości.

Jeśli dla 3 przyjmiemy ':=' albo '<-', to dla 2 mamy kłopot: z czymś
zawsze będzie niespójne. Przyjęcie '=' dla 2 powoduje ciągłe pomyłki
i próby stosowania '=' dla 3; to ma w ogóle rację bytu tylko jeśli
składnia 'v = x' jest błędem.

W swoim języku przez pewien czas miałem ':=' dla 2 i 3. Też mi się to
nie podobało z powodu niezgodności 1 z 2. Poza zwykłymi i zmienialnymi
zmiennymi mam leniwe zmienne i one oczywiście używały '=', więc tylko
zmienialne zmienne odstawały.

Zmieniłem więc 2 i 3 na '=' i teraz wszystko pasuje.

Definicyjne '=' tak czy siak jest niesymetryczne, więc asymetria
przypisania jest słabym argumentem przeciw.


Po drugie jeśli wziąć pod uwagę powszechność w innych językach:
http://merd.sourceforge.net/pixel/language-study/syntax-across-languages/Vrs.html#VrsVrbssgOrDcl
to '=' jest popularniejsze od ':=', a '<-' jest wyłącznie w OCamlu.
Na ilość tych z '=' jest niewiele więcej od tych z ':=', ale są tu
znacznie popularniejsze języki.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak at knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/





More information about the devel-pl mailing list