[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/27 03:27 / Filesize : 361 KB / Number-of Response : 1025
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++ vs Rust



1 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:04:49.48 ID:nPKzA798.net]
競え

856 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 01:49:17.06 ID:kjD6KzfX.net]
>>836
ハッシュの表の様なものが固定サイズであるところの
素朴なハッシュの検索は、Nが大きい時には、O(N)。N が小さい時には、O(1)。

Nが大きくなるに従ってその表を時々大きくしていくようなものは、
考慮の対象にはしない。

857 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 01:53:00.58 ID:kjD6KzfX.net]
>>837
[補足]
以下、ハッシュの表の様なものが固定サイズであるところの素朴なハッシュの検索
についてだけを考える。
ハッシュの中に入っているデータの個数が N 個の時に、あるキーを持つ
データを1個だけ探すのに掛かる平均時間を g(N)とすると、数学的には
g(N)=O(N)。
しかし、この g(N) は、g(N) = a N + b と近似した場合の a の値が極端に小さい。
なので、N が小さい時には、O(1)であるかのように振舞う。
そういう意味だ。
これで理解できないなら、数学的想像力や理解力が足りてない。

858 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 02:05:17.38 ID:McsJgKJD.net]
RubyガイジとRustガイジの熱いマッチが今始まる

859 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 02:22:55.84 ID:XuzXkdX2.net]
>>839
この数学100点マンはRustを叩いてる人で常に生ポインタ派のC/C++史上主義な人
ただしコードを出したことがないのでプログラミング能力がないと推定されている
さらにオーダーについても勝手な定義で無茶な主張を繰り返している

860 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 02:24:44.88 ID:McsJgKJD.net]
>>840
分かっと

861 名前:るわ
語呂がいいからRustガイジって言っただけ
[]
[ここ壊れてます]

862 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 02:33:01.01 ID:kjD6KzfX.net]
>>840
お前もとことん馬鹿だな。
コード書いても抽象理解が出来ない人には、そのコードの本質は分からんし、
こんなところに書ききれるわけでも無いからかけないだけだ。
なお、抽象 = シンボライズ、シンボリック
という意味で、曖昧や玉虫色という意味では無いぞ。
本質的な部分を記号化、定理化、規則化、一般化して理解できるようにしたもの
を「抽象化」と言う。

863 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 03:29:12.50 ID:rYDKtnCr.net]
linkedlistの計算量を勘違いし
平衡二分木とハッシュセットを混同する
数学100点マンがいると聞いて

864 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 05:30:40.66 ID:lQ57RfmU.net]
>>842
>こんなところに書ききれるわけでも無いからかけないだけだ。
スレじゃなくて、IdeoneとかGihubのgistに書いてもらえれば大丈夫ですよ



865 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 05:43:24.70 ID:4SyL85E7.net]
>>838
>、g(N) = a N + b と近似した場合の a の値が極端に小さい。…@
なぜですか?
ハッシュテーブルの実装方法から論じてみください
もしかして、あなたは@を数学の公理、みたいに扱っているのですか?そんなことではコンピューターサイエンスは無意味だし面白くないでしょう?
でもC/C++ 至上主義者というのなら、私と気が合いますね

866 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 08:46:35.08 ID:XZMNlO6i.net]
>>775
MFC(Win32)に関しては、メッセージキューとイベントは別物だぞ。 イベントは、
イベント処理中でも降って来る。

867 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 10:07:17.08 ID:OAOUQrou.net]
なんでハッシュテーブルの話になったのかと思えば>>813にいちゃもん付けたいだけか

868 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 11:16:09.54 ID:O1qGwT+t.net]
ベンチマークもなしに実時間の話をされてもなぁ
しかも具体的な実装上の問題点の指摘もなく他人のベンチマークは信用できないとか宣われてしまうとこちらとしては会話しても意味がない人なんだと判断せざるを得ないんですよね

869 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 11:52:31.39 ID:q0VGOju1.net]
>>845
公理ではなくて、処理時間の平均値を確率論で書いている。

870 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 11:57:28.95 ID:q0VGOju1.net]
>>849
[補足]
確率論で証明することが出来るが、とてもめんどくさいので割愛する。
失礼だが、質問者のレベルから推測すると、ちゃんと書いても理解できない。

871 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 12:01:12.30 ID:EOOuRFRK.net]
>>845じゃないけど
最悪値が重要な用途もある
また、確率はデータの分布が決まってはじめて決まるもの
分布次第ではあなたの想定通りにはならない

872 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 12:06:08.85 ID:q0VGOju1.net]
>>851
確率論では、ランダム性を仮定する。

873 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 12:43:27.37 ID:XuzXkdX2.net]
>>842
ここはC++ vs Rustスレなのだからコードを出さなければ何も判定できない
机上の空論ばかり書き綴るよりも現実に使われるCPUと向き合わなければならない

例えばRustの標準ライブラリHashMapでも用いているSwiss Tables法ではハッシュ衝突時の別エントリ探索にSIMD命令を用いている
CPU命令4つで16エントリ同時に探索候補を判別していきメモリキャシュも活かすようこのためのメタデータを連続領域に配置している

874 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 13:08:20.11 ID:PE/XVSQC.net]
>>852
値がガウス分布に従うとかなんらかの仮定をおいていると思うのですがあなたの言うランダム性とはなんですか
あらゆる分布を想定しているのですか



875 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 13:21:52.08 ID:iO91q1zt.net]
>>831
> O(N)の定義は、Nを無限に大きくしていった時に、
コンピュータサイエンスでアルゴリズムの評価をするときは、Nを無限にするなんて考えません
ハッシュアルゴリズムはO(1)でFA

