Upload
huy-do
View
158
Download
4
Embed Size (px)
Citation preview
@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系
メソッドが見つからないときに処理をフック
RubyScala
メソッドをランタイムで作れる (ruby#send,
scala#invoke)
パーフォーマンス問題バグのときコードをGrepできないwww
Quineプログラミング- めたぷろの特別な形式
- プログラムのソースコードを自分で出力
https://github.com/mame/quine-relay
インターネット
“めたぷろ要らなくない”
コードがDRYに!
めたぷろ最高!
ご清聴ありがとうございます