X



C++ vs Rust
レス数が950を超えています。1000を超えると書き込みができなくなります。
0851デフォルトの名無しさん
垢版 |
2021/12/06(月) 12:01:12.30ID:EOOuRFRK
>>845じゃないけど
最悪値が重要な用途もある
また、確率はデータの分布が決まってはじめて決まるもの
分布次第ではあなたの想定通りにはならない
0853デフォルトの名無しさん
垢版 |
2021/12/06(月) 12:43:27.37ID:XuzXkdX2
>>842
ここはC++ vs Rustスレなのだからコードを出さなければ何も判定できない
机上の空論ばかり書き綴るよりも現実に使われるCPUと向き合わなければならない

例えばRustの標準ライブラリHashMapでも用いているSwiss Tables法ではハッシュ衝突時の別エントリ探索にSIMD命令を用いている
CPU命令4つで16エントリ同時に探索候補を判別していきメモリキャシュも活かすようこのためのメタデータを連続領域に配置している
0854デフォルトの名無しさん
垢版 |
2021/12/06(月) 13:08:20.11ID:PE/XVSQC
>>852
値がガウス分布に従うとかなんらかの仮定をおいていると思うのですがあなたの言うランダム性とはなんですか
あらゆる分布を想定しているのですか
0855デフォルトの名無しさん
垢版 |
2021/12/06(月) 13:21:52.08ID:iO91q1zt
>>831
> O(N)の定義は、Nを無限に大きくしていった時に、
コンピュータサイエンスでアルゴリズムの評価をするときは、Nを無限にするなんて考えません
ハッシュアルゴリズムはO(1)でFA
0856デフォルトの名無しさん
垢版 |
2021/12/06(月) 13:46:42.22ID:lQ57RfmU
>>848
ずっとそんな感じ
計算量ではちゃんとわからない、コストがかかって遅くなる、とか言いつつ、忙しいから実装はできない、お前は馬鹿だから理解できない、みたいなことを数ヶ月に渡って大量に書き込み続けてる
数学でいつも100点取るらしいし、さぞ偉いお方なんでしょうなあ…
0857デフォルトの名無しさん
垢版 |
2021/12/06(月) 18:09:07.25ID:cGshi4Y2
>>854
いまの場合で言えば、N個のキーに対するハッシュ値が、可能な限り重ならずに
分布すること。
0860デフォルトの名無しさん
垢版 |
2021/12/06(月) 21:08:31.14ID:4qQbBrsy
ハッシュが衝突しやすいコリジョンデータを使ったDDos攻撃が出来るのでは?
0861デフォルトの名無しさん
垢版 |
2021/12/07(火) 13:11:29.70ID:jcfwZSTS
>>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)である。
0862デフォルトの名無しさん
垢版 |
2021/12/07(火) 13:27:33.41ID:pFZAiCY5
Wikipediaでも明記されている
・ハッシュテーブルの検索や追加はO(1)
・ハッシュテーブルの拡張もO(1)

> ハッシュテーブルはキーをもとに生成されたハッシュ値を添え字とした配列である。
> キーを要約する値であるハッシュ値を添え字として値を管理することで、検索や追加を要素数によらず定数時間O(1)で実現する。
>
> 利用率が一定を超えた場合に、より大きいサイズのハッシュテーブルを用意して格納し直す操作が必要となる。これをリハッシュ (rehash) と呼ぶ。
> この操作はすべての要素のハッシュ値を再計算して新たなハッシュテーブルに格納するためO(n)であるが、
> 配列のサイズを指数的に拡張する事で、動的配列の末尾追加操作と同様に償却解析によって計算量をO(1)とみなす事ができる。
0863デフォルトの名無しさん
垢版 |
2021/12/07(火) 14:35:15.82ID:iH9Jzajc
>>862
例えば、M=128で、128種類のハッシュ値に振り分けられるなっている
ハッシュ構造の場合、N=128万にすると、1つのハッシュ値に1万個の
(key, value)のペアが対応している。
そして、1個のkeyを検索する時、平均的には、1万個の半分の5000回
くらいkey値の比較を行うと一致するものが見つかる。
なのでこの場合、1個のkeyに対する検索時間は
5000*(keyの比較に要する時間)
となる。
Nを128億にすると、
5000万*(keyの比較に要する時間)
になる。
0864デフォルトの名無しさん
垢版 |
2021/12/07(火) 14:52:05.46ID:iH9Jzajc
>>863
誤:128種類のハッシュ値に振り分けられるなっている
正:128種類のハッシュ値に振り分けられるようになっている

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

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

