Несколько лет назад я выучил Applesoft Basic. К строкам всегда добавляется суффикс, $
а к массивам - суффикс %
. Вот как работает язык. Вы смотрели на что-то, вы знали, что это было. Я никогда не слишком углублялся в переводчика, чтобы понять, почему это так, или конструктивные решения, которые сделали это так.
Символ в php происходит от его perl-влияния (на которое повлияли awk
и sh
). Символ в Perl - это нечто большее, чем просто то, $
что он может идентифицировать много разных типов:
$
скаляр
@
список
%
гашиш
&
кодоблок
*
тип-глоб
Символ определяет, какую часть структуры таблицы символов вы просматриваете. За кулисами запись таблицы символов для foo (доступ через *foo
- typeglob) содержит все, что может быть foo. Существует $foo
, @foo
,%foo
, то формат foo
, &foo
, то указатель_на_файл Foo, и т.д ...
Это также позволяет создать псевдоним одной переменной для другой:
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
Это печатает foo 1 2
- в Perl, это то, для чего на самом деле предназначены сигилы , не то, что вы должны это делать, а то, что есть нечто закулисное, что они делают.
В сигилах не так много для удобства чтения, а так , что один может иметь $foo
и@foo
без столкновения в пространстве имен (сравните другие языки, где нельзя иметь оба int foo; int[] foo;
)
Символы читабельности - это то, что изучается как часть любого языка - чтение синтаксиса. Гипотетически, вы можете принудить сам тип (как венгерская нотация) быть частью идентификатора.
Что-то в лекс по линии:
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
И тогда вы могли бы иметь такой код
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
Я не говорю, что это хорошая идея, а скорее, что тот, кто привык к языку, сможет читать его по-родному и думать, что он улучшает читабельность, в то время как тот, кто не знаком с языком, может подумать, что он просто добавляет куча шума для языка.
Однако, после работы с языком, определенным таким образом, я, вероятно, мог прочитать его без проблем.
Некоторые люди любят их, некоторые нет. На различных форумах обсуждаются великие священные войны, и все сводится к тому, насколько вы их использовали.
Можно создать новый язык для непрограммистов, использующих сигилы, и любой, кто никогда не программировал раньше, никогда не будет жаловаться на них. С другой стороны, вы не могли бы использовать их как часть языка, и тогда бы программисты ruby или perl жаловались на то, что они упускают какую-то ключевую информацию.
Это действительно не имеет значения. Что важно, так это то, как сигилы будут вписываться в язык, если вы их используете или нет. Вы хотите быть в состоянии сделать "123 $foo 456"
или вы должны сделать "123 " + foo + " 456"
? Это где решение должно быть принято.