C++コミュニティーの中心でC++をDISる

Hideyuki Tanaka
Hideyuki TanakaPreferred Infrastracture
C++コミュニティの中心で
     C++をDISる
    田中英行
自己紹介
•   田中 英行 (@tanakh, id:tanakh)
•   (株)Preferred Infrastructure 勤務
•   Haskell好き/C++嫌い
•   C++歴13年
    – 主にWindowsでゲームを作ったりしていました
    – 最近は仕事でコンソールアプリ書いてます
あらかじめおことわり
• Boost.勉強会ということですが
 – Boost出てきません
 – むしろBoost良くわからないので教えてください!
突然ですが
• 今日はC++をDISる機会をいただきました!
• (通称)C++闇の軍団なる皆様方に於かれまし
  ては釈迦に説法以外の何物でもありません
  が…
• 僭越ながら、C++をDISらせて頂きます
ご存知でしたか?

           C++が今年の
“Discriminating Hackersが選ぶ言語”
  に選ばれていたという事実を・・・
Discriminating Hackersの選ぶ言語
               とは?
• ICFP という関数プログラミングの学会が
• 毎年プログラミングコンテストを開催しています



• 優勝チームの使っていた言語が、
  “Discriminating Hackersの選ぶ言語”
  として讃えられ、無制限に自慢できる権利を与
  えられます
前回の優勝者&言語
よりにもよって、
          手続き型の、
         それもC++が、
関数プログラミングの学会主催の
          コンテストで、
 Discriminating 言語だなんて!
しかし、ルールはルール
• C++に逆らえない日々…
• 何故か仕事でもC++ばかり…
• 何とかせねば!
そして今年(去年)のICFP Contest




                    私の参加した
                    チーム
やりました!
• 優勝者になって、好きな言語を選べる!
 – しかし、ものすごくモメる
• とりあえず使った言語列挙する
 – C++、Haskell、Python
 – すごくオーソドックスな組み合わせですね!


• ということで、今年(9月頃まで?)はくれぐれ
  もこれらの言語の悪口は謹んで頂くように!
しかし。
• 私はC++が好きではない
 – (C++を使ったのは主に私なんですが…)
• 私が選んだのだから(Discriminating Hackerな
  のだから)その効力は私には及ぶまい(と勝
  手にルールを解釈)
• そこで・・・
今年唯一(?)大手を振って
 C++の悪口を言える私が
   思う存分C++をDISる
という
• ごく個人的な発表です。
概要
• 大きく3つのカテゴリに分けて、C++をDISる
 –型
 – テンプレート
 – 関数プログラミング


• お手柔らかにお願いします
Part 1: Type System

その1:型
C++の型システム
• Very Irritating!
• C++のストレスの約8割はこいつの所為
同じ型を何度も書かされる
• (int, int) -> int なる map を扱うとき

 map<int, map<int, int> > mm;
 for (map<int, map<int, int> >::iterator p = mm.begin();
      p != mm.end(); p++){
   map<int, int> &r = p->second;
   for (map<int, int>::iterator q = r.begin();
        q != r.end(); q++){
     ....
   }
 }
これが良くないところ
• 単純に面倒
 – Do not repeat yourself!
• 変更に弱い
 – 何箇所も変更しないといけない
例
• int -> double に変更

map<int, map<int, double> > mm;
for (map<int, map<int, double> >::iterator p = mm.begin();
     p != mm.end(); p++){
  map<int, double> &r = p->second;
  for (map<int, double>::iterator q = r.begin();
       q != r.end(); q++){
    ....
  }
}
typedef 使え

typedef map<int, double> ogram;
typedef map<int, ogram> tgram;

tgram mm;
for (tgram::iterator p = mm.begin();
     p != mm.end(); p++){
  ogram &r = p->second;
  for (ogram::iterator q = r.begin();
       q != r.end(); q++){
    ....
  }
}
だが断る
• 付けるべきではない名前を付けないといけない
 – しかも今回の場合2つ
