なぜ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++固有の機能がとて
も使いづらい
・アプリケーションは大丈夫
・解消する手段は?
→今後に期待

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