スレタイ以外の言語もok
前スレ
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1629590343/
探検
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/11/28(日) 16:59:19.16ID:gZqbEyz/
889デフォルトの名無しさん
2022/03/20(日) 01:44:23.98ID:1+CNf8az >>888
比較対象がおかしいんじゃなくて、お前が無知なだけw
.NETはSynchronizedContextというのでスレッドのスケジューリングを調整できる
そして、GUIとコンソールでこのスケジューリングが違うから、GUIを出したんだよw
同じことをコンソールアプリでやってもデッドロックしないw
つまりあえておかしいのが何かを選ぶならお前の可哀想な頭ということになるw
比較対象がおかしいんじゃなくて、お前が無知なだけw
.NETはSynchronizedContextというのでスレッドのスケジューリングを調整できる
そして、GUIとコンソールでこのスケジューリングが違うから、GUIを出したんだよw
同じことをコンソールアプリでやってもデッドロックしないw
つまりあえておかしいのが何かを選ぶならお前の可哀想な頭ということになるw
890デフォルトの名無しさん
2022/03/20(日) 08:46:38.88ID:meh5jYAs >>889
おかしいのはお前の頭だ馬鹿タレ
881は
int main() {
sleep();
return 0;
}
でアプリケーションが終了しない!デッドロックだ!と騒いでいるに等しい。
ぼくのすごいあぷりけーしょんのばぐはぜんぶすたてぃっくにけんしゅつされるべき
このていどすらぼくには「わかりにくいでっどろっく」なのだから!
と思うのなら、GoやRustを使っておけ。
C#は実用言語であって、一通りすら書けない馬鹿を救済しようとはしていない。
一般的に、ロック周りの難しさは再現性が低い事にある。
偶々同時にアクセスした時にのみバグるので、
初心者の「一度動いたから問題なし」ではバグを取りきれない。
そのコードなら必ず再現する=再現率100%のバグを修正出来ないのはそいつの問題だ。
(881のバグは静的には検出出来ないのかもしれんが、動かせばすぐ分かるし、すぐ修正出来る)
一般的に難しいとされるバグは、データ依存性が有り、特定のデータ組でしかバグらないものだ。
そしてロック周りなら、データ依存性+タイミング、となるので、さらに発見も遅れるし、
見た目動くし、実際99%以上の場合で全く問題ないしで、場所の特定が困難になる。
お前以外はこの前提で話していただろうよ。
おかしいのはお前の頭だ馬鹿タレ
881は
int main() {
sleep();
return 0;
}
でアプリケーションが終了しない!デッドロックだ!と騒いでいるに等しい。
ぼくのすごいあぷりけーしょんのばぐはぜんぶすたてぃっくにけんしゅつされるべき
このていどすらぼくには「わかりにくいでっどろっく」なのだから!
と思うのなら、GoやRustを使っておけ。
C#は実用言語であって、一通りすら書けない馬鹿を救済しようとはしていない。
一般的に、ロック周りの難しさは再現性が低い事にある。
偶々同時にアクセスした時にのみバグるので、
初心者の「一度動いたから問題なし」ではバグを取りきれない。
そのコードなら必ず再現する=再現率100%のバグを修正出来ないのはそいつの問題だ。
(881のバグは静的には検出出来ないのかもしれんが、動かせばすぐ分かるし、すぐ修正出来る)
一般的に難しいとされるバグは、データ依存性が有り、特定のデータ組でしかバグらないものだ。
そしてロック周りなら、データ依存性+タイミング、となるので、さらに発見も遅れるし、
見た目動くし、実際99%以上の場合で全く問題ないしで、場所の特定が困難になる。
お前以外はこの前提で話していただろうよ。
891デフォルトの名無しさん
2022/03/20(日) 10:31:18.90ID:meh5jYAs >>889
あと881については「Task.Waitの代わりにawaitを使え」とモロクソにドキュメントに書いてある。
(884が指摘してるのはこれだろう)
> タスクを待機するコードは非ブロッキング方式で作成します
> Task が完了するのを待機するための手段として現在のスレッドをブロックすると、
> デッドロックおよびコンテキスト スレッドのブロックが発生するおそれがあり、複雑なエラー処理が必要になることがあります。
> 次の表では、非ブロッキング方式でタスクの待機に対処する方法について説明します。
> これを使う/これは使わない/行う処理
> await/Task.Wait または Task.Result/バックグラウンド タスクの結果の取得
> await Task.WhenAny/Task.WaitAny/任意のタスクの完了の待機
> await Task.WhenAll/Task.WaitAll/すべてのタスクの完了の待機
> await Task.Delay/Thread.Sleep/一定期間の待機
> https://docs.microsoft.com/ja-jp/dotnet/csharp/async
フレームワークには要求されたコードを書く必要があって、好き勝手書いていいわけではない。
ある程度の腕前があるつもりならドキュメントを先に読んだ方が正解だぞ。
(そもそもそんなコード書く必要すらないが)
それ、コンソールアプリなら(コンパイラがフォローしてくれた結果)動くだけの気がするが。
あと881については「Task.Waitの代わりにawaitを使え」とモロクソにドキュメントに書いてある。
(884が指摘してるのはこれだろう)
> タスクを待機するコードは非ブロッキング方式で作成します
> Task が完了するのを待機するための手段として現在のスレッドをブロックすると、
> デッドロックおよびコンテキスト スレッドのブロックが発生するおそれがあり、複雑なエラー処理が必要になることがあります。
> 次の表では、非ブロッキング方式でタスクの待機に対処する方法について説明します。
> これを使う/これは使わない/行う処理
> await/Task.Wait または Task.Result/バックグラウンド タスクの結果の取得
> await Task.WhenAny/Task.WaitAny/任意のタスクの完了の待機
> await Task.WhenAll/Task.WaitAll/すべてのタスクの完了の待機
> await Task.Delay/Thread.Sleep/一定期間の待機
> https://docs.microsoft.com/ja-jp/dotnet/csharp/async
フレームワークには要求されたコードを書く必要があって、好き勝手書いていいわけではない。
ある程度の腕前があるつもりならドキュメントを先に読んだ方が正解だぞ。
(そもそもそんなコード書く必要すらないが)
それ、コンソールアプリなら(コンパイラがフォローしてくれた結果)動くだけの気がするが。
892デフォルトの名無しさん
2022/03/20(日) 11:59:41.08ID:w4XPcyom GUIアプリだとWPFとかがメッセージループ回してくれる
コンソールアプリだとメッセージループがないからそもそもの土台が違うだけでしょ
GUI周りの制限とかもないだろうし
もしかしたらメッセージループを自前で回せばasyncとかのデッドロックをコンソールアプリからもできるかもしれん
コンソールアプリだとメッセージループがないからそもそもの土台が違うだけでしょ
GUI周りの制限とかもないだろうし
もしかしたらメッセージループを自前で回せばasyncとかのデッドロックをコンソールアプリからもできるかもしれん
893デフォルトの名無しさん
2022/03/20(日) 12:01:25.59ID:D3rJhAId >>881
へんな例え出して突っ込まれてるお前好き!
へんな例え出して突っ込まれてるお前好き!
894デフォルトの名無しさん
2022/03/20(日) 12:05:49.90ID:1+CNf8az awaitが使用できないシチュエーションにしてる上に、引数なしのsleep()なんて存在しない上に仮にそれが永久スリープだとして、そういう現象ではないw
非常に自然な使い方なんだよw
またこの例は簡単&再現性100%を挙げただけで、合せ技で再現性低のすごい分かりにくいバグ(終わらないスレッド)を混入させられるw
そしてその自然な使い方がNGであることがドキュメンテーションされていないとは一言も言ってないw
モデルが悪いと言っているw
だからお前はバカだと言われるんだよw
非常に自然な使い方なんだよw
またこの例は簡単&再現性100%を挙げただけで、合せ技で再現性低のすごい分かりにくいバグ(終わらないスレッド)を混入させられるw
そしてその自然な使い方がNGであることがドキュメンテーションされていないとは一言も言ってないw
モデルが悪いと言っているw
だからお前はバカだと言われるんだよw
895デフォルトの名無しさん
2022/03/20(日) 12:08:13.64ID:1+CNf8az896デフォルトの名無しさん
2022/03/20(日) 12:12:12.26ID:1+CNf8az 名前覚え間違ってたw
SynchronizationContext なw
SynchronizationContext なw
897デフォルトの名無しさん
2022/03/20(日) 12:14:20.56ID:59buMwU+ 次世代言語にC#が名乗りを上げたのか?
898デフォルトの名無しさん
2022/03/20(日) 12:23:10.62ID:1+CNf8az 知らねーよw C#を引っ張り出してきたのは俺じゃないw
899デフォルトの名無しさん
2022/03/20(日) 12:36:36.62ID:meh5jYAs >>894
まあとにかく君にはGoやRustがいいと思うよ。
どんなかきかたをしてもこんぱいるがとおりさえすればぼくのあぷりけーしょんにはばぐがないことをほしょうしてくれないといや!なんだろ。
既に言ったとおり、
フレームワークは一般的に「こう書け」と要求してるとおりに書かないと誤作動する。
async/awaitにてTask.Waitを使うなとはドキュメントに書いてあり、一般的にはそれで十分だ。
そもそもasync/awaitは細かく動作タイミングを指定する為の物ではないので、通常はそんなことしないし。
>>892
一応SynchronizationContextを弄くれば、
メッセージループやasync/awaitでのスレッドプールでの動作とかも変更出来るらしい。(override)
> https://devblogs.microsoft.com/dotnet/configureawait-faq/
ただ普通は必要ないからしないと思うが。
Forms/WPF/WinRTで異なるとは書いてある。
コンソールでどうなのかは知らんが、881のコードでも動くモデルが差し込んであるのだろう。
ただそれは間違ってるコードが偶々動いてるだけの気がするが。
まあとにかく君にはGoやRustがいいと思うよ。
どんなかきかたをしてもこんぱいるがとおりさえすればぼくのあぷりけーしょんにはばぐがないことをほしょうしてくれないといや!なんだろ。
既に言ったとおり、
フレームワークは一般的に「こう書け」と要求してるとおりに書かないと誤作動する。
async/awaitにてTask.Waitを使うなとはドキュメントに書いてあり、一般的にはそれで十分だ。
そもそもasync/awaitは細かく動作タイミングを指定する為の物ではないので、通常はそんなことしないし。
>>892
一応SynchronizationContextを弄くれば、
メッセージループやasync/awaitでのスレッドプールでの動作とかも変更出来るらしい。(override)
> https://devblogs.microsoft.com/dotnet/configureawait-faq/
ただ普通は必要ないからしないと思うが。
Forms/WPF/WinRTで異なるとは書いてある。
コンソールでどうなのかは知らんが、881のコードでも動くモデルが差し込んであるのだろう。
ただそれは間違ってるコードが偶々動いてるだけの気がするが。
900デフォルトの名無しさん
2022/03/20(日) 12:44:20.26ID:1+CNf8az ここまで書いてやってもまだ理解できてないのか・・・
await後に元のスレッドで再開するのがGUI用のSynchronizationContext w
だから、Task.Waitを同期的にやると同じスレッドなのでデッドロックする
GUIだとUIスレッドでawaitしたら復帰したときに同じUIスレッドで処理したいからそうする
コンソールだとそういう縛りがないから、await後は別のスレッドになる可能性がある(典型的には使用中なら別のスレッド)w
それだけw
こんなこと言われないと分からないのなら、お前はC#を「使えていない」w
await後に元のスレッドで再開するのがGUI用のSynchronizationContext w
だから、Task.Waitを同期的にやると同じスレッドなのでデッドロックする
GUIだとUIスレッドでawaitしたら復帰したときに同じUIスレッドで処理したいからそうする
コンソールだとそういう縛りがないから、await後は別のスレッドになる可能性がある(典型的には使用中なら別のスレッド)w
それだけw
こんなこと言われないと分からないのなら、お前はC#を「使えていない」w
901デフォルトの名無しさん
2022/03/20(日) 12:49:33.87ID:D3rJhAId 馬鹿はなぜ周りから馬鹿扱いされているか気が付かないからバカなんだ
周りが馬鹿なんじゃなくて本質的に理解してないでデッドロックがどうこう書いてくる
周りが馬鹿なんじゃなくて本質的に理解してないでデッドロックがどうこう書いてくる
902デフォルトの名無しさん
2022/03/20(日) 12:50:34.94ID:D3rJhAId 周りが馬鹿なんじゃなくて本質的に理解してないでデッドロックがどうこう書いてくる人間が馬鹿
903デフォルトの名無しさん
2022/03/20(日) 12:56:56.16ID:1+CNf8az ぼくちゃんたちには難しくて分からなかったかもねw
ぼくちゃんたちの頭が悪いのまで俺のせいにされても困るw
ぼくちゃんたちの頭が悪いのまで俺のせいにされても困るw
904デフォルトの名無しさん
2022/03/20(日) 13:06:31.37ID:D3rJhAId C#とWPF使うとデッドロックが起こる!簡単には使えない!
GoとRustでCUIでやればデッドロックが起こらない!簡単だ!
↑馬鹿すぎますよね?
GoとRustでCUIでやればデッドロックが起こらない!簡単だ!
↑馬鹿すぎますよね?
905デフォルトの名無しさん
2022/03/20(日) 13:09:30.45ID:1+CNf8az バカの自己紹介ほどツマラナイものはないなw
.NETは玉石混交の継ぎ接ぎだらけでモデルが悪いと言ってるだけなんだがw
.NETは玉石混交の継ぎ接ぎだらけでモデルが悪いと言ってるだけなんだがw
906デフォルトの名無しさん
2022/03/20(日) 13:11:24.97ID:D3rJhAId この人がスゲー馬鹿なのは同意してくれないの?
876 名前:デフォルトの名無しさん[sage] 投稿日:2022/03/19(土) 00:33:29.03 ID:DslNhsx1 [1/4]
C#とGoとRustならGoでいいと思うけど…一番ラクじゃん
C#なんてTask.Delay()の代わりにThread.Sleep()使うだけで簡単にデッドロックするよw
876 名前:デフォルトの名無しさん[sage] 投稿日:2022/03/19(土) 00:33:29.03 ID:DslNhsx1 [1/4]
C#とGoとRustならGoでいいと思うけど…一番ラクじゃん
C#なんてTask.Delay()の代わりにThread.Sleep()使うだけで簡単にデッドロックするよw
907デフォルトの名無しさん
2022/03/20(日) 13:14:29.87ID:1+CNf8az お前がバカなだけw
908デフォルトの名無しさん
2022/03/20(日) 13:25:26.04ID:meh5jYAs >>900
それで君がC#を使えている事にもならないとは思うがな。
プログラミング言語は一般的に「正しく書けば正しく動く」であって、
「間違った使い方をした時にもそれなりに動く」事は期待されてない。
これが707で言った「自分の足を撃てるか」で、C#については、
> You forget precisely how to use the .NET interface and shoot yourself in the foot. You sue Microsoft for damages.
となっているが、君はまんまこれではないか。真っ当なら、
× 俺はSynchronizationContextの中身まで熟知しており、Task.Waitをコンソールアプリで使ってもフリーズしないと知っている。だから使う。
○ MSが「async/awaitではTask.Waitは使うな」と言ってるから、使わない。
だと思うが。
それで君がC#を使えている事にもならないとは思うがな。
プログラミング言語は一般的に「正しく書けば正しく動く」であって、
「間違った使い方をした時にもそれなりに動く」事は期待されてない。
これが707で言った「自分の足を撃てるか」で、C#については、
> You forget precisely how to use the .NET interface and shoot yourself in the foot. You sue Microsoft for damages.
となっているが、君はまんまこれではないか。真っ当なら、
× 俺はSynchronizationContextの中身まで熟知しており、Task.Waitをコンソールアプリで使ってもフリーズしないと知っている。だから使う。
○ MSが「async/awaitではTask.Waitは使うな」と言ってるから、使わない。
だと思うが。
909デフォルトの名無しさん
2022/03/20(日) 13:39:56.48ID:1+CNf8az アホだなw
じゃあUIイベントをasyncメソッドで受けてawaitしてからUI処理すんなよw
俺が言ったこと(await後のスレッドの話)はC#使えるやつなら基礎として知ってることなんだよw
知ってないとawaitしてUI処理できんからw
逆にTask.Waitがスレッドをロックしてしまうブロック処理かどうかはよく読まないと知らないことw
でも有名な話だからまともにC#使える人なら皆知っているけどねw
特定の状況でしか必要にならないから、await後でデッドロックすることがある、ということしか知らず、へぇ〜コレか〜という形になる人が稀にいる程度w
なので、
○ 俺はGUIアプリでawait後に元のスレッドで継続することと、コンソールアプリでは別スレッドになることがあることを知っており、だからC#を使える
× 俺はMSが「async/awaitではTask.Waitは使うな」と書いてあることを知っており、だからC#を使える
ってことだw
じゃあUIイベントをasyncメソッドで受けてawaitしてからUI処理すんなよw
俺が言ったこと(await後のスレッドの話)はC#使えるやつなら基礎として知ってることなんだよw
知ってないとawaitしてUI処理できんからw
逆にTask.Waitがスレッドをロックしてしまうブロック処理かどうかはよく読まないと知らないことw
でも有名な話だからまともにC#使える人なら皆知っているけどねw
特定の状況でしか必要にならないから、await後でデッドロックすることがある、ということしか知らず、へぇ〜コレか〜という形になる人が稀にいる程度w
なので、
○ 俺はGUIアプリでawait後に元のスレッドで継続することと、コンソールアプリでは別スレッドになることがあることを知っており、だからC#を使える
× 俺はMSが「async/awaitではTask.Waitは使うな」と書いてあることを知っており、だからC#を使える
ってことだw
910デフォルトの名無しさん
2022/03/20(日) 14:07:36.11ID:meh5jYAs >>909
そうじゃない。
何度も言ってるが、フレームワークはフレームワーク製作者が要求したとおりのコードじゃないと駄目なんだ。
これはどのフレームワークでもそう。
MSが「async/awaitではTask.Waitは使うな」と言ってるのだから、これに従う限り、
Task.Waitを混ぜた時の動作については知る必要はない、というのが一般論。
フレームワークにデタラメなコード(=製作者が予期してないコード)を食わせたらどうなるか、を把握する為には、
フレームワークの中身まで知る必要がある。
一々こんな事をしてたら生産性なんて上がらないし、正しく使っている限り必要ないから、
一般的にはこれは要求されない。
だからお前の考え方は根本的にずれてるよ。
例えばHTML、これはWeb系に於いての暗黙のフレームワークHTML/CSS/JavaScriptの一角を担ってるわけだが、
実はデタラメなHTMLでもブラウザはそれなりには表示してしまう。
だからといって、「デタラメなHTMLを食わせた時にどう動くかを把握して、デタラメなHTMLを書いてもいい」とはならんし、
「デタラメなHTMLを食わせた時の各ブラウザの挙動を把握してこそWebを『使える』と言える」ともならんだろ。
「正しいHTMLを書け」で終わりだ。
ただまあこれはもう平行線だし、これについての俺の主張は上記だから、これで終わりでいい。
C#のモデルが悪いというのなら、
「MSが正しい使い方だと認めるコードでも容易にデッドロックが発生する事例」を持ってくるべきだ。
間違ったコードでフリーズしたところで、あっそう、でしかない。
一般的にはそんなのを書く奴が悪いとされるし、C#でも実際そうだと思うよ。
そうじゃない。
何度も言ってるが、フレームワークはフレームワーク製作者が要求したとおりのコードじゃないと駄目なんだ。
これはどのフレームワークでもそう。
MSが「async/awaitではTask.Waitは使うな」と言ってるのだから、これに従う限り、
Task.Waitを混ぜた時の動作については知る必要はない、というのが一般論。
フレームワークにデタラメなコード(=製作者が予期してないコード)を食わせたらどうなるか、を把握する為には、
フレームワークの中身まで知る必要がある。
一々こんな事をしてたら生産性なんて上がらないし、正しく使っている限り必要ないから、
一般的にはこれは要求されない。
だからお前の考え方は根本的にずれてるよ。
例えばHTML、これはWeb系に於いての暗黙のフレームワークHTML/CSS/JavaScriptの一角を担ってるわけだが、
実はデタラメなHTMLでもブラウザはそれなりには表示してしまう。
だからといって、「デタラメなHTMLを食わせた時にどう動くかを把握して、デタラメなHTMLを書いてもいい」とはならんし、
「デタラメなHTMLを食わせた時の各ブラウザの挙動を把握してこそWebを『使える』と言える」ともならんだろ。
「正しいHTMLを書け」で終わりだ。
ただまあこれはもう平行線だし、これについての俺の主張は上記だから、これで終わりでいい。
C#のモデルが悪いというのなら、
「MSが正しい使い方だと認めるコードでも容易にデッドロックが発生する事例」を持ってくるべきだ。
間違ったコードでフリーズしたところで、あっそう、でしかない。
一般的にはそんなのを書く奴が悪いとされるし、C#でも実際そうだと思うよ。
911デフォルトの名無しさん
2022/03/20(日) 14:19:36.23ID:1+CNf8az お前が頓珍漢な主張を繰り返しているだけだろw
仕様通りの使い方が出来ているかどうかという話をしておらず、その仕様の出来が良いか悪いかの話をしているんだろうにw
理由はそういうスレだからw
俺はそういう話をするために事例を出し、.NETのモデルの悪さを指摘したw
ただ、その原因すらお前が理解していないようだから、一般常識レベルの説明をしただけだw
一応言っておくが、俺は使用するAPIはドキュメントを全て読んでから使用しているw
でもそんな話は今していないんだw お前が言ってることが周回遅れすぎてるだけw
というかC#すら分かっておらず、当該言語もよく知らない上にスレの主旨も理解できてないなら口出してくんなw
仕様通りの使い方が出来ているかどうかという話をしておらず、その仕様の出来が良いか悪いかの話をしているんだろうにw
理由はそういうスレだからw
俺はそういう話をするために事例を出し、.NETのモデルの悪さを指摘したw
ただ、その原因すらお前が理解していないようだから、一般常識レベルの説明をしただけだw
一応言っておくが、俺は使用するAPIはドキュメントを全て読んでから使用しているw
でもそんな話は今していないんだw お前が言ってることが周回遅れすぎてるだけw
というかC#すら分かっておらず、当該言語もよく知らない上にスレの主旨も理解できてないなら口出してくんなw
912デフォルトの名無しさん
2022/03/20(日) 14:26:39.18ID:AzzPxPqt デッドロックの話ならGoなんてチャネルの扱いを間違えたら簡単にデッドロックするでしょ
C#もGoも両方プロダクションでそれなりに使い込んでるけど、感覚的にはGoの方が遥かにデッドロックを起こしやすいよ
C#もGoも両方プロダクションでそれなりに使い込んでるけど、感覚的にはGoの方が遥かにデッドロックを起こしやすいよ
913デフォルトの名無しさん
2022/03/20(日) 14:35:25.89ID:meh5jYAs914デフォルトの名無しさん
2022/03/20(日) 14:41:39.54ID:lPRYwieL rust - Mutexのロックが解除されない
https://ja.stackoverflow.com/questions/60337/mutex%E3%81%AE%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E8%A7%A3%E9%99%A4%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84
Golangでデッドロックを作って遊んでみる
https://www.asobou.co.jp/blog/web/deadlock
https://ja.stackoverflow.com/questions/60337/mutex%E3%81%AE%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E8%A7%A3%E9%99%A4%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84
Golangでデッドロックを作って遊んでみる
https://www.asobou.co.jp/blog/web/deadlock
915デフォルトの名無しさん
2022/03/20(日) 14:50:44.84ID:oojzEd61 なるほどね
・チャネルを使わない
・ロックを使う場合のロック順序は守る
という制限があっても簡単にデッドロックが起きてしまうのがC#という結論かな
・チャネルを使わない
・ロックを使う場合のロック順序は守る
という制限があっても簡単にデッドロックが起きてしまうのがC#という結論かな
916デフォルトの名無しさん
2022/03/20(日) 14:59:33.25ID:Su88XcRk >>914
その回答を見てもわかるように
RustではMutexなどのロックはそのブロックを抜けると自動的に解除されます
だからその質問のプログラムがそのロックしたブロックを完了していないというバグだということが今回の例でもすぐわかるわけです
その回答を見てもわかるように
RustではMutexなどのロックはそのブロックを抜けると自動的に解除されます
だからその質問のプログラムがそのロックしたブロックを完了していないというバグだということが今回の例でもすぐわかるわけです
917デフォルトの名無しさん
2022/03/20(日) 15:03:54.72ID:1+CNf8az channelでデッドロックするのはよほど使い方悪いだけだろw
プロダクトでそれはありえないw
channelを使わずにmutex使うとかバカとしか言いようがないw
mutexなどの同期リソースを手動で使う場合は、どんな言語でも細心の注意を払わないとデッドロックなどのバグが発生するw
goのchannelはgo固有w
IPCの接続をsocketと呼ばずにchannelと呼ぶフレームはあるけどねw
プロダクトでそれはありえないw
channelを使わずにmutex使うとかバカとしか言いようがないw
mutexなどの同期リソースを手動で使う場合は、どんな言語でも細心の注意を払わないとデッドロックなどのバグが発生するw
goのchannelはgo固有w
IPCの接続をsocketと呼ばずにchannelと呼ぶフレームはあるけどねw
918デフォルトの名無しさん
2022/03/20(日) 15:07:57.75ID:1+CNf8az まあでも並列動作で一番厄介なのはMutexを使わずにatomic readを期待しちゃった系読み書きのバグかなw
919デフォルトの名無しさん
2022/03/20(日) 15:13:13.79ID:59buMwU+ デッドロック起きないことを保証できたらまさに次世代言語って感じがするな
そんな言語あるのかは知らんが
そんな言語あるのかは知らんが
920デフォルトの名無しさん
2022/03/20(日) 15:20:14.57ID:1+CNf8az 非同期プログラミング(async/awaitなど)は正にその辺を狙った技術だよw
非同期処理完了の戻り値としてデータ授受をすることで複数スレッドからのデータアクセスの同期処理をなくしやすくしているw
保証するものじゃないし、する必要もないけどw
非同期処理完了の戻り値としてデータ授受をすることで複数スレッドからのデータアクセスの同期処理をなくしやすくしているw
保証するものじゃないし、する必要もないけどw
921デフォルトの名無しさん
2022/03/20(日) 15:24:25.24ID:BxWAUZWU922デフォルトの名無しさん
2022/03/20(日) 15:28:04.92ID:w4XPcyom lock要求された順番を検証して、
順序にループがあればlock要求時にthrowする仕組みは作れそう
lock/unlockのたびに全threadのlock状況を検証する必要があるからパフォーマンスがお察しになるが
順序にループがあればlock要求時にthrowする仕組みは作れそう
lock/unlockのたびに全threadのlock状況を検証する必要があるからパフォーマンスがお察しになるが
923デフォルトの名無しさん
2022/03/20(日) 15:39:08.57ID:meh5jYAs >>915
どの言語でも、間違った使い方をすればデッドロックはする。
(Task.Waitなどを使うという、明らかに間違った事をせず、)
async/awaitだけで(ジョブ間に依存性がないように)書けばデッドロックしない。
これはC#でもJSでも他言語でも同じのはずだけど。
ID:1+CNf8az だけが
まちがったつかいかたもできるし、それがぼくにとってはわかりにくいからもんだいだ!!!
と言ってるだけ。
どの言語でも、間違った使い方をすればデッドロックはする。
(Task.Waitなどを使うという、明らかに間違った事をせず、)
async/awaitだけで(ジョブ間に依存性がないように)書けばデッドロックしない。
これはC#でもJSでも他言語でも同じのはずだけど。
ID:1+CNf8az だけが
まちがったつかいかたもできるし、それがぼくにとってはわかりにくいからもんだいだ!!!
と言ってるだけ。
924デフォルトの名無しさん
2022/03/20(日) 15:39:50.43ID:1+CNf8az >>921
何を言ってるの????
共有データを作らないためのchannelではないの?
channelだけではどうしても無理な場合だけmutex使って共有データにアクセスするだけだろw
まずは例を出せw
何を言ってるの????
共有データを作らないためのchannelではないの?
channelだけではどうしても無理な場合だけmutex使って共有データにアクセスするだけだろw
まずは例を出せw
925デフォルトの名無しさん
2022/03/20(日) 15:42:03.81ID:1+CNf8az926デフォルトの名無しさん
2022/03/20(日) 15:45:30.35ID:1+CNf8az >>922
function method1() { lock(objA) { lock(objB) {
処理;
}}}
function method2() { lock(objB) { lock(objA) {
処理;
}}}
みたいなmethod1とmethod2が別のスレッドで同時に動いたときにデッドロックする
function method1() { lock(objA) { lock(objB) {
処理;
}}}
function method2() { lock(objB) { lock(objA) {
処理;
}}}
みたいなmethod1とmethod2が別のスレッドで同時に動いたときにデッドロックする
927デフォルトの名無しさん
2022/03/20(日) 16:07:28.81ID:KN3blaKP928デフォルトの名無しさん
2022/03/20(日) 16:12:06.86ID:1+CNf8az >>927
バカはお前w デッドロックを検出することは可能だが、順序がループするわけではないw
バカはお前w デッドロックを検出することは可能だが、順序がループするわけではないw
929デフォルトの名無しさん
2022/03/20(日) 16:16:25.61ID:JT8vl7rT 順序がループ?w
930デフォルトの名無しさん
2022/03/20(日) 16:28:20.05ID:1+CNf8az931デフォルトの名無しさん
2022/03/20(日) 17:43:56.42ID:sUfYxNf/ https://github.com/ghc/ghc/blob/d45bb70178e044bc8b6e8215da7bc8ed0c95f2cb/libraries/base/Control/Concurrent.hs#L643-L649
Haskellは参照されていない=デッドロックしているスレッドをGCが検出しているらしい。素人意見ですが、もしかして他のGC言語も同じことをすると良いのでは?
Haskellは参照されていない=デッドロックしているスレッドをGCが検出しているらしい。素人意見ですが、もしかして他のGC言語も同じことをすると良いのでは?
932デフォルトの名無しさん
2022/03/20(日) 18:10:14.51ID:1+CNf8az 別にGCじゃなくても検出はできるよw ただのバグだから余計なコストがかかる処理を入れてないだけでw
933デフォルトの名無しさん
2022/03/20(日) 18:40:40.29ID:ED0sGA+M 毎度毎度、c#もあんまり詳しくないよねこの人。
Rustは俺はわからんのだけど、c#とgoの話だとこの人が言ってんのは重箱の隅をつついて「これが大問題であるっ!!」って騒いでるような感じ。
まあGoでコンパイラ書いたらGCから逃れられないみたいなアホも居たわけだからアレなんだけど。
Rustは俺はわからんのだけど、c#とgoの話だとこの人が言ってんのは重箱の隅をつついて「これが大問題であるっ!!」って騒いでるような感じ。
まあGoでコンパイラ書いたらGCから逃れられないみたいなアホも居たわけだからアレなんだけど。
934デフォルトの名無しさん
2022/03/20(日) 18:48:20.78ID:OVL9TeC6 >>933
GC言語はどうしてもそれ故の種々の制限があるからしょうがない
もちろんGC言語はその代わりに有利な面もある
そこへGC言語でないRustが初めてGC言語と対等に比較可能な存在として登場した
しかもGCのない有利さを保ったままで
GC言語はどうしてもそれ故の種々の制限があるからしょうがない
もちろんGC言語はその代わりに有利な面もある
そこへGC言語でないRustが初めてGC言語と対等に比較可能な存在として登場した
しかもGCのない有利さを保ったままで
935デフォルトの名無しさん
2022/03/20(日) 18:57:31.06ID:3v4+I3Ge この人rustスレではc++に比べてrustはクソと
同じように知ったかぶりでトンチンカンな叩き
してるからまあこういうことやるのが目的なんだろ
同じように知ったかぶりでトンチンカンな叩き
してるからまあこういうことやるのが目的なんだろ
936デフォルトの名無しさん
2022/03/20(日) 18:57:43.35ID:eHF+L46q > そこへGC言語でないRustが初めてGC言語と対等に比較可能な存在として登場した
SwiftにもGCは無いよね
ARC(Automatic Reference Counting)でやりくりするんよね
Swift使っこと無いし完全に俺はニワカだけど
SwiftにもGCは無いよね
ARC(Automatic Reference Counting)でやりくりするんよね
Swift使っこと無いし完全に俺はニワカだけど
937デフォルトの名無しさん
2022/03/20(日) 19:14:52.51ID:ED0sGA+M >>934
Goでコンパイラ書いたらバイナリにもGCが入るっていう誤解の正当化?
Goでコンパイラ書いたらバイナリにもGCが入るっていう誤解の正当化?
938デフォルトの名無しさん
2022/03/20(日) 19:16:00.62ID:NhMlqBrF >>936
C++とRustでも所有権を共有する時だけはARCと同じ方法を使っている
しかしC++とRustはそういう特殊なケースでのみ使用だからGC言語とは言われない
一方でSwiftは常にインスタンスに対してARCでメモリ管理をするため非常に重く効率が悪い
そしてARCが常に行われるということは参照カウント方式のGCそのものである
そのためSwiftは非GC言語とは言い難い
C++とRustでも所有権を共有する時だけはARCと同じ方法を使っている
しかしC++とRustはそういう特殊なケースでのみ使用だからGC言語とは言われない
一方でSwiftは常にインスタンスに対してARCでメモリ管理をするため非常に重く効率が悪い
そしてARCが常に行われるということは参照カウント方式のGCそのものである
そのためSwiftは非GC言語とは言い難い
939デフォルトの名無しさん
2022/03/20(日) 19:21:33.37ID:x160hDIc >>937
そのGo製コンパイラ自体はGCランタイムを含むしGCを起こすよ
他にもGoで記述して例えばWebAssemblyをブラウザ上で動かそうとすると
当然GCを含むGoの巨大なランタイムがWASM上でそのまま必要となるため
Goを使うと巨大で重くて遅い
そのGo製コンパイラ自体はGCランタイムを含むしGCを起こすよ
他にもGoで記述して例えばWebAssemblyをブラウザ上で動かそうとすると
当然GCを含むGoの巨大なランタイムがWASM上でそのまま必要となるため
Goを使うと巨大で重くて遅い
940デフォルトの名無しさん
2022/03/20(日) 19:50:10.66ID:eHF+L46q > そのためSwiftは非GC言語とは言い難い
https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html
> In systems that use garbage collection, (略).
> However, with ARC, (略).
ここでは「ガベージコレクションを使用するシステム」と「ARC」を対比させてるっぽいね
あと個人的にもやっぱりスマートポインタの一種でしか無いように見える
RustのRcといっしょ
循環参照はプログラマが頑張ってweak使ってなんとかしてね、ってのも
ただおっしゃるとおりRustはRcを全部に使うわけじゃあないからまた雰囲気も違うのは確か
https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html
> In systems that use garbage collection, (略).
> However, with ARC, (略).
ここでは「ガベージコレクションを使用するシステム」と「ARC」を対比させてるっぽいね
あと個人的にもやっぱりスマートポインタの一種でしか無いように見える
RustのRcといっしょ
循環参照はプログラマが頑張ってweak使ってなんとかしてね、ってのも
ただおっしゃるとおりRustはRcを全部に使うわけじゃあないからまた雰囲気も違うのは確か
941デフォルトの名無しさん
2022/03/20(日) 22:21:15.61ID:RXl78SgQ C++のshared_ptrやRustのRcは必要不可欠な最小限でしか用いないから必須なコストを払っているだけと言えるが
SwiftのARCは全てのインスタンスに適用されるから無駄なコストを浪費しているとしか言いようがない
SwiftのARCは全てのインスタンスに適用されるから無駄なコストを浪費しているとしか言いようがない
942デフォルトの名無しさん
2022/03/20(日) 23:09:41.16ID:1+CNf8az >>933
実際大問題だっつーのw
C#の非同期系の諸問題は大抵これが原因w
ごく稀にスレッド間の同期(排他制御)が不足してる競合が原因のがあるって感じ
お前こそC#使った開発とか本当にしたことあるのか?w
実際大問題だっつーのw
C#の非同期系の諸問題は大抵これが原因w
ごく稀にスレッド間の同期(排他制御)が不足してる競合が原因のがあるって感じ
お前こそC#使った開発とか本当にしたことあるのか?w
943デフォルトの名無しさん
2022/03/20(日) 23:37:15.53ID:1+CNf8az あとgoについて何か文句を言ったことはないw
944デフォルトの名無しさん
2022/03/20(日) 23:38:33.20ID:gQLNPKUR なんかそういうデータあるんですか?
945デフォルトの名無しさん
2022/03/20(日) 23:47:54.68ID:1+CNf8az どういうデータだよおバカさんw
946デフォルトの名無しさん
2022/03/20(日) 23:56:02.86ID:meh5jYAs >>942
それは主にお前の問題だな
それは主にお前の問題だな
947デフォルトの名無しさん
2022/03/21(月) 00:04:44.37ID:BAdp3agq >>946
仕事で作った数人x半年レベルのWindowsアプリ(製品)の話だよw
全然違う分野のだけど、C#は1.xと2.0と4.6?で作ったかなw
なので俺の問題ではないw 全員C#の練度はお前よりは上だったけどw
仕事で作った数人x半年レベルのWindowsアプリ(製品)の話だよw
全然違う分野のだけど、C#は1.xと2.0と4.6?で作ったかなw
なので俺の問題ではないw 全員C#の練度はお前よりは上だったけどw
948デフォルトの名無しさん
2022/03/21(月) 00:15:23.07ID:g32P+Ld/949デフォルトの名無しさん
2022/03/21(月) 00:31:38.49ID:IPXTt6Bp >>947-948
ならそれはお前らの技量が足りなかっただけだ。
そもそもデッドロックするかどうかは言語関係ないだろ。
新旧の仕様を混ぜて使えるようになってるのが落とし穴だ、というのなら、
それはそうかもしれんが、C#としてはそこをすぐに塞ぐのは無理だ。
それでRust使えば全く問題ない!と思うのならガンガン使ってみればいいだけ。
そんな単純な話ではないと思うけどね。
ならそれはお前らの技量が足りなかっただけだ。
そもそもデッドロックするかどうかは言語関係ないだろ。
新旧の仕様を混ぜて使えるようになってるのが落とし穴だ、というのなら、
それはそうかもしれんが、C#としてはそこをすぐに塞ぐのは無理だ。
それでRust使えば全く問題ない!と思うのならガンガン使ってみればいいだけ。
そんな単純な話ではないと思うけどね。
950デフォルトの名無しさん
2022/03/21(月) 00:58:46.04ID:BAdp3agq >>949
俺は助っ人で行っただけだからなw
現象はデッドロックだけではないし、まあお前には想像もできないし、遭遇しても解決できないから安心しろw
そして何度でも言うが、彼らはお前よりはC#についての知見が遥かに多かったよw
デッドロックの話にピンと来ないC#erは初めて見たし、await後のスレッドの話、GUIにおけるUIスレッドの役割に対する見解の話、全ての話において、お前は最低限C#技術者に必要な知見を有していないw
俺は助っ人で行っただけだからなw
現象はデッドロックだけではないし、まあお前には想像もできないし、遭遇しても解決できないから安心しろw
そして何度でも言うが、彼らはお前よりはC#についての知見が遥かに多かったよw
デッドロックの話にピンと来ないC#erは初めて見たし、await後のスレッドの話、GUIにおけるUIスレッドの役割に対する見解の話、全ての話において、お前は最低限C#技術者に必要な知見を有していないw
951デフォルトの名無しさん
2022/03/21(月) 08:32:36.49ID:t8rbivUy 小学生ですがみなさんの情報たいへんおもしろいです
でもどうして大人のひとってけんかばかりしてるのですか?
でもどうして大人のひとってけんかばかりしてるのですか?
952デフォルトの名無しさん
2022/03/21(月) 08:45:38.05ID:BAdp3agq こんなところに来る小学生はあんまり小学生とか言わないで使いそうだけどなw
喧嘩なんてしなくて、じゃれ合ってるだけだからだよw
喧嘩なんてしなくて、じゃれ合ってるだけだからだよw
953デフォルトの名無しさん
2022/03/21(月) 08:48:32.48ID:2Zu3Swq+954デフォルトの名無しさん
2022/03/21(月) 08:56:52.04ID:BAdp3agq もちろん.NET Frameworkのバージョンだよw C#のバージョンなんて誰も覚えてないだろw
955デフォルトの名無しさん
2022/03/21(月) 09:13:23.58ID:IPXTt6Bp >>950
それはやり方を間違ってるからおかしな事になってるだけ。
例えて言うなら、舗装道路が用意されてるのにイキって荒地を走行してパンクしてるようなもの。
天の邪鬼も自由だが、それでフレームワークや言語のせいにするのは違う。
それはやり方を間違ってるからおかしな事になってるだけ。
例えて言うなら、舗装道路が用意されてるのにイキって荒地を走行してパンクしてるようなもの。
天の邪鬼も自由だが、それでフレームワークや言語のせいにするのは違う。
956デフォルトの名無しさん
2022/03/21(月) 09:56:39.42ID:+0SCi87t 結局程度の低いプログラマーがC#が悪い!って言ってるだけだろ?
話を見てるだけでも.netのフレームワークも別に悪くない
C++で文字コードの扱いが悪いと言うならわかるけど…
話を見てるだけでも.netのフレームワークも別に悪くない
C++で文字コードの扱いが悪いと言うならわかるけど…
957デフォルトの名無しさん
2022/03/21(月) 09:57:03.43ID:BAdp3agq お前まだいたの?w ここでの話は
・.NETのモデルは出来が悪い
・お前C#erに必要な最低限の知見がない
これだけだし結論出てんだよw
・.NETのモデルは出来が悪い
・お前C#erに必要な最低限の知見がない
これだけだし結論出てんだよw
958デフォルトの名無しさん
2022/03/21(月) 10:08:50.17ID:bf5EvDSb >>957
C#erって言葉を使ってるだけで相手を見下してるよね
Rustで同じ状況じゃ競合が起きないとかいうならわかるけどそういう話でもないし
あなたが勝手に出来が悪いと言ってるようにしか見えないんだから
出された例も馬鹿らしくて.NETのモデルも別に悪くないと思う
誰もあなたに同意できない
それだけの技量があなたにはない
他人を見下したり自分が悪いと思える謙虚さがないと低級プログラマにしかなれない
いい加減に静かにしてもらえないかな
それかどこか別に行ってやるか
C#erって言葉を使ってるだけで相手を見下してるよね
Rustで同じ状況じゃ競合が起きないとかいうならわかるけどそういう話でもないし
あなたが勝手に出来が悪いと言ってるようにしか見えないんだから
出された例も馬鹿らしくて.NETのモデルも別に悪くないと思う
誰もあなたに同意できない
それだけの技量があなたにはない
他人を見下したり自分が悪いと思える謙虚さがないと低級プログラマにしかなれない
いい加減に静かにしてもらえないかな
それかどこか別に行ってやるか
959デフォルトの名無しさん
2022/03/21(月) 10:12:21.44ID:bf5EvDSb デッドロックに対応できないのは言語やフレームワークのせいじゃないだろ
実際にモデルが悪いのはそっちの設計の方だろ?
実際にモデルが悪いのはそっちの設計の方だろ?
960デフォルトの名無しさん
2022/03/21(月) 10:38:31.66ID:BAdp3agq まだ言ってるしwwwww
普通にTaskをwaitするのがawaitなのにTask.Waitって名前でデッドロックする仕様はモデルが悪いとしか言いようがないだろwwww
普通にTaskをwaitするのがawaitなのにTask.Waitって名前でデッドロックする仕様はモデルが悪いとしか言いようがないだろwwww
961デフォルトの名無しさん
2022/03/21(月) 10:39:34.38ID:BAdp3agq 謙虚さとかプログラマには要らないからw
色眼鏡かけてなければ問題ないよw
色眼鏡かけてなければ問題ないよw
962デフォルトの名無しさん
2022/03/21(月) 11:52:23.94ID:1IpbvO/Q >>961
謙虚さがないからおまえみたいに色眼鏡かけるようになるんだよ。少しは学べよ。
謙虚さがないからおまえみたいに色眼鏡かけるようになるんだよ。少しは学べよ。
963デフォルトの名無しさん
2022/03/21(月) 11:56:12.36ID:4nBaVoJg ろくに調べもしないで不具合だしてるだけじゃん
名前で判断するなよ
名前で判断するなよ
964デフォルトの名無しさん
2022/03/21(月) 12:07:23.76ID:BAdp3agq 色眼鏡かけてるのはお前だけだよw
公平に見るために謙虚さはむしろ要らないw
謙虚にすると周囲に合わせることになり、自分の意見が100%反映されなくなるw
迎合してエコーチェンバーの一部になると、色眼鏡をかけることになり、公平な判断は出来なくなるw
不具合出したわけではなく、.NETのモデルが悪いだけw 日本語不自由なんだねw
公平に見るために謙虚さはむしろ要らないw
謙虚にすると周囲に合わせることになり、自分の意見が100%反映されなくなるw
迎合してエコーチェンバーの一部になると、色眼鏡をかけることになり、公平な判断は出来なくなるw
不具合出したわけではなく、.NETのモデルが悪いだけw 日本語不自由なんだねw
965デフォルトの名無しさん
2022/03/21(月) 12:20:03.99ID:9hJO1ac5 Tas.Waitでデッドロックする条件分かってんだからライブラリ側で例外投げてくれよとは思うが
1ライブラリのクソ要素を根拠に言語自体をクソと言い張る思考には感心するよ
1ライブラリのクソ要素を根拠に言語自体をクソと言い張る思考には感心するよ
966デフォルトの名無しさん
2022/03/21(月) 12:38:23.15ID:BAdp3agq C#をクソと言ったことはないぞw 日本語不自由さには事欠かないねw
マルチスレッド同期機構と非同期処理を言語で比較する話で、やれデッドロックがどうのと言っており、かつC#が良いという結論を出していたので、>>876で.NET Frameworkのモデルの悪さを指摘し、goでいいのでは?と言っただけだろうにw
話を続けた結果、彼は案の定デッドロックの話を把握しておらず、Task機構についても誤解しており、await後のスレッドについても知見がなかったので、彼の知見は一般のC#erに劣るという結論を出しただけw
マルチスレッド同期機構と非同期処理を言語で比較する話で、やれデッドロックがどうのと言っており、かつC#が良いという結論を出していたので、>>876で.NET Frameworkのモデルの悪さを指摘し、goでいいのでは?と言っただけだろうにw
話を続けた結果、彼は案の定デッドロックの話を把握しておらず、Task機構についても誤解しており、await後のスレッドについても知見がなかったので、彼の知見は一般のC#erに劣るという結論を出しただけw
967デフォルトの名無しさん
2022/03/21(月) 14:48:44.25ID:bf5EvDSb いい加減に辞めたら?
それを持ってライブラリのモデルが悪いと言うのは変じゃないか
あなたの主張が誰一人説得できないのはあなたの問題であってスレの住人の問題じゃない
それを持ってライブラリのモデルが悪いと言うのは変じゃないか
あなたの主張が誰一人説得できないのはあなたの問題であってスレの住人の問題じゃない
968デフォルトの名無しさん
2022/03/21(月) 14:55:29.99ID:+0SCi87t 次スレでも不毛な話が続く予感
と言うか最初からこのスレは不毛地帯だった
と言うか最初からこのスレは不毛地帯だった
969デフォルトの名無しさん
2022/03/21(月) 18:06:00.78ID:BAdp3agq こんなに分かりやすいモデルの悪さを納得できないとか、お前がプログラマ向いてないだけwwww
970デフォルトの名無しさん
2022/03/21(月) 21:10:25.40ID:lQjpcq8E この人色々なスレでスレごとに違うもの叩いてるから
おかしな人なんだろ
おかしな人なんだろ
971デフォルトの名無しさん
2022/03/21(月) 21:29:05.60ID:BAdp3agq ついに俺のファンまで出現w
972デフォルトの名無しさん
2022/03/21(月) 22:18:23.01ID:IPXTt6Bp >>966
まあ君は「ぼくはわるくない!まわりがわるいんだ!」のタイプで、一生間違いを認めないんだろうけどさ。
C#はasync/awaitの導入で、『正しく使えば』、同期周りをユーザーが全く書く必要がなくなった。
結果、『意図的に間違えるような事をしなければ』、デッドロックはしなくなった。
そして見た目はほぼ同期であり、素晴らしく分かりやすかったので、他も追従した。
(だから他言語でもasync/awaitを『正しく』使ってる限りデッドロックはしないはず)
『正しく使えば』『意図的に間違えるような事をしなければ』なんて一々言わずともまともな人には大前提だし、
そもそもフレームワークは規定通り使わないとまともに動かない。
君がイカレてるから君の周りも同様の人しか居らず、自分達が掘った墓穴に落ちて大騒ぎしてただけだと思うぞ。
(「正しく使おう」とか、君は考えた事ないだろ)
とはいえ、平行線だし、合意を取る必要はないので、まあこれで終わりだね。
まあ君は「ぼくはわるくない!まわりがわるいんだ!」のタイプで、一生間違いを認めないんだろうけどさ。
C#はasync/awaitの導入で、『正しく使えば』、同期周りをユーザーが全く書く必要がなくなった。
結果、『意図的に間違えるような事をしなければ』、デッドロックはしなくなった。
そして見た目はほぼ同期であり、素晴らしく分かりやすかったので、他も追従した。
(だから他言語でもasync/awaitを『正しく』使ってる限りデッドロックはしないはず)
『正しく使えば』『意図的に間違えるような事をしなければ』なんて一々言わずともまともな人には大前提だし、
そもそもフレームワークは規定通り使わないとまともに動かない。
君がイカレてるから君の周りも同様の人しか居らず、自分達が掘った墓穴に落ちて大騒ぎしてただけだと思うぞ。
(「正しく使おう」とか、君は考えた事ないだろ)
とはいえ、平行線だし、合意を取る必要はないので、まあこれで終わりだね。
973デフォルトの名無しさん
2022/03/21(月) 22:18:46.22ID:IPXTt6Bp ちなRustの所有権とか見直してみたが、
以前読んだ時よりは大分文面が修正されてるのか、マシな印象だが、
いずれにしてもゴミなのは事実だね。RustはC++の出来損ないになってる。
一番の問題は、所有権でライフタイム管理を「入れ子」ではなく「投げ捨て」型にした事であり、
これで余分に手間が増えてしまってる。
「入れ子」の方が自然なので殆どの言語で採用されており、
問題は「入れ子」にならない場合にどうするかだが、
C:全部プログラマが管理しろ
C++:スマポ入荷しました
Rust:スマポと所有権(投げ捨て型)
なら、全く進歩してない。
必要なのはスマポに変わる何かであり、Rustは何ら役に立つ新規提案がない。
基本的にC++の構成をなぞっただけであり、おかしな補助輪を付けてしまってるので、
C++で苦労してない人にとってはC++の方がマシだろう。
それで改善点がメモリリークしなくなった程度では、流行りようがないよ。
(そもそもC++も『正しく使えば』メモリリークはしない。
君の視点だと文法的に問題がない=コンパイルが通る=正しく使う、なのだろうし、
実際こう出来ればいいのも確かだが、現状のプログラミング言語の大半はこうなってない。
これは一概に悪いというわけでもなく、プログラミングスタイルに自由度を与える為には必要でもある。
文法エラー=新しいスタイルを試しようがない=進歩しない言語、という事になるので)
以前読んだ時よりは大分文面が修正されてるのか、マシな印象だが、
いずれにしてもゴミなのは事実だね。RustはC++の出来損ないになってる。
一番の問題は、所有権でライフタイム管理を「入れ子」ではなく「投げ捨て」型にした事であり、
これで余分に手間が増えてしまってる。
「入れ子」の方が自然なので殆どの言語で採用されており、
問題は「入れ子」にならない場合にどうするかだが、
C:全部プログラマが管理しろ
C++:スマポ入荷しました
Rust:スマポと所有権(投げ捨て型)
なら、全く進歩してない。
必要なのはスマポに変わる何かであり、Rustは何ら役に立つ新規提案がない。
基本的にC++の構成をなぞっただけであり、おかしな補助輪を付けてしまってるので、
C++で苦労してない人にとってはC++の方がマシだろう。
それで改善点がメモリリークしなくなった程度では、流行りようがないよ。
(そもそもC++も『正しく使えば』メモリリークはしない。
君の視点だと文法的に問題がない=コンパイルが通る=正しく使う、なのだろうし、
実際こう出来ればいいのも確かだが、現状のプログラミング言語の大半はこうなってない。
これは一概に悪いというわけでもなく、プログラミングスタイルに自由度を与える為には必要でもある。
文法エラー=新しいスタイルを試しようがない=進歩しない言語、という事になるので)
974デフォルトの名無しさん
2022/03/21(月) 22:34:35.67ID:uhwdA/oK 記述や理解が楽になる言語、ってわけじゃなくて、そもそも安全で高性能な言語であることが前提の言語だし、別にRustはメモリリークは解決してない
手間が少なく、安全である必要もないなら、Rustを使う必要性は薄れる
手間が少なく、安全である必要もないなら、Rustを使う必要性は薄れる
975デフォルトの名無しさん
2022/03/21(月) 22:37:08.58ID:uhwdA/oK >手間が少なく、
手間を少なくしたくて、
の書き間違い
手間を少なくしたくて、
の書き間違い
976デフォルトの名無しさん
2022/03/21(月) 22:55:29.48ID:yRnc3iuh977デフォルトの名無しさん
2022/03/21(月) 23:25:18.39ID:IPXTt6Bp >>974,976
「GC無しで!!!」と謳ってたから「メモリリーク無し」は当然だと思ってたのだが違うのか?
(なお見てるのは主に公式勝手訳日本語版。そこすら全部読んでもないので)
> 手間を少なくしたくて、安全である必要もないなら
手間は少なくなってない気もするが。
安全って型安全の事?なら俺は型無しでもまあいいや程度なので、
確かに俺には意味がない言語なんだろう。
(型があっても困らないが、
C++みたいに関数ポインタを常用しようとするとテンプレートを書きまくらなくてはいけなくなるのは困る。
この点、関数型やスクリプト言語がどれもこれも型無しなのは非常に納得)
見た目Rustは、C++をある特定の使い方(と言っても多分本流本筋だが)に特化しただけのように見える。
だからそのプログラミングスタイルだった人には素晴らしく嵌るのだろうけど。
「GC無しで!!!」と謳ってたから「メモリリーク無し」は当然だと思ってたのだが違うのか?
(なお見てるのは主に公式勝手訳日本語版。そこすら全部読んでもないので)
> 手間を少なくしたくて、安全である必要もないなら
手間は少なくなってない気もするが。
安全って型安全の事?なら俺は型無しでもまあいいや程度なので、
確かに俺には意味がない言語なんだろう。
(型があっても困らないが、
C++みたいに関数ポインタを常用しようとするとテンプレートを書きまくらなくてはいけなくなるのは困る。
この点、関数型やスクリプト言語がどれもこれも型無しなのは非常に納得)
見た目Rustは、C++をある特定の使い方(と言っても多分本流本筋だが)に特化しただけのように見える。
だからそのプログラミングスタイルだった人には素晴らしく嵌るのだろうけど。
978デフォルトの名無しさん
2022/03/21(月) 23:37:51.67ID:5Szv6JZQ >>973
あまりにもデタラメすぎてむしろ苦笑
理解できなかったこと自体は仕方がないが
それにも関わらず他の言語をデタラメに叩くのはまともな人がすることではない
あまりにも間違いが多すぎて指摘しきれないが
例えば所有権はC++のスマートポインタ(unique_ptr/shared_ptr)で導入された概念
それなのになぜかC++にはスマポと書きながら所有権がなくRustのみに所有権と書いている
まずこの時点でC++の所有権とスマートポインタからして理解が出来ていない
さらにその後のRustに関することは妄想だらけになってしまっている
あまりにもデタラメすぎてむしろ苦笑
理解できなかったこと自体は仕方がないが
それにも関わらず他の言語をデタラメに叩くのはまともな人がすることではない
あまりにも間違いが多すぎて指摘しきれないが
例えば所有権はC++のスマートポインタ(unique_ptr/shared_ptr)で導入された概念
それなのになぜかC++にはスマポと書きながら所有権がなくRustのみに所有権と書いている
まずこの時点でC++の所有権とスマートポインタからして理解が出来ていない
さらにその後のRustに関することは妄想だらけになってしまっている
979デフォルトの名無しさん
2022/03/21(月) 23:38:20.57ID:VmldphcS980デフォルトの名無しさん
2022/03/21(月) 23:51:09.41ID:Juhg7nIl981デフォルトの名無しさん
2022/03/21(月) 23:54:59.16ID:IPXTt6Bp >>978
書き方が悪かったかもしれんが、
ブロックスコープで済み、それが最適な場所にすら所有権を強制して、
結果的に無駄に借用とかする羽目になってるのは事実だろ。
問題は、プログラミングでは大半の場合で「入れ子」が最適な事。
「投げ捨て」が向いてるのは、上から下に流れて終わり、のようなプログラムで、
サーバーは確かにそうだが。
書き方が悪かったかもしれんが、
ブロックスコープで済み、それが最適な場所にすら所有権を強制して、
結果的に無駄に借用とかする羽目になってるのは事実だろ。
問題は、プログラミングでは大半の場合で「入れ子」が最適な事。
「投げ捨て」が向いてるのは、上から下に流れて終わり、のようなプログラムで、
サーバーは確かにそうだが。
982デフォルトの名無しさん
2022/03/21(月) 23:58:58.49ID:uhwdA/oK あの子みたいにまともに議論する気がないのはお話にもならないけど、
知識が足りないのはまあしょうがないやろ
全部わかってるひとなんてこんなスレには1人もいないだろうし
>>977
伝わらなかったみたいだけど、そうそう、Rustは手間を少なくする言語でもないよ
データ競合なくして型も省略しまくりたい、みたいなのだったらHaskellみたいに型推論がやたら強い言語とかもあるし
知識が足りないのはまあしょうがないやろ
全部わかってるひとなんてこんなスレには1人もいないだろうし
>>977
伝わらなかったみたいだけど、そうそう、Rustは手間を少なくする言語でもないよ
データ競合なくして型も省略しまくりたい、みたいなのだったらHaskellみたいに型推論がやたら強い言語とかもあるし
983デフォルトの名無しさん
2022/03/21(月) 23:59:10.41ID:cgJvFkX3 >>981
入れ子って何?
入れ子って何?
984デフォルトの名無しさん
2022/03/22(火) 00:10:38.80ID:5pgpy3FW >>981
他の言語を批判したいなら、せめてもう少しは勉強したほうがいいよ
その意味不明な文章は理解不足が引き起こしている
もしどうしてもRustについて理解できないのならば、先にC++のunique_ptrを学んで所有権とは何かを理解すべき
あと他の人たちも指摘しているが「入れ子」や「投げ捨て」が意味不明
他の言語を批判したいなら、せめてもう少しは勉強したほうがいいよ
その意味不明な文章は理解不足が引き起こしている
もしどうしてもRustについて理解できないのならば、先にC++のunique_ptrを学んで所有権とは何かを理解すべき
あと他の人たちも指摘しているが「入れ子」や「投げ捨て」が意味不明
985デフォルトの名無しさん
2022/03/22(火) 00:14:23.89ID:JFwrpdmf >>982
なら何を目指してんのよ?
他に謳ってたのは「ゼロコスト抽象化」だが。
公式勝手訳日本語版まえがき、には
> 既に低レベルコードに取り組んでいるプログラマは、Rustを使用してさらなる高みを目指せます。
> 例えば、 Rustで並列性を導入することは、比較的低リスクです: コンパイラが伝統的なミスを捕捉してくれるのです。
一文目は素晴らしい。
が、二文目は、無いよりまし程度だし、そもそも無駄に手間が増えてる部分もあるから意味なくね?
なら何を目指してんのよ?
他に謳ってたのは「ゼロコスト抽象化」だが。
公式勝手訳日本語版まえがき、には
> 既に低レベルコードに取り組んでいるプログラマは、Rustを使用してさらなる高みを目指せます。
> 例えば、 Rustで並列性を導入することは、比較的低リスクです: コンパイラが伝統的なミスを捕捉してくれるのです。
一文目は素晴らしい。
が、二文目は、無いよりまし程度だし、そもそも無駄に手間が増えてる部分もあるから意味なくね?
986デフォルトの名無しさん
2022/03/22(火) 00:14:49.50ID:5pgpy3FW >>982
Rustを使うことで様々な手間が省けるのは事実
もちろん元の言語が何であるかによって、どんな手間が省けるようになるのか変わる
だから手間が省ける議論に関しては、比較対象を毎回固定しないと一般的な議論は無意味
Rustを使うことで様々な手間が省けるのは事実
もちろん元の言語が何であるかによって、どんな手間が省けるようになるのか変わる
だから手間が省ける議論に関しては、比較対象を毎回固定しないと一般的な議論は無意味
987デフォルトの名無しさん
2022/03/22(火) 00:23:48.60ID:RldJWe6f988デフォルトの名無しさん
2022/03/22(火) 00:31:00.32ID:1lLSjjDL 知識不足指摘されて意味のわからん逆ギレ起こすのは
同程度だったな
同程度だったな
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 【高市賃上げ】 自民党&維新の会「国会議員の給与を 月5万円アップさせる!」 今国会で歳費法改正。 月129万円→月134万円に [485983549]
- ヒロアカって面白いの?????????????????????????????????????🤔
- 犯罪者たち「刑事罰受けて罪は償った!被害者への賠償金?もう反省済みだから一円も払わねーよばーかwww」 [177178129]
- ㊗157円 [194819832]
- 【高市トイレ】 15億5000万円「黄金の便器」 落札される [485983549]
- 瑛太の父、首吊り自殺
