ご教授願えますでしょうか?
wikiから流用
メタ言語(メタげんご)とは言語を定義するための言語。 それだけでは具体的な利用に関する目的をもっておらず、特定のルールを加えることで具体的な応用として利用可能となる。
→ メタ言語の目的とはなんでしょうか?
→ 特定のルールを加えることで具体的な応用として利用可能とする「目的」とはなんでしょうか?
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E8%A8%80%E8%AA%9E
Web ページの構造を記述するためのメタ言語として HTML があります.
Web ブラウザで見ている文書はリンクの色が変わっていたり,見出しの文字が大きくなったりしていますよね.しかし,コンピューターから見るとどの文字が見出しかなどは分かりません.
そこで,登場するのがメタ言語である HTML です.
Web では見出しや段落などの文書構造をコンピューターに伝えるため文書に HTML タグと呼ばれるメタ情報を付けます.そのルールに従ってブラウザが今見ているようなページの表示に変換し表示しているのです.
大変わかりやすい説明です。
メタを「一段と高いレベルの」意味としておけば、理解できます。
言語はメタなもので、HTML<XMLの方がよりメタである。
うーん、
①C<C++の方がメタである。
②C++<C#の方がメタである。
③C<JAVAの方がメタである。</p>
④BASIC<Cのほうがメタである。</p>
ってなるのでしょうか?
「言語データ」の意味が分からないのですが、少なくともC言語の define では「名前の定義」はできても、「言語の定義」はできません。むしろC言語を定義できるという意味では、yaccの方がメタ言語に近いと思います(当時はメタ言語の概念がなかったので、yacc=メタ言語というわけではありません)。
メタ言語の定義にもブレがあります。
私は XML をメタ言語だと考えていますが、XML のメタである SGML がメタ言語であるという解釈も成り立ちます。
そうですね。
5~6年前はSGMLで定義していたこともあるのですが、最近はXMLがほとんどですね。時代の流れだとは思いますが。
個人的にはXMLよりSGMLの方が仕様が高度で「メタ言語」っぽいですね。
メタ言語とは、言語を定義して、そいつを言語データとして扱う
って解釈なのでしょうか?
C言語などで、defineで定義した言語(言語のみを定義したファイル)も、
メタ言語になるのでしょうか?
ちなみに、XML=メタ言語解釈でよいのでしょうか?
→
メタ言語は「言語を記述する体系」ですが、それを用いて
いざ「何かの言語を記述する」ということをして初めて
具体的な、何かに使える言語(記述体系)になります。
(1)個々のWEBページ(たとえばmasa193さんのページ)
(2)個々のWEBページ(たとえばmasa193さんのページ)を記述できる体系=言語=例えばXHTML
(3)個々の言語(例えばXHTML言語)を記述できる体系=メタ言語=例えばXML
(3)だけでは、(1)の個々のWEBページを記述できません。
具体的な役に立つ(=応用する)には(2)のレベルの言語が必要なのです。
(2)を作るというのが、メタ言語の目的です。
「メタ言語を使って(2)を作る」ことがご質問中の
「特定のルールを加える」ということと同じ意味です。
コンピューターの分野で使われるメタの意味は、
「一段と高いレベルの」という意味です。
たとえばある「何か」に対して「何かを対象として記述する」
という1段階あがったものを、メタであるといいます。
# 「上から目線」で、客観的な操作対象とするってわけです。
ちなみに、言語は、何かを記述するものなのでもともと記述対象に対しては
メタなものだと言えます。たとえば、HTML言語は、WEBページを記述する言語
(ここでは、言語というより、記述方法/記述の枠組み/記述体系/と
思った方がいいかもしれません)であり、HTMLは、個々のWEBページに
対して1段メタなもの(WEBページを記述する体系/記述方法)です。
さて、ご質問の「メタ言語」ですが、例えばHTML(厳密にはXHTML)という
WEBページの記述体系をさらに記述するための枠組み/記述体系がXML
です。このとき、XMLは、「XHTML言語(など)を記述するための言語/
体系/記述方法」つまりメタ言語になります。
XHTMLだけでなく、いろいろなXMLベースの記法(MathML,VRML,X3D,
XML...)を記述するメタ言語としての体系がXMLです。
たとえば、日本語がわからない人に日本語を使って日本語を説明することはできませんよね。
仮に英語を使って説明したなら英語が日本語に対するメタ言語になります。
さらに、言語というものがどういうものか説明しようとすると、言語を使って説明することが
できませんので、別の手段を考えないといけません。
コンピュータ言語などの仕様書はBNFに従ったものが多いです。
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%82%AB%E3%82%B...
①標準化のために言語を定義する必要があります。
②データ交換のために使うことが多いですね。最近は XML を使うことが多くなってきました。
聞きたいことは以下の内容です。
①何のために「言語を定義する」する必要があるのですか?
②皆さんは、メタ言語をどのように使っていますか?
2つのご質問の「目的」とは、1つの「目的」に集約されます。
つまり、「言語を定義する」ことが自体がメタ言語の「目的」です。
言語によって「ルール」は変わります。
それにしても、なぜ「いわし」なんでしょ?
表記する、表記される、という階層の話として言うと、C,C++,Java,BASIC,Cはメタレベルとしては同じです。
(レベル1)Cで書かれたあるプログラムやJavaで書かれたあるプログラム
(レベル2)C、Java
(レベル3)C・Java言語仕様書を書いている日本語
(レベル4)日本語の文法について書いている英語の文法書
(レベル5)その英語の文法を書いている・・・
とかのように上がっていくのではないでしょうか。