6月29日、Austin Starks氏が「I spent 18 months rebuilding my algorithmic trading platform in Rust. I’m filled with regret.」と題した記事を公開した。この記事では、Rust言語を用いてアルゴリズム取引プラットフォームを再構築した経験と、その結果、Rust言語に対して批判的なスタンスを取るようになった理由が詳しく述べられている。

著者はその高速性と安全性から、Rustが完璧なプログラミング言語であると信じていた。多くのガイドや記事がRustを絶賛しており、著者もその波に乗ってTypeScriptからRustへの移行を決意した。しかし開発に18ヶ月を費やした結果、著者はその選択を後悔することとなった。
著者が特に問題視したのは以下の点である。
1. 冗長で直感に反する構文と意味論
Rustの構文は非常に複雑で、直感的ではないと感じた。以下はRustで書いた関数の例である。

「関数のwhere内の句を理解するのに90分も費やしたくはない」と著者は言う。同じ関数をGoで書いた場合、複雑さは全くない。

2. エラーハンドリングの問題
Rust はエラーに対して非常に優れた機能を備えている(はずだ)。 unsafe を回避する限り、コードが確実に実行され、実行され続けることが保証される。 NilPointerException や未処理のエラーはもう発生しない(はずだ)。
しかしいざエラーが発生した場合、その原因を突き止めるのが非常に難しい。スタックトレースが提供されないため、エラーの発生場所や原因を特定するのに苦労する。

3. Rustコミュニティの問題
著者はRustコミュニティに対しても批判的である。Rustのサブレディットで質問をした際、得られた回答は以下の通りであった(著者はMongoDBを使用している)。
- Postgresへの切り替えを提案
- なぜMongoDBを使用しているのかという質問
- MongoDBは他の言語でも問題があるというコメント
- ごくまれに 有用な提案
Rust ほどカルト的なプログラミングコミュニティは他にない。彼らはこの言語の大きな欠点、たとえば学習曲線の激しさ、冗長さ、ひどいエラーメッセージ、奇妙な構文、言語設計の選択の疑問などをすべて無視し、開発者のスキルの問題だと決めつける傾向にある、と著者は言う。
詳細はI spent 18 months rebuilding my algorithmic trading platform in Rust. I’m filled with regret.を参照していただきたい。
サブレディットの反応だけでRustのコミュニティの民度を測ってるのは逆に幼稚で不適切では?