876 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 13:46:42.22 ID:lQ57RfmU.net]
>>848
ずっとそんな感じ
計算量ではちゃんとわからない、コストがかかって遅くなる、とか言いつつ、忙しいから実装はできない、お前は馬鹿だから理解できない、みたいなことを数ヶ月に渡って大量に書き込み続けてる
数学でいつも100点取るらしいし、さぞ偉いお方なんでしょうなあ…

877 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 18:09:07.25 ID:cGshi4Y2.net]
>>854
いまの場合で言えば、N個のキーに対するハッシュ値が、可能な限り重ならずに
分布すること。

878 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 19:52:13.50 ID:4SyL85E7.net]
>>856
リジェクトされたネタだとか…

879 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 20:04:46.70 ID:h+yNZQm8.net]
>>857
意味不明

880 名前:デフォルトの名無しさん [2021/12/06(月) 21:08:31.14 ID:4qQbBrsy.net]
ハッシュが衝突しやすいコリジョンデータを使ったDDos攻撃が出来るのでは?

881 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 13:11:29.70 ID:jcfwZSTS.net]
>>854
最大M個の振り分け能力があるハッシュ構造にN個の(key, value)ペアを
書き込んでいる場合を考える。
ただし、Mは 定数とし、N が大きくなっても拡張していかないものとする。
このとき、一回の検索に掛かる平均時間をg(N,M)とすると、
ほぼ、
g(N,M)=b・(ceil(N/(2M))
ただし、
・b は、一回の文字列比較に掛かる時間。
・ceil(x)は、xを越えない最小整数。
と書ける。これは、ほぼ、
g(N,M)=b・((int)(N/(2M) + 1)
    =(int)(N/(2M))*b + b
と書ける。Nが大きい時には、
g(N,M)=a*N + b
a = b / (2M)
と書ける。
Mが大きい時、aは、小さいが0ではないので、処理時間は、O(1)ではなく、O(N)である。

882 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 13:27:33.41 ID:pFZAiCY5.net]
Wikipediaでも明記されている
・ハッシュテーブルの検索や追加はO(1)
・ハッシュテーブルの拡張もO(1)

> ハッシュテーブルはキーをもとに生成されたハッシュ値を添え字とした配列である。
> キーを要約する値であるハッシュ値を添え字として値を管理することで、検索や追加を要素数によらず定数時間O(1)で実現する。
>
> 利用率が一定を超えた場合に、より大きいサイズのハッシュテーブルを用意して格納し直す操作が必要となる。これをリハッシュ (rehash) と呼ぶ。
> この操作はすべての要素のハッシュ値を再計算して新たなハッシュテーブルに格納するためO(n)であるが、
> 配列のサイズを指数的に拡張する事で、動的配列の末尾追加操作と同様に償却解析によって計算量をO(1)とみなす事ができる。

883 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:35:15.82 ID:iH9Jzajc.net]
>>862
例えば、M=128で、128種類のハッシュ値に振り分けられるなっている
ハッシュ構造の場合、N=128万にすると、1つのハッシュ値に1万個の
(key, value)のペアが対応している。
そして、1個のkeyを検索する時、平均的には、1万個の半分の5000回
くらいkey値の比較を行うと一致するものが見つかる。
なのでこの場合、1個のkeyに対する検索時間は
5000*(keyの比較に要する時間)
となる。
Nを128億にすると、
5000万*(keyの比較に要する時間)
になる。

884 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:52:05.46 ID:iH9Jzajc.net]
>>863
誤:128種類のハッシュ値に振り分けられるなっている
正:128種類のハッシュ値に振り分けられるようになっている

誤:5000*(keyの比較に要する時間)
正:5000*(1回のkeyの比較に要する時間) // ()内は、keyが文字列の場合、1回の文字列比較に掛かる時間。

誤:5000万*(keyの比較に要する時間)
正:5000万*(1回のkeyの比較に要する時間) // ()内は、keyが文字列の場合、1回の文字列比較に掛かる時間。

>>862
> 利用率が一定を超えた場合に、より大きいサイズのハッシュテーブルを用意して格納し直す操作が必要となる。これをリハッシュ (rehash) と呼ぶ。
>>861 の4行目で、リハッシュは行わないと断った。
はっきり、Mを定数とすると書いている。



885 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 17:09:08.05 ID:Io+x78vq.net]
数学100点マンの机上の空論がさらに輪をかけてるな

>>864
> 最大M個の振り分け能力があるハッシュ構造にN個の(key, value)ペアを書き込んでいる場合を考える。
> M=128で、128種類のハッシュ値に振り分けられるようになっている
> Nを128億にすると、5000万*(keyの比較に要する時間)になる。

つまり128億個のデータを128個のハッシュ値パターンでハッシュテーブルに格納か
現実の世界ではなく一人だけの特殊な妄想世界で空論

886 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 17:09:50.30 ID:q8J3SSC4.net]
worst caseはO(n)って言えば一言で終わる話だった

887 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:11:38.99 ID:U30hRDTM.net]
平均もO(n)だろ

888 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:19:10.70 ID:j/zIE0U5.net]
でそれにC++やRustとどう関係が?

889 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:22:43.53 ID:U30hRDTM.net]
さあ

890 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:27:32.38 ID:2dc6hCU/.net]
とにかく、この >>813 の書き込みはすごい、ってことだ
このスレの集大成に近い出来だと思う

891 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:35:18.60 ID:U30hRDTM.net]
>>623 を無駄に長く書いただけに見える
>>624 はスルーで

892 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 18:37:25.57 ID:U30hRDTM.net]
計算可能性 > 計算オーダー > 計算時間

混ぜるな危険

893 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:22:19.85 ID:hXWP+cLq.net]
>>861
あなたの言うランダム性の定義を伺いたかったのですが
挿入されるkeyはどのような分布に従う仮定なのですか

