Это предотвращает конфликт имен переменных с ключевыми словами языка и позволяет их интерполировать в строки.
Моя теория состоит в том, что для языков сценариев, таких как php, потребуется какой-то способ для продолжения работы, даже если будет введено новое зарезервированное слово, такое как php4 -> php5 добавил ловушку. Поскольку это язык сценариев, любые веб-страницы, у которых есть catch в качестве имени переменной, не умрут из-за изменения языка.
Это не проблема для скомпилированных языков, поскольку все конвертируется в двоичный, и любые изменения в языке не повлияют на уже скомпилированные программы
Потому что константы и зарезервированные слова идут без элемента $
Не пытайтесь сравнивать синтаксис языков программирования ... Они правы в том, чтобы быть таким другим. :)
Потому что некоторые языки - это уродливые ad hoc скрипты и использовали глупые трюки, чтобы предупредить "синтаксический анализатор" о том, что ему нужно работать.
А другие языки были реальными попытками разработки языка, которые использовали реальные имена переменных, а не уродливый синтаксис макросов...
Единственный довольно приличный язык, использующий $
- это Perl, но я могу отметить, что Perl6 отказался от него.