C vs C++ vs Rust Part.3

■ このスレッドは過去ログ倉庫に格納されています
2022/01/27(木) 22:19:47.56ID:avZQ9Wm7
闘え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
C vs C++ vs Rust Part.2
https://mevius.5ch.net/test/read.cgi/tech/1639539350/
2022/03/24(木) 15:46:03.00ID:iUQBARfO
>>734
深層学習には何使うの?
2022/03/24(木) 15:54:22.45ID:A9GFlV37
空集合の扱いだけど
?と{?}は違うんでね
オチャメなバクとごまかしてたんじゃ
正解に辿り着かないよwww
-
集合族がせいぜいべき集合だと勘違いしてつまづく数学科連中が多いんだそ-な(数学セミナーで読んだ)
3要素からなる集合は最大8個
そこから考えられる集合の属は最大2^8=256個
そのなかで有限演算の結び、非加算合併演算に関して閉じている集合属は29個
2022/03/24(木) 15:56:43.89ID:A9GFlV37
>>735
さぁ?
こちとら所詮データベースに過ぎないAIなんて興味の対象外なんでね
カルマンフィルタ、粒子フィルタ、ベイズ推定、Viterbiアルゴリズムってならコメントできるけどねwwww
2022/03/24(木) 15:57:59.36ID:A9GFlV37
>>736
空集合が"?'になってるんで
?部分は空集合に置き換えて読んでね
2022/03/24(木) 15:58:08.77ID:y95b8UUh
こりゃ貧乏人かな?
2022/03/24(木) 19:43:58.62ID:1Vr2GJ3G
空集合をうっかり忘れるのはお茶目なバグという以外に表現はないw ちなみに普通はファイと読むんだよw 集合論自体はそんな難しいものじゃないw
Mathematicaは簡単な数式が解ける、グラフが簡単に描けるなどの理由で使う人は昔からいたけど、今はもっと複雑なことしたい人が多いから、数値計算にはRやPythonを使う人が多いと思うw
数理最適化分野も一部の商用ソフトを除けばPythonが多いと思うw
pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw
機械学習(NN)とDBは全く違うけど、もし自然言語処理に詳しいならword2vecの解説記事でも書いてたら世のためにでもなるんじゃない?w 俺も多少は分かるけどw
741デフォルトの名無しさん
垢版 |
2022/03/24(木) 20:35:43.32ID:pklAHbiT
> pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw

速いのは大半がC++で動いているからで、扱いやすいと言っても、ファイルからデータ
読んで渡すとかの部分だってC++でテンプレート使って書いた方が、Pythonより何倍も
速いと思うが?
2022/03/24(木) 21:17:04.78ID:1Vr2GJ3G
あれでしょw やっぱりjupyterの使い勝手がいいんでしょw
ちょっと動かして試してグラフ見て記録取ってみたいな試行錯誤したいときはw
だからガッツリ時間がかかる部分はpythonのままじゃたまったものじゃないけど、取れたデータを試したり外側のロジック組むときはpythonのが楽という理屈だと思うよw
2022/03/24(木) 21:58:37.46ID:XlqSDiYA
>>732
その位相空間というのを調べたら冪集合の冪集合のうち 全体と空集合を含み
各要素の和も積も所属していることらしいのでRustで作ってみました

