Submit Search
Upload
20210830 rust入学式
•
1 like
•
1,133 views
耕二 阿部
Follow
2021.8.30 社内向け勉強会資料。 RustとC/C++のソースコードをシミュレータ(wandbox, Rust Playground)でをコンパイル・実行結果を比較する。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 47
Download now
Download to read offline
Recommended
Cargo makeを使ってみた話
Cargo makeを使ってみた話
emakryo
C#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
Atomu Hidaka
ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14
Takashi Ogura
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
Toshihiko Yamakami
Customizing cargo for cross compiling
Customizing cargo for cross compiling
emakryo
rust primer
rust primer
You&I
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
Recommended
Cargo makeを使ってみた話
Cargo makeを使ってみた話
emakryo
C#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
Atomu Hidaka
ROS2.0時代に備えたc++11/14
ROS2.0時代に備えたc++11/14
Takashi Ogura
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
Toshihiko Yamakami
Customizing cargo for cross compiling
Customizing cargo for cross compiling
emakryo
rust primer
rust primer
You&I
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
Prolabo
Prolabo
Tatsuya Yagi
Rust-DPDK
Rust-DPDK
Masaru Oki
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
そろそろRStudioの話
そろそろRStudioの話
Kazuya Wada
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
Rust v1.0 release celebration party
Rust v1.0 release celebration party
Akira Hayakawa
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
parrotstudio
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
Koichiro Iwao
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
yoshrc
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
Hideki Takase
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則.pdf
耕二 阿部
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
耕二 阿部
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
耕二 阿部
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話
耕二 阿部
Rust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみた
耕二 阿部
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
耕二 阿部
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
耕二 阿部
More Related Content
Similar to 20210830 rust入学式
Prolabo
Prolabo
Tatsuya Yagi
Rust-DPDK
Rust-DPDK
Masaru Oki
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
そろそろRStudioの話
そろそろRStudioの話
Kazuya Wada
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
Rust v1.0 release celebration party
Rust v1.0 release celebration party
Akira Hayakawa
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
parrotstudio
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
Koichiro Iwao
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
yoshrc
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
Hideki Takase
Similar to 20210830 rust入学式
(10)
Prolabo
Prolabo
Rust-DPDK
Rust-DPDK
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
そろそろRStudioの話
そろそろRStudioの話
Why did I become a ruby committer
Why did I become a ruby committer
Rust v1.0 release celebration party
Rust v1.0 release celebration party
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
Rustで楽しむ競技プログラミング
Rustで楽しむ競技プログラミング
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
More from 耕二 阿部
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則.pdf
耕二 阿部
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
耕二 阿部
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
耕二 阿部
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
耕二 阿部
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話
耕二 阿部
Rust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみた
耕二 阿部
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
耕二 阿部
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
耕二 阿部
モデルベース開発勉強会
モデルベース開発勉強会
耕二 阿部
EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料
耕二 阿部
AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化
耕二 阿部
More from 耕二 阿部
(15)
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #2 インターフェイス分離の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話
Rust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみた
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
モデルベース開発勉強会
モデルベース開発勉強会
EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料
AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化
Recently uploaded
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
Masatsugu Matsushita
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
Kurata Takeshi
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Toru Miyahara
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
mizukami4
Recently uploaded
(6)
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
今年こそ始めたい!SQL超入門 セミナー資料 2024年5月22日 富士通クラウドミートアップ
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
20210830 rust入学式
1.
2021.8.30 阿部耕二 Rust入学式 Rustの特徴、C/C++との違いをなんとなく理解しよう
2.
自己紹介 目的 なぜRustか? C/C++の課題 ワーク(Cのあいまいな動作/Rustのモダンさを体験) Rustの組込み開発への適用 目次 2
3.
■名前:阿部 耕二(あべ こうじ) ■組込みソフトウェア開発19年目。 C言語、OSなし(ベアメタル)の開発業務経験がほとんど。 ■GitHub: https://github.com/grace2riku 今回のワークのソースコード:https://github.com/grace2riku/c_cpp_vs_rust/tree/master 自己紹介 3
4.
Rustの学習成果をたまにライトニングトークなどで発信しています。 例)Rust初心者がArduinoをLチカしてみた https://speakerdeck.com/grace2riku/rustchu-xin-zhe-gaarduinowoltikasitemita-bb5de094-8ee0-48a6- af6e-a8ce7d430309 例)Arduinoでモーター制御ロジックを実装した話 https://speakerdeck.com/grace2riku/arduinodemotazhi-yu-rozitukuwoshi-zhuang-sitahua 自己紹介 4
5.
・Rustってこんな言語なんだー、となんとなくわかること。 初心者向けの内容です。 ・C/C++とRustの違いがなんとなくわかること。 C/C++経験者がRustの安全性を理解するはじめの1歩となれば嬉しいです。 目的 5
6.
■資料の使い方 後半のワークではC/C++とRustのコードを書いて実行します。 コード、実行結果を通してC/C++・Rustの知識がアップデートできれば嬉しい。 C/C++・Rustのコードを実際に手を動かして実行、結果を確認することをお勧めします。 コードの実行はブラウザで動くシミュレーション環境を使うので開発環境の準備は不要です。 目的 6
7.
・安全・安心。 ⇛多機能、高機能、複雑化する組込み機器の要求仕様にC/C++で立ち 向かえるか。時代に合わせたプログラミング言語の採用を検討するの はどうか。 ・モダンだから。 なぜRustか? 7
8.
・Cのあいまいな言語仕様(未定義動作) ・メモリ管理 ・C++は難しい ・その他 C/C++の課題 8
9.
・Cの【未定義動作】とは? C言語の標準規格であるJIS X 3010:2003(ISO/IEC
9899:1999)より引用。 【3.4.3 未定義の動作(undefined behavior) 可搬性がない若しくは正しくないプログラム構成要素 を使用したときの動作,又は正しくないデータを使用したときの動作であり,この規格が何ら要求 を課さないもの。 参考 未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。翻訳時又はプ ログラム実行時に,文書化された,環境に特有な方法で処理してもよい(診断メッセージの発行を 伴っても伴わなくてもよい。)。さらに(診断メッセージを出力し)翻訳又は実行を中断してもよ い。】 C/C++の課題 9
10.
・Cの未定義動作などあいまいな動作をするコードをRustで実行 してみましょう。 ワーク(Cのあいまいな動作を体験) 10
11.
テーマはこちら ※ファイル拡張子はCは*.c, Rustは*.rs 1. 整数型オーバーフロー:
val_overflow.* 2. 未初期化変数の参照: uninitialized_val.* 3. ゼロ割り: div_by_zero.* 4. 配列要素外アクセス: array_index_err.* 5. ビットシフトオーバーフロー: shift_overflow.* 6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 11
12.
ワークのソースコードは次に置きました。 https://github.com/grace2riku/c_cpp_vs_rust/tree/master Code -> Download
ZIPを選択。 ワーク(Cのあいまいな動作を体験) 12
13.
■ワークの環境について ●C/C++は次のアドレスのシミュレータ(wandbox)を使用します。 https://wandbox.org/ ●Rustは次のアドレスのシミュレータ(Rust Playground)を使用し ます。 https://play.rust-lang.org/ ワーク(Cのあいまいな動作を体験) 13
14.
■ワークの環境について Cの設定 ●Languages ⇛C ●gcc 11.1.0を選択 ワーク(Cのあいまいな動作を体験) 14
15.
■ワークの環境について Cの設定 ●Cのバージョンは【C99】を選択 ※C99選択の理由 仕事で使っているマイコンのコンパイラが C99準拠だったため。 ワーク(Cのあいまいな動作を体験) 15
16.
■ワークの環境について Cの設定 ①コード入力エリア ②コンパイル・コード実行ボタン ③実行結果表示 ウォーニング・コンパイルエラー があれば表示。 ワーク(Cのあいまいな動作を体験) 16 ① ② ③
17.
■ワークの環境について Rustの設定 ●デフォルトから設定変更不要。 ①コード入力エリア ②実行結果表示 ウォーニング・コンパイルエラー があれば表示。 ワーク(Cのあいまいな動作を体験) 17 ① ②
18.
■ワークの環境について Rustの設定 デフォルトの設定 ・Stable version: 1.54 ・Edition
2018 ワーク(Cのあいまいな動作を体験) 18
19.
テーマはこちら ※ファイル拡張子はCは*.c, C++は*.cpp, Rustは*.rs 1.
enum, switch: enum_switch.* CとRustのコードを比較。 enum型の比較。Cのswitch・Rustのmatch式の比較。 2. 多態: polymorphism.* C++とRustのコードを比較。 ワーク(Rustのモダンさを体験) 19
20.
1. enum, switch:
enum_switch.* enum型の比較。Cのswitch・Rustのmatch式の比較。 ●試してみてほしいこと ・C:switch・Rust:match文の条件をひとつ削除して実行。 ・print_shape(Circle);の引数Circleを0(または任意の整数値)に変 更して実行。 ワーク(Rustのモダンさを体験) 20
21.
2. 多態: polymorphism.* ・C++とRustで多態を実装。ソースコードを比較してみてくださ い。 ・クラス図と簡単な説明を次ページに記載。 ワーク(Rustのモダンさを体験) 21
22.
2. 多態: polymorphism.* ・多態の説明でありそうなサンプルプログラムを C,
Rustでそれぞれ実装。 ・図形と円・三角形・正方形のクラス。 Shape:抽象クラス Circle, Triangle, Square: Shapeを具象化したクラス ・print_type(), calc_area(): 具象化クラスで実行結果が変わる。 ワーク(Rustのモダンさを体験) 22 多態のサンプルコードのクラス図
23.
是非、実際に手を動かしてソースコードをシミュレーションして みてください。 そしてC/C++とRustのコードについて考察してみると良いとおも います。 ※本書末尾にソースコードの実行結果を記載します。シミュレー ション実行後に確認いただければと思います。 ワーク(Cのあいまいな動作を体験) 23
24.
あいまいなコードがあったとき、コンパイラに望むこと。 1. コンパイラエラーにして欲しい。 2. ウォーニングは出して欲しい。 3.
あいまいなコードを実行したら実行時エラーにして欲しい。 4. あいまいなコードを実行し、あいまいな動作を行う。 ⇐ここに至る前にバグに気づき直したい!!! ・ソースコードの実行前にあいまいなコードに気づき、修正したい。もし実行しても実行時エラーにし て欲しい。あいまいなコードが組み込まれも気づかず、リリースされてしまうことほど怖いことはな い。 開発者がコンパイラに望むこと 24
25.
・多くの本、ブログでRustをARM Cortex-Mコアで動かすチュー トリアルが掲載されている。実機で確認したい場合、ARM Cortex-Mのターゲットボードが個人的におすすめ。 ・実機の前に手軽に試してみたい場合、QEMUで試してみるのも 良いかもしない。 ・Arduinoで動かした事例もある。 Rustの組込み開発への適用 25
26.
・所有権システム:コンパイルできたらメモリ安全性を保証。 ・Cargo:ビルドツール・パッケージマネージャ テスト・ドキュメント・その他多くの機能。 ・C FFI:Rust Cの相互呼び出し可能。 まだまだあるよ、Rustの魅力♥♥♥ 26
27.
ご清聴ありがとうございました。 終わり 27
28.
以降にワークのC/C++, Rustのソースコード のシミュレーション実行結果を記載します。 シミュレーション実行確認後に見ることをお 勧めします。 ワークの実行結果 28
29.
テーマはこちら ※ファイル拡張子はCは*.c,Rustは*.rs ★1. 整数型オーバーフロー: val_overflow.* 2.
未初期化変数の参照: uninitialized_val.* 3. ゼロ割り: div_by_zero.* 4. 配列要素外アクセス: array_index_err.* 5. ビットシフトオーバーフロー: shift_overflow.* 6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 29
30.
★1. 整数型オーバーフロー: val_overflow.* Cの場合 ⇛Cはwarning,
実行可能。 ワーク(Cのあいまいな動作を体験) 30
31.
★1. 整数型オーバーフロー: val_overflow.* Rustの場合 ⇛コンパイルエラー,
実行不可能。 ワーク(Cのあいまいな動作を体験) 31
32.
テーマはこちら ※ファイル拡張子はCは*.c,Rustは*.rs 1. 整数型オーバーフロー: val_overflow.* ★2.
未初期化変数の参照: uninitialized_val.* 3. ゼロ割り: div_by_zero.* 4. 配列要素外アクセス: array_index_err.* 5. ビットシフトオーバーフロー: shift_overflow.* 6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 32
33.
★2. 未初期化変数の参照: uninitialized_val.* Cの場合 ⇛Cはwarning,
実行可能。 ワーク(Cのあいまいな動作を体験) 33
34.
★2. 未初期化変数の参照: uninitialized_val.* Rustの場合 ⇛コンパイルエラー,
実行不可能。 ワーク(Cのあいまいな動作を体験) 34
35.
テーマはこちら ※ファイル拡張子はCは*.c,Rustは*.rs 1. 整数型オーバーフロー: val_overflow.* 2.
未初期化変数の参照: uninitialized_val.* ★3. ゼロ割り: div_by_zero.* 4. 配列要素外アクセス: array_index_err.* 5. ビットシフトオーバーフロー: shift_overflow.* 6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 35
36.
★3. ゼロ割り: div_by_zero.* Cの場合 ⇛Cはwarning,
実行可能⇛例外発生。 ワーク(Cのあいまいな動作を体験) 36
37.
★3. ゼロ割り: div_by_zero.* Rustの場合 ⇛コンパイルエラー,
実行不可能。 ワーク(Cのあいまいな動作を体験) 37
38.
テーマはこちら ※ファイル拡張子はCは*.c,Rustは*.rs 1. 整数型オーバーフロー: val_overflow.* 2.
未初期化変数の参照: uninitialized_val.* 3. ゼロ割り: div_by_zero.* ★4. 配列要素外アクセス: array_index_err.* 5. ビットシフトオーバーフロー: shift_overflow.* 6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 38
39.
★4. 配列要素外アクセス: array_index_err.* Cの場合 ⇛Cは実行可能。配列要素外へアクセスする。 ワーク(Cのあいまいな動作を体験) 39
40.
★4. 配列要素外アクセス: array_index_err.* Rustの場合 ⇛実行可能。実行時エラー。panic!を使えば実行時エラー内容がわかる。 ワーク(Cのあいまいな動作を体験) 40
41.
テーマはこちら ※ファイル拡張子はCは*.c,Rustは*.rs 1. 整数型オーバーフロー: val_overflow.* 2.
未初期化変数の参照: uninitialized_val.* 3. ゼロ割り: div_by_zero.* 4. 配列要素外アクセス: array_index_err.* ★5. ビットシフトオーバーフロー: shift_overflow.* 6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 41
42.
★5. ビットシフトオーバーフロー: shift_overflow.* Cの場合 ⇛Cはwarning。実行可能。 ワーク(Cのあいまいな動作を体験) 42
43.
★5. ビットシフトオーバーフロー: shift_overflow.* Rustの場合 ⇛コンパイルエラー,
実行不可能。 ワーク(Cのあいまいな動作を体験) 43
44.
テーマはこちら ※ファイル拡張子はCは*.c,Rustは*.rs 1. 整数型オーバーフロー: val_overflow.* 2.
未初期化変数の参照: uninitialized_val.* 3. ゼロ割り: div_by_zero.* 4. 配列要素外アクセス: array_index_err.* 5. ビットシフトオーバーフロー: shift_overflow.* ★6. ビットシフト負の数: shift_negative.* ワーク(Cのあいまいな動作を体験) 44
45.
★6. ビットシフト負の数: shift_negative.* Cの場合 ⇛Cはwarning。実行可能。 ワーク(Cのあいまいな動作を体験) 45
46.
★6. ビットシフト負の数: shift_negative.* Rustの場合 ⇛コンパイルエラー,
実行不可能。 ワーク(Cのあいまいな動作を体験) 46
47.
テーマはこちら ※ファイル拡張子はCは*.c, C++は*.cpp, Rustは*.rs 1.
enum, switch: enum_switch.* CとRustのコードを比較。 enum型の比較。Cのswitch・Rustのmatch式の比較。 2. 多態: polymorphism.* C++とRustのコードを比較。 ワーク(Rustのモダンさを体験) 47
Download now