>>862
> 利用率が一定を超えた場合に、より大きいサイズのハッシュテーブルを用意して格納し直す操作が必要となる。これをリハッシュ (rehash) と呼ぶ。
>>861 の4行目で、リハッシュは行わないと断った。
はっきり、Mを定数とすると書いている。
0865デフォルトの名無しさん
垢版 |
2021/12/07(火) 17:09:08.05ID:Io+x78vq
数学100点マンの机上の空論がさらに輪をかけてるな

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

つまり128億個のデータを128個のハッシュ値パターンでハッシュテーブルに格納か
現実の世界ではなく一人だけの特殊な妄想世界で空論
0873デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:22:19.85ID:hXWP+cLq
>>861
あなたの言うランダム性の定義を伺いたかったのですが
挿入されるkeyはどのような分布に従う仮定なのですか
0874デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:28:32.42ID:XGUQnarH
確率論では衝突の発生確率が一様分布と仮定した場合、衝突回数はポアソン分布に従う
0876デフォルトの名無しさん
垢版 |
2021/12/07(火) 19:51:15.50ID:EZ68mIS/
>>873
衝突が起きるとしても、5chのIDが被る程度の稀な確率となる程度のランダム性を想定しています。
0878デフォルトの名無しさん
垢版 |
2021/12/07(火) 20:15:39.60ID:EZ68mIS/
>>877
データに合わせてハッシュアルゴリズムを変更する、アダプティブ・ハッシュ・テクノロジー™をご提案いたします。
0879デフォルトの名無しさん
垢版 |
2021/12/07(火) 20:16:48.35ID:EfSST75b
結局のところ衝突回数が算術平均に従う場合はO(n)であるが、この場合確率そのものが極めて小さく分布の期待値が小さいためO(1)に極めて近いとしか評価の仕様がない
0880デフォルトの名無しさん
垢版 |
2021/12/07(火) 20:23:38.39ID:EZ68mIS/
>>813は、言語のバイナリ生成能力を論じるときに計算オーダーは意味がないと言っているのでは?
その理由として、同一の計算オーダーを持つアルゴリズム、あるいは同一のアルゴリズムから、どちらが優れたバイナリを生成できるか論じているので、それはベンチでしか判明しない、と挙げていると思うのです。
0881デフォルトの名無しさん
垢版 |
2021/12/07(火) 20:33:30.11ID:U30hRDTM
特定のアルゴリズムを特定の計算オーダーで実装出来ない言語もあるので
全く意味がない事はない
0883デフォルトの名無しさん
垢版 |
2021/12/07(火) 21:53:06.58ID:WxNsBn2X
リンクリストの話は?リンクリスト、皆のアドバイスを受け入れて辞め、ハッシュテーブルに絞ることにしたんですか…
0884デフォルトの名無しさん
垢版 |
2021/12/07(火) 21:54:51.19ID:EZ68mIS/
リンクトリストね?
0886デフォルトの名無しさん
垢版 |
2021/12/07(火) 23:07:18.00ID:APR/hTgK
>>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)。
0889デフォルトの名無しさん
垢版 |
2021/12/07(火) 23:18:01.46ID:APR/hTgK
>>888
[補足]
「グラフが水平なら O(1)」とは書いたが、「O(1)ならグラフが水平」とは
書いてない。
つまり、グラフが水平である事はO(1)であることの十分条件であるが、
必要条件ではない。