fn 和集合(集合_x: usize, 集合_y: usize) -> usize { 集合_x | 集合_y }
fn 積集合(集合_x: usize, 集合_y: usize) -> usize { 集合_x & 集合_y }
fn 空集合(_size: usize) -> usize { 0 }
fn 全体集合(size: usize) -> usize { 冪(size) - 1 }
fn 冪(size: usize) -> usize { 1 << size }
fn 所属(集合: usize, 要素: usize) -> bool { 集合 & (1 << 要素) != 0 }
fn 一覧(size: usize) -> impl Iterator<Item=usize> { 0..size }
fn 要素一覧(集合: usize, size: usize) -> impl Iterator<Item=usize> {
一覧(size).filter(move |&要素| 所属(集合, 要素))
}
fn main() {
let input = ['a', 'b', 'c'];
let n = input.len();
一覧(冪(冪(n)))
.filter(|&s|
所属(s, 全体集合(n)) && 所属(s, 空集合(n)) &&
要素一覧(s, 冪(n)).all(|x|
要素一覧(s, 冪(n)).all(|y|
所属(s, 積集合(x, y)) && 所属(s, 和集合(x, y)))))
.for_each(|s| println!("{}", 要素一覧(s, 冪(n))
.format_with(",", |s, f| f(&format_args!("{{{}}}", 要素一覧(s, n)
.format_with(",", |index, f| f(&format_args!("{}", input[index]))))))));
}

これで{},{a,b,c} から {},{a},{b},{a,b},{c},{a,c},{b,c},{a,b,c} まで29個の位相が算出されました
入力を4つ ['a', 'b', 'c', 'd'] にすると355個の位相が算出されました
これで合っていますでしょうか?
2022/03/24(木) 22:54:59.49ID:9cbRkQeA
Rustのイテレータチェーンで宣言的っぽくシンプルに書けていいな
2022/03/24(木) 23:16:44.72ID:1Vr2GJ3G
ついにこんなしょうもない日本語のコードをあげて自画自賛し始めたRust信者w
そんな自明でしょうもないゴミコード書いてる暇があったらクソ速い正規表現エンジンでも作ってみたらいいのにw
2022/03/24(木) 23:20:36.69ID:rSdCMchJ
>>745
Pythonで書いているとこの前レスしていたようだが本当に書けるのか?
それとも>>732が言うように書けないのか?
2022/03/24(木) 23:31:17.75ID:Uh4MbO9+
ガイガー君はそういうコードを読めないし書けない
C++で冪集合(subsets)作るのも結局できなかった
2022/03/24(木) 23:46:12.18ID:1Vr2GJ3G
単発IDで自演大変だねw 出来ないのはお前だけw
2022/03/25(金) 12:11:43.15ID:2aIwxdP0
組み合わせ集合をそのまま保持しようとしてる時点で馬鹿だろ。
何の応用も考えてないの丸出しだな、競技プログラミングとかそっちのアホか。
2022/03/25(金) 12:14:33.84ID:vqaIaLyp
>>749
ではお手並み拝見
2022/03/25(金) 12:40:40.57ID:enyWdq4S
>>749
やめたれw
2022/03/25(金) 12:42:10.27ID:w9HuCaKe
>>749
実コードを出そうぜ
出せなきゃ負けの世界
2022/03/25(金) 13:48:01.88ID:enyWdq4S
>>749
お前の負けやで
2022/03/25(金) 14:03:38.99ID:svg4cCIa
枯れスレや 暇人どもの 糞の跡
2022/03/25(金) 14:31:21.44ID:2aIwxdP0
なるほど、本気でこういうコードをありがたがる馬鹿って結構多いんだな。
そりゃrust厨がいい気になっちゃうわけだ。
2022/03/25(金) 16:28:42.69ID:xgDHHux/
>>753
ID変え忘れたの?
2022/03/25(金) 17:17:18.88ID:enyWdq4S
>>756
律儀にID変えてて草
お前のことやで
2022/03/25(金) 17:43:08.49ID:Sr8uMs9s
>>755
何を問題にしている?
>>743なら単なる普通のイテレータのコードに見える
問題点を具体的に言えなきゃ何を言いいたいのかわからないよ
2022/03/25(金) 18:17:49.67ID:+pS3/Cvs
>>755
複製オジさんのコードをありがたがってるやつなんておらんよ
いつもの汚コードだから即NG
2022/03/25(金) 18:52:17.27ID:eoZx8ezX
あれ複おじなん?

