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

Preview:

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に!

めたぷろ最高!

ご清聴ありがとうございます

Recommended