# 卒研経過報告 #2 Rustによる組み込みプログラミング マイコンWio terminalを用いたRustとC言語の信頼性,安全性の比較検証、考察 team member : 子安,小森 [先週のメモ](https://hackmd.io/@Fteam/HkcvkCSfK) [卒論](https://ja.overleaf.com/project/613aadc9c3a8ceec0e18338b) ## 研究の目的 この研究ではこれまで主に組込みソフトウエア開発に使われてきたC/C++と それに替わる有効な選択肢として、注目されているRust言語との 信頼性や安全性など様々な面から比較検証を行う。 ## memo Pythonの流儀とC++の流儀、Rustの流儀のトレードオフ 考察 ## 検証  ### 1. C++ 変数aに保管されている値を別の変数bに代入した場合、変数bの箱には変数aに格納されていた値のコピーが保管される。 - 欠点 コピーされる分、メモリ容量を多く使う ### 2. Python 変数aに格納されている値を別の変数bに代入した場合、変数aが指し示していた値を変数bも指し示す。 - 利点 - 値をコピーしない分余計なメモリを使わなくて済む - 値を上書きすることがないため、オブジェクトに対する変更を見ることができる - 参照が切れた変数はガベージコレクションにより、メモリは解放される - 欠点 使ってないメモリ領域を定期的に解放してくれる。それに余計なコストがかかる ### 3. Rust 所有権システム - 利点 - 複数箇所から同時にメモリへの読み込み、書き換えができないため、未定義動作が起こらない=安全性が高い - ガーベジコレクションが採用されていないため、高速処理が可能。 ### 考察 メモリを効率的に使うことが、高速処理につながる。Pythonで用いられているアドレスを格納するシステムは、別領域に定義した大量のデータがあるときにアドレス確保用に取得したメモリ領域内で完結する。またPythonにはガベージコレクション(以下GC)が備わっている為、使用しなくなったメモリ領域は自動的に解放されるため、合理的である。しかしRustではGCにかかるコストも落としつつ、効率的で安全性の高いメモリ管理が実現できる。所有権システムはすべてプログラマ個人がメモリ管理をする必要があり、学習コストが高いデメリットがあるが、ムーブを行うと値の所有者ごと移すというシステムがこれらの問題を解決している。具体的な特徴は以下の通り。 - 所有者がスコープから外れると値は破棄される - 所有者はただ一つ C言語で発生する、ポインタがすでに解放された変数を示すというバグは絶対に起こらず安全といえる。 ## 今後の課題 * 型状態プログラミングの利点を具体例によって確認 ## 参考文献 [1] [公式ドキュメント](https://doc.rust-jp.rs/book-ja/foreword.html) [2] 中林智之著「基礎から学ぶ組み込みRust」シーアンドアール研究所出版 [](https://qiita.com/shiracamus/items/fd35c685e9679323471f)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up