それはともかく>>749のコード見てみたいわ
2022/03/25(金) 18:59:38.47ID:JpusqDH/
>>749
みんなこんだけ見せろって言ってんだよ
見せろよ
逃さねえぞ?
2022/03/25(金) 19:32:15.82ID:h6MJAUlj
>>743のコードを見てみたが
rangeイテレータをfilterしているだけの普通のよくあるコードだな
filterの中のbool値が(x, y)の二段のallになっているだけでこれもよくあるパターン

>>755
まさかと思うがこういうコードを初めて見た初心者なので理解できなかったということか?
2022/03/25(金) 21:14:50.48ID:u98H5tRm
どっちもどっちなんだが
煽ってるやつの指摘を理解できないやつらも普通にヤバいからな
2022/03/25(金) 21:15:45.94ID:Sf6AbPmi
バカだからコード書けないのに煽ってコードくださいって言うんだよw
2022/03/25(金) 21:25:12.39ID:1BFpe92B
>>763
的外れな指摘しかないぜ

>>764
コードは書かなくてもいいとは思うが
その場合は何が問題で自分ならどうするのかを言葉で説明するべき
代案を言葉かコードで出せないやつは言いがかりか愉快犯かアンチだから無視していい
2022/03/25(金) 21:43:21.60ID:Ux3SzCLX
>>759
今まで見てきて『汚コード』と連呼する時は特徴がある
forやifが使われずにイテレータ連鎖や条件メソッドが使われるRustコードの時に『汚コード』と言っている

そのため『汚コード』連呼の人は以下の3つのタイプいずれか
(1) 自分のコードの書き方に偏った信念があって他を受け付けない頑固タイプ
(2) 自分が理解できないコードがあると批判したくなる知弱タイプ
(3) Rustに反感がありRust的な書き方を嫌っているアンチタイプ
2022/03/25(金) 22:02:00.11ID:9tHxWkJU
汚ゴーダの承認要求w
2022/03/25(金) 22:06:20.29ID:6nlCsPOx
>>766
2か3だろう
2022/03/25(金) 22:53:50.64ID:thqo/0xR
まあ1なら信念を説明するなりコードで示すなりするだろうからな
2022/03/25(金) 23:17:24.40ID:Sf6AbPmi
そもそもどうでもいい内容だからなw
2022/03/25(金) 23:26:38.46ID:5On1tMu9
>>749
> 組み合わせ集合をそのまま保持しようとしてる時点で馬鹿だろ。

そんなコードはどこにも見当たらない
誤読しているのか、それとも、コードを読めずに適当に書いているのか
2022/03/25(金) 23:30:13.03ID:eoZx8ezX
こういう展開で一度でも良いから
本人(>>749)のコード見てみたいわ

つっこまれると黙り込んじゃうもんななぜか
つっこまれて待ってましたと披露、とかじゃなくてね
2022/03/26(土) 00:40:57.22ID:9q2PYIcF
書けないやつがいると思うところが怖いw
2022/03/26(土) 00:41:52.74ID:9q2PYIcF
まじでみんなどんどんRustを嫌いになっていくねw
2022/03/26(土) 01:38:57.93ID:JTqKZDur
>>773
ガイガー君はいつもコード書けないじゃん
今回のRustコードについても批判なの?
2022/03/26(土) 02:27:45.11ID:9q2PYIcF
何度でも言うが書けないのではなく、書かないだけw 煽っても何も出んぞw お前が書けないからって他の人も書けないとか思うなw
2022/03/26(土) 04:58:35.06ID:YsGlpYqC
>>776
今回はコードを読めなかったため批判したりコードを書くところまで辿り着けなかったというオチなんだろ
2022/03/26(土) 06:40:57.68ID:9q2PYIcF
何言ってんだ?この人w 自分のおつむが足りないからって同じ基準で他人を見ない方がいいよw
2022/03/26(土) 07:02:16.69ID:lZnQW6V9
珍しく反応していないからコードが読めなかったに一票
2022/03/26(土) 09:36:14.32ID:9y5xuIje
反応がワンパターンになってきてるから、相手が諦めるまで同じ内容を繰り返すんだろうな
低能にありがちな行動w
2022/03/26(土) 12:25:46.50ID:ShQHM1dQ
お互い相手にしてもらえるやつがいて良かったね
隔離スレ立てたやつに感謝
2022/03/26(土) 23:51:11.15ID:/7nLRmyg
>>749
組み合わせ集合の意味が不明だが['a', 'b', 'c']に対して冪集合の冪集合ことか?
>>743のコードの関数呼び出し部分を展開すると
「一覧(冪(冪(n)))」は「(0..(1 << (1 << n)))」
つまり冪集合の冪集合を0から255(=2^(2^3)-1)までの数値でbit表現していることになる
集合の表記でこれ以上は簡単にならないし応用も一番広く効くのではないか

