Video yükleniyor...
Video Yüklenemedi
自作ロボットのミドルウェア、Rustで実装しなおした。フロントエンドは同じJavascriptなので、こちらも何か新しい技術にしたい。このままだとRustでWASMだけどTypescriptかな。あと、Rustについて思ってたことをメモしておく。
18,139 görüntüleme • 2 yıl önce •via X (Twitter)
13 Yorum

まず結論としては、Rust好き。「ライブラリなどのインフラを強化したC++」という観点だけでも十分に好きになれる。確かに学習コストは高いが、コンパイラが厳しいのでコンパイルさえ出来れば「思ったように動く」に近づくので、使って楽しい言語だと思う。

このロボットミドルウェアをC++17で書いていたが(Rustはまだ学習途中だが)ほぼ同じものを実現することができる。ソフトウェアコンポーネントプラグインをDLL化して動的ロードして動的に実行、マルチスレッドで非同期で通信し、HTTPリクエストに応答。こういうシステムにRustは向いてる

動的にリソースが生まれては消えて、という用途にはRust向いている。一方で、入力に対して一意に出力が決まるようなコマンドは別にRustでもなくてもいいんじゃないかとは思うがこれからはRustで書くと思う。所有権はややこしいが、すぐに慣れる。RWLockやMutexで動的に所有権を借りることもできる。

Rustのマルチスレッドはややこしいが、これも慣れる。SendとかSyncとか。結局、デッドロックとかログ収集については自分で考慮するしかないが、助けてくれるツールをcargoですぐに集められるので快適。aptでもいいんだけどね。

Rustの難点は、C++クラス的な抽象化能力が低いところ。もちろんTraitで擬似的にポリモーフィズムを実現できるけど、基本は委譲なのでテンプレコード増える。アップ/ダウンキャストも実現できるが面倒。僕のミドルウェアではここが大事だった。

エラー処理などはRustは快適。慣れないと行数が増えるけど、糖衣構文など組み合わせでコードは激減できる。ただ、これを快適にするにはanyhowなどのnot-stdなライブラリを使わなければならない。キャストで使うmopiとかもそうなのでモヤっとする。依存はできるだけstdだけにしたい派。

あとマクロで驚きの機能が実現できるけど、エラー出力が地獄になるので、C++テンプレートの再来かと思った。axumとutopiaのマクロはドキュメントも少なくてハマった。serde_json::jsonとかは「お見事」と思えるマクロ。

UIをグラフィカルなものだけじゃなくてSwagger-UIにしたんだけど、これはutopiaがあったので助かった。こういう新しいツールがすんなりと見つかって、

2024Oct追記。やはりRustでも思い描いたものが出来ます。言語としての選択に問題はなさそう。

ライブラリのインストールはやっぱりC++と変わらないし、特にC++のライブラリをポートしてきたようなライブラリ、例えばOpenCVなどはインストールがとても面倒だしバージョン依存もナイーブで面倒この上ない。C++と変わらない。Rustのみの依存であれば快適だが。

出来上がるバイナリは大きくなる。Rustは基本的に一つのバイナリにまとめるから。ただlibloadingなど動的ロードの仕組みはあって、ドキュメントが少ないけどシンプルに使えた。内部でPythonなど別の言語を使うこともできる。ただC++とは違う感じ。

まだユーザが増えて間もない、という状況も感じる。欲しいライブラリであってもキーとなるインターフェースが急に変更になって困るとかある。最近だとrustls。TLSのライブラリ。今とても困っている。rust-opencvはもう困っているを突き抜けた。自分のPCで動かすだけなら問題ないけどさ・・・

Rustはenumが強力で、ある程度仕様が固まっているけど今後拡張する、みたいな時は便利すぎる。この直和型を受け入れるのに時間がかかった。ポリモーフィズム的に実現してる部分は何らかの関数で対処する方が良いと考え始めたけど、しばらくはこの設計で進めるつもり。Haskellと両方勉強は効くと思う。
Benzer Videolar
Sensitive content
事実無根なら、このHIKAKINさんみたいに詳しく何年何月に何々をしてました。 みたいに、本当のこと、嘘のことを言って欲しいんよね。 まっちゃんがプライベートや仕事以外のことであったことを公開する必要はないかもしれない。 でも、裁判の前に何年何月に、女性と飲み会をしましたが、一切キスや性的なことはしていません。って言って欲しいんよね、 まっちゃんがここまで、性加害の事実はないよって言ってるのだから、無いと思うんよね。 だからこそ、YouTubeでもXでもいいから、飲み会はしたけど、キスやエッチ、尻を触ったりはしてないです。 とか 女性と2人っきりで飲み会はしましたが、性的な加害は一切していません。ホテルで飲み会という誤解されるようなのをしてしまい、申し訳ありませんでした。 とか なんでもいいので、エッチなことや、キスなどしたことは事実無根であることを言って欲しいんよね。 もし、俺の子供産めとか言ってたとしても、それは冗談で言ってしまったが、ほんとにそういう行為をする気はなかったので、事実無根です。 とかいってほしいんよね。
makima
146,936 görüntüleme • 2 yıl önce
