Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」

1,481 views
1,353 views

Published on

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

No Downloads
Views
Total views
1,481
On SlideShare
0
From Embeds
0
Number of Embeds
49
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」

  1. 1. 8888年間の研究生活で年間の研究生活で年間の研究生活で年間の研究生活で C++C++C++C++書いてて書いてて書いてて書いてて 大変だったことベスト大変だったことベスト大変だったことベスト大変だったことベスト3333 H.Hiro http://hhiro.net/about/ github: maraigue Twitter: @h_hiro_ Boost.勉強会 #15 札幌(2014.5.24)
  2. 2. 自己紹介自己紹介自己紹介自己紹介
  3. 3. H.Hiro • 3月まで大学院生(博士課程) →4月から某研究員 • 学部4年から博士課程まで 現在までに8年間の研究生活 • 研究でアルゴリズムの開発・比較を しているので、C++はお世話に なりっぱなし
  4. 4. • 5月19日に 博士論文公開説明会を 無事終えました • ということで、研究で C++書いてて大変だった ことを話したいと思います
  5. 5. 私の研究私の研究私の研究私の研究
  6. 6. • 身バレ回避のため 詳細は書きませんが • 文字列検索の アルゴリズムを開発してます 知りたい方には個別にお教えします
  7. 7. 大変だったこと大変だったこと大変だったこと大変だったこと 第第第第3333位位位位
  8. 8. 赤黒木の赤黒木の赤黒木の赤黒木の ライブラリへのライブラリへのライブラリへのライブラリへの 機能追加機能追加機能追加機能追加
  9. 9. Red-Black Tree 数値(一般には、大小関係のあるデータ)を 検索しやすいよう格納するための木構造 画像はWikipediaより
  10. 10. 欲しかった機能 木を回転したとき、回転されたノードとその祖先の ノードについて、書き込まれた値を更新したい
  11. 11. 大変だったこと大変だったこと大変だったこと大変だったこと 第第第第2222位位位位
  12. 12. Suffix TreeSuffix TreeSuffix TreeSuffix Treeをををを 自前で実装自前で実装自前で実装自前で実装
  13. 13. Suffix Tree ある文字列の接尾辞(末尾を含む部分文字列)が すべて格納されるような木構造 stackoverflow.com/questions/6459680/minimal-cyclic-sub-string-in-a-bigger-cyclic-string (“BANANA$”での例)
  14. 14. Suffix Tree 実際には構築高速化・メモリ削減のため、 分岐がない複数の辺をひとまとめにする 画像はWikipediaより
  15. 15. 自分のプログラムでは自分のプログラムでは自分のプログラムでは自分のプログラムでは 圧縮はしたかったけど圧縮はしたかったけど圧縮はしたかったけど圧縮はしたかったけど APIAPIAPIAPI的には的には的には的には 圧縮されてない表現が欲しかった圧縮されてない表現が欲しかった圧縮されてない表現が欲しかった圧縮されてない表現が欲しかった
  16. 16. そういうライブラリは 既存のものがあったのかもしれないけど 探すのが面倒で自分で作った
  17. 17. ちなみに そのときの副産物が fundoshi.hpp std::string x("abcde"); fundoshi::string fs = fundoshi::string(&(x[1]), 3); // fsは、xとメモリを共有したまま"bcd"を表している std::cout << fs.length() << std::endl; // 3 std::cout << fs[1] << std::endl; // c www.slideshare.net/maraigue/20121117-clrhc-fundoshihpp
  18. 18. 大変だったこと大変だったこと大変だったこと大変だったこと 第第第第1111位位位位
  19. 19. C++C++C++C++直接直接直接直接 関係ないけど関係ないけど関係ないけど関係ないけど
  20. 20. 他人の他人の他人の他人の アルゴリズムをアルゴリズムをアルゴリズムをアルゴリズムを 自前で実装自前で実装自前で実装自前で実装
  21. 21. •競合するアルゴリズム いっぱいあるなあ •あれ、どれも理論評価だけで 実験ないのかよ •じゃあそれ比較するのが 一つの研究だな
  22. 22. その後の苦難 • 論文中にアルゴリズムは示されているけど、 自分で実装したものが正しいか不安になる 程度には複雑 しかも、例(=テストコード)が少なすぎて その実装が正しいか確かめにくい • そもそも定義が曖昧なケースも
  23. 23. だから言いたいこと 普通のプログラムでも アルゴリズムの説明でも テストコード大事!
  24. 24. ごめんなさい、私は普段は テストコード書くのが億劫な人です (でも投稿した論文では例たくさん書いたよ!)
  25. 25. おわりにおわりにおわりにおわりに
  26. 26. まとめるほどの こととかないのですが
  27. 27. 「自分でアルゴリズム 構築してます」って方 一緒に飲めたら 幸いです
  28. 28. ありがとうありがとうありがとうありがとう ございましたございましたございましたございました

×