社内勉強会の資料をちょっと改変したやつ。 メタプロ & scala.metaの入門編。 メタプログラミングとは プログラミング技法の一種で、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。 メタプログラミング - wikipedia つまり プログラムを引数としてプログラムを出力とする関数、みたいなもの。 リフレクションも一種のメタプログラミングで、文字列から実行時のオブジェクトに干渉できる。 マクロはプログラムを自動で生成するための仕組み。 内部DSLもある種のメタプログラミングといえる。 参考:StackOverFlow Conclusion: Meta-programming is the ability for a program to reason about