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