894 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:28:32.42 ID:XGUQnarH.net]
確率論では衝突の発生確率が一様分布と仮定した場合、衝突回数はポアソン分布に従う



895 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 19:37:51.93 ID:smG53G6j.net]
要するに衝突回数は幾何平均(算術平均)とは異なる

896 名前:デフォルトの名無しさん [2021/12/07(火) 19:51:15.50 ID:EZ68mIS/.net]
>>873
衝突が起きるとしても、5chのIDが被る程度の稀な確率となる程度のランダム性を想定しています。

897 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 20:13:15.75 ID:hXWP+cLq.net]
>>876
分布については特に何も想定してないということですね

898 名前:デフォルトの名無しさん [2021/12/07(火) 20:15:39.60 ID:EZ68mIS/.net]
>>877
データに合わせてハッシュアルゴリズムを変更する、アダプティブ・ハッシュ・テクノロジー™をご提案いたします。

899 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 20:16:48.35 ID:EfSST75b.net]
結局のところ衝突回数が算術平均に従う場合はO(n)であるが、この場合確率そのものが極めて小さく分布の期待値が小さいためO(1)に極めて近いとしか評価の仕様がない

900 名前:デフォルトの名無しさん [2021/12/07(火) 20:23:38.39 ID:EZ68mIS/.net]
>>813は、言語のバイナリ生成能力を論じるときに計算オーダーは意味がないと言っているのでは?
その理由として、同一の計算オーダーを持つアルゴリズム、あるいは同一のアルゴリズムから、どちらが優れたバイナリを生成できるか論じているので、それはベンチでしか判明しない、と挙げていると思うのです。

901 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 20:33:30.11 ID:U30hRDTM.net]
特定のアルゴリズムを特定の計算オーダーで実装出来ない言語もあるので
全く意味がない事はない

902 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 21:45:05.70 ID:Io+x78vq.net]
RustとC++は万能

903 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 21:53:06.58 ID:WxNsBn2X.net]
リンクリストの話は?リンクリスト、皆のアドバイスを受け入れて辞め、ハッシュテーブルに絞ることにしたんですか…

904 名前:デフォルトの名無しさん [2021/12/07(火) 21:54:51.19 ID:EZ68mIS/.net]
リンクトリストね?



905 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:00:58.24 ID:APR/hTgK.net]
>>873
異なるキーに対するハッシュ値が、可能な限り異なるランダム性。

906 名前:デフォルトの名無しさん [2021/12/07(火) 23:07:18.00 ID:APR/hTgK.net]
>>866
処理時間を g(N)とすると、worst case ではなく、平均が、g(N) = O(N)。
O(N)という記号を使わずに、詳細に書くと、
g(N) = a * N + b
だが、利用されるハッシュ値の振り分け数が M 個の場合、
a = b / M
程度となり、M = 1024 の場合、a は、0.001 * b 程度の小さな値になる。

横軸を N、縦軸を g(N) とするグラフを書くと、一次関数となり、y 切片が b、
傾きが 0.001 * b 程度となり、ほぼ水平であるが、僅かに右肩上がりとなる。
もしこれが完全に水平なら O(1)。
今回の場合、非常に水平に近いが確実に単調増加であるので、O(1)のように
見えるが本当は O(N)。

907 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:13:13.90 ID:Io+x78vq.net]
>>886
O(1)とO(N)の間にはO(logN)やO(√N)など無数にある

908 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:15:17.87 ID:APR/hTgK.net]
>>887
もち

909 名前:ん、それは当然。
それは全く否定していない。
[]
[ここ壊れてます]

910 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:18:01.46 ID:APR/hTgK.net]
>>888
[補足]
「グラフが水平なら O(1)」とは書いたが、「O(1)ならグラフが水平」とは
書いてない。
つまり、グラフが水平である事はO(1)であることの十分条件であるが、
必要条件ではない。

「グラフが水平 ⇒ O(1)」とは述べているが、その逆の
「O(1) ⇒ グラフが水平」とは述べて無いことに注意。

911 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:59:06.43 ID:q8J3SSC4.net]
>>886
それがworst caseの話なんだってw
amortized average caseがO(1)とみなせる前提をガン無視して
「ほらO(n)だろ」とか言ってても誰も相手にしてくれない

912 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 00:07:41.43 ID:ixfpknHK.net]
>>890
いや、違う。
平均は、
g(N) = b * (N/M + 1)
程度。
worst は、
g(N) = b * N

どちらも O(N)ではあるが。

913 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 00:20:29.77 ID:ixfpknHK.net]
>>891
なお、数学の秀才なら気付くと思うが、この平均の式は、本当は正しくない。
ただし、大体は合ってる。

914 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 00:22:38.55 ID:ixfpknHK.net]
>>892
[補足]
何が正しくないかというと、本当は、ある箇所を2 で割る必要があるから。
例えば次のように :
g(N) = b * (N/(2M) + 1)
しかし、これでも、まだ少し正しくない。



915 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 01:40:32.51 ID:qP3Pvuq5.net]
1次関数の試験で100点取れそうな説明

916 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 01:51:55.62 ID:/oyDmL+H.net]
数学100点君は数学用語の定義を誤解釈しまくって理解してしまっている感じ
説明の内容からしても多分中高生か啓蒙書を読みかじったおじさんなんだろ

917 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 03:16:15.50 ID:ixfpknHK.net]
なんでここは、数学が理解できない人ばっかりなんだ。
だから、プログラマが馬鹿にされる。

918 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 03:18:58.91 ID:ixfpknHK.net]
C++ vs Rust を語る前に、せめて、数学的に明らかに正しいことを理解できるから
でないとどうにもならん。
それ以前の問題。

