@huydx
CA15新卒勉強会
今日はマニアックじゃない話を
めたぷろ
インターネット
“write code that write code”
インターネット
“ロジックを直接コーディングするのではなく、あ
るパターンをもったロジックを生成する高位ロジッ
クによってプログラミングを行う方法”
日本語が難しい。。。
めたぷろは
コード生成(Code generation)
- コンパイル時
- マクロ (C,C++)
- テンプレート (C++)
- Annotation (Java)
- ランタイム
- Reflection (Java/Scala/C#)
- method_missing (Ruby)
めたぷろの代表言語だと
LISP
マクロ系
マクロによりコードが短くなるが
注意しないと不具合も発生しやすい
テンプレート系
情報をコンパイラーから取得する
ジェネリックプログラミングのためのもの
コードがよみづらい。。
コンパイル時間が長くなる
Annotation系
マクロと同じ感じ
リッチな処理ができる
Reflection系
ランタイムでクラス情報取得
パーフォーマンスの問題
ジェネリックと相性悪い
ユースケース: Logging, Exception...
method missing系
メソッドが見つからないときに処理をフック
Ruby
Scala
メソッドをランタイムで作れる (ruby#send,
scala#invoke)
パーフォーマンス問題
バグのときコードをGrepできないwww
Quineプログラミング
- めたぷろの特別な形式
- プログラムのソースコードを自分で出力
https://github.com/mame/quine-relay
インターネット
“めたぷろ要らなくない”
コードがDRYに!
めたぷろ最高!
ご清聴ありがとうございます

CA15卒勉強会 メタプログラミングについて