あとは素直に位相を満たす条件でフィルタしてるだけだな
| .filter(|&s|
|  所属(s, 全体集合(n)) && //これは必須条件
|  所属(s, 空集合(n)) && //これも必須条件
|  要素一覧(s, 冪(n)).all(|x|
|   要素一覧(s, 冪(n)).all(|y|
|    所属(s, 積集合(x, y)) && //任意のintersectionも要素となる必須条件
|    所属(s, 和集合(x, y)) //任意のunionも要素も要素となる必須条件
| )))
全てがビット演算のみで済んでいるようだから
どの言語で書いてもこれ以上はシンプルかつ高速にならないと思われる
2022/03/27(日) 00:20:42.47ID:PoGWmBV8
また本人が自画自賛し始めたw この手の処理はbit演算では書かないよw 自分で調べてみればいいw
競プロマニア君が速いコード書けないのに頑張ったって言ってもらいたいらしいw
2022/03/27(日) 00:33:18.39ID:BBGNEHmu
>>783
べき集合ならbit表現が最も自然で効率的なんじゃない?
他に効率的な表現あるの?
2022/03/27(日) 01:17:15.21ID:PoGWmBV8
それにしか使えないから書かないんだよw
2022/03/27(日) 01:24:54.54ID:+ow6V/HP
>>783
それより速いコードを書けるならば出してみ
どうせ口だけデマカセなんだろ
787デフォルトの名無しさん
垢版 |
2022/03/27(日) 01:29:17.18ID:snCfFGlK
普段の仕事もコードを一切書かないで口だけ出す仕事なんだろうな。
2022/03/27(日) 03:56:07.43ID:PoGWmBV8
>>786-787
>>783
2022/03/27(日) 06:10:36.04ID:WvsZWRxm
>>783
他の方法でもっと速いのが書けると言うわけか
ならば俺が公平にベンチ取ってやろう
コードを出してくれ
2022/03/27(日) 07:40:41.39ID:mRPtF6UE
>>788
>>780ww
2022/03/27(日) 08:50:56.35ID:PoGWmBV8
>>790
>>780
2022/03/27(日) 08:52:43.09ID:KQB4wW2v
そうやって以後は安価で
2022/03/27(日) 08:53:00.96ID:0J12mqZ3
オウム返しのつもりとか恥の上塗りw
2022/03/27(日) 08:58:56.59ID:XGyUiIw6
>>783
これはbit演算でええやろ
もっと良い方法があるなら教えてや
2022/03/27(日) 10:19:26.28ID:6AFZPnaE
>>783
bit演算より速いコードってなにかある?
2022/03/27(日) 10:31:00.82ID:rqiHHq3k
> この手の処理はbit演算では書かないよw

一切コードを書かないならこれは真だなw
2022/03/27(日) 10:49:42.15ID:PoGWmBV8
>>792-796
>>783
2022/03/27(日) 10:54:38.88ID:8Tlml6j+
マジでなんでコード書かないの?
2022/03/27(日) 10:55:27.25ID:hQNNJiB+
>>796
なるほど!
彼は潔いな
2022/03/27(日) 11:44:30.72ID:PoGWmBV8
>>798-799
>>783
2022/03/27(日) 12:15:36.07ID:CPBl4WFe
>>796
一切コードを「書けない」場合も真だねw

挙動が>>780で指摘した通りになってて草生えまくり
2022/03/27(日) 12:28:35.30ID:PoGWmBV8
>>801
>>783
803デフォルトの名無しさん
垢版 |
2022/03/27(日) 16:26:12.94ID:snCfFGlK
c++にもhygienicマクロ導入してくれたらなぁ
2022/03/27(日) 17:22:03.05ID:WcFtzXHa
Rustのmacroはident属性指定により変数名に関してはhygienicだな
ライフタイムとジェネリック型に関してはそうでないけれど
2022/03/27(日) 21:22:52.61ID:PoGWmBV8
マクロそのものが原則いらんw
2022/03/28(月) 07:49:38.26ID:pN+hSa41
>>783
bit演算を使わないもっと速いコードというのを教えてください
2022/03/28(月) 09:01:32.11ID:ZJaztVr1
>>783
Google様の模範解答があるのでどうぞ
https://github.com/google/guava/blob/v31.1/guava/src/com/google/common/collect/Sets.java#L1587
2022/03/28(月) 21:03:15.30ID:dJWBHkZn
IDE使ってwindows.hとかインクルードしてた時
マクロの処理のせいでどんだけ遅くなってメモリ食ってるんだろうと
よく不安な気持ちになってた
2022/03/28(月) 21:19:08.60ID:aetLX46N
>>808
メモリや遅さを気にするならばIDE使わずとも何ら問題なく開発できる
IDE使ってるくせになぜそんなことを気にするのか?
2022/03/28(月) 23:04:54.34ID:51Y1Thh9
まだ続けてんのかよw
Google様の模範解答とか言って的外れなの出されてもw
#includeは別にマクロのせいで遅くなるとかそういう話でもないし、マクロなんか処理としてはまるで重くないw
存在が悪というだけw
2022/03/28(月) 23:08:33.54ID:SvEFPfvN
>>810
ビット演算を使わない速いコードをそろそろ披露して。
2022/03/29(火) 07:54:52.06ID:CtwsyWiP
C++11以降の規画いじりて、よのなかのニーズからすると斜め上の
ユーザーにそっぽ向かれるような規画ばっかなんで注力したのかな?
テンプレートで定義した関数、なんとかうまく自動選択されるように頑張ってみたモノの
最後は泥縄メタ関数でゴテゴテ飾り立てたってのがこの10年だったような気がしてならない
そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの?
あれ慣れてしまうともうtry,catchなんかうざくて使えない
2022/03/29(火) 08:06:32.47ID:fHExY7tI
>>812
> そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの?
お前…
2022/03/29(火) 09:06:35.79ID:tKmNrPY6
スコープアウトでなんかしたいならデストラクタでどうにかするC++の方針を知らんのか?
2022/03/29(火) 10:21:53.60ID:HFhqj5qW
ちんちんシュッ!シュッ!シュッ!
2022/03/29(火) 13:42:47.10ID:CtwsyWiP
>>814
はぁ?
スコープアウト?何ねぼけてんだ
例外処理のデフォルト処理のことを言ってるんだが
2022/03/29(火) 13:43:14.23ID:CtwsyWiP
>>813
なんやお前
2022/03/29(火) 14:16:16.84ID:CtwsyWiP
例えば C$の
$"X = {X}"
に慣れてしまうと
cerr,coutあたりの
"x = " << x
とか邪魔臭すぎるだろ
null合体演算子にしてもそう。これがあるかないかで生産性大違い
恐らくすぐにでも実装出来そうな機能が未だに実装されてない。
async/awaitでもC++20でようやく正式サポートだっけ
どこ見て標準規格きめてんの?
CユーザがC++知ってしまうとPure Cで書くのがいやになるように
C++ユーザがC#知ってしまうともうC++で書くのがめんどくさくてかなわんのよな
2022/03/29(火) 15:10:25.26ID:s791HQmS
>>816
ねぼけてるのは君のほうだと思うぞ
あ、ねぼけてるわけじゃなくてただ知らないだけか
2022/03/29(火) 15:59:34.10ID:ffasCIjO
そもそもusingと
> 例外処理のデフォルト処理のことを言ってるんだが
になんの関係があるんだ?
2022/03/29(火) 16:42:51.37ID:sOLohvn0
usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C#にはRAIIがないから try/finally とかで解放処理を書く必要があったりしてそのtry構文はクソ面倒だけど、usingを使うとお手軽に書ける

まあRAIIがあればそもそもこんなの不要かな
2022/03/29(火) 17:03:56.94ID:1RqC5Y4R
RAIIはGC使わない言語用だからな
2022/03/29(火) 17:07:15.66ID:7ru2bWxl
RAIIほどポンコツな名前が長く使われてるケースも珍しいよね
自浄作用とかないのかな
2022/03/29(火) 17:16:42.76ID:QRpFWUID
C#にもlock statementみたいにRAII的なものもある
2022/03/29(火) 17:59:34.97ID:bjKur886
むしろC++がもたらしたものの中で
一番冴えてるのがRAIIだと思うけど
2022/03/29(火) 18:09:07.22ID:wvo3NcdM
そういえばCにdeferが入るかもって話はどうなったんだ?
2022/03/29(火) 19:17:05.07ID:tpB/JA+o
>>816
たぶん
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
のこと言ってるんだろうけど

例外処理のデフォルトってfinallyのことだよな?
finallyで処理するのは例外の時だけじゃないぞ

return/continue/break/throwでusingブロックを抜けるときにIDisposable.Dispose()を実行するための構文だぞ
2022/03/29(火) 19:52:33.02ID:AEoeDiSF
>>821
C#: usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C++: スコープ内で定義すると、スコープアウトされたときにデストラクタを呼び出すことが保証される

まさか知らないの?
2022/03/29(火) 20:32:11.38ID:/9JyHlX1
>>822
GCは関係ないな
2022/03/29(火) 22:21:27.32ID:HLabfOkH
スコープ抜けた時の動作するって代物ならやっぱdeferのが明示的で使いやすいってのがcにも入った理由だろうな。
2022/03/29(火) 22:40:18.50ID:zunmlMTL
deferって実際に入ったの? 提案されただけでなく?
書き方が楽なのはC#で間違いない
リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
RAIIって別にそんな重要なキーワードじゃなく、名前はないけど昔からあった考え方で、Windows3.1時代でも皆普通に使ってた
2022/03/29(火) 22:56:21.68ID:UoyzmKMm
>>830
使いやすいかなぁ
自由度は高いけどその分間違えやすい気がする
2022/03/29(火) 23:05:49.29ID:/9JyHlX1
>リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数

C#のusingとpythonのwithと、あと有名どころだと何があったっけか
2022/03/30(水) 06:51:40.79ID:ES6j8MQa
>>827
finallyみたいなもんを用意せずに済むことを言ってるのに

じゃ、君のあげたコイツ
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}

同じようにC++でこれぐらい簡単に書けるというなら書いて見せてくれ

俺は>>616で同様の処理をC++で書けないとは一言もいってない。
生産性たかく、簡単に書ける手法が用意されてないことを言ってる。
usingだけ食いついてるが

・$"X = {X}"
・null合体演算子

は?C++でどー書けるのか是非知りたいから教えてくれよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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