SlideShare a Scribd company logo
1 of 13
なぜC++は組み込みに
採用されにくいのか
beepcap
自己紹介
Twitter: @beepcap
・組み込み系でご飯食べてる人
・C++はC++98までくらいしか知らない初心者
LTの目的
・C++は優れた言語
・なぜ現場で使われないのか周知したい
ターゲット
・OSが無かったり、OSそのものやハードウェ
アドライバを開発という世界の組込み。
・OSが無い開発ではメモリは全部で1KiB前後
のチップとかも使う。
例えば
問題点1
・C++は(Cに比べて)メモリの使用量が類推
しにくい
実例
→
・さて、test0は何バイトでしょうか?
ビルド環境:
g++ 4.8.2(64bit)
(オプションは特になし)
ヒント:
・classも構造体と同じように4byteでパ
ディングされるよ
・関数はclassのサイズに関係しないよ
・でもでもvirtualがつくとvptrと呼ばれる
隠しポインタ変数が追加されるよ
・そうすると実はパディングが・・・
実例
→
・実際のメモリ使用量がコードから推測し難い
。
問題点2
・C++は(C略)処理時間の類推が難しい
実例
→
・隠蔽されている処理の時間が推測しにくい
左の”c = a + b;”の処理時間をこのコードか
ら推察することは出来ない。
“+”も”=”もオーバーライドされているかも
しれず、どれほどの処理時間がかかるか
は、元のコードを追わなければならない
。
さらに、継承されたクラスがあればそれ
らもすべて調べる必要がある。
問題点3
・C++は(C略)ハードウェアやアセンブリ言
語との相性が悪い。
実例
→
・アセンブリでシンボル名を使ってリンクしに
くい
まとめ
・組込み開発の一部ではC++固有の機能がとて
も使いづらい
・アプリケーションは大丈夫
・解消する手段は?
→今後に期待

More Related Content

What's hot

C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内m ishizaki
 
Siv3Dのすゝめ
Siv3DのすゝめSiv3Dのすゝめ
Siv3DのすゝめAzaika At
 
レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡Katsuhiko Tamura
 
Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03m ishizaki
 
まんまとリレーションされた話
まんまとリレーションされた話まんまとリレーションされた話
まんまとリレーションされた話m ishizaki
 
C言語について
C言語についてC言語について
C言語についてKatsuro-u
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会京大 マイコンクラブ
 
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発m ishizaki
 
Customizing cargo for cross compiling
Customizing cargo for cross compilingCustomizing cargo for cross compiling
Customizing cargo for cross compilingemakryo
 
rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現Yasuyuki Sugai
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyShinichi Okada
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話emakryo
 
デプロイに苦労した話
デプロイに苦労した話デプロイに苦労した話
デプロイに苦労した話tetuwo181
 
シミュレーター
シミュレーターシミュレーター
シミュレーターKensei Demura
 

What's hot (20)

C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内
 
Siv3Dのすゝめ
Siv3DのすゝめSiv3Dのすゝめ
Siv3Dのすゝめ
 
レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡レガシーコードとの戦いの軌跡
レガシーコードとの戦いの軌跡
 
Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03Uno Platform 入門 2020/04/03
Uno Platform 入門 2020/04/03
 
まんまとリレーションされた話
まんまとリレーションされた話まんまとリレーションされた話
まんまとリレーションされた話
 
Unity/CSharp 2
Unity/CSharp 2Unity/CSharp 2
Unity/CSharp 2
 
Pietで競プロしよう
Pietで競プロしようPietで競プロしよう
Pietで競プロしよう
 
C言語について
C言語についてC言語について
C言語について
 
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
 
Ultra piet
Ultra pietUltra piet
Ultra piet
 
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
 
Intelli code
Intelli codeIntelli code
Intelli code
 
dwangocpp1-lt
dwangocpp1-ltdwangocpp1-lt
dwangocpp1-lt
 
Customizing cargo for cross compiling
Customizing cargo for cross compilingCustomizing cargo for cross compiling
Customizing cargo for cross compiling
 
rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
 
Cargo makeを使ってみた話
Cargo makeを使ってみた話Cargo makeを使ってみた話
Cargo makeを使ってみた話
 
デプロイに苦労した話
デプロイに苦労した話デプロイに苦労した話
デプロイに苦労した話
 
シミュレーター
シミュレーターシミュレーター
シミュレーター
 
Multi paradigm design
Multi paradigm designMulti paradigm design
Multi paradigm design
 

Viewers also liked

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 

Viewers also liked (6)

Cache obliviousの話
Cache obliviousの話Cache obliviousの話
Cache obliviousの話
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 

C++がなぜ組込みに採用されにくいか