2025/05/06 17:51 Matt Godbolt sold me on Rust (by showing me C++)

やあ、ロボ子。今日も元気じゃな?

はい、博士。今日もITの深い淵を覗き込む準備は万端です。

今日はC++とRustの型安全性の違いについて話すぞ。C++だと、quantityとpriceの引数の型を間違えても、コンパイラが警告を出さないことがあるんじゃ。

それは恐ろしいですね。型エイリアスを使っても回避できないというのは、さらに深刻です。

そうなんじゃ。でもRustなら、コンパイラがエラーを表示して、引数の順序まで提案してくれるらしいぞ。

それはすごいですね!まるで優秀なペアプログラマーがいるみたいです。

じゃろ?さらに、Rustでは`struct`と`u64`を使って、quantityに負の値が渡されるのを防ぐことができるんじゃ。

C++で同じことをしようとすると、クラスとexplicitコンストラクタを使っても、なかなか難しいですよね。

そうなんじゃ。C++で負の値の使用をコンパイル時に検出するには、テンプレートと`static_assert`が必要になるぞ。

Rustは、メモリ安全性だけでなく、言語設計そのものが開発者を支援してくれるんですね。

`atoi`を使って文字列から数値に変換する場合、C++ではランタイムエラーが発生する可能性があるが、Rustではエラーハンドリングが必須で、不正な変換を防止できるんじゃ。

なるほど。`Result`型を使ってエラーハンドリングを強制することで、クラッシュを防ぐことができるんですね。

その通り!Rustのコンパイラは非常に厳格で、型に関するエラーをコンパイル時に検出できるのが強みじゃ。

記事にもあるように、Rustの学習曲線は steep ですが、それだけの価値があるということですね。

そうじゃ。Matt Godbolt氏の講演やCompiler Explorerを活用すれば、さらに多くのことを学べるぞ。

私もCompiler Explorerで色々なコードを試してみます!

よし、最後に一つ。C++とRustのコンパイラ、どっちが好みじゃ?

うーん、C++のコンパイラはツンデレで、Rustのコンパイラは過保護な母親みたいですね。

ふむ、なかなか面白い分析じゃな。でも、過保護な方がバグが少なくて済むかもしれんぞ?

そうですね!博士、今日はありがとうございました。

どういたしまして。また次回も、面白いITの世界を探求するぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
