Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Eric Sartre
3,259 views
ゆとりが数週間でC++を始めるようです
Boost勉強会@つくば で発表したときの資料です
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 45
2
/ 45
3
/ 45
4
/ 45
5
/ 45
6
/ 45
7
/ 45
8
/ 45
9
/ 45
10
/ 45
11
/ 45
12
/ 45
13
/ 45
14
/ 45
15
/ 45
16
/ 45
17
/ 45
18
/ 45
19
/ 45
20
/ 45
21
/ 45
22
/ 45
23
/ 45
24
/ 45
25
/ 45
26
/ 45
27
/ 45
28
/ 45
29
/ 45
30
/ 45
31
/ 45
32
/ 45
33
/ 45
34
/ 45
35
/ 45
36
/ 45
37
/ 45
38
/ 45
39
/ 45
40
/ 45
41
/ 45
42
/ 45
43
/ 45
44
/ 45
45
/ 45
More Related Content
PDF
V6でJIT・部分適用・継続
by
7shi
PDF
マーク&スイープ勉強会
by
7shi
PPTX
Coq 20100208a
by
tmiya
PPT
CLR/H No.35-2
by
Nobuhisa Koizumi
PDF
ドキッ!記号だらけの無名関数
by
Shinya Hayakawa
PDF
研究生のためのC++ no.2
by
Tomohiro Namba
PDF
C++14 Overview
by
Akira Takahashi
PPTX
Enshu8
by
sudahiroshi
V6でJIT・部分適用・継続
by
7shi
マーク&スイープ勉強会
by
7shi
Coq 20100208a
by
tmiya
CLR/H No.35-2
by
Nobuhisa Koizumi
ドキッ!記号だらけの無名関数
by
Shinya Hayakawa
研究生のためのC++ no.2
by
Tomohiro Namba
C++14 Overview
by
Akira Takahashi
Enshu8
by
sudahiroshi
What's hot
PDF
研究生のためのC++ no.7
by
Tomohiro Namba
PDF
組み込みでこそC++を使う10の理由
by
kikairoya
PDF
20150928楽しいlambda
by
Norifumi Homma
PDF
C++ ポインタ ブートキャンプ
by
Kohsuke Yuasa
PDF
Emcjp item33,34
by
MITSUNARI Shigeo
PDF
Emcjp item21
by
MITSUNARI Shigeo
PDF
Cython ことはじめ
by
gion_XY
ODP
(define)なしで再帰関数を定義する
by
blackenedgold
PDF
Wrapping a C++ library with Cython
by
fuzzysphere
PPTX
Warshall froyd
by
MatsuiRyo
PPTX
数値計算のための Python + FPGA
by
ryos36
PDF
クロージャデザインパターン
by
Moriharu Ohzu
PDF
自動定理証明の紹介
by
Masahiro Sakai
PDF
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
by
Hiroaki KOBAYASHI
PDF
研究生のためのC++ no.4
by
Tomohiro Namba
PDF
Scala 初心者が米田の補題を Scala で考えてみた
by
Kazuyuki TAKASE
PDF
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
PPTX
Polyphony IO まとめ
by
ryos36
PDF
LLdeade Python Language Update
by
Atsushi Shibata
ODP
Real World OCamlを読んでLispと協調してみた
by
blackenedgold
研究生のためのC++ no.7
by
Tomohiro Namba
組み込みでこそC++を使う10の理由
by
kikairoya
20150928楽しいlambda
by
Norifumi Homma
C++ ポインタ ブートキャンプ
by
Kohsuke Yuasa
Emcjp item33,34
by
MITSUNARI Shigeo
Emcjp item21
by
MITSUNARI Shigeo
Cython ことはじめ
by
gion_XY
(define)なしで再帰関数を定義する
by
blackenedgold
Wrapping a C++ library with Cython
by
fuzzysphere
Warshall froyd
by
MatsuiRyo
数値計算のための Python + FPGA
by
ryos36
クロージャデザインパターン
by
Moriharu Ohzu
自動定理証明の紹介
by
Masahiro Sakai
YATT::Lite - PSGI を直接サポートしたテンプレートエンジン at #plackcon
by
Hiroaki KOBAYASHI
研究生のためのC++ no.4
by
Tomohiro Namba
Scala 初心者が米田の補題を Scala で考えてみた
by
Kazuyuki TAKASE
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
Polyphony IO まとめ
by
ryos36
LLdeade Python Language Update
by
Atsushi Shibata
Real World OCamlを読んでLispと協調してみた
by
blackenedgold
Similar to ゆとりが数週間でC++を始めるようです
PPTX
サンプルで学ぶAlloy
by
NSaitoNmiri
PDF
Introduction to Categorical Programming
by
Masahiro Sakai
PDF
C++コミュニティーの中心でC++をDISる
by
Hideyuki Tanaka
PDF
Coq Party 20101127
by
tmiya
PDF
Javaプログラミング入門
by
なおき きしだ
ODP
これから Haskell を書くにあたって
by
Tsuyoshi Matsudate
PDF
Introduction to Categorical Programming (Revised)
by
Masahiro Sakai
PDF
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
by
Masahiro Sakai
PDF
中3女子でもわかる constexpr
by
Genya Murakami
PDF
C++0x in programming competition
by
yak1ex
PDF
Constexpr 中3女子テクニック
by
Genya Murakami
PDF
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
by
Yuto Takei
PDF
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
by
hixi365
PDF
有限オートマトンとスティッカー系に関するCoqによる形式証明について
by
Yoshihiro Mizoguchi
PDF
関数プログラミング入門
by
Hideyuki Tanaka
PDF
Design by contractとホーア論理
by
Takuya Matsunaga
PDF
Coqチュートリアル
by
Yoshihiro Mizoguchi
PPTX
書くネタがCoqしかない
by
Masaki Hara
KEY
モナドがいっぱい!
by
Kenta Sato
KEY
Algebraic DP: 動的計画法を書きやすく
by
Hiromi Ishii
サンプルで学ぶAlloy
by
NSaitoNmiri
Introduction to Categorical Programming
by
Masahiro Sakai
C++コミュニティーの中心でC++をDISる
by
Hideyuki Tanaka
Coq Party 20101127
by
tmiya
Javaプログラミング入門
by
なおき きしだ
これから Haskell を書くにあたって
by
Tsuyoshi Matsudate
Introduction to Categorical Programming (Revised)
by
Masahiro Sakai
“Adoption and Focus: Practical Linear Types for Imperative Programming”他の紹介@P...
by
Masahiro Sakai
中3女子でもわかる constexpr
by
Genya Murakami
C++0x in programming competition
by
yak1ex
Constexpr 中3女子テクニック
by
Genya Murakami
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
by
Yuto Takei
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
by
hixi365
有限オートマトンとスティッカー系に関するCoqによる形式証明について
by
Yoshihiro Mizoguchi
関数プログラミング入門
by
Hideyuki Tanaka
Design by contractとホーア論理
by
Takuya Matsunaga
Coqチュートリアル
by
Yoshihiro Mizoguchi
書くネタがCoqしかない
by
Masaki Hara
モナドがいっぱい!
by
Kenta Sato
Algebraic DP: 動的計画法を書きやすく
by
Hiromi Ishii
More from Eric Sartre
PDF
やさしい日本語言い換えシステムを支える技術
by
Eric Sartre
PDF
「わからない」との付き合い方
by
Eric Sartre
PDF
正則化つき線形モデル(「入門機械学習第6章」より)
by
Eric Sartre
PDF
ネトゲで人生を変えたい
by
Eric Sartre
PDF
Emacsいじめの現場
by
Eric Sartre
PDF
初めてのCPUを作ってみた
by
Eric Sartre
PDF
どたばたかいぎ成果発表
by
Eric Sartre
PDF
upcamp発表
by
Eric Sartre
PDF
Twitterにおける即時話題推定技術「どたばたかいぎ」の開発
by
Eric Sartre
PDF
つくっておぼえる!仮想マシン〜直前で実装編〜
by
Eric Sartre
ODP
ぼくとしりとりの約3.0*10^3日間戦争
by
Eric Sartre
やさしい日本語言い換えシステムを支える技術
by
Eric Sartre
「わからない」との付き合い方
by
Eric Sartre
正則化つき線形モデル(「入門機械学習第6章」より)
by
Eric Sartre
ネトゲで人生を変えたい
by
Eric Sartre
Emacsいじめの現場
by
Eric Sartre
初めてのCPUを作ってみた
by
Eric Sartre
どたばたかいぎ成果発表
by
Eric Sartre
upcamp発表
by
Eric Sartre
Twitterにおける即時話題推定技術「どたばたかいぎ」の開発
by
Eric Sartre
つくっておぼえる!仮想マシン〜直前で実装編〜
by
Eric Sartre
ぼくとしりとりの約3.0*10^3日間戦争
by
Eric Sartre
ゆとりが数週間でC++を始めるようです
1.
ゆとりが数週間でC++を 始めるようです
えりっく さーとる
2.
すみません 数週間も やってないです
3.
ゆとりが数日間でC++を 始めるようです
えりっく さーとる
4.
ゆとりが数日間でC++を
始めるようです • えりっく さーとる(@siritori) • ここの情報科学類2年生 • C++わかんない • 論理やったり(Alloy) • 分散しようとしたり(Erlang) • 自然言語処理しようとしたり • こういうタイトルで発表するのって どうかと思いますよねorz
5.
ゆとりが数日間でC++を
始めるようです • 水曜日(23日)から勉強開始 • C++歴 : 3日 • コケたとことか挙げてみます • 勉強がてら作ったものとか紹介します
6.
なんで勉強始めたの • Boost勉強会のためだけじゃない • いろいろCで書くの好きなんだけど
– 型がガバガバで書いてて不安 – C99に走ったもののそろそろ我慢の限界 – staticでnamespace絞って – 関数ポインタで柔軟に書いて – もう...ゴールしてもいいよね... • それに「C++書けます!」って
7.
なんで勉強始めたの • Boost勉強会のためだけじゃない • いろいろCで書くの好きなんだけど
– 型がガバガバで書いてて不安 – C99に走ったもののそろそろ我慢の限界 – staticでnamespace絞って – 関数ポインタで柔軟に書いて – もう...ゴールしてもいいよね... • それに「C++書けます!」って
8.
つらかった ところ その1
9.
「使うな!」 っていう仕様が大杉
把握してるだけでも ・auto_ptr ・独立参照 ・const_cast ・protected
10.
「使うな!」 っていう仕様が大杉
把握してるだけでも ・auto_ptr ・独立参照 ・const_cast ・protected お前は ハウルの動く城か
11.
つらかった ところ その2
12.
「これでもか!!」 ってくらいの エラーメッセージ
ちょっと間違えた だけじゃん(́;ω;`) そりゃ、メッセー ジは細かいほうが いいけどさ...
13.
とりあえず • 2日で『独習C++』を読み終えた • 『C++
Coding Standards』をさらっと だけ読んでわかった気になった • なんかいい題材無いかな... • JavaもどきじゃなくてちゃんとC++でき るなにかがいいな...
14.
とりあえず
15.
とりあえず
16.
で。 • 「論理と形式化」という大学の講義のプ
リントを偶然発見。 • ふと証明木に目が行く。 • うん。これ書こう。
17.
で。 • 「論理と形式化」という大学の講義のプ
リントを偶然発見。 • ふと証明木に目が行く。 • うん。これ書こう。
18.
自然演繹法(Natural Deduction)?
19.
自然演繹法(Natural Deduction)? • すみません調子乗りました •
9つの規則に基づく証明理論の手法 • プログラミング言語の型システムとかはこ れで論じるとわかりやすいんだとか • 命題論理に対応する自然演繹の体系NKを 実装する。 • ※ガチ勢じゃないのであんまり突っ込ま ないで下さい(́・ω:;.:...
20.
証明木の例 こやつを証明したい
とする A∧B⇒B∧A
21.
証明木の例
仮定aからB Aが導け ればOK [a:A∧B] ⊃I,a A∧B⇒B∧A
22.
証明木の例
A BなんだからBは成 り立つよね [a:A∧B] ∧E2 B ⊃I,a A∧B⇒B∧A
23.
証明木の例 A BなんだからAは成 り立つよね
[a:A∧B] [a:A∧B] ∧E2 ∧E 1 B A ⊃I,a A∧B⇒B∧A
24.
証明木の例
BもAも成り立つから、 B Aっていえるよね [a:A∧B] [a:A∧B] ∧E 2 ∧E 1 B A ∧I ⊃I,a B∧A A∧B⇒B∧A
25.
証明木の例
[a:A∧B] [a:A∧B] ∧E 2 ∧E 1 B A ∧I ⊃I,a B∧A A∧B⇒B∧A
26.
で、なにをつくるの • ゴールと仮定があって、それに規則を適用
する感じのsomethingをつくる • Coqの超絶劣化版 • 自動証明器まではさすがにぼくの技量と時 間ではどうしようもありませんでしたorz
27.
設計 • 命題を表すPropクラス • 証明を表すTheoremクラス •
規則たちをまとめたnamespace, Rule • PropもTheoremも挿入子(<<)が使えるよ うに書く • Theoremは仮定と結論からなる • 仮定が無しで結論が言えたらQ.E.D
28.
Prop class Prop { public:
virtual PropType type() const = 0; friend ostream &operator<<(ostream &stream, const Prop *p) { return p->print(stream); } private: virtual ostream &print(ostream &stream) const = 0; };
29.
Prop OrProp : public
Prop { const Prop *lp_; const Prop *rp_; public: explicit OrProp(const Prop *lp, const Prop *rp):lp_(lp),rp_(rp){} private: ostream &print(ostream &stream) const { if(OR >= lp_->type()) stream << "(" << lp_ << ")"; else stream << lp_; stream << " ∨ "; if(OR > rp_->type()) stream << "(" << rp_ << ")"; else stream << rp_; return stream; } };
30.
Theorem • ちょっと複雑なのでコード割愛 • 仮定(Asp)と結論(Con)を受け取るコンス
トラクタ何種類か用意 – ハイチュウ排中律とか – 右と左の仮定のマージとか – 仮定単体とか • もうポインタ嫌い(́;ω;`)
31.
Rule • Theoremとなにかを受け取って新しい
Theoremを返すなにか • Aの証明とBの証明を受け取ってA Bとい う結論の証明を返す Theorem *and_intro(Theorem *t1, Theorem *t2) とかいうの書きました
32.
で、どんなのできたの Theorem *a =
new Theorem( new AndProp( new AtomicProp('A'), new AtomicProp('B') ),'a'); cout << a << endl; Theorem *t1 = Rule::and_elim2(a); cout << t1 << endl; Theorem *t2 = Rule::and_elim1(a); cout << t2 << endl; Theorem *t3 = Rule::and_intro(t1, t2); cout << t3 << endl; Theorem *con = Rule::implication_intro(t3, 'a'); cout << con << endl;
33.
で、どんなのできたの Theorem *a =
new Theorem( new AndProp( new AtomicProp('A'), new AtomicProp('B') ),'a'); cout << a << endl; Theorem *t1 = Rule::and_elim2(a); cout << t1 << endl; [a : A B]をつくる Theorem *t2 = Rule::and_elim1(a); cout << t2 << endl; Theorem *t3 = Rule::and_intro(t1, t2); cout << t3 << endl; Theorem *con = Rule::implication_intro(t3, 'a'); cout << con << endl;
34.
で、どんなのできたの Theorem *a =
new Theorem( [a:A B]から new AndProp( BとAを導く new AtomicProp('A'), new AtomicProp('B') ),'a'); cout << a << endl; Theorem *t1 = Rule::and_elim2(a); cout << t1 << endl; Theorem *t2 = Rule::and_elim1(a); cout << t2 << endl; Theorem *t3 = Rule::and_intro(t1, t2); cout << t3 << endl; Theorem *con = Rule::implication_intro(t3, 'a'); cout << con << endl;
35.
で、どんなのできたの Theorem *a =
new Theorem( new AndProp( new AtomicProp('A'), new AtomicProp('B') ),'a'); cout << a << endl; BとAから Theorem *t1 = Rule::and_elim2(a); cout << t1 << endl; B Aを導く Theorem *t2 = Rule::and_elim1(a); cout << t2 << endl; Theorem *t3 = Rule::and_intro(t1, t2); cout << t3 << endl; Theorem *con = Rule::implication_intro(t3, 'a'); cout << con << endl;
36.
で、どんなのできたの Theorem *a =
new Theorem( new AndProp( new AtomicProp('A'), new AtomicProp('B') ),'a'); cout << a << endl; Theorem *t1 = Rule::and_elim2(a); cout << t1 << endl; B Aと仮定aから Theorem *t2 = Rule::and_elim1(a); cout << t2 << endl; A B B Aを導く Theorem *t3 = Rule::and_intro(t1, t2); cout << t3 << endl; Theorem *con = Rule::implication_intro(t3, 'a'); cout << con << endl;
37.
実行すると Theorem *a =
new Theorem( new AndProp( new AtomicProp('A'), new AtomicProp('B') ),'a'); cout << a << endl;
38.
実行すると Theorem *t1 =
Rule::and_elim2(a); cout << t1 << endl; Theorem *t2 = Rule::and_elim1(a); cout << t2 << endl;
39.
実行すると Theorem *t3 =
Rule::and_intro(t1, t2); cout << t3 << endl;
40.
実行すると Theorem *con =
Rule::implication_intro(t3, 'a'); cout << con << endl;
41.
仮定なしで導けた→証明完了
,.へ ___ ム i 「 ヒ_i〉 ゝ 〈 ト ノ iニ(() i { ____ | ヽ i i /__, , ‐-\ i } | i /(●) ( ● )\ {、 λ ト‐┤. / (__人__) \ ,ノ  ̄ ,! i ゝ、_ | ´ ̄` | ,. '´ハ ,! . ヽ、 `` 、,__\ /" \ ヽ/ \ノ ノ ハ ̄r/:::r―--―/::7 ノ / ヽ. ヽ::〈; . '::. :' |::/ / ,. " `ー 、 \ヽ::. ;:::|/ r'" / ̄二二二二二二二二二二二二二二二二ヽ | | 動作確認 │| \_二二二二二二二二二二二二二二二二ノ
42.
おぼえたこと • 演算子オーバーロードってすごい –
泣きながら関数定義してたCがバカみたい • clang++の優しさに泣く – ありがとう、キミのお陰でめげずにいられた • すみません... constを前置してすみません... • いろんな書き方ができるせいで流儀を身に 付けるまでに結構な時間がかかりそう • 闇の軍団の人たち優しい(何度も助けられ ながらお勉強しました)
43.
で、結局のところ Boostは使ってないの?
45.
ご清聴ありがとう ございました(ノ)・ω・(ヾ)
https://gist.github.com/2782220 大々的に添削していただけるととても嬉しいです!
Download