メタ構文変数
プログラミング言語では識別子(変数や関数などの名前のこと)を自由に定義できる。しかし、サンプルプログラムなどでまったく意味の無い変数に付ける適当な名前がないために困ってしまうことがある。適当にどんな名前でも構わないからといって、例えば「wikipe」などとつけると、そのプログラムを見た他の人はその変数に何の意味があるのかと悩むことになる(例の場合ではWikipediaに関連があると連想したり、wikipeと言う特別な変数があると勘違いする)。そのようなときに、「abcd」や、「hoge」(ほげ、日本で使われる)をはじめとするメタ構文変数を利用する。メタ構文変数はプログラマの間で意味を持たないサンプル用の変数名であると認知されているので、無用な混乱が避けられるほか、書く側も苦労して名前をひねりだす必要がなくなる。
厳密には変数名ではない識別子(特定言語におけるクラス名やモジュール名など)についてhoge等が使われた場合でも「メタ構文変数」と呼ぶ。また整数リテラルや 一般文書の人名記載例等、明らかに識別子でないものや、プログラミングに限定されない分野で用いられる類似概念も含めて「メタ構文変数」と呼ばれることもある。
メタ構文変数(メタこうぶんへんすう、metasyntactic variable)は、プログラミング言語の記述で使われる識別子の一種。サンプルプログラムなどで意味のない名前が必要な場合に利用される「意味のない名前」であることが広く知られた識別子のことである。
日本のみで使用されるメタ構文変数として「hoge(ほげ)」「fuga(ふが)」「piyo(ぴよ)」「hogera(ほげら)」「hogehoge(ほげほげ)」などがある。
この系統のメタ構文変数は、まずhogeを使い、fugaはhogeを使用したあとの2つ目のメタ構文変数として使われる。hogeを使用せずにfugaだけ使用されることはまずない。 同様に変数のバリエーションを増やすため、piyoやhogeraと発展していく。
メタ構文変数はしばしば名前を重ねたり、2つのメタ構文変数名を繋げたりして名称のバリエーションを作るが、hoge系統では hogehoge、piyopiyoなどの重ね合わせ名のバリエーションがほとんどであり、hogepiyoといった掛け合わせ名はあまり見られない。これはfoo、bar系統とは対照的である。
hogeは時期としては1970年代終わりから遅くとも1980年代の前半ごろには、複数の人間が独立して使用を始めていたという証言がある。