Submit Search
boost and c++11
5 likes
1,495 views
Akihiko Matuura
1 of 51
Download now
Downloaded 22 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
More Related Content
PDF
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning
Preferred Networks
PDF
2016tf study5
Shin Asakawa
PDF
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
PDF
TensorFlowで遊んでみよう!
Kei Hirata
PPTX
Go 言語を語ってみるか
Akihiko Matuura
PDF
エクストリームC++11/14プログラミング
egtra
PDF
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
PDF
C++ Template Metaprogramming
Akira Takahashi
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning
Preferred Networks
2016tf study5
Shin Asakawa
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
TensorFlowで遊んでみよう!
Kei Hirata
Go 言語を語ってみるか
Akihiko Matuura
エクストリームC++11/14プログラミング
egtra
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
C++ Template Metaprogramming
Akira Takahashi
Viewers also liked
(20)
PDF
Boostのあるプログラミング生活
Akira Takahashi
PDF
ABC2015 Summer LT
Kensuke Onishi
PDF
Boost study meeting opening 4
Akira Takahashi
PDF
CG基礎3 メタリンク
Tetsuro Nakamura
PDF
boost::shared_ptr tutorial
NU_Pan
PPTX
boost - std - C#
Tatsuya Ishikawa
PDF
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
Vissarion Fisikopoulos
PDF
Template Meta Programming入門から応用まで
yoshihikoozaki5
DOCX
Boost勉強会 #10 ディスカッションまとめ
Sigureya
PDF
Glfw3,OpenGL,GUI
hira_kuni_45
PPTX
ゲーム開発経営ゲーム
Yuki Miyatake
PDF
3DCAD@VDI活用とCADデータ管理のロードマップ
Dell TechCenter Japan
PDF
Boost container feature
Akira Takahashi
PDF
Boost Tour 1_58_0 merge
Akira Takahashi
PDF
Boost tour 1.60.0
Akira Takahashi
PPTX
3D CADと3Dプリンタ体験セミナー #1
Kou Ouchi
PPTX
Unity MeshとColliderについて
Self Norl
PPTX
Boost apps ver1.0
hosokawa atsushi
PDF
ゲームアプリの数学@GREE GameDevelopers' Meetup
Ryuichi Kubuki
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
Boostのあるプログラミング生活
Akira Takahashi
ABC2015 Summer LT
Kensuke Onishi
Boost study meeting opening 4
Akira Takahashi
CG基礎3 メタリンク
Tetsuro Nakamura
boost::shared_ptr tutorial
NU_Pan
boost - std - C#
Tatsuya Ishikawa
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
Vissarion Fisikopoulos
Template Meta Programming入門から応用まで
yoshihikoozaki5
Boost勉強会 #10 ディスカッションまとめ
Sigureya
Glfw3,OpenGL,GUI
hira_kuni_45
ゲーム開発経営ゲーム
Yuki Miyatake
3DCAD@VDI活用とCADデータ管理のロードマップ
Dell TechCenter Japan
Boost container feature
Akira Takahashi
Boost Tour 1_58_0 merge
Akira Takahashi
Boost tour 1.60.0
Akira Takahashi
3D CADと3Dプリンタ体験セミナー #1
Kou Ouchi
Unity MeshとColliderについて
Self Norl
Boost apps ver1.0
hosokawa atsushi
ゲームアプリの数学@GREE GameDevelopers' Meetup
Ryuichi Kubuki
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
Ad
Similar to boost and c++11
(20)
PPTX
Python による 「スクレイピング & 自然言語処理」入門
Tatsuya Tojima
PDF
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
PDF
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
tokyorgirls
PDF
めもおきば新刊のお知らせ サーバーレスでHelloWorldする25の方法 #ssmjp
Masahiro NAKAYAMA
PPTX
M5StickVで詰まった話
shts1
PDF
アルゴリズムを楽しく!@PiyogrammerConference
Kensuke Otsuki
PDF
Rubyの御先祖CLUのお話(原本)
洋史 東平
PDF
C++ template-primer
Kohsuke Yuasa
PDF
Runtime c++editing
Seiya Ishibashi
PDF
(超初心者向け)オブジェクト指向とC#
ssusera3d157
PPTX
Why python
Mikio Kubo
PDF
Bjarne dont speaking
Akira Takahashi
PDF
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
PDF
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
洋史 東平
PDF
スタートアップツールチラ見せ
Hisatoshi Kikumoto
PDF
人それぞれの競プロとの向き合い方
Kensuke Otsuki
PDF
Pythonで自動化した話1
Masato Fujitake
PPTX
ChainerでDeep Learningを試すために必要なこと
Retrieva inc.
PDF
IT業界における伝統芸能の継承 #hachiojipm
鉄次 尾形
PPTX
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
Knowledge & Experience
Python による 「スクレイピング & 自然言語処理」入門
Tatsuya Tojima
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
tokyorgirls
めもおきば新刊のお知らせ サーバーレスでHelloWorldする25の方法 #ssmjp
Masahiro NAKAYAMA
M5StickVで詰まった話
shts1
アルゴリズムを楽しく!@PiyogrammerConference
Kensuke Otsuki
Rubyの御先祖CLUのお話(原本)
洋史 東平
C++ template-primer
Kohsuke Yuasa
Runtime c++editing
Seiya Ishibashi
(超初心者向け)オブジェクト指向とC#
ssusera3d157
Why python
Mikio Kubo
Bjarne dont speaking
Akira Takahashi
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
clu2cの動態保存とはなんでしょう?(東海道らぐ 初オフ会 in オープンソースカンファレンス 2012 Kansai@Kyoto 資料)
洋史 東平
スタートアップツールチラ見せ
Hisatoshi Kikumoto
人それぞれの競プロとの向き合い方
Kensuke Otsuki
Pythonで自動化した話1
Masato Fujitake
ChainerでDeep Learningを試すために必要なこと
Retrieva inc.
IT業界における伝統芸能の継承 #hachiojipm
鉄次 尾形
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
Knowledge & Experience
Ad
boost and c++11
1.
Modern C++ Programming and New
C++ International Standard (C++11) ES松浦 twitter:@matu_ani 1 2011年11月30日水曜日
2.
自己紹介? 『ストラウストラップのプログラミング入門』 •やっとでました!! •2011年 8月 発売 •怒涛の1200ページ! •通称:鈍器w •8,190円
たけーっ! いや、いち監修メンバーでしかないんですが... つれー、3回通しで読んだからつれー。最後の2ヶ月で2回読んだもんな、つれー。原著もなー 2 2011年11月30日水曜日
3.
Agenda •今こそC++の魅力をお伝えしたい。 • 改めてC++の紹介をして、 • C++がサポートするプログラミングパラダイ ムについて、少しkwsk •
boostや新しい国際標準(通称C++11)につ いて軽く紹介 3 2011年11月30日水曜日
4.
Content • 歴史 • C++の使われどころ •
プログラミング・パラダイム • boost おさわりだけ • C++11ソフトタッチだけ 4 2011年11月30日水曜日
5.
歴史 history 5 2011年11月30日水曜日
6.
6 2011年11月30日水曜日
7.
Common History • • 1979:C with
Classes • • • 1998:初の国際標準規格(C++98) 1990:『The Annotated C++ Reference Manual (ARM)』 2003:マイナーバージョンアップ(C++03) 2011:初のメジャーバージョンアップ(C++11) 7 2011年11月30日水曜日
8.
Common History • • 1979:C with
Classes • • • 1998:初の国際標準規格(C++98) 1990:『The Annotated C++ Reference Manual (ARM)』 2003:マイナーバージョンアップ(C++03) 2011:初のメジャーバージョンアップ(C++11) C++98以降、boostという拡張ライブラリ 開発を通してC++は成長していた。 そして、C++11にて別言語?というくらい の大胆な進化を遂げた。 7 2011年11月30日水曜日
9.
C++の使われど ころ What is Product
that is using C++ 8 2011年11月30日水曜日
10.
The Programming Languages Beacon •
http://www.lextrait.com/vincent/ implementations.html 9 2011年11月30日水曜日
11.
The Programming Languages Beacon •
http://www.lextrait.com/vincent/ implementations.html OS/ブラウザ/GUI/オフィス/DBMS/コンパイ ラ/Game/JavaVM/Webプラットフォーム/ などなど、主要なソフトウェアプロダクトはC+ +で書かれている。 9 2011年11月30日水曜日
12.
Why C++ is
not popular? • • 『C++はなぜ人気がないのか』 • http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/ 20050215/156201/ 「日本でC++の評価が低いのは,こうしたソフトの大部分 が海外製であることの裏返しではないか,とまで思える」 10 2011年11月30日水曜日
13.
Why C++ is
not popular? • • 『C++はなぜ人気がないのか』 • http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/ 20050215/156201/ 「日本でC++の評価が低いのは,こうしたソフトの大部分 が海外製であることの裏返しではないか,とまで思える」 • 個人的には逆に、 • 「C++大好きなヤツが少ないから、こうした (大切な)ソフトの大部分が海外製」なんじゃ ね?とか思いますです、ハイ。 10 2011年11月30日水曜日
14.
C++ is むずい?? その全てをマスターしようとすると 一人の人間の限界を軽く超えるw(私感) しかしながら、 C++が備える言語機能、プログラミングパラダ イム、イディオムにより、安全で効率のよいプロ グラムを簡単に記述することが可能。 →
VBやSQLのような書き方が可能(EDSLとか言います) → ただし、ライブラリアンには高度なスキルが要求される → だからこそ?Geek達を惹きつけてやまない 11 2011年11月30日水曜日
15.
プログラミング・ パラダイム Programming Paradigm 12 2011年11月30日水曜日
16.
C++ has Multi Programming
Paradigm 13 2011年11月30日水曜日
17.
C++ has Multi Programming
Paradigm 手続き型 13 2011年11月30日水曜日
18.
C++ has Multi Programming
Paradigm 手続き型 オブジェクト指向 13 2011年11月30日水曜日
19.
C++ has Multi Programming
Paradigm 手続き型 オブジェクト指向 ジェネリック 13 2011年11月30日水曜日
20.
C++ has Multi Programming
Paradigm 手続き型 オブジェクト指向 ジェネリック メタプログラミング 13 2011年11月30日水曜日
21.
C++ has Multi Programming
Paradigm 手続き型 オブジェクト指向 ジェネリック メタプログラミング 関数型 13 2011年11月30日水曜日
22.
復習:ジェネリック C#やJavaも備えている機能ですが、、、?? List<T> lst ; ジェネリックは、単なる
Parameterized Type による汎用データ構造だけを指すわけ ではない。 14 2011年11月30日水曜日
23.
復習:ジェネリック C#やJavaも備えている機能ですが、、、?? List<T> lst ; ジェネリックは、単なる
Parameterized Type による汎用データ構造だけを指すわけ ではない。 真の意味はデータと処理の分離 である 14 2011年11月30日水曜日
24.
復習:オブジェクト指向 オブジェクト命! で、オブジェクトって なんだっけ? • データと処理(操作)が一緒になったもの •
データが主役で処理はそれに付随するもの • モノとその振る舞い:オブジェクト 15 2011年11月30日水曜日
25.
復習:オブジェクト指向 オブジェクト命! で、オブジェクトって なんだっけ? • データと処理(操作)が一緒になったもの •
データが主役で処理はそれに付随するもの • モノとその振る舞い:オブジェクト ソフトウェアではそれが常に真だろうか? つーか、現実世界でどーなの? 15 2011年11月30日水曜日
26.
例:探す template<typename Iterator, typename
Tp> Iterator find(Iterator first, Iterator last, const Tp& val) { while (first != last && !(*first == val)) ++first; return first; } • • • • 探す条件例 : a == b 要素をたどる: ++a 要素を参照する: *a; 上記さえ満たせばあらゆる型に適用可能 16 2011年11月30日水曜日
27.
例:探す template<typename Iterator, typename
Tp> Iterator find(Iterator first, Iterator last, const Tp& val) { while (first != last && !(*first == val)) ++first; return first; } • • • • 探す条件例 : a == b 要素をたどる: ++a 要素を参照する: *a; 上記さえ満たせばあらゆる型に適用可能 「探す」とは、ある条件に合致する要素を 見つけること。それはデータ型には依存し ない。# 「探す」の場合、データ構造には依存する事に注意 16 2011年11月30日水曜日
28.
いろいろ探す // svから"X"を探す vector<string> sv; ・・・ vector<string>::iterator
i = find(sv.begin(), sv.end(), "X"); // arから5を探す int ar[10]; ・・・ int* pi = find( ar, ar+10, 5); 17 2011年11月30日水曜日
29.
いろいろ探す // svから"X"を探す vector<string> sv; ・・・ vector<string>::iterator
i = find(sv.begin(), sv.end(), "X"); // arから5を探す int ar[10]; ・・・ int* pi = find( ar, ar+10, 5); 17 2011年11月30日水曜日
30.
いろいろ探す // svから"X"を探す vector<string> sv; ・・・ vector<string>::iterator
i = find(sv.begin(), sv.end(), "X"); // arから5を探す int ar[10]; ・・・ int* pi = find( ar, ar+10, 5); 17 2011年11月30日水曜日
31.
いろいろ探す // svから"X"を探す vector<string> sv; ・・・ vector<string>::iterator
i = find(sv.begin(), sv.end(), "X"); // arから5を探す int ar[10]; ・・・ int* pi = find( ar, ar+10, 5); findは一回だけ書けば使い回し可能 「探す」は、データ型が変わっても不変である。 17 2011年11月30日水曜日
32.
Generic Programing • それはC++98のSTLで示された。 •
オブジェクト指向に対するアンチテーゼ • • オブジェクト指向は少なくとも銀の弾ではない 事実、現代のプログラミングモデルは継承を積極的に は採用しない。むしろダック・タイピングを重視する 方向にある。 • 使いたいアルゴリズムを決めよ。様々な 型、データ構造を操作対象にできるよう、 それらをパラメータ化せよ。 • Bjame Stroustrup 18 2011年11月30日水曜日
33.
その他のパラダイム • メタプログラミング • プログラム内にプログラムを生成する(言語内言 語)。これは闇の世界に突入するので次の機会に でも • 関数型 • 並列プログラミングの発展と共に非常に重要なパ ラダイムとなった。
関数型自体は池田くんのプ レゼン参照。C++はラムダやfunction型でそれ をサポートする。今日はあとで、チョットだけ。 19 2011年11月30日水曜日
34.
boost C++98以降の、C++の進化 20 2011年11月30日水曜日
35.
boost • C++の先駆的な開発者のコミュニティ、及びそのコ ミュニティによって公開されているオープンソース ライブラリのことを指す。コミュニティとしての BoostはC++標準化委員会の委員により設立されて おり、現在でもその多くが構成員として留まってい る。このような経緯もあってBoostコミュニティは C++の標準化に対してかなりの影響力を有してい る。実際に標準化委員会の発表した「TR1」の 2/3以上がBoostライブラリを基にしている。 • Boostはテンプレートなどを活用して積極的にメタ プログラミングやジェネリックプログラミングを取 り入れていこうという傾向がある。 21 2011年11月30日水曜日
36.
matzのC++紹介 • 「Boost C++
ライブラリは古典的な C+ + 観からは想像もできないような総称型 プログラミングの世界を見せてくれてい ます。」 • 「オブジェクト指向機能もある総称型プ ログラミング言語。これがこれからの C ++ の立ち位置になるのかもしれません」 • http://jp.rubyist.net/magazine/?0018-Legwork 22 2011年11月30日水曜日
37.
一枚でboost (笑) • • • • • • • メモリ管理 • scoped_ptr, scoped_array,
shared_ptr, shared_array, weak_ptr 入出力 • asio, filesystem, iostreams, serialization 小道具 • foreach, scoped_exit, 関数型: • function, lambda, signals2 文字列系: • format, regex, tokenizer 並列・並行 • interprocess, thread 他に、数学、メタプログラミング、などなど、膨大なライブラリです • https://sites.google.com/site/boostjp/ 23 2011年11月30日水曜日
38.
C++11 2011年、新国際標準 24 2011年11月30日水曜日
39.
C++11 • ISO/IEC 14882:2011
は、2011年時 点で最新のプログラミング言語C++の ISO標準である。省略して C++11 と呼 ばれる。規格の策定中は2009年中の標 準化を目指していたため、C++0xとい う仮称で呼ばれていた。 • ISO/IEC 14882:2003 (C++03) に代 わるものとして、2011年8月12日に ISOによって承認された。 25 2011年11月30日水曜日
40.
抜粋 • • • • • • • • • • • • • 右辺値参照、Moveセマンティクス Range-base for lambda 型推論 nullptr decltype char16_t, char_32_t,
raw string literal constexpr 可変引数テンプレート メンバー初期化子 initializer_list ガベージコレクションと到達可能性ベースリーク検知の最小支援 スマートポインタ、thread、時間、などboostからたくさん 26 2011年11月30日水曜日
41.
nullptr これまで、NULLマクロ、0リテラル等でヌルポインタを 表現していた。しかし、NULLマクロと0リテラルは、テ ンプレートで使用するとint型に推論されてしまうという 問題ががが。→ nullリテラル導入されますた。 int* p
= nullptr; 27 2011年11月30日水曜日
42.
右辺値参照、Moveセマ ンティクス • 個人的にはC++11最大のトピック • ポインタ、参照に次ぐ、第三の文法、 &&
アンパサを二個 struct X{ X(std::vector<int>&& v){...} }; 28 2011年11月30日水曜日
43.
右辺値参照、Moveセマ ンティクス • 個人的にはC++11最大のトピック • ポインタ、参照に次ぐ、第三の文法、 &&
アンパサを二個 struct X{ X(std::vector<int>&& v){...} }; 説明すると何時間もかかるから このへんでやめとく(笑) 28 2011年11月30日水曜日
44.
Range-base for // コンテナ vector<int>
v={1,2,3}; for(int value : v) {cout << value << endl;} // 1 // 2 // 3 // 配列にも int ar[]={1,2,3}; for(int value : ar) {cout << value << endl;} // 1 // 2 // 3 29 2011年11月30日水曜日
45.
型推論 かなりうざかっった vector<int> v; vector<int>::iterator it
= v.begin(); これからは vector<int> v; auto it = begin(v); // v.begin(); と同じ •従来のauto は廃止された。 •動的言語の要求の多くは型推論で解決す る。# と言われている 30 2011年11月30日水曜日
46.
lambda vector<int> v; find_if(v.begin(), v.end(), [](int
x) -> bool { return x % 2 == 0; }); •ラムダの外の変数を参照可能 •コピーでもリファレンスでも •クロージャも書ける 31 2011年11月30日水曜日
47.
ラムダと関数型 // 関数型を明示 function<int(int,int)> mul
= [](int x,int y)->int{return x*y;}; mul(3,3) // 9 // 戻り値省略:これと同じ解釈 // auto add = [](int x, int y) ->decltype(x+y){return x+y;}; auto add = [](int x, int y){return x+y;}; add(3,3) // 6 // キャプチャとクロージャ int v = 100 auto add2 = [=](int x){return v+y;}; add2(3) // 103 最小のラムダ式 auto f = [](){}; 32 2011年11月30日水曜日
48.
関数型ふう遅延評価 double div( int
x, function<int()>& f){ if(x== 0) return NaN; return f()/x; // この時点ではじめてfが評価される } int x = ... auto result = div( x, [](){ int ret; /*重い処理*/ return ret; } ); 33 2011年11月30日水曜日
49.
Smart Pointer { shared_ptr<A> x(new
A); x->func(); // ポインタと同じように使える shared_ptr<A> y = x; // 代入(所有権) } // スコープから抜けると自動でdelete // make_sharedというヘルパ shared_ptr<A> x = make_shared<A>(); // make_sharedなら型推論も auto x = make_shared<A>(); scoped_ptr、week_ptrとかもあり。 auto_ptrはdeprecatedです。unique_ptr使ってね。 34 2011年11月30日水曜日
50.
まとめ • C++は世の中を支えている。(個人的 に一番面白いドメイン) • boostは基本使う。つか、使え •
C++11は主要ベンダーがサポートし始 めたけど、実用レベルは? • 組み込みもC++普通(話してない) • 並列プログラミングも大事(話してな い) 35 2011年11月30日水曜日
51.
おつかれさま!! 36 2011年11月30日水曜日
Download