「グラフが水平 ⇒ O(1)」とは述べているが、その逆の
「O(1) ⇒ グラフが水平」とは述べて無いことに注意。
0890デフォルトの名無しさん
垢版 |
2021/12/07(火) 23:59:06.43ID:q8J3SSC4
>>886
それがworst caseの話なんだってw
amortized average caseがO(1)とみなせる前提をガン無視して
「ほらO(n)だろ」とか言ってても誰も相手にしてくれない
0891デフォルトの名無しさん
垢版 |
2021/12/08(水) 00:07:41.43ID:ixfpknHK
>>890
いや、違う。
平均は、
g(N) = b * (N/M + 1)
程度。
worst は、
g(N) = b * N

どちらも O(N)ではあるが。
0892デフォルトの名無しさん
垢版 |
2021/12/08(水) 00:20:29.77ID:ixfpknHK
>>891
なお、数学の秀才なら気付くと思うが、この平均の式は、本当は正しくない。
ただし、大体は合ってる。
0893デフォルトの名無しさん
垢版 |
2021/12/08(水) 00:22:38.55ID:ixfpknHK
>>892
[補足]
何が正しくないかというと、本当は、ある箇所を2 で割る必要があるから。
例えば次のように :
g(N) = b * (N/(2M) + 1)
しかし、これでも、まだ少し正しくない。
0895デフォルトの名無しさん
垢版 |
2021/12/08(水) 01:51:55.62ID:/oyDmL+H
数学100点君は数学用語の定義を誤解釈しまくって理解してしまっている感じ
説明の内容からしても多分中高生か啓蒙書を読みかじったおじさんなんだろ
0896デフォルトの名無しさん
垢版 |
2021/12/08(水) 03:16:15.50ID:ixfpknHK
なんでここは、数学が理解できない人ばっかりなんだ。
だから、プログラマが馬鹿にされる。
0897デフォルトの名無しさん
垢版 |
2021/12/08(水) 03:18:58.91ID:ixfpknHK
C++ vs Rust を語る前に、せめて、数学的に明らかに正しいことを理解できるから
でないとどうにもならん。
それ以前の問題。
0898デフォルトの名無しさん
垢版 |
2021/12/08(水) 03:20:41.94ID:ixfpknHK
それと、科学者にとって最も大事なことは、頭の良さでも知識でもなく、
正直さだ。
自説を主張するために正しい主張を否定してはいけない。
0899デフォルトの名無しさん
垢版 |
2021/12/08(水) 03:21:17.48ID:H0CVJE/p
「ランダムアクセス」って任意の要素にアクセスすることを指すんだけど、乱択的に与えられた要素にアクセスすることをそう呼ぶんだと思い込んでる奴が複数いてクソワロ
0900デフォルトの名無しさん
垢版 |
2021/12/08(水) 03:25:58.49ID:ixfpknHK
>>894
結果は一時式でも、それを求めるには確率論以前に、イマジネーションが必要。
どこかに書いてある知識の組み合わせでは導出できない。
確率論は、自分の想像力が重要に成るので、計算力だけでは無理な分野。
書いてある定理を組合すだけでも導けない。
数学は、基礎の部分はイマジネーションで作られているから、頭の良い
人以外には作れない。
いくら勉強しても無駄。
0901デフォルトの名無しさん
垢版 |
2021/12/08(水) 04:31:15.37ID:VGgp1CiZ
ハッシュに格納するまでの過程は確率論でも格納された後はただのリニア検索だけの話にすり替わってないか?
0902デフォルトの名無しさん
垢版 |
2021/12/08(水) 08:47:15.25ID:qP3Pvuq5
>>900
誰でも後から客観的に検証できる性質が数学含む科学の特徴ですよ
イマジネーションって言い換えればあなたの妄想ってことですよね
0903デフォルトの名無しさん
垢版 |
2021/12/08(水) 12:57:52.28ID:9TnsTyEO
データ追加の話をするのであれば、どのようなアルゴリズムでも無限個数を追加するなら無限時間かかるわw
0904デフォルトの名無しさん
垢版 |
2021/12/08(水) 13:53:27.51ID:Ji0BscRU
chaining使ってる場合でスロット数(M)が固定値かつ要素数(N)に対して小さければO(n)になるのは当然だよね

