C vs C++ vs Rust Part.2

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2021/12/15(水) 12:35:50.91ID:biBE4xC0
競え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
2022/01/23(日) 02:19:46.48ID:c3dt58ZC
このスレによく書き込む奴の中に、アスペが一人か二人いるようだ
2022/01/23(日) 03:24:03.55ID:9yHGnoxe
JSはプログラミング言語として特殊すぎるから、それを基準にしてはいけない。
特にasync,await,PromiseはHTMLの特殊性からきているものなので、
「新しい概念だから他のプログラミング言語にも広めていくべき」
などという見方は間違っている。
2022/01/23(日) 03:33:10.01ID:GGOFm3A0
async await最初に導入したのってC#では
2022/01/23(日) 07:33:46.51ID:L+Dx9AR8
>>887
それ何?
ちょっと説明してみ
2022/01/23(日) 07:35:24.30ID:L+Dx9AR8
>>890
論破されて引っ込みつかなくなってからの人格攻撃でしょ
無能によくあるパターン
897デフォルトの名無しさん
垢版 |
2022/01/23(日) 09:13:42.66ID:5TQWnu47
そもそもマルチスレッド(タスク)や非同期処理はIO多重化への対処であってコアの数は関係無い。
(マルチコアのほうがより効率に処理できるが)
本質わかってないやつ多すぎ。
2022/01/23(日) 10:46:09.32ID:ToW82ksW
>>897
> 本質わかってないやつ多すぎ。
お前が一番わかってないだろ…
2022/01/23(日) 13:55:33.39ID:wM2Xc+Kp
このネタ毎回爆釣だね
2022/01/23(日) 14:03:32.33ID:imq9jRJ1
あと釣り宣言来ましたので今回はこれでお開きのようです
2022/01/23(日) 21:34:18.28ID:JoYL6ICj
>>897
それはOSレベルで工夫すればなんとでもなるので、マルチスレッドは必須ではない。
ところが、高速化に関しては、クロック数が頭打ちになってきているので、
マルチコア/マルチCPU化して、マルチスレッド・プログラミングで対処する
しかないことが出てきた。
したがって、あなたの主張は完全なる間違い。
実際は正反対。
2022/01/23(日) 23:36:55.40ID:2V1gRdrY
>>897の「マルチスレッド(タスク)や非同期処理はIO多重化への対処」のI/O多重化は当然通信も含むんじゃないか
>>901
OSレベルで工夫すればなんとでもなる、なんて無理
通信相手が返事を返すのに数msec、数秒、数分ということは現実に有り得る
シングルスレッドで同期のみならその間は何も出来ない
マルチスレッドであっても通信相手が多数ならば多数のスレッドが必要となりそれらが同期のみなら全て待ちのために停止
マルチプロセスにしても同様でいずれも無駄にOSリソースを使うだけとなる

