Нотация доллара в языках скриптов – почему?

Кто-нибудь знает, какова фактическая причина «обозначения переменной доллара» на некоторых языках сценариев, то есть PHP или Perl? Создатели Python не нашли $variable полезной, и я тоже. Почему PHP и Perl заставляют меня так часто менять shift-4?

(ОК, в Perl вы можете как-то объяснить это с помощью отличия $scalar , @array и %hash но все же его можно было бы успешно избежать там, тип не обязательно должен быть явным)

Я не знаю, является ли это основной причиной, но если у PHP не было переменных с идентификационным маркером, следующее было бы невозможно.

 echo "Welcome back $name, we last saw you on $date"; 

Обновить:

Он также создает нечто, называемое переменной переменной . Полезность переменной переменной является дискуссионным, хотя, и я не рекомендую никому делать регулярное их использование.

Одна из целей дизайна с переменными Perl заключалась в том, чтобы сделать их визуально различимыми от встроенных, зарезервированных слов, слов потока управления и т. Д. Для кого-то, незнакомого с Perl, все подсказки могут выглядеть как линейный шум. Но для кого-то, владеющего Perl, «сигилы», как их называют, делают код более понятным и понятным. Как вы уже заметили, тип sigil в Perl5 изменяется в зависимости от доступа к базовым данным. $ для скалярного, @ для массива и% для хеша.

Но есть дополнительный визуальный сигнал, который $hash{key} относится к скалярному значению, хранящемуся в хэше. $ Sigil указывает на скаляр, а скобки {} указывают, что мы индексируем хэш (как пример). В случае индексирования в массив, $array[0] , например: $ говорит нам, что мы получаем доступ к скалярному значению, хранящемуся в массиве, что очевидно в квадратных скобках, в индексной точке в скобках. Когда мы видим @array[1, 2, 3] , у нас есть непосредственное визуальное уведомление через @ которое мы захватываем список элементов (при условии контекста списка) из массива (квадратные скобки все еще говорят нам, что мы 'получить их из массива). Это срез массива. Хэш-срез будет @hash{qw/ this that the other/} . Итак, еще раз, что @ говорит нам искать список, а фигурные скобки говорят нам, что мы получаем их из хэша. Когда мы видим @ или % без постфиксных скобок, мы берем весь массив или хеш.

Сигналы становятся второй природой быстро.

Perl6 немного отличается, и через несколько дней вы сможете использовать опытных пользователей Perl5. 😉

Здесь есть хорошая статья в Википедии: Сигил (компьютерное программирование)

Помимо визуального руководства, сигилы облегчают другие вещи; разыменование и интерполяция, например. Хотя более сложные операторы могли быть использованы для чего-то вроде интерполяции (и по-прежнему необходимо время от времени устранять неоднозначность, где заканчивается переменная и примыкающие символы слова), цель, вероятно, заключалась в том, чтобы упростить простые вещи, делая все возможное.

Принципы естественного языка в Perl :

Одной из причин, по которым язык может уйти от некоторых локальных двусмысленностей, является то, что другие двусмысленности подавляются различными механизмами. Английский использует число и порядок слов, с остатками системы case в местоимениях: «Человек посмотрел на мужчин, и они оглянулись на него». В этом предложении совершенно ясно, кто что делает, кому. Точно так же Perl имеет числовые маркеры в своих существительных; то есть $dog – это один @dog , а @dog (потенциально) много. Таким образом, $ и @ немного похожи на «это» и «на английском».

Они используют его при разборе, так что переменные можно легко отличить от других вещей.