M

Mental models for learning Rust を読んだメモ

Mar 17, 2024

Mental models for learning Rust を読んで、メモ。

  • Rustを学ぶ上でのメンタルモデルについて。
    • 簡単ではない。
    • 詰まることなくコードを読めるようになるまでフルタイムでも1年はかかったけど、その価値はあった。
      • 学ぶ人のバックグラウンド次第ではあると思う。1年は短い方?
    • 他言語を学ぶときのメンタルモデルは適用できない。
  • コンパイラーを受け入れる必要がある。
    • TypeScriptのような静的型付け言語を使っている人にとっては、強い違和感なく受け入れられるかもしれない。
    • コンパイラーは友好的なコードレビュアーと考えると良い。コンパイルを阻害するものではなく、早期にコードの欠陥を教えてくれるもの。
    • コンパイルエラーのメッセージは改善されていっている。今わかりにくいものがあっても将来的には改善されていく。
  • 数週間でマスターできる言語ではない。
    • それ自体は特に問題ではない。全てを把握できていなくても使い始めることはできる。
      • Rustは膨大な言語だということ。
    • 最初、背後にあるコンピューターサイエンスの全てを理解しようとしたけど、それは間違ったアプローチだった
      • Rustの全機能は網羅するには多すぎるし、使わない可能性が高い。
      • 未知のものがあることを受け入れた上で、書いて、失敗して、学んで、繰り返すのが良い。
  • 賢くやろうとしすぎないこと。
    • KISSの原則 - Wikipedia
      • まず動くものを作る。それから改善していく。
    • 型システムの複雑さに挑戦しすぎると、コンパイラーが理解しずらいエラーを出すようになる。
  • コストを前払い。
    • 他言語より初速が遅い感覚にはなるはず。
      • コンパイラーが他言語よりも厳しくコードをチェックしていて、求められるコードのレベルが高くなる。
      • その分、後で難解なバグのデバッグなどをする必要が少なくなるはず。
    • TypeScriptやGoのような言語のコンパイラーや型チェックは緩いので、実行時のエラー検出にツールや外部サービスが必要。
      • Rustではそれが不要。ロギングのみで十分。
        • 記事を書いたSylvain氏の経験上、Rustの実行環境でのクラッシュは1度もない。
      • Rustでは、コンパイル時点で全てのエラーに対する対処をしている。
      • Discordのシニアスタッフエンジニアも同様のコメントを過去にしている。
  • 関数型。
  • メンテナンスの助けになるツールを利用するのが良い。