つまり非同期プログラミングは必須
非同期ならばシングルスレッドでも並行(concurrent)に処理することができる
さらにマルチコアを有効活用するためにマルチスレッドで非同期にすれば並列(pararell)にも処理することが出来る
2022/01/24(月) 06:27:31.76ID:gNLiogmJ
>>902
> シングルスレッドで同期のみならその間は何も出来ない
Polling って知ってるか?
2022/01/24(月) 07:44:27.65ID:p86CtUav
>>903
select/kqueue/epollなどでポーリングして切り替えながらノンブロッキングで複数I/Oアクセスをする大昔から行われている方法のことだよな
これを同期プログラミングとは呼ばないな
むしろこのポーリング方式で切り替えながら呼び出すコールバック先を単なる関数だけからコルーチン対応にしたものが非同期プログラミングと呼ばれるくらいだ
そしてポーリング状態およびタイマー状態に応じて呼び出すコルーチンを切り替えていくのがスケジューラ
もちろん通常の非同期プログラミングではその部分はライブラリなどに任せてしまい呼び出されるコルーチン部分をプログラミングすることになる
2022/01/24(月) 08:06:22.73ID:hXaZrIwh
お前の頓珍漢な非同期の定義を語られてもw
2022/01/24(月) 08:43:07.50ID:YyWH0a11
ポーリング使うのは非同期処理だろ普通。
2022/01/24(月) 09:17:56.02ID:KiY6K78/
while(kbhit() == 0){ ... }
みたいなのを非同期処理って言うのか?
2022/01/24(月) 09:21:18.02ID:zGpECv1N
>>904
もうやめとけ
2022/01/24(月) 10:28:27.13ID:LHtgCFZv
kbhitの中でキー入力を待ち合わせるわけじゃないから非同期処理でいいんじゃね?
2022/01/24(月) 13:14:45.02ID:epnuPzmN
>>902
お前は、ゲームのキャラそれぞれが別スレッドで動かされていると
思ってるだろ。
昔からキャラは複数のハードで処理されていると思う人が後を経たなかった。
2022/01/24(月) 13:19:05.37ID:RtyiqZqM
非同期I/OとノンブロッキングI/Oの違いを述べよ
2022/01/24(月) 13:58:28.17ID:jdPj866/
Rustのビルドを高速化する方法
https://postd.cc/fast-rust-builds/
2022/01/24(月) 14:51:22.20ID:nrcwP8hb
相変わらず隔離対象のお二人さんは自分の狭い知識と観点が全てなのな
アプローチは違うが考え方も知識レベルも似たもの同士
だから反発し合う
2022/01/24(月) 14:59:04.35ID:jdPj866/
もう何を話しているかなんてどうでもよくて、相手が屈服するまで続けるという不毛地帯
2022/01/24(月) 15:14:06.56ID:7gZW+FH0
>>904
9割方その通りですが
epollやselectなどのポーリング結果で呼び出される対象は単なるコールバック関数でも非同期プログラミングですよ
例えばJavaScriptでは非同期関数のコールバックは単なる関数でよいです
もちろんコルーチンとなるasync関数から使えばawaitできる点でもっと利便性の高い非同期プログラミングになりますね

>>910
非同期プログラミングは必須と主張している相手に対してスレッドの話は噛み合っていないですよ
非同期プログラミングとマルチスレッドプログラミングは別です
同期/非同期とシングルスレッド/マルチスレッドは組み合わせ4通り全てが用途ごとに使われています
2022/01/24(月) 15:42:51.22ID:BWBJT0bl
9割方その通りですがw
お前が言うなやww
2022/01/24(月) 16:07:45.87ID:epnuPzmN
>>914
そりゃ、間違ってる相手は野ざらしにしておけないからな。
放置すれば日本が衰退するから。
2022/01/24(月) 16:17:39.92ID:jdPj866/
>>917
きみら二人以外誰も困らないよ
919デフォルトの名無しさん
垢版 |
2022/01/24(月) 17:40:26.73ID:g6coj3Jd
サーバーサイドはGo使えってのが常識になってきたっぽいぞ
Rustどこで使えばいいんだよ
2022/01/24(月) 17:51:20.76ID:RtyiqZqM
フットプリントが大きいと困るような低レベルなレイヤーには向いているだろうが、
ウェブアプリケーションは水平分散でなんとかなるからRailsとかも使えてたわけで
2022/01/24(月) 17:54:55.80ID:RtyiqZqM
ウェブアプリじゃなくて、もっと広くサーバサイドのことを本当に言ってるなら、
主語が大きすぎてよくわからん
2022/01/24(月) 18:37:54.23ID:5cKH7ieg
>>915
だからお前の頓珍漢な非同期処理を語られても困る
I/Oとプログラムが同時に動作してると言うなら単なる同期Write命令でも実際の書き込み動作はたいてい非同期
そんなこと言い出したら同期処理なんてほとんどないわな
2022/01/24(月) 18:46:19.25ID:jdPj866/
>>921
サーバで動かすツール・コマンドのことを言ってるんじゃなかろうか
2022/01/24(月) 19:35:27.58ID:p86CtUav
>>906
同意
ただしポーリングといっても意味合いが何種類かに分かれて
単純だがムダな状態チェックポーリングの定期もしくは常時ループもあれぱ
OSシステムコールselectなどの登録して待つタイプのポーリングもあれば
その上のレイヤで例えばRustがタスクfutureに対して状態を進めるためのポーリングなどがあり
皆の想定が異なるのかもしれない

