Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20210830_Rust入学式.pdf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
k-abe
August 30, 2021
Programming
0
120
20210830_Rust入学式.pdf
2021.8.30 社内向け勉強会資料。
RustとC/C++のソースコードを実行し、比較する。
k-abe
August 30, 2021
Tweet
Share
More Decks by k-abe
See All by k-abe
μT-Kernel×AIの学習環境
kabe
0
25
【連続講座3】デザインパターンを学び、ソフトウェア設計に生かそう(Facade・Observer・State)
kabe
0
130
【連続講座2】デザインパターンを学び、ソフトウェア設計に生かそう(Builder・Strategy・Composite)
kabe
0
84
【連続講座1】デザインパターンを学び、ソフトウェア設計に生かそう(Adapter・Factory Method・Singleton)
kabe
0
76
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー)
kabe
0
120
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
kabe
0
530
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則
kabe
0
890
ソフトウェア設計原則【SOLID】を学ぶ #3 依存性逆転の原則
kabe
0
520
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた
kabe
0
120
Other Decks in Programming
See All in Programming
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
MUSUBIXとは
nahisaho
0
140
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
今から始めるClaude Code超入門
448jp
8
8.9k
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
720
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
160
SourceGeneratorのススメ
htkym
0
200
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
330
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
56
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
78
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Transcript
2021.8.30 Ѩ෦ߞೋ Rustೖֶࣜ RustͷಛɺC/C++ͱͷҧ͍ΛͳΜͱͳ͘ཧղ͠Α͏
ࣗݾհ త ͳͥRust͔? C/C++ͷ՝ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞/RustͷϞμϯ͞Λମݧ) RustͷࠐΈ։ൃͷద༻ ࣍ 2
▪໊લɿѨ෦ɹߞೋ(͋ɹ͜͏͡) ▪ࠐΈιϑτΣΞ։ൃ19ɻ ɹCݴޠɺOSͳ͠(ϕΞϝλϧ)ͷ։ൃۀܦݧ͕΄ͱΜͲɻ ▪GitHub: https://github.com/grace2riku ɹࠓճͷϫʔΫͷιʔείʔυɿhttps://github.com/grace2riku/c_cpp_vs_rust/tree/master ࣗݾհ 3
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
ɾRustͬͯ͜ΜͳݴޠͳΜͩʔɺͱͳΜͱͳ͘Θ͔Δ͜ͱɻ ɹॳ৺ऀ͚ͷ༰Ͱ͢ɻ ɾC/C++ͱ3VTUͷҧ͍͕ͳΜͱͳ͘Θ͔Δ͜ͱɻ ɹ$$ ܦݧऀ͕3VTUͷ҆શੑΛཧղ͢Δ͡ΊͷาͱͳΕخ͍͠Ͱ͢ɻ త 5
ɹ˙ࢿྉͷ͍ํ ɹޙͷϫʔΫͰ$$ ͱ3VTUͷίʔυΛॻ͍࣮ͯߦ͠·͢ɻ ɹίʔυɺ࣮ߦ݁ՌΛ௨ͯ͠$$ ɾ3VTUͷ͕ࣝΞοϓσʔτͰ͖Εخ͍͠ɻ ɹ$$ ɾ3VTUͷίʔυΛ࣮ࡍʹखΛಈ͔࣮ͯ͠ߦɺ݁ՌΛ֬ೝ͢Δ͜ͱΛ͓קΊ͠·͢ɻ ɹίʔυͷ࣮ߦϒϥβͰಈ͘γϛϡϨʔγϣϯڥΛ͏ͷͰ։ൃڥͷ४උෆཁͰ͢ɻ త 6
ɾ҆શɾ҆৺ɻ ⇛ଟػೳɺߴػೳɺෳࡶԽ͢ΔࠐΈػثͷཁٻ༷ʹC/C++Ͱཱͪ ͔͑Δ͔ɻ࣌ʹ߹Θͤͨϓϩάϥϛϯάݴޠͷ࠾༻Λݕ౼͢Δͷ Ͳ͏͔ɻ ɾϞμϯ͔ͩΒɻ ͳͥRust͔? 7
ɾCͷ͍͋·͍ͳݴޠ༷(ະఆٛಈ࡞) ɾϝϞϦཧ ɾC++͍͠ ɾͦͷଞ C/C++ͷ՝ 8
ɾCͷʲະఆٛಈ࡞ʳͱ? Cݴޠͷඪ४ن֨Ͱ͋ΔJIS X 3010ɿ2003(ISO/IEC 9899ɿ1999)ΑΓҾ༻ɻ ʲ3.4.3 ະఆٛͷಈ࡞ʢundefined behaviorʣ Մൖੑ͕ͳ͍ए͘͠ਖ਼͘͠ͳ͍ϓϩάϥϜߏཁૉ Λ༻ͨ͠ͱ͖ͷಈ࡞ɼຢਖ਼͘͠ͳ͍σʔλΛ༻ͨ͠ͱ͖ͷಈ࡞Ͱ͋Γɼ͜ͷن͕֨ԿΒཁٻ
Λ՝͞ͳ͍ͷɻ ࢀߟ ະఆٛͷಈ࡞ʹରͯ͠ɼͦͷঢ়گΛແࢹͯ͠༧ଌෆՄೳͳ݁ՌΛฦͯ͠Α͍ɻ༁࣌ຢϓ ϩάϥϜ࣮ߦ࣌ʹɼจॻԽ͞Εͨɼڥʹಛ༗ͳํ๏Ͱॲཧͯ͠Α͍ʢஅϝοηʔδͷൃߦΛ ͬͯΘͳͯ͘Α͍ɻʣɻ͞ΒʹʢஅϝοηʔδΛग़ྗ͠ʣ༁ຢ࣮ߦΛதஅͯ͠Α ͍ɻʳ C/C++ͷ՝ 9
ɾCͷະఆٛಈ࡞ͳͲ͍͋·͍ͳಈ࡞Λ͢ΔίʔυΛRustͰ࣮ߦ ͯ͠Έ·͠ΐ͏ɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 10
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
ϫʔΫͷιʔείʔυ࣍ʹஔ͖·ͨ͠ɻ https://github.com/grace2riku/c_cpp_vs_rust/tree/master Code -> Download ZIPΛબɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 12
▪ϫʔΫͷڥʹ͍ͭͯ •C/C++࣍ͷΞυϨεͷγϛϡϨʔλ(wandbox)Λ༻͠·͢ɻ ɹhttps://wandbox.org/ •Rust࣍ͷΞυϨεͷγϛϡϨʔλ(Rust Playground)Λ༻͠ ·͢ɻ ɹhttps://play.rust-lang.org/ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 13
▪ϫʔΫͷڥʹ͍ͭͯɹCͷઃఆ •Languages ɹ⇛C •gcc 11.1.0Λબ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 14
▪ϫʔΫͷڥʹ͍ͭͯɹCͷઃఆ •CͷόʔδϣϯʲC99ʳΛબ ※C99બͷཧ༝ ࣄͰ͍ͬͯΔϚΠίϯͷίϯύΠϥ͕ C99४ڌͩͬͨͨΊɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 15
▪ϫʔΫͷڥʹ͍ͭͯɹCͷઃఆ ᶃίʔυೖྗΤϦΞ ᶄίϯύΠϧɾίʔυ࣮ߦϘλϯ ᶅ࣮ߦ݁Ռදࣔ ΥʔχϯάɾίϯύΠϧΤϥʔ ͕͋Εදࣔɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 16 ᶃ ᶄ
ᶅ
▪ϫʔΫͷڥʹ͍ͭͯɹRustͷઃఆ •σϑΥϧτ͔Βઃఆมߋෆཁɻ ᶃίʔυೖྗΤϦΞ ᶄ࣮ߦ݁Ռදࣔ ΥʔχϯάɾίϯύΠϧΤϥʔ ͕͋Εදࣔɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 17 ᶃ ᶄ
▪ϫʔΫͷڥʹ͍ͭͯɹRustͷઃఆ σϑΥϧτͷઃఆ ɾStable version: 1.54 ɾEdition 2018 ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 18
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠC*.c, C++*.cpp, Rust*.rs 1. enum, switch: enum_switch.* ɹCͱRustͷίʔυΛൺֱɻ ɹenumܕͷൺֱɻCͷswitchɾRustͷmatchࣜͷൺֱɻ 2.
ଟଶ: polymorphism.* ɹC++ͱRustͷίʔυΛൺֱɻ ϫʔΫ(RustͷϞμϯ͞Λମݧ) 19
1. enum, switch: enum_switch.* ɹenumܕͷൺֱɻCͷswitchɾRustͷmatchࣜͷൺֱɻ •ࢼͯ͠Έͯ΄͍͜͠ͱ ɾC:switchɾRust:matchจͷ݅Λͻͱͭআ࣮ͯ͠ߦɻ ɾprint_shape(Circle);ͷҾCircleΛ0(·ͨҙͷ)ʹม ߋ࣮ͯ͠ߦɻ ϫʔΫ(RustͷϞμϯ͞Λମݧ)
20
2. ଟଶ: polymorphism.* ɾC++ͱRustͰଟଶΛ࣮ɻιʔείʔυΛൺֱͯ͠Έͯͩ͘͞ ͍ɻɹ ɾΫϥεਤͱ؆୯ͳઆ໌Λ࣍ϖʔδʹهࡌɻ ϫʔΫ(RustͷϞμϯ͞Λମݧ) 21
2. ଟଶ: polymorphism.*ɹ ɾଟଶͷઆ໌Ͱ͋Γͦ͏ͳαϯϓϧϓϩάϥϜΛ ɹC, RustͰͦΕͧΕ࣮ɻ ɾਤܗͱԁɾࡾ֯ܗɾਖ਼ํܗͷΫϥεɻ ɹShapeɿநΫϥε ɹCircle, Triangle,
Square: ShapeΛ۩Խͨ͠Ϋϥε ɾprint_type(), calc_area(): ۩ԽΫϥεͰ࣮ߦ݁Ռ͕มΘΔɻ ϫʔΫ(RustͷϞμϯ͞Λମݧ) 22 ଟଶͷαϯϓϧίʔυͷΫϥεਤ
ੋඇɺ࣮ࡍʹखΛಈ͔ͯ͠ιʔείʔυΛγϛϡϨʔγϣϯͯ͠ Έ͍ͯͩ͘͞ɻ ͦͯ͠C/C++ͱRustͷίʔυʹ͍ͭͯߟͯ͠ΈΔͱྑ͍ͱ͓ ͍·͢ɻ ※ຊॻඌʹιʔείʔυͷ࣮ߦ݁ՌΛهࡌ͠·͢ɻγϛϡϨʔ γϣϯ࣮ߦޙʹ֬ೝ͍͚ͨͩΕͱࢥ͍·͢ɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 23
͍͋·͍ͳίʔυ͕͋ͬͨͱ͖ɺίϯύΠϥʹΉ͜ͱɻ ɹ1. ίϯύΠϥΤϥʔʹͯ͠ཉ͍͠ɻ ɹ2. Υʔχϯάग़ͯ͠ཉ͍͠ɻ ɹ3. ͍͋·͍ͳίʔυΛ࣮ߦͨ͠Β࣮ߦ࣌Τϥʔʹͯ͠ཉ͍͠ɻ ɹ4. ͍͋·͍ͳίʔυΛ࣮ߦ͠ɺ͍͋·͍ͳಈ࡞Λߦ͏ɻ ⾨͜͜ʹࢸΔલʹόάʹؾ͖͍ͮͨ͠!!!
ɾιʔείʔυͷ࣮ߦલʹ͍͋·͍ͳίʔυʹؾ͖ͮɺमਖ਼͍ͨ͠ɻ࣮͠ߦ࣮ͯ͠ߦ࣌Τϥʔʹ͠ ͯཉ͍͠ɻ͍͋·͍ͳίʔυ͕Έࠐ·Εؾ͔ͮͣɺϦϦʔε͞Εͯ͠·͏͜ͱ΄Ͳා͍͜ͱͳ ͍ɻ ։ൃऀ͕ίϯύΠϥʹΉ͜ͱ 24
ɾଟ͘ͷຊɺϒϩάͰRustΛARM Cortex-MίΞͰಈ͔͢νϡʔ τϦΞϧ͕ܝࡌ͞Ε͍ͯΔɻ࣮ػͰ֬ೝ͍ͨ͠߹ɺARM Cortex-MͷλʔήοτϘʔυ͕ݸਓతʹ͓͢͢Ίɻ ɾ࣮ػͷલʹखܰʹࢼͯ͠Έ͍ͨ߹ɺQEMUͰࢼͯ͠ΈΔͷ ྑ͍͔͠ͳ͍ɻ ɾArduinoͰಈ͔ͨ͠ࣄྫ͋Δɻ RustͷࠐΈ։ൃͷద༻ 25
ɾॴ༗ݖγεςϜɿίϯύΠϧͰ͖ͨΒϝϞϦ҆શੑΛอূɻ ɾCargoɿϏϧυπʔϧɾύοέʔδϚωʔδϟ ɹςετɾυΩϡϝϯτɾͦͷଞଟ͘ͷػೳɻ ɾC FFIɿRust㱻Cͷ૬ޓݺͼग़͠Մೳɻ ·ͩ·ͩ͋ΔΑɺRustͷັྗ——— 26
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ऴΘΓ 27
ɹҎ߱ʹϫʔΫͷC/C++, Rustͷιʔείʔυ ͷγϛϡϨʔγϣϯ࣮ߦ݁ՌΛهࡌ͠·͢ɻ γϛϡϨʔγϣϯ࣮ߦ֬ೝޙʹݟΔ͜ͱΛ͓ קΊ͠·͢ɻ ϫʔΫͷ࣮ߦ݁Ռ 28
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
˒1. ܕΦʔόʔϑϩʔ: val_overflow.* Cͷ߹ ⇛Cwarning, ࣮ߦՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 30
˒1. ܕΦʔόʔϑϩʔ: val_overflow.* Rustͷ߹ ⇛ίϯύΠϧΤϥʔ, ࣮ߦෆՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 31
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
˒2. ະॳظԽมͷࢀর: uninitialized_val.* Cͷ߹ ⇛Cwarning, ࣮ߦՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 33
˒2. ະॳظԽมͷࢀর: uninitialized_val.* Rustͷ߹ ⇛ίϯύΠϧΤϥʔ, ࣮ߦෆՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 34
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
˒3. θϩׂΓ: div_by_zero.* Cͷ߹ ⇛Cwarning, ࣮ߦՄೳ⇛ྫ֎ൃੜɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 36
˒3. θϩׂΓ: div_by_zero.* Rustͷ߹ ⇛ίϯύΠϧΤϥʔ, ࣮ߦෆՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 37
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
˒4. ྻཁૉ֎ΞΫηε: array_index_err.* Cͷ߹ ⇛C࣮ߦՄೳɻྻཁૉ֎ΞΫηε͢Δɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 39
˒4. ྻཁૉ֎ΞΫηε: array_index_err.* Rustͷ߹ ⇛࣮ߦՄೳɻ࣮ߦ࣌Τϥʔɻpanic!Λ࣮͑ߦ࣌Τϥʔ༰͕Θ͔Δɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 40
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
˒5. ϏοτγϑτΦʔόʔϑϩʔ: shift_overflow.* Cͷ߹ ⇛Cwarningɻ࣮ߦՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 42
˒5. ϏοτγϑτΦʔόʔϑϩʔ: shift_overflow.* Rustͷ߹ ⇛ίϯύΠϧΤϥʔ, ࣮ߦෆՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 43
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠ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
˒6. Ϗοτγϑτෛͷ: shift_negative.* Cͷ߹ ⇛Cwarningɻ࣮ߦՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 45
˒6. Ϗοτγϑτෛͷ: shift_negative.* Rustͷ߹ ⇛ίϯύΠϧΤϥʔ, ࣮ߦෆՄೳɻ ϫʔΫ(Cͷ͍͋·͍ͳಈ࡞Λମݧ) 46
ςʔϚͪ͜Βɹ˞ϑΝΠϧ֦ுࢠC*.c, C++*.cpp, Rust*.rs 1. enum, switch: enum_switch.* ɹCͱRustͷίʔυΛൺֱɻ ɹenumܕͷൺֱɻCͷswitchɾRustͷmatchࣜͷൺֱɻ 2.
ଟଶ: polymorphism.* ɹC++ͱRustͷίʔυΛൺֱɻ ϫʔΫ(RustͷϞμϯ͞Λମݧ) 47