919 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 03:20:41.94 ID:ixfpknHK.net]
それと、科学者にとって最も大事なことは、頭の良さでも知識でもなく、
正直さだ。
自説を主張するために正しい主張を否定してはいけない。

920 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 03:21:17.48 ID:H0CVJE/p.net]
「ランダムアクセス」って任意の要素にアクセスすることを指すんだけど、乱択的に与えられた要素にアクセスすることをそう呼ぶんだと思い込んでる奴が複数いてクソワロ

921 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 03:25:58.49 ID:ixfpknHK.net]
>>894
結果は一時式でも、それを求めるには確率論以前に、イマジネーションが必要。
どこかに書いてある知識の組み合わせでは導出できない。
確率論は、自分の想像力が重要に成るので、計算力だけでは無理な分野。
書いてある定理を組合すだけでも導けない。
数学は、基礎の部分はイマジネーションで作られているから、頭の良い
人以外には作れない。
いくら勉強しても無駄。

922 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 04:31:15.37 ID:VGgp1CiZ.net]
ハッシュに格納するまでの過程は確率論でも格納された後はただのリニア検索だけの話にすり替わってないか?

923 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 08:47:15.25 ID:qP3Pvuq5.net]
>>900
誰でも後から客観的に検証できる性質が数学含む科学の特徴ですよ
イマジネーションって言い換えればあなたの妄想ってことですよね

924 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 12:57:52.28 ID:9TnsTyEO.net]
データ追加の話をするのであれば、どのようなアルゴリズムでも無限個数を追加するなら無限時間かかるわw



925 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 13:53:27.51 ID:Ji0BscRU.net]
chaining使ってる場合でスロット数(M)が固定値かつ要素数(N)に対して小さければO(n)になるのは当然だよね

それで100点君は何を主張したいんだっけ?

926 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 14:37:30.67 ID:Ji0BscRU.net]
これか >>813

>また、N個のデータを持っているハッシュ構造は、1回の検索は、数学的に厳密にはO(N)
>だが、実験的(実際的)にはO(1)のように振舞うと言われており、厳密に扱うには、
>オーダーの記号だけでは表現しきれない。

「1回の検索は、数学的に厳密にはO(N)」になるのは
一般的なハッシュテーブルの実装とは関係ない架空の条件下の話だね

つかBig O記法が何の目的で使われるのか把握してなかったのか・・・
長々とお疲れさんでした

927 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:48:45.17 ID:fOrA5OAT.net]
何の目的で使われるの?せっかくだから聞いておきたい

928 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 18:48:01.53 ID:9TnsTyEO.net]
なにを言いたいのかさっぱりわからないんだが、さかのぼって読んでみると

>>861
> 最大M個の振り分け能力があるハッシュ構造にN個の(key, value)ペアを
> 書き込んでいる場合を考える。
> ただし、Mは 定数とし、N が大きくなっても拡張していかないものとする。
> このとき、一回の検索に掛かる平均時間をg(N,M)とすると、
> ほぼ、
> g(N,M)=b・(ceil(N/(2M))

いや、全然違うし
一体何をあらわしてる式なんだ?

929 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 18:55:15.30 ID:swPCtrVA.net]
c++: cほど性能はいらないけど、コーティングでcより楽したい
Rust: c++くらいの性能はほしいけど、間抜けがメモリリークをエンバグするのを防ぎたい

Rustの狙いはc++&コーティング規約&lintでけっこうカバーできるけど、Rustは言語仕様としてコーダー全員に規約遵守を強制しているのが強み。
Rustが本当に普及してきたら、Rust対抗としてC++と連携できるSmartC++が出てくるんじゃないのかね。

930 名前:デフォルトの名無しさん [2021/12/08(水) 19:27:33.65 ID:gZbwMfFK.net]
>>908
>Rust: c++くらいの性能はほしいけど、間抜けがメモリリークをエンバグするのを防ぎたい

これが重要だな。

931 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 20:11:11.64 ID:nFeiLLyh.net]
C++はCと同じ性能が出る
楽をしなければ

932 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 21:56:00.76 ID:tBq4QMAR.net]
間抜けがミスをするというと十分に訓練を受けたパログラマーならミスをしないと読めるが
実際にはコードベースが大きくなると間抜けなミスをする確率が高まるので
自分はミスをしないと思い込むのではなくミスした場合も検出できるようにすべき
静的解析やrustの真価はそういうところにあると思う

933 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 22:28:44.41 ID:nUOO01He.net]
>>902
ここの人には理解できないようだがな。

934 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 23:45:42.27 ID:s42For+c.net]
>>911
そのためのコーディング規約&lintだろ。
極端な話、Rustみたいに
基本unique_ptrにして共有する部分だけshared_ptrを使用&生ポインタ禁止、
3rdパーティライブラリはunsafeなラッパークラスで閉じ込めた使用のみ可、
といったコーディング規約にして設計すりゃポカミスぐらいは防げる。



935 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 01:07:49.62 ID:5YfzBk4D.net]
>>913
何もrustに限った話ではないというのはその通りで
静的解析やrustと書いたのはそういう規約やlintで補うことも可能という意図

ただrustのshared mutabilityを原則禁じるルールなど、lintで同等のチェックするのは難しい気がする

936 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:41:44.98 ID:WcyXy+8b.net]
>>913
その規約を遵守させる工数がバカにならないんだよなぁ
人数が増えるとさらに倍になるし

937 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:48:29.40 ID:o0+jkG0S.net]
ポカミスってのは規約守り忘れとかも含むんだよな
lintやコンパイラみたいな機械的なチェック以外は基本信用できない

938 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 09:09:54.36 ID:/GGqHUsS.net]
lint、コンパイラを無駄に信用しすぎだな。

