Wiele lat temu nauczyłem się Applesoft Basic. Ciągi zawsze były $
sufiksowane, a tablice miały sufiks %
. Tak właśnie działał język. Patrzyłeś na coś, wiedziałeś, co to jest. Nigdy nie zagłębiałem się zbytnio w tłumacza, aby zrozumieć, dlaczego tak się stało, lub decyzje projektowe, które to sprawiły.
Sigil w php pochodzi od jego perlowego wpływu (na który wpłynęły awk
i sh
). Sigil w perlu to coś więcej niż tylko $
to, że może identyfikować wiele różnych typów:
$
skalarny
@
lista
%
haszysz
&
blok kodu
*
typeglob
Pieczęć identyfikuje, na którą część struktury tabeli symboli patrzysz. Za kulisami wpis w tablicy symboli dla foo (dostępny za pomocą *foo
- typeglob) zawiera wszystko, co może być foo. Jest $foo
, @foo
, %foo
The Format foo
, &foo
, uchwytu pliku foo, etc ...
Pozwala to również utworzyć alias jednej zmiennej do drugiej:
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
Wypisuje foo 1 2
- w Perlu, to co sigile są naprawdę na nie, że należy to zrobić, ale raczej, że jest to za kulisami rzeczy, które robią.
Znaki nie są tak bardzo czytelne, ale raczej po to, aby można było mieć kolizję w przestrzeni nazw $foo
i @foo
bez niej (porównaj inne języki, w których nie można mieć obu int foo; int[] foo;
)
Sigile dla czytelności to coś, czego uczy się jako część dowolnego języka - odczytywanie składni. Można hipotetycznie wymusić sam typ (jako notację węgierską), aby był częścią identyfikatora.
Coś w leksykonie w stylu:
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
A potem możesz mieć kod podobny
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
Nie twierdzę, że to dobry pomysł, ale raczej, że ktoś, kto jest przyzwyczajony do języka, będzie mógł przeczytać go natywnie i pomyśli, że poprawia to czytelność, podczas gdy ktoś, kto nie zna języka, może pomyśleć, że po prostu dodaje hałas w języku.
Jednak po pracy z tak zdefiniowanym językiem prawdopodobnie mogłem go przeczytać bez problemu.
Niektórzy ludzie je lubią, inni nie. Dyskusje na ten temat toczą wielkie święte wojny na różnych forach, a to naprawdę sprowadza się do tego, ile z nich korzystałeś.
Można zaprojektować nowy język dla nie-programistów korzystających z pieczęci, a każdy, kto nigdy wcześniej nie programował, nigdy nie narzeka na nie ani trochę. Z drugiej strony, nie możesz mieć ich jako części języka, a następnie programiści Ruby lub Perl narzekają, że brakuje im niektórych kluczowych informacji.
To naprawdę nie ma znaczenia. Liczy się to, jak sigile pasują do języka, jeśli ich użyjesz, czy nie. Chcesz być w stanie to zrobić, "123 $foo 456"
czy musisz "123 " + foo + " 456"
? Właśnie tam należy podjąć decyzję.