>>910
その別スレッドを起動せずとも複数のタスクに対応できるのが非同期プログラミング
とはいえゲームのフレーム更新は常に期限が来てくれるので単純なやり方でも何とかなる
通信相手から返事が来る時間が読めないのとは違う意味で

>>915
async/awaitを含む間欠タイプを想定してコルーチンと書いてしまっていた
確かにコールバック渡し非同期関数もあるな
2022/01/24(月) 20:31:59.50ID:B4IfF+LP
人格複製おじさん定期
2022/01/24(月) 20:37:10.25ID:BgvoYA7m
言葉の定義の話ずーーっとやってるスレだな
2022/01/24(月) 20:49:02.48ID:/rel0eRU
それなのに一つも用語の定義ができないのはなぜなんでしょう?
2022/01/24(月) 22:39:10.70ID:IEcApiVS
>>927
一言で言えば自分自身で思考する能力がないから
2022/01/24(月) 23:44:28.94ID:Va4ZqunJ
みな生活に余裕がないのかマウンティングしかしない
もっと協力して生産的な話して
2022/01/24(月) 23:53:51.56ID:j0WdQYoJ
>>929
アホがえらそうにしてるのは看過できないよ。
日本が滅ぶから。
最近、プログラミングの世界で間違ってる主張が集団幻覚のように広まる
ことが多くなったから。それが、async,awaitが重要などと言う主張。
2022/01/25(火) 01:32:10.55ID:p2EQwX6c
async awaitで日本が滅ぶ説は初めて聞いたな
2022/01/25(火) 06:26:02.60ID:SxGSiHYf
すげーな。どうやったら滅ぶのか。
より良い代替案あれば教えてよ
2022/01/25(火) 08:15:47.90ID:vd4sNBPH
また暴れるから構うなよ
2022/01/25(火) 11:28:39.93ID:bY2fZbZk
>>930
「async,awaitが重要などと言う主張」をしてた人はどういう場面・状況において重要だと主張してたの?

async/awaitが重要な状況もあれば重要じゃない状況もあるだろうから文脈無しでは誰も同意しないよ
2022/01/25(火) 13:35:10.97ID:A3MKeF5O
>>934
async,awaitをサポートして無い言語はダメと言ったやつが居る。
2022/01/25(火) 13:58:14.45ID:dpcBILVU
ダメな状況もあればダメじゃない状況もあるでしょ
あらゆる状況でダメなものやあらゆる状況でダメじゃないものはそうないから
文脈を伴わない主張はあんまり意味がないよ
2022/01/25(火) 15:45:22.18ID:A3MKeF5O
>>936
現実には、駄目な文脈はほとんど無く、皆無に近い。
2022/01/25(火) 16:09:50.03ID:A8UC5jpN
ハイハイ、世の中にダメなものなんてないよねー
君以外は
2022/01/25(火) 17:11:59.79ID:UYaUcevz
>>935
>>888のことかーーーっ!!!
2022/01/25(火) 17:47:59.26ID:uKos3Mim
>>937
>>891 あたりの発言を読む限り、「皆無に近い」の例外=「async awaitがないとダメな言語」が JS 、他の言語には async await 必要ないという主張なのかな
だとしたら async await を導入した JS 以外の言語はなぜ導入したんだろうか
特に async await を発明した C# はわざわざ新たな概念を生み出しすらしたわけだけどそのモチベーションはなんだろう
ヘルスバーグが日本を滅ぼしたかったのかな

あと JS も別に async await ではなく Promise やコールバック、ジェネレーターで同じことはできるんだけど
なぜ JS に限って async await がないとだめなんだろうか
2022/01/25(火) 18:45:35.37ID:Suh34ira
>>940
新しい文法を追加しただけで
新たな概念は生み出してないよ
2022/01/25(火) 19:04:47.34ID:dI/lXZJY
非同期プログラミングへの苦手意識は自覚してるにも関わらず
昔の知識で俺は賢いんだと虚勢を張る100点おじ

