dwangocpp1-lt

1,340 views

Published on

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

No Downloads
Views
Total views
1,340
On SlideShare
0
From Embeds
0
Number of Embeds
636
Actions
Shares
0
Downloads
5
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

dwangocpp1-lt

  1. 1. C++初心者がC++11で parserを書いてみたはなし id:karupanerura
  2. 2. about me • id:karupanerura • github/twitter/… • Perl/JavaScript/Java/C99/… • emacs派 (自由なeditor) • Mobile Factory, Inc. • Social App Engineer • Web/Android/HTML5/…
  3. 3. どのくらい初心者か • 8年くらいぶりにC++を書いた • Cに毛が生えた程度のコードしか書いてなかった • boostは触った事はあるけど忘れた • templateを(C++では)使った事がない • constexprを(存在は知っていたが)使った事がない
  4. 4. 偽のC++プログラマ
  5. 5. なぜここにきているか • CでC++を書いたことはある • ちゃんとC++勉強したい • cocos2d-x 3.0 で良くなったらしいので触ってみたい • XS(PerlのC bindingの実装用の独自言語)でC++が使える • 勉強会に行くと最近の流行りとかが体系的に分かって良さ そうだ
  6. 6. しかし、通常枠は補欠もたくさ んいて入れそうにない
  7. 7. そうだ、LTをしよう
  8. 8. lisp1 parser C++11なんかだいぶ書きやすくなったらしいじゃん? lisp parserくらいなら楽に書けるんじゃね?(雑)
  9. 9. 便利だった機能
  10. 10. auto 型推論サイコー!
  11. 11. auto • 「あー。やっぱここの型変えないとだめだわー。」 • みたいなときに、書き換える箇所が少なくなる。 • 型の名前がtemplateによってめっちゃ長くなってしまっ たときでも、「autoあるし、まあ、いいよ。仕方ないよ ね。」って思えて優しい気持ちになれる • そもそも型名がめっちゃ長くなるようなコードは筋が 悪い?
  12. 12. std::shared_ptr/std::unique_ptr GCサイコー!
  13. 13. smart pointer • ポインタ事故 • deleteのタイミングミスるとsegvして死ぬ • deleteを忘れるとmemory leakして死ぬ • shared_ptrを使うと参照をカウントして、参照している 箇所が0になれば勝手に解放してくれる • 安全にポインタが使える
  14. 14. smart pointer • うっかり多用し過ぎるとめっちゃ長くなる • vector<shared_ptr<Foo<shared_ptr<Bar>>>> • は????????? ってなる • オブジェクトのライフサイクルをちゃんと考えて設計し ないとこうなる • 自戒
  15. 15. for(type var : array) foreachサイコー!
  16. 16. for(type var : array) • Javaの拡張for文みたいなやつがついにC++に!! • iteratorとかを使って素のc likeなforを書くより遥かにミ スが少なくなってよい • autoと組み合わせる事で動的型付け言語でループ書くの と大差無いくらいスッキリする • 普通にループ回すだけなら使わない手はない
  17. 17. で、実装は? • github.com/karupanerura/cpp-mylisp • に上げるつもりだったけど上げてない • 中3女子の人のconstexprに関する発表と成果物に感銘 を受けて「オブジェクト志向サイコー!」って感じで書 いてたparserのコードを全て捨てたくなった • というか、設計が雑過ぎて相互includeが出来て redefinition errorが出てモチベーションが枯れた
  18. 18. これから • constexprを使ってリファクタリングしてみる • 理解できたら、Sprout.Weed を使ってみる • constexprサイコー!って言いたい • BOOST_PPで頑張ってみる • マクロの深淵を覗いてみる
  19. 19. 参考書 • http://ezoeryou.github.io/cpp-book/C++11-Syntax- and-Feature.xhtml
  20. 20. 感想 • C++おくがふかい • まじでおくがふかい • 今日1日でだいぶとっかかりつかめた気がする • 今日1日でコンパイル時処理にだいぶ染まった気がする

×