939 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 12:41:39.28 ID:vUrE0iV7.net]
コンパイラに強制させたいのならnext c++待ちかね。

Rustの問題点が顕在化してきたくらいのタイミングで、RustアンチテーゼとしてSmartC++とか出てくるんじゃない?

c++のバットノウハウを禁止できればRust使う必要性はずいぶん薄れるな。
「SmartC++のスコープ内では生ポインタ変数禁止」「nullのスマートポインタの生成禁止」くらいでも十分な気がしてきた。

940 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 14:23:33.22 ID:ts6hDhJM.net]
Lifetime ProfilerでRustのborrow checkerに近いものを実装しようとしてるけど
機能的にも未熟だし標準的に使われるレベルになるかどうかも現段階では怪しい

そんな夢見てるくらいならRust使ったほうが堅いし現実的

941 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 14:58:02.48 ID:U+dcKQya.net]
>>918
Rustの問題点てなんですか?
揶揄してるわけじゃなくてまだ入門の勉強中なのでいろいろ興味あります

942 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 17:02:43.74 ID:b9s66c9I.net]
>>920
よく言われるのが学習コストの高さ。
c++もいいかげん複雑すぎる言語と言われているけど、Rustはそれに輪をかけて難しい。
特に他の言語を勉強した初級・中級者は変数の挙動から何から違う(&他の言語のようにやるときのためのガイドラインも無い)ので地獄を見るかと。

943 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 18:08:02.53 ID:XihQJo2+.net]
んなアホな

944 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 18:22:55.56 ID:vBwfaL6n.net]
>>921
そんなことはないと思う
Rustはわかりやすかったぜ
しかも他より書きやすく便利になった



945 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 18:25:55.97 ID:XihQJo2+.net]
さすがのとほほさんも、Rust入門は書けてもC++入門は言語使用がでかすぎて書けなかった模様w
https://www.tohoho-web.com/www.htm

946 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 18:47:57.46 ID:lg/9Dj4Y.net]
>>923
ちょっとは「何がわかりやすかったか」ぐらいは書こうぜ。

947 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 18:52:37.90 ID:0MvTGuxY.net]
素直に公式のチュートリアルを流す分にはそんなに詰まるところはないと思うけどな
変に他言語の流儀を持ち込もうとするとハマりやすいというのはありそう
あといきなりWebアプリ作りたいとか思うとasyncで死ぬってのは多分ある

948 名前:デフォルトの名無しさん [2021/12/09(木) 19:14:20.34 ID:aTCz13pR.net]
>>29
https://lkml.org/lkml/2021/12/6/461
ついに正式に第二言語としてとりこまれましたとさ
完璧にお前の負けやな
いいか?自分の間違えを完璧に認めて
土下座するんだぞ?
写真上げろよガイジ

949 名前:デフォルトの名無しさん [2021/12/09(木) 20:04:08.95 ID:Nj/MPHcu.net]
Mac   Objective-C
Windows C++
Linux  Rust

950 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 20:26:40.72 ID:URUBUipU.net]
MacはSwiftじゃないの?

951 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 20:57:13.15 ID:vBwfaL6n.net]
>>925
structとenumだけでナンでもできてわかりやすかったです
クラスや継承ピラミッドがないのも嬉しかったです
あと&selfやらderefやらその他のimpl&のおかげらしくポインタか否かを気にせず使えるのも便利ですね

952 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:00:28.65 ID:vBwfaL6n.net]
>>927
ArmとGoogleとMicrosoftとRed Hatの後押しのおかげで
RustがLinuxの第二言語の地位を確立したのね

953 名前:デフォルトの名無しさん [2021/12/09(木) 21:02:44.54 ID:aTCz13pR.net]
自動参照外しって絶対ただの馬鹿やろ

954 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:27:55.05 ID:t4DQqTrM.net]
auto derefが害になるRc::cloneしか思いつかなかった
他にどういう問題があるの?



955 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 21:30:18.05 ID:AQ8w6x74.net]
循環参照

956 名前:デフォルトの名無しさん [2021/12/09(木) 21:31:04.21 ID:VGbpB1xz.net]
>>931
少し前進したな。このまま着実に進めて行って欲しい。

957 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:10:47.49 ID:scZknzCz.net]
個人開発の範囲内だとC++では困るかつRustなら上手くやれるっていうことがないから勉強する意欲があまりなかったんだが、ここまで来ると覚えとかなきゃ損なのかもな

958 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:43:14.95 ID:twi4vtZr.net]
損かどうかはともかく一度触ってみるのはいいんじゃないかな
C++書いてる時点でライフタイム周りは分かってるわけだし、結構複雑な言語機能もバリバリ使いこなせるタイプなんだからRustが合う可能性は比較的高いと思う

959 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:48:18.17 ID:37AH+elO.net]
そうか…

960 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 00:50:08.61 ID:tVqwylUj.net]
>>934
derefじゃ循環参照作れないと思うが

961 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 05:45:51.32 ID:B+xSEqhP.net]
記述量がどうしても Rust は多いイメージなんだよなあ

962 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 07:02:01.74 ID:iN+TjAqi.net]
C++のテンプレートメタプログラミングよりも
高い効率と抽象性をRustでも実現できるの?
だったらRust使うが

963 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 08:57:57.63 ID:+QD/QEvI.net]
>>941
一般的に洗脳されていると難しいけれど色んなレベルでの意識改革ができると今後に役立つよ
例えばC++自体の限界のためにテンプレートメタプログラミングでやらざるを得なかったケースがRustでは使わずに出来てしまうケースもあるし
C++ではこうやるべきだと思えていたお決まりの手法が発想を転換するとRustでは別の手法によりもっと自然に出来てしまうケースもある
一方で失敗する人たちはそういった意識改革が出来ずにC++では当たり前に思えていた方法でそのまま突き進もうとしてしまい本来は簡単に出来ることを複雑にしてしまう
もちろん能力がある人たちならばこの意識改革が出来るため必要に応じて発想の転換など臨機応変に対応することが出来ますから大丈夫