非同期プログラミングの定義すら分かっていないにも関わらず
聞き齧った知識でとにかくマウントとりたい複製おじ

さて軍配はw
2022/01/25(火) 19:09:20.65ID:uKos3Mim
>>941
文法でも概念でもどっちでも良いけどわざわざ新たな機能を追加したわけでそれはどういう意図があったんだろうね
2022/01/25(火) 19:19:28.61ID:3IePzztS
>>930
async-awaitで日本が滅ぶと主張するには根拠が足りん
async-awaitを使った場合と使わなかった場合でプログラミングにどういう問題点やデメリットが発生したのか具体的に述べよ
2022/01/25(火) 19:43:42.73ID:INf4V5XQ
>>943
書き易くしただけだろ
2022/01/25(火) 21:38:27.02ID:2yn0ql20
>>945
いや根本的に違ってくる
例えばこの数値を返してくるサイト3つからその和を求める例
let n1p = fetch(url1);
let n2p = fetch(url2);
let n3p = fetch(url3);
let sum = await n1p + await n2p + await n3p;
これをawait使わずに書くと?
2022/01/25(火) 21:44:45.91ID:z/wYSAJ8
>>944
一人二役やめろってww
2022/01/25(火) 21:51:37.76ID:5O9CJGEe
>>946
スレッド起こして各スレッドの終了待ち合わせて加算するだけだろ
やってることは変わらんよ
2022/01/25(火) 22:00:39.47ID:4VdIBcfH
>>946
さすがにそれは草
2022/01/25(火) 22:01:29.32ID:4VdIBcfH
根本的に間違ってるwwwww
2022/01/25(火) 22:04:32.52ID:3IePzztS
>>948
そこは並列となるOSスレッドは使わずに
シングルOSスレッド内で非同期に並行に可能だな
2022/01/26(水) 00:14:44.20ID:2DCGasPY
>>946
そもそもそんな例は、デスクトップアプリでは有り得ない。
2022/01/26(水) 00:20:09.97ID:2DCGasPY
デスクトップアプリというのは、Word,Excel,PowerPoint,AdobePhotoshop,
Illustrator,ClipStudio,各種CAD,各種3D Modeler/Renderer, 各種Simulator,
PowerDirectorなどの動画編集ソフト, 音楽作成ソフトなどのことなのだから、
3箇所の別のURLからデータをfetchして足す、などというようなソフトは想定外。
ありえたとしても例外中の例外で、そんな特殊ケース、レアケースのためだけに
有用な機能を付けることは重要ではない。
2022/01/26(水) 01:20:32.34ID:bGJ0opg8
>>953
C#にasync awaitを導入したのは愚かな判断だったということ?

>>945
いやそうなんだけどさ、そんな機能入れるのは愚かだと主張する人がいるので
2022/01/26(水) 01:36:30.18ID:mcBZ9zB7
asyncウンコード vs 80年代プログラミング
2022/01/26(水) 01:48:16.50ID:MhOmah5m
>>953
複数の非同期処理を待ち受けて結果を合成するような処理は高機能なデスクトップアプリならいくらでもやってる
2022/01/26(水) 06:18:43.61ID:BymNOWPj
Excelでも計算式はマルチスレッドでやってるしな
2022/01/26(水) 06:47:40.74ID:1No2egej
>>919
C/C++が使われてるケース全てだろうな
2022/01/26(水) 16:43:19.04ID:q/gd6wxB
>>956
高速化のためとAPIがI/O完了の柔軟な待機に対応して無い事が有ることから
マルチスレッドでの処理は行われているが、JSのようなシングルスレッドでの
async,awaitは行われて無いし、行う価値も無い。
2022/01/26(水) 17:05:33.66ID:nl68eKRB
同期ブロッキングなプログラミングしか出来ない人はマルチスレッドに逃げるしか手がない
2022/01/26(水) 17:51:33.36ID:q/gd6wxB
>>960
Win32APIの ファイルI/Oは、同期にも非同期にも対応しているが、
非同期だと柔軟性に欠けたことしか出来ず、やりたいことが出来無い事がある。
仕方が無いので、別スレッドを起動して、その中で同期的にWin32 I/Oを
使って待機状態にする。
2022/01/26(水) 18:04:17.90ID:v6L2EY0F
>>959
今はOfficeをはじめとした各種デスクトップアプリで
async/awaitに相当するやり方が普通に行われてるよ
マルチスレッドだけど各スレッド内でもタスクが切り替わる形
何でかって言うとそのほうが単純なマルチスレッドモデルに比べて少ないリソースで高いパフォーマンスを出せる場合が多いから