それで100点君は何を主張したいんだっけ?
0905デフォルトの名無しさん
垢版 |
2021/12/08(水) 14:37:30.67ID:Ji0BscRU
これか >>813

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

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

つかBig O記法が何の目的で使われるのか把握してなかったのか・・・
長々とお疲れさんでした
0907デフォルトの名無しさん
垢版 |
2021/12/08(水) 18:48:01.53ID:9TnsTyEO
なにを言いたいのかさっぱりわからないんだが、さかのぼって読んでみると

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

いや、全然違うし
一体何をあらわしてる式なんだ?
0908デフォルトの名無しさん
垢版 |
2021/12/08(水) 18:55:15.30ID:swPCtrVA
c++: cほど性能はいらないけど、コーティングでcより楽したい
Rust: c++くらいの性能はほしいけど、間抜けがメモリリークをエンバグするのを防ぎたい

Rustの狙いはc++&コーティング規約&lintでけっこうカバーできるけど、Rustは言語仕様としてコーダー全員に規約遵守を強制しているのが強み。
Rustが本当に普及してきたら、Rust対抗としてC++と連携できるSmartC++が出てくるんじゃないのかね。
0909デフォルトの名無しさん
垢版 |
2021/12/08(水) 19:27:33.65ID:gZbwMfFK
>>908
>Rust: c++くらいの性能はほしいけど、間抜けがメモリリークをエンバグするのを防ぎたい

これが重要だな。
0911デフォルトの名無しさん
垢版 |
2021/12/08(水) 21:56:00.76ID:tBq4QMAR
間抜けがミスをするというと十分に訓練を受けたパログラマーならミスをしないと読めるが
実際にはコードベースが大きくなると間抜けなミスをする確率が高まるので
自分はミスをしないと思い込むのではなくミスした場合も検出できるようにすべき
静的解析やrustの真価はそういうところにあると思う
0913デフォルトの名無しさん
垢版 |
2021/12/08(水) 23:45:42.27ID:s42For+c
>>911
そのためのコーディング規約&lintだろ。
極端な話、Rustみたいに
基本unique_ptrにして共有する部分だけshared_ptrを使用&生ポインタ禁止、
3rdパーティライブラリはunsafeなラッパークラスで閉じ込めた使用のみ可、
といったコーディング規約にして設計すりゃポカミスぐらいは防げる。
0914デフォルトの名無しさん
垢版 |
2021/12/09(木) 01:07:49.62ID:5YfzBk4D
>>913
何もrustに限った話ではないというのはその通りで
静的解析やrustと書いたのはそういう規約やlintで補うことも可能という意図

ただrustのshared mutabilityを原則禁じるルールなど、lintで同等のチェックするのは難しい気がする
0916デフォルトの名無しさん
垢版 |
2021/12/09(木) 08:48:29.40ID:o0+jkG0S
ポカミスってのは規約守り忘れとかも含むんだよな
lintやコンパイラみたいな機械的なチェック以外は基本信用できない
0918デフォルトの名無しさん
垢版 |
2021/12/09(木) 12:41:39.28ID:vUrE0iV7
コンパイラに強制させたいのならnext c++待ちかね。

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

c++のバットノウハウを禁止できればRust使う必要性はずいぶん薄れるな。
「SmartC++のスコープ内では生ポインタ変数禁止」「nullのスマートポインタの生成禁止」くらいでも十分な気がしてきた。
0919デフォルトの名無しさん
垢版 |
2021/12/09(木) 14:23:33.22ID:ts6hDhJM
Lifetime ProfilerでRustのborrow checkerに近いものを実装しようとしてるけど
機能的にも未熟だし標準的に使われるレベルになるかどうかも現段階では怪しい

