Your SlideShare is downloading. ×
0
Dreflection
Dreflection
Dreflection
Dreflection
Dreflection
Dreflection
Dreflection
Dreflection
Dreflection
Dreflection
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Dreflection

1,303

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,303
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. D と reflection はまじしん一ろう
  • 2. えらい前 <ul><li>具体的には 5 年くらい前とかから </li></ul><ul><li>Reflection 欲しいなーという声は少なからずあった </li></ul><ul><li>最初のアンオフィシャルウィッシュリスト (2005-3 月 ): </li></ul><ul><ul><li>Nanka </li></ul></ul><ul><ul><li>Kanka </li></ul></ul><ul><ul><li>Hoge </li></ul></ul><ul><ul><li>Reflection API </li></ul></ul><ul><ul><li>-> 4 位 </li></ul></ul>
  • 3. 今 <ul><li>ウィッシュリストで未だ絶賛一位 </li></ul><ul><ul><li>つまりまだ無い </li></ul></ul><ul><ul><li>Java, C# : ある </li></ul></ul><ul><ul><li>C, C++ : ない </li></ul></ul><ul><ul><li>D : ない </li></ul></ul><ul><ul><li>残念な感じ </li></ul></ul>
  • 4. なんで欲しいか <ul><li>RPC 作るとか </li></ul><ul><li>シリアライザ欲しいとか </li></ul><ul><li>バックトレースとか出ると開発ラクとか </li></ul><ul><li>etc etc… </li></ul>
  • 5. 努力 過去 <ul><li>インチキ reflection とか backtrace とか </li></ul><ul><li>自分のバイナリからシンボルテーブル読んで </li></ul><ul><ul><li>_D3std4math3absFlZl </li></ul></ul><ul><li>デマングルして引数型とか返り値型を判定 </li></ul><ul><li>弱点 </li></ul><ul><ul><li>構造体とかクラスのメンバがわからん </li></ul></ul><ul><ul><li>つまりシリアライザ書けない </li></ul></ul>
  • 6. 努力 過去 <ul><li>FlectioneD とか DDL とか </li></ul><ul><li>似たようなことをもうちょい体系的に </li></ul><ul><li>まぁ正直なところ完璧とはほど遠いか </li></ul>
  • 7. 現在 <ul><li>こんなんが動く </li></ul><ul><ul><li>存在するクラスの一覧くらいは出せる </li></ul></ul><ul><ul><li>ClassInfo から仮想関数テーブルとかも取れる </li></ul></ul>import std.moduleinit; foreach (ModuleInfo mi; ModuleInfo.modules) { foreach (ClassInfo ci; mi.localClasses) { printf(“%.*s ”, ci.name); } }
  • 8. 現在 続き <ul><li>c lass ClassInfo </li></ul><ul><li>c onst(MemberInfo[]) getMembers(string); </li></ul><ul><ul><li>絶賛未実装 </li></ul></ul><ul><li>DMD 見るとコードは書きかけてるので作るつもりはあるにはあるのでないかな </li></ul>
  • 9. 未来 <ul><li>コンパイルタイムリフレクションを充実させて </li></ul><ul><li>ライブラリ側で reflection 提供できるようにするよー </li></ul><ul><ul><li>by うぉるたー </li></ul></ul><ul><li>たしかにコンパイル時には現状の D でもそれなりに情報取れる </li></ul>
  • 10. まとめ <ul><li>D での Reflection の現状とかについて </li></ul><ul><li>まぁ近いうちにそれなりになんか入るのではないかな。知らんけど。 </li></ul><ul><li>将来的にはコンパイルタイム reflection を充実させてライブラリとして提供、らしい </li></ul>

×