• なぜ名前をつけるべきではないのか?
 – 1.名前に意味が無い
 – 2.意味のない名前を考えるのは大変
 – 3.(今回の場合)本質的には繰り返しではない
0x使え


map<int, map<int, double> > mm;
for (auto p = mm.begin();p != mm.end(); p++){
  auto r = p->second;
  for (auto q = r.begin();q != r.end(); q++){
    ....
  }
}
0x使わせて
 (´;ω;`)
読ませる気のないコンパイルエラー
• 行番号しか参考になりません!
• gcc 4.5でデフォルト型引数の省略などが入っ
  たが…
 – そもそもの型が大きければ意味がない
 – これはC++ライブラリの構造上の問題か
型推論が非力
• そもそも型推論とは何ぞや?
 – 型なしプログラムから型ありプログラムの再構築
   (Type Reconstruction)
• C++0xでは、すべての型を推論できるわけではな
  い
 –   ○ローカル変数(auto)
 –   ○ラムダ式の返り値
 –   ×関数の引数
 –   ×クラスメンバ
• Hindly-Milner型の型推論ができないものか
Part 2: template in C++

その2:テンプレート
テンプレート
•   みんな大好きテンプレート
•   だがしかし!
•   テンプレートおかしいよテンプレート
•   C++のストレスの約8割はこいつの所為
テンプレートの型
• templateの型パラメータは、forallではない
• たとえばこれは?
   template <class T>
   T id(T v){ return v; }


 – ∀a => a -> a だろうか?
 – 実は違う
テンプレートの型
• なぜなら、引数に対して任意の操作が可能だ
  から
  template <class T>
  void id(T v){ v.foo(); }


 – どういう型が付くのが妥当なのだろうか?

 – 実際にはC++では、テンプレート関数(クラス)
   自体には型はつかない(つけない)
そもそもC++テンプレートとは…?
• C++のテンプレートは何なの?
 – 見た目StructualなSub-Typingを実現している
 – Sub-Type relationの解決をインスタンス時に各々
   行う
 – コンパイル時に型レベルでコードを実行するよう
   なもの
その代償
• C++では、テンプレート関数を宣言時ではなく、
  使用時にインスタンス化し、それに対して型
  付けを行う
• これはどういう事を招くか?
 – テンプレート関数(クラス)を分割コンパイルでき
   ない
 – テンプレート関数自体に対しては型が付かない
 – (得られるコンパイルエラーが往々にして不可解)
分割コンパイルできない
• テンプレート関数を使用している箇所すべて
  に対して、その完全な定義が必要
 – 基本、ヘッダファイルに全部書くことになる
• これは何を招くのか?
 – コンパイル速度の低下
 – ファイル間の依存の増加
コンパイル速度
• 最悪の場合、コンパイル時間がファイル数の
  2乗のオーダに

                  ヘッダファイル




                  ソースファイル
ファイル間の依存性
• インターフェースが変わらなくても、実装が変
  わればコンパイルし直さなければならない
• pimpl のようなバッドノウハウ
 – 実行速度低下
 – コードがまどろっこしく
ヘッダに書くことによる問題
• namespace地獄
std::map<int, std::map<int, int> > mm;
for (std::map<int,std::map<int, int> >::iterator
     p = mm.begin();
     p != mm.end(); p++){
  std::map<int, int> &r = p->second;
  for (std::map<int, int>::iterator q = r.begin();
       q != r.end(); q++){
    ....
  }
}

 – using namespace させて…
テンプレートに型がつかない
• テンプレート関数は定義のみではコンパイル
  されない
 – つまり型がつかない
• 一方、型は非常に良いドキュメントになる
 – 型の重要なメリットの一つ
• C++のテンプレートからは、これがすべて失わ
  れている
例
• std::transform()
      template <class A, class B, class C>
      B transform(A, A, B, C);


  – これでは何のことやら
例(2)
• もちろん、人がある程度注釈することはできる
  template <class InputIterator,
            class OutputIterator,
            class UnaryOperator>
  OutputIterator transform(InputIterator first1,
                           InputIterator last1,
                           OutputIterator result,
                           UnaryOperator op);

• しかし、これでは不十分
 – Input/OutputIteratorが満たす要件は?
 – UnaryOperatorとはなんなのか?
 – これらはドキュメントに書くしかない
   • それは何の保証もない
パラメトリック多相の場合
• 何を渡さなければならないか一目瞭然
• どういう処理がされるかすら分かる場合も多い

     map :: (a -> b) -> [a] -> [b]
     map f xs = ...
今は亡きコンセプトさん
                  /二二ヽ
                  | 今 |
                  | 瀬 |
                  | 腑 |
                  | 戸 |
                  | 之 |
               __| 墓 |__
          / └──┘ \
         |´ ̄ ̄ ̄ ̄ ̄ ̄| ソ
         ソ::::::::::::::::::::::::::::::::ソソ
  / ソ ̄|;;;;;;;lll;;;;;;;| ̄ソ \
  |´ ̄ ̄ |. [廿] .|´ ̄ ̄.|
  |:::::::::::::::|              |::::::::::::::|
  |:::::::::::::::| ̄ ̄ ̄|::::::::::::::|
  . ̄ ̄ ̄|_______|´ ̄ ̄゛
コンセプトがあれば…
• テンプレート引数への要件の明示による
  ドキュメント性の改善
• インスタンス化→型チェックによらずに型
  チェックができるようになり、コンパイルエラー
  の改善

• コンセプトさえあれば…
Part 3: Functional Programming

その3:関数プログラミング
Haskell愛好家としては…
• C++/C++0xでの関数プログラミングには
  我慢ならない…!
オブジェクト指向+関数型
• すべてのものはオブジェクトであるべき
• (すべてのものは関数であるべき)

• 関数がオブジェクトであるということ
 – 関数に付く方がすごく歪になる
  • 関数型ならシンプルなのに…
ラムダ式
• Haskell
  – ¥x -> x+1
• OCaml
  – fun x -> x
• Scheme
  – (lambda (x) x)
• C++
  – [](int x){ return x+1; }
ラムダ式
• とにかくキモい。

     int main()
     {
       [](){}();
     }
ラムダ式
• とにかくキモすぎる。
 int main()
 {
   [](){[](){[](){[](){[](){[](){}();[](){}();}();
 [](){[](){}();[](){}();}();}();}();[](){[](){[]()
 {[](){}();[](){}();}();[](){[](){}();[](){[](){[]
 (){[](){}();[](){}();}();[](){[](){}();[](){}();}
 ();}();}();}();}();}();}();[](){[](){[](){[](){[]
 (){}();[](){[](){[](){[](){[](){[](){[](){}();[](
 ){}();}();[](){[](){cout<<"やぁ(´・ω・`)"<<endl;}();
 [](){}();}();}();}();[](){}();}();[](){[](){}();[
 ](){}();}();}();}();}();[](){[](){}();[](){}();}(
 );}();}();[](){[](){[](){[](){}();[](){}();}();[]
 (){[](){}();[](){}();}();}();}();}();}();
 }
