メタ言語(英: Metalanguage)は、特定の言語に対する議論や分析で用いられる言語を指します。ここで言う特定の言語とは、自然言語または形式言語が該当します。
メタ言語と対象となる言語(対象言語)を区別することで、より明確な議論が可能になります。この区別が不明確な場合、特に論理学や意味論の分野では矛盾が生じることもあります。
数理論理学では、言語は主に記号の集合で構成されます。たとえば、集合論においては論理的記号や量化子、そして集合の要素関係を示す記号(∈)がその言語の一部を成します。この場合、特定の記号が対象言語となり、それを扱う際の自然言語(たとえば日本語や英語)が
メタ言語に該当します。このように、
数理論理学においては、
メタ言語を用いることで形式的な論理や理論をより具体的に理解することが可能になります。
コンピュータープログラミングの分野では、特にプログラミング言語の構文を記述するために
メタ言語が使用されます。その一例がバッカス・ナウア記法(BNF)です。この記法は、プログラミング言語の文法を明示的に定義するために開発されました。BNFの拡張版である拡張バッカス・ナウア記法(EBNF)は、
国際標準化機構(ISO)および国際電気標準会議(IEC)によって標準化されており、文書の中で「Syntactic metalanguage」という表現が使われています。これによりプログラミング言語の構造をより直感的に理解することが可能になります。
MLとメタ言語
さらに、特定のプログラミング言語であるML(Meta Language)は、1970年代にロビン・ミルナーらによって開発された定理証明システムに由来します。このMLという名称は、証明を記述するために使用される
メタ言語自体を指していました。Standard ML、OCaml、F#などの言語は、MLの遺産を受け継いでおり、それぞれの言語が持つ特徴や機能は、当初のコンセプトに基づいて設計されています。
関連項目
メタ言語の理解を深めるには、他の関連分野にも目を向けることが重要です。例えば、スキーマ言語やマークアップ言語といった文脈での
メタ言語の利用法、また言語の使用とその言及の区別について考察することも有意義です。