「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていうスレ。
前スレ: 結局C++とRustってどっちが良いの?
https://mevius.5ch.net/test/read.cgi/tech/1677286186/
探検
結局C++とRustってどっちが良いの? 2traits
■ このスレッドは過去ログ倉庫に格納されています
2023/04/02(日) 00:42:57.53ID:W9/nq+tL
767デフォルトの名無しさん
2023/04/29(土) 22:26:27.79ID:RlwUT4Ts768デフォルトの名無しさん
2023/04/29(土) 22:39:43.93ID:7o70JIXk なんか偶然ソートの話になってるけど
流れを読んでからこれ書いたんじゃなくて
「ところでインサーションソートなんてベクタじゃ苦しいだろうけど
リストならすごく効率がいいんではないか? を確かめようとしたら
list::sortがおそらくすでに十分に効率的に書かれてることが分かって
インサーションソートを自分で実装する気が萎えた
(いちおう拾ったコードは乗せてあるけどクッソ遅い)」という別の話
https://ideone.com/D9ljA7
function asc desc shuf
std::sort(v) 16 13 72
list::sort 43 60 332 ←十分早い
std::qsort(v) 47 45 144 ←参考
流れを読んでからこれ書いたんじゃなくて
「ところでインサーションソートなんてベクタじゃ苦しいだろうけど
リストならすごく効率がいいんではないか? を確かめようとしたら
list::sortがおそらくすでに十分に効率的に書かれてることが分かって
インサーションソートを自分で実装する気が萎えた
(いちおう拾ったコードは乗せてあるけどクッソ遅い)」という別の話
https://ideone.com/D9ljA7
function asc desc shuf
std::sort(v) 16 13 72
list::sort 43 60 332 ←十分早い
std::qsort(v) 47 45 144 ←参考
769デフォルトの名無しさん
2023/04/29(土) 22:50:51.62ID:hqB48CC6770デフォルトの名無しさん
2023/04/29(土) 22:57:10.41ID:XcHaQTov771デフォルトの名無しさん
2023/04/29(土) 22:58:20.16ID:XcHaQTov >>756か。
772デフォルトの名無しさん
2023/04/29(土) 23:51:59.24ID:pbxO8SrY Senior Microsoft exec says Windows 11 kernel will soom be booting with Rust inside
https://www.neowin.net/news/senior-microsoft-exec-says-windows-11-kernel-will-soon-be-booting-with-rust-inside/
うおおおおおお!!
https://www.neowin.net/news/senior-microsoft-exec-says-windows-11-kernel-will-soon-be-booting-with-rust-inside/
うおおおおおお!!
773デフォルトの名無しさん
2023/04/30(日) 00:02:56.42ID:0nNhKOfm Microsoft's adoration of Rust does have limits.
"Rewriting Windows in Rust probably isn't going to happen anytime soon," said Weston,
"so while we love Rust, we need a strategy that also includes securing more of our native code."
"Rewriting Windows in Rust probably isn't going to happen anytime soon," said Weston,
"so while we love Rust, we need a strategy that also includes securing more of our native code."
774デフォルトの名無しさん
2023/04/30(日) 00:09:47.59ID:W+TV1tj5 コンパイラはどうすんのかな?
社内に自社製のがあるのかな?
社内に自社製のがあるのかな?
775デフォルトの名無しさん
2023/04/30(日) 01:22:44.98ID:bU1qZ3nv >>769
LinkedListにおいて、キャッシュに載っていれば隣の要素は、1クロックで
辿れるから何の問題もない。アセンブリコードは、
mov rbx,[rbx + pNext]
みたいになり、キャッシュに載っていれば1クロック。
多くの場合、キャッシュに載っていることが多い。
乗っていない場合は、prefetch 命令で載せることができる。
LinkedListにおいて、キャッシュに載っていれば隣の要素は、1クロックで
辿れるから何の問題もない。アセンブリコードは、
mov rbx,[rbx + pNext]
みたいになり、キャッシュに載っていれば1クロック。
多くの場合、キャッシュに載っていることが多い。
乗っていない場合は、prefetch 命令で載せることができる。
776デフォルトの名無しさん
2023/04/30(日) 01:28:36.62ID:bU1qZ3nv Stroustrup氏は、キャッシュミス時のハードウェアによる自動 prefetch が
数百クロックかかると書いていたが、それは過去の話で、
現在の DDR4-SDRAM だと、15クロックだと聞いた。
だから、キャッシュに載ってなくても15クロックのペナルティーで済む。
また、pNext を読む前に prefetch 命令で pNext の部分をキャッシュに読み込ます
ようにしておけば、ペナルティーは 1 クロック以下に近くなる。
「以下」と書いたのは、いまの CPU は複数命令の同時命令実行機能が有るので
prefetch命令自体は0クロックで実行できることがあるから。
数百クロックかかると書いていたが、それは過去の話で、
現在の DDR4-SDRAM だと、15クロックだと聞いた。
だから、キャッシュに載ってなくても15クロックのペナルティーで済む。
また、pNext を読む前に prefetch 命令で pNext の部分をキャッシュに読み込ます
ようにしておけば、ペナルティーは 1 クロック以下に近くなる。
「以下」と書いたのは、いまの CPU は複数命令の同時命令実行機能が有るので
prefetch命令自体は0クロックで実行できることがあるから。
777デフォルトの名無しさん
2023/04/30(日) 01:38:31.10ID:RN/WMs5a ほんと頭悪すぎだろ
数学的に
数学的に
778デフォルトの名無しさん
2023/04/30(日) 01:38:51.52ID:bU1qZ3nv なお、LinkedListでも多くの場合は、次のノードは、アドレスがほぼ隣接しているので
キャッシュに載っている確率が高い。ほぼ連続的なアドレスを次々に辿っていくので
ほとんどの場合、LinkedListのノードは読み込み時にキャッシュに載り続けている。
10万個の要素があった時、その内、2つの要素を10回交換したとしても、
キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
ナルティーが生じるだけ。
それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
のはず。ただし、キャッシュミス時の自動prefetchの時間が15クロック
かどうかは不明。
なお、ソフトウェア的にprefetch命令をマシン語で書いておけば、他の命令を
実行中にprefetch動作が入るので、キャッシュペナルティーを実質0クロック
にできる。
キャッシュに載っている確率が高い。ほぼ連続的なアドレスを次々に辿っていくので
ほとんどの場合、LinkedListのノードは読み込み時にキャッシュに載り続けている。
10万個の要素があった時、その内、2つの要素を10回交換したとしても、
キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
ナルティーが生じるだけ。
それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
のはず。ただし、キャッシュミス時の自動prefetchの時間が15クロック
かどうかは不明。
なお、ソフトウェア的にprefetch命令をマシン語で書いておけば、他の命令を
実行中にprefetch動作が入るので、キャッシュペナルティーを実質0クロック
にできる。
779デフォルトの名無しさん
2023/04/30(日) 01:39:45.77ID:bU1qZ3nv >>777
俺の方があんたより数学的才能に恵まれてると思うぞ。
俺の方があんたより数学的才能に恵まれてると思うぞ。
780デフォルトの名無しさん
2023/04/30(日) 01:44:17.33ID:bU1qZ3nv ここの人は何か勘違いしてるようだが、LinkedListで隣のノードに辿るのは、
C で書くと
pNode = pNode->pNext;
という1行で書けるが、アセンブリだと、
mov rbx,[rbx + (pNextのオフセットアドレス)]
という 1命令になって、1クロックに過ぎない。
一方、配列の場合の、++ptr は、
add rbx,(1要素のバイト数)
という1命令で書けて、これも1クロック。
なので、キャッシュミスがない限り、LinkedListも配列と同じ速度で
ノードを辿っていける。
C で書くと
pNode = pNode->pNext;
という1行で書けるが、アセンブリだと、
mov rbx,[rbx + (pNextのオフセットアドレス)]
という 1命令になって、1クロックに過ぎない。
一方、配列の場合の、++ptr は、
add rbx,(1要素のバイト数)
という1命令で書けて、これも1クロック。
なので、キャッシュミスがない限り、LinkedListも配列と同じ速度で
ノードを辿っていける。
781デフォルトの名無しさん
2023/04/30(日) 01:48:48.78ID:bU1qZ3nv782デフォルトの名無しさん
2023/04/30(日) 01:49:24.07ID:HMPc/FQf 1クロックw
数学的だねェ
数学的だねェ
783デフォルトの名無しさん
2023/04/30(日) 01:54:42.21ID:VXiDua15 1クロックが何MHzだった時代のお話ですか?
784デフォルトの名無しさん
2023/04/30(日) 01:58:54.26ID:p1baMidH LinkedList指向アーキテクチャを使ってるんだろ
785デフォルトの名無しさん
2023/04/30(日) 01:59:20.86ID:bU1qZ3nv >>778
>キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
>ナルティーが生じるだけ。
>それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
>全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
>のはず。
訂正します。
実際には、AAAABAAACAAADAAA・・・
のようになるので、「行き」はキャッシュミスが生じますが、「帰り」は
キャッシュに載っているものを再度使うだけなので、キャッシュの乱れは
20回程度となり、キャッシュロードに掛かる追加時間は、全体で300クロックで
済むと考えられます。
>キャッシュの乱れは、40回程度。10万要素の内の40回程度、キャッシュ
>ナルティーが生じるだけ。
>それぞれが15クロックほど遅くなるだけだから、10万個の要素を辿っても、
>全体として、600クロックほど、キャッシュ読み込みの時間が追加されるだけ
>のはず。
訂正します。
実際には、AAAABAAACAAADAAA・・・
のようになるので、「行き」はキャッシュミスが生じますが、「帰り」は
キャッシュに載っているものを再度使うだけなので、キャッシュの乱れは
20回程度となり、キャッシュロードに掛かる追加時間は、全体で300クロックで
済むと考えられます。
786デフォルトの名無しさん
2023/04/30(日) 02:00:53.22ID:bU1qZ3nv >>784
LinkedListでも効率の良い新しいソートアルゴリズムを独自に発見してます。
LinkedListでも効率の良い新しいソートアルゴリズムを独自に発見してます。
787デフォルトの名無しさん
2023/04/30(日) 05:06:03.85ID:hShyWiBx788デフォルトの名無しさん
2023/04/30(日) 07:14:18.58ID:8jzds4J3 >>772
貼るんなら極力元ネタにしようぜ 字幕でおk
https://youtu.be/8T6ClX-y2AE?t=3100
ブートローダはプログラムであって、ライブラリじゃないんだよな
はやくAPIをRust化してほしい そうすれば、C++も恩恵を受ける
貼るんなら極力元ネタにしようぜ 字幕でおk
https://youtu.be/8T6ClX-y2AE?t=3100
ブートローダはプログラムであって、ライブラリじゃないんだよな
はやくAPIをRust化してほしい そうすれば、C++も恩恵を受ける
789デフォルトの名無しさん
2023/04/30(日) 07:28:55.12ID:8jzds4J3 AIにコードを書いてもらえないかってのが研究されだして久しいけど、
Rustは(書いてもらうのに)向いてるかもね
Rustは人の仕事を奪うかもよ?w
Rustは(書いてもらうのに)向いてるかもね
Rustは人の仕事を奪うかもよ?w
790デフォルトの名無しさん
2023/04/30(日) 09:22:37.96ID:YN4uZc/s ただの人を目標にしているから月に行けなくなった
791デフォルトの名無しさん
2023/04/30(日) 09:46:01.58ID:36fy/qId792デフォルトの名無しさん
2023/04/30(日) 09:55:02.85ID:T8NwKiLb 隣へたどる方法比較
https://ideone.com/sVvoxX
p++ 28
v ++it 29
v next(it) 30
l next(it) 151
最初の三つに数字の上では差が付いてるが本質的ではない
書いてる最中にここの数字入れ替わったりしてるので誤差
リストは遅いっちゃあ遅いけど致命的に遅いわけでもない
リストにとっては有利なメモリ配置にはなってると思うけど
https://ideone.com/sVvoxX
p++ 28
v ++it 29
v next(it) 30
l next(it) 151
最初の三つに数字の上では差が付いてるが本質的ではない
書いてる最中にここの数字入れ替わったりしてるので誤差
リストは遅いっちゃあ遅いけど致命的に遅いわけでもない
リストにとっては有利なメモリ配置にはなってると思うけど
793デフォルトの名無しさん
2023/04/30(日) 10:14:47.83ID:YN4uZc/s 中立ぶってリストを擁護する人も、中立やめてリスト推しになるかといえば
ならないだろう
結局、誰も推してないのに誰かが推しているように偽装することを
中立という綺麗事で正当化しているだけだ
ならないだろう
結局、誰も推してないのに誰かが推しているように偽装することを
中立という綺麗事で正当化しているだけだ
794デフォルトの名無しさん
2023/04/30(日) 10:19:43.94ID:BMHs5g0C >>792
ideoneはコンパイラバージョンが古いしマシンも古いと思う
ただしWS級だからメモリ帯域は大きそう(オンザフライ数が大きい)
vectorならDT級マシンでもHWプリフェッチがうまくやってくれる
p++ 6
v ++it 6
v next(it) 6
l next(it) 241 <- 致命的に遅い、よね?
ideoneはコンパイラバージョンが古いしマシンも古いと思う
ただしWS級だからメモリ帯域は大きそう(オンザフライ数が大きい)
vectorならDT級マシンでもHWプリフェッチがうまくやってくれる
p++ 6
v ++it 6
v next(it) 6
l next(it) 241 <- 致命的に遅い、よね?
795デフォルトの名無しさん
2023/04/30(日) 10:21:32.29ID:YAk30VeP >>768
偶然ソートの話になってるんじゃなくて誰かが書いたコードが
linkedlistに不利なソートを取り上げてたから荒れてるだけなんだ
原因はその誰かなんだ
上に書かれてるように挿入ソートは実質ランダムアクセスよりlinkedlistに不利になるんだから
そういうのをテーマに選んだ時点でちょっとセンスがないと思う
偶然ソートの話になってるんじゃなくて誰かが書いたコードが
linkedlistに不利なソートを取り上げてたから荒れてるだけなんだ
原因はその誰かなんだ
上に書かれてるように挿入ソートは実質ランダムアクセスよりlinkedlistに不利になるんだから
そういうのをテーマに選んだ時点でちょっとセンスがないと思う
796デフォルトの名無しさん
2023/04/30(日) 10:24:45.00ID:YN4uZc/s 原因はどうでもいい
因果関係に縛られた機械では人間に勝てない
因果関係に縛られた機械では人間に勝てない
797デフォルトの名無しさん
2023/04/30(日) 10:27:36.27ID:8jzds4J3 人間も因果に縛られてるんだから、巨視的にはどっこいどっこいかもよw
798デフォルトの名無しさん
2023/04/30(日) 10:53:23.23ID:loPobIHT799デフォルトの名無しさん
2023/04/30(日) 10:56:20.23ID:RO3CktaP bindgenでC/C++のheader変換させると
warning: type `ho_ge` should have an upper camel case name
help: convert the identifier to upper camel case: `HoGe`
みたいな余計な御世話なメッセージが出捲るんだが
これを抑制する方法って無い?
warning: type `ho_ge` should have an upper camel case name
help: convert the identifier to upper camel case: `HoGe`
みたいな余計な御世話なメッセージが出捲るんだが
これを抑制する方法って無い?
800デフォルトの名無しさん
2023/04/30(日) 11:30:23.83ID:T8NwKiLb801デフォルトの名無しさん
2023/04/30(日) 14:46:52.74ID:eJ3rvh+g .to_string() とか
.to_str() とか
.to_str().expect("やりなおせ") とか
.to_str()? とか
.as_str() とか
一貫性がないな
.to_str() とか
.to_str().expect("やりなおせ") とか
.to_str()? とか
.as_str() とか
一貫性がないな
802デフォルトの名無しさん
2023/04/30(日) 14:50:03.03ID:xL1w2Uvw >>799
抑制する方法もエラーメッセージに出てなかったっけ?
抑制する方法もエラーメッセージに出てなかったっけ?
803デフォルトの名無しさん
2023/04/30(日) 16:01:15.73ID:RO3CktaP #![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
で出来たけど
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
#[allow(non_upper_case_globals)]
にしろって書いてあるサイトもある
どっちなんだろ
#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
で出来たけど
#[allow(non_snake_case)]
#[allow(non_camel_case_types)]
#[allow(non_upper_case_globals)]
にしろって書いてあるサイトもある
どっちなんだろ
804デフォルトの名無しさん
2023/04/30(日) 16:11:01.60ID:RO3CktaP 2つ以上のC/C++のprojectから
bindings1.rs
bindings2.rs
みたいに造って同時にinclude!()すると
定義の衝突とか出るけど
header1.hとheader2.hのどっちにも
#include <iostream>
みたいなの書いてあるとそうなるんかな
面倒だな
bindings1.rs
bindings2.rs
みたいに造って同時にinclude!()すると
定義の衝突とか出るけど
header1.hとheader2.hのどっちにも
#include <iostream>
みたいなの書いてあるとそうなるんかな
面倒だな
805デフォルトの名無しさん
2023/04/30(日) 18:48:15.79ID:wJbSgVTK DDR4-SDRAMのCASレイテンシーは、15クロックではなく、15(ns)程度だった。
3GHzのCPUだと、45クロックという事になる。
3GHzのCPUだと、45クロックという事になる。
806デフォルトの名無しさん
2023/04/30(日) 19:13:17.45ID:4cTphIc0807デフォルトの名無しさん
2023/04/30(日) 19:16:56.82ID:dfCYbaQr808デフォルトの名無しさん
2023/04/30(日) 19:21:05.07ID:dfCYbaQr809デフォルトの名無しさん
2023/04/30(日) 19:41:46.22ID:N5T1k6H1 >>801
Rustは一貫性があるようにガイドラインで命名ルールも定められている
as_xxxとto_xxxの違いは基本的に
as_xxxはコストなく別の型とみなす
to_xxxはコストかけて別の型を作るかみなす
その例ではもちろんstrとStringは別の型
基本的にas_strとto_stringが使われる
as_strは内部でstrとみなせるデータを持っている時にそこを指すだけなのでコストがかからない場合
to_stringは任意の型からStringを作り出すのでコストがかかる
to_stringはtrait ToStringのメソッドだがtrait Displayを実装することで自動的に実装される
唯一の例外がto_str
これは外部からのデータに対して存在する
strは必ずvalidなUTF8であると保証されている
一方でOsStrやそれを使っているPathは必ずしもvalidなUTF8であると保証されない
そこでUTF8チェックのコストが生じるのでto_strとなる
FFIであるCStrからも同様にto_strとなる
Rustは一貫性があるようにガイドラインで命名ルールも定められている
as_xxxとto_xxxの違いは基本的に
as_xxxはコストなく別の型とみなす
to_xxxはコストかけて別の型を作るかみなす
その例ではもちろんstrとStringは別の型
基本的にas_strとto_stringが使われる
as_strは内部でstrとみなせるデータを持っている時にそこを指すだけなのでコストがかからない場合
to_stringは任意の型からStringを作り出すのでコストがかかる
to_stringはtrait ToStringのメソッドだがtrait Displayを実装することで自動的に実装される
唯一の例外がto_str
これは外部からのデータに対して存在する
strは必ずvalidなUTF8であると保証されている
一方でOsStrやそれを使っているPathは必ずしもvalidなUTF8であると保証されない
そこでUTF8チェックのコストが生じるのでto_strとなる
FFIであるCStrからも同様にto_strとなる
810デフォルトの名無しさん
2023/04/30(日) 19:47:21.24ID:bNYTRPyB811デフォルトの名無しさん
2023/04/30(日) 21:38:41.35ID:JKacdrUN 1クロック君も分かってないんだから
あんまり人のことは言わんほうがええで
あんまり人のことは言わんほうがええで
812デフォルトの名無しさん
2023/04/30(日) 21:45:00.52ID:r3YjkTH3 Python界隈のCodonを以前評価したけど速度面でC/C++と同等なのは単純なケースに限られるようだった
しかも多分皆が最初にみたAckermannの例はgccがclangを凌駕するパターン(再帰Fibonacciなんかもそう)
良いとこだけ記事にした方がいいねもらえるという情報ジレンマ..
しかも多分皆が最初にみたAckermannの例はgccがclangを凌駕するパターン(再帰Fibonacciなんかもそう)
良いとこだけ記事にした方がいいねもらえるという情報ジレンマ..
813デフォルトの名無しさん
2023/04/30(日) 21:55:02.14ID:rH8vI1Vs どうせCPUじゃなく、GPUだのFPGAだのにオフロードするんだしw
814デフォルトの名無しさん
2023/05/01(月) 00:28:33.95ID:SO3cX7+E >>811
1クロック君 = ID:bU1qZ3nv のことか?
流し読みだと805は1クロック君で、>>752=move君(C++,Rust,Python)とコムソートの話をしてるのね
Rustユーザ-> >>563みたいな数独パズル状態でどん詰まり傾向、途中LinkedListは遅い発言を受けるも >>581でやっと動くが何もしない
1クロック君->呼ばれて登場、いつもの虚言連射 自分の思い込みと異なる現実を見たくないから意地でもコード書かない
move君->(いろいろ分かってないので、1クロック君の虚言でも)何かしら動くコードにしてideoneに置く、慣れないC++で
C++側->面白がってコード弄る、ベンチ晒す、けど全員離脱 move君はそれでも勉強になったとお礼
move君、いい奴なんじゃね?
1クロック君 = ID:bU1qZ3nv のことか?
流し読みだと805は1クロック君で、>>752=move君(C++,Rust,Python)とコムソートの話をしてるのね
Rustユーザ-> >>563みたいな数独パズル状態でどん詰まり傾向、途中LinkedListは遅い発言を受けるも >>581でやっと動くが何もしない
1クロック君->呼ばれて登場、いつもの虚言連射 自分の思い込みと異なる現実を見たくないから意地でもコード書かない
move君->(いろいろ分かってないので、1クロック君の虚言でも)何かしら動くコードにしてideoneに置く、慣れないC++で
C++側->面白がってコード弄る、ベンチ晒す、けど全員離脱 move君はそれでも勉強になったとお礼
move君、いい奴なんじゃね?
815デフォルトの名無しさん
2023/05/01(月) 02:07:28.85ID:/D7uNPIS >>814
あなたが理解できてないだけ。
あなたが理解できてないだけ。
816デフォルトの名無しさん
2023/05/01(月) 09:28:12.86ID:KqibJVEU あらゆるところに関所がある
まるで江戸時代だ
裏山に抜け道を見付けて分け入っても
突然藪から棒に番人が現れる
ところがそんな番人も
unsafe印籠を魅せれば一撃で退散だ
unsafe万歳!!!
こんなことなら最初から
表通りでunsafe印籠を出しておけば良かったんだ
きっと番人たちも思っているはず
さっさと最初からunsafe印籠魅せやがれ
無駄な手間取らせやがって
こんなのがエコシステムとか失笑もの
まるで江戸時代だ
裏山に抜け道を見付けて分け入っても
突然藪から棒に番人が現れる
ところがそんな番人も
unsafe印籠を魅せれば一撃で退散だ
unsafe万歳!!!
こんなことなら最初から
表通りでunsafe印籠を出しておけば良かったんだ
きっと番人たちも思っているはず
さっさと最初からunsafe印籠魅せやがれ
無駄な手間取らせやがって
こんなのがエコシステムとか失笑もの
817デフォルトの名無しさん
2023/05/01(月) 10:11:02.89ID:PhTcfeBC C++のバイブルeffective C++でやってることを何も考えなくても
できるのがRustだよな
できるのがRustだよな
818デフォルトの名無しさん
2023/05/01(月) 11:26:54.16ID:58qbKD3W C++のconstを更にウザくした感じをデフォルトにした?
まぁ安全なんだろうけども
まぁ安全なんだろうけども
819デフォルトの名無しさん
2023/05/01(月) 12:33:03.54ID:peIr2dTG820デフォルトの名無しさん
2023/05/01(月) 12:59:11.10ID:w7ftGEnh これが先週のLinkedListチャレンジの結末である
Rust → どん詰まり傾向、1になればゴール
慣れないC++で → 慣れてなくとも独力で0を1にして動くコード提出、その先は先輩たちがサクッと引きあげ
Rust → どん詰まり傾向、1になればゴール
慣れないC++で → 慣れてなくとも独力で0を1にして動くコード提出、その先は先輩たちがサクッと引きあげ
821デフォルトの名無しさん
2023/05/01(月) 13:08:10.08ID:6zKo1tMC ちょっとした車輪ならぱぱっと組めて当然なのがC++ (俺はまだまだだけどw
だからこそ、メモリ関係のバグ・デバグに気を取られたくない unsafeの取り込みは急務
だからこそ、メモリ関係のバグ・デバグに気を取られたくない unsafeの取り込みは急務
822デフォルトの名無しさん
2023/05/01(月) 13:35:33.76ID:nAkxf6DU よろしくゴサシュー
×Rust → どん詰まり傾向、1になればゴール
〇Rust → どん詰まり、1に出来ずに、ポエムにいいね
×Rust → どん詰まり傾向、1になればゴール
〇Rust → どん詰まり、1に出来ずに、ポエムにいいね
823デフォルトの名無しさん
2023/05/01(月) 13:52:07.74ID:Gt7Bjt72 FPGA君も居るんだね
824デフォルトの名無しさん
2023/05/01(月) 17:12:27.61ID:eFKh9HN+ C++でもnew/deleteなんてだいぶ前から使ってないけどな
C++03時代の話を未だにしてるけど、20年も前の環境だし、Boostも1.84からC++03のサポート終了が本格化する
この際、C++20まで一気にジャンプしたら良い
C++17と20の間にも互換性の壁があるので、過去の資産があるならC++17でも良いかもしれない
C++20は便利なので、資産が無いなら一気に飛べ
C++03時代の話を未だにしてるけど、20年も前の環境だし、Boostも1.84からC++03のサポート終了が本格化する
この際、C++20まで一気にジャンプしたら良い
C++17と20の間にも互換性の壁があるので、過去の資産があるならC++17でも良いかもしれない
C++20は便利なので、資産が無いなら一気に飛べ
825デフォルトの名無しさん
2023/05/01(月) 20:01:02.15ID:K5ZoaRkG 顧客には「リスク歓迎型」と「リスク重視型」いるが、Rustはいまのところ
前者が使ってる段階。
前者が使ってる段階。
826デフォルトの名無しさん
2023/05/01(月) 20:02:56.23ID:fSlW9VlS 突然俺様用語で書かれてもサッパリ分かりません
827デフォルトの名無しさん
2023/05/01(月) 20:50:37.93ID:0DpplHVp let temp = Client::RiskFriendly;
828デフォルトの名無しさん
2023/05/01(月) 21:35:47.11ID:WwaB4YeM >>824
C++20になったらこれに対応できるようになるって話はどうなったんだっけ?
[Ruby]
a.sort().reverse().map{|x| x.to_s}.join("-")
[JavaScript]
a.sort().reverse().map(x => x.toString()).join("-")
[Rust]
a.iter().sorted().rev().map(|x| x.to_string()).join("-")
C++20になったらこれに対応できるようになるって話はどうなったんだっけ?
[Ruby]
a.sort().reverse().map{|x| x.to_s}.join("-")
[JavaScript]
a.sort().reverse().map(x => x.toString()).join("-")
[Rust]
a.iter().sorted().rev().map(|x| x.to_string()).join("-")
829デフォルトの名無しさん
2023/05/01(月) 23:46:23.25ID:Hk/n819+ よく表れる偉そうな人は
プロジェクトでは活躍できているの?
プロジェクトでは活躍できているの?
830デフォルトの名無しさん
2023/05/02(火) 00:22:12.87ID:HfuJGdbc831デフォルトの名無しさん
2023/05/02(火) 00:49:58.35ID:1DAvDJUY832デフォルトの名無しさん
2023/05/02(火) 01:35:45.73ID:icSV2sCY >>831
それは5年以上前の話
現在は様々なインフラがRust製に置き換わりつつある段階
例えばRustで書かれたAWSが安全に問題なく高速に作動し、その上に世界中の各社のサービスが動いていて、世界中の人々が恩恵を受けている
それは5年以上前の話
現在は様々なインフラがRust製に置き換わりつつある段階
例えばRustで書かれたAWSが安全に問題なく高速に作動し、その上に世界中の各社のサービスが動いていて、世界中の人々が恩恵を受けている
833デフォルトの名無しさん
2023/05/02(火) 01:41:41.06ID:1DAvDJUY >>832
ただ、プログラミング業界において、まだ、使用者数が1%未満くらいしかない。
イノベーター理論によれば、2.5%位までが「イノベーター層」、次の20%
位が、アーリーアダプター層で、それらを合わせた23%位が、「リスク歓迎層」
いわゆる「人柱層」であり、その後に「キャズム」と呼ばれる溝が有ると言われている。
だからRustが普及するためにはまだまだずっと先が有る。
ただ、プログラミング業界において、まだ、使用者数が1%未満くらいしかない。
イノベーター理論によれば、2.5%位までが「イノベーター層」、次の20%
位が、アーリーアダプター層で、それらを合わせた23%位が、「リスク歓迎層」
いわゆる「人柱層」であり、その後に「キャズム」と呼ばれる溝が有ると言われている。
だからRustが普及するためにはまだまだずっと先が有る。
834デフォルトの名無しさん
2023/05/02(火) 01:45:06.54ID:1DAvDJUY >>833
大勢に影響ないが、数値はちょっとずれていて、ちゃんと調べてみたら、
イノベーター層: 2.5%
アーリーアダプター層: 13.5%
----キャズム----
アーリーマジョリティー層 34.0%
だったわ。
大勢に影響ないが、数値はちょっとずれていて、ちゃんと調べてみたら、
イノベーター層: 2.5%
アーリーアダプター層: 13.5%
----キャズム----
アーリーマジョリティー層 34.0%
だったわ。
835デフォルトの名無しさん
2023/05/02(火) 01:46:19.77ID:pc/ucEUa ソースコードはAWSの0.001%も使われとらんと思うぞw
836デフォルトの名無しさん
2023/05/02(火) 01:54:56.85ID:1DAvDJUY 有料商品だとリスクを恐れて買わない人が多いけど、Rustは無料だから
試すのはタダだから、金銭的には損はしないが時間とストレージ容量は損する。
ジュースみたいに飲んで美味しいわけでもない。
試すのはタダだから、金銭的には損はしないが時間とストレージ容量は損する。
ジュースみたいに飲んで美味しいわけでもない。
837デフォルトの名無しさん
2023/05/02(火) 01:58:03.27ID:1DAvDJUY Rustを試す場合、ストレージが結構食うのと、「パス汚染」の問題や、いつのまにか
大事にしていた開発の複雑なツールチェイン環境が
「おかしくなるかも知れない問題」が有る。
経験法則として、ツールチェインが壊れることは辛すぎる。
大事にしていた開発の複雑なツールチェイン環境が
「おかしくなるかも知れない問題」が有る。
経験法則として、ツールチェインが壊れることは辛すぎる。
838デフォルトの名無しさん
2023/05/02(火) 02:05:41.68ID:1DAvDJUY Rustは、確かにニーズは有ることはあるが、緊急レベルが低いのかもね。
それとターゲット層が狭いかも。
それとターゲット層が狭いかも。
839デフォルトの名無しさん
2023/05/02(火) 02:12:40.43ID:1DAvDJUY Rustを使いたがってる層って、なぜかサーバーサイドで使おうと思ってる人が多いが、
複雑で遅くなるような処理はMySQLやSQLiteみたいなDBMSがやってしまう。
だから自分でやる部分は余り速度が必要なかったりする。
Rustは安全性と速度の両方重視だが、この場合、速度は不要であり、安全面だけ
しか残らないがだとすると、JavaやRubyなどでも互角と言えてしまう。
しかも分かり易さは後者の方が勝ってる。
複雑で遅くなるような処理はMySQLやSQLiteみたいなDBMSがやってしまう。
だから自分でやる部分は余り速度が必要なかったりする。
Rustは安全性と速度の両方重視だが、この場合、速度は不要であり、安全面だけ
しか残らないがだとすると、JavaやRubyなどでも互角と言えてしまう。
しかも分かり易さは後者の方が勝ってる。
840デフォルトの名無しさん
2023/05/02(火) 02:15:06.87ID:1DAvDJUY SNSを見ても、なぜかRustをフロントやデスクトップアプリで使おうとしている人は少ない。
そもそもデスクトップアプリが絶滅危惧種になりつつあるが。
多分、GAFAMが全部需要を吸い取っているからかも知れんが。
そもそもデスクトップアプリが絶滅危惧種になりつつあるが。
多分、GAFAMが全部需要を吸い取っているからかも知れんが。
841デフォルトの名無しさん
2023/05/02(火) 02:28:34.92ID:7LVjR2sm ガンダム00のイノベーター理論か
842デフォルトの名無しさん
2023/05/02(火) 02:28:36.64ID:1DAvDJUY そもそも、サーバーサイドやフロントは、CもC++も余り使われてこなかったが、
SNSでは、なぜか、そっち側でRustを使いたがってる人が目立つ。
そもそも、デスクトップやゲームでCやC++が強い。だから、C++の優位性や
慣れ親しみが有る人と層が被ってない。
なのに、彼らは「C/C++をRustが置き換える」と主張している。
彼らにはそもそも自分がCやC++を愛した時期があったのかと問うてみたい。
C++を使いこなした上で、さらにそれより便利だからRustを使おうとしている
ならまだしも、C++とは縁遠い人達がRustを礼賛している様に思えてならない。
SNSでは、なぜか、そっち側でRustを使いたがってる人が目立つ。
そもそも、デスクトップやゲームでCやC++が強い。だから、C++の優位性や
慣れ親しみが有る人と層が被ってない。
なのに、彼らは「C/C++をRustが置き換える」と主張している。
彼らにはそもそも自分がCやC++を愛した時期があったのかと問うてみたい。
C++を使いこなした上で、さらにそれより便利だからRustを使おうとしている
ならまだしも、C++とは縁遠い人達がRustを礼賛している様に思えてならない。
843デフォルトの名無しさん
2023/05/02(火) 02:32:22.41ID:1DAvDJUY もともとC++が大嫌いな状態で、C++が消えてなくなればいい、と思っている
層がRustを嬉々として使いたがっている様に見えるのだ。
そして彼らはC/C++を一切話題にしない。もし今ままでC/C++を使い倒してきた
ならば、少しは触れてもいいはずなのに、彼らが好きな言語としてあげるリスト
の中には、決まって、C/C++が全く触れられておらず、
JS、Go、Kotlin、Java、Pythonなどが上がってくる。
C#ですら上がって来ない事が多い。
層がRustを嬉々として使いたがっている様に見えるのだ。
そして彼らはC/C++を一切話題にしない。もし今ままでC/C++を使い倒してきた
ならば、少しは触れてもいいはずなのに、彼らが好きな言語としてあげるリスト
の中には、決まって、C/C++が全く触れられておらず、
JS、Go、Kotlin、Java、Pythonなどが上がってくる。
C#ですら上がって来ない事が多い。
844デフォルトの名無しさん
2023/05/02(火) 02:33:32.83ID:1DAvDJUY よく見ると、彼らがリストアップする言語は、無料の環境ばかりだ。
845デフォルトの名無しさん
2023/05/02(火) 02:36:05.66ID:1DAvDJUY 昔から言われてきたことだが、Windowsのデスクトップアプリを作るのは、
ほぼ Visual Studio 一択 だということである、
そして、その場合、通常、C/C++(MFC、Win32)、C#(WinForms、WPF)、VB
のどれかとなる。
プロは、有料のVSを購入して、C++でMFCで組むのが標準とされてきた。
ほぼ Visual Studio 一択 だということである、
そして、その場合、通常、C/C++(MFC、Win32)、C#(WinForms、WPF)、VB
のどれかとなる。
プロは、有料のVSを購入して、C++でMFCで組むのが標準とされてきた。
846デフォルトの名無しさん
2023/05/02(火) 02:50:16.47ID:7LVjR2sm MFCは流石にストレスだな
847デフォルトの名無しさん
2023/05/02(火) 02:51:03.38ID:7LVjR2sm BoostはURLやJSON、そしてついにMySQLが入ったぞ
848デフォルトの名無しさん
2023/05/02(火) 03:00:27.06ID:7LVjR2sm RegexはC++のパワーが発揮される好例だが、あまり使われてないね
文字を返すイテレータさえ用意できれば、どんなデータ構造にも正規表現が使えるんだから凄いけどね
文字を返すイテレータさえ用意できれば、どんなデータ構造にも正規表現が使えるんだから凄いけどね
849デフォルトの名無しさん
2023/05/02(火) 03:04:05.05ID:1DAvDJUY >>848
RegExの基礎の部分で、日本語周りがちょっと独特の仕様だった気がする。
UTF8やSJISには状態がない(Stateless)符合なのに、状態があるかのような
独特のC関数(?)を基礎にしている。
それは、もはやほとんど使われて無い、「Shiftじゃない方のJIS」の
ShiftIn(SI), ShiftOut(SO)方式ならそうかも知れないが。
RegExの基礎の部分で、日本語周りがちょっと独特の仕様だった気がする。
UTF8やSJISには状態がない(Stateless)符合なのに、状態があるかのような
独特のC関数(?)を基礎にしている。
それは、もはやほとんど使われて無い、「Shiftじゃない方のJIS」の
ShiftIn(SI), ShiftOut(SO)方式ならそうかも知れないが。
850デフォルトの名無しさん
2023/05/02(火) 03:04:47.55ID:1DAvDJUY >>846
だとするとC#しか選択肢が無い事になる。
だとするとC#しか選択肢が無い事になる。
851デフォルトの名無しさん
2023/05/02(火) 03:11:39.95ID:1DAvDJUY >>843
補足すると、C++が好きで、または、どこかに問題点を感じながらも使ってきたが、
さらに良いものを見つけたからRustに移行したい、というなら、C++も好きな
言語リストに入れたり、話題に触れたりするものだが、彼らは一切、
C++に触れようとしない傾向がある。
どんな言語にも欠点があるから、長年使ってきた言語であるならば、
愛着があっても、欠点も知っている。だから、もしC++を使ってきたならば、
C++の欠点を沢山気付いても、一方で、愛着も持っているはずだ。
ところが、彼らは、C++について一切触れずに、初心者用の簡易言語で
あるところの、JS、Java、Kotlin、Go、C#、Pythonなどには沢山触れるが、
C++には一切触れようとしない。
補足すると、C++が好きで、または、どこかに問題点を感じながらも使ってきたが、
さらに良いものを見つけたからRustに移行したい、というなら、C++も好きな
言語リストに入れたり、話題に触れたりするものだが、彼らは一切、
C++に触れようとしない傾向がある。
どんな言語にも欠点があるから、長年使ってきた言語であるならば、
愛着があっても、欠点も知っている。だから、もしC++を使ってきたならば、
C++の欠点を沢山気付いても、一方で、愛着も持っているはずだ。
ところが、彼らは、C++について一切触れずに、初心者用の簡易言語で
あるところの、JS、Java、Kotlin、Go、C#、Pythonなどには沢山触れるが、
C++には一切触れようとしない。
852デフォルトの名無しさん
2023/05/02(火) 03:20:05.38ID:7LVjR2sm >>851
キミもあまりC++を使っていないのでは?
キミもあまりC++を使っていないのでは?
853デフォルトの名無しさん
2023/05/02(火) 03:25:47.05ID:1DAvDJUY >>852
使ってる。
使ってる。
854デフォルトの名無しさん
2023/05/02(火) 04:07:41.22ID:6GBjYlnU 世の中の流れが様々な方向からRustへ向かっているところをみると残るは時間だけの問題かな
ロジックに弱い一部のプログラマーはRustでスマートに組めない傾向があるからその点での差別化も進むのかもしれない
ロジックに弱い一部のプログラマーはRustでスマートに組めない傾向があるからその点での差別化も進むのかもしれない
855デフォルトの名無しさん
2023/05/02(火) 04:14:17.45ID:1DAvDJUY856デフォルトの名無しさん
2023/05/02(火) 04:38:02.37ID:6GBjYlnU >>855
Rustをメンドクサイと感じるならロジックが苦手な人なのかもしれないね
一般的にどの言語でもプログラミングする時はロジックをパズルのように解いて組み立てていくんだけど
複雑な対象かどうかでそのパズルの難易度は様々でロジックが苦手な人は難しいパズルのケースではお手上げ
Rustではその解かなきゃいけないパズルが問題によって難易度が増す場合もある
それと引き換えに様々な多大な恩恵が生じるわけだけどロジックが苦手な人には難しかったり面倒だったり無理だったりしてしまう
でも元々のパズル自体の難度に対してそれほど難しくなるわけではないためプログラマーのほとんどはクリアできるけどね
結果的に極一部のロジックが苦手なプログラマーを切り捨てることで可読性や開発効率や安全性などを上昇させるのがRustというものの本質かもね
Rustをメンドクサイと感じるならロジックが苦手な人なのかもしれないね
一般的にどの言語でもプログラミングする時はロジックをパズルのように解いて組み立てていくんだけど
複雑な対象かどうかでそのパズルの難易度は様々でロジックが苦手な人は難しいパズルのケースではお手上げ
Rustではその解かなきゃいけないパズルが問題によって難易度が増す場合もある
それと引き換えに様々な多大な恩恵が生じるわけだけどロジックが苦手な人には難しかったり面倒だったり無理だったりしてしまう
でも元々のパズル自体の難度に対してそれほど難しくなるわけではないためプログラマーのほとんどはクリアできるけどね
結果的に極一部のロジックが苦手なプログラマーを切り捨てることで可読性や開発効率や安全性などを上昇させるのがRustというものの本質かもね
857デフォルトの名無しさん
2023/05/02(火) 04:41:01.18ID:1DAvDJUY858デフォルトの名無しさん
2023/05/02(火) 04:45:42.58ID:iwR4I1Vp ぶったぎるようでいて、多分関連ある 素直に聞かせて
上のほうでも少し出たけど、RustのOOPってどうなん 慣れればわりとなんでも書ける?
所有権関係を見習いたくて、そればっかり今まで調べてて、OOPの書き心地に目を向けてなかった
上のほうでも少し出たけど、RustのOOPってどうなん 慣れればわりとなんでも書ける?
所有権関係を見習いたくて、そればっかり今まで調べてて、OOPの書き心地に目を向けてなかった
859デフォルトの名無しさん
2023/05/02(火) 04:54:26.56ID:iwR4I1Vp860デフォルトの名無しさん
2023/05/02(火) 04:58:39.18ID:6GBjYlnU >>858
RustやGoなど最近の言語ではOOPの癌であるクラス継承を完全に廃止してくれている点が朗報
代わりにRustでは強力なトレイトがあって非常に分かりやすく可読性もよいコードに誘導されて書き心地もよいよ
ただしクラス継承という癌におかされ中毒症状というか依存症の人の一部はリハビリ期間が必要なこともあるみたい
RustやGoなど最近の言語ではOOPの癌であるクラス継承を完全に廃止してくれている点が朗報
代わりにRustでは強力なトレイトがあって非常に分かりやすく可読性もよいコードに誘導されて書き心地もよいよ
ただしクラス継承という癌におかされ中毒症状というか依存症の人の一部はリハビリ期間が必要なこともあるみたい
861デフォルトの名無しさん
2023/05/02(火) 05:48:34.65ID:iwR4I1Vp COMとか使ってたしねえ 今でもあるけど
やたらややこしくしないまで含めて、継承は使ってた世代だねえ
template<>だけがあるような感覚? (概要を聞いてからリファレンス見る勢
やたらややこしくしないまで含めて、継承は使ってた世代だねえ
template<>だけがあるような感覚? (概要を聞いてからリファレンス見る勢
862デフォルトの名無しさん
2023/05/02(火) 06:21:41.90ID:htF/u6KD Rustのtraitは機能や能力や属性でもあるし制約条件でもあるし抽象的な型でもあるしtraitオブジェクトとしての値でもあるし
traitと普通の型とは直交する存在だから多対多の関係になるけど
trait自体に別のtraitが制約としてつく形でtraitの持つ機能の継承のように見せかけて継承ではないけど親子関係的になったり
実際のコードではほとんどのケースで具体型にモノモーフィゼーションされるからコストはないけど
一部のケースではtraitオブジェクトになって動的ディスパッチになる点ではC++で仮想関数を定義する基底クラス的な立ち位置でもあり
traitと普通の型とは直交する存在だから多対多の関係になるけど
trait自体に別のtraitが制約としてつく形でtraitの持つ機能の継承のように見せかけて継承ではないけど親子関係的になったり
実際のコードではほとんどのケースで具体型にモノモーフィゼーションされるからコストはないけど
一部のケースではtraitオブジェクトになって動的ディスパッチになる点ではC++で仮想関数を定義する基底クラス的な立ち位置でもあり
863デフォルトの名無しさん
2023/05/02(火) 07:08:44.62ID:KGzdAUSh >>861
templateをRustでジェネリクスとして表現する時に、そのジェネリックパラメータに対して、条件(制約)を課す指示となる「トレイト境界」としてもトレイトが登場
そのおかげで、C++のtemplate使用時の展開深入りしたわかりにくいエラーメッセージが出る前に、Rustではトレイト境界を指定するようにとコンパイラが叱ってくれて話が早いこともある
templateをRustでジェネリクスとして表現する時に、そのジェネリックパラメータに対して、条件(制約)を課す指示となる「トレイト境界」としてもトレイトが登場
そのおかげで、C++のtemplate使用時の展開深入りしたわかりにくいエラーメッセージが出る前に、Rustではトレイト境界を指定するようにとコンパイラが叱ってくれて話が早いこともある
864デフォルトの名無しさん
2023/05/02(火) 07:41:43.85ID:7LVjR2sm 世界中で使われたはずのHaskellが跡形もないからどうだろな
865デフォルトの名無しさん
2023/05/02(火) 08:07:22.94ID:kr+/BuUA GC言語なんていくらでも置き換えが効くからな
しかもGC言語は用途が狭く限定
ダメ言語C++が長く崩れなかったのはライバルが登場しなかっただけにすぎない
何もかも優れている非GC言語が登場してC++がようやく崩れた
しかもGC言語は用途が狭く限定
ダメ言語C++が長く崩れなかったのはライバルが登場しなかっただけにすぎない
何もかも優れている非GC言語が登場してC++がようやく崩れた
866デフォルトの名無しさん
2023/05/02(火) 08:21:54.70ID:moHVYXda なんでそんな目の敵w C++はいいぞ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★6 [樽悶★]
- 【🐼🇨🇳】「高市総理VS中国」で日本からパンダはゼロに? 上野動物園「パンダ返還期限」まであと4カ月…★2 [BFU★]
- 小野田紀美 経済安保相「悪いことをする外国人、日本にいない状況つくる」 [Hitzeschleier★]
- 【速報】 米大使声明 「日本を支えていく」「中国が威圧的手段に訴えるのは断ち難い悪癖」 [お断り★]
- 群馬知事、前橋市長から2度メールも「気づかなかった」 面会せず [どどん★]
- 【千葉市】ロッテ本拠地マリン ドーム型再検討 市の試算ではドーム化で400億円以上の追加投資が生じる可能性 [尺アジ★]
- 【実況】博衣こよりのえちえち声遊楽プロジェクト 共同研究第三弾🧪
- 【悲報】立憲岡田「間違った答弁をした高市総理に問題がある」→愛国者ブチギレ炎上 [834922174]
- 【速報】アメリカ「高市総理を支持する。中国の威圧は許せない」 [931948549]
- 小野田紀美大臣「悪いことをする外国人は日本にいない状況をつくる」 [856698234]
- 珍🏡珍
- 【安倍悲報】山上徹也「押し入れに大量のつぼ」 [115996789]
