Vor Jahren habe ich Applesoft Basic gelernt. Zeichenfolgen wurden immer mit $
einem Suffix versehen und Arrays mit einem Suffix von %
. So hat die Sprache funktioniert. Sie haben etwas angeschaut, Sie wussten, was es war. Ich habe mich nie zu sehr mit dem Dolmetscher befasst, um zu verstehen, warum dies der Fall war oder welche Designentscheidungen es dazu geführt haben.
Das Siegel in PHP kommt von seinem Perl-Einfluss (der von awk
und beeinflusst wurde sh
). Das Sigil in Perl ist weit mehr als nur $
das Identifizieren vieler verschiedener Typen:
$
Skalar
@
aufführen
%
hash
&
Codeblock
*
Typeglob
Das Siegel kennzeichnet, welchen Teil der Symboltabellenstruktur Sie betrachten. Hinter den Kulissen enthält der Symboltabelleneintrag für foo (auf den über *foo
- den Typeglob zugegriffen wird ) alles, was ein foo sein kann. Es gibt $foo
, @foo
, %foo
, das Format foo
, &foo
die Dateikennung foo, etc ...
Dies ermöglicht auch das Erstellen eines Alias von einer Variablen zu einer anderen:
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
Dies druckt foo 1 2
- in Perl, das ist, wofür die Siegel wirklich sind , nicht, dass Sie dies tun sollten, sondern dass es diese Sache hinter den Kulissen gibt, die sie tun.
Die sigils gibt es nicht so viel für die Lesbarkeit, sondern so , dass man haben kann $foo
und @foo
ohne eine Kollision im Namensraum (vergleiche anderen Sprachen , wo man kann nicht beides haben int foo; int[] foo;
)
Zeichen für die Lesbarkeit werden in jeder Sprache gelernt - beim Lesen der Syntax. Sie könnten hypothetisch erzwingen, dass der Typ selbst (als ungarische Notation) Teil des Bezeichners ist.
Etwas in Lex im Sinne von:
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
Und dann könnten Sie Code wie haben
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
Ich sage nicht, dass dies eine gute Idee ist, sondern dass jemand, der an die Sprache gewöhnt ist, dies von Haus aus lesen kann und denkt, dass es die Lesbarkeit verbessert, während jemand, der mit der Sprache nicht vertraut ist, der Meinung ist, dass es nur etwas hinzufügt ein Haufen Lärm für die Sprache.
Nachdem ich mit einer so definierten Sprache gearbeitet hatte, konnte ich sie wahrscheinlich problemlos lesen.
Manche mögen sie, manche nicht. Es gibt große heilige Kriege in verschiedenen Foren, die dies diskutieren, und es läuft wirklich darauf hinaus, wie oft Sie sie benutzt haben.
Man könnte eine neue Sprache für Nicht-Programmierer entwerfen, die Sigillen verwendet, und jeder, der noch nie zuvor programmiert hat, wird sich nie ein bisschen über sie beschweren. Auf der anderen Seite könnten Sie sie nicht als Teil der Sprache haben und Ruby- oder Perl-Programmierer könnten sich darüber beschweren, dass ihnen einige wichtige Informationen fehlen.
Es ist wirklich egal. Es kommt darauf an, wie Siegel in die Sprache passen, wenn Sie sie verwenden oder nicht. Wollen Sie können "123 $foo 456"
oder müssen Sie "123 " + foo + " 456"
? Hier sollte die Entscheidung getroffen werden.