公式
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
643デフォルトの名無しさん
2021/10/11(月) 20:38:32.88ID:oB6cAYFd クイズ: この中にウソはいくつウソがある?
「またはtypescriptのtype Tree = Leaf | Nodeはサポートされません」
「rustはどちらかと言えばほとんどをトレイトで表現しますが、技術的にはこれらは、Tagged unionと呼ばれ 昔はSum typeともバリアント型とも呼ばれていました。」
「rustは可変参照を基本的に好まないスタイルだから、ああなるのは仕方ないな」
「Vecがスマートポインタってデタラメ広めてる奴らどこが出処だよ。 」
「またはtypescriptのtype Tree = Leaf | Nodeはサポートされません」
「rustはどちらかと言えばほとんどをトレイトで表現しますが、技術的にはこれらは、Tagged unionと呼ばれ 昔はSum typeともバリアント型とも呼ばれていました。」
「rustは可変参照を基本的に好まないスタイルだから、ああなるのは仕方ないな」
「Vecがスマートポインタってデタラメ広めてる奴らどこが出処だよ。 」
644デフォルトの名無しさん
2021/10/11(月) 23:52:58.48ID:FfJkoMsS >>633
pub struct Vec<略> {
buf: RawVec<T, A>,
len: usize,
}
pub struct RawVec<略> {
ptr: Unique<T>,
cap: usize,
alloc: A,
}
pub struct Unique<T: ?Sized> {
pointer: *const T,
_marker: PhantomData<T>,
}
push|insertの際にlen|capとアロケート先が変化するという事、上のは難しい事をわざと言ってる
スマートポインタ議論は無視でOK。しかしPhantomDataなんて理解してる人に会ったことない
pub struct Vec<略> {
buf: RawVec<T, A>,
len: usize,
}
pub struct RawVec<略> {
ptr: Unique<T>,
cap: usize,
alloc: A,
}
pub struct Unique<T: ?Sized> {
pointer: *const T,
_marker: PhantomData<T>,
}
push|insertの際にlen|capとアロケート先が変化するという事、上のは難しい事をわざと言ってる
スマートポインタ議論は無視でOK。しかしPhantomDataなんて理解してる人に会ったことない
645デフォルトの名無しさん
2021/10/11(月) 23:58:39.10ID:ATb6fs5R >>631
その冪剰余関数の引数は全て数値すなわちCopy traitを持つので
関数呼び出しに参照を渡す必要はありません
また、可変参照の数値を渡す必要がある別の関数がもしあったとしても
普通に値を渡して変更値は返り値とする方がわかりやすいでしょう
その冪剰余関数の引数は全て数値すなわちCopy traitを持つので
関数呼び出しに参照を渡す必要はありません
また、可変参照の数値を渡す必要がある別の関数がもしあったとしても
普通に値を渡して変更値は返り値とする方がわかりやすいでしょう
646デフォルトの名無しさん
2021/10/12(火) 02:02:02.32ID:yPuGDG3+ >スマートポインタ議論は無視でOK。
他人のフリして我がフリ直せww
他人のフリして我がフリ直せww
647デフォルトの名無しさん
2021/10/12(火) 02:33:26.85ID:1W2DSIiH >>633
初級者ならばこのスレで言及されている内部実装の話は知らずとも使えるので無視してもよい
それよりもmutableとimmutableの意味となぜ区別が必要かを理解したほうがいい
あと参照の意味も理解していないようだからそこもまず基本だからおさえるべき
それら基本を理解すればVecの中身が書き換わるならばmut指定が必要とわかるはず
Rustは簡素に理解しやすく出来ているのに他言語のポインタ周辺の概念を無駄に持ち出してきて難しく考えて失敗する人たちが一部いる
初級者ならばこのスレで言及されている内部実装の話は知らずとも使えるので無視してもよい
それよりもmutableとimmutableの意味となぜ区別が必要かを理解したほうがいい
あと参照の意味も理解していないようだからそこもまず基本だからおさえるべき
それら基本を理解すればVecの中身が書き換わるならばmut指定が必要とわかるはず
Rustは簡素に理解しやすく出来ているのに他言語のポインタ周辺の概念を無駄に持ち出してきて難しく考えて失敗する人たちが一部いる
648デフォルトの名無しさん
2021/10/12(火) 07:19:09.45ID:SacTrMIO これが基本を理解してないと指摘されたやつのレスw
649デフォルトの名無しさん
2021/10/12(火) 08:17:13.13ID:FR/wdn5M Rusterは他人を同一人物と思い込む素性の悪い病人しか居ないな
650633
2021/10/12(火) 08:42:15.75ID:5WgWwJH0 初心者丸出しの質問で、なんでこうなった・・・・・
651デフォルトの名無しさん
2021/10/12(火) 10:28:07.94ID:XIKPR8ou652デフォルトの名無しさん
2021/10/12(火) 10:28:20.90ID:h0zcLGc7 このスレにはアンチRustのC++爺さんと
間違った知識を上から目線でレスするRust初心者が各1名住み着いてるから
質問者は回答内容を自分で精査しないとダメだよ
特に後者はタチが悪いので注意して
間違った知識を上から目線でレスするRust初心者が各1名住み着いてるから
質問者は回答内容を自分で精査しないとダメだよ
特に後者はタチが悪いので注意して
653デフォルトの名無しさん
2021/10/12(火) 10:37:06.05ID:BYAG38Ke Rustに近々追加される機能で熱いものなにかありますか?
654デフォルトの名無しさん
2021/10/12(火) 10:43:27.65ID:Br1er+Qs Rustに関する質問はteratailで
655デフォルトの名無しさん
2021/10/12(火) 10:55:07.59ID:aJ9lzwpY 現時点でRustなんかどうでもいい
10年後に普及してたら一般プログラマーも使う程度
10年後に普及してたら一般プログラマーも使う程度
656デフォルトの名無しさん
2021/10/12(火) 11:09:47.63ID:Br1er+Qs657デフォルトの名無しさん
2021/10/12(火) 11:23:31.59ID:lRrdrCP9 >>650
mutの必要有無は他言語では一般的じゃないRustのルールに関連してるんだけど
それが少し難しいので回答する側にもそのルールを理解してない人がそれなりにいるということ
基本的にコンパイラが教えてくれるので深く理解してなくても使う分にはそこまで問題にはならない
mutの必要有無は他言語では一般的じゃないRustのルールに関連してるんだけど
それが少し難しいので回答する側にもそのルールを理解してない人がそれなりにいるということ
基本的にコンパイラが教えてくれるので深く理解してなくても使う分にはそこまで問題にはならない
658デフォルトの名無しさん
2021/10/12(火) 12:59:59.43ID:dsnSo1To Rustを知るということは、弱点も知ることにつながる
659デフォルトの名無しさん
2021/10/12(火) 13:01:46.79ID:k+FFNiZ5 vlangもmutがあるが散々否定される、曰く「理論に沿ったコンピューター工学を元にしてない」だとか
「トランスコンパイラでしょ」とか、NoGCが過大広告でLobsterというのは分かるがリークするでしょとか
「トランスコンパイラでしょ」とか、NoGCが過大広告でLobsterというのは分かるがリークするでしょとか
660デフォルトの名無しさん
2021/10/12(火) 13:21:05.00ID:WmCYyvpu async/awaitの追加で一旦大きな機能追加目標は終わって、以降は処理系の効率化にリソースを割いていく、みたいな話を読んだ気がする
661デフォルトの名無しさん
2021/10/12(火) 13:54:32.71ID:fJneTy5r 結局他の言語でのメモリモデルも理解してないとrustはまともに使えんよ。
そこを誤魔化すやつはクソだわ。
そこを誤魔化すやつはクソだわ。
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使ってる標準ライブラリを信頼しない話おもしろいね。
実際に問題なく動いてるんだから仕様を信頼すればいいのに。
実際に問題なく動いてるんだから仕様を信頼すればいいのに。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【子ども・子育て支援金】来年4月から徴収、月収50万円なら月600円程度…健保連試算 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★4 [ぐれ★]
- 「加熱式たばこ」の受動喫煙、「紙巻き」同様の対策強化を検討へ…厚労省の専門委が議論スタート [蚤の市★]
- 【札幌】「アニメのキャラのまねをするためだった」上半身はダウンジャケット・下半身はスッポンポン…43歳無職の男を逮捕 [nita★]
- 熊恐れ外出控え、飲食店苦慮 秋田、盛岡で売り上げ半減 「コロナ禍並みの状況」 [蚤の市★]
- 【芸能】篠田麻里子「水戸黄門」のオフショット公開!「くの一姿が可愛い」「うっひゃー」「スケさんカクさんが羨ましい!」 [湛然★]
- 【動画】メンヘラ女子、自殺 [856698234]
- 10年振りにマックナゲット食べてるんやが
- 竹中平蔵氏、万博を批判していた人たちにチクリ「反省の弁聞きたい」 [686538148]
- 「加熱式たばこ」、「紙巻き」同様の対策強化を検討へ…厚労省の専門委が議論スタート [668970678]
- 【速報】高市、今度はロシアに喧嘩を売る [329271814]
- 【速報】高市早苗、G20サミット”社長出勤” [614650719]
