SlideShare a Scribd company logo
5
Most read
6
Most read
13
Most read
なぜ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

PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PDF
すごい constexpr たのしくレイトレ!
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
リレーショナルな正しいデータベース設計
PDF
何となく勉強した気分になれるパーサ入門
PDF
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
PDF
組み込みでこそC++を使う10の理由
PDF
いまさら聞けないselectあれこれ
ARM CPUにおけるSIMDを用いた高速計算入門
すごい constexpr たのしくレイトレ!
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
リレーショナルな正しいデータベース設計
何となく勉強した気分になれるパーサ入門
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
組み込みでこそC++を使う10の理由
いまさら聞けないselectあれこれ

What's hot (20)

PPTX
世界一わかりやすいClean Architecture
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
PDF
ゲーム開発者のための C++11/C++14
PDF
ドメイン駆動設計の正しい歩き方
PDF
カスタムメモリマネージャと高速なメモリアロケータについて
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PPTX
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
PDF
Pythonによる黒魔術入門
PDF
Constexpr 中3女子テクニック
PDF
中3女子でもわかる constexpr
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
PDF
不遇の標準ライブラリ - valarray
PDF
プログラムを高速化する話
PPTX
イベント駆動プログラミングとI/O多重化
PDF
ChatGPTは思ったほど賢くない
PDF
実践イカパケット解析
PPTX
Gstreamer Basics
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
PPTX
async/await のしくみ
世界一わかりやすいClean Architecture
ソーシャルゲーム案件におけるDB分割のPHP実装
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
ゲーム開発者のための C++11/C++14
ドメイン駆動設計の正しい歩き方
カスタムメモリマネージャと高速なメモリアロケータについて
新入社員のための大規模ゲーム開発入門 サーバサイド編
LightGBMを少し改造してみた ~カテゴリ変数の動的エンコード~
Pythonによる黒魔術入門
Constexpr 中3女子テクニック
中3女子でもわかる constexpr
ドメインオブジェクトの見つけ方・作り方・育て方
不遇の標準ライブラリ - valarray
プログラムを高速化する話
イベント駆動プログラミングとI/O多重化
ChatGPTは思ったほど賢くない
実践イカパケット解析
Gstreamer Basics
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
async/await のしくみ
Ad

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