そんな夢見てるくらいならRust使ったほうが堅いし現実的
0920デフォルトの名無しさん
垢版 |
2021/12/09(木) 14:58:02.48ID:U+dcKQya
>>918
Rustの問題点てなんですか?
揶揄してるわけじゃなくてまだ入門の勉強中なのでいろいろ興味あります
0921デフォルトの名無しさん
垢版 |
2021/12/09(木) 17:02:43.74ID:b9s66c9I
>>920
よく言われるのが学習コストの高さ。
c++もいいかげん複雑すぎる言語と言われているけど、Rustはそれに輪をかけて難しい。
特に他の言語を勉強した初級・中級者は変数の挙動から何から違う(&他の言語のようにやるときのためのガイドラインも無い)ので地獄を見るかと。
0926デフォルトの名無しさん
垢版 |
2021/12/09(木) 18:52:37.90ID:0MvTGuxY
素直に公式のチュートリアルを流す分にはそんなに詰まるところはないと思うけどな
変に他言語の流儀を持ち込もうとするとハマりやすいというのはありそう
あといきなりWebアプリ作りたいとか思うとasyncで死ぬってのは多分ある
0927デフォルトの名無しさん
垢版 |
2021/12/09(木) 19:14:20.34ID:aTCz13pR
>>29
https://lkml.org/lkml/2021/12/6/461
ついに正式に第二言語としてとりこまれましたとさ
完璧にお前の負けやな
いいか?自分の間違えを完璧に認めて
土下座するんだぞ?
写真上げろよガイジ
0928デフォルトの名無しさん
垢版 |
2021/12/09(木) 20:04:08.95ID:Nj/MPHcu
Mac   Objective-C
Windows C++
Linux  Rust
0930デフォルトの名無しさん
垢版 |
2021/12/09(木) 20:57:13.15ID:vBwfaL6n
>>925
structとenumだけでナンでもできてわかりやすかったです
クラスや継承ピラミッドがないのも嬉しかったです
あと&selfやらderefやらその他のimpl&のおかげらしくポインタか否かを気にせず使えるのも便利ですね
0932デフォルトの名無しさん
垢版 |
2021/12/09(木) 21:02:44.54ID:aTCz13pR
自動参照外しって絶対ただの馬鹿やろ
0933デフォルトの名無しさん
垢版 |
2021/12/09(木) 21:27:55.05ID:t4DQqTrM
auto derefが害になるRc::cloneしか思いつかなかった
他にどういう問題があるの?
0935デフォルトの名無しさん
垢版 |
2021/12/09(木) 21:31:04.21ID:VGbpB1xz
>>931
少し前進したな。このまま着実に進めて行って欲しい。
0936デフォルトの名無しさん
垢版 |
2021/12/10(金) 00:10:47.49ID:scZknzCz
個人開発の範囲内だとC++では困るかつRustなら上手くやれるっていうことがないから勉強する意欲があまりなかったんだが、ここまで来ると覚えとかなきゃ損なのかもな
0937デフォルトの名無しさん
垢版 |
2021/12/10(金) 00:43:14.95ID:twi4vtZr
損かどうかはともかく一度触ってみるのはいいんじゃないかな
C++書いてる時点でライフタイム周りは分かってるわけだし、結構複雑な言語機能もバリバリ使いこなせるタイプなんだからRustが合う可能性は比較的高いと思う
0941デフォルトの名無しさん
垢版 |
2021/12/10(金) 07:02:01.74ID:iN+TjAqi
C++のテンプレートメタプログラミングよりも
高い効率と抽象性をRustでも実現できるの?
だったらRust使うが
0942デフォルトの名無しさん
垢版 |
2021/12/10(金) 08:57:57.63ID:+QD/QEvI
>>941
一般的に洗脳されていると難しいけれど色んなレベルでの意識改革ができると今後に役立つよ
例えばC++自体の限界のためにテンプレートメタプログラミングでやらざるを得なかったケースがRustでは使わずに出来てしまうケースもあるし
C++ではこうやるべきだと思えていたお決まりの手法が発想を転換するとRustでは別の手法によりもっと自然に出来てしまうケースもある
一方で失敗する人たちはそういった意識改革が出来ずにC++では当たり前に思えていた方法でそのまま突き進もうとしてしまい本来は簡単に出来ることを複雑にしてしまう
もちろん能力がある人たちならばこの意識改革が出来るため必要に応じて発想の転換など臨機応変に対応することが出来ますから大丈夫
0943デフォルトの名無しさん
垢版 |
2021/12/10(金) 09:00:57.84ID:r8lQ5Qw5
>>942
> 例えばC++自体の限界のためにテンプレートメタプログラミングでやらざるを得なかったケースがRustでは使わずに出来てしまうケースもある
> C++ではこうやるべきだと思えていたお決まりの手法が発想を転換するとRustでは別の手法によりもっと自然に出来てしまうケースもある