964 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:00:57.84 ID:r8lQ5Qw5.net]
>>942
> 例えばC++自体の限界のためにテンプレートメタプログラミングでやらざるを得なかったケースがRustでは使わずに出来てしまうケースもある
> C++ではこうやるべきだと思えていたお決まりの手法が発想を転換するとRustでは別の手法によりもっと自然に出来てしまうケースもある

ふむふむ。例えばどういう具体例がありますか?



965 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:49:59.85 ID:+QD/QEvI.net]
そういう気付きや意識改革を自分で出来ない人たちはもっと基本的なところからスタートすると良いかな
例えばRustにはclassすらないしtry/catch/throwすらない
C++の視点から見るとそんなのでまともなプログラミングできるの??となる
しかし現実にRustではそれらがなくとも普通に問題なく便利にプログラミングが出来ている
そして発想の転換が出来るようになるとclassやtry/catch/throwはプログラミングする上で必須なものではなかったんだなと真の理解が進む
まずはこういう基礎的なところからスタートするのがよいでしょう

966 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:55:49.46 ID:PJTDipJe.net]
type traitに関してはまんまtraitで置き換えてコンパイル時に判定できる
type traitベースでenable_ifするのはtrait boundで

テンプレートメタプロそこまで詰めてやったことないから逆にRustでできなさそうなの挙げて欲しいかも
それか両方詳しいひとカモン

967 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 09:58:50.45 ID:kZDSpbMz.net]
>>943
典型的なのはSFINAEを駆使してた部分がtraitで解決できるとかかな
まぁconceptと同じようなもんだけど、conceptは正直まだ発展途上だと思う

968 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 10:06:35.76 ID:kZDSpbMz.net]
C++はSFINAEがあるから部分的に型エラーになっても大丈夫だけど
Rustのジェネリクスはそういうのは許容しないからちょっと表現範囲は狭いね
ジェネリクスの範囲外は手続きマクロでカバーする感じ
こっちは任意のコード生成だから、テンプレートより遥かに自由度が高い(が、当然乱用するとやばい)

969 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 11:45:45.31 ID:0gAxKX1/.net]
>>944
こういうの見るとどんどんRustが嫌いになっていく…

970 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:09:04.41 ID:5non8kx0.net]
>>948
Rustコミュニティーは若いからな。
説明ノウハウ無い&自浄作用無いので、アホがクズみたいなレスでマウント取ろうとするのは仕方ないよ。

971 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:51:44.86 ID:iN+TjAqi.net]
>>942
テンプレート機能はC++の一部だしテンプレートメタプログラミングはその機能を使ったプログラミングに過ぎない
言語自体の限界とはまったく関係ないしやらざるを得ないという表現はなにを指しているのかわからない
>>944
そんなことを言ったらRustにもプログラミング上必須でない機能が無数にあるだろう
言語間に差があることは前提で言語ごとに設計の仕方が異なるからRustの話を聞いただけだ

972 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 12:59:53.37 ID:PJTDipJe.net]
そういう何も分かってない系は放置してくれると助かります……

973 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 13:28:39.59 ID:+QD/QEvI.net]
>>948
あなたのコンプレックスを刺激してしまってのならばごめんなさい
嫌いになるかどうかはあなたが損するだけなのでご自由にどうぞw

>>949
単なるアドバイスがマウントに見えてしまうのは一種の病気なので
普段の生活でもマウントがどうとかそんなくだらないとこは一切気にせずに穏やかに暮らしたほうが精神面にも良いでしょう

974 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 13:40:16.69 ID:+QD/QEvI.net]
>>950
> そんなことを言ったらRustにもプログラミング上必須でない機能が無数にあるだろう

無数??
具体的にプログラミング上必須でない機能を挙げていただけますか?

> 言語間に差があることは前提で言語ごとに設計の仕方が異なるからRustの話を聞いただけだ

前提はおっしゃる通り同意です
具体的にどういうことをしたい時に設計の仕方でお困りですか?



975 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 14:37:54.35 ID:xHOv0cjf.net]
>>952
>>944がアドバイスに見えるとしたら、コーチング・ティーチング技術を勉強した方がいいよ。

>>941の「テンプレートメタプログラミング……」という問いかけには答えず、「そういう気付きや意識改革を自分で出来ない人たち」と相手を否定するだけのアホな言葉をアドバイスと言うのは無能すぎる。

こういうのはRustの害にしかならないから、>>952はアドバイスしないほうがいいよ。

976 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 15:03:50.43 ID:+QD/QEvI.net]
>>954
気付けない人たちへのアドバイスをしてはダメなのでしょうか?
アホな言葉とか無能とか言い出すあなたの人格を疑いますw

> こういうのはRustの害にしかならないから

こちらはRustに対して何の利害関係もなく中立なのでどうでもよいですw
むしろ害にしかならないと思い込みで決め付けることに呆れました

977 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 20:08:53.17 ID:TewTsdx8.net]
いつもの二人
枯れ木も山の賑わい

978 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 20:55:44.40 ID:ZbxMMnOp.net]
わりと>>954に同意

979 名前:デフォルトの名無しさん [2021/12/10(金) 22:02:18.09 ID:11uACNNS.net]
>>941
健全なマクロはいいなぁと思った。