ラムダ式
• どうしてこうなった
 – 予約語、後方互換…
• まあ、それはおいといて。
ラムダ式の型
• ラムダ式の型がイケてない
cout<<demangle(typeid([](int x){return x+1;}).name())<<endl;




             $ g++ -std=c++0x test.cpp
             $ ./a.out
             main::{lambda(int)#1}


                              ???
ラムダ式の型
• 引数と返り値の型がラムダ式の型に現れない
• そのままでは、引数や返り値の型を利用する
  のが困難
関数の型
• 関数の型を扱いたい時、functionクラスを用
  いると簡単
   – しかし、パフォーマンスの低下
      • インライン展開されないなど
   – 単なるテンプレートパラメータが好まれる
      • 結局ドキュメントとしての型が得られない

template <class A>               template <class F, class A>
A twice(function<A(A)> f, A v)   A twice(F f, A v)
{                                {
  return f(f(v));                  return f(f(v));
}                                }
多相関数
• C++0xのラムダ式は多相にならない
 – 例えば id x = x, id :: forall a . a -> a
 – のようなものが書けない

 – template <class A>[](A x){ return x; }
 – ↑ こういうモノが書けない
テンプレート関数の値
• C++ではテンプレート関数、それ自体は値とし
  て扱えない
 – 具体的な型でインスタンス化しないと値にならない
 – つまり、そのような式に付く型がない

   template <class T>
   T id(T x){ return x; }

   int main()
   {
     // auto f = id; // <- これにつく型は?
     auto g = id<int>; // <- これは int->int
   }
総称型がない
• C++の型には総称型がない
 – すべての型は具体的な型の組み合わせ
 – つまり型パラメータがない
 – 多相関数に付けられる型がないのもまあ頷ける
• ところが、Boost.Lambdaでは多相関数が扱え
  るらしい?
 – 一体どういう事なのか?
Boost.Lambdaでのラムダ式
• 何故かできてしまう
      int main()
      {
        using namespace boost::lambda;
        auto f = _1;         // ¥x -> x
        cout<<f(1)<<endl;    // -> 1
        cout<<f(3.14)<<endl; // -> 3.14
      }


• fの型は何なのか?
 – forall a . a -> a をどうやって表現している?
Boost.Lambdaの型
• 出力してみる
       cout<<demangle(typeid(f).name())<<endl;




       boost::lambda::lambda_functor<boost::la
       mbda::placeholder<1> >

• ??
Boost.Lambdaの型(2)
• もう少し複雑な例
           int main()
           {
             using namespace boost::lambda;
             auto f = cout << _1 << '¥n';
             cout<<demangle(typeid(f).name())<<endl;
           }



 boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::bitwise_action<boost::
 lambda::leftshift_action>,
 boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::b
 itwise_action<boost::lambda::leftshift_action>, boost::tuples::tuple<std::ostream&,
 boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type,
 boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
 boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, char const,
 boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
 boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
 boost::tuples::null_type> > >
Boost.Lambdaの型(3)
• 型が式を丸ごと持ってた!
 – Expression Template
• 確かにこれで型は付くのだけどインターフェー
  スとしては…
• 型の型を要求する!
パターンマッチ
• オブジェクト指向言語に関数型が取り込まれ
  るときに無視されるものの筆頭その1
• なんでない?
 – なんでない言語が多い?
• なんでない?
 – 絶対必要だと思うんですけども
パターンマッチのような物…?
• なんか提案されているらしい
 – さすがにこれは…
variant<
    int
  , pair<int,double>
  , pair<int,int>
  , pair<double,int>
> var;

switch_(var)
  |= case_< pair<_1,_1> >(...) // matches pair<int,int>
  |= case_< pair<int,_> >(...) // matches pair<int,*>
  |= case_< pair<_,_> >(...) // matches pair<*,*>
  |= case_< int >(...)
;
カリー化
• オブジェクト指向言語に関数型が取り込まれ
  るときに無視されるものの筆頭その2
• もしかしてカリー化軽視されている?
カリー化の旨み
• 純粋関数的に状態を持ちまわるというのが
  とてもやりやすくなる
      cnt acc i = (acc, cnt (acc+i))

      let   a =   cnt 0 in
      let   (v,   b) = a 1 in –- v = 0
      let   (w,   c) = b 2 in –- w = 1
      let   (x,   d) = c 3 in –- x = 3
      ...

• オブジェクト vs 関数
• 関数プログラミングでは、次の状態として
  関数を返すことがよくある(e.g. Iteratee)
まとめ
まとめ
• まだまだ言いたいことはありますが…
 –   iteratorはクソ
 –   例外周りがいろいろクソ
 –   ADLはクソ
 –   moveはクソ
 –   右辺値参照はクソ
 –   GCないとかクソ
 –   スマポはクソ
 –   …
• C++もいいところはあると思います
 – 適当に書いてもそこそこ速いコードが書ける
 – 0xでそれなりに改善されてる
おわりに
• 私がC++から足を洗えるようになるのは
  いつになりますことやら
• せめて0xを・・・!
1 of 66

Recommended

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜 by
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
14.6K views30 slides
競技プログラミングのためのC++入門 by
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
32.9K views63 slides
プログラムを高速化する話 by
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話京大 マイコンクラブ
242.3K views120 slides
中3女子でもわかる constexpr by
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
49K views100 slides
C++ マルチスレッド 入門 by
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門京大 マイコンクラブ
57.8K views53 slides
ゲーム開発者のための C++11/C++14 by
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
103.6K views157 slides

More Related Content

What's hot

メタプログラミングって何だろう by
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
28.7K views16 slides
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ. by
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
19.7K views102 slides
組み込み関数(intrinsic)によるSIMD入門 by
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
47.5K views122 slides
C++ マルチスレッドプログラミング by
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
107.6K views97 slides
組み込みでこそC++を使う10の理由 by
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
27K views32 slides
C++による数値解析の並列化手法 by
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法dc1394
3.7K views50 slides

What's hot(20)

メタプログラミングって何だろう by Kota Mizushima
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima28.7K views
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ. by kiki utagawa
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa19.7K views
組み込み関数(intrinsic)によるSIMD入門 by Norishige Fukushima
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima47.5K views
C++ マルチスレッドプログラミング by Kohsuke Yuasa
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa107.6K views
組み込みでこそC++を使う10の理由 by kikairoya
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya27K views
C++による数値解析の並列化手法 by dc1394
C++による数値解析の並列化手法C++による数値解析の並列化手法
C++による数値解析の並列化手法
dc13943.7K views
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ by Genya Murakami
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami52.4K views
不遇の標準ライブラリ - valarray by Ryosuke839
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke8397.4K views
証明プログラミング超入門 by Kyoko Kadowaki
証明プログラミング超入門証明プログラミング超入門
証明プログラミング超入門
Kyoko Kadowaki10.9K views
C/C++プログラマのための開発ツール by MITSUNARI Shigeo
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo13.8K views
プログラミングコンテストでの乱択アルゴリズム by Takuya Akiba
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba26.8K views
何となく勉強した気分になれるパーサ入門 by masayoshi takahashi
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi35.8K views
指数時間アルゴリズム入門 by Yoichi Iwata
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata44.7K views
自動定理証明の紹介 by Masahiro Sakai
自動定理証明の紹介自動定理証明の紹介
自動定理証明の紹介
Masahiro Sakai8.3K views
関数プログラミング入門 by Hideyuki Tanaka
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka21.8K views
競技プログラミングにおけるコードの書き方とその利便性 by Hibiki Yamashiro
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro18.2K views
高速な倍精度指数関数expの実装 by MITSUNARI Shigeo
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo15K views

Viewers also liked

C++14 solve explicit_default_constructor by
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorAkira Takahashi
7.3K views7 slides
Glfw3,OpenGL,GUI by
Glfw3,OpenGL,GUI Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI hira_kuni_45
3.1K views44 slides
Introduction to boost test by
Introduction to boost testIntroduction to boost test
Introduction to boost testKohsuke Yuasa
4.1K views122 slides
Pub/Sub model, msm, and asio by
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asioTakatoshi Kondo
1.6K views42 slides
C++14 enum hash by
C++14 enum hashC++14 enum hash
C++14 enum hashAkira Takahashi
8.1K views9 slides
Boost.Timer by
Boost.TimerBoost.Timer
Boost.Timermelpon
1.3K views42 slides

Viewers also liked(7)

C++14 solve explicit_default_constructor by Akira Takahashi
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
Akira Takahashi7.3K views
Glfw3,OpenGL,GUI by hira_kuni_45
Glfw3,OpenGL,GUI Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI
hira_kuni_453.1K views
Introduction to boost test by Kohsuke Yuasa
Introduction to boost testIntroduction to boost test
Introduction to boost test
Kohsuke Yuasa4.1K views
Boost.Timer by melpon
Boost.TimerBoost.Timer
Boost.Timer
melpon1.3K views

Similar to C++コミュニティーの中心でC++をDISる

Unity2015_No10_~UGUI&Audio~ by
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
1.1K views49 slides
とあるFlashの自動生成 by
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成Akineko Shimizu
1.7K views69 slides
(ゲームじゃない方の)switchで遊びたい話 by
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話Masanori Masui
256 views25 slides
わんくま同盟大阪勉強会#61 by
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61TATSUYA HAYAMIZU
957 views66 slides
C++ tips 3 カンマ演算子編 by
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編道化師 堂華
6.2K views24 slides
.NET Compiler Platform by
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
36.1K views62 slides

Similar to C++コミュニティーの中心でC++をDISる(20)

Unity2015_No10_~UGUI&Audio~ by CHY72
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
CHY721.1K views
とあるFlashの自動生成 by Akineko Shimizu
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
Akineko Shimizu1.7K views
(ゲームじゃない方の)switchで遊びたい話 by Masanori Masui
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
Masanori Masui256 views
わんくま同盟大阪勉強会#61 by TATSUYA HAYAMIZU
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU957 views
.NET Compiler Platform by 信之 岩永
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
信之 岩永36.1K views
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践 by LINE Corporation
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
コンパイルターゲット言語としてのWebAssembly、そしてLINEでの実践
LINE Corporation4K views
リテラル文字列型までの道 by Satoshi Sato
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato1.5K views
第一回Data mining勉強会 -第二章 by Tomonobu_Hirano
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Tomonobu_Hirano515 views
第一回Data mining勉強会 -第二章 - 原案 by yushin_hirano
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano605 views
中3女子が狂える本当に気持ちのいい constexpr by Genya Murakami
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami30.5K views
C++0x 言語の未来を語る by Akira Takahashi
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi1.7K views
インデントを減らそう by 知之 朝枝
インデントを減らそうインデントを減らそう
インデントを減らそう
知之 朝枝214 views
C++11概要 ライブラリ編 by egtra
C++11概要 ライブラリ編C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra3K views
.NET Core 2.x 時代の C# by 信之 岩永
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永6.2K views
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部 by Kiyoshi Ogawa
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
Kiyoshi Ogawa5.4K views
C++0xの概要(デブサミ2010) by Akira Takahashi
C++0xの概要(デブサミ2010)C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Akira Takahashi1.3K views

More from Hideyuki Tanaka

ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T... by
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...
ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...Hideyuki Tanaka
1.9K views29 slides
Xpath in-lens by
Xpath in-lensXpath in-lens
Xpath in-lensHideyuki Tanaka
5.7K views22 slides
IdrisでWebアプリを書く by
IdrisでWebアプリを書くIdrisでWebアプリを書く
IdrisでWebアプリを書くHideyuki Tanaka
19.4K views27 slides
手書きスライド by
手書きスライド手書きスライド
手書きスライドHideyuki Tanaka
4.2K views15 slides
Monad tutorial by
Monad tutorialMonad tutorial
Monad tutorialHideyuki Tanaka
13.3K views79 slides
Yesod勉強会 by
Yesod勉強会Yesod勉強会
Yesod勉強会Hideyuki Tanaka
9.5K views66 slides

More from Hideyuki Tanaka(7)

Recently uploaded

さくらのひやおろし2023 by
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023法林浩之
91 views58 slides
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
175 views15 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
71 views41 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
13 views38 slides
Web3 Career_クレデン資料 .pdf by
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdfnanamatsuo
14 views9 slides
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
73 views42 slides

Recently uploaded(12)

さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之91 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda175 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka71 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
Web3 Career_クレデン資料 .pdf by nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo14 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.41 views
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 by Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4172 views
01Booster Studio ご紹介資料 by ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172300 views

C++コミュニティーの中心でC++をDISる