CA15卒勉強会 メタプログラミングについて
-
Upload
huy-do -
Category
Engineering
-
view
160 -
download
4
Transcript of CA15卒勉強会 メタプログラミングについて
![Page 1: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/1.jpg)
@huydx CA15新卒勉強会
![Page 2: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/2.jpg)
今日はマニアックじゃない話を
![Page 3: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/3.jpg)
めたぷろ
![Page 4: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/4.jpg)
![Page 5: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/5.jpg)
インターネット
“write code that write code”
![Page 6: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/6.jpg)
インターネット
“ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジッ
クによってプログラミングを行う方法”
![Page 7: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/7.jpg)
日本語が難しい。。。
![Page 8: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/8.jpg)
めたぷろはコード生成(Code generation)
- コンパイル時
- マクロ (C,C++)
- テンプレート (C++)
- Annotation (Java) - ランタイム
- Reflection (Java/Scala/C#) - method_missing (Ruby)
![Page 9: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/9.jpg)
めたぷろの代表言語だと LISP
![Page 10: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/10.jpg)
![Page 11: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/11.jpg)
マクロ系
マクロによりコードが短くなるが 注意しないと不具合も発生しやすい
![Page 12: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/12.jpg)
テンプレート系
情報をコンパイラーから取得するジェネリックプログラミングのためのもの
コードがよみづらい。。コンパイル時間が長くなる
![Page 13: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/13.jpg)
Annotation系
マクロと同じ感じ リッチな処理ができる
![Page 14: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/14.jpg)
Reflection系
ランタイムでクラス情報取得 パーフォーマンスの問題 ジェネリックと相性悪い
ユースケース: Logging, Exception...
![Page 15: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/15.jpg)
method missing系
メソッドが見つからないときに処理をフック
RubyScala
メソッドをランタイムで作れる (ruby#send,
scala#invoke)
パーフォーマンス問題バグのときコードをGrepできないwww
![Page 16: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/16.jpg)
Quineプログラミング- めたぷろの特別な形式
- プログラムのソースコードを自分で出力
![Page 18: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/18.jpg)
![Page 19: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/19.jpg)
インターネット
“めたぷろ要らなくない”
![Page 20: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/20.jpg)
コードがDRYに!
![Page 21: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/21.jpg)
めたぷろ最高!
![Page 22: CA15卒勉強会 メタプログラミングについて](https://reader034.fdocuments.net/reader034/viewer/2022042509/55c2bd48bb61ebcf2d8b459e/html5/thumbnails/22.jpg)
ご清聴ありがとうございます