ふむふむ。例えばどういう具体例がありますか?
0944デフォルトの名無しさん
垢版 |
2021/12/10(金) 09:49:59.85ID:+QD/QEvI
そういう気付きや意識改革を自分で出来ない人たちはもっと基本的なところからスタートすると良いかな
例えばRustにはclassすらないしtry/catch/throwすらない
C++の視点から見るとそんなのでまともなプログラミングできるの??となる
しかし現実にRustではそれらがなくとも普通に問題なく便利にプログラミングが出来ている
そして発想の転換が出来るようになるとclassやtry/catch/throwはプログラミングする上で必須なものではなかったんだなと真の理解が進む
まずはこういう基礎的なところからスタートするのがよいでしょう
0945デフォルトの名無しさん
垢版 |
2021/12/10(金) 09:55:49.46ID:PJTDipJe
type traitに関してはまんまtraitで置き換えてコンパイル時に判定できる
type traitベースでenable_ifするのはtrait boundで

テンプレートメタプロそこまで詰めてやったことないから逆にRustでできなさそうなの挙げて欲しいかも
それか両方詳しいひとカモン
0946デフォルトの名無しさん
垢版 |
2021/12/10(金) 09:58:50.45ID:kZDSpbMz
>>943
典型的なのはSFINAEを駆使してた部分がtraitで解決できるとかかな
まぁconceptと同じようなもんだけど、conceptは正直まだ発展途上だと思う
0947デフォルトの名無しさん
垢版 |
2021/12/10(金) 10:06:35.76ID:kZDSpbMz
C++はSFINAEがあるから部分的に型エラーになっても大丈夫だけど
Rustのジェネリクスはそういうのは許容しないからちょっと表現範囲は狭いね
ジェネリクスの範囲外は手続きマクロでカバーする感じ
こっちは任意のコード生成だから、テンプレートより遥かに自由度が高い(が、当然乱用するとやばい)
0949デフォルトの名無しさん
垢版 |
2021/12/10(金) 12:09:04.41ID:5non8kx0
>>948
Rustコミュニティーは若いからな。
説明ノウハウ無い&自浄作用無いので、アホがクズみたいなレスでマウント取ろうとするのは仕方ないよ。
0950デフォルトの名無しさん
垢版 |
2021/12/10(金) 12:51:44.86ID:iN+TjAqi
>>942
テンプレート機能はC++の一部だしテンプレートメタプログラミングはその機能を使ったプログラミングに過ぎない
言語自体の限界とはまったく関係ないしやらざるを得ないという表現はなにを指しているのかわからない
>>944
そんなことを言ったらRustにもプログラミング上必須でない機能が無数にあるだろう
言語間に差があることは前提で言語ごとに設計の仕方が異なるからRustの話を聞いただけだ
レス数が950を超えています。1000を超えると書き込みができなくなります。

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