Rust Part7
■ このスレッドは過去ログ倉庫に格納されています
佐渡さんと書いて、サドさんと読む人と、サワタリさんと読む人がいるから、紛らわしい! 結局、JITがあるからRustよりJavaの方が速いんじゃないんの? RustとかC/C++は機械語までコンパイルするから速いんじゃなくて無駄なことをしないから速いのでJITとかそういう問題ではない JITコンパイルで性的コンパイル結果より速くなるというのは都市伝説
JITのしくみを考えたらワカル
理論上は分岐の実行時統計をとって最適化することによりローカルループがありえないぐらい爆速になって
JITコンパイラ大勝利!と言うことも考えられないではないが統計をとるオーバーヘッドが生じるし
そこまでやっているJITコンパイラは商用のにはないはず Rust学び始めたけど難しすぎる...
慣れるのにどれくらいかかるだろうか
ちなc/c++経験ほとんどなし
関数型言語は少しだけ分かるっていう程度
手を出すのは無謀? なにを作ろうとしてるのかによるよ
わたしは二ヶ月くらいかかったかな async/await、勉強するのに良いものある? まだstableじゃないからなんとも
tokio::netとかはasync/awaitでサンプル出してたりするけどどうかな >>159
substructural type systemとregionの前提知識がないならコンパイラに怒られるだけ時間の無駄。
先に必要な知識つけてから。
>>161
stable待つよろし。 cくらいはやっとらんとなんでこんな事してるんだって思うだけだろ。
メモリイメージがないならrustなんか使う意味がない。 そんなに大仰なことかなあ?
書いてればそのうち分かるっしょ >>159
C/C++やってからでも遅くない
っていうかC/C++を先にやった方が近道かも知れん 寧ろ関数型プログラミングに慣れ親しんだ人ならimmutableなオブジェクトだけでプログラミングしてしまい、
Rustが何も言わなかったりして… >>160
2ヶ月ですかー
用途としてはとりあえず簡単なCLIツールを考えています
>>168
c++はともかくcはちゃんとやっておいたほうがいいですかね
「低レイヤを知りたい人のためのCコンパイラ作成入門」を読んだのでメモリイメージ的なことは最低限は分かるかも
rubyとかpythonとかからrust始めた人もいるみたいだし気合入れて頑張ってみますか なんでこんなめんどくさいことやってんだ
というのを理解するにはC/C++の知識があると早い 苦しめられたほうがラクなんよね
一見苦しい縛りの結果、整理された構造という一粒の宝石を残してくれる お邪魔します
エディタを紹介してもらえませんか?
The Rust Programming Language を読みながら自習しています
第12章 Refactoring to Improve Modularity and Error Handling の最後の節
Splitting Code into a Library Crate まできたのですが
( https://doc.rust-lang.org/book/ch12-03-improving-error-handling-and-modularity.html#splitting-code-into-a-library-crate )
Listing 12-14 のように src/main.rs を変更すると
エディタが minigrep なんて知らんと文句を言いはじめました
これでは Config や run を補完で出してくれません
mod lib;
use lib as minigrep
を入れれば補完してくれますが、cargo build が通りません
この状況に対応しているエディタを紹介してくださると大変助かります -use lib as minigrep
+use lib::Config; ごめんなんか勘違いしてた
vscodeで普通に通るよ トレイト境界をトレイト拘束に置換する拡張機能を書いた RustのArcとかBoxとか複数組み合わせてちゃんと動くってイメージが湧かないんだけどそんなもん? バグを見たことがあるからちゃんと動くというイメージが沸かないのか? https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8c44bed658726ada0deff031799664b7
1. std::env::current_exe()で実行ファイルのフルパスを得る
2. file_name()でファイル名だけにする
3. to_str()で&strにする
4. 途中でErrやNoneが返ってきた場合はデフォルトの値"foo"を使う
ということをやりたいのですが、エラーでビルドできません。
どのように書けばいいでしょうか? std::env::current_exe() は PathBuf の"値"を返す
PathBuf::file_name() は PathBuf の中身の部分的な参照を返す
PathBuf::file_name() で生成される &OsStr を参照から値に変換するか、
std::env::current_exe() で生成されるPathBufを変数に束縛して所有権取らせてから、改めて参照を取得するかしないとダメ >>188
ありがとうございます、所有権を意識してto_ownedを使ったらいけました。 >>27の元ネタだが
We need a safer systems programming language
ttps://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/
Why Rust for safe systems programming
ttps://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
あたりを読むとあっちの会社はホント合理的だなと痛感する。C/C++を用いた安全な大規模システムの開発はムリゲーとし
同業他社の方針やツールを認め導入してしまう。日本の大手システム屋にこういう事を出来るところってあるんだろうか 合理的ね。。
「戦うプログラマー」読む限りはそうは思えんが。
都合のいいとこだけ切り取ってるな。
むしろ無理やり言語使わせるとかもろSIerのやり口だろ。ばかすぎる。 闘うプログラマーと言えば当時からC++は魔境過ぎてヤベェみたいな記載があって笑った記憶ある。 無理矢理使わせてるということは今後出てくるMSプロダクトは全部Rust製になるのか? >>193
C++で作るようなものを全部Rustにする
ってなったらすごいことになるな JavaScript → TypeScript(型チェック) とか C++ → Rust(借用チェック) みたいな
用途・特性が似通った言語でより安全な方を使わせるってのは、単なるリスクマネジメントであって
SIerのナンデモJava事案とは違うと思う ポストC/C++の座にRustを据えるかどうかはともかくC/C+お払い箱は確定事項じゃね
つーかMSRCの記事の何処にも無理矢理使わせているなんて書いていないぞ? Rust学び始めたけど噂通りむずい...
やりたいのはcli/tuiとかwebなので習得が無理そうだったら大人しくGoを使うことにする...(´・ω・`) >>199
CでOS書いた事あんの?
C意外でOS書いたことあんの?
それとも想像だけ? >>200
OS書かなくても自家製メモリ管理作ってみれば想像できるだろ。 ちゃんとしたmallocを作ること自体が難しいのであってCかRustかは難しさへは影響しない GCはクソ!だからRust最高!
とイキがってた奴がボローチェッカにボコボコにされてGCの良さを体感するまでが通過儀礼
どっかにドリルないですかね。>187みたいな問題がサラッと解けるようになりたい GCがクソだと思ったからRust使うという意識なかったな >>187 みたいな感じのはリファレンス読んで関数やメソッドが参照返すのか値返すのか調べるだけ Rustはボローチェッカーのご機嫌取りが必要だが
GCある言語で性能が欲しいとか言い出すとGCのご機嫌取りが始まる 所有権という概念をつかむのに苦労はしたけど、結果的にはプログラミングを簡単にしてくれていると思う ライブラリの開発者以外に所有権意識させたのは良いと思う GCが糞っていうより
糞実装のGCが多過ぎて
大抵の人はGCで糞な思いをするから
GCが糞だと言う誤解というか評判になってるだけ
実際糞だが ガベッジだって言う人もいるけど
俺は宝物って呼んでる クロージャの中で?が使えない…
パトラッシュ、僕はもう疲れたよ(´・ω・`) 同じ処理するにしてもRustだと複雑で冗長になるんだよな
もしかして糞言語なんじゃね? >>218
できるよ
Resultを返すクロージャなら メモリ壊して苦労するか
パフォーマンスで苦労するか
コーディングで苦労するか
お好きな物をどうぞ Bookを6章まで読んだ俺が >>187 を書いたらこうなった
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=dc60559b7af47298d305be80b340ee98
&strじゃなくてStringだけど 俺はこう
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=aa72b77d2eebc44833b647e46b13e020
Stringは必然と思う そういや、String(のclone)を一生懸命に避けてほんとに意味があるのか
コードを無駄に複雑化させただけなんじゃないかと悩む事が多い >>225 だとOsStringですけど、Stringにするにはどうすれば・・・? こうかな
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=91e57950a6bf6c922ff4f3d0b7531a0b なるほど
Derefが必要ない場合は直接書いちゃえばいけるのか
ありがとうございます なんでもかんでもメソッドチェーンにしないで適当なところで束縛した方がRustのコードは読みやすくなる それはあるな。シャドーイングできるから変数名に悩まないし、
単に長くなったところで再束縛すればいい。 界隈の潮流では「部分的なc++化」というものがあり、Javaですらジェネリクス/テンプレートを取り入れた
rustもそうなる 関数型言語で優雅にやってたことを
マクロの延長みたいな形で泥臭く実装するのがC++化 そもそもC++化の潮流なんてあるか?
各言語それぞれ取り入れあってるとは思うが。 仕様がごちゃごちゃすることをC++化と呼んでるだけでしょ ランタイム速度は落ちない?じゃいれるべ。
がc++の潮流 いや、javaのジェネリックスとC++のテンプレートの区別が付かないやつの言うことがそもそもおかしい。
パラメタ多相とメタプログラミングは別もんだぞ。むしろ最近のテンプレートがパラメタ多相に寄ってきたんだろ。 なんだか難しい言葉がいっぱいあるんだね
rustのが簡単でいいや Rustは難しくないよ
ただコンパイラがいけずなだけ ■ このスレッドは過去ログ倉庫に格納されています