980 名前:デフォルトの名無しさん mailto:sage [2021/12/10(金) 23:43:39.24 ID:aT/chChl.net]
>>955
>>954でアドバイス「技術」の話をしているのに、アドバイス「可否」の話をするのは無能の証。わかってやっているなら邪悪だし、どちらにしても>>955には他人にアドバイスする資格が無い。

やっぱりRustの害にしかならないから、>>955はアドバイスしないほうがいいよ。

981 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 02:13:49.48 ID:5TX2F/Wl.net]
他人に資格がないとか言っちゃうお前も無能だよ

982 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 02:53:22.45 ID:gcR9gZtv.net]
次スレどうしますか
なんかテンプレに書くべきことある?

983 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 03:07:25.44 ID:/anFx7me.net]
次スレ必要か?

984 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 03:12:21.17 ID:ycyrsR3v.net]
馬鹿には理解できません、って書いておくか



985 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 03:13:02.46 ID:gcR9gZtv.net]
隔離スレ無いと本スレが荒れるかなって思ったけど
最近あっちは大人しいし、変なの湧き始めてからでもいいかね?

986 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 03:13:38.27 ID:QMxo9SkC.net]
C++もRustもそれぞれ別にスレがあるのだから次スレは要らないだろ
単発のネタスレだよここは

987 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 03:19:01.51 ID:XUdPn4EW.net]
冗談抜きでランダムアクセスを「乱択的に生成した要素番号の要素にアクセスすること」だと思ってる人たちが700レスくらい消費したからな

988 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 09:49:26.74 ID:9bOVK1ul.net]
LinkedListをランダムアクセス可能とかいうバカのおかげでスレが伸びたな
LinkedList ランダムアクセス でググれば一発で分かるようなことを延々とやってたからな

989 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 12:42:26.27 ID:CvsP5Dh4.net]
お互い恥ずかしいこと書いちゃったからよっぽど悔しかったんだねwww

本スレがノイズだらけになるから隔離スレは継続すべき

990 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:10:02.70 ID:xZtaHfY7.net]
アドバイスしているつもりの有害をこちらに誘導できるから継続すべき。

991 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 19:25:12.95 ID:3cz1umgU.net]
優秀な人はレベルの高い学校に行かないと馬鹿になってしまうということが
証明されたスレだ。

992 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 09:20:03.82 ID:1vgWyH1X.net]
どっちもウザいから無くていいよ

993 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 09:21:18.12 ID:XFS00W91.net]
アルゴリズムの基本も知らないド素人

994 名前:デフォルトの名無しさん [2021/12/12(日) 14:18:54.35 ID:zRon8LOh.net]
C++の場合、std::prev()、std::next()等でランダムアクセス可能。



995 名前:デフォルトの名無しさん [2021/12/13(月) 04:01:27.37 ID:IZffj796.net]
それシーケンシャルアクセスや。

996 名前:デフォルトの名無しさん [2021/12/13(月) 04:06:48.16 ID:4QlzWvx/.net]
std::next(v.begin(), 3)などが可能。

997 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 09:51:08.61 ID:d0IcrcAD.net]
そうなんだ、よかったね

998 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 10:41:09.99 ID:BJ+zdFAP.net]
そうなんだ、よかったねで済む話を700レスも続けたスレだった

999 名前:デフォルトの名無しさん [2021/12/13(月) 10:55:12.57 ID:zBnuOauJ.net]
ガイジ隔離できるから次スレ建てろ

1000 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 23:41:21.78 ID:hDz7sFQ7.net]
>>758
言ってることは全く正しいけど
promise/futureの存在によってasync/awaitが成立していることをもっと強調すべきかな
このまえGoスレでそれすら理解できないやつが延々と暴れていた
さらに「async/awaitがあればpromise/futureは不要!」とまで主張して暴れていた
非同期プログラミングをかじっただけの人にありがちなのかもしれない
例えば「複数のpromise/futureに対して任意の一つが解決されたら」とか「解決順に」とかawaitだけでは表現不可能なのにな

1001 名前:デフォルトの名無しさん [2021/12/14(火) 01:57:04.15 ID:oL+i1N1M.net]
あわしろ氏はガイジじゃないぞ。

1002 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 09:28:14.72 ID:56UTyKQA.net]
そうなんだ、よかったね

1003 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 09:42:41.73 ID:Lt4mRhb2.net]
golangにasync/awaitなんて無いし、promise/futureもchannel通信で作れば作れるけどそんな事しないし
むしろ暴れてるのはお前だろ、思想的に必要無い言語にそれを持ち込んで優位性を語るなんてアホちゃうか?

1004 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 10:15:19.20 ID:YU8H/oh/.net]
結局Rustが一番いいよな
非同期をawaitという限られた同期パターンだけでなくfutureを直接扱うことも可能だし
Goのようにコルーチンをすぐ動かせるしそれに対して同様にchannel通信もいけるしfutureとして扱うことも可能



1005 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 10:55:30.64 ID:9qJ+oS+1.net]
アホか、Rustに厳密なcoroutineなんてデフォルトで無いやろ、Boost移植のcontext-rs/coroutine-rsとかあるけども…
実験的にRFC 2033: experimental coroutinesとかやってるけど、N:Mスレッドスケジューラーが標準搭載される未来はない。

1006 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 11:24:57.22 ID:YU8H/oh/.net]
>>984
Rustでは一昨年からasync blockが既にstackless symmetric coroutineとして動いています
zero costでlazyなのでasync blockを作るとそれだけだとfutureが出来るのみ
それをm:n含め好きなスケジューラがいくらでもあるのでそれに対してspawnするだけで起動します
そのasync block内では全てawaitしまくればgoroutineと同じ状況になります
もちろんチャネルも使えます

1007 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 12:31:40.21 ID:cpUh/hIt.net]
Rustの並行処理には未来を感じるけど、
tokioとasync-stdはどっちがデファクトスタンダードです?

