November 2020
Intermediate to advanced
740 pages
9h 12m
Japanese
「meta-」は「高次-」や「超-」を意味する接頭辞で「『語幹』を対象とした『語幹』」という意味の単語を作ります。たとえば「メタフィクション」は「フィクションについてのフィクション」という意味で、登場人物による小説自身への言及や小説を批評する小説を指し、「メタアナリシス」は「解析(アナリシス)結果の解析(アナリシス)」という意味で、複数の研究結果をまとめて統計的に解析することやその結果を指します。
プログラミングにもメタプログラミングと呼ばれるテクニックがあります。プログラミングは言い換えると「コードを記述すること」です。つまりメタプログラミングは「コードを記述するコードを記述する」と言い換えられます。コードを記述するコードというと、たとえばオブジェクトのtoJSON()メソッドを使用してJSONを生成するようなコードもそこに含まれるように思うかもしれませんが、一般にそのような単純なコードジェネレータはメタプログラミングには含まれません。メタプログラミングは通常「自分自身のコードを対象としたプログラミング」を意味します。
一般にいわゆるスクリプト言語はメタプログラミングが得意だとされています。スクリプト言語はほとんどがインタプリタ型でソースコードを逐次的に解釈しながら実行するため、実行前にソースコード全体を一括で変換しておく必要のあるコンパイラ型の言語と比べて、実行時の割り込みや変換の自由度が高い傾向があります。
プログラムは文字列としてのソースコードを、コンピュータ内部で利用できる形式に変換したあとで実行されます。この変換と実行をどのようなステージに分けて実行するかによって、プログラミング言語は