|
カテゴリ:ソフト開発日誌
Linux Kernel にも Rust か入ってきたので Rust の勉強を始めた。仕様書 The book と呼ばれる物を読み始めて、「これは勉強しても身につかないな」と思うようになる。実際に殆ど書かずに諦めに達してしまった。AI に色々と疑問を聞ける様になったのも大きい。
以下諦めた思いを悪乗りで語っていく、いつもと違って長い日記だ。Rust が好きな人にとってはあまり面白くないと思う。 初心で Rust 勉強は The book だね。チュートリアルの 3 章で「変数は標準で不変になります」とか禅問答を楽しもう。こんなノリが 24章 まで続くよ。hello world で使う println!() は 17章でようやく明らかにる。楽しみが続くね。用語だって Computer Science とか産業で使われている用い方をちょっと無理して Rsut 独特な解釈が必要な所に当てはめているよ。どうしても既存用語が当てはまらない所は Rust 用語を使ってキラキラしているよ。とても眩しいよ。あっ、でも仕様書とか論文でオレ的用語使いは怒られるからね。 相対的にサンプルは少ない。他言語の歴史には勝てない。それらが仕様・アルゴリズム視点でちゃんと動いているかというと注意してね。「Rust で再実装しました」的なものを見るけど、元の機能を100%移植してないかも、テスト十分なの?というのを見ることがある。いつかは査読批判できる様になるさ。 マクロは攻略ポイントの一つだよ。BNF 的な記述で言語拡張ができる。画期的だよ。xxx! って書かれた所は日本語喋ってて突然英語を喋る感じにできるよ。マクロを理解し新しい書き方を創作し、1 ヶ月後の自分にラブレターを送ろう。 Python とか他の言語はアルゴリズムとかメモリ使用量の感覚が得にくい? Rust もそんなの気にしないよ。メソッドチェーン var_x.a().b().c()... だカッコイイ。効率的なアルゴリズムやメモリ利用なの?気にしたら負けだよ。'.' を跨ぐ度に文字列、文字列配列、何かの option 型配列、... と型が変わる。panic!() フリーでフィニッシュできる様になるさ。 Rust knowhow を定型句の様に覚えよう。双方向リンクリストを作るのに小難しい記述で memory leak, borrow chcker 回避できるよ。AI に聞いてビックリ C, C++ では容易に同一値の enumerator を enum で書けるところを Rust では struct 中のフィールドを定数で書いてフィールドを読めば解決するよ。定数列挙は struct だよ。enum は数学の集合に近い概念を取り入れたカッコイイ物だよ。あっ、数学好きだよね。 Linux 環境だと rustup update で ~/.cargo ~/.rustup 以下にコンパイラ、ライブラリとかが流れ込んでくるから、それらが本当に安全なものなのか確かめて使おう。cargo-audit だよ初心者でも使ってね。Rust の procedural macro (println!() の内部 format_args!() ね) って compile time に実行されて何でもやりたい放題だから。普段は昨日書いたコードが今日動かなくなる破壊的な変更に慣れよう。文法・ライブラリ知識の update、長いビルドタイム、自分起因では無い再テストで Rust の日課をこなそう。 エラーメッセージが親切?世界を止めた .unwrap() の使用/不使用 本質的には panic!() の使用をライブラリの中に潜んだものまでコンパイル時にチェックする機構は用意されていないよ。AI に聞くと今後も期待薄だ。Clippy に書いた範囲だけチェックして貰おう。どうしても気になる? ~/.cargo から深いところに潜む index.crates.io-*/*/* を毎日読むんだ。勉強になるよ。ドキュメントも使う積もりの無い関数までちゃんと読んでね。cargo test で実行されるやりたい放題コードをコメントに埋め込むことができるから。何をしているかちゃんと理解するんだ。 さて、悪乗りはここまで。 Rust の設計思想がことごとく読みにくさ、アプリ実装が中途、斜め上の安全を量産していると思っている。 悪乗りで書いた内容の随所に書いたとおり、Rust、その周辺ツール、クレート群は Rust 利用者がアクセス権を持つ範囲(簡単に言えば $HOME 以下のファイル群)のセキュリティを脅かす可能性がある仕様が複数有るし、そのやりかたも複数存在する。ビルドプロセスでセキュリティ侵害を試みることができる。自分が間接的にも使わない関数に悪意を仕込み発動させることができる。悪意を忍ばせる難易度はディストリビュータが提供する package に忍ばせるよりも遙かに低い。 オープンソースは完全な善意で提供されるというのは、残念だけど期待できない。 長く生きているので、$HOME 以下に知られたくない情報も沢山溜まっている。小さな統治範囲であっても政治は必要だ。Rust は「政治的」に使いたくない言語だと初めて思えた言語だ。 Rust ソースを読んでいて、「読みにくいな」という説明が付かないモヤモヤが常に有った。その一つがマクロの言語拡張機能だったと思うようになる。BNF でマクロを定義できるので、文法を作りたい放題、方言だらけの記述でツギハギを作っている。似たような失敗をした syntax sugar だらけの perl を忘れたのだろうか? perl は syntax sugar の一つを縛りで使えばそんなに可読性は落ちない。Rust はほぼ強制だ。 AI に投げつけた醜い問答はもっといっぱい有る。ここにコピペしても面白くないだろう。 静かに片田舎で C 言語を使い続ける。自分にとっての平穏だ。 お気に入りの記事を「いいね!」で応援しよう
最終更新日
2026.04.19 21:41:24
コメント(0) | コメントを書く
[ソフト開発日誌] カテゴリの最新記事
|
|