PHPやPerlで変数の記号に「$」が使われる理由
PHPやPerlで変数を定義するとき、当たり前のように先頭に「$(ドル/ダラー)」をつけていますが、ふと、
「変数の前に付ける記号はなぜ『$』なんだろう?」
と思い立ち、そんなことはものの本に書かれているのかもしれませんが、ネットで調べてみました。
ちなみにPerlで「$」を使うのはスカラ変数だけです。
1.「$」はBASIC言語から使われている
BASIC言語では変数の型で文字列を表すときに、次のように「$」を使っています。ただし変数の前ではなく後につけています。
10 READ A$
20 READ B$
30 C$=A$+B$
40 PRINT C$
また「『$』はBASICの名残で使っているようです」という記事をみつけました(ただしVBの話として)。
2.「$」は「ストリング」?
仮にPHPやPerlなどがBASICの名残で「$」を継承していると仮定しても、なぜBASICでは「$」を使っていたのでしょうか。
調べていると、Wikipediaの「Dollar sign」の解説の中に次のような記述がありました。
$ was used for defining string variables in older versions of the BASIC language ("$" was often pronounced "string" instead of "dollar" in this use).
推測の域を超えませんが、「$」という記号は縦棒がなければ「S」になるので、BASICの時代には「$」は文字列(String)を意味する記号として使われていたのかもしれません。
Perlの場合はスカラー(Scalar)の「S」として使っているのかもしれません(推測で書いてます)。
ということで明確な情報が得られていないので、情報お待ちしています。
2011.10.16追記
オライリー「初めてのPerl第5版」のP53に、「Larryの主張は、$calar,@rrayの意味で定義している」旨の記述がありました。
3.Perlの「@」や「%」の由来は?
話がそれますが、Perlの配列変数を示す「@」は「a」に似ているので「Array」を意味しているのかもしれません(これも推測です)。
また、ハッシュ変数を示す「%」は、簡単なハッシュ関数で割り算を利用した余りを使うので、その演算子を示す「%」からきているのでしょうか(もちろん推測です)。
こちらも情報お待ちしています。
4.参考サイト
- ビルド(コンパイル)で「分離記号を欠いています」となる場合の対処
- プログラムの再帰呼び出しのまとめ
- プログラムの「アウトデント」について
- JavaとJavaScriptの違いのまとめ
- ImageMagick と Image::Magick(PerlMagick) のバージョン対応
- Active Perl でワイルドカードを利用する
- PHP5のインストール
- J2SE 5.0 発表