1008 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 12:37:47.85 ID:XjtTquHZ.net]
不毛な議論にまたなるのでアホは相手したくないが、「厳密な」と書いていることが全くわかってない。
所詮spawnするということはasync/awaitがepollベースであり、更には「全てawaitしまくれば」なんてGoと同じ状況じゃないでしょw
標準搭載と書いてるのに「好きなスケジューラがいくらでもある」とほざく
ゼロコスト、ゼロコスト言うやつがいる限りウザがられるし、英文で書けば相手を丸め込む事ができると思い込んでると
ホントに爪弾きにされるぞ、Rust推しは分かるけどもう少し顔真っ赤にしてくる態度改めようぜ?
C++でもco_await、co_yieldはゼロコストでスタック消費しないし、コンパイラ型で非同期にコスト掛かる言語って何?

1009 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 14:43:42.13 ID:ecGTY8hf.net]
https://i.imgur.com/dB5gmZU.png
2022年版が必要です

1010 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 14:53:55.31 ID:nVZu9KeB.net]
>>987
貴方のほうが色々とおかしい。

>所詮spawnするということはasync/awaitがepollベースであり、Goと同じ状況じゃないでしょw

まずepollを貴方が理解できていない。epollはLinuxでのpoll/select系システムコールのAPI。
厳密にするのも的外れなので、仮にここではselect/poll等の意味合いで受け取っておく。
Goのgoroutineも当然ながらこのselect/poll等を用いて実現しているので全く同じ状況。
当然select/poll等を用いなければgoroutineのような軽量スレッド(グリーンスレッド)は実現できない。

>所詮spawnするということはasync/awaitがepollベースであり、

引用再掲するが、貴方は更なる誤解もしている。
まず、awaitはfutureを解決する単なる一つの手段にすぎず、貴方が言及しているspawnする対象はfurureである。
そしてGoでの「go func」がRustでの「spawn(future)」に相当。
これらが為されないとどちらもスケジューラに登録されず両者は同じ状況であると言える。

>更には「全てawaitしまくれば」なんてGoと同じ状況じゃないでしょ

Goroutineでは明記しなくても暗黙的にawaitを付けたのと同じ同期的な記述で非同期を記述できる。
したがって、Rustにおいては「全てawaitしまくれば」Goと同じ状況といっても過言ではないと言えよう。
いずれにしても「go func」と「spawn(future)」の場合と同じで記述面での些細な相違だけにすぎない。

>標準搭載と書いてるのに「好きなスケジューラがいくらでもある」とほざく

Rustの標準には不可欠なものしか無いから標準搭載されていないのは当たり前。
よく例に出されるが、C言語でstdlibにあるrand()のような乱数ですらRustの標準ライブラリにはない。
貴方の無茶な理論だとRustは乱数もサポートしていない言語、となる。
OSや組み込みにも用いられる状況で、何か単一のスケジューラが標準搭載であればよい、わけがない。
むしろ様々なスケジューラを選ぶことができるRustの状況こそ、明らかに有利である。

1011 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 15:23:08.46 ID:SmqbIrWZ.net]
顔真っ赤マン。。。

1012 名前:デフォルトの名無しさん [2021/12/14(火) 16:25:41.72 ID:iFoIKYew.net]
>>989
顔真っ赤で草

1013 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 17:27:33.19 ID:YU8H/oh/.net]
>>986
個人的には名の通りstdをasync化しているasync-stdが好みです

>>987
よくわかっていらっしゃらないようなのでどの言語でもいいから実際にプログラミングしてみることをおすすめします
epollでもselectでもいいからI/Oイベントループを自分で書いてみればそれがディスパッチャでありスケジューラの核心だとわかりますよ
C言語で大丈夫ですから []
[ここ壊れてます]



1015 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 18:07:51.75 ID:K0HBzsrc.net]
顔真っ赤オジサン、スケジューラの核心www

1016 名前:デフォルトの名無しさん [2021/12/14(火) 20:36:31.90 ID:oL+i1N1M.net]
ここまでの議論でわかったことは、RustよりGoのほうが上。

1017 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 07:13:59.09 ID:CevG0U/x.net]
Goでできることが全てRustでもできるようになってしまったもんな
Goではできないこと辛いことが多すぎてGo2でRustの後追いしようとしているがGo2は期待外れで盛り下がっている

1018 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 08:58:39.57 ID:3YmRd/Kz.net]
それがディスパッチャでありスケジューラの核心

1019 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 11:21:17.73 ID:TZwcTz32.net]
Goは色んなレベルで簡素で手段に制限があるけど
そこをパズルのように組み合わせてある程度のことは出来る楽しさがいいのよ
ただしそれが飽きられてきていたり楽しいと思う人たちより外に広まらなかったり
自然じゃない組み合わせで実装や冗長な記述などせざるをえなかったり
だからGoはこのまま狭い適用範囲だけで使われる形になりそう

1020 名前:デフォルトの名無しさん [2021/12/15(水) 11:41:54.42 ID:z10T13Tn.net]
このスレなくなったら名残惜しいから次スレ建てろ
完走しても建ってなかったらワイが建てるで

1021 名前:デフォルトの名無しさん mailto:sage [2021/12/15(水) 12:34:06.40 ID:t4BO72er.net]
>>997
納得できない
じゃあきみはGoにGenericsとか実装されても使いたくないの?

Goの良いところはそういうとこじゃないでしょ

1022 名前:デフォルトの名無しさん [2021/12/15(水) 12:34:55.45 ID:z10T13Tn.net]
1000ならC++の勝ち!!!!!

1023 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 235日 4時間 30分 6秒

1024 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<361KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef