【年末の頭の大掃除】 42に入学してから気になっていた「hoge」って一体なんだ?
42では課題を進めるに際して、ネット上で調べ物をする必要があります。
その際にサンプルのコードの中で「hoge」というキーワードがよく使われており、いつも「これって何だろう?」と疑問に思っていました。
気にはなっていたものの、いままでは頭の片隅に置いているだけでした。
しかし年末になり、気になったことを調べてみるかと「頭の中の大掃除」を行いました。
特に意味はありません
「hoge」は「これは意味のない名称ですよ~」の名称です。
読み方は「ホージ」かと思っていたのですが、正しくは「ほげ」と読みます。
歴史的には、1980年代前半に発生し、80年代後半以降にプログラマーの間で定着した、というあたりが定説のよう。
サンプルのプログラムなどで適当な名称を使いたいときに使われる「これは何の意味もない名称」となっている名称のひとつ。
この「記入例用の意味のない名前」は「メタ構文変数」と呼ばれており、暗黙の了解としてプログラマーが使用しています。
例えば、サンプルプログラムを書くとき、仮に「変数『user_name』にユーザ名を代入する」という処理のサンプルを書く場合、
user_name = "hoge";
のように書いたりします。
ここで登場した「hoge」は意味のない名前。
実際の処理では本物のユーザ名を書く必要がありますが、サンプルでは実際の値がないので、取りあえず適当な名称「hoge」を入れています。
プログラマーの間では「『hoge』は意味のない名前」というのが共通認識になっています。
「hoge」がなかったら
メタ構文変数である「hoge」がなかったらどうなるか見ていきましょう。
サンプルプログラムの中で、
user_name = "user1";
のように書いた場合、これは見ている人の混乱を招きます。
このサンプルを見た人は、実際の処理を書くときにもそのまま「user1」と書くべきなのか、それとも別の(実際に使う)ユーザ名に置き換えるべきなのか迷ってしまうことに。
そんな紛らわしさを回避するために存在するのが、メタ構文変数「hoge」です。
海外の例
注意が必要なのは、「hoge」が使われているのは日本だけということ。
アメリカだと「foo」、「bar」、「baz」、「foobar」などが使われ、イギリスでは 」「toto」が使われています。
42の学生専用の学習動画では、フランス人講師たちがサンプルコードの中で「toto」を使っており、イギリスに合わせています。
年末の頭の大掃除
疑問に思っていたことが一つスッキリして、気持ちがいいです。
ずっと気になっていたけれど、調べてこなかったことはまだまだたくさんあるので、年末を期にいろいろとググっていきたいと思います。
今気になっているのは、コンピューター誕生にも影響を与えたといわれるオーストリアの哲学者ウィトゲンシュタインの『論理哲学論考』と、ハンガリー出身の大天才で、計算機科学に影響を与えたジョン・フォン・ノイマンの生涯。
年末の頭の大掃除は、体を動かさなくていいので楽しいです笑