この辺から入門してみたら?
https://docs.microsoft.com/en-us/cpp/parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models
2022/01/26(水) 18:55:15.29ID:YVr9NW6i
マルチスレッドでプログラミングできる奴が非同期プログラミングできないとか意味不明w
964デフォルトの名無しさん
垢版 |
2022/01/26(水) 18:57:20.72ID:iLK8Wqk9
>>959
async/awaitは非同期プログラミングにおける便利な抽象化の一つだが
以下の2つのケースどちらの場合にも用いることができる
(1)並行(concurrent)にシングルOSスレッド内で別タスクを用いる場合
(2)並列(parallel)にマルチOSスレッドにおける別スレッドを用いる場合
どちらもawaitを用いている自分から見て非同期に別タスク/別スレッドが実行されawaitで同期的に待ち合わせとなる
各々の別タスク/別スレッドにおいて使われているのが同期I/Oか非同期I/Oかは関知外なのでどちらでもawait利用可
ただし同期I/Oを用いるとブロックされるのでシングルスレッドなら他を進められなくなりマルチスレッドなら無駄にスレッドが浪費される
2022/01/26(水) 19:56:03.61ID:5QsdJHww
アスペじゃない人はこういう時はどうすればいいの?
2022/01/26(水) 21:12:52.93ID:oGR6qD+W
>>963
実際できない人がたくさんいる
自分が賢いと思い込んでるお年寄りや
頭が固くなってるお年寄りに多い

スレッドとクリティカルセクションで考える方が
分かりやすい場合も多々あるからね
2022/01/26(水) 21:29:54.45ID:Z5eFNXQp
>>966
> スレッドとクリティカルセクションで考える方が
イベントとかセマフォは使わんの?

> 自分が賢いと思い込んでるお年寄りや
> 頭が固くなってるお年寄りに多い
自己紹介やね w
2022/01/26(水) 22:08:02.72ID:KsJFT5nW
>>967
クリティカルセクションも知らないのか
win32脳恐るべし
2022/01/26(水) 22:25:33.62ID:drBs6KnV
>>968
> クリティカルセクションも知らないのか
どうやったらそんなアホな結論に至るの?w
2022/01/26(水) 22:48:23.70ID:uxP3YVvM
>>968
win32api にcriticalsection ありますけど…
https://docs.microsoft.com/en-us/windows/win32/sync/critical-section-objects
2022/01/26(水) 22:52:37.00ID:aU8JK1oV
レスつけるときは相手の書き込みを3回音読して読み違えてないか確認してからにしなよ
2022/01/26(水) 23:00:32.17ID:ZuJ8vc16
>>969
クリティカルセクションを知ってれば
「イベントとかセマフォは使わんの?」なんてアホな返しはしないから

