「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
前スレ: 結局C++とRustってどっちが良いの? 2traits
https://mevius.5ch.net/test/read.cgi/tech/1680363777/
関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
探検
結局C++とRustってどっちが良いの? 3traits
■ このスレッドは過去ログ倉庫に格納されています
2023/05/04(木) 07:49:56.33ID:z+qB+AKQ
2023/05/04(木) 14:12:15.32ID:AmdlArlq
板のルールが理解できない、プログラムがロクに書けない人たちのスレ
>>1死んどけ荒らしのクズ
>>1死んどけ荒らしのクズ
3デフォルトの名無しさん
2023/05/04(木) 14:13:35.45ID:K35qCUKZ あらゆるところに関所がある
まるで江戸時代だ
裏山に抜け道を見付けて分け入っても
突然藪から棒に番人が現れる
ところがそんな番人も
unsafe印籠を魅せれば一撃で退散だ
unsafe万歳!!!
こんなことなら最初から
表通りでunsafe印籠を出しておけば良かったんだ
きっと番人たちも思っているはず
さっさと最初からunsafe印籠魅せやがれ
無駄な手間取らせやがって
こんなのがエコシステムとか失笑もの
まるで江戸時代だ
裏山に抜け道を見付けて分け入っても
突然藪から棒に番人が現れる
ところがそんな番人も
unsafe印籠を魅せれば一撃で退散だ
unsafe万歳!!!
こんなことなら最初から
表通りでunsafe印籠を出しておけば良かったんだ
きっと番人たちも思っているはず
さっさと最初からunsafe印籠魅せやがれ
無駄な手間取らせやがって
こんなのがエコシステムとか失笑もの
2023/05/04(木) 14:18:13.51ID:K35qCUKZ
ここの説明だと
https://keens.github.io/blog/2018/12/08/rustnomoju_runotsukaikata_2018_editionhan/
lib.rs も main.rs も共存出来る様な描きっぷりだなぁ
今の Rust だと許さないゎょ
まあ2018だし
https://keens.github.io/blog/2018/12/08/rustnomoju_runotsukaikata_2018_editionhan/
lib.rs も main.rs も共存出来る様な描きっぷりだなぁ
今の Rust だと許さないゎょ
まあ2018だし
2023/05/04(木) 14:39:58.15ID:Pbw0n2Gt
=== 複製おじさん(通称複おじ)について ===
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。
Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。
しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。
ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。
Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。
しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。
ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
2023/05/04(木) 14:42:23.03ID:lCXaYfHw
Fooという型だけを別ファイルfoo.rsへ移してファイルを分けたくなったとする
もちろんそれは可能だが二つの方針に分かれる
その1
pub mod foo;
とする
つまり単にmod foo;とするのではなくpubを付けることで利用者がfooにアクセスできるようになる
さらにfoo.rsでFooにもpubが付いていれば
利用者はfoo::Fooまたは クレート名::foo::Fooという形で利用できる
その2
mod foo;
pub use foo::Foo;
とする
つまりfooは公開しない
しかしFooは公開したいのでfooの下ではなくトップでFooを公開する
この場もfoo.rsでFooにpubは必要
利用者はfoo::を付けずにFooまたは クレート名::Fooという形で利用できる
ようするにファイルを分けたときに
分けた形で公開するならその1
分けたことを隠蔽して公開するならその2
もちろんそれは可能だが二つの方針に分かれる
その1
pub mod foo;
とする
つまり単にmod foo;とするのではなくpubを付けることで利用者がfooにアクセスできるようになる
さらにfoo.rsでFooにもpubが付いていれば
利用者はfoo::Fooまたは クレート名::foo::Fooという形で利用できる
その2
mod foo;
pub use foo::Foo;
とする
つまりfooは公開しない
しかしFooは公開したいのでfooの下ではなくトップでFooを公開する
この場もfoo.rsでFooにpubは必要
利用者はfoo::を付けずにFooまたは クレート名::Fooという形で利用できる
ようするにファイルを分けたときに
分けた形で公開するならその1
分けたことを隠蔽して公開するならその2
2023/05/04(木) 14:50:46.28ID:MjER2/nN
2023/05/04(木) 14:53:45.65ID:lCXaYfHw
さらに型Fooのイテレータだけ別ファイルiter.rsに分けたくなったとする
その時はfoo/iter.rsというファイルにする
そしてfoo.rsの中でmod iter;とすればよい
分けたことを隠蔽するか公開するか>>6と同じ方針で望む
もし公開するならfoo::iter::Iterのようにパスが長くなる
それをメリットかデメリットかで決めればよい
その時はfoo/iter.rsというファイルにする
そしてfoo.rsの中でmod iter;とすればよい
分けたことを隠蔽するか公開するか>>6と同じ方針で望む
もし公開するならfoo::iter::Iterのようにパスが長くなる
それをメリットかデメリットかで決めればよい
9デフォルトの名無しさん
2023/05/04(木) 15:08:27.50ID:BxJFarE7 >>4
今も同じように共存できるよ
今も同じように共存できるよ
2023/05/04(木) 15:23:13.86ID:lCXaYfHw
次に>>6とは全く逆
ファイルを分けたくないけど
foo::Fooという形で公開したい時
その場合は
pub mod foo {
ここにFooの定義など
}
とすればよい
ファイルfoo.rsに分けたときと同じにできる
つまり
ファイルを分けるか分けないか
公開パスを分けるか分けないか
任意の組み合わせで自由に可能
ファイルを分けたくないけど
foo::Fooという形で公開したい時
その場合は
pub mod foo {
ここにFooの定義など
}
とすればよい
ファイルfoo.rsに分けたときと同じにできる
つまり
ファイルを分けるか分けないか
公開パスを分けるか分けないか
任意の組み合わせで自由に可能
2023/05/04(木) 15:23:20.04ID:vi1eEsAo
2023/05/04(木) 15:35:48.42ID:c9bfGq1+
かの御仁、ディスパッチのことになるとずいぶん熱くなってたよなあ
継承を廃止するのに必要だったからってわけだったみたいね
継承を廃止するのに必要だったからってわけだったみたいね
2023/05/04(木) 15:59:17.58ID:lCXaYfHw
さらに5つ目の方法
ファイルは分けなくて
mod foo{...}という形でfooは分けるけど
そのfooは見せない!
と一見すると矛盾した方針がある
その場合は>>6と>>10からのご推測の通り
mod foo {
ここにFooの定義など
}
pub use foo::Foo;
とすればよい
利用者は直接Fooまたはクレート名::Fooとして使える
しかしそれならば
mod foo{...}を使わずにそのまま直接Fooの定義を書いたのと同じじゃないか!
との疑問が湧く
ほぼその通りだが
この方法によりmod foo{...}の中は名前空間が分離されているため
他とのコードの分離もしっかりできる
もし外部との結合があれば
mod foo{...}の中で改めてその使用宣言が必要になる
逆に外部から使われるものはpub宣言が必要となる
mod foo{...}の中に敢えて入れることでそれら他との関係が明示させられる
つまりまとめると3つの自由度がある
・mod fooとして分けるかどうか
・それをfoo.rsとしてファイルに分けるかどうか
・そのfooを外部に見せるか隠蔽するか
それらを多段foo::bar::bazそれぞれ含めて自由に決めればよい
ファイルは分けなくて
mod foo{...}という形でfooは分けるけど
そのfooは見せない!
と一見すると矛盾した方針がある
その場合は>>6と>>10からのご推測の通り
mod foo {
ここにFooの定義など
}
pub use foo::Foo;
とすればよい
利用者は直接Fooまたはクレート名::Fooとして使える
しかしそれならば
mod foo{...}を使わずにそのまま直接Fooの定義を書いたのと同じじゃないか!
との疑問が湧く
ほぼその通りだが
この方法によりmod foo{...}の中は名前空間が分離されているため
他とのコードの分離もしっかりできる
もし外部との結合があれば
mod foo{...}の中で改めてその使用宣言が必要になる
逆に外部から使われるものはpub宣言が必要となる
mod foo{...}の中に敢えて入れることでそれら他との関係が明示させられる
つまりまとめると3つの自由度がある
・mod fooとして分けるかどうか
・それをfoo.rsとしてファイルに分けるかどうか
・そのfooを外部に見せるか隠蔽するか
それらを多段foo::bar::bazそれぞれ含めて自由に決めればよい
2023/05/04(木) 16:03:32.18ID:VOb3FI4m
Rustの用語に「名前空間」なんてあるの?
2023/05/04(木) 16:04:11.41ID:8veAOVw8
あるよ
2023/05/04(木) 16:09:29.50ID:lCXaYfHw
2023/05/04(木) 16:21:16.61ID:gs6nMm59
この話興味ない人は今のうちにCpp2見とくと良いよ(思ってたより動きが早い)
https://herbsutter.com/2023/04/30/cppfront-spring-update/
Carbonと違ってこっちは動かせるしC++へのバックポートを視野に入れているから
結果的にRustの立ち位置に影響する
細かいところだと、この辺、Zigに通じるものがある
https://github.com/hsutter/cppfront/wiki/Design-note:-Postfix-operators
https://i.imgur.com/bkjsYG4.png
unsafe印籠(monolithic hammer)は否定してる
https://github.com/hsutter/cppfront/wiki/Design-note:-Unsafe-code
https://herbsutter.com/2023/04/30/cppfront-spring-update/
Carbonと違ってこっちは動かせるしC++へのバックポートを視野に入れているから
結果的にRustの立ち位置に影響する
細かいところだと、この辺、Zigに通じるものがある
https://github.com/hsutter/cppfront/wiki/Design-note:-Postfix-operators
https://i.imgur.com/bkjsYG4.png
unsafe印籠(monolithic hammer)は否定してる
https://github.com/hsutter/cppfront/wiki/Design-note:-Unsafe-code
2023/05/04(木) 16:21:47.50ID:K35qCUKZ
ほとんどのmoduleは
自分の今のprojectから分離して別のcrateに移動しても
module内のpub関数はuse cratename;すればそのまま変更無しで参照出来るが
module内のmacroはuse cratename;するだけでは参照出来ない
#[macro_export] だけでは不十分でmoduleに
pub use macroname;
を書き足す必要がある
自分の今のprojectから分離して別のcrateに移動しても
module内のpub関数はuse cratename;すればそのまま変更無しで参照出来るが
module内のmacroはuse cratename;するだけでは参照出来ない
#[macro_export] だけでは不十分でmoduleに
pub use macroname;
を書き足す必要がある
2023/05/04(木) 16:22:57.02ID:K35qCUKZ
2023/05/04(木) 17:29:00.42ID:5uLSpcuJ
ITの世界は短期決戦の世界。知名度がこんなに上がってるのに使用者数が1%未満
のRustには一般言語にまで普及する可能性はほぼ無い。
のRustには一般言語にまで普及する可能性はほぼ無い。
2023/05/04(木) 17:31:09.86ID:5uLSpcuJ
今までの蓄積ではなく、新しく書かれているコードの量ですら1%未満であることの
意味は、絶対に普及しない路線に入っていると言うことだ。
意味は、絶対に普及しない路線に入っていると言うことだ。
2023/05/04(木) 17:38:32.86ID:5uLSpcuJ
商品が売れない原因の9割は知名度不足だと言われているが、Rustは既に最高レベル
の知名度になった。なのに「売れてない」。それは商品自体に問題があると考え
なければならない。俺はRustが嫌いなので、それでいいと思っているが。
の知名度になった。なのに「売れてない」。それは商品自体に問題があると考え
なければならない。俺はRustが嫌いなので、それでいいと思っているが。
2023/05/04(木) 17:48:43.01ID:/QrENRCq
結論としてはRustはC++に比べるとファイル分轄が非常にめんどくさいと言うことだな
ルールが複雑でめんどくさい
言語仕様なのかcargoの仕様なのかしらないけどフォルダ構造が縛られるし…
ルールが複雑でめんどくさい
言語仕様なのかcargoの仕様なのかしらないけどフォルダ構造が縛られるし…
2023/05/04(木) 17:52:33.78ID:/QrENRCq
よくわからんけど自分でstruct沢山作ってcore/modelフォルダ作ってそこに全部突っ込んでフラットに使おうとすると障害があると
implをcore/implに突っ込もうとしても問題があると
それかそれを参照する何かを別に作らないといけないと
自由度が低い
implをcore/implに突っ込もうとしても問題があると
それかそれを参照する何かを別に作らないといけないと
自由度が低い
25デフォルトの名無しさん
2023/05/04(木) 17:56:09.35ID:jCd1Wte6 いやーさすがにC++に比べたらRustのが超シンプルなのでわかりやすい
C++のモジュール知っててRustのモジュールを理解出来ない人はいないと思う
C++のモジュール知っててRustのモジュールを理解出来ない人はいないと思う
26デフォルトの名無しさん
2023/05/04(木) 17:58:28.21ID:agWF6Rws >>24
障害?
障害?
27デフォルトの名無しさん
2023/05/04(木) 18:03:56.15ID:gkHxEYi2 /struct、/impl、/traitみたいな分け方をしたかったのかぁ
できなくはないけどやめといたほうがいいんじゃないか
できなくはないけどやめといたほうがいいんじゃないか
2023/05/04(木) 18:06:55.48ID:/QrENRCq
したいんじゃなくてそれは仮に書いただけ
自由度が低いと言うことを示したかっただけ
ファイル名やフォルダ名が縛られたり
なんで自由度が低いのに顔を真っ赤にして自由度が高いと書くのか不明なんだけど
自由度が低いと言うことを示したかっただけ
ファイル名やフォルダ名が縛られたり
なんで自由度が低いのに顔を真っ赤にして自由度が高いと書くのか不明なんだけど
2023/05/04(木) 18:12:40.50ID:JNVfsZ/B
>>25
C++は至ってシンプルやろ?
C++は至ってシンプルやろ?
30ななし
2023/05/04(木) 18:16:37.43ID:hLXsMKYH Javaしかやったことない
C++っていいの?
C++っていいの?
2023/05/04(木) 18:16:44.50ID:VOb3FI4m
既存のC++のプロジェクトに書き足していくかたちでCargoとかが使われてるんだろ?
C/C++の作法に併せたRustのフォルダ構成の裏ルールがあるとしか思えない
C/C++の作法に併せたRustのフォルダ構成の裏ルールがあるとしか思えない
2023/05/04(木) 18:21:23.60ID:BxJFarE7
モジュール名とファイル名(パス)は↓みたいな書き方で一応切り離せるよ
ややこしくなるから基本使わないけど
#[path="platform/foo_windows.rs"]
mod foo;
自由度が高いってのはたぶん外面を維持したまま内装を変更しやすいって意味で使ってたと思う
(長文だったからちゃんと読んでない)
モジュールの構成は可視性に関わるからそこまで自由ではないと思う
全部にpubつければ自由になるけどそんな自由はいらない
ややこしくなるから基本使わないけど
#[path="platform/foo_windows.rs"]
mod foo;
自由度が高いってのはたぶん外面を維持したまま内装を変更しやすいって意味で使ってたと思う
(長文だったからちゃんと読んでない)
モジュールの構成は可視性に関わるからそこまで自由ではないと思う
全部にpubつければ自由になるけどそんな自由はいらない
2023/05/04(木) 18:34:14.75ID:/QrENRCq
自分が使ってる中ではC#が一番自由度が高い気がする
classの分割自由
名前空間の分割自由
プロジェクト内ではフォルダ空間自由
ファイル名自由
classの分割自由
名前空間の分割自由
プロジェクト内ではフォルダ空間自由
ファイル名自由
2023/05/04(木) 18:38:46.37ID:/QrENRCq
global usingと言うものが出来て各ファイルでusingもしなくて良くなった
これはいらない機能だと思うけど
これはいらない機能だと思うけど
2023/05/04(木) 18:42:44.88ID:BxJFarE7
C#はまじめに使ったことないけど拡張メソッドとかいうのが自由すぎて若干引いた記憶がある
どこで何を足されるか分からない恐怖を感じた
どこで何を足されるか分からない恐怖を感じた
2023/05/04(木) 18:48:25.91ID:/QrENRCq
プロジェクト内のファイル位置も当然自由
一ファイルに複数の名前空間含めるのも自由
一ファイルに複数の名前空間含めるのも自由
2023/05/04(木) 19:14:36.30ID:/QrENRCq
Rustがなぜファイル名やフォルダ名でモジュール固定になってるかと言えば
それしかモジュール位置を決定する仕組みがないから
ルートのコードからたどれる物しか名前を解決できないから
それが良くないんじゃないの?
>>35
既存のクラスすべてで必ず拡張されるわけじゃない
本当は拡張などしてなくてただのstaticメソッドだし
どこかそれを他で使われていてもそれをusingしなければ使えないから関係ない
usingしててもpublicじゃなければ見えないので影響はない
それしかモジュール位置を決定する仕組みがないから
ルートのコードからたどれる物しか名前を解決できないから
それが良くないんじゃないの?
>>35
既存のクラスすべてで必ず拡張されるわけじゃない
本当は拡張などしてなくてただのstaticメソッドだし
どこかそれを他で使われていてもそれをusingしなければ使えないから関係ない
usingしててもpublicじゃなければ見えないので影響はない
2023/05/04(木) 19:37:12.64ID:Zob+4ecH
proc_macro で黒魔術やりたい放題出来る様になりますた
おまいらのお蔭です本当にありがとうございますた
っていうか proc_macro::TokenStream と proc_macro2::TokenStream と
同時に使うと違うと判ってても混乱するな
おまいらのお蔭です本当にありがとうございますた
っていうか proc_macro::TokenStream と proc_macro2::TokenStream と
同時に使うと違うと判ってても混乱するな
2023/05/04(木) 19:41:38.84ID:Zob+4ecH
2023/05/04(木) 20:43:05.13ID:BxJFarE7
一応Rustのimplは型(trait)を定義したクレート内に制限かけてるけどそれでも気になる人はいるか
自由な場所で定義を足せるとどうしても散らかりやすくなる
自由な場所で定義を足せるとどうしても散らかりやすくなる
2023/05/04(木) 21:36:06.92ID:Zob+4ecH
>>38
---- lib.rs 側 ----
use proc_macro::TokenStream;
use proc_macro2::TokenStream as PM2TS;
(略)
#[proc_macro]
pub fn mk_ts(_item: TokenStream) -> TokenStream {
let mut ts: PM2TS = PM2TS::new();
Ident::new("let", Span::call_site()).to_tokens(&mut ts);
Ident::new("x", Span::call_site()).to_tokens(&mut ts);
Punct::new('=', Spacing::Alone).to_tokens(&mut ts);
Literal::u8_suffixed(255u8).to_tokens(&mut ts);
Punct::new(';', Spacing::Alone).to_tokens(&mut ts);
ts.into()
}
---- main.rs 側 ----
fn main() {
mk_ts();
println!("{}", x);
}
これで実行は出来たけど TokenStream がぶつかってるのが気に入らない
---- lib.rs 側 ----
use proc_macro::TokenStream;
use proc_macro2::TokenStream as PM2TS;
(略)
#[proc_macro]
pub fn mk_ts(_item: TokenStream) -> TokenStream {
let mut ts: PM2TS = PM2TS::new();
Ident::new("let", Span::call_site()).to_tokens(&mut ts);
Ident::new("x", Span::call_site()).to_tokens(&mut ts);
Punct::new('=', Spacing::Alone).to_tokens(&mut ts);
Literal::u8_suffixed(255u8).to_tokens(&mut ts);
Punct::new(';', Spacing::Alone).to_tokens(&mut ts);
ts.into()
}
---- main.rs 側 ----
fn main() {
mk_ts();
println!("{}", x);
}
これで実行は出来たけど TokenStream がぶつかってるのが気に入らない
2023/05/04(木) 21:37:41.16ID:Zob+4ecH
main.rs の方は
mk_ts!(); だった
mk_ts!(); だった
2023/05/05(金) 01:53:22.17ID:eU2UcLD5
2023/05/05(金) 01:56:43.74ID:ebreeR6p
全く違うんだが 現状は C からの置換を目指さなきゃいけない
その辺りが フォルダ構成にも反映されてしまっている
当然だが マッチの箇所は プロログなどの方が近い
その辺りが フォルダ構成にも反映されてしまっている
当然だが マッチの箇所は プロログなどの方が近い
2023/05/05(金) 02:10:01.68ID:ebreeR6p
現にデコンストラクトによるパターンマッチはlispかhaskelくらいでしか見かけない
2023/05/05(金) 02:29:13.44ID:iwKPqxU+
似てたら置き換えやすいけど、置き換える意味も薄まりそうだけどな
2023/05/05(金) 04:24:21.70ID:eU2UcLD5
「みんなが使ってないものが使いたい」という心理を持っている人が一定数いて、
Rustはそういう人に受けてる可能性もある。
Rustはそういう人に受けてる可能性もある。
2023/05/05(金) 05:02:21.75ID:0gcLuV9I
Microsoft「Windows 11がまもなくカーネル内でRustを用いて起動」
https://www.neowin.net/news/senior-microsoft-exec-says-windows-11-kernel-will-soon-be-booting-with-rust-inside/
BlueHat IL 2023 カンファレンスにおいて、マイクロソフトのエンタープライズおよび OS セキュリティ担当バイス プレジデントである David Weston が登壇し、
Windows セキュリティの進化について話し合い、最新の進歩と今後の道のりについての洞察を講演しました。
プレゼンテーションの中でWeston氏は、MicrosoftがWindowsカーネルの一部としてRustを使用して行ってきた進歩について説明しました。
いくつかの理由でこの言語に興味を持っており、そのうちの11つはRustが提供するメモリの安全性とセキュリティを中心にしています。
Weston氏は次のように述べています。
「おそらく今後数週間または数か月以内に、カーネルでRustを使用してWindowsが実際に起動することになりますが、これは本当にクールです。
ここでの基本的な目標は、これらの内部C ++データ型のいくつかをRustの同等のデータ型に変換することでした。」
https://www.neowin.net/news/senior-microsoft-exec-says-windows-11-kernel-will-soon-be-booting-with-rust-inside/
BlueHat IL 2023 カンファレンスにおいて、マイクロソフトのエンタープライズおよび OS セキュリティ担当バイス プレジデントである David Weston が登壇し、
Windows セキュリティの進化について話し合い、最新の進歩と今後の道のりについての洞察を講演しました。
プレゼンテーションの中でWeston氏は、MicrosoftがWindowsカーネルの一部としてRustを使用して行ってきた進歩について説明しました。
いくつかの理由でこの言語に興味を持っており、そのうちの11つはRustが提供するメモリの安全性とセキュリティを中心にしています。
Weston氏は次のように述べています。
「おそらく今後数週間または数か月以内に、カーネルでRustを使用してWindowsが実際に起動することになりますが、これは本当にクールです。
ここでの基本的な目標は、これらの内部C ++データ型のいくつかをRustの同等のデータ型に変換することでした。」
2023/05/05(金) 05:36:12.75ID:qNdmxTVk
前スレにも書いたけど、ブートローダってDOSアプリみたいなもんで、劇的に画期的じゃないんだよ
APIが早くRust化してほしい そうすれば、C++も恩恵を受ける
APIが早くRust化してほしい そうすれば、C++も恩恵を受ける
2023/05/05(金) 06:12:56.25ID:EdqaEPwW
マイクロソフトがわざわざC++を捨ててまでRustを採用するとはよっぽどのことだよな
Linuxの方は元からC++さえ排除してC言語だけの純血主義だったのにRustを採用し始めてる
Linuxの方は元からC++さえ排除してC言語だけの純血主義だったのにRustを採用し始めてる
2023/05/05(金) 06:30:56.10ID:EdqaEPwW
>>49
記事を読んだがブートローダーなんて書かれてなかった
Rustを使った場合のWindows OSのパフォーマンス比較でOffice apps使用の場合が出てくるからブートローダーの話ではないね
記事を読んだがブートローダーなんて書かれてなかった
Rustを使った場合のWindows OSのパフォーマンス比較でOffice apps使用の場合が出てくるからブートローダーの話ではないね
2023/05/05(金) 06:37:43.26ID:yAiikMv0
昔、マイクロソフトはわざわざJAVAを捨ててJ++を開発したんだよなあ
2023/05/05(金) 06:58:16.61ID:4d5P5zld
これまで多数の言語が登場したけど求められてる条件はたった二つだけ
「C/C++と同等のパフォーマンスが出ること」
「C/C++の各種安全性の問題が解決されていること」
Rustが最初で唯一の言語
「C/C++と同等のパフォーマンスが出ること」
「C/C++の各種安全性の問題が解決されていること」
Rustが最初で唯一の言語
2023/05/05(金) 08:25:55.79ID:tbrjl4OG
>>53
どこの異世界にすんでるんだ?
どこの異世界にすんでるんだ?
2023/05/05(金) 08:50:30.82ID:hIDnL8bT
2023/05/05(金) 09:46:15.52ID:whzNuXwL
Rust以外でGC採用せずにメモリやリソースの後始末をちゃんとしてくれるよう設計された言語って何があるの?
57デフォルトの名無しさん
2023/05/05(金) 10:06:18.39ID:kHrmJumu お! GC君だ(この人が複製おじさん?)
GC君は他人のことを初心者呼ばわりするけど
技術的な話が全くできないんだよなぁ...
GC君は他人のことを初心者呼ばわりするけど
技術的な話が全くできないんだよなぁ...
58デフォルトの名無しさん
2023/05/05(金) 10:21:16.98ID:kHrmJumu >>50
$ tar xJf linux-6.3.1.tar.xz
$ find linux-6.3.1 -name *.c -o -name *.h | wc -l
55806
$ find linux-6.3.1 -name *.rs | wc -l
38
0.07%未満! 前回v6.2.1のとき37だったから1ファイルは増えてるね
何が増えたかは
$ diff -uNr <(cd linux-6.2.1; find . -name *.rs) <(cd linux-6.3.1; find . -name *.rs)
$ tar xJf linux-6.3.1.tar.xz
$ find linux-6.3.1 -name *.c -o -name *.h | wc -l
55806
$ find linux-6.3.1 -name *.rs | wc -l
38
0.07%未満! 前回v6.2.1のとき37だったから1ファイルは増えてるね
何が増えたかは
$ diff -uNr <(cd linux-6.2.1; find . -name *.rs) <(cd linux-6.3.1; find . -name *.rs)
2023/05/05(金) 10:43:09.36ID:5yMxjojq
2023/05/05(金) 10:47:34.91ID:/B4W1iLS
Rustはメモリリークには割と寛容なんだよね
野生の参照(ダングリングポインタ)は目の敵にするけど
野生の参照(ダングリングポインタ)は目の敵にするけど
2023/05/05(金) 10:52:02.55ID:rN2P+U1s
62デフォルトの名無しさん
2023/05/05(金) 11:08:39.58ID:nhdCkkeF2023/05/05(金) 11:27:48.85ID:i1pozoob
>>56
Nim
Nim
2023/05/05(金) 11:29:46.84ID:i1pozoob
>>60
ヒモさえ付いてれば無駄遣いしてもOKみたいな
ヒモさえ付いてれば無駄遣いしてもOKみたいな
2023/05/05(金) 11:58:16.34ID:kHrmJumu
RustってNimに対して何か優位なところはあるの?
2023/05/05(金) 12:01:00.00ID:1hHdixRp
2023/05/05(金) 12:15:37.38ID:t/UudqdO
2023/05/05(金) 12:17:42.38ID:0uwn+ADY
Nimはnilが存在していてヌル安全ですらない
69デフォルトの名無しさん
2023/05/05(金) 12:18:25.68ID:O7pFd4FM 基本GCでも充分な性能が出れば別にいいよ
最適化が必要なところだけ手動でやるのはRustも同じだから
手動ライフタイム管理とのトレードオフ
最適化が必要なところだけ手動でやるのはRustも同じだから
手動ライフタイム管理とのトレードオフ
2023/05/05(金) 12:22:56.73ID:kk7gdR4M
2023/05/05(金) 12:28:44.39ID:t/UudqdO
>>56
Factorかね。
Factorかね。
2023/05/05(金) 12:37:44.37ID:A/rFKldr
FactorはForthとLispの子みたいな動的型付け言語
ガベージコレクションあり
ガベージコレクションあり
2023/05/05(金) 16:12:43.08ID:UEq66Q3K
GCの有無は指標になるけど、現状のC++の、なんでもかんでもヒープに置く習慣は、
GCとそんなかわらないんじゃ…と思わなくもなかったり
GCとそんなかわらないんじゃ…と思わなくもなかったり
74デフォルトの名無しさん
2023/05/05(金) 16:21:47.02ID:ugKRRbai C++はコンパクションが行えないので、GC付きのJavaのほうが速いのです
って言ってなかった?
って言ってなかった?
2023/05/05(金) 17:13:23.83ID:/B4W1iLS
感覚的にはプリミティブでない単純なデータ(xyz座標とか)の配列を直接作れるかどうかがボーダーな気がする
ポインタの配列を作ってるようだとGCしなくてもGC言語
C#は微妙なライン
変なタイミングで大掃除始める問題もあるけどこっちを気にする機会は少ないような
ポインタの配列を作ってるようだとGCしなくてもGC言語
C#は微妙なライン
変なタイミングで大掃除始める問題もあるけどこっちを気にする機会は少ないような
76デフォルトの名無しさん
2023/05/05(金) 18:05:31.65ID:ugKRRbai 結局、RustはC++より速くても、Javaよりは遅いってことですね
2023/05/05(金) 19:01:02.92ID:yAiikMv0
もう少し待てはマイクロソフトがR++を出すと思うから
それまで待って
それまで待って
2023/05/05(金) 23:04:16.37ID:Vdiv+WAP
JAVAが速い!?
2023/05/05(金) 23:05:51.16ID:A/rFKldr
>>76
Rustはスタックを多用する言語なのでJavaより速い
Rustはスタックを多用する言語なのでJavaより速い
80デフォルトの名無しさん
2023/05/05(金) 23:35:38.70ID:ugKRRbai >>79
証拠は?
証拠は?
2023/05/05(金) 23:47:38.29ID:A/rFKldr
>>80
スタック上のメモリ領域はCPUレジスタであるスタックポインタを足し算引き算するだけでメモリ確保と解放できるため最も速い
スタック上のメモリ領域はCPUレジスタであるスタックポインタを足し算引き算するだけでメモリ確保と解放できるため最も速い
2023/05/05(金) 23:50:40.76ID:tbrjl4OG
>>81
CPUの仕組みを知っててそういう認識の人はいないと思いますよ
CPUの仕組みを知っててそういう認識の人はいないと思いますよ
2023/05/05(金) 23:56:37.63ID:Ena393we
もうみた~
2023/05/06(土) 00:11:48.42ID:GtwTEHkL
>>81のスタックメモリ利用が一番速いで合ってるけど
スタックメモリは関数から戻ると自動的に開放されその部分は無効になっちゃう
そのため従来の言語ではスタックメモリの利用を抑え気味にすることでその問題を過剰に回避してた
Rustはライフタイムの導入でスタックメモリを安全な範囲内の限界まで使えるようになったことが違いかな
スタックメモリは関数から戻ると自動的に開放されその部分は無効になっちゃう
そのため従来の言語ではスタックメモリの利用を抑え気味にすることでその問題を過剰に回避してた
Rustはライフタイムの導入でスタックメモリを安全な範囲内の限界まで使えるようになったことが違いかな
2023/05/06(土) 00:20:07.63ID:SIOBPdzx
CPUのレジスタ利用が一番速いがレジスタ割り付けの最適化が非常に難しいので
スタックを使ってお茶を濁してる
スタックを使ってお茶を濁してる
86デフォルトの名無しさん
2023/05/06(土) 00:36:19.82ID:cJf94Ar1 スタックメモリが主記憶と別の場所にあると思ってない?
87デフォルトの名無しさん
2023/05/06(土) 00:39:27.80ID:cJf94Ar1 もしかしてヒープは主記憶、スタックはプロセッサの中にあるとか思ってない?
いま検索中?
いま検索中?
2023/05/06(土) 00:43:00.80ID:GtwTEHkL
メモリの確保の仕方の違いでの速さの比較の話でレジスタの話を持ち出すのは違うでしょ
そしてレジスタの数は限界がありその退避先もスタックメモリですよ
スタックメモリに割り当てられた変数は最適化によりレジスタ割り当てが可能であればレジスタのみ利用になりますね
>>86
スタックメモリは単なるメインメインの一部にすぎません
しかしメモリ確保と解放が最も速いだけでなくメモリキャッシュに載る点でアクセスも速いです
そしてレジスタの数は限界がありその退避先もスタックメモリですよ
スタックメモリに割り当てられた変数は最適化によりレジスタ割り当てが可能であればレジスタのみ利用になりますね
>>86
スタックメモリは単なるメインメインの一部にすぎません
しかしメモリ確保と解放が最も速いだけでなくメモリキャッシュに載る点でアクセスも速いです
2023/05/06(土) 00:43:06.74ID:ky4tntbz
キャッシュメモリは主記憶に含めておいた方がいい?
2023/05/06(土) 00:43:19.23ID:SIOBPdzx
頭のおかしい人間がずっと一般的な事実に基づかない頓珍漢な独自妄想理論を展開してる
2023/05/06(土) 00:46:32.42ID:SIOBPdzx
スタックを積極的に利用しているからrustがjavaより速いと言われて
納得する馬鹿はいないだろ
もっと根本的な理由があるだろと
javaはVMでスタックマシンをエミュレートしてるから遅い
納得する馬鹿はいないだろ
もっと根本的な理由があるだろと
javaはVMでスタックマシンをエミュレートしてるから遅い
2023/05/06(土) 00:48:39.47ID:SIOBPdzx
通常はレジスタ一発で出来ることもわざわざスタックマシンでエミュレートしてるので遅い
93デフォルトの名無しさん
2023/05/06(土) 00:49:43.41ID:cJf94Ar1 Rustもたいがい遅いだろ
2023/05/06(土) 00:50:53.23ID:SIOBPdzx
頭のおかしい人間がもう一人増えてた…
2023/05/06(土) 00:53:21.90ID:+ei0akhP
スタックメモリが確保の点でもキャッシュされてる点でも非常に速いのは常識
そのためGC言語であってもGoのようにまずはスタックメモリ利用を優先する
(他へ渡すときだけGC対象になるヒープを利用)
そのためGC言語であってもGoのようにまずはスタックメモリ利用を優先する
(他へ渡すときだけGC対象になるヒープを利用)
96デフォルトの名無しさん
2023/05/06(土) 00:58:44.72ID:cJf94Ar1 でもJavaのほうが速いんでしょ?
2023/05/06(土) 01:02:01.90ID:GtwTEHkL
2023/05/06(土) 01:13:46.56ID:SIOBPdzx
変な人大集合だね
それがrustよりjavaが速い理由だと思い込んで疑わない変な人たち
それがrustよりjavaが速い理由だと思い込んで疑わない変な人たち
2023/05/06(土) 01:14:41.38ID:SIOBPdzx
おっと逆だ
それがjavaよりrustが速い理由だと思い込んで疑わない変な人たち
それがjavaよりrustが速い理由だと思い込んで疑わない変な人たち
100デフォルトの名無しさん
2023/05/06(土) 01:27:18.47ID:cJf94Ar1 RustはJavaより遅いだろ
101デフォルトの名無しさん
2023/05/06(土) 02:12:11.55ID:8+gQNNXm そなの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】timelesz篠塚大輝『大きな古時計』替え歌一発ギャグ「今はもう動かない おじいさんにトドメ~♪」が波紋 [Ailuropoda melanoleuca★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- ラーメン屋「日高屋が安いせいで客が来ない!日高屋はもっと値上げしろ!」 [449534113]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】オックスフォード大学「日本で影響力のある人」ランキングを公表。1位西村博之氏、2位堀江貴文氏、3位高橋洋一氏 [566475398]
