Anni fa ho imparato Applesoft Basic. Le stringhe erano sempre suffissate $
e le matrici avevano il suffisso %
. Ecco come ha funzionato la lingua. Hai guardato qualcosa, sapevi cosa fosse. Non ho mai approfondito troppo l'interprete per capire perché questo fosse 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 $
quanto possa identificare molti tipi diversi:
$
scalare
@
elenco
%
hash
&
codeblock
*
typeglob
Il sigillo identifica quale parte della struttura della tabella dei simboli stai osservando. Dietro le quinte, la voce della tabella dei simboli per foo (accessibile tramite *foo
- il typeglob) ha tutto ciò che può essere un foo. C'è $foo
, @foo
, %foo
, il formato foo
, &foo
il foo filehandle, ecc ...
Ciò consente anche di creare un alias da una variabile a 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ò per cui i sigilli sono davvero , non che dovresti farlo, ma piuttosto che c'è qualcosa dietro le quinte che fanno.
I sigilli non ci sono così tanto per la leggibilità, ma piuttosto così si può avere $foo
e @foo
senza avere una collisione nello spazio dei nomi (confrontare altre lingue in cui non si possono avere entrambi int foo; int[] foo;
)
I sigilli per la leggibilità sono qualcosa che viene appreso come parte di qualsiasi lingua: leggere la sintassi. Si potrebbe, ipoteticamente, imporre 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 poi potresti avere un codice simile
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
Non sto dicendo che questa è una buona idea, ma piuttosto che qualcuno che è abituato alla lingua sarà in grado di leggerlo in modo nativo e pensare che migliora la leggibilità mentre qualcuno che non ha familiarità con la lingua potrebbe pensare che aggiunge un sacco di rumore per la lingua.
Tuttavia, dopo aver lavorato con una lingua definita in questo modo, probabilmente potrei leggerla senza problemi.
Ad alcune persone piacciono, altre no. Ci sono grandi guerre sante in vari forum che discutono di questo e si riduce davvero a quanto li hai usati.
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 potresti averli come parte della lingua e quindi i programmatori ruby o perl si lamentano del fatto che stanno perdendo alcune informazioni chiave.
Non importa davvero. Ciò che conta è come i sigilli si adatteranno alla lingua se li usi o meno. Vuoi essere in grado di fare "123 $foo 456"
o devi fare "123 " + foo + " 456"
? È qui che dovrebbe essere presa la decisione.