>>970
知ってるよ
win32脳と書いてる意味を考えて
2022/01/26(水) 23:03:27.65ID:uxP3YVvM
>>972
クリティカルセクションだけではどうにもならない場合もありますね
私はシグナルを併用していましたが、なにかうまくないみたいでスタベーションに悩まされたまま放置してしまいました…
2022/01/26(水) 23:07:58.33ID:2GXIfjxN
>>972
> クリティカルセクションを知ってれば
> 「イベントとかセマフォは使わんの?」なんてアホな返しはしないから
どうやったらそんなアホな結論に至るの?
もしかしてイベントとかを知らんのか?w
2022/01/26(水) 23:12:17.31ID:aU8JK1oV
c++ vs rust に関連する話題ほとんど出ないまま2スレ目終わりそうだけどスレ名変えた方が良いのでは?
2022/01/27(木) 00:57:49.26ID:vDXAxF7H
>>975
いや、Rustには、async, await的なものがあるが、C++にはないから
C++が劣ってるなどと言う良くある間違った集団幻覚を唱える人が
後を絶たないから、C++ vs Rustの話題になってる。
2022/01/27(木) 06:17:23.60ID:Z7vdX18s
>>972
クリティカルセクションが win32api に装備されている以上、クリティカルセクションを知らない者は、もはや win32 脳ですらないのでは?
2022/01/27(木) 06:52:28.62ID:13QYNkYp
てか、>>961は非同期I/Oの代わりに同期I/O+スレッドって言ってるんだから普通に組むならイベント通知の方が楽だと思うんだが
2022/01/27(木) 13:07:08.02ID:hWkHkx2k
Rebuildの宮川さんが仕事でCとRustを使ってる模様
2022/01/27(木) 15:12:30.35ID:LojT3k5n
大雑把にI/O観点で二つに分けると
昔は同期I/Oでブロックされるからマルチスレッド
今は非同期プログラミングでスレッド数はシングルからCPUコア数が上限
RustのFutureタスク、GoのGoルーチン、JavaScriptの非同期Promiseやコールバック
いずれもプロセス内スケジューラがI/O多重化(select/epoll)やタイマーなど管理して非同期プログラミングを支えている
981デフォルトの名無しさん
垢版 |
2022/01/27(木) 16:08:47.86ID:pSZOF2by
タンジェロ...?
2022/01/27(木) 16:36:31.72ID:hWkHkx2k
>>980
> 今は非同期プログラミングでスレッド数はシングルからCPUコア数が上限
え?
何の言語でどのスレッド機能を使うとそんな制限にあうんだ?
2022/01/27(木) 16:37:02.13ID:4DQKoSsj
ここまでディスクのコンジェスションについて言及なし
2022/01/27(木) 16:46:02.85ID:LojT3k5n
>>982
制限ではない
効率を最大限にするために敢えて用いるOSスレッド数の上限をCPUコア数までに抑えて用いるのが現在の主流
その中でタスク数を何万でも好きなだけ動かす
2022/01/27(木) 16:55:46.74ID:hWkHkx2k
>>984
> 効率を最大限にするために敢えて用いるOSスレッド数の上限をCPUコア数までに抑えて用いるのが現在の主流
へー
でもさ、そのOSで動いてるプロセスは、君が作ったアプリだけじゃないんだけど
上限をCPUコア数までに押さえる理由が何かあるとすれば、他のプロセスも意識する必要あるんじゃないの?
ないの?
2022/01/27(木) 17:08:59.66ID:LojT3k5n
>>985
もちろんその通り
だから専有機なら上限で用いる
そうでないなら各configなど設定調整
2022/01/27(木) 17:14:15.89ID:hWkHkx2k
>>986
> だから専有機なら上限で用いる
「現在の主流」というのは、「専有機」での話?
それとも一般的な話?
2022/01/27(木) 17:35:31.13ID:rqwTLqGq
各ランタイムのデフォルトのスレッド数がどうなってるか調べれば標準的かどうか分かるんでないかね
2022/01/27(木) 17:36:02.14ID:hWkHkx2k
なんかこの人、俺用語が多くて何言ってるんだかよくわかんないんだよね

「非同期 "プロセス内スケジューラ"」の検索結果
2 件 (0.30 秒)

・・・2件?
2022/01/27(木) 17:36:38.66ID:cK3g3Gve
>>987
専有機とか関係なく一般的やね
例えばGoでもRustのasync_stdでもtokioでも同じ
非同期ランタイムにより使用されるスレッド数上限のデフォルト値はCPU総コア数
2022/01/27(木) 17:37:50.01ID:hWkHkx2k
まともな奴いないのかよ

「"ランタイムのデフォルトのスレッド数"」で検索
"ランタイムのデフォルトのスレッド数"との一致はありません。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況