公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
日本語の情報
https://rust-jp.rs/
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※C++との比較は専用スレへ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
前スレ
Rust part11
https://mevius.5ch.net/test/read.cgi/tech/1623857052/
Rust part12
■ このスレッドは過去ログ倉庫に格納されています
2021/08/24(火) 22:55:27.78ID:972JwtmU
662デフォルトの名無しさん
2021/10/12(火) 14:51:47.32ID:2YI6ZITw >>633
Rustは書き換え競合を避けるために、書き換え可能な可変参照(for writer)と、書き換えられない参照(for reader)の区別をして、
書き換えられない参照は同時に複数を持てる(multiple readers)けど、可変参照は同時に一つだけしか許さない(single writer)とすることで、競合を避けている。
Rustではmutかどうかもその観点からなので、変数が別のVecになるだけでなく、同じVecのまま配列内容や長さの変化しても、内容長さ同じだが領域拡大で場所移動でも、書き換わりとしてmutが必要。
だから、Vecのメソッドでmutを要求してるのはそれらの結果論にすぎないし、Vecの内部構造がこうなってるからという説明は不要で筋違い。
>>661
それは違うな。
むしろ頭を一旦ゼロにする柔軟な人ほど理解が早い。
他言語での様々なモデル(メモリモデルやクラスモデルや…)をベースに難しく考える人ほど混乱して理解が遅い。
Rustは書き換え競合を避けるために、書き換え可能な可変参照(for writer)と、書き換えられない参照(for reader)の区別をして、
書き換えられない参照は同時に複数を持てる(multiple readers)けど、可変参照は同時に一つだけしか許さない(single writer)とすることで、競合を避けている。
Rustではmutかどうかもその観点からなので、変数が別のVecになるだけでなく、同じVecのまま配列内容や長さの変化しても、内容長さ同じだが領域拡大で場所移動でも、書き換わりとしてmutが必要。
だから、Vecのメソッドでmutを要求してるのはそれらの結果論にすぎないし、Vecの内部構造がこうなってるからという説明は不要で筋違い。
>>661
それは違うな。
むしろ頭を一旦ゼロにする柔軟な人ほど理解が早い。
他言語での様々なモデル(メモリモデルやクラスモデルや…)をベースに難しく考える人ほど混乱して理解が遅い。
663デフォルトの名無しさん
2021/10/12(火) 14:59:49.12ID:fJneTy5r >むしろ頭を一旦ゼロにする柔軟な人ほど理解が早い。
>他言語での様々なモデル(メモリモデルやクラスモデルや…)をベースに難しく考える人ほど混乱して理解が遅い。
これを本気で考えてるならバカとしか言いようがない。
C、もしくはアセンブラをバインディングした時に確実にぶっ壊れるコードになるわ。
>他言語での様々なモデル(メモリモデルやクラスモデルや…)をベースに難しく考える人ほど混乱して理解が遅い。
これを本気で考えてるならバカとしか言いようがない。
C、もしくはアセンブラをバインディングした時に確実にぶっ壊れるコードになるわ。
664デフォルトの名無しさん
2021/10/12(火) 15:34:41.08ID:2YI6ZITw >>663
それはABIやFFIの話であってRustの話ではない。
Rustで完結するシステムでは一切考慮する必要ない。
他言語ライブラリなど利用の際も、適切な仲介モジュールがあれば、利用側で考慮する必要はない。
各言語との連携部分では、それぞれその言語の知識が不可欠なのは当たり前。
だが、それはRustの話ではなく、Rustにおいてはその知識は必要ない。
それはABIやFFIの話であってRustの話ではない。
Rustで完結するシステムでは一切考慮する必要ない。
他言語ライブラリなど利用の際も、適切な仲介モジュールがあれば、利用側で考慮する必要はない。
各言語との連携部分では、それぞれその言語の知識が不可欠なのは当たり前。
だが、それはRustの話ではなく、Rustにおいてはその知識は必要ない。
665デフォルトの名無しさん
2021/10/12(火) 16:09:45.89ID:Br1er+Qs メモリモデルって並行プログラミングやらないならあんまり関係なくない???
666デフォルトの名無しさん
2021/10/12(火) 16:12:51.35ID:BYAG38Ke アトミック操作のOrderingの話なんかはC++の定義に丸投げしてるから他の言語の知識が必要というのは一応正しい
667デフォルトの名無しさん
2021/10/12(火) 16:27:05.41ID:2YI6ZITw668デフォルトの名無しさん
2021/10/12(火) 18:24:19.63ID:natODgzZ >>662
「Vecの内部構造がこうなってるからという説明は不要で筋違い」うーん、それこそ趣旨が違うよ。
vec[0] = 2などとして内容長さ同じの場合の理解では、1つの可変参照と、複数の参照を持つ事を
知っているのは必要だが通常では長さや容量が拡張されるpushやinsertは内部構造により説明される。
mutatorであるpushを呼ばない限りはmutは必要なければ、「mutをつけたベクター型」では無くて
配列という質問になるのでは?
「Vecの内部構造がこうなってるからという説明は不要で筋違い」うーん、それこそ趣旨が違うよ。
vec[0] = 2などとして内容長さ同じの場合の理解では、1つの可変参照と、複数の参照を持つ事を
知っているのは必要だが通常では長さや容量が拡張されるpushやinsertは内部構造により説明される。
mutatorであるpushを呼ばない限りはmutは必要なければ、「mutをつけたベクター型」では無くて
配列という質問になるのでは?
669デフォルトの名無しさん
2021/10/12(火) 19:12:36.47ID:2YI6ZITw >>668
公開(pub)されていないstruct Vecの内部構造や非公開のRawVecなどを持ち出してくる人たちがいるから、
「Vecの内部構造がこうなってるからという説明は不要で筋違い」と書いた。
そこは長さや容量を持っている等の概念の理解だけで十分であるし、実際に公表されている情報もそこまで。
公開(pub)されていないstruct Vecの内部構造や非公開のRawVecなどを持ち出してくる人たちがいるから、
「Vecの内部構造がこうなってるからという説明は不要で筋違い」と書いた。
そこは長さや容量を持っている等の概念の理解だけで十分であるし、実際に公表されている情報もそこまで。
670デフォルトの名無しさん
2021/10/12(火) 19:33:58.77ID:natODgzZ >>667
C++の知識を「あまり」必要としないのは確かだがC20/C22などの仕様を「参考」にしているのは明らか。
というかLLVMから見てClangっぽく見えるように頑張っていると公式が言っている
C++の知識を「あまり」必要としないのは確かだがC20/C22などの仕様を「参考」にしているのは明らか。
というかLLVMから見てClangっぽく見えるように頑張っていると公式が言っている
671デフォルトの名無しさん
2021/10/12(火) 19:37:41.99ID:natODgzZ672デフォルトの名無しさん
2021/10/12(火) 21:00:30.83ID:fJneTy5r673デフォルトの名無しさん
2021/10/12(火) 22:00:42.97ID:lRrdrCP9674デフォルトの名無しさん
2021/10/12(火) 22:09:23.38ID:+W0FsG+B >>672
Rustでプログラムを書くに当たってRustを構成する様々な低レベルのレイヤーのうちどこまで書き手は意識すべきと考えますか?
さすがにCPUを構成するシリコンひとつひとつの振る舞いを意識することは出来ないので、
これより先は気にしなくて良いという境界は存在すると思うのですが、それはどのあたりにあるとお考えでしょうか
Rustでプログラムを書くに当たってRustを構成する様々な低レベルのレイヤーのうちどこまで書き手は意識すべきと考えますか?
さすがにCPUを構成するシリコンひとつひとつの振る舞いを意識することは出来ないので、
これより先は気にしなくて良いという境界は存在すると思うのですが、それはどのあたりにあるとお考えでしょうか
675デフォルトの名無しさん
2021/10/12(火) 22:18:28.12ID:1W2DSIiH >>672
no_stdでさらにシステムコール(あるいは相当)はasmでレジスタ渡しで呼び出しに至るまでRust完全単独で既存OS(など)利用もあるしOS作成ならOS側もRust単独
no_stdでさらにシステムコール(あるいは相当)はasmでレジスタ渡しで呼び出しに至るまでRust完全単独で既存OS(など)利用もあるしOS作成ならOS側もRust単独
676デフォルトの名無しさん
2021/10/12(火) 23:07:50.81ID:XIKPR8ou >>664
>Rustで完結するシステムでは一切考慮する必要ない。
それって議論の価値ある? だって現実的じゃないじゃん
研究者のための言語だっていうなら、それもありだけど
ここにいる人間は実用を求めてるわけでしょ。多分……
>Rustで完結するシステムでは一切考慮する必要ない。
それって議論の価値ある? だって現実的じゃないじゃん
研究者のための言語だっていうなら、それもありだけど
ここにいる人間は実用を求めてるわけでしょ。多分……
677デフォルトの名無しさん
2021/10/12(火) 23:22:14.99ID:ElEzb70r すまんが何を言っているかさっぱり分からない
自分が書いてるのは9割方Rustで完結したプロジェクトだけど、みんなFFIばっかり書いてるのか?
自分が書いてるのは9割方Rustで完結したプロジェクトだけど、みんなFFIばっかり書いてるのか?
678デフォルトの名無しさん
2021/10/12(火) 23:52:39.59ID:XIKPR8ou Win32APIとリンクしたり、そういうプログラムは書かないってことね
679デフォルトの名無しさん
2021/10/12(火) 23:56:08.22ID:ElEzb70r Win32API使いたいんなら単にwindows-rsクレート使えば良いだけで
その先のC ABIがどうなってるかとか気にする必要はないと思うが
その先のC ABIがどうなってるかとか気にする必要はないと思うが
680デフォルトの名無しさん
2021/10/12(火) 23:57:43.15ID:ElEzb70r ああでもwindows-rs自体は割とunsafe あるから気にしないとダメかな
681デフォルトの名無しさん
2021/10/13(水) 00:00:43.80ID:PhFIUWEp いや、そもそもwindows-rsクレート使おうが
C理解してないと使えないよ
だってwindows-rsの型定義は「今のところ」まともじゃないもん
ポインタは何でもかんでもDWORDだし
C理解してないと使えないよ
だってwindows-rsの型定義は「今のところ」まともじゃないもん
ポインタは何でもかんでもDWORDだし
682デフォルトの名無しさん
2021/10/13(水) 00:05:34.07ID:1HIX7TKw 確かに例が悪かった。windows-rsに関してはunsafe がある以上呼び出し先のCの知識は必須だね
言いたいのは自分でunsafeを書かない限り、Rustだけで完結するってこと
そりゃ分野によってはまだライブラリ不足で完結しにくいのもあるだろうけど、多くの分野で完結すると思うがなぁ
言いたいのは自分でunsafeを書かない限り、Rustだけで完結するってこと
そりゃ分野によってはまだライブラリ不足で完結しにくいのもあるだろうけど、多くの分野で完結すると思うがなぁ
683デフォルトの名無しさん
2021/10/13(水) 00:37:10.90ID:bi9uBzGZ で、そういうメモリをほとんど気にしないソフトはrustで書く必要がないものなんだよね。
ファッションでやってることがバレちゃったね。
ファッションでやってることがバレちゃったね。
684デフォルトの名無しさん
2021/10/13(水) 00:38:57.86ID:fXfbCLiK Rust以外のプログラミング言語を考えれば理解しやすい
C言語を全く知らなくても使えるようにその言語だけで書かれたAPIで何でも利用できる
Rustも同様でC言語を全く知らなくても使えるようにRustだけで書かれたAPIで何でも利用できるようにすることができるし実際にほとんどの分野ではそうなっている
その上でRustの場合は効率面から元のAPI向き出しで例えばCStr使ったりするなどC言語でのAPIのまま提供するモジュールも存在するというだけにすぎなくてそこはあくまでもFFI領域
したがって「他の言語と同様にRustもC言語を全く知らなくても使える」で正解
C言語を全く知らなくても使えるようにその言語だけで書かれたAPIで何でも利用できる
Rustも同様でC言語を全く知らなくても使えるようにRustだけで書かれたAPIで何でも利用できるようにすることができるし実際にほとんどの分野ではそうなっている
その上でRustの場合は効率面から元のAPI向き出しで例えばCStr使ったりするなどC言語でのAPIのまま提供するモジュールも存在するというだけにすぎなくてそこはあくまでもFFI領域
したがって「他の言語と同様にRustもC言語を全く知らなくても使える」で正解
685デフォルトの名無しさん
2021/10/13(水) 01:08:46.05ID:4amWetfo686デフォルトの名無しさん
2021/10/13(水) 01:16:25.82ID:fXfbCLiK >>683
例えばstd::fsやstd::netなどは本来ならCのABIでやりとりするものだが
そんなこといっさい気にする必要なくRustの型で渡してRustの型で返ってくるようにRustの標準ライブラリが作られている
そこにCの知識は全く必要としない
例えばstd::fsやstd::netなどは本来ならCのABIでやりとりするものだが
そんなこといっさい気にする必要なくRustの型で渡してRustの型で返ってくるようにRustの標準ライブラリが作られている
そこにCの知識は全く必要としない
687デフォルトの名無しさん
2021/10/13(水) 07:24:31.94ID:WqU30Pep たくさん書くのは自信がなさの表れ
そんな必死になるような話じゃないだろうに
そんな必死になるような話じゃないだろうに
688デフォルトの名無しさん
2021/10/13(水) 09:00:38.12ID:W/9iWpHx Cを理解してないとRustは使えない、と
ウソをつく人がいるからだろう
ウソをつく人がいるからだろう
689デフォルトの名無しさん
2021/10/13(水) 09:25:52.29ID:bi9uBzGZ そう思い込んでりゃいいんでない?
近くにいなけりゃ放置するよ。近くにいればボコボコにするけど。
近くにいなけりゃ放置するよ。近くにいればボコボコにするけど。
690デフォルトの名無しさん
2021/10/13(水) 09:41:01.46ID:+i9fv0nZ691デフォルトの名無しさん
2021/10/13(水) 10:15:02.35ID:hOkEY9I6 >>688
そういうやつの相手をムキになってやってるうちは自分も同じレベルだって気付けよな
そういうやつの相手をムキになってやってるうちは自分も同じレベルだって気付けよな
692デフォルトの名無しさん
2021/10/13(水) 10:36:12.77ID:gkjY8I9d693デフォルトの名無しさん
2021/10/13(水) 14:45:58.97ID:qAYNHtUZ >>690
シリコン原子一粒一粒の意味
シリコン原子一粒一粒の意味
694デフォルトの名無しさん
2021/10/14(木) 18:50:15.29ID:1TrBYNn/ コンピュータアーキテクチャの基礎知識(メモリモデル、アクセスオーダ、スレッディング等)やOSのシステムコール、APIの知識の事を "C言語の知識" と呼ぶ人が居るのね。
まあどうでもいいけど。
まあどうでもいいけど。
695デフォルトの名無しさん
2021/10/14(木) 19:43:21.65ID:JvADELGn システムコールにしても最終的にはレジスタに積んでsyscall命令もしくは割り込みするだけだからCでもRustでもasmと共存するだけか
C言語の知識は要らないな
C言語の知識は要らないな
696デフォルトの名無しさん
2021/10/14(木) 20:55:23.77ID:1TrBYNn/ まあシステムコールやAPIは C や CPP のヘッダ形式で定義/提供されてるという事を言いたいなら判らんでもないが、
そこまでコアな言語仕様知識は要らないねえ。
そこまでコアな言語仕様知識は要らないねえ。
697デフォルトの名無しさん
2021/10/14(木) 21:55:10.80ID:GbD2vike rustは書けるけどCが書けない人いる?
そういう人がいないとCがいるかいらないかわからない
自分はCの知識が役に立ったと思う
そういう人がいないとCがいるかいらないかわからない
自分はCの知識が役に立ったと思う
698デフォルトの名無しさん
2021/10/14(木) 22:21:20.24ID:dWpPrl+Q RustでWebバックエンド書いてる人になら普通にいるんじゃない?
Web系ならこれまでのキャリアで全くCに触れなくてもおかしくないし
Web系ならこれまでのキャリアで全くCに触れなくてもおかしくないし
699デフォルトの名無しさん
2021/10/15(金) 10:55:12.45ID:GXWQCf9x 昔からRust for Rubyistsとかあるしスクリプト系言語から流れて来る人もそれなりにいるかと
700デフォルトの名無しさん
2021/10/15(金) 12:44:17.46ID:P5mUityt スマートポインタやシェアードポインタ、所有権なんかは、C++0xあたりで導入された考えだから
どの程度の範囲をC言語と言っているのかによる。要らない派が多く「見える」が、知識があって
理解をを妨げるという考えは全否定する。「あって困るものではない」
どの程度の範囲をC言語と言っているのかによる。要らない派が多く「見える」が、知識があって
理解をを妨げるという考えは全否定する。「あって困るものではない」
701デフォルトの名無しさん
2021/10/15(金) 14:00:41.51ID:8deGlJY8702デフォルトの名無しさん
2021/10/15(金) 14:27:53.37ID:lZWoC8Xx >>701
OSなんて書いたこともないくせに語るなド素人
OSなんて書いたこともないくせに語るなド素人
703デフォルトの名無しさん
2021/10/15(金) 15:04:44.50ID:8deGlJY8 >>702
ソースコード読むことすらしてないバカは黙ってて。
ソースコード読むことすらしてないバカは黙ってて。
704デフォルトの名無しさん
2021/10/15(金) 15:15:35.47ID:rb+Oscx7 なんか低レベルな話で盛り上がってるな
705デフォルトの名無しさん
2021/10/15(金) 15:16:50.75ID:5/Pqp5xe そんなことよりシステムコールの呼び出しにCの知識は必要ないっていうコメント対して>>701のレスが噛み合ってないんだが、何を言いたかったのか解説してくれないか
706デフォルトの名無しさん
2021/10/15(金) 15:20:05.89ID:8deGlJY8 なるほど、レジスタからメモリ書き込みの同期タイミングなどが必要とかそこまで具体的に言わないと理解できないレベルなのか。
すげー馬鹿しかいないのなら仕方ないな。
すげー馬鹿しかいないのなら仕方ないな。
707デフォルトの名無しさん
2021/10/15(金) 15:33:44.29ID:5/Pqp5xe システムコールの呼び出しとはまったく関係ないな
708デフォルトの名無しさん
2021/10/15(金) 15:40:54.74ID:lZWoC8Xx OS書いたことも無いのに恥ずかしい奴
709デフォルトの名無しさん
2021/10/15(金) 15:45:02.58ID:lZWoC8Xx710デフォルトの名無しさん
2021/10/15(金) 16:38:42.56ID:XGfxQXO+ >>701
Rustはインラインasmできるので好きなレジスタと好きな変数(メモリ)の行き来演算できるしRustだけでOSも書ける
Rustはインラインasmできるので好きなレジスタと好きな変数(メモリ)の行き来演算できるしRustだけでOSも書ける
711デフォルトの名無しさん
2021/10/15(金) 17:41:49.92ID:W8XYkXKH >>710
どうせunsafeなんだろ
どうせunsafeなんだろ
712デフォルトの名無しさん
2021/10/15(金) 18:11:50.56ID:rb+Oscx7 寒色は人権すらないからな
713デフォルトの名無しさん
2021/10/15(金) 18:54:33.37ID:0qD/Pqit714デフォルトの名無しさん
2021/10/15(金) 18:55:28.40ID:IFdb5cTy Rust? 人気らしいね、でもオイラやらないよ
Cは嫌いだし、その後釜狙いの言語はどうせ肌に合わないさ
大半の人には必要ない言語だよね、だからオイラGoをやるよ
Cは嫌いだし、その後釜狙いの言語はどうせ肌に合わないさ
大半の人には必要ない言語だよね、だからオイラGoをやるよ
715デフォルトの名無しさん
2021/10/15(金) 18:58:20.72ID:WKIFTMdH GoのほうがよっぽどCの後釜感あるがな
GCのあるCという感じ
GCのあるCという感じ
716デフォルトの名無しさん
2021/10/15(金) 19:22:21.57ID:PoOS8yLC717デフォルトの名無しさん
2021/10/15(金) 19:27:43.08ID:vEXHgFWD rustの強みである静的メモリ安全性っていうのが活かせてないやんって意味で言ったんやけど
cやc++と同じ状況ならむしろrustよりcやc++使うよね?
cやc++と同じ状況ならむしろrustよりcやc++使うよね?
718デフォルトの名無しさん
2021/10/15(金) 19:36:00.75ID:sYZbhEbz 量の概念がないやつが定期的に現れるな
コード全域がunaafeなのと局所的なのは全然違うでしょ
コード全域がunaafeなのと局所的なのは全然違うでしょ
719デフォルトの名無しさん
2021/10/15(金) 19:46:42.29ID:PoOS8yLC720デフォルトの名無しさん
2021/10/15(金) 19:48:51.64ID:eqKsqNtm それならC++も同じでは?
721デフォルトの名無しさん
2021/10/15(金) 19:49:28.65ID:OmwX7nxr >>719
unsafeなのにメモリ安全性どうやって保証してるの?
unsafeなのにメモリ安全性どうやって保証してるの?
722デフォルトの名無しさん
2021/10/15(金) 19:52:54.07ID:eqKsqNtm C++の場合は、vector自身がメモリーの所有権を持ってるので安全性が保障されるんだけど。
723デフォルトの名無しさん
2021/10/15(金) 20:08:04.69ID:PoOS8yLC >>721
え?何を言ってるの?
Vecに限らずRustの各型を含めた標準ライブラリの内部はもちろんunsafeだらけだけど
論理的に安全な操作のみ、かつ、内部に閉じ込められていて外部に影響を及ぼさないもののみ
だからそれら型を含めた標準ライブラリを我々は安全に使うことができる
そしてそららを用いた我々のプログラムはコンパイラが通ればメモリ安全性を保証される
え?何を言ってるの?
Vecに限らずRustの各型を含めた標準ライブラリの内部はもちろんunsafeだらけだけど
論理的に安全な操作のみ、かつ、内部に閉じ込められていて外部に影響を及ぼさないもののみ
だからそれら型を含めた標準ライブラリを我々は安全に使うことができる
そしてそららを用いた我々のプログラムはコンパイラが通ればメモリ安全性を保証される
724デフォルトの名無しさん
2021/10/15(金) 20:14:36.90ID:eqKsqNtm >>723
じゃあC++と変わりませんね。
じゃあC++と変わりませんね。
725デフォルトの名無しさん
2021/10/15(金) 20:15:19.52ID:I/84Z1Ml >>723
だからアスペか?
論理的に安全な操作のみ、かつ、内部に閉じ込められていて外部に影響を及ぼさないってことをどうやって保証してるのか聞いてんだけど?
国会の答弁みたいな返答やめろよ
というか外部にメモリ及ぼさないはメモリ安全性が保たれるの必要条件じゃないんだけど
だからアスペか?
論理的に安全な操作のみ、かつ、内部に閉じ込められていて外部に影響を及ぼさないってことをどうやって保証してるのか聞いてんだけど?
国会の答弁みたいな返答やめろよ
というか外部にメモリ及ぼさないはメモリ安全性が保たれるの必要条件じゃないんだけど
726デフォルトの名無しさん
2021/10/15(金) 20:15:56.65ID:I/84Z1Ml 外部にメモリ及ぼさないじゃなくて外部に影響及ぼさないだった
727デフォルトの名無しさん
2021/10/15(金) 20:21:27.95ID:PoOS8yLC728デフォルトの名無しさん
2021/10/15(金) 20:33:33.14ID:WHarWmnu729デフォルトの名無しさん
2021/10/15(金) 20:36:47.57ID:jQ7TSjOD Cしか知らない人ってプログラミング言語の仕様とコンピュータのアーキテクチャが区別できないってマ?
型理論も知らないってマ?
型理論も知らないってマ?
730デフォルトの名無しさん
2021/10/15(金) 20:40:52.58ID:PoOS8yLC731デフォルトの名無しさん
2021/10/15(金) 20:50:24.31ID:LC/Ahxji >>730
>unsafeを誤解しているようだけど
>CやC++と同じ状況すなわちその部分の>メモリ安全性は自己管理となるだけ
って自分で言ってるよね?自分の過去の発言と言ってること矛盾してない?
rustのunsafeはメモリ安全性を保証することを諦めてるって言いたかったようだけど今は言ってること無茶苦茶じゃない?
>unsafeを誤解しているようだけど
>CやC++と同じ状況すなわちその部分の>メモリ安全性は自己管理となるだけ
って自分で言ってるよね?自分の過去の発言と言ってること矛盾してない?
rustのunsafeはメモリ安全性を保証することを諦めてるって言いたかったようだけど今は言ってること無茶苦茶じゃない?
732デフォルトの名無しさん
2021/10/15(金) 20:51:16.86ID:U2SV1SiG >>722
これが一般的なC++erの認識だとしたら恐ろしいな
これが一般的なC++erの認識だとしたら恐ろしいな
733デフォルトの名無しさん
2021/10/15(金) 20:58:34.88ID:NxDOUPls unsafeなコードが周りを滅茶滅茶にしない保証は無いよ
734デフォルトの名無しさん
2021/10/15(金) 21:01:02.97ID:NxDOUPls unsafeを使った場合の安全性の保証を機械的にやりたければ↓みたいなので契約プログラミングする手はあるね
https://crates.io/crates/contracts
https://crates.io/crates/contracts
735デフォルトの名無しさん
2021/10/15(金) 21:10:23.11ID:PoOS8yLC >>731
もちろんRustの標準ライブラリの実装内部には多数の細かい小さなunsafeがあってその部分はコンパイラによるメモリ安全性保証の範囲外
それそれの内部ローカルのunsafe使用が論理的にメモリ安全であるか否かの保証はコンパイラではなく人間が行ないunsafeはそのためにある
その上でRustコンパイラはプログラム全体のメモリ安全性を保証する
もちろんRustの標準ライブラリの実装内部には多数の細かい小さなunsafeがあってその部分はコンパイラによるメモリ安全性保証の範囲外
それそれの内部ローカルのunsafe使用が論理的にメモリ安全であるか否かの保証はコンパイラではなく人間が行ないunsafeはそのためにある
その上でRustコンパイラはプログラム全体のメモリ安全性を保証する
736デフォルトの名無しさん
2021/10/15(金) 21:17:10.00ID:Ue2FksZS >>735
人間がどうやって行うの?
人間がどうやって行うの?
737デフォルトの名無しさん
2021/10/15(金) 21:31:51.20ID:XGfxQXO+ 話は簡単だ
C/C++はプログラム全てがRustのunsafe状態
つまりC/C++はプログラム全てを人間がメモリ安全であると保証しなければならないが人間なので複雑化するとミスも生じる
GAFAM各社はメモリ安全に関するバグが全く減らずセキュリティ脆弱性の多くがこの問題に起因することに気付いた
そこでコンパイラがメモリ安全であると保証するRustを採用して少しずつC/C++から移行させていってる段階
C/C++はプログラム全てがRustのunsafe状態
つまりC/C++はプログラム全てを人間がメモリ安全であると保証しなければならないが人間なので複雑化するとミスも生じる
GAFAM各社はメモリ安全に関するバグが全く減らずセキュリティ脆弱性の多くがこの問題に起因することに気付いた
そこでコンパイラがメモリ安全であると保証するRustを採用して少しずつC/C++から移行させていってる段階
738デフォルトの名無しさん
2021/10/15(金) 21:34:04.93ID:OlLYCHFC unsafe blockはマーが全力で頑張ります!ゾーンだからな
アルゴリズムにおいてあるアルゴリズムが正当であると判定するアルゴリズムは存在しないんだからラストコンパライでも完全なセーフティは保証は出来ないけどな
ただ完全ではないものの他の注意すべき所をランコンに任せてunsafe部にヒューマンリソース限定出来るのはc++を遥かに優れた点よね(´・ω・`)
アルゴリズムにおいてあるアルゴリズムが正当であると判定するアルゴリズムは存在しないんだからラストコンパライでも完全なセーフティは保証は出来ないけどな
ただ完全ではないものの他の注意すべき所をランコンに任せてunsafe部にヒューマンリソース限定出来るのはc++を遥かに優れた点よね(´・ω・`)
739デフォルトの名無しさん
2021/10/15(金) 21:39:33.56ID:NxDOUPls 布教しようとしなくたっていいんだよ
めんどくせえから
めんどくせえから
740デフォルトの名無しさん
2021/10/15(金) 21:42:55.26ID:eqKsqNtm >>737
GAFAがその体たらくとは信じがたいけど、resource管理は所有権ベースでほぼ解決するし、逆に所有権以外で解決することは出来ないと思う。
GAFAがその体たらくとは信じがたいけど、resource管理は所有権ベースでほぼ解決するし、逆に所有権以外で解決することは出来ないと思う。
741デフォルトの名無しさん
2021/10/15(金) 21:45:54.09ID:kEafjbCd >>738
チューリングマシンの停止性問題のこと言ってるんだろうけど違うよ
あるアルゴリズムじゃなくて任意のね
「あるプログラムが正当であると判定するプログラムは存在しない」じゃなくて「任意のプログラムを正当であると判定するプログラムは存在しない」が正しい
これが5chクオリティか
チューリングマシンの停止性問題のこと言ってるんだろうけど違うよ
あるアルゴリズムじゃなくて任意のね
「あるプログラムが正当であると判定するプログラムは存在しない」じゃなくて「任意のプログラムを正当であると判定するプログラムは存在しない」が正しい
これが5chクオリティか
742デフォルトの名無しさん
2021/10/15(金) 21:58:02.76ID:rb+Oscx7 Rustコンパイラによるメモリ安全性の保証は信頼してても、unsafe使ってる標準ライブラリを信頼しない話おもしろいね。
実際に問題なく動いてるんだから仕様を信頼すればいいのに。
実際に問題なく動いてるんだから仕様を信頼すればいいのに。
743デフォルトの名無しさん
2021/10/15(金) 22:06:00.13ID:PoOS8yLC744デフォルトの名無しさん
2021/10/15(金) 22:07:41.72ID:OlLYCHFC >>741
うーんまぁ日本語で論理学考える事なんてあんましないから間違えてるのかもしれんが
あるアルゴリズム、ある整数等々で俺はある集合(=アルゴリズム全体で構成される集合)の元の任意性を表してんたんだけどな(´・ω・`)
うーんまぁ日本語で論理学考える事なんてあんましないから間違えてるのかもしれんが
あるアルゴリズム、ある整数等々で俺はある集合(=アルゴリズム全体で構成される集合)の元の任意性を表してんたんだけどな(´・ω・`)
745デフォルトの名無しさん
2021/10/15(金) 22:11:36.31ID:wjdlJ99Z746デフォルトの名無しさん
2021/10/15(金) 22:18:09.07ID:JTaIEN+o747デフォルトの名無しさん
2021/10/15(金) 22:39:44.83ID:XGfxQXO+ >>740
C/C++に限界を感じたGAFAMたち大手IT企業がRustに結集
特定の言語がIT業界を挙げて支持されるのは初めて
プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebookが「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
C/C++に限界を感じたGAFAMたち大手IT企業がRustに結集
特定の言語がIT業界を挙げて支持されるのは初めて
プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebookが「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
748デフォルトの名無しさん
2021/10/16(土) 00:08:25.70ID:dPfgeqZY >>717
それどこの0か100しか無い世界?
それどこの0か100しか無い世界?
749デフォルトの名無しさん
2021/10/16(土) 00:34:25.94ID:bSvFIUA3 C++はこれで鼻から悪魔出るから
vector<int> hoge {0};
int& fuga = hoge[0];
for (size_t i = 0; i < 5; ++i) {
hoge.push_back(i);
}
cout << fuga;
}
nsafeがどうたらぬ気にしてRustはこういうのが防げるってだけでもそれなりの価値はある
ちなみにunsafeブロックは本当に慎重に作らないと、unsafeの外部をちょっといじっただけで鼻から悪魔が出たりする
https://doc.rust-jp.rs/rust-nomicon-ja/working-with-unsafe.html
unsafeブロック外のidx < arr.len()をidx <= arr.len()にしただけで死ぬ
vector<int> hoge {0};
int& fuga = hoge[0];
for (size_t i = 0; i < 5; ++i) {
hoge.push_back(i);
}
cout << fuga;
}
nsafeがどうたらぬ気にしてRustはこういうのが防げるってだけでもそれなりの価値はある
ちなみにunsafeブロックは本当に慎重に作らないと、unsafeの外部をちょっといじっただけで鼻から悪魔が出たりする
https://doc.rust-jp.rs/rust-nomicon-ja/working-with-unsafe.html
unsafeブロック外のidx < arr.len()をidx <= arr.len()にしただけで死ぬ
750デフォルトの名無しさん
2021/10/16(土) 03:36:57.11ID:I/G6evYm unsafeなコードが1行でもあったらRustで書く意味ないと主張する人が定期的に現れるのはなぜなのか
751デフォルトの名無しさん
2021/10/16(土) 03:54:24.52ID:0owCAudu >>750
C++が劣ることを認めたくない人が「unsafeがあるならC++と同じだからRustの存在意義はない。」という間違った主張をしてるみたい
C++が劣ることを認めたくない人が「unsafeがあるならC++と同じだからRustの存在意義はない。」という間違った主張をしてるみたい
752デフォルトの名無しさん
2021/10/16(土) 04:04:47.91ID:4kIP2zxZ C++との対決は別の専用スレがあるのでそっち使ってくださいね
753デフォルトの名無しさん
2021/10/16(土) 04:11:16.75ID:0owCAudu >>752
同感
C++な人はここでやらずに
向こうの専用スレでやってほしい
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
同感
C++な人はここでやらずに
向こうの専用スレでやってほしい
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
754いつもの光景
2021/10/16(土) 07:19:55.59ID:VQLpYdr0 Vec型の質問に高卒が答える
↓
当然の如く高卒がバカにされる
↓
高卒発狂
↓
パソコンがどうの、C++がどうの、いつもの大先生問答に発展
↓
当然の如く高卒がバカにされる
↓
高卒発狂
↓
パソコンがどうの、C++がどうの、いつもの大先生問答に発展
755デフォルトの名無しさん
2021/10/16(土) 09:07:15.06ID:GnSu5gfs756デフォルトの名無しさん
2021/10/16(土) 09:21:09.42ID:wH7tzS3T >>755
fugaがhogeのメモリ参照を取った後にhoge.push_back()でデータを追加している。
データ追加ではhogeの内部で確保していたメモリ領域が足りなくなると
新しいアドレスに確保しなおす(元の領域は開放する)ので、
fugaが指しているアドレスはアクセスしてはいけない領域になってる。(ダングリングポインタ)
その状態でcoutでfugaを使ってるから。
fugaがhogeのメモリ参照を取った後にhoge.push_back()でデータを追加している。
データ追加ではhogeの内部で確保していたメモリ領域が足りなくなると
新しいアドレスに確保しなおす(元の領域は開放する)ので、
fugaが指しているアドレスはアクセスしてはいけない領域になってる。(ダングリングポインタ)
その状態でcoutでfugaを使ってるから。
757デフォルトの名無しさん
2021/10/16(土) 09:48:04.61ID:GnSu5gfs758デフォルトの名無しさん
2021/10/16(土) 10:29:54.02ID:N8k1BZc2 unsafeなtraitとそうでない通常のtraitってどう違うんでしょうか
implにunsafeって書かないといけない点以外で
implにunsafeって書かないといけない点以外で
759デフォルトの名無しさん
2021/10/16(土) 12:13:05.40ID:MVC0A82Z バカは実際にバグが起きるかどうかを考えてなくて
バグを誰かのせいにできるかどうかしか考えてないんだろ。
だからこんなしょーもないものが持て囃されるってわけだ。
バグを誰かのせいにできるかどうかしか考えてないんだろ。
だからこんなしょーもないものが持て囃されるってわけだ。
760デフォルトの名無しさん
2021/10/16(土) 13:08:52.57ID:xy6guhnI 東アジア圏は原因の究明と再発防止より責任の追及と処罰を優先する文化だからな
気をつければ問題ないみたいな精神論が平気で唱えられるのも同様
システム工学先進国のアメリカあたりと比べたらかなり後れている
気をつければ問題ないみたいな精神論が平気で唱えられるのも同様
システム工学先進国のアメリカあたりと比べたらかなり後れている
761デフォルトの名無しさん
2021/10/16(土) 20:42:26.55ID:jYqji68p それは東アジア人の性質ってか東朝鮮の性質だろ(´・ω・`)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★12 [BFU★]
- 台湾有事での集団的自衛権行使に賛成48%、「反対」が44.2% [♪♪♪★]
- 中国・国連大使「日本側は反省せず、発言の撤回拒否」 書簡を国連事務総長に送る [♪♪♪★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★3 [蚤の市★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★13 [BFU★]
- 【NHK】受信料の未払い督促を10倍に強化… 支払い拒否が続くと民事手続きも 「カーナビも受信料いただきます」方針 [冬月記者★]
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap600
- 他サポ 2025-260
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1807
- 2025 SUPER FORMULA Lap18
- 京都競馬4回5日目エリザベス女王杯★3
- 福島競馬3回5日目
- 「暇空茜」名乗る男性、神奈川県警が追送検 投稿サイトで大学生侮辱の疑い😲 [861717324]
- 日本人の48%覚悟完了… [819729701]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪 ★4
- 小野田大臣「それ正式なデータですか?報道ベースですよね」(10万いいね) [237216734]
- 女の子、プチ整形で垢抜けまくってしまうwwwwwwwwwwwwwwwwwwwwwwww [329329848]
- 国民「コメが高くて買えないの助けて!」米卸「コメが高くて売れないの助けて!」農水相「価格はマーケット決めるものです🥴」 [817260143]
