Anni fa, ho appreso Applesoft Basic. Le stringhe erano sempre suffisse con $
e gli array avevano un suffisso di %
. Ecco come funzionava la lingua. Hai guardato qualcosa, sapevi cosa fosse. Non ho mai approfondito troppo l'interprete per capire perché questo è il caso o le decisioni di progettazione che lo hanno reso così.
Il sigillo in php deriva dalla sua influenza perl (che è stata influenzata da awk
e sh
). Il sigillo in perl è un po 'più di solo $
in quanto può identificare molti tipi diversi:
-
$
scalare
-
@
list
-
%
hash
-
&
codeblock
-
*
typeglob
Il sigillo identifica quale parte della struttura della tabella dei simboli si sta guardando. Dietro le quinte, la voce della tabella dei simboli per foo (accessibile tramite *foo
- typeglob) ha tutto ciò che può essere un foo. C'è $foo
, @foo
, %foo
, il formato foo
, &foo
, il filehandle pippo, ecc ...
Ciò consente anche di creare un alias di una variabile in un'altra:
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
Questo stampa foo 1 2
- in perl, questo è ciò che i sigilli sono veramente per, non che dovresti farlo, ma piuttosto che c'è questa cosa dietro le quinte che fanno.
I sigilli non ci sono tanto per la leggibilità, ma piuttosto per poter avere $foo
e @foo
senza avere una collisione nello spazio dei nomi (confrontare altre lingue dove non è possibile avere entrambi int foo; int[] foo;
)
I sigilli per la leggibilità sono qualcosa che viene appreso come parte di qualsiasi lingua - leggendo la sintassi. Potresti, ipoteticamente, applicare il tipo stesso (come notazione ungherese) per far parte dell'identificatore.
Qualcosa in Lex lungo le linee di:
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
E quindi potresti avere un codice come
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
Non sto dicendo che sia una buona idea, ma piuttosto che qualcuno che è abituato alla lingua sarà in grado di leggerlo in modo nativo e pensare che migliori la leggibilità mentre qualcuno che non ha familiarità con la lingua potrebbe pensare che aggiunge solo un po 'di rumore alla lingua.
Tuttavia, dopo aver lavorato con un linguaggio definito in questo modo, probabilmente potrei leggerlo senza problemi.
Alcune persone come loro, alcune persone no. Ci sono grandi guerre sante in vari forum di discussione su questo e si riduce davvero a quanto le hai usate.
Si potrebbe progettare un nuovo linguaggio per i non programmatori che usano sigilli e chiunque non abbia mai programmato prima non si lamenterà mai di loro. D'altra parte, non è possibile averli come parte della lingua e quindi i programmatori di ruby o perl si lamentano di perdere alcune informazioni chiave.
In realtà non importa. Ciò che importa è come i sigilli si adattano al linguaggio se li usi o meno. Vuoi essere in grado di fare "123 $foo 456"
o devi fare "123 " + foo + " 456"
? Questo è dove la decisione dovrebbe essere presa.