ようこそゲストさん

したっぱプログラマーの日記(The diary of a minor programmer)

2008/03/18(火) メタって何だっぺ?

未分類

良く聞くし、よく使うんですけど、いざ説明しろと言われると難しい。辞書を引くと「超・高次の」と書いてある。しかし、これじゃ、よく分からん。

説明を試みる。


モノを作るには、材料とツールがいる。普通は、ツールを使って材料をさばくことによって、モノが生まれる。これに対して、メタ○○と呼ばれるものの場合は、ツール自体を材料にしているものである。

どうでしょうか?

具体例を。

■小島よしおの笑いの作り方(メタお笑い)。
お笑いにおいて「空気を読む」というのは最低限のルールです。このルールが、先の説明で言うところの「ツール」です。小島さんは このツール自体をネタ(材料)にして笑いを作っています。なので、メタお笑い。(彼は意識的にやってるわけではないと、僕は思っていますが…。少なくとも「空気読まない」キャラが確立されるまでは。)

■templateメタプログラミング。
こちらは、c++をやったことのある人向けの説明になってしまいます。templateっていうのは、プログラムの柔軟性や再利用性上げるために導入されたものです。つまりツールです。しかしtemplateメタプログラミングでは、そのtemplateの機構自体で計算をして(材料にして)しまいます。

1: hirohiro 2008年03月19日(水) 午前7時34分

リカーシブでしたか、
再帰的プログラミングって、
なんかメタっぽいです。多分違うんでしょうが。

確かに道具や手段、それ自体が手段などになればメタ化ですが、
でも、手段が目的化するようなものも、
なんか違うんですけど、メタっぽいですね。

以上メタっぽい話でした(笑)

メタブログってのもありますね。
ブログ・・・についてブログで記述する。

2: わけん 2008年03月20日(木) 午後0時11分

>再帰的プログラミングって
>なんかメタっぽいです。多分違うんでしょうが。
たしかに、template meta programmingも、再帰を多用しますね。何か関連はありそうです(@_@)

>手段が目的化するようなものも、
>なんか違うんですけど、メタっぽいですね。
うーん、たしかにそれもメタっぽい…。

>メタブログってのもありますね。
お、そんなのもあるんですか?初めて聞きました!
これは、再帰的っぽいし、手段が目的かしてるっぽいですね。

3: mynz 2008年03月20日(木) 午後8時13分

うぇん、投稿したら承認待ちになってしまったよ。

と、いうワケでももう一度、投稿してみる。

--

メタについて、自分はこんなふうに説明しているよ。

『たとえば英語を勉強するとする。辞書を引いたり問題集を説いたりして英語を身につける行為が「勉強」という概念。これに対して「メタ」という概念を持ち出すなら、如何にして英語の勉強を進めるかを考える(勉強する)のが「メタ(英語)勉強」。たとえば、「土日に纏めて勉強時間を設けるよりも毎日10分づつける方が効率的か」とか、「Novaは英語学習に本当に有効か」など、如何に勉強という行為を効率的・有効的にこなせるかを考え、勉強する概念。

自分はテレビを置いてないから小島よしおの活躍を目にしたこともないのだけど、わけんのお笑いのルールはちょっと腑に落ちませんな。まぁ、わけんが言うことは一般視聴者がお笑いを芸人と同じ楽屋レベルで理解・享受し、お笑いのショー自体が一種「劇中劇」として認識されている現状においてのとらえ方なんだろうけど。

話変わってC++のTemplateについては、自分が学習した時、逆になぜTemplateがメタプログラミングとよばれるのかぴんと来なかった。Cのマクロ(プリプロセッサ)がメタなのはわかる。Compiler-Compiler(ex. yacc)もメタとして理解しやすい、でもC++のTemplateはそうじゃなかった。今はC++のTemplateがメタとしても使われることが理解できるけど、Genericな機能として提供されるTemplateはその利用が必ずしも「メタプログラミング」になるとはかぎらないと思うよ。だから、メタの例としてはちょっと不平かなっと。

4: わけん 2008年03月20日(木) 午後10時23分

なるほど。英語の例はわかりやすいですね。
なんか僕の思っていたメタは、違っていたような気がします。
うーん、やはり"高次の"ってのが、短くて的確な気がしてきました。

あらためてまとめてみます。
<blockquote>
ほとんどの事物には階層構造を見ることが出来る。その階層構造を
A - B - ...
と置く。いまBに対してbという行為を行うとする。このbという行為をより上位層のAに対しても行うのが"メタ"的行為
</blockquote>
これで、多くの例を包含できると思うのですが、どうでしょ。

> 一般視聴者がお笑いを芸人と同じ楽屋レベルで理解・享受し、お笑いのショー自体が一種「劇中劇」として認識されている現状においてのとらえ方
「劇中劇」とは、うまいですね!なんとなく頭の中にあったものの良い表現が浮かんできませんでした!そして、「劇中劇」ってのに"メタ"臭を感じるのです。

> Genericな機能として提供されるTemplateはその利用が必ずしも「メタプログラミング」になるとはかぎらないと思うよ。
その通りだと思います。僕がtemplateメタプログラミングを例に挙げたのは、本来Generic的な用途で使われるべきTemplateが、それ自体で計算するようになった というのが"メタ"なのかなぁと思っていたからです。つまり、「本来の用途と違う使い方をする」っていう要素が"メタ"という言葉にはあるのかなぁと思っていたのです。しかし、mynzさんの説明を読んで、そういう要素は必要なくて 単に"高次"という要素があれば"メタ"なんかなぁと思うに至りました。

5: mynz 2008年03月21日(金) 午後10時03分

そうだねぇ、自分の場合「メタ」の意味合いは「高次の」と説明されると納得できる。
逆に、「本来の用途と違う使い方をする」という意味を含められると、ムムムと感じてしまうね。

「ほとんどの事物には階層構造を見ることが・・・」という説明は、正直難しくて良く分からん。

ああ、そういえば、「涼宮ハルヒの憂鬱」のはメタドラマの構造だね。
(オープニングからして、超監督・涼宮ハルヒ)

6: わけん 2008年03月21日(金) 深夜0時32分

>「ほとんどの事物には階層構造を見ることが・・・」という説明は、正直難しくて良く分からん。
わかりにくくてすいませんm(_ _)m
しかも何か記載間違ってたし…orz
修正しました。

A - B - ...
というのは、
プリプロセッサ - コンパイラ
とか
芸人 - お客
とか
英語勉強法 - 英語
のような構造ということを言いたかったのです。


名前:  非公開コメント   

  • TB-URL  http://wkpn.net/blog/0799/tb/