スレタイ以外の言語もok
前スレ
次世代言語27 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1659655598/
次世代言語28 TypeScript Swift Go Kotlin Rust Nim
■ このスレッドは過去ログ倉庫に格納されています
2022/08/29(月) 11:22:16.48ID:5dAad4gs
268デフォルトの名無しさん
2022/09/05(月) 03:10:33.61ID:9iTWKe04 何でもrustでやらんで、安全性第一のとことか機能が優れてるとこ(非同期やジェネリクス、健全なマクロ、パターンマッチ等)とかからでもrustを便利に使ってったらええ。
今のrustは少しずつ実用面で採用を広げて行ってる段階だろ。Linuxでの採用とかさ。
既存のcでやってることをイキなり全部rustで置き換えようとしてる人なんて居ない。
rustにその潜在能力があったもしてもマンパワーが足りない。だから大手は少しずつ小さな分野で使いだしてる、複数の大手でね。
ただrustはもっとc言語との連携が簡単だったらと思う。
今のrustは少しずつ実用面で採用を広げて行ってる段階だろ。Linuxでの採用とかさ。
既存のcでやってることをイキなり全部rustで置き換えようとしてる人なんて居ない。
rustにその潜在能力があったもしてもマンパワーが足りない。だから大手は少しずつ小さな分野で使いだしてる、複数の大手でね。
ただrustはもっとc言語との連携が簡単だったらと思う。
269デフォルトの名無しさん
2022/09/05(月) 03:31:45.52ID:hQwE/dE/270デフォルトの名無しさん
2022/09/05(月) 03:36:29.05ID:pmwagyd7 >>268
どの言語からどの言語の場合でも既存システムをそのまま言語置き換えはコストだけかかり効率がよろしくない
そのためシステム改修や新規システムを中心にRust採用となっているようだ
現在ある選択肢では人間が引き起こしうるミスをコンパイラに防止させてセキュリティ含む穴を無くしていく言語候補がRustの他にない
どの言語からどの言語の場合でも既存システムをそのまま言語置き換えはコストだけかかり効率がよろしくない
そのためシステム改修や新規システムを中心にRust採用となっているようだ
現在ある選択肢では人間が引き起こしうるミスをコンパイラに防止させてセキュリティ含む穴を無くしていく言語候補がRustの他にない
271デフォルトの名無しさん
2022/09/05(月) 06:42:39.68ID:ARttffD1 簡単に言えば、Pythonの代わりにRustを使うことはあっても、C/C++の代わりになることはない。
レジスタやメモリーを扱うのは大変危険だから。
レジスタやメモリーを扱うのは大変危険だから。
272デフォルトの名無しさん
2022/09/05(月) 07:16:47.41ID:yWe543y4273デフォルトの名無しさん
2022/09/05(月) 07:22:08.46ID:ARttffD1 >>272
じゃあ安全じゃないじゃん。
じゃあ安全じゃないじゃん。
274デフォルトの名無しさん
2022/09/05(月) 07:51:21.51ID:928S9Xdp 以前の言語
・プログラムのメモリ安全性、null安全性、データ競合安全性をプログラマーの責任で保証する
Rust
・それらの安全性を全てコンパイラが保証
・プログラマーの責任でCと同じメモリ操作やインラインasmなどを記述できるunsafeブロックもサポート
Swift, Kotlinなど
・null安全性をコンパイラが保証
・プログラムのメモリ安全性、null安全性、データ競合安全性をプログラマーの責任で保証する
Rust
・それらの安全性を全てコンパイラが保証
・プログラマーの責任でCと同じメモリ操作やインラインasmなどを記述できるunsafeブロックもサポート
Swift, Kotlinなど
・null安全性をコンパイラが保証
275デフォルトの名無しさん
2022/09/05(月) 08:33:46.56ID:HWNfM8e/ >>268
Rustを使うにはガッツリ勉強しないと無理だから……THE BOOK一通り勉強しないと無理だから……
Rustを使うにはガッツリ勉強しないと無理だから……THE BOOK一通り勉強しないと無理だから……
276デフォルトの名無しさん
2022/09/05(月) 09:45:50.25ID:KpRHtzI/ >>92
上に書いたように、当然gccでやったら同じコンパイル結果にならず全く違いますね?これを同じとは言えません
rustcの結果(-C opt-level=2)が138行あるが、x86-64 gcc 12.2(-O2)は16行です。
https://godbolt.org/z/v6TxTGGbT
max_value:
test rdi, rdi
je .L4
lea rcx, [rsi+rdi*4]
xor eax, eax
.L3:
mov edx, DWORD PTR [rsi]
cmp eax, edx
cmovb eax, edx
add rsi, 4
cmp rsi, rcx
jne .L3
ret
.L4:
xor eax, eax
ret
速度の比較はやはりrust(というかllvm)のほうが、ほんのちょっぴりから2倍以内ほど遅い結果になると思います。
今はC言語といえばclangなのかもしれませんが作られているソフトウェアはまだgccのほうが圧倒的に多いです。
gccを-O3にするとrustcと同じくSIMD拡張命令が使われますが、それでも84行と138行なので違います
それほど真剣に見ていませんが、C側はlenが引数として取るのに対して、もう一方はlen()を呼び出していますが
c/clangでほぼ同じになるのはなんでなんでしょうか?
上に書いたように、当然gccでやったら同じコンパイル結果にならず全く違いますね?これを同じとは言えません
rustcの結果(-C opt-level=2)が138行あるが、x86-64 gcc 12.2(-O2)は16行です。
https://godbolt.org/z/v6TxTGGbT
max_value:
test rdi, rdi
je .L4
lea rcx, [rsi+rdi*4]
xor eax, eax
.L3:
mov edx, DWORD PTR [rsi]
cmp eax, edx
cmovb eax, edx
add rsi, 4
cmp rsi, rcx
jne .L3
ret
.L4:
xor eax, eax
ret
速度の比較はやはりrust(というかllvm)のほうが、ほんのちょっぴりから2倍以内ほど遅い結果になると思います。
今はC言語といえばclangなのかもしれませんが作られているソフトウェアはまだgccのほうが圧倒的に多いです。
gccを-O3にするとrustcと同じくSIMD拡張命令が使われますが、それでも84行と138行なので違います
それほど真剣に見ていませんが、C側はlenが引数として取るのに対して、もう一方はlen()を呼び出していますが
c/clangでほぼ同じになるのはなんでなんでしょうか?
277デフォルトの名無しさん
2022/09/05(月) 09:57:13.85ID:DUaqFrRV278デフォルトの名無しさん
2022/09/05(月) 10:24:45.85ID:vkD3rEEb >>276
Cでは引数にlenを取り、Rustではlen()を使っていて、両者は全く異なるのに、なぜ、ほぼ同じ生成コードになるのかが分からないって!?
もう少しRustを勉強してからアンチ活動しましょ
Cは先頭ポインタと長さの二つの引数を別々に渡しているのに対して、
Rustはスライス1つのみ引数を渡しているけど、「スライス=ポインタと長さのセット」だから同じ情報を渡しています
そしてlen()はその長さ部分を示すだけだからCコード側のlenと同じ
そしてスライスとしてセットとなっているlen()だからこそデタラメな不正な値が来ることはなく、
コンパイラの管轄下で信頼できる正しい長さ数値情報として扱うことができて、
その長さ未満となるループ内でインデックス境界チェックも安全に省略できるのよ
そのためLLVMによりCのプログラムと同等の生成コードが出来上がります
Cでは引数にlenを取り、Rustではlen()を使っていて、両者は全く異なるのに、なぜ、ほぼ同じ生成コードになるのかが分からないって!?
もう少しRustを勉強してからアンチ活動しましょ
Cは先頭ポインタと長さの二つの引数を別々に渡しているのに対して、
Rustはスライス1つのみ引数を渡しているけど、「スライス=ポインタと長さのセット」だから同じ情報を渡しています
そしてlen()はその長さ部分を示すだけだからCコード側のlenと同じ
そしてスライスとしてセットとなっているlen()だからこそデタラメな不正な値が来ることはなく、
コンパイラの管轄下で信頼できる正しい長さ数値情報として扱うことができて、
その長さ未満となるループ内でインデックス境界チェックも安全に省略できるのよ
そのためLLVMによりCのプログラムと同等の生成コードが出来上がります
279デフォルトの名無しさん
2022/09/05(月) 12:00:09.73ID:g3RfqaIY >>276
rustにもgccバックエンドあるからそれで試してみてくれ
rustにもgccバックエンドあるからそれで試してみてくれ
280デフォルトの名無しさん
2022/09/05(月) 13:38:45.87ID:hgtSwHCO >>276
素晴らしいです。ブラウザで見るに留まらず実際に動かしたのですね。277 278は気にする必要なし
gccの中の人も訪れる場でおこがましいですが解説してみます
gccとclang/LLVMで同じ最適化オプションO2同士でも適用されるテクニックが異なるのです。
手っ取り早く最上級で比べる場合は gcc -O4 vs clang -O3 で比べたりします。
>>73の人も書いてますがclangはgccに比べてやたらとunrollしたがります。
clangが出始めの頃に持ち上げられた事がありましたが、新入りは背伸びをしたがるものです
大きなデータセットで見栄えのする、gccに引けを取らないベンチマーク結果が欲しかったのか
そういう状況にフォーカスした味付けがしてあったのかなと邪推したくなります
今回のケースで言うと
277 278はasmを表面的に見ただけの人で
データセットサイズに寄りけりだという常識(最速を目指すものには)がすっぽり抜けてます
gcc -O2 vs gcc -O3 vs clang -O2 (vs Rust)
ttps://godbolt.org/z/6E4Ksx34Y
gcc -O2 unroll なし blanchless move(cmovb)だけ
gcc -O3 unroll x 4 ( 4 byte/roll * 4roll/loop = 16 byte/loop = 128bit SSE LOAD x 1 / loop)
clang -O2 unroll x16 ( 4 byte/roll *16roll/loop = 64 byte/loop = 128bit SSE LOAD x 4 / loop)
lenが小さい時はせっかく用意したunroll loopに入れられず
unroll x 4 --> len <= 3 else の振り分け1回
unroll x 16 --> len <= 15 else len <= 7 else len <= 3 かどうかの振り分け3回
とunrollが大きいほど手間がかかり、CPUの分岐予測と投機実行の性能に寄りけりですが、
Benchmarkで数を回せば観測される確かな差が生まれます。
素晴らしいです。ブラウザで見るに留まらず実際に動かしたのですね。277 278は気にする必要なし
gccの中の人も訪れる場でおこがましいですが解説してみます
gccとclang/LLVMで同じ最適化オプションO2同士でも適用されるテクニックが異なるのです。
手っ取り早く最上級で比べる場合は gcc -O4 vs clang -O3 で比べたりします。
>>73の人も書いてますがclangはgccに比べてやたらとunrollしたがります。
clangが出始めの頃に持ち上げられた事がありましたが、新入りは背伸びをしたがるものです
大きなデータセットで見栄えのする、gccに引けを取らないベンチマーク結果が欲しかったのか
そういう状況にフォーカスした味付けがしてあったのかなと邪推したくなります
今回のケースで言うと
277 278はasmを表面的に見ただけの人で
データセットサイズに寄りけりだという常識(最速を目指すものには)がすっぽり抜けてます
gcc -O2 vs gcc -O3 vs clang -O2 (vs Rust)
ttps://godbolt.org/z/6E4Ksx34Y
gcc -O2 unroll なし blanchless move(cmovb)だけ
gcc -O3 unroll x 4 ( 4 byte/roll * 4roll/loop = 16 byte/loop = 128bit SSE LOAD x 1 / loop)
clang -O2 unroll x16 ( 4 byte/roll *16roll/loop = 64 byte/loop = 128bit SSE LOAD x 4 / loop)
lenが小さい時はせっかく用意したunroll loopに入れられず
unroll x 4 --> len <= 3 else の振り分け1回
unroll x 16 --> len <= 15 else len <= 7 else len <= 3 かどうかの振り分け3回
とunrollが大きいほど手間がかかり、CPUの分岐予測と投機実行の性能に寄りけりですが、
Benchmarkで数を回せば観測される確かな差が生まれます。
281デフォルトの名無しさん
2022/09/05(月) 13:42:00.23ID:KOsqPsuw len>=16の場合はどうか
L1/L2/L3に収まっているかどうか
それぞれのcache階層間のデータ転送granularity
Hardware prefetchの効き具合 on the fly loadの上限数
surrounding code間とのcache pollution
いろんな要因がありすぎて 結局やって比べるのが手っ取り早いです
gccはcache pollutionへの対策かどうか確認したことはありませんが
unrollは控えめな印象は確かです(オプションで調整できます)
この辺のトレードオフを評価するコストモデルはCPU vendorがPRを出したりしますが
タイムリーかどうかはその時々です
個人的な印象ですが-march=znver2と-march=znver3が長いこと同一だった気がしてます...
お使いのCPU次第ですが AVX(128bit -mavx) AVX2(256bit -mavx2)で試したら
更なる発見があると思います
compiler exploreで -mavx2のasmを見てみるだけでも面白いですよ
Apple Siliconの方は判りません。どなたか解説お願いします
L1/L2/L3に収まっているかどうか
それぞれのcache階層間のデータ転送granularity
Hardware prefetchの効き具合 on the fly loadの上限数
surrounding code間とのcache pollution
いろんな要因がありすぎて 結局やって比べるのが手っ取り早いです
gccはcache pollutionへの対策かどうか確認したことはありませんが
unrollは控えめな印象は確かです(オプションで調整できます)
この辺のトレードオフを評価するコストモデルはCPU vendorがPRを出したりしますが
タイムリーかどうかはその時々です
個人的な印象ですが-march=znver2と-march=znver3が長いこと同一だった気がしてます...
お使いのCPU次第ですが AVX(128bit -mavx) AVX2(256bit -mavx2)で試したら
更なる発見があると思います
compiler exploreで -mavx2のasmを見てみるだけでも面白いですよ
Apple Siliconの方は判りません。どなたか解説お願いします
282デフォルトの名無しさん
2022/09/05(月) 14:12:00.36ID:++1d7Ak5283デフォルトの名無しさん
2022/09/05(月) 15:11:00.05ID:kIS7nj8M 連投するのに何でいちいちID変えてるの?
284デフォルトの名無しさん
2022/09/05(月) 15:42:20.01ID:ORvHoQkv 気軽にNGされると困る
285デフォルトの名無しさん
2022/09/05(月) 15:43:39.27ID:4jBB7bRF まるでRustがキチガイ用言語に見えてきた
286デフォルトの名無しさん
2022/09/05(月) 16:07:08.66ID:ZY4XQhp4 ヒント:複オジはワッチョイスレに一回も来たことがない
287デフォルトの名無しさん
2022/09/05(月) 16:32:50.42ID:NIbO6JQn 複オジも昔はコテハン使ってイキってたんだが
恥ずかしいレスを叩かれて匿名複オジに
今でもそのコテハンで書き込んだりもしてる
迷惑だよな
恥ずかしいレスを叩かれて匿名複オジに
今でもそのコテハンで書き込んだりもしてる
迷惑だよな
288デフォルトの名無しさん
2022/09/05(月) 18:31:27.51ID:i8gFMMFV やっぱりワッチョイにしようぜ。
289デフォルトの名無しさん
2022/09/05(月) 19:04:14.83ID:iWQD5HeB Haskellの時もそうだったけど、世界でアカン空気が流れ始めると、日本で流行らせようと宣伝し始めるのは何でだろな?
290デフォルトの名無しさん
2022/09/05(月) 19:05:51.22ID:JwYYQerB 日本のIT技術を遅らせたい勢力が存在するのかも
291デフォルトの名無しさん
2022/09/05(月) 19:06:21.16ID:iWQD5HeB RoRの時みたいに、世界で流行るときは、日本ではアカン言うてアンチが増えるんだよね。
292デフォルトの名無しさん
2022/09/05(月) 19:08:02.01ID:XsUbtHe1 >>290
この件と関係あるかは知らんけどその勢力がいることだけは確か
この件と関係あるかは知らんけどその勢力がいることだけは確か
293デフォルトの名無しさん
2022/09/05(月) 19:11:19.28ID:iWQD5HeB このスレで紹介されるRustの良いところって、「定数の索引で配列アクセスする場合は、最適化されて境界チェックが消える、安心安全」だけでしょ?
定数の索引で配列アクセスなんて、一生に一度書くか書かないかくらいなんだから、そんな機能在っても嬉しくないわ。
定数の索引で配列アクセスなんて、一生に一度書くか書かないかくらいなんだから、そんな機能在っても嬉しくないわ。
294デフォルトの名無しさん
2022/09/05(月) 19:12:38.64ID:iWQD5HeB その点Javaは、実行時最適化でRustの5倍速い。
知らんけど。
知らんけど。
295デフォルトの名無しさん
2022/09/05(月) 19:23:11.04ID:g3RfqaIY >>289
Rustだめな理由知りたいからあかんとされてるブログ記事なりニュースなりフォーラムなり教えて
Rustだめな理由知りたいからあかんとされてるブログ記事なりニュースなりフォーラムなり教えて
296デフォルトの名無しさん
2022/09/05(月) 19:28:42.10ID:iWQD5HeB297デフォルトの名無しさん
2022/09/05(月) 19:51:44.37ID:wWfHpXgm298デフォルトの名無しさん
2022/09/05(月) 19:55:18.42ID:x/Xug50w 非同期関連がごちゃごちゃしてて面倒くさいってのはあるよな
ゼロランタイムコストが売りだから仕方がないんだろうが
その点Goはランタイムに強力な並行並列処理が組み込まれてるから、基本的な文法から標準ライブラリ、サードパーティライブラリで全て共通のgoroutine、channel、selectを使えて非常に扱いやすい
DockerやKubernetesとかクラウド関連で流行ってるのはこの並行並列処理が言語、ランタイムレベルでサポートされてるのが最大の要因だな
Nodeも非同期処理を言語レベルでサポートしてるからこれだけWeb系で流行ってる
その点Rustは弱い
ライブラリによってAはサポートしてるけどBはしてないとかあって色々面倒くさい
ゼロランタイムコストが売りだから仕方がないんだろうが
その点Goはランタイムに強力な並行並列処理が組み込まれてるから、基本的な文法から標準ライブラリ、サードパーティライブラリで全て共通のgoroutine、channel、selectを使えて非常に扱いやすい
DockerやKubernetesとかクラウド関連で流行ってるのはこの並行並列処理が言語、ランタイムレベルでサポートされてるのが最大の要因だな
Nodeも非同期処理を言語レベルでサポートしてるからこれだけWeb系で流行ってる
その点Rustは弱い
ライブラリによってAはサポートしてるけどBはしてないとかあって色々面倒くさい
299デフォルトの名無しさん
2022/09/05(月) 20:01:50.03ID:iWQD5HeB 基本的にRustは知られていないんだよね。
日本以外では。
とっくにオワコンだから。
日本以外では。
とっくにオワコンだから。
300デフォルトの名無しさん
2022/09/05(月) 20:04:19.99ID:g3RfqaIY301デフォルトの名無しさん
2022/09/05(月) 20:10:04.95ID:iWQD5HeB Rustなんか構ってる暇あったら、PHPやれよって話。
302デフォルトの名無しさん
2022/09/05(月) 20:13:42.10ID:9iTWKe04303デフォルトの名無しさん
2022/09/05(月) 20:20:47.93ID:kVCZ1c6R304デフォルトの名無しさん
2022/09/05(月) 20:25:02.75ID:5VtMLQd9 >>300
最後まで読むと結局仕事では使ってるみたいだし
どちらかというと不満がある人でも使うくらいには広まってきている、というべきな気はする
オワコンっていうには他言語に移行したみたいな事例が必要なのでは
最後まで読むと結局仕事では使ってるみたいだし
どちらかというと不満がある人でも使うくらいには広まってきている、というべきな気はする
オワコンっていうには他言語に移行したみたいな事例が必要なのでは
305デフォルトの名無しさん
2022/09/05(月) 20:36:11.44ID:e+uJj/tK306デフォルトの名無しさん
2022/09/05(月) 20:50:10.83ID:Xf3ARiO4 >>296
読んだけど少し偏った思想の人なだけだった
「いずれRustでガベージコレクターが人気になると予想する」とか今後も極一部の用途以外では使われないだろう
「XXXをRustで書き換えたら速くなったというのはRustのせいじゃない」は安全かつ速くなった利点を理解していない
「良いメンテされたコードを書いてるメンテナーは非同期を採用することに抵抗がある」は用途に応じて使い分ける人が正常なので抵抗なんてない
Rustを批判する人はちょっとおかしな人が多いと感じる
読んだけど少し偏った思想の人なだけだった
「いずれRustでガベージコレクターが人気になると予想する」とか今後も極一部の用途以外では使われないだろう
「XXXをRustで書き換えたら速くなったというのはRustのせいじゃない」は安全かつ速くなった利点を理解していない
「良いメンテされたコードを書いてるメンテナーは非同期を採用することに抵抗がある」は用途に応じて使い分ける人が正常なので抵抗なんてない
Rustを批判する人はちょっとおかしな人が多いと感じる
307デフォルトの名無しさん
2022/09/05(月) 21:07:54.27ID:bQN+7pEG >>293
さすがにそのツッコミはRustゴリ押しの自作自演級に低レベルだぞ
さすがにそのツッコミはRustゴリ押しの自作自演級に低レベルだぞ
308デフォルトの名無しさん
2022/09/05(月) 21:25:09.81ID:qPl0Yk8b Haskellてあかんやつだったの?
309デフォルトの名無しさん
2022/09/05(月) 21:39:30.67ID:wI2HBmBd >>305
Haskellはガベージを撒き散らしながら計算を進めるからRustとはその点で真逆な存在かな
強いて言えばHaskellの型クラスとRustのtraitが基本思想の一部で似てる程度
そのRustとHaskellを叩いてる人はどうせ何も理解していないでしょう
Haskellはガベージを撒き散らしながら計算を進めるからRustとはその点で真逆な存在かな
強いて言えばHaskellの型クラスとRustのtraitが基本思想の一部で似てる程度
そのRustとHaskellを叩いてる人はどうせ何も理解していないでしょう
310デフォルトの名無しさん
2022/09/05(月) 21:58:07.88ID:59/nx/yB 例えばRustでhttpクライアント使いたかったからhyperやらreqwestやらsurfやらサードパーティのライブラリを使うことになると思う
別にこれでもいいが他人のコードを読む上で共通のコードが出てくるってのはかなりアドバンテージがある
それに対してGoが標準ライブラリで用意されてるから通常サードパーティのライブラリは使わない
コネクションプーリングも勝手にやってくれる上にhttp2対応も完璧
テストもhttptestパッケージで簡単に作れる
サーバー作る時も標準ライブラリを学んでおけばサードパーティライブラリの習得は容易
RDB扱う時もGoは標準ライブラリレベルでインターフェースを共通化したりコネクションプーリングをサポートしてる
ということで標準ライブラリが強力ってのは実用的なソフトを複数人で作っていく上で非常に重要
別にこれでもいいが他人のコードを読む上で共通のコードが出てくるってのはかなりアドバンテージがある
それに対してGoが標準ライブラリで用意されてるから通常サードパーティのライブラリは使わない
コネクションプーリングも勝手にやってくれる上にhttp2対応も完璧
テストもhttptestパッケージで簡単に作れる
サーバー作る時も標準ライブラリを学んでおけばサードパーティライブラリの習得は容易
RDB扱う時もGoは標準ライブラリレベルでインターフェースを共通化したりコネクションプーリングをサポートしてる
ということで標準ライブラリが強力ってのは実用的なソフトを複数人で作っていく上で非常に重要
311デフォルトの名無しさん
2022/09/05(月) 22:16:25.49ID:LJb2ynoL >>310
hyperとreqwest/surfはレイヤーが異なり比較する対象でないからそこで例として持ち出すのは適切ではないね
あと標準ライブラリの範囲や意味するところは言語によって異なるのだからあまり意味のない議論だと思う
その思想だとあらゆるものが標準ライブラリにあり他のライブラリを一切使わない言語が最上となってしまう
それぞれにメリットとデメリットがあります
hyperとreqwest/surfはレイヤーが異なり比較する対象でないからそこで例として持ち出すのは適切ではないね
あと標準ライブラリの範囲や意味するところは言語によって異なるのだからあまり意味のない議論だと思う
その思想だとあらゆるものが標準ライブラリにあり他のライブラリを一切使わない言語が最上となってしまう
それぞれにメリットとデメリットがあります
312デフォルトの名無しさん
2022/09/05(月) 22:16:42.44ID:e+uJj/tK 実用品かどうかの定義が難しいけど
ほぼ原価で買える物は実用品と認定されやすい
原価より高い物は実用的ではない無駄な要素が入っている疑惑や誤解を招きやすい
ほぼ原価で買える物は実用品と認定されやすい
原価より高い物は実用的ではない無駄な要素が入っている疑惑や誤解を招きやすい
313デフォルトの名無しさん
2022/09/05(月) 22:20:06.23ID:5dvrlWbj しかしRustへの注目度たかいなw
もう実質 Rust vs その他次世代言語って感じw
もう実質 Rust vs その他次世代言語って感じw
314デフォルトの名無しさん
2022/09/05(月) 22:33:58.90ID:g3RfqaIY Rustがオワコン言うからGitHubのPullReqに占める言語毎の割合のデータ見てみたけどTypeScriptとGoが圧倒的ということが分かった
Nimは残念ながらランク外、他はだいたい横ばいみたい
https://madnight.github.io/githut/#/pull_requests/2022/1/TypeScript,Swift,Go,Kotlin,Rust,Nim
GitHub全体のPullReq数も増加していると思われるので、個々の言語の利用者の増減を見るには不向きなデータかも
割合じゃなくて言語毎のPullReq数が分かるサイトがあったら教えて欲しい
Nimは残念ながらランク外、他はだいたい横ばいみたい
https://madnight.github.io/githut/#/pull_requests/2022/1/TypeScript,Swift,Go,Kotlin,Rust,Nim
GitHub全体のPullReq数も増加していると思われるので、個々の言語の利用者の増減を見るには不向きなデータかも
割合じゃなくて言語毎のPullReq数が分かるサイトがあったら教えて欲しい
315デフォルトの名無しさん
2022/09/05(月) 22:39:25.77ID:LWnBOcCn 利用される分野が違う言語を比較して、なんの参考にしたいんだろう
分野は気にならんの?
分野は気にならんの?
316デフォルトの名無しさん
2022/09/05(月) 22:43:52.15ID:098gBdTn >>313
Rust以外は言語機能で本質的な改善になってないからね
Rust以外は言語機能で本質的な改善になってないからね
317デフォルトの名無しさん
2022/09/05(月) 22:45:04.42ID:4OHy49Sd318デフォルトの名無しさん
2022/09/05(月) 22:49:48.10ID:TWq6epN6 GoとTypescript書ければ仕事には困らないな、うん
Rustは仕事の需要はないけど趣味やOSS活動でやる分にはいいかもしれない
Rustは仕事の需要はないけど趣味やOSS活動でやる分にはいいかもしれない
319デフォルトの名無しさん
2022/09/05(月) 23:05:10.53ID:g3RfqaIY >>315
それを言うとそもそもこのスレのスレタイがどうなのよという話になる
それを言うとそもそもこのスレのスレタイがどうなのよという話になる
320デフォルトの名無しさん
2022/09/05(月) 23:11:05.60ID:LWnBOcCn このスレは言語機能そのものについて語るスレだと思ってた
人気について話したいひともたくさんいるんだろうけど
人気について話したいひともたくさんいるんだろうけど
321デフォルトの名無しさん
2022/09/05(月) 23:26:38.48ID:1hFtemgL322デフォルトの名無しさん
2022/09/05(月) 23:26:43.28ID:iWQD5HeB Rustはオワコンだから使たらアカンやで。
323デフォルトの名無しさん
2022/09/05(月) 23:27:36.08ID:9iTWKe04 >>311
全てを最初から用意するのは不可能だけど、標準ライブラリで事足りるってのは利用側としてはメリットでかいぞ。
もちろんrustがあえてコア重視してるのはわかるが、お陰で非同期とか今時普通なものも乱立してる。
全てを最初から用意するのは不可能だけど、標準ライブラリで事足りるってのは利用側としてはメリットでかいぞ。
もちろんrustがあえてコア重視してるのはわかるが、お陰で非同期とか今時普通なものも乱立してる。
324デフォルトの名無しさん
2022/09/05(月) 23:31:48.82ID:iWQD5HeB Rsutと云う泥船に乗せて一緒に沈没させようとしている奴らが居る。
どこの教団や!?
どこの教団や!?
325デフォルトの名無しさん
2022/09/05(月) 23:33:58.91ID:9iTWKe04 >>324
はいはい、おじいちゃんもう寝る時間よ。
はいはい、おじいちゃんもう寝る時間よ。
326デフォルトの名無しさん
2022/09/05(月) 23:36:58.16ID:iWQD5HeB Redditの今年最悪の言語に早くもリーチかけてるからな。
327デフォルトの名無しさん
2022/09/05(月) 23:57:58.08ID:g3RfqaIY >>326
どこで集計してるの?
どこで集計してるの?
328デフォルトの名無しさん
2022/09/06(火) 00:00:31.26ID:bpHcrLU1 >>318
俺は趣味ならnimにちょっと興味ありな感じ。まだ全く手は出せてないけど。
俺は趣味ならnimにちょっと興味ありな感じ。まだ全く手は出せてないけど。
329デフォルトの名無しさん
2022/09/06(火) 08:19:45.27ID:AHhd6ypa >>321
コンパイラの内部構造とかは勉強になるな。メモリ管理は種類多すぎな気もするが。
コンパイラの内部構造とかは勉強になるな。メモリ管理は種類多すぎな気もするが。
330デフォルトの名無しさん
2022/09/06(火) 09:44:45.25ID:9WMtC8UL >>322
Rubyのことなら同意
Rubyのことなら同意
331デフォルトの名無しさん
2022/09/06(火) 09:47:23.91ID:eR9fijNj Rust使えない癖に持ち上げまくってるキチガイとRustとRubyの区別のつかないやつが論争する地獄のようなスレ
332デフォルトの名無しさん
2022/09/06(火) 10:25:40.40ID:VRQQIzRo RustとRubyはほぼ同じや
333デフォルトの名無しさん
2022/09/06(火) 10:30:10.58ID:eR9fijNj CのライブラリとJavaのライブラリと.NETが使えてWebAssemblyも記述できる言語ができれば最強
と思ったけどそれってC#やF#じゃん
と思ったけどそれってC#やF#じゃん
334デフォルトの名無しさん
2022/09/06(火) 10:33:00.76ID:eR9fijNj335デフォルトの名無しさん
2022/09/06(火) 10:50:43.10ID:c9hFcGPw336デフォルトの名無しさん
2022/09/06(火) 10:54:20.03ID:eR9fijNj337デフォルトの名無しさん
2022/09/06(火) 10:55:43.20ID:eR9fijNj 要するにそのグラフの差は五十歩百歩でしかなくそれ以上の速度が必要ならスーパーコンピュータを視野に入れることになる
338デフォルトの名無しさん
2022/09/06(火) 11:22:14.85ID:7s2bxSL8 スーパーコンピュータなら速く動くとかいうことは全くないけどな
なんならオーバークロックしたゲーミングPCとかのほうが速い
スパコンはPCではそもそも実行不可能なレベルの超大規模な問題を解くためのもので
普通のプログラムが魔法のように速く動くという代物ではない
なんならオーバークロックしたゲーミングPCとかのほうが速い
スパコンはPCではそもそも実行不可能なレベルの超大規模な問題を解くためのもので
普通のプログラムが魔法のように速く動くという代物ではない
339デフォルトの名無しさん
2022/09/06(火) 11:23:08.83ID:VRQQIzRo 教プロで13乗も扱わねえよ
多くても7,8ぐらい
多くても7,8ぐらい
340デフォルトの名無しさん
2022/09/06(火) 11:38:16.60ID:hbXRPtoA >>331
そもそも地獄レベルの問題を処理する競技が流行ってるので
そもそも地獄レベルの問題を処理する競技が流行ってるので
341デフォルトの名無しさん
2022/09/06(火) 12:01:26.94ID:6ZyYoNhQ342デフォルトの名無しさん
2022/09/06(火) 12:04:20.22ID:6ZyYoNhQ >>338
競プロの問題は並列化で速く解けることも多いからスパコンの得意とするところだぞ
競プロの問題は並列化で速く解けることも多いからスパコンの得意とするところだぞ
343デフォルトの名無しさん
2022/09/06(火) 12:31:10.58ID:QxRWO4Sk Ruby は遅いから、1秒で100万回ループ。
これがJIT で、1千万回になる
でも、Rails などでは、10万個をJITしても、そんなに速くならない。
I/O 中心の処理では効果がない
外部にアクセスせずに、延々と行列演算を繰り返すような、
CPU セントリックな処理では効果があるのかも
これがJIT で、1千万回になる
でも、Rails などでは、10万個をJITしても、そんなに速くならない。
I/O 中心の処理では効果がない
外部にアクセスせずに、延々と行列演算を繰り返すような、
CPU セントリックな処理では効果があるのかも
344デフォルトの名無しさん
2022/09/06(火) 12:45:16.87ID:9WMtC8UL Nimは始まる前に終わりそう
がんがれ
がんがれ
345デフォルトの名無しさん
2022/09/06(火) 14:09:11.24ID:0lLJmQPI >>342
実際のスパコン触ってみれば分かるんだけど、競プロの問題って小さすぎて並列性がなさすぎるんよ
1秒以内で終わっちゃうようだとMPIのコストどころかGPUにオフロードするコストすら回収できるか怪しい
実際のスパコン触ってみれば分かるんだけど、競プロの問題って小さすぎて並列性がなさすぎるんよ
1秒以内で終わっちゃうようだとMPIのコストどころかGPUにオフロードするコストすら回収できるか怪しい
346デフォルトの名無しさん
2022/09/06(火) 14:13:42.45ID:zHtqeu+H347デフォルトの名無しさん
2022/09/06(火) 14:47:11.13ID:Uhu0FGeL Amazonが>>9の記事で書いているように
C/C++/Rustで書けば2〜10倍は速くなり
それは電気代やCo2排出も同様になる
さらに省メモリになる点も考慮すると
サーバーやクラウド利用コストは確実に数倍差
言語の選択を変えるだけで支出も激減
C/C++/Rustで書けば2〜10倍は速くなり
それは電気代やCo2排出も同様になる
さらに省メモリになる点も考慮すると
サーバーやクラウド利用コストは確実に数倍差
言語の選択を変えるだけで支出も激減
348デフォルトの名無しさん
2022/09/06(火) 14:57:13.57ID:zHtqeu+H ハードウェアアクセスの速度が変わらんのにベンチマークだけで胡散臭いこと言うなよ
349デフォルトの名無しさん
2022/09/06(火) 15:08:57.93ID:gWeaoLnz >>346
並列性がないというか、並列化しても元々の実行時間が短いからオーバーヘッドが大きすぎて割に合わないという話では
スパコンのジョブって短くても実行時間数十分だったりするから競プロとは前提が違う
並列性がないというか、並列化しても元々の実行時間が短いからオーバーヘッドが大きすぎて割に合わないという話では
スパコンのジョブって短くても実行時間数十分だったりするから競プロとは前提が違う
350デフォルトの名無しさん
2022/09/06(火) 15:28:54.40ID:VRQQIzRo 元々の問題設計がN^2で失格 NやNlogNオーダーで通るようなってるとしたら
N^2で並列化出来てもTLEだわ
N^2で並列化出来てもTLEだわ
351デフォルトの名無しさん
2022/09/06(火) 15:49:30.99ID:hbXRPtoA 誰でも思いつくのはGCの並列化だが
GCは何言語で書かれているのかを誰も知らない
GCは何言語で書かれているのかを誰も知らない
352デフォルトの名無しさん
2022/09/06(火) 17:20:08.41ID:ri7pjbsX コンパイル型の実行速度でスクリプトでも実行でき、コンパイルもできる言語が欲しい。反対を言えばbashのように
1行ずつ実行し、実行中で書き換えられることまでは必要ない。
単純なスカラーのループを書いたら、一台のCPUのレジスターだけをブン回す機械語のコードが生成されて欲しい。
A*Bと書くだけで千の計算を搭載されているメジャーなGPUで勝手に計算したり、あるいは千のマシンに分散して
実行して巨大な行列の積をポンと計算してもらいたい。
型だって必要ないなら指定したくない。もしポリモーフィックな関数が必要な時には、ジェネリックプログラミングを
使ってアルゴリズムを一度だけ書いて、あとは全ての型に使いたい。
ガーベージコレクション、あるいはメモリーマネージメントは循環参照や多重参照がなければRustのようにスコープを
抜けたら基本は消えるだけで十分でもあるが、循環参照をもったら自動でサイクリックGCも欲しい
並列化、あるいは非同期化に余計なコストを払いたくない、async/awaitなんてもってのほか論外、世紀の間違い。
ErlangやGoのようにspawnやGoで軽量プロセス起動は仕方ないにしても、これは必須ではなく、デコレーションで
あって並列ではなくとも動ける控えめなヒント情報であってほしい
ドライバ、あるいはOSやカーネルなどのハードウェアよりな開発にも利用できてほしいけど、例外あるいはpanicも欲しい
1行ずつ実行し、実行中で書き換えられることまでは必要ない。
単純なスカラーのループを書いたら、一台のCPUのレジスターだけをブン回す機械語のコードが生成されて欲しい。
A*Bと書くだけで千の計算を搭載されているメジャーなGPUで勝手に計算したり、あるいは千のマシンに分散して
実行して巨大な行列の積をポンと計算してもらいたい。
型だって必要ないなら指定したくない。もしポリモーフィックな関数が必要な時には、ジェネリックプログラミングを
使ってアルゴリズムを一度だけ書いて、あとは全ての型に使いたい。
ガーベージコレクション、あるいはメモリーマネージメントは循環参照や多重参照がなければRustのようにスコープを
抜けたら基本は消えるだけで十分でもあるが、循環参照をもったら自動でサイクリックGCも欲しい
並列化、あるいは非同期化に余計なコストを払いたくない、async/awaitなんてもってのほか論外、世紀の間違い。
ErlangやGoのようにspawnやGoで軽量プロセス起動は仕方ないにしても、これは必須ではなく、デコレーションで
あって並列ではなくとも動ける控えめなヒント情報であってほしい
ドライバ、あるいはOSやカーネルなどのハードウェアよりな開発にも利用できてほしいけど、例外あるいはpanicも欲しい
353デフォルトの名無しさん
2022/09/06(火) 18:45:34.78ID:txnX2wDb Amazonの言うこと信じる人もいるんだ。
そりゃ霊感商法もなくならないわ。
そりゃ霊感商法もなくならないわ。
354デフォルトの名無しさん
2022/09/06(火) 18:50:05.82ID:iU1ybZ8L GCしないでプロセスごと捨てるのがスマートよ
355デフォルトの名無しさん
2022/09/06(火) 20:47:28.58ID:NO/n5LTM >>321
https://nim-lang-081.osdn.jp/docs/tut1.html
> # 前方宣言:
> proc even(n: int): bool
前方宣言てw
これ書かされる言語まだあるんだ
> プロシージャで呼び出し元の引数を変更する必要があるならば、 var パラメータを使います。
> proc divmod(a, b: int; res, remainder: var int) =
パスカルのVariable parameterっぽいなこれ
ちなパスカルだと
https://wiki.freepascal.org/Variable_parameter
> procedure xorSwap(var left, right: integer);
こっち側にvarを書く
https://nim-lang-081.osdn.jp/docs/tut1.html
> # 前方宣言:
> proc even(n: int): bool
前方宣言てw
これ書かされる言語まだあるんだ
> プロシージャで呼び出し元の引数を変更する必要があるならば、 var パラメータを使います。
> proc divmod(a, b: int; res, remainder: var int) =
パスカルのVariable parameterっぽいなこれ
ちなパスカルだと
https://wiki.freepascal.org/Variable_parameter
> procedure xorSwap(var left, right: integer);
こっち側にvarを書く
356デフォルトの名無しさん
2022/09/06(火) 21:02:15.19ID:+TeoQt4K357デフォルトの名無しさん
2022/09/06(火) 21:05:47.04ID:NO/n5LTM ん?
パラメータのいわゆる参照渡しの話なんだけどな
パラメータのいわゆる参照渡しの話なんだけどな
358デフォルトの名無しさん
2022/09/06(火) 21:17:25.60ID:MV3crhGe ponylangだとbehaviorが終わるごとに該当アクターでGCを回すからプログラムとしては停止しないんだけども、これを並列GCですって言うのもなんだかなといった風情
359デフォルトの名無しさん
2022/09/06(火) 21:21:35.81ID:3wQQbwTr360デフォルトの名無しさん
2022/09/06(火) 21:31:19.57ID:ItiT2cL1 MPIバリバリ使ってるけど競プロの問題を解くようなタスクでは使わないよ
課題設定があまりにも違い過ぎる
課題設定があまりにも違い過ぎる
361デフォルトの名無しさん
2022/09/06(火) 21:37:52.05ID:6CvxnJgX >>357
Rustはその2種類の区別もmutの位置で区別できてるね
①引数が値渡しで来て関数内で値を書き換える場合
例: fn func1(mut x: i32) { …
→値渡しなので呼び出し元には影響なし
➁引数が参照渡しで来て関数内で参照元を書き換える場合
例: fn func2(x: &mut i32) { …
→可変参照渡しなので呼び出し元の対象は書き換わりうる
Rustはその2種類の区別もmutの位置で区別できてるね
①引数が値渡しで来て関数内で値を書き換える場合
例: fn func1(mut x: i32) { …
→値渡しなので呼び出し元には影響なし
➁引数が参照渡しで来て関数内で参照元を書き換える場合
例: fn func2(x: &mut i32) { …
→可変参照渡しなので呼び出し元の対象は書き換わりうる
362デフォルトの名無しさん
2022/09/06(火) 22:22:04.19ID:jOWG7AxE あんた上手に振る舞えって言われてたやつだろ
Rustは出来るじゃねえよw 当たり前だ
お前が議論を理解出来てなかっただけだろ
そういうところが周りをイラつかせてるんだぜ
Rustは出来るじゃねえよw 当たり前だ
お前が議論を理解出来てなかっただけだろ
そういうところが周りをイラつかせてるんだぜ
363デフォルトの名無しさん
2022/09/06(火) 22:30:02.86ID:NO/n5LTM364デフォルトの名無しさん
2022/09/06(火) 22:34:57.09ID:2HxKYUoj Rustだと両方ができて当たり前だが
プログラミング言語の中には
値を渡すか参照を渡すかをプログラマーが選べない言語も意外と多い
全てがどちらかに決められていたり
型によって各々どちらかに決められたり
メジャーな言語でも制限があったりする
プログラミング言語の中には
値を渡すか参照を渡すかをプログラマーが選べない言語も意外と多い
全てがどちらかに決められていたり
型によって各々どちらかに決められたり
メジャーな言語でも制限があったりする
365デフォルトの名無しさん
2022/09/06(火) 22:40:49.84ID:V53xvAGb366デフォルトの名無しさん
2022/09/06(火) 22:43:24.65ID:ZgGRtw1t367デフォルトの名無しさん
2022/09/06(火) 22:44:16.65ID:NO/n5LTM パスカル書いてた人なら
「パスカルなついw 引数んとこにvarって書いてたなw」
で終わる話
皆の衆なんか混乱させてすまんかったな(´・ω・`)
「パスカルなついw 引数んとこにvarって書いてたなw」
で終わる話
皆の衆なんか混乱させてすまんかったな(´・ω・`)
368デフォルトの名無しさん
2022/09/06(火) 22:47:53.44ID:ZgGRtw1t 上手いね 見習いたまえ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★3 [BFU★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★4 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 [Hitzeschleier★]
- ホリエモン、「持ち家=幸せという価値観は過去のもの」と断言「快適な住まいが欲しいなら、賃貸住宅を次々に替えていく」 [muffin★]
- 【安倍晋三】中国船4隻が領海侵入 [828897501]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ3🧪
- 【画像】自分がオッサンか若者か、5秒で判断できる画像がこれらしい [977261419]
- えちえち女だけど
- 【新番組】轟はじめ🐧⚡のぶんぶんぶーん🚗💨!【🏡】
- 自民党のヒゲ「日本側の無線でcopyとは言ったが了解という意味ではない」 [834922174]
