「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
結局C++とRustってどっちが良いの? 4traits
https://mevius.5ch.net/test/read.cgi/tech/1686046386/
関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
探検
結局C++とRustってどっちが良いの? 5traits
レス数が1000を超えています。これ以上書き込みはできません。
2023/06/30(金) 21:56:35.52ID:PDIJ4aZy
2023/06/30(金) 22:00:04.42ID:TaBihWT0
クラウド世界トップシェアのAWSもRustで構築されているようだ
https://japan.zdnet.com/article/35183866/
AWS (Amazon Web Services)は、「Rust」を使っている大きな理由として、エネルギー効率の高さを挙げる。
AWSは早くからRustを採用し、Rust Foundationの創設にも携わった。
現在もRustの普及に熱心に取り組んでいる。
AWSのソフトウェアエンジニアで、Rustの普及に取り組む
Shane Miller氏と主任エンジニアのCarl Lerche氏の投稿によれば、
Rustはメモリー安全性を高め、セキュリティ関連の不具合を減らす役に立つだけでなく「エネルギー効率に優れている」。
Amazonは、2025年までにデータセンターの100%を再生エネルギーでまかなうという目標を掲げ、
データセンターの環境負荷の軽減に取り組んでいる。
Rustの採用はその一翼を担うという。
Rustで構築されたAWSサービスの例としては、
コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
「Amazon Simple Storage Service(S3)」、
「Amazon Elastic Compute Cloud(EC2)」、
コンテンツ配信ネットワーク「Amazon CloudFront」、
LinuxベースのコンテナーOS「Bottlerocket」などがある。
https://japan.zdnet.com/article/35183866/
AWS (Amazon Web Services)は、「Rust」を使っている大きな理由として、エネルギー効率の高さを挙げる。
AWSは早くからRustを採用し、Rust Foundationの創設にも携わった。
現在もRustの普及に熱心に取り組んでいる。
AWSのソフトウェアエンジニアで、Rustの普及に取り組む
Shane Miller氏と主任エンジニアのCarl Lerche氏の投稿によれば、
Rustはメモリー安全性を高め、セキュリティ関連の不具合を減らす役に立つだけでなく「エネルギー効率に優れている」。
Amazonは、2025年までにデータセンターの100%を再生エネルギーでまかなうという目標を掲げ、
データセンターの環境負荷の軽減に取り組んでいる。
Rustの採用はその一翼を担うという。
Rustで構築されたAWSサービスの例としては、
コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、
「Amazon Simple Storage Service(S3)」、
「Amazon Elastic Compute Cloud(EC2)」、
コンテンツ配信ネットワーク「Amazon CloudFront」、
LinuxベースのコンテナーOS「Bottlerocket」などがある。
2023/06/30(金) 22:03:50.69ID:PDIJ4aZy
布教でも反論でも、質問(C/C++チョットデキルけどRust始めました、あるいはその逆とか)でも、
関係ないようなこと(避難スレ的運用)でも、ご自由に。
>>2
記法もちょっと近かったりして、webとは相性いいみたいね
関係ないようなこと(避難スレ的運用)でも、ご自由に。
>>2
記法もちょっと近かったりして、webとは相性いいみたいね
2023/06/30(金) 22:48:29.45ID:+A7yghr8
乗るしかないこの大波
5デフォルトの名無しさん
2023/06/30(金) 23:28:17.68ID:KO9roK1Y 非∞!!!!
頓∞!!!!!
典∞!!!!!!
項∞!!!!!!!
判∞!!!!!!!!
病∞!!!!!!!!!
頓∞!!!!!
典∞!!!!!!
項∞!!!!!!!
判∞!!!!!!!!
病∞!!!!!!!!!
2023/07/01(土) 01:50:39.23ID:ulppHLtb
俺はc言語がいいんだ
nimは試そうかと思ったけどmingw入れるのがだるくて入れなかった
エコシステムに関してはrustは素晴らしい
cargoが良く出来てる
nimは試そうかと思ったけどmingw入れるのがだるくて入れなかった
エコシステムに関してはrustは素晴らしい
cargoが良く出来てる
2023/07/01(土) 02:16:26.66ID:PswK3kno
俺は見つけてしまった!!!
gccrs
gccrs
2023/07/01(土) 02:18:19.44ID:PswK3kno
LinuxがRustのソースコードを受け付けるようになったって話は
コンパイラはgccrsで良いのかな?
コンパイラはgccrsで良いのかな?
2023/07/01(土) 03:46:54.61ID:/rHXN22N
gccは誰も使わないコンパイラ。
2023/07/01(土) 04:02:08.70ID:ulppHLtb
めっちゃ使ってる
clangもいいけど
clangもいいけど
11デフォルトの名無しさん
2023/07/01(土) 04:41:49.04ID:pfOq6Y2+ 今、Rustでnumpyライクなライブラリを目指してるけど、行列の演算はrayonを内部にぶっこむべきだろうか。
ちなみにRustのndarrayベースで作るのはやめて一から実装している。
ちなみにRustのndarrayベースで作るのはやめて一から実装している。
2023/07/01(土) 04:46:21.39ID:6lyrDsv3
ユーザが好きに選べるようにするべき
2023/07/01(土) 05:18:27.37ID:/rHXN22N
gccを使っていると言う変な人が、自分がスタンダード化の様に
偉そうに振舞えるのが匿名インターネットの世界。
偉そうに振舞えるのが匿名インターネットの世界。
2023/07/01(土) 07:08:07.40ID:oXr/pxLu
>>6
Zigがあるじゃない
Zigがあるじゃない
2023/07/01(土) 08:15:56.69ID:TNFWMxVo
ユーザ数も指標の一つ
利用者が多ければライブラリも大量に出る
利用者が多ければライブラリも大量に出る
2023/07/01(土) 08:24:36.90ID:tCnNkKat
>>13
それも、この世界の下積みの一種かなって思ったり
それも、この世界の下積みの一種かなって思ったり
17デフォルトの名無しさん
2023/07/01(土) 08:34:29.73ID:pfOq6Y2+ Rustはrust analyzerが優秀なので、何も考えずに言われた通りに修正したら何かコンパイルも通って大体挙動も正しいということが経験できる。これはC, C++では絶対ない。
2023/07/01(土) 08:59:45.18ID:tCnNkKat
C++にもチェッカはあるけど、あんまり利用が普及しないんだよね
利用が普及しないから成長も遅い それがC++の現状の弱さ
利用が普及しないから成長も遅い それがC++の現状の弱さ
2023/07/01(土) 09:26:47.55ID:LlqqD8Ud
20デフォルトの名無しさん
2023/07/01(土) 09:31:25.82ID:LlqqD8Ud Unreal Engine の Rust化なんて永久に来ないわ
21デフォルトの名無しさん
2023/07/01(土) 09:34:27.40ID:LlqqD8Ud >>7
ggrks と似てるね
ggrks と似てるね
2023/07/01(土) 10:28:15.98ID:PswK3kno
23デフォルトの名無しさん
2023/07/01(土) 10:29:07.14ID:pfOq6Y2+ Rustはゲーム製作周りのクレートとかが不足気味な気はする。でも、機械学習系の有用なRust純正クレートはかなり増えてきてるとは思う。
2023/07/01(土) 10:34:43.25ID:V94vxKDE
こんなにモダンで優れた言語があるのに今からそびえ立つ💩のシープラやる人いるのかね
2023/07/01(土) 10:38:27.78ID:PswK3kno
2023/07/01(土) 11:47:08.23ID:X7ULfVQU
2023/07/01(土) 14:19:14.54ID:Ou05Fmyx
同じく仕事で必要なものを使う。
今はC、C#、C++/CLI、Python。
Rustをまずは趣味で始めたいが時間が取れないのと、C++/CLIで作りたいものがある。
今はC、C#、C++/CLI、Python。
Rustをまずは趣味で始めたいが時間が取れないのと、C++/CLIで作りたいものがある。
2023/07/01(土) 14:28:25.90ID:6lyrDsv3
えっ
C++/CLIはもう……
C++/CLIはもう……
2023/07/01(土) 14:37:04.32ID:8lOSkeAQ
C++/CLIは、C++20くるよ (ぐぐると、使えないっていう記事があがってくる
https://devblogs.microsoft.com/cppblog/cpp20-support-comes-to-cpp-cli/
C++やっててC#もやってたら、十分射程に入る
https://devblogs.microsoft.com/cppblog/cpp20-support-comes-to-cpp-cli/
C++やっててC#もやってたら、十分射程に入る
2023/07/01(土) 14:42:28.74ID:Z5Xk75uh
持ち帰るも何もRustにはできてC++ではできないことなんかないやろ
匙加減の問題でしかない
C++ではスマポ限定の所有権、ライフタイムの設定を全オブジェクトに適用した
文法的に厳しくした
プログラムの制限が増えたせいでコンパイラがプログラマのミスを発見できる範囲が増えただけ
C++で同じ事ができるようになるとすればコンパイラオプションで
“-strict_variable_management”みたいなオプション新しく作ってRustスタイルの厳密な変数管理でコンパイルできるコンパイラが出てこないと無理、そして結局それ使うならrustスタイル(=スマポスタイル)の変数管理法を勉強しないといけない
そもそももうすでにポインタ使うならC++でもc++11以降のスマポの利用推奨で非推奨の方法避けるなら、これからは所有権とライフスタイルの概念勉強するのが不可避になってる
匙加減の問題でしかない
C++ではスマポ限定の所有権、ライフタイムの設定を全オブジェクトに適用した
文法的に厳しくした
プログラムの制限が増えたせいでコンパイラがプログラマのミスを発見できる範囲が増えただけ
C++で同じ事ができるようになるとすればコンパイラオプションで
“-strict_variable_management”みたいなオプション新しく作ってRustスタイルの厳密な変数管理でコンパイルできるコンパイラが出てこないと無理、そして結局それ使うならrustスタイル(=スマポスタイル)の変数管理法を勉強しないといけない
そもそももうすでにポインタ使うならC++でもc++11以降のスマポの利用推奨で非推奨の方法避けるなら、これからは所有権とライフスタイルの概念勉強するのが不可避になってる
2023/07/01(土) 14:56:45.83ID:PswK3kno
勉強するってほどの御大層なものでもあるまいw
32デフォルトの名無しさん
2023/07/01(土) 15:36:05.30ID:HnAv4FCA 匙加減ww
バカにつける薬は無いとは良く言ったもの
複オジもたいがいバカだと思うが
C++に執着してるやつが輪を掛けてバカだから
このスレはいつ見てもサル山の争い
バカにつける薬は無いとは良く言ったもの
複オジもたいがいバカだと思うが
C++に執着してるやつが輪を掛けてバカだから
このスレはいつ見てもサル山の争い
2023/07/01(土) 15:42:32.57ID:Agv00JYF
この文章読んでc++を擁護してると読めるのはどこまで日本語力ないんやろ
プログラミング能力どうこう言う以前の知能しかない
プログラミング能力どうこう言う以前の知能しかない
2023/07/01(土) 15:44:12.22ID:vSBdii75
できることが多いイコール優れているってのが間違い
RDBからカラム制約を外してエクセルのように使って幸せになれるか?
RDBからカラム制約を外してエクセルのように使って幸せになれるか?
2023/07/01(土) 15:48:16.48ID:Agv00JYF
まぁこの手の論争スレで人の意見を“敵か味方か”に2値で分類して絡んでくるんやろ
そう言う行為がみっともないと考える知能もない
便所の落書きだからこんなもんなんなも知らんどな
そう言う行為がみっともないと考える知能もない
便所の落書きだからこんなもんなんなも知らんどな
36デフォルトの名無しさん
2023/07/01(土) 16:16:02.46ID:fFzDLWcL RustよりHaskellのほうが安全で速い
2023/07/01(土) 16:51:31.78ID:DYHMlldq
そもそも、STLなんて後から入ったものだから、それを使うことは
強制されて無いのに、STLの欠点がC++の言語としての欠点に
勝手にみなされてっしまってる。
これまでずっと、C++はBetter Cとして使うのが好まれていたのに、
Better Cとして使うのは時代遅れなんていっておきながら、
STLならではの欠点を指摘して、だから、C++を使うのは馬鹿なんだ、
と言ってくる。
Better CとしてSTLではないライブラリを使っている限り、
その欠点は入ってこないにもかかわらず。
強制されて無いのに、STLの欠点がC++の言語としての欠点に
勝手にみなされてっしまってる。
これまでずっと、C++はBetter Cとして使うのが好まれていたのに、
Better Cとして使うのは時代遅れなんていっておきながら、
STLならではの欠点を指摘して、だから、C++を使うのは馬鹿なんだ、
と言ってくる。
Better CとしてSTLではないライブラリを使っている限り、
その欠点は入ってこないにもかかわらず。
2023/07/01(土) 16:58:20.28ID:DYHMlldq
そもそも、C++でもsmart pointerを使うのが必須、などと言っているが、
むしろ、そうすることが煩わしさを生む。
そうすることによって、むしろめんどくさくなったり、分かりにくくなったり
することがあるのだ。
勝手に smart pointer を使うのが必須であるとして、それがとても使いにくい
ことがC++の欠点だと昇華され、だから、Rustでないとダメなんだと。
しかし、smart pointer を大々的に使おうとしたことが煩わしさの根本で
あることに気づいてない。
また、速度比較などでも、伝統的な Better C としての C++ ならば、
STL も smart pointer も使ってなかったから、Rustより速いにもかかわらず、
勝手に「最新のC++のやり方」とその人が思っていものを使って、
遅い結果にしてしまって、それをC++の「最高の結果」だと勝手に断定
してしまう。
世の中には「改悪」という現象がある事をその人は知らない。
むしろ、そうすることが煩わしさを生む。
そうすることによって、むしろめんどくさくなったり、分かりにくくなったり
することがあるのだ。
勝手に smart pointer を使うのが必須であるとして、それがとても使いにくい
ことがC++の欠点だと昇華され、だから、Rustでないとダメなんだと。
しかし、smart pointer を大々的に使おうとしたことが煩わしさの根本で
あることに気づいてない。
また、速度比較などでも、伝統的な Better C としての C++ ならば、
STL も smart pointer も使ってなかったから、Rustより速いにもかかわらず、
勝手に「最新のC++のやり方」とその人が思っていものを使って、
遅い結果にしてしまって、それをC++の「最高の結果」だと勝手に断定
してしまう。
世の中には「改悪」という現象がある事をその人は知らない。
2023/07/01(土) 17:04:31.83ID:HHzlehAK
C#でWindowsフォームアプリで作成中にWin10では別途.net coreを配る面倒な事がわかってショックだわ。
Windowsフォームアプリケーション (.NET Framework)にしたいのだが作り直ししか無い?
Windowsフォームアプリケーション (.NET Framework)にしたいのだが作り直ししか無い?
2023/07/01(土) 17:07:45.38ID:HHzlehAK
>>39
すまん誤爆しました。m(..)m
すまん誤爆しました。m(..)m
2023/07/01(土) 17:31:35.89ID:DYHMlldq
マイクロソフトのMFCも欠点が指摘されやすいが、しかし、STLより便利なところもある。
MFCにはなかった問題点をSTLは沢山入れてしまった。
MFCはSTLと距離を置いている。
そして、デファクトスタンダードとしては、現代においてC++を使うとは
MFCを使うことに他ならない。ということは、STLはほとんど使われていない。
にも関わらず、教科書に書いて有るようなSTLの非常に煩わしいやり方を持ってして
C++が使いにくい、と言ってくる。
C++が愛されてきたのは、MFCのせいであってSTLのせいではないことを知るべきである。
MFCにはなかった問題点をSTLは沢山入れてしまった。
MFCはSTLと距離を置いている。
そして、デファクトスタンダードとしては、現代においてC++を使うとは
MFCを使うことに他ならない。ということは、STLはほとんど使われていない。
にも関わらず、教科書に書いて有るようなSTLの非常に煩わしいやり方を持ってして
C++が使いにくい、と言ってくる。
C++が愛されてきたのは、MFCのせいであってSTLのせいではないことを知るべきである。
2023/07/01(土) 18:38:56.14ID:PswK3kno
プログラマなのによくこんな駄文書けるな
ChatGPTで水増しさせた?
ChatGPTで水増しさせた?
2023/07/01(土) 18:41:37.69ID:Ij0EQZmJ
偏見を承知で言うと
マイクロソフト依存症の人はそんな人が多い
マイクロソフト依存症の人はそんな人が多い
2023/07/01(土) 19:01:28.94ID:kqCQiy8S
C#使いなよ
2023/07/01(土) 19:03:32.57ID:DYHMlldq
C#は絶対嫌だ。
2023/07/01(土) 19:05:40.48ID:ulppHLtb
>>14
Zig使ったこと無いけどエコシステムが整ってるなら使ってみたいな
Zig使ったこと無いけどエコシステムが整ってるなら使ってみたいな
2023/07/01(土) 19:08:35.56ID:DYHMlldq
そもそもSTLがC++のメインライブラリなどと思っている人は、
C++をまともに使ったことが無い人だ。
C++をまともに使ったことが無い人だ。
2023/07/01(土) 19:17:18.65ID:ulppHLtb
boostだろメインライブラリは
2023/07/01(土) 19:18:04.10ID:X54p6y1Z
C++のテンプレートは理想(言語仕様)と現実(コンパイラ実装)が乖離してたからな
module導入で多少はマシになるかもしれないけどnamespace残したままだからカオス度が増してしまった
module導入で多少はマシになるかもしれないけどnamespace残したままだからカオス度が増してしまった
2023/07/01(土) 19:23:55.22ID:DYHMlldq
MFCは問題が有ったが、それは主にWin32のWindow関連の
APIとの連携においての話。
STLはそれ以前の問題で書き方がおかしい。
現実にプログラミング経験が少ない人が勝手に考えた感じだ。
APIとの連携においての話。
STLはそれ以前の問題で書き方がおかしい。
現実にプログラミング経験が少ない人が勝手に考えた感じだ。
2023/07/01(土) 20:02:19.26ID:l24kSvWl
>>36
ライブラリがな
ライブラリがな
2023/07/01(土) 20:20:46.38ID:uVimT7AM
>>36
HaskellがCやRustより速いとマジで言ってるの?
HaskellがCやRustより速いとマジで言ってるの?
53デフォルトの名無しさん
2023/07/01(土) 21:49:33.99ID:jAprZXCn54デフォルトの名無しさん
2023/07/01(土) 22:14:34.22ID:jAprZXCn >>38
全体は同意
全体は同意
2023/07/02(日) 01:00:29.09ID:jzpBLYtw
C#に慣れるとMFCでGUIは二度と書きたくない
56デフォルトの名無しさん
2023/07/02(日) 01:02:51.98ID:ieCgx+H2 行列のサイズがでかくなるとシングルスレッドよりもrayonによる並列演算の方が速くなってくるな。
2023/07/02(日) 06:54:41.92ID:jdLDLriS
そもそもMFCはfull freeにならんから
ちょっと前まではそうだった、今もそうだよな
自分用なら、コンソール+C#(OSに同梱の古い枯れたやつ)でいいし
ちょっと前まではそうだった、今もそうだよな
自分用なら、コンソール+C#(OSに同梱の古い枯れたやつ)でいいし
2023/07/02(日) 09:53:50.16ID:UHuzldRb
>>55
開放するの忘れてリークしまくる。
開放するの忘れてリークしまくる。
2023/07/02(日) 13:18:42.16ID:Xyim1/0J
GUIがかんたんになったのはここ10年くらいでしょ
それ以前は何を選んでも面倒で難しかった
それ以前は何を選んでも面倒で難しかった
2023/07/02(日) 13:20:54.90ID:Xyim1/0J
IDEの性能や極まったポトペタ感で昔より作りやすくなってる
言語そのものじゃなくその周辺が作りやすさを決めてるだけじゃないか?
言語そのものじゃなくその周辺が作りやすさを決めてるだけじゃないか?
2023/07/02(日) 13:53:16.00ID:Xyim1/0J
RustのGUIってそんなに作りやすいか?
2023/07/02(日) 14:19:07.95ID:fG7MSDtE
GUI用のDSL(マークアップ)がある言語に比べればまだまだでしょ
Rustもマクロ使えばDSLくらいは組めそうだけど
最近は内部ブラウザみたいな代替技術があるから需要が少なそう
Rustもマクロ使えばDSLくらいは組めそうだけど
最近は内部ブラウザみたいな代替技術があるから需要が少なそう
2023/07/02(日) 15:49:02.90ID:OihXi6HP
TauriやElectronはGUIといっても
・マルチプラットフォームでスマホ対応も進行中
・Webと同じ知識技術で作れる
・Webアプリへとの共有や移行が容易
と大きなメリットがあり
VSCodeなどこの方式で成功しているアプリが多数ある
・マルチプラットフォームでスマホ対応も進行中
・Webと同じ知識技術で作れる
・Webアプリへとの共有や移行が容易
と大きなメリットがあり
VSCodeなどこの方式で成功しているアプリが多数ある
2023/07/02(日) 15:52:44.86ID:nM9kee/9
Rustで全てが非同期かつコンポーネントベースのGUIライブラリを作る機運が生まれてる
描画から全部自前でやる本当のネイティブ版Reactのようなもの
描画から全部自前でやる本当のネイティブ版Reactのようなもの
2023/07/02(日) 18:19:31.18ID:owOvhd2B
GUIをC++やRustでやる意味とは
UEだけだろ意味あるの
UEだけだろ意味あるの
2023/07/02(日) 18:40:53.06ID:nM9kee/9
2023/07/02(日) 19:45:01.65ID:l4k0OEWm
すべてasyncとか死ぬほどめんどくさそう
2023/07/02(日) 19:49:14.43ID:T91CalxQ
いやGUIだとそれが普通なんだよ
UIスレッドでブロッキングAPI使えないのだからその設計が普通
今までのライブラリの設計がミスってた
UIスレッドでブロッキングAPI使えないのだからその設計が普通
今までのライブラリの設計がミスってた
2023/07/02(日) 19:55:13.31ID:T91CalxQ
このライブラリがかなり理想に近い
https://wishawa.github.io/posts/async-ui-intro/
見てもらえればわかるがほぼReactだ
しかも全てが非同期なので非常に速い
https://wishawa.github.io/posts/async-ui-intro/
見てもらえればわかるがほぼReactだ
しかも全てが非同期なので非常に速い
71デフォルトの名無しさん
2023/07/02(日) 20:01:17.15ID:OihXi6HP そもそもJavaScriptが非同期に動き並行プログラミングだからね
2023/07/02(日) 21:45:39.87ID:aMd0Z/JA
C#もそんな感じだろ
メッセージポンプスレを止めちゃいけないからとか聞いた、そういやそうだよな
モダンだね
メッセージポンプスレを止めちゃいけないからとか聞いた、そういやそうだよな
モダンだね
2023/07/02(日) 21:52:34.41ID:T91CalxQ
C#は残念ながらブロックする処理を書く場合はスレッドを立てなきゃいけなくて遅い
さらにUIスレッドへの同期コンテキストが必要でその分さらに遅い
さらにUIスレッドへの同期コンテキストが必要でその分さらに遅い
2023/07/02(日) 21:59:34.59ID:jzpBLYtw
結局のところOSの描画API呼び出すから、
最終的にUIスレッドに描画任せないといけないのはどのライブラリでも変わらん
最終的にUIスレッドに描画任せないといけないのはどのライブラリでも変わらん
2023/07/02(日) 22:04:50.40ID:OihXi6HP
>>74
それは違うんじゃないか
例えばファイル読み書きもOS呼び出すけど
並行プログラミングができていれば
シングルスレッドでもファイル読み書きでブロックされず
待ち時間に他の作業をできるよ
そこにマルチスレッドや描画専用スレッドの必要性はない
それは違うんじゃないか
例えばファイル読み書きもOS呼び出すけど
並行プログラミングができていれば
シングルスレッドでもファイル読み書きでブロックされず
待ち時間に他の作業をできるよ
そこにマルチスレッドや描画専用スレッドの必要性はない
2023/07/02(日) 22:08:24.86ID:jzpBLYtw
OSの仕組み理解してなさそう
2023/07/02(日) 22:27:06.93ID:ajw2MJiV
2023/07/02(日) 22:31:37.38ID:T91CalxQ
なぜ非同期が良いか?
UIスレッドが呼び出しても何の問題もないことが保証されてるから
これはnode.jsが気が付かせてくれたパラダイムシフトだよ
UIスレッドが呼び出しても何の問題もないことが保証されてるから
これはnode.jsが気が付かせてくれたパラダイムシフトだよ
2023/07/02(日) 22:49:45.19ID:OihXi6HP
2023/07/02(日) 22:54:55.66ID:aMd0Z/JA
C++にもco_awaitきてるけど、ああいうのこそ、所有権とか来たらラクに書けるだろうな
コルーチンおもろいぞ、C++erもいっぺん経験してみるべき
コルーチンおもろいぞ、C++erもいっぺん経験してみるべき
2023/07/02(日) 22:59:35.55ID:mbYcfrVi
フロントエンドならRustが活躍できるんだな
2023/07/02(日) 23:07:43.48ID:FpcWXL3u
いいGUIライブラリを使いなさい
2023/07/02(日) 23:09:15.57ID:OihXi6HP
Rustは昔からmioクレートがマルチプラットフォーム対応していて
| OS | Selector |
|---------------|-----------|
| Android | [epoll] |
| DragonFly BSD | [kqueue] |
| FreeBSD | [kqueue] |
| iOS | [kqueue] |
| illumos | [epoll] |
| Linux | [epoll] |
| NetBSD | [kqueue] |
| OpenBSD | [kqueue] |
| Windows | [IOCP] |
| macOS | [kqueue] |
こんな感じ
現在はmioを直接使わなくても
mioの上に並行並列スケジューラを構築しているtokioを使えばよい
| OS | Selector |
|---------------|-----------|
| Android | [epoll] |
| DragonFly BSD | [kqueue] |
| FreeBSD | [kqueue] |
| iOS | [kqueue] |
| illumos | [epoll] |
| Linux | [epoll] |
| NetBSD | [kqueue] |
| OpenBSD | [kqueue] |
| Windows | [IOCP] |
| macOS | [kqueue] |
こんな感じ
現在はmioを直接使わなくても
mioの上に並行並列スケジューラを構築しているtokioを使えばよい
2023/07/02(日) 23:47:03.38ID:jzpBLYtw
>>79
ファイルの話じゃなく描画の話をしてるんだが
ファイルの話じゃなく描画の話をしてるんだが
2023/07/02(日) 23:57:38.16ID:aMd0Z/JA
最近ちょっと(GUIまわりから)離れてるけど、GUIのメッセージキューがメインスレッドに付いてるから、
処理をとっととワーカスレッドに移しちゃうってのは、古くて新しいテーマだよな
処理をとっととワーカスレッドに移しちゃうってのは、古くて新しいテーマだよな
2023/07/03(月) 00:14:59.36ID:uVoNxoEf
>>84
ファイルだろうがネット通信だろうが描画だろうが全てソケットに抽象化されているので同じ
ファイルだろうがネット通信だろうが描画だろうが全てソケットに抽象化されているので同じ
2023/07/03(月) 00:21:47.27ID:f710ZASI
C言語が、あるいはそれに連なるC++が業界標準の地位を確立したのって何ともANSI Cの存在が大きい気がします
言語が流行るためには何はともあれ“人が作ったプログラムが自分の環境で試せる”と言うのは大きい。それをちょっと変えてみたらどうなるかとか試してみて学んだりできるのって大きい気がします
今の“業界標準のRust”ってどこが取り仕切っているんですか?
そしてその“業界標準Rust”に収録されてる“標準ライブラリ”の一覧のようなものはどこかで一覧の形で見れますか?、
言語が流行るためには何はともあれ“人が作ったプログラムが自分の環境で試せる”と言うのは大きい。それをちょっと変えてみたらどうなるかとか試してみて学んだりできるのって大きい気がします
今の“業界標準のRust”ってどこが取り仕切っているんですか?
そしてその“業界標準Rust”に収録されてる“標準ライブラリ”の一覧のようなものはどこかで一覧の形で見れますか?、
2023/07/03(月) 00:25:47.65ID:t+8O8Mfo
epollって並列待機処理でそもそもの待機側を開放したい
async/awaitとは別の話題だと思うんだが
async/awaitとは別の話題だと思うんだが
2023/07/03(月) 01:22:18.45ID:5E3kHz23
2023/07/03(月) 01:36:25.99ID:uVoNxoEf
>>88
同じ
(スレッドを使う並列でななく)並行処理を行なうコードを自分で書いてみるとわかる
I/Oを非同期多重化することになる
ためselect/poll/epoll/kqueueを用いたイベントループがスケジューラ相当として核をなす
それを直接使う未分化な原始的な利用から始めて、
次にコールバック方式による単純分離、
さらにpromise/futureによる抽象化、
そしてasync/awaitによる糖衣構文、
と進むことになるが核部分はもちろん同じ
同じ
(スレッドを使う並列でななく)並行処理を行なうコードを自分で書いてみるとわかる
I/Oを非同期多重化することになる
ためselect/poll/epoll/kqueueを用いたイベントループがスケジューラ相当として核をなす
それを直接使う未分化な原始的な利用から始めて、
次にコールバック方式による単純分離、
さらにpromise/futureによる抽象化、
そしてasync/awaitによる糖衣構文、
と進むことになるが核部分はもちろん同じ
2023/07/03(月) 01:37:43.68ID:7CVvhqQm
>>89
thx
thx
92デフォルトの名無しさん
2023/07/03(月) 02:06:46.42ID:bFZG83Bf サイズの大きい配列って結構コピーの部分で時間が取られるのかねえ?GUI周りの話ではないが。Rustでnumpyライクなライブラリを作っているからそこら辺は気になる。
2023/07/03(月) 02:28:24.34ID:+YxiNHjZ
>>88
async/awaitって元はただのブロックしないコールバック付きの関数だよ
async/awaitって元はただのブロックしないコールバック付きの関数だよ
2023/07/03(月) 03:05:22.10ID:3IqJ4QRg
と言うかRustの利点はそこにあるんやろ
特に返り値のとき
返り値に大きいサイズのObjectを返すときが問題
その場合Cでは返り値のどデカい構造体を呼び出し側のスタック領域にコピーする手間がどうしてもかかってしまう
それを避けるには
・返り値をヒープに領域確保して返す
・呼び出し側で受け取りようの空の構造体領域を呼び出し側スタックエリアに確保してその参照を渡して返り値をそこに書き込んでもらう
くらいしかない
しかしヒープにわざわざ永続的には存在する必要のないデータの受け渡しのためエリアをとるとフラグメンテーションの原因になるし、呼び出し側が返り値の大きさをあらかじめ計算してから領域確保して呼び出さないといけないのはメチャクチャ手間がかかってしまう
Rustなら返り値の構造体をダイレクトに呼び出し側のスタックエリアに確保できる(と思う、未確認)のでそこでパフォーマンスの優位性が出る(ハズ)
今のC,C++にはこのメカニズムを実現する方法はないと思う
特に返り値のとき
返り値に大きいサイズのObjectを返すときが問題
その場合Cでは返り値のどデカい構造体を呼び出し側のスタック領域にコピーする手間がどうしてもかかってしまう
それを避けるには
・返り値をヒープに領域確保して返す
・呼び出し側で受け取りようの空の構造体領域を呼び出し側スタックエリアに確保してその参照を渡して返り値をそこに書き込んでもらう
くらいしかない
しかしヒープにわざわざ永続的には存在する必要のないデータの受け渡しのためエリアをとるとフラグメンテーションの原因になるし、呼び出し側が返り値の大きさをあらかじめ計算してから領域確保して呼び出さないといけないのはメチャクチャ手間がかかってしまう
Rustなら返り値の構造体をダイレクトに呼び出し側のスタックエリアに確保できる(と思う、未確認)のでそこでパフォーマンスの優位性が出る(ハズ)
今のC,C++にはこのメカニズムを実現する方法はないと思う
2023/07/03(月) 03:22:41.96ID:+YxiNHjZ
2023/07/03(月) 03:24:05.61ID:5E3kHz23
RVO?
2023/07/03(月) 03:37:51.42ID:80Y4MX+q
2023/07/03(月) 04:29:45.61ID:+YxiNHjZ
2023/07/03(月) 04:35:39.10ID:+YxiNHjZ
>>92
めちゃくちゃ遅くなるよ
現代のアーキテクチャでは無駄なアロケーションやコピーが1番遅くなる要因
1番速いのは当然同じ領域を使い回してそこに書き込むようにすること
キャッシュも効くし無駄なアロケーションが発生しない
ただし副作用と可読性の低下という犠牲を払う
速度と安全性はまさに水と油
めちゃくちゃ遅くなるよ
現代のアーキテクチャでは無駄なアロケーションやコピーが1番遅くなる要因
1番速いのは当然同じ領域を使い回してそこに書き込むようにすること
キャッシュも効くし無駄なアロケーションが発生しない
ただし副作用と可読性の低下という犠牲を払う
速度と安全性はまさに水と油
100デフォルトの名無しさん
2023/07/03(月) 04:46:33.55ID:mO9TuvlK101デフォルトの名無しさん
2023/07/03(月) 04:48:48.70ID:+YxiNHjZ102デフォルトの名無しさん
2023/07/03(月) 04:56:04.09ID:+YxiNHjZ prvalueとかxvalueとかの値のカテゴリについてはこちらが詳しい
https://cpp.rainy.me/037-rvalue-reference.html#%E6%A6%82%E8%A6%81
https://cpp.rainy.me/037-rvalue-reference.html#%E6%A6%82%E8%A6%81
103デフォルトの名無しさん
2023/07/03(月) 05:46:02.09ID:6xMIl2cM >>102
thx
でもコレやっぱりこの機能をスタック領域でやってるのかどうかの明言はないですね
上の方で誰かが言ってたんですけどC++のスマポ絡みは全部ヒープでやってるって話があったのでどうなんだろと
この問題はとても難しくて私勉強してた頃は解決できてなかったんですよ
例えば
object theFunc(){
object a,b;
.......
if comp( a, b) {
return( a );
} else {
return( b );
}
}
のようなコードの場合コンパイラは実際に変数aかbかのどちらが返り値として返されるのか決定する事はできません
もうこのような場合にはほとんど必然的にコピーするしかなくなります
回避する唯一の方法はobject a,bの両方を呼び出し側のスタックに確保して使わなかった方のobjectは呼び出し側スタックの穴として我慢します
もちろん一時的にスタックに穴が開きますがその呼び出し側の処理が終われば全部御破算にされるので目を瞑る作戦です
なんか聞こえは悪いですがスタック領域中に使われる変数でほんの一瞬しか使われない変数なんか山のように出るものなのでそれを一々気にしてたらキリがありません、問題視しないといけないのは永続的に残るヒープ領域のフラグメンテーションです
じゃあいつでも何でもかんでも呼び出し側のスタックに返り値を受け取る領域確保すればいいのかといえばそれもウソでほんの数バイトの情報しかないならいる分だけコピーしていらないデータは綺麗さっぱり消してしまった方がいい時もあって、どちらが良いかコンパイラは判断する方法がCでは中々解決できないみたいな事習った記憶があります
Rustならできるのかはまだ勉強中なのでよく分からないですけど
thx
でもコレやっぱりこの機能をスタック領域でやってるのかどうかの明言はないですね
上の方で誰かが言ってたんですけどC++のスマポ絡みは全部ヒープでやってるって話があったのでどうなんだろと
この問題はとても難しくて私勉強してた頃は解決できてなかったんですよ
例えば
object theFunc(){
object a,b;
.......
if comp( a, b) {
return( a );
} else {
return( b );
}
}
のようなコードの場合コンパイラは実際に変数aかbかのどちらが返り値として返されるのか決定する事はできません
もうこのような場合にはほとんど必然的にコピーするしかなくなります
回避する唯一の方法はobject a,bの両方を呼び出し側のスタックに確保して使わなかった方のobjectは呼び出し側スタックの穴として我慢します
もちろん一時的にスタックに穴が開きますがその呼び出し側の処理が終われば全部御破算にされるので目を瞑る作戦です
なんか聞こえは悪いですがスタック領域中に使われる変数でほんの一瞬しか使われない変数なんか山のように出るものなのでそれを一々気にしてたらキリがありません、問題視しないといけないのは永続的に残るヒープ領域のフラグメンテーションです
じゃあいつでも何でもかんでも呼び出し側のスタックに返り値を受け取る領域確保すればいいのかといえばそれもウソでほんの数バイトの情報しかないならいる分だけコピーしていらないデータは綺麗さっぱり消してしまった方がいい時もあって、どちらが良いかコンパイラは判断する方法がCでは中々解決できないみたいな事習った記憶があります
Rustならできるのかはまだ勉強中なのでよく分からないですけど
104デフォルトの名無しさん
2023/07/03(月) 06:42:22.66ID:YLpV4/YA スタックの穴ってなんのことぞや
関数等の行き返りで、intptr_t以上のものを受け渡ししようっていうのが、そもそもの無理筋感があるんだよな
rvalueを渡すなんていうのは、渡しているのやら、いないのやら
C++時代は、自信のないことはしない、だったんだ
関数等の行き返りで、intptr_t以上のものを受け渡ししようっていうのが、そもそもの無理筋感があるんだよな
rvalueを渡すなんていうのは、渡しているのやら、いないのやら
C++時代は、自信のないことはしない、だったんだ
105デフォルトの名無しさん
2023/07/03(月) 06:49:45.31ID:YLpV4/YA106デフォルトの名無しさん
2023/07/03(月) 08:24:46.39ID:Pxa6JMwc 最適化しすぎるが故に、未定義を踏むとこういう事も起きてしまうという
https://cpplover.blogspot.com/2014/06/old-new-thing.html
https://cpplover.blogspot.com/2014/06/old-new-thing.html
107デフォルトの名無しさん
2023/07/03(月) 08:42:15.29ID:bFZG83Bf 何かRustだとreturn時にコピーが行われてるような気がする。
108デフォルトの名無しさん
2023/07/03(月) 08:58:28.64ID:gVPXZxAL std::move() もそうだが、最低限のコピーはしないといかんぞどうせ
生成コードみてみろよ C++ならそうするので、取るべき行動は同じ
生成コードみてみろよ C++ならそうするので、取るべき行動は同じ
109デフォルトの名無しさん
2023/07/03(月) 09:05:18.13ID:XqdEtb// 要はAddAssignとAddだと計算結果は同じでもAddAssignの方が圧倒的に速いという現象が起こったりすることがある。これはAddだとコピーをリターンするのに対してAddAssignだとselfの値は同じメモリ上で書きかえられてreturnによるコピーがないから。
110デフォルトの名無しさん
2023/07/03(月) 09:32:31.64ID:XuaWdgM7 確かに WideCharToMultiByte/MultiByteToWideChar は毎回
↓
容量確認で1回目呼び出し
↓
確保して
↓
容量指定して2回目呼び出し
↓
面倒だと思ってた
↓
容量確認で1回目呼び出し
↓
確保して
↓
容量指定して2回目呼び出し
↓
面倒だと思ってた
111デフォルトの名無しさん
2023/07/03(月) 09:54:04.75ID:gVPXZxAL 毎回書くからだろ、ライブラリ(コードスニペット)にしちゃえw
112デフォルトの名無しさん
2023/07/03(月) 10:05:14.03ID:kK4jJ7eL コンパイラが吐き出すコードなんて意図通りにならない
疑い深いなら細かくチェックしながらアセンブラで書くしかない
ループ内の重要な変数はレジスタを使っているか
無駄なコピーが無いか
ループ部分に無駄な関数呼びだしが無いか
実際のメモリに読み書きしやすい順序でデータが並んでいるか
最初に必要なメモリを一括でOSから取得しているか
最適な命令を使っているか
キャッシュ汚染が無いか
疑い深いなら細かくチェックしながらアセンブラで書くしかない
ループ内の重要な変数はレジスタを使っているか
無駄なコピーが無いか
ループ部分に無駄な関数呼びだしが無いか
実際のメモリに読み書きしやすい順序でデータが並んでいるか
最初に必要なメモリを一括でOSから取得しているか
最適な命令を使っているか
キャッシュ汚染が無いか
113デフォルトの名無しさん
2023/07/03(月) 10:10:50.88ID:gVPXZxAL アセンブラで書いてすら、意図通りにならないくらいに思っとけってばっちゃんが言ってた
(適当に分割して、複数パイプラインに流し込まれたりするから)
(適当に分割して、複数パイプラインに流し込まれたりするから)
114デフォルトの名無しさん
2023/07/03(月) 11:59:58.23ID:fwYpLKgv >>96
RVOだよなぁ
RVOだよなぁ
115デフォルトの名無しさん
2023/07/03(月) 16:06:04.98ID:+YxiNHjZ116デフォルトの名無しさん
2023/07/03(月) 16:10:20.37ID:+YxiNHjZ このようにC++は色々複雑すぎてもはや普通の人が理解できるものではなくなったので
素直にrust使おうよという振りなんだけどね
素直にrust使おうよという振りなんだけどね
117デフォルトの名無しさん
2023/07/03(月) 16:16:32.89ID:5E3kHz23 Rustだとどうなるの? ソースで例示プリーズ
118デフォルトの名無しさん
2023/07/03(月) 16:53:27.10ID:uVoNxoEf たとえば64bit二つ分を返すと
#[derive(Default)]
struct Foo { a: u64, b: u64, }
impl Foo {
fn new(a: u64) -> Self {
let mut foo = Foo::default();
foo.a = a;
println!("foo: 0x{:p}", &foo);
foo
}
}
fn main() {
let fff = Foo::new(123);
println!("fff: 0x{:p}", &fff);
}
レジスタ返しができる範囲なので両者のアドレスは異なる
foo: 0x0x7ffc3e73a6d8
fff: 0x0x7ffc3e73a740
一つ増やして64bit三つ分を返すと
struct Foo { a: u64, b: u64, c: u64, }
レジスタ返しではなくなり
いわゆるRVO (Return Value Optimization)
呼び出し元main()のスタックフレームに直接書き込むため両者のアドレスは同じになる
foo: 0x0x7ffc03863d78
fff: 0x0x7ffc03863d78
#[derive(Default)]
struct Foo { a: u64, b: u64, }
impl Foo {
fn new(a: u64) -> Self {
let mut foo = Foo::default();
foo.a = a;
println!("foo: 0x{:p}", &foo);
foo
}
}
fn main() {
let fff = Foo::new(123);
println!("fff: 0x{:p}", &fff);
}
レジスタ返しができる範囲なので両者のアドレスは異なる
foo: 0x0x7ffc3e73a6d8
fff: 0x0x7ffc3e73a740
一つ増やして64bit三つ分を返すと
struct Foo { a: u64, b: u64, c: u64, }
レジスタ返しではなくなり
いわゆるRVO (Return Value Optimization)
呼び出し元main()のスタックフレームに直接書き込むため両者のアドレスは同じになる
foo: 0x0x7ffc03863d78
fff: 0x0x7ffc03863d78
119デフォルトの名無しさん
2023/07/03(月) 17:12:42.36ID:uVoNxoEf 前者のアドレスが異なる場合というのは
レジスタ上だけで済むところを敢えてアドレス表示させているため
実際にはスタックを使わずレジスタのみの利用に成りうることを意味してることに注意
レジスタ上だけで済むところを敢えてアドレス表示させているため
実際にはスタックを使わずレジスタのみの利用に成りうることを意味してることに注意
120デフォルトの名無しさん
2023/07/03(月) 18:59:43.08ID:MgkFcxqO なるほどrustは呼び出し元スタックに直接値返せるのね
コレはC++でできるんですか?
コレはC++でできるんですか?
121デフォルトの名無しさん
2023/07/03(月) 20:50:38.98ID:5E3kHz23 $ cat test.cpp
#include <iostream>
#include <cstdint>
using namespace std;
struct Foo {
uint64_t a;
uint64_t b;
static Foo new_ (uint64_t a) {
Foo foo; foo.a = a;
cout << "foo: " << &foo << '\n';
return foo;
}
};
int main () {
auto fff {Foo::new_ (123)};
cout << "foo: " << &fff << '\n';
return 0;
}
$ g++ -O0 -std=c++20 -o test test.cpp
$ ./test
foo: 0x7fff0bbf3540
foo: 0x7fff0bbf3560
$ g++ -O3 -std=c++20 -o test test.cpp
$ ./test
foo: 0x7ffed05f53a0
foo: 0x7ffed05f53a0
#include <iostream>
#include <cstdint>
using namespace std;
struct Foo {
uint64_t a;
uint64_t b;
static Foo new_ (uint64_t a) {
Foo foo; foo.a = a;
cout << "foo: " << &foo << '\n';
return foo;
}
};
int main () {
auto fff {Foo::new_ (123)};
cout << "foo: " << &fff << '\n';
return 0;
}
$ g++ -O0 -std=c++20 -o test test.cpp
$ ./test
foo: 0x7fff0bbf3540
foo: 0x7fff0bbf3560
$ g++ -O3 -std=c++20 -o test test.cpp
$ ./test
foo: 0x7ffed05f53a0
foo: 0x7ffed05f53a0
122デフォルトの名無しさん
2023/07/03(月) 21:12:04.60ID:MgkFcxqO >>121
それは呼び出し側のスタックですか?
それは呼び出し側のスタックですか?
123デフォルトの名無しさん
2023/07/03(月) 21:12:23.79ID:5E3kHz23 NRVOなのでいつも効くとは限らない?
124デフォルトの名無しさん
2023/07/03(月) 21:15:14.72ID:5E3kHz23 >>122
0x7fff0bbf3560と0x7ffed05f53a0は呼び出し側のスタックなのでは?
0x7fff0bbf3560と0x7ffed05f53a0は呼び出し側のスタックなのでは?
125デフォルトの名無しさん
2023/07/03(月) 22:09:08.78ID:+q7z5VN1 たったそれだけのことを
ヒープから確保してガベージコレクションで解放する重い遅いプログラミング言語がほとんどの中
C++とRustが優秀すぎるハイレベルな戦い
ヒープから確保してガベージコレクションで解放する重い遅いプログラミング言語がほとんどの中
C++とRustが優秀すぎるハイレベルな戦い
126デフォルトの名無しさん
2023/07/03(月) 23:25:23.71ID:MgkFcxqO127デフォルトの名無しさん
2023/07/03(月) 23:28:41.59ID:MgkFcxqO あ、いや、今ググったらC++でもRVO実現してるみたいですね
失礼しました
しかし本当にそのアドレスの数値が一致していることだけでRVOが効いてる事の証明にはならないとは思います
失礼しました
しかし本当にそのアドレスの数値が一致していることだけでRVOが効いてる事の証明にはならないとは思います
128デフォルトの名無しさん
2023/07/03(月) 23:31:27.59ID:MgkFcxqO あ、よくよく読んだら「RVOとは戻り値返す時にコピーしない技術のこと」であって「呼び出し側のスタックを利用するかどうか」は別問題のようですね
まぁだからC++もRustも両方ヒープ使ってRVOしてるだけかもしれない
まぁだからC++もRustも両方ヒープ使ってRVOしてるだけかもしれない
129デフォルトの名無しさん
2023/07/03(月) 23:46:31.39ID:uVoNxoEf ヒープが勝手に使われることはない
ヒープとスタックは空間を通常分けてありアドレス値も見ればわかるくらい異なる値を使っている
単純なローカル変数のアドレス値との比較からスタックのアドレス値かどうかすぐわかる
ヒープとスタックは空間を通常分けてありアドレス値も見ればわかるくらい異なる値を使っている
単純なローカル変数のアドレス値との比較からスタックのアドレス値かどうかすぐわかる
130デフォルトの名無しさん
2023/07/03(月) 23:47:11.84ID:5E3kHz23 >>128
根拠までは示せんが
俺はC/C++とやってきて
関数にnewを直接/間接に呼び出さなずにインスタンスを作れば
スタックに確保されるという認識だな
なのでRVO効いてれば呼び出し側のスタックに作成されるという風に考えている
根拠までは示せんが
俺はC/C++とやってきて
関数にnewを直接/間接に呼び出さなずにインスタンスを作れば
スタックに確保されるという認識だな
なのでRVO効いてれば呼び出し側のスタックに作成されるという風に考えている
131デフォルトの名無しさん
2023/07/04(火) 00:03:31.80ID:axzJnblJ Rustはリターンの場合は多分コピーしてると思いますよ。なぜならサイズの大きい配列の計算において返り値ありときとポインタから直接いじる返り値なしの場合で返り値なしの方が圧倒的に実行速度が速かったから。
132デフォルトの名無しさん
2023/07/04(火) 00:16:23.10ID:Z5BWnaiC 推測するな
逆アセンブリ読め
逆アセンブリ読め
133デフォルトの名無しさん
2023/07/04(火) 00:36:27.02ID:+0TfLuMN134デフォルトの名無しさん
2023/07/04(火) 00:36:48.56ID:zEsCcd3F135デフォルトの名無しさん
2023/07/04(火) 01:08:19.71ID:+0TfLuMN Rustのコンパイラがどういう方法でRVOを実現してるかは多分実装依存で「可能な限りやるようにしろ、プログラマはRVOが働いてくれると期待していい」くらいまでは書いてあるんかもしれないですね
実装としては予想ですけど
・関数のスコープ内でローカルに作られた変数(左辺値?)は原則スタック領域に確保されて関数の処理終了時点で全て解放される
・しかし関数の戻り値として呼び出し側の変数にバインドされて生存期間が伸びた変数は消去されず呼び出し側スタックに残す
・もちろん>>103のような例でコンパイル時点でobject a, object bのどちらを残すか決定できないなら両方残して返り値として使われなかった方のメモリは穴として諦める、どのみちその“呼び出し側の関数”が終了する時点で解放される穴なので諦める
みたいな実装なんでしようかねぇ?
私アセンブラ読めないので確かめられませんけど
実装としては予想ですけど
・関数のスコープ内でローカルに作られた変数(左辺値?)は原則スタック領域に確保されて関数の処理終了時点で全て解放される
・しかし関数の戻り値として呼び出し側の変数にバインドされて生存期間が伸びた変数は消去されず呼び出し側スタックに残す
・もちろん>>103のような例でコンパイル時点でobject a, object bのどちらを残すか決定できないなら両方残して返り値として使われなかった方のメモリは穴として諦める、どのみちその“呼び出し側の関数”が終了する時点で解放される穴なので諦める
みたいな実装なんでしようかねぇ?
私アセンブラ読めないので確かめられませんけど
136デフォルトの名無しさん
2023/07/04(火) 01:50:19.31ID:T/PNhAd4137デフォルトの名無しさん
2023/07/04(火) 02:24:25.89ID:H9LDX83D 関数がインライン展開されたら関数間の変数のコピーは省略される
レジスタ変数は参照を取得出来ない
逆にいうと参照を取得したらレジスタではなくメモリ変数(非レジスタ変数)になる
Rustではよく所有権の借用のための参照取得をするけれどそれが
C++ほど最適化されるのでしょうか
レジスタ変数は参照を取得出来ない
逆にいうと参照を取得したらレジスタではなくメモリ変数(非レジスタ変数)になる
Rustではよく所有権の借用のための参照取得をするけれどそれが
C++ほど最適化されるのでしょうか
138デフォルトの名無しさん
2023/07/04(火) 02:44:11.87ID:+0TfLuMN >>118
の追試
https://ideone.com/6g3Ne2
関数内で2つのFoo型を作ってどっちを返すかコンパイル時には分からない(はす)のコードで実現
fn whichFoo ()-> Foo {
let a = Foo::new(456);
let b = Foo::new(789);
if( true ){
a
}else{
b
}
}
この関数を2回呼んで返り値のアドレスと比較
結果びっくりした
a 456 foo: 0x0x7ffff3242cd0 // 1階目の1項目(返す方)
a 789 foo: 0x0x7ffff3242c98 // 1階目の2項目(捨てる方
fff: 0x0x7ffff3242cd0 // 返り値、1個目と一致
a 456 foo: 0x0x7ffff3242cb0 // 2階目の1項目(返す方)
a 789 foo: 0x0x7ffff3242c98 // 2階目の2項目(捨てる方
fff: 0x0x7ffff3242cb0 // 返り値、1個目と一致
で2回呼んで2回とも1個目のアドレスと一致でRVOが効いてる
のみならず1回目で捨てた方のアドレスが2回目のすてる方のアドレスとして再利用されてる
コレはどうやってんの?
全く予想外
の追試
https://ideone.com/6g3Ne2
関数内で2つのFoo型を作ってどっちを返すかコンパイル時には分からない(はす)のコードで実現
fn whichFoo ()-> Foo {
let a = Foo::new(456);
let b = Foo::new(789);
if( true ){
a
}else{
b
}
}
この関数を2回呼んで返り値のアドレスと比較
結果びっくりした
a 456 foo: 0x0x7ffff3242cd0 // 1階目の1項目(返す方)
a 789 foo: 0x0x7ffff3242c98 // 1階目の2項目(捨てる方
fff: 0x0x7ffff3242cd0 // 返り値、1個目と一致
a 456 foo: 0x0x7ffff3242cb0 // 2階目の1項目(返す方)
a 789 foo: 0x0x7ffff3242c98 // 2階目の2項目(捨てる方
fff: 0x0x7ffff3242cb0 // 返り値、1個目と一致
で2回呼んで2回とも1個目のアドレスと一致でRVOが効いてる
のみならず1回目で捨てた方のアドレスが2回目のすてる方のアドレスとして再利用されてる
コレはどうやってんの?
全く予想外
139デフォルトの名無しさん
2023/07/04(火) 02:53:28.80ID:ZPezMZV3 そんな気になるなら生成されたコード見たら?
140デフォルトの名無しさん
2023/07/04(火) 03:12:41.98ID:w64gVUS7141デフォルトの名無しさん
2023/07/04(火) 03:23:48.80ID:H9LDX83D >>140
thxです
thxです
142デフォルトの名無しさん
2023/07/04(火) 07:50:54.82ID:+0TfLuMN >>141
イヤそれをどうやってんのって話
オレが当然こういうimplementだろうと思ってたのはこう
whichFooが呼ばれてstackが割り当てられる(でもおそらくそのプロセスに割り当てられてるスタックのスタックポインタの上端もらってくるだけだと思うけど)
もらったstackに上から詰めてFoo型のaとbができる
普通に考えて上端から順にaのための領域、bのための領域
この2つは返り値として使用される可能性があるからmainのstackの下端のすぐ下に作ってはおくけどどちらが使われるかは不定
①呼び出し前(♪がsp)
[ 未使用域 ]♪| [mainのstack ]
②1回目呼び出し直後
[未使用域]♪[ b ][ a ]| [mainのstack ]
実行時に[a]が返される事が確定、bは破棄されて[a]の真下にspを戻してmainの再開から2回目呼び出されて同じく[a],[b]が作られる
③2回目呼び出し直後
[ 未使用域 ]♪[ a ]| mainのstack ]
④2回目の変数領域確保
[未使用域]♪[ b ][a'][ a ]| [mainのstack ]
⑤2回目の変数領域確保
[ 未使用域 ]♪[a'][ a ]| [mainのstack ]
となると予想したら違った
イヤそれをどうやってんのって話
オレが当然こういうimplementだろうと思ってたのはこう
whichFooが呼ばれてstackが割り当てられる(でもおそらくそのプロセスに割り当てられてるスタックのスタックポインタの上端もらってくるだけだと思うけど)
もらったstackに上から詰めてFoo型のaとbができる
普通に考えて上端から順にaのための領域、bのための領域
この2つは返り値として使用される可能性があるからmainのstackの下端のすぐ下に作ってはおくけどどちらが使われるかは不定
①呼び出し前(♪がsp)
[ 未使用域 ]♪| [mainのstack ]
②1回目呼び出し直後
[未使用域]♪[ b ][ a ]| [mainのstack ]
実行時に[a]が返される事が確定、bは破棄されて[a]の真下にspを戻してmainの再開から2回目呼び出されて同じく[a],[b]が作られる
③2回目呼び出し直後
[ 未使用域 ]♪[ a ]| mainのstack ]
④2回目の変数領域確保
[未使用域]♪[ b ][a'][ a ]| [mainのstack ]
⑤2回目の変数領域確保
[ 未使用域 ]♪[a'][ a ]| [mainのstack ]
となると予想したら違った
143デフォルトの名無しさん
2023/07/04(火) 07:51:01.03ID:+0TfLuMN 今のは運良く最初に確保したaの方が返り値として使われたので簡単に領域bが再利用できるけど、もちろん一般には分からない、なのでコンパイラのできることといえば返り値になるかもしれないbの領域はスタック上端に確保しておいてなるべくフラグメンテーションが起きても被害最小に止めるくらいかなと思ったら違った
(ちなみに残す方と捨てる方逆にしても結果は同じ)
確保されたアドレス見るにコンパイラは最初からaが返されるのを見越して[a]の領域だけをmain側のstackに割り当ててるように見える、1回目も2回目も、そして1回目終了時に回収されたbのためのエリアが再利用されてる
レジスタの場合と徹底的にに違うのはメモリの場合「空いてたら使う」を実現するには“未使用域を完全に把握して新しく領域を確保する時未使用域をなるべく活用する”がかなり難しい事
普通は使用してる下端と未使用の上端の境界にsp置いとくくらいが限界
「使用してるのは①〜②、③〜④、....」なんてできるはずない、できるハズないからフラグメンテーション問題が発生する
もちろんこの“できるはずない”事をやってれば実験結果みたいになって不思議ないんだけど流石に無理じゃないかと
(ちなみに残す方と捨てる方逆にしても結果は同じ)
確保されたアドレス見るにコンパイラは最初からaが返されるのを見越して[a]の領域だけをmain側のstackに割り当ててるように見える、1回目も2回目も、そして1回目終了時に回収されたbのためのエリアが再利用されてる
レジスタの場合と徹底的にに違うのはメモリの場合「空いてたら使う」を実現するには“未使用域を完全に把握して新しく領域を確保する時未使用域をなるべく活用する”がかなり難しい事
普通は使用してる下端と未使用の上端の境界にsp置いとくくらいが限界
「使用してるのは①〜②、③〜④、....」なんてできるはずない、できるハズないからフラグメンテーション問題が発生する
もちろんこの“できるはずない”事をやってれば実験結果みたいになって不思議ないんだけど流石に無理じゃないかと
144デフォルトの名無しさん
2023/07/04(火) 07:56:44.61ID:+0TfLuMN でも可能性はあるのかな
プロセス全体で共有されるヒープ全体の使用状況なんか全部管理できないけどローカルの関数に割り当てられたスタックなんてしれてるから使用域、未使用域全部管理してるのかな?
プロセス全体で共有されるヒープ全体の使用状況なんか全部管理できないけどローカルの関数に割り当てられたスタックなんてしれてるから使用域、未使用域全部管理してるのかな?
145デフォルトの名無しさん
2023/07/04(火) 09:22:16.43ID:X5jhzPkA Rustで標準的なチャート生成(グラフ描画)ツールは何ですか?
146デフォルトの名無しさん
2023/07/04(火) 10:49:51.72ID:0JerF0m8147デフォルトの名無しさん
2023/07/04(火) 11:02:31.68ID:XZOUnAWZ148デフォルトの名無しさん
2023/07/04(火) 11:18:09.81ID:XZOUnAWZ >>146
Rustもinline展開される
それとは独立にRustの基本動作として常にRVOが起きる
>>118のコードを
debug mode ← cargo run
release mode ← cargo run -r
の2種類で実行すると
➀debug modeでstruct Foo { a: u64, b: u64, }の場合
→ fooとffiは別アドレス
このdebug modeではinline最適化はされていない
レジスタ返しできる範囲であるため別アドレス
➁release modeでstruct Foo { a: u64, b: u64, }の場合
→ fooとffiは同じアドレス
これはrelease modeでinline最適化がされたため同じアドレスとなった
➂debug modeでstruct Foo { a: u64, b: u64, c: u64 }と大きいサイズの場合
→ fooとffiは同じアドレス
これは➀によりinline最適化はされていない
レジスタ返しできる範囲を超えてるためmain()スタックフレームに直接アクセスしている
Rustもinline展開される
それとは独立にRustの基本動作として常にRVOが起きる
>>118のコードを
debug mode ← cargo run
release mode ← cargo run -r
の2種類で実行すると
➀debug modeでstruct Foo { a: u64, b: u64, }の場合
→ fooとffiは別アドレス
このdebug modeではinline最適化はされていない
レジスタ返しできる範囲であるため別アドレス
➁release modeでstruct Foo { a: u64, b: u64, }の場合
→ fooとffiは同じアドレス
これはrelease modeでinline最適化がされたため同じアドレスとなった
➂debug modeでstruct Foo { a: u64, b: u64, c: u64 }と大きいサイズの場合
→ fooとffiは同じアドレス
これは➀によりinline最適化はされていない
レジスタ返しできる範囲を超えてるためmain()スタックフレームに直接アクセスしている
149デフォルトの名無しさん
2023/07/04(火) 11:53:43.89ID:0JerF0m8 >>121を-fno-inlineをつけてビルドしてみた
$ g++ -O3 -fno-inline -std=c++20 -o test test.cpp
$ ./test
foo: 0x7fffb2b5ee40
fff: 0x7fffb2b5ee40
-fno-inlineでインライン展開されていないとするならRVOが効いている
$ g++ -O3 -fno-inline -std=c++20 -o test test.cpp
$ ./test
foo: 0x7fffb2b5ee40
fff: 0x7fffb2b5ee40
-fno-inlineでインライン展開されていないとするならRVOが効いている
150デフォルトの名無しさん
2023/07/04(火) 13:35:05.06ID:sBWOwVL+ global optimizationがかかったら、どっちにしても、いいようになるのかもしれない
いいようになってくれと思って書くのがいい これはC++もRustも同様
いいようになってくれと思って書くのがいい これはC++もRustも同様
151デフォルトの名無しさん
2023/07/04(火) 15:10:09.42ID:X5jhzPkA Why you shouldn't learn Rust
https://www.youtube.com/watch?v=kOFWIvNowXo
https://www.youtube.com/watch?v=kOFWIvNowXo
152デフォルトの名無しさん
2023/07/04(火) 15:58:19.26ID:Ot1h7oR2153デフォルトの名無しさん
2023/07/04(火) 17:54:17.35ID:fS9gKmDv >>147
せやね
かなぁとは思ってたんやけど時間なくて試せなかった
whichFoo()の条件式を時間のsystem時間の下一桁が奇数か偶数かで決めるように変項したら当たり前みたいにRVOが聞かなくなった
https://ideone.com/T6QJKv
まぁそりゃそうかもね、aかbかどっちが返されるか分からないのに両方とも呼び出し側stackに領域確保してまでRVO効かす事はしないみたいやね
もちろん「フラグメンテーション上等、ローカルスタックに穴開いてもその処理終わるまでなんやから無視、無駄コピーしない事最優先」って実装もできたんやろうけどそうはなってないみたいやな
多分この辺は実装依存なんやろ
せやね
かなぁとは思ってたんやけど時間なくて試せなかった
whichFoo()の条件式を時間のsystem時間の下一桁が奇数か偶数かで決めるように変項したら当たり前みたいにRVOが聞かなくなった
https://ideone.com/T6QJKv
まぁそりゃそうかもね、aかbかどっちが返されるか分からないのに両方とも呼び出し側stackに領域確保してまでRVO効かす事はしないみたいやね
もちろん「フラグメンテーション上等、ローカルスタックに穴開いてもその処理終わるまでなんやから無視、無駄コピーしない事最優先」って実装もできたんやろうけどそうはなってないみたいやな
多分この辺は実装依存なんやろ
154デフォルトの名無しさん
2023/07/04(火) 18:53:05.89ID:axzJnblJ Rustはなんでsimd命令を安定版で使えないんだろうか。
155デフォルトの名無しさん
2023/07/04(火) 19:16:47.25ID:Z5BWnaiC A-simdラベルつきのissues一通り読んでくれば
156デフォルトの名無しさん
2023/07/04(火) 21:51:42.30ID:SetT7x0B157デフォルトの名無しさん
2023/07/05(水) 01:56:15.57ID:jiFtnYl0 多次元配列の実装ってブロードキャストのところが結構ムズいな。今かなり苦労してるわ。とりあえずnumpyのメジャーな機能はすべて実装したものをrust純正で作りたいか。
158デフォルトの名無しさん
2023/07/05(水) 05:24:25.09ID:QQHh6K/1 足りない次元を前から詰めていくだけでは?
それでうまく揃えられなかったらエラー
それでうまく揃えられなかったらエラー
159デフォルトの名無しさん
2023/07/05(水) 08:04:26.42ID:y+DtViwf rustってマスコットも可愛いし
全てが完璧だよな
全てが完璧だよな
160デフォルトの名無しさん
2023/07/05(水) 08:08:30.35ID:BYWVWFg9 golang なんてマスコットがきもすぎて皆逃げだしたもんな
161デフォルトの名無しさん
2023/07/05(水) 10:16:26.75ID:zDnJAWSM あれは何周回っても逆に良いとはならないのがすごい
162デフォルトの名無しさん
2023/07/05(水) 15:06:58.72ID:5Lz4OcyC163デフォルトの名無しさん
2023/07/05(水) 19:58:33.55ID:p4qutnW6 ʕ◔ϖ◔ʔ < 呼んだ?
164デフォルトの名無しさん
2023/07/05(水) 20:49:18.89ID:jiFtnYl0 とりあえず、Rustで多次元配列の実装自体は大分進んできたけど、配列の値は構造体の中にVec型で持つべきかそれとも他の配列構造体においても同じデータをコピーせずに使い回せるようにするために&Vec型で持たせるべきか悩んでるんだよね。&Vec型だとライフタイムの指定とか複数の可変参照について考えなくちゃいけないからだるいんだけど、一つのデータから複数の配列構造体がコピーなしで作れるんだよな。どうするべきか。
165デフォルトの名無しさん
2023/07/05(水) 21:19:29.23ID:Svd9YdDH Rustの基礎常識
長さを変えうる場合を除いて&Vecや&mut Vecの受け渡しをしない
長さを変えうる場合を除いて&Vecや&mut Vecの受け渡しをしない
166デフォルトの名無しさん
2023/07/05(水) 21:46:41.90ID:jiFtnYl0 >>165
配列構造体、ここではNdarray構造体と呼ぶことにする。Ndarray構造体に多次元配列のデータを持たせる。ただし、Ndarray構造体は配列の中身の情報をVec型で保持してるとするこれをdata属性と言うことにする。すると、Ndarray構造体の2つインスタンスに共通のdata属性を持たせることがムズいんですよ。キャッシュの効率的に共通したメモリを占有するdataを持たしたいときがかなりあるのでそこで悩んでいるんですね。
配列構造体、ここではNdarray構造体と呼ぶことにする。Ndarray構造体に多次元配列のデータを持たせる。ただし、Ndarray構造体は配列の中身の情報をVec型で保持してるとするこれをdata属性と言うことにする。すると、Ndarray構造体の2つインスタンスに共通のdata属性を持たせることがムズいんですよ。キャッシュの効率的に共通したメモリを占有するdataを持たしたいときがかなりあるのでそこで悩んでいるんですね。
167デフォルトの名無しさん
2023/07/05(水) 21:50:12.76ID:drWGyPEK データ構造体をコードで示すべし
168デフォルトの名無しさん
2023/07/05(水) 21:59:42.44ID:SEWIBrGC なにも考えたくなければRc<[T]>でも使ってれば
169デフォルトの名無しさん
2023/07/05(水) 22:02:51.53ID:ZkaWWEhA 一応pytorchの例だと_で終わるメソッドはin-placeで配列を書き換える
170デフォルトの名無しさん
2023/07/05(水) 22:06:34.58ID:jiFtnYl0 Ndarray構造体は簡単に書くと以下のような感じになる。
struct Ndarray<T> {
pub data: Vec<T>,
pub shape: Vec<usize>,
pub stride Vec<usize>,
}
実際のコードではTに関する制約条件も入ってるけどここでは本質的ではないので書かないことにする。
Ndarray構造体を多次元配列の要素に関する情報をdataに持っている。shapeには多次元配列の形状に関する情報が入ってる。ここで、2つのNdarrayインスタンスに同じdataを共有しているような感じにしたいんですよ。勿論、dataのコピーはキャッシュの効率的になしということで。
struct Ndarray<T> {
pub data: Vec<T>,
pub shape: Vec<usize>,
pub stride Vec<usize>,
}
実際のコードではTに関する制約条件も入ってるけどここでは本質的ではないので書かないことにする。
Ndarray構造体を多次元配列の要素に関する情報をdataに持っている。shapeには多次元配列の形状に関する情報が入ってる。ここで、2つのNdarrayインスタンスに同じdataを共有しているような感じにしたいんですよ。勿論、dataのコピーはキャッシュの効率的になしということで。
171デフォルトの名無しさん
2023/07/05(水) 22:27:08.29ID:Svd9YdDH 途中で伸び縮みするのか否か
途中で値が書き換わるのか否か
途中で値が書き換わるのか否か
172デフォルトの名無しさん
2023/07/05(水) 22:30:04.73ID:QQHh6K/1 いやいや数値計算のライブラリでデフォルト共有とかまずないからコピーで実装してくれ
173デフォルトの名無しさん
2023/07/05(水) 22:39:25.32ID:Svd9YdDH >>164で&Vecを渡そうとしていたから何も書き換わらないと判断すると
コピーするのは無駄
コピーするのは無駄
174デフォルトの名無しさん
2023/07/06(木) 01:08:51.91ID:sds/6LG1 当面コピーでよくね?
numpyの値受け渡しもcall by valueで毎回コピーしてるんじゃないの?
numpyの値受け渡しもcall by valueで毎回コピーしてるんじゃないの?
175デフォルトの名無しさん
2023/07/06(木) 01:17:08.65ID:FeGm4Src コピーするメリットがない
普通に&[T]渡し
普通に&[T]渡し
176デフォルトの名無しさん
2023/07/06(木) 01:38:49.41ID:EXYiMe2p お前らエロ画像ぶっこ抜くときもRust使ってんの?
177デフォルトの名無しさん
2023/07/06(木) 02:02:58.99ID:aaYD2+pH Rustならエロも安全さ
178デフォルトの名無しさん
2023/07/06(木) 03:18:32.83ID:pKHb2iZt179デフォルトの名無しさん
2023/07/06(木) 03:21:51.88ID:pKHb2iZt >>175
Rustは構造体の使用的に属性に参照渡しするのが結構ダルいのではと思っています。正直、自分はライフタイムの`aとかいう感じの修飾子に関してあまり理解できてない
Rustは構造体の使用的に属性に参照渡しするのが結構ダルいのではと思っています。正直、自分はライフタイムの`aとかいう感じの修飾子に関してあまり理解できてない
180デフォルトの名無しさん
2023/07/06(木) 03:30:31.36ID:pKHb2iZt >>174
Numpyはデフォルトでは浅いコピー、要は参照で渡してるっぽいです。自分が調べてみた感じでは。
Numpyはデフォルトでは浅いコピー、要は参照で渡してるっぽいです。自分が調べてみた感じでは。
181デフォルトの名無しさん
2023/07/06(木) 04:40:27.15ID:ZBNoJ3oS スレチですが、
k0 レジスタを、opmask レジスタとして predicate
としては使用できない、ということで正しいのでしょうか?
つまり、
EVEX.512.0F.W0 5E /r
VDIVPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst{er}
と書いてある場合、{k1} の部分は、{k2}や{k3}
などを指定できて、EVEX.aaa の部分には、2や3など、
1〜7 の数値が指定できますが、0 だけは指定できないのでしょう
か? しかし、それだと、k0 のビットが常に全て 1 である
という便利な性質が利用できない気がします。
もしかして、たとえば、k2 レジスタに k0 レジスタの値を
代入してから、{k1}の部分を{k2}と書け、と言うことなんで
しょうか。
だとすれば、なぜ、そんな回りくどい事を。
k0 レジスタを、opmask レジスタとして predicate
としては使用できない、ということで正しいのでしょうか?
つまり、
EVEX.512.0F.W0 5E /r
VDIVPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst{er}
と書いてある場合、{k1} の部分は、{k2}や{k3}
などを指定できて、EVEX.aaa の部分には、2や3など、
1〜7 の数値が指定できますが、0 だけは指定できないのでしょう
か? しかし、それだと、k0 のビットが常に全て 1 である
という便利な性質が利用できない気がします。
もしかして、たとえば、k2 レジスタに k0 レジスタの値を
代入してから、{k1}の部分を{k2}と書け、と言うことなんで
しょうか。
だとすれば、なぜ、そんな回りくどい事を。
182デフォルトの名無しさん
2023/07/06(木) 05:15:09.86ID:FeGm4Src >>178
書き換えありの場合
同時共有しないなら単純に&mut [T]渡し
共有するならスレッド内かスレッド間か排他制御の粒度や種類はどうかなどで分かれる
例えばスレッド間で共有しつつ書き込みありで排他制御の粒度はスライス全体で読み込み複数同時可ならばArc<RwLock<&mut [T]>>など
書き換えありの場合
同時共有しないなら単純に&mut [T]渡し
共有するならスレッド内かスレッド間か排他制御の粒度や種類はどうかなどで分かれる
例えばスレッド間で共有しつつ書き込みありで排他制御の粒度はスライス全体で読み込み複数同時可ならばArc<RwLock<&mut [T]>>など
183デフォルトの名無しさん
2023/07/06(木) 06:11:31.90ID:FeGm4Src すまん&mutはもちろん不要
Arc<RwLock<[T]>> ね
配列からでなくVecからなら
Arc<RwLock<Vec<T>>> か
長さ変わらないならBox化して
Arc<RwLock<Box<[T]>>>
Arc<RwLock<[T]>> ね
配列からでなくVecからなら
Arc<RwLock<Vec<T>>> か
長さ変わらないならBox化して
Arc<RwLock<Box<[T]>>>
184デフォルトの名無しさん
2023/07/06(木) 08:06:47.31ID:pjKGVGBZ185デフォルトの名無しさん
2023/07/06(木) 12:21:28.35ID:zocpc7Jo >>164
lifetime 付けたくないなら
struct Ndarray<T> {
pub data: Option<&Vec<T>>,
pub shape: Option<&Vec<usize>>,
pub stride Option<&Vec<usize>>,
}
lifetime 付けたくないなら
struct Ndarray<T> {
pub data: Option<&Vec<T>>,
pub shape: Option<&Vec<usize>>,
pub stride Option<&Vec<usize>>,
}
186デフォルトの名無しさん
2023/07/06(木) 12:24:16.16ID:zocpc7Jo >>176
初めてのRustはエロ収集scrapingツールだった
初めてのRustはエロ収集scrapingツールだった
187デフォルトの名無しさん
2023/07/06(木) 14:30:31.20ID:aQspz1Zu ネタにマジレスですまんが、スクレーピングみたいのってRust得意なんけ
188デフォルトの名無しさん
2023/07/06(木) 14:53:35.46ID:3Kmo4orY 得意かは知らないが非同期io機能が充実しててやりやすい
189デフォルトの名無しさん
2023/07/06(木) 17:09:56.98ID:rXBnP+Dg rustに全てを置いてきた
190デフォルトの名無しさん
2023/07/06(木) 21:21:05.78ID:fNr5Fd/6 >>185
ないわw
ないわw
191デフォルトの名無しさん
2023/07/06(木) 21:34:07.17ID:24F0wnkd シャローコピーってスライス代入と普通の代入の時だけでしょ?
ディープコピーは...演算子を使う
さらにin-place演算子(+=など)は変数を書き換える
それ以外は全てコピーを作って返す
これがnumpy
ディープコピーは...演算子を使う
さらにin-place演算子(+=など)は変数を書き換える
それ以外は全てコピーを作って返す
これがnumpy
192デフォルトの名無しさん
2023/07/06(木) 21:39:43.66ID:24F0wnkd ndarrayはスライスをマクロで定義している
さらにスライスはArrayViewを返す
これは真似た方が良い
あとはslice_mut...assignという書き方を踏襲するかどうか
さらにスライスはArrayViewを返す
これは真似た方が良い
あとはslice_mut...assignという書き方を踏襲するかどうか
193デフォルトの名無しさん
2023/07/07(金) 02:03:56.84ID:dzAVAX7p >>192
自分は初学者でも分かりやすいように気本的に配列に関する全ての操作はNdarray構造体に押し込みたいんだよね。
自分は初学者でも分かりやすいように気本的に配列に関する全ての操作はNdarray構造体に押し込みたいんだよね。
194デフォルトの名無しさん
2023/07/07(金) 03:34:18.30ID:LxI5CxNo ダメそう
195デフォルトの名無しさん
2023/07/07(金) 04:58:02.59ID:puo7kNQ2 オプソのするつもりならRustに反対しないが
オプソにするつもりの無いプロジェクトなら
迷わずC/C++ジャマイカ?
オプソにするつもりの無いプロジェクトなら
迷わずC/C++ジャマイカ?
196デフォルトの名無しさん
2023/07/07(金) 11:05:05.39ID:dzAVAX7p RustでNumpyライクなクレートを制作中だけど、ある程度形になったら公開するつもりだよ。OSSにするつもりだし。
197デフォルトの名無しさん
2023/07/07(金) 12:30:09.61ID:98SFipJR >>193
rust使いに初心者がいるとは思えないのだが
ということはやはりRcで持つということになるんかね
chainerのarrayの実装もshared_ptrで持ってる
https://github.com/chainer/chainer/blob/master/chainerx_cc/chainerx/array_body.h
rust使いに初心者がいるとは思えないのだが
ということはやはりRcで持つということになるんかね
chainerのarrayの実装もshared_ptrで持ってる
https://github.com/chainer/chainer/blob/master/chainerx_cc/chainerx/array_body.h
198デフォルトの名無しさん
2023/07/07(金) 13:01:06.40ID:8V8sPKbL まぁでも実際には難しいやろな
かつてプログラミングの世界を席巻していたPascalを駆逐してCが覇権を握ったのは多分基本的な関数の呼び出し方式をcall by refference からcall by valueね変更したのが大きい
cpuの性能が上がるにつれ整数型とか浮動小数点型の受け渡し時程度なら毎回値をコピーする実装にしてもそれで落ちるパフォーマンスの低下はやはりcall by valueの持つ“読みやすさ、組みやすさ”の優位性が際立ってきた
でもとはいえ毎回呼び出しのたびに値をコピーするcall by valueに全統一するのは無理なので文字列やベクトル処理についてはcall by refferenceをえらべるようなよくいえば柔軟、悪くいえば場当たり的な実装にしたのがCが覇権を握った最大の要因かもしれない
しかし今日さらにプログラミング言語の研究が進んでRVO技術などを利用して"call by valueの文法なのにコピーしない"という事が可能になってきて話が違ってきたのは事実、この先この技術がさらに発展すれば“call by valueを使わないベクトル処理ライブラリ”なんてものが出てきてもおかしくはない
でもこのRVOはまだまだ使いにくい、Rustの資料色々読んでも「関数の戻り値の受け渡しの際必ずしもコピーが発生するわけではない」程度の話しか出てこない、この辺は今現在開発がどんどん進んで行っててまだまだ“企画”としてまとめられる段階にないんやろ
だとすると現状“ベクトル処理ライブラリ”をまとめるならcall by refferenceを使う他ない
問題はその際発生するlife time注釈をどうするかの問題、しかしコレもRustの版が進むにつれ変化している“開発途上”の立ち位置で“注釈の省略”の機能を了して“一才注釈なしで使える”はちょっと難しいかも
かつてプログラミングの世界を席巻していたPascalを駆逐してCが覇権を握ったのは多分基本的な関数の呼び出し方式をcall by refference からcall by valueね変更したのが大きい
cpuの性能が上がるにつれ整数型とか浮動小数点型の受け渡し時程度なら毎回値をコピーする実装にしてもそれで落ちるパフォーマンスの低下はやはりcall by valueの持つ“読みやすさ、組みやすさ”の優位性が際立ってきた
でもとはいえ毎回呼び出しのたびに値をコピーするcall by valueに全統一するのは無理なので文字列やベクトル処理についてはcall by refferenceをえらべるようなよくいえば柔軟、悪くいえば場当たり的な実装にしたのがCが覇権を握った最大の要因かもしれない
しかし今日さらにプログラミング言語の研究が進んでRVO技術などを利用して"call by valueの文法なのにコピーしない"という事が可能になってきて話が違ってきたのは事実、この先この技術がさらに発展すれば“call by valueを使わないベクトル処理ライブラリ”なんてものが出てきてもおかしくはない
でもこのRVOはまだまだ使いにくい、Rustの資料色々読んでも「関数の戻り値の受け渡しの際必ずしもコピーが発生するわけではない」程度の話しか出てこない、この辺は今現在開発がどんどん進んで行っててまだまだ“企画”としてまとめられる段階にないんやろ
だとすると現状“ベクトル処理ライブラリ”をまとめるならcall by refferenceを使う他ない
問題はその際発生するlife time注釈をどうするかの問題、しかしコレもRustの版が進むにつれ変化している“開発途上”の立ち位置で“注釈の省略”の機能を了して“一才注釈なしで使える”はちょっと難しいかも
199デフォルトの名無しさん
2023/07/07(金) 13:05:19.96ID:ESNGSxIs >>197
初心者がRustに参入しやすくなるようなライブラリを作ることが目標だから。私自身も初心者に毛が生えたようなレベルだし。
同じ可変参照を持つ構造体のインスタンスが複数作られることを考慮してるからRxとかArcを使うことになる可能性は高い。
初心者がRustに参入しやすくなるようなライブラリを作ることが目標だから。私自身も初心者に毛が生えたようなレベルだし。
同じ可変参照を持つ構造体のインスタンスが複数作られることを考慮してるからRxとかArcを使うことになる可能性は高い。
200デフォルトの名無しさん
2023/07/07(金) 13:17:59.91ID:98SFipJR いや高いじゃなくてw
201デフォルトの名無しさん
2023/07/07(金) 13:29:06.48ID:UaYcujNV >>198
馬鹿には無理
馬鹿には無理
202デフォルトの名無しさん
2023/07/07(金) 15:12:40.92ID:ex1cRp2w >>198
パフォーマンス?なんか思い込み主導のでたらめな話が書かれてるな
PASCALは教育用の言語でCは高級アセンブラみたいな実用言語
比べるほうがおかしい
pascalはPコードを吐く
Cは実行ファイルを吐く
パフォーマンスを考えるならそこから考えろよ
もともとpascal自体の活躍の場がない
移植性でCがドンドン実用化されてすそ野が広がった
Pascalはほぼ教育分野が主な活動の場であって大学などで2000年代初頭まで主に使われた
1990年中ぐらいから言語自体より何が出来るかの方が重要視されだした
UNIXがらみのCのツール(yacc lex)などを使う実用の方が教育の中心となりPascalが使われなくなった
パフォーマンス?なんか思い込み主導のでたらめな話が書かれてるな
PASCALは教育用の言語でCは高級アセンブラみたいな実用言語
比べるほうがおかしい
pascalはPコードを吐く
Cは実行ファイルを吐く
パフォーマンスを考えるならそこから考えろよ
もともとpascal自体の活躍の場がない
移植性でCがドンドン実用化されてすそ野が広がった
Pascalはほぼ教育分野が主な活動の場であって大学などで2000年代初頭まで主に使われた
1990年中ぐらいから言語自体より何が出来るかの方が重要視されだした
UNIXがらみのCのツール(yacc lex)などを使う実用の方が教育の中心となりPascalが使われなくなった
203デフォルトの名無しさん
2023/07/07(金) 16:10:55.60ID:LxMJB/uy やりたいことが
・変更されない間は同じデータを共有する
・変更が必要になったらそこで自分専用に複製する
であれば一般にcopy-on-writeとかclone-on-write(cow)って呼ばれるパターン
RustにもCowって型があるけどこれは原本がはっきりしてる場合じゃないと使い難くて
全てのデータが対等というか原本が特定できない状況ならRc、Arcのmake_mutで似たようなことができる
ndarray使ったことないけどドキュメント見た感じだとArcArrayが似たようなことしてそう
・変更されない間は同じデータを共有する
・変更が必要になったらそこで自分専用に複製する
であれば一般にcopy-on-writeとかclone-on-write(cow)って呼ばれるパターン
RustにもCowって型があるけどこれは原本がはっきりしてる場合じゃないと使い難くて
全てのデータが対等というか原本が特定できない状況ならRc、Arcのmake_mutで似たようなことができる
ndarray使ったことないけどドキュメント見た感じだとArcArrayが似たようなことしてそう
204デフォルトの名無しさん
2023/07/07(金) 16:21:09.69ID:LxMJB/uy 補足というかドキュメント読めば分かるけど
自分以外が参照してない場合は複製しないでそのまま変更するから余計なコピーは発生しない
自分以外が参照してない場合は複製しないでそのまま変更するから余計なコピーは発生しない
205デフォルトの名無しさん
2023/07/07(金) 16:23:08.62ID:kooiOW/g206デフォルトの名無しさん
2023/07/07(金) 16:24:54.69ID:kooiOW/g RustがC/C++と比べて向いてない分野は沢山指摘されているが、
・ゲーム
・GUI
・大規模プログラム
・IDEが使いたい人
・パソコン用アプリ
Rustが向いているかもしれない分野は
・CUIの小規模プログラム
・サーバーサイドプログラム
・ゲーム
・GUI
・大規模プログラム
・IDEが使いたい人
・パソコン用アプリ
Rustが向いているかもしれない分野は
・CUIの小規模プログラム
・サーバーサイドプログラム
207デフォルトの名無しさん
2023/07/07(金) 16:44:26.36ID:+Wkjm5FQ やべえ全く同意できねえ
パソコン用プログラムってどういうことだよせめてデスクトップアプリとかマシな言い方有るだろ
パソコン用プログラムってどういうことだよせめてデスクトップアプリとかマシな言い方有るだろ
208デフォルトの名無しさん
2023/07/07(金) 16:47:26.05ID:/zlan1BL >>206はいつものデタラメ君
209デフォルトの名無しさん
2023/07/07(金) 16:48:41.65ID:Mh36zzjY Delphiってpascalじゃなかったっけ?
210デフォルトの名無しさん
2023/07/07(金) 16:53:58.33ID:BfxSXh+T >>208
デタラメに感じないんだけど
デタラメに感じないんだけど
211デフォルトの名無しさん
2023/07/07(金) 17:30:40.15ID:/zlan1BL >>210
C/C++とRustは同じ特性(ネイティブコンパイル・GC必要なし・低レベル記述可など)の言語
向いてる向いていないの大きな差異はない
違いとしてはC/C++はこれまでの様々な蓄積(ライブラリや既存システムに書ける人員など)を活かせることがメリット
Rustは後発言語のため言語自体に便利な機能や高度な機能が備わっており開発効率の高さなどがメリット
C/C++とRustは同じ特性(ネイティブコンパイル・GC必要なし・低レベル記述可など)の言語
向いてる向いていないの大きな差異はない
違いとしてはC/C++はこれまでの様々な蓄積(ライブラリや既存システムに書ける人員など)を活かせることがメリット
Rustは後発言語のため言語自体に便利な機能や高度な機能が備わっており開発効率の高さなどがメリット
212デフォルトの名無しさん
2023/07/07(金) 17:45:59.16ID:eATRBaQE Swift・Dartと並んで、LLVMに載ってる最新世代の言語だからな
いろいろと不可能が可能にもなるだろ
ただし、処理系自体がクソデカ
これはclangも同罪
いろいろと不可能が可能にもなるだろ
ただし、処理系自体がクソデカ
これはclangも同罪
213デフォルトの名無しさん
2023/07/07(金) 18:09:19.57ID:ESNGSxIs >>203
基本的にはこの感じでNdarray構造体を開発しようと思ってる。変更なしの間はデータを共有。変更時には他のインスタンスとデータを共有している場合は自分用にデータをクローンしてから変更。
基本的にはこの感じでNdarray構造体を開発しようと思ってる。変更なしの間はデータを共有。変更時には他のインスタンスとデータを共有している場合は自分用にデータをクローンしてから変更。
214デフォルトの名無しさん
2023/07/07(金) 18:11:47.12ID:98SFipJR215デフォルトの名無しさん
2023/07/07(金) 18:21:22.66ID:98SFipJR ndarrayよくできてんな
これでいい気がしてきたw
これでいい気がしてきたw
216デフォルトの名無しさん
2023/07/07(金) 18:39:25.19ID:QJ6jblsM crates.ioとかゴミだらけ
cargo clean すると何GBもゴミが使ってることが判る
cargo clean すると何GBもゴミが使ってることが判る
217デフォルトの名無しさん
2023/07/07(金) 18:46:24.16ID:2SE8uAkh 何GBとかTBの時代に大したことないのでは?
218デフォルトの名無しさん
2023/07/07(金) 21:11:30.29ID:dzAVAX7p RcとかArcってメモリ安全性が完全じゃないの?
219デフォルトの名無しさん
2023/07/07(金) 21:43:23.63ID:98SFipJR メモリ安全性が完全とは?
220デフォルトの名無しさん
2023/07/07(金) 21:59:23.68ID:dzAVAX7p >>219
所有権と借用のシステムが完璧に守られること。
所有権と借用のシステムが完璧に守られること。
221デフォルトの名無しさん
2023/07/07(金) 22:26:56.09ID:98SFipJR222デフォルトの名無しさん
2023/07/07(金) 22:58:09.40ID:i9okElHY そこはC++でもRustでも同じで巡回参照にならないよう幹をツリー型にして巡回は弱参照にする
223デフォルトの名無しさん
2023/07/07(金) 23:39:19.49ID:fK6p0z7V >>202
TurboPASCALやDelphiを知らないのか?
TurboPASCALやDelphiを知らないのか?
224デフォルトの名無しさん
2023/07/07(金) 23:54:40.55ID:ex1cRp2w >>223
知ってる何なら両方使ってた
知ってる何なら両方使ってた
225デフォルトの名無しさん
2023/07/08(土) 01:05:12.94ID:Snxto99T Rustは開発効率が低い。
226デフォルトの名無しさん
2023/07/08(土) 01:06:47.91ID:aF1ddcQd とりあえずNdarray構造体はArcとMutexを使ってもう一度書き直すことにしたわ。
227デフォルトの名無しさん
2023/07/08(土) 01:08:55.16ID:N1xp7KcT C++と比べてRustの開発効率の高さは誰もが体感できる
228デフォルトの名無しさん
2023/07/08(土) 01:12:13.79ID:Snxto99T 使いたい人は使えばいいよ。俺は知らん。自己責任。
229デフォルトの名無しさん
2023/07/08(土) 02:06:58.40ID:aF1ddcQd C, C++の方がRustに比べて制約が少ない分、ある意味楽に自分の考えてることをコードに落とし込めてたのはあるな。その代わり安全性はあれな訳だったのだけれど。
230デフォルトの名無しさん
2023/07/08(土) 02:21:17.48ID:Snxto99T new や delete も実はとても安全で単純で理解し易い。
void func()
{
BYTE *p = new BYTE[100];
(p に対する処理);
delete [] p;
}
のように単純明確で、最初に new、最後に delete を書くだけ。
そして複雑な場合のケアレスミスを防ぐため、class のコンストラクタと
デストラクタが発明された。それもとても簡単で
class CSome {
protected:
BYTE *p;
public:
CSome() { p = new BYTE[100];}
~CSome() { delete [] p;}
};
と書くだけでいい。これは定型みたいなもので、何も難しいことは無い。
void func()
{
BYTE *p = new BYTE[100];
(p に対する処理);
delete [] p;
}
のように単純明確で、最初に new、最後に delete を書くだけ。
そして複雑な場合のケアレスミスを防ぐため、class のコンストラクタと
デストラクタが発明された。それもとても簡単で
class CSome {
protected:
BYTE *p;
public:
CSome() { p = new BYTE[100];}
~CSome() { delete [] p;}
};
と書くだけでいい。これは定型みたいなもので、何も難しいことは無い。
231デフォルトの名無しさん
2023/07/08(土) 02:31:43.22ID:tRB3lUB8232デフォルトの名無しさん
2023/07/08(土) 02:38:47.91ID:Snxto99T 本当は頭が良い人なら問題なく使える。
馬鹿だからミスや論理間違いを犯すのでnewやdeleteは使うな、
となる。
おおっぴろげに言わないだけで馬鹿な人対策に過ぎない。
なのに、むしろ、頭のいい人を馬鹿な人が馬鹿にする。
馬鹿な人が行く会社や学校では、危険だから禁止、となる。
しかし、頭のいい人が行く会社や学校では何も言われない。
そういうことがある。むしろ、効率を高めるため使うべきで
ある場合があるからだ。
馬鹿だからミスや論理間違いを犯すのでnewやdeleteは使うな、
となる。
おおっぴろげに言わないだけで馬鹿な人対策に過ぎない。
なのに、むしろ、頭のいい人を馬鹿な人が馬鹿にする。
馬鹿な人が行く会社や学校では、危険だから禁止、となる。
しかし、頭のいい人が行く会社や学校では何も言われない。
そういうことがある。むしろ、効率を高めるため使うべきで
ある場合があるからだ。
233デフォルトの名無しさん
2023/07/08(土) 02:41:12.58ID:Snxto99T なぜ禁止にするかと言えば、
「おまえらは馬鹿が多いから、禁止にしないとミスばっかり犯すから。
おまえらはザコ要員として雇っているに過ぎないのに、
頭がいい人限定の仕組みを使っていいわけない。」
と上の人は心の中にあるからだ。
そして決してそのことには触れない。
「おまえらは馬鹿が多いから、禁止にしないとミスばっかり犯すから。
おまえらはザコ要員として雇っているに過ぎないのに、
頭がいい人限定の仕組みを使っていいわけない。」
と上の人は心の中にあるからだ。
そして決してそのことには触れない。
234デフォルトの名無しさん
2023/07/08(土) 02:43:21.56ID:Snxto99T 普通の学校では「ゲームセンター禁止」となっていただろうが、
頭のいい人しか入れない学校では、別に行ってもいいですよ、
と言われたりしたものだ。
それと同様。
頭のいい人しか入れない学校では、別に行ってもいいですよ、
と言われたりしたものだ。
それと同様。
235デフォルトの名無しさん
2023/07/08(土) 03:00:11.97ID:VdwsFu6Q 間違わなければ間違わない
というのはエンジニアの考え方ではないね
というのはエンジニアの考え方ではないね
236デフォルトの名無しさん
2023/07/08(土) 03:09:09.66ID:Snxto99T 要は会社や学校では本当の事を言わないで、「禁止」とだけいうから
それが誰にでも当てはまることだと思って、掲示板に書いてしまう
人が多い。
ところが、それは秀才が集まる組織では当てはまらない。
秀才が当てはまる組織では、「あなたたちにだけ言う、
他の学校/組織には当てはまらない」
から話が始まる。
普通の人達が集まる組織では、そのことには絶対に触れない。
それが誰にでも当てはまることだと思って、掲示板に書いてしまう
人が多い。
ところが、それは秀才が集まる組織では当てはまらない。
秀才が当てはまる組織では、「あなたたちにだけ言う、
他の学校/組織には当てはまらない」
から話が始まる。
普通の人達が集まる組織では、そのことには絶対に触れない。
237デフォルトの名無しさん
2023/07/08(土) 03:10:02.90ID:Snxto99T238デフォルトの名無しさん
2023/07/08(土) 03:12:22.92ID:Snxto99T >>235
だったらC#やJavaScriptでも使ってなさいな。
だったらC#やJavaScriptでも使ってなさいな。
239デフォルトの名無しさん
2023/07/08(土) 03:15:35.36ID:4uosm6dj >>230
メモリを確保した関数でそのメモリを解放する簡易なプログラムならばその通り
しかし現実には確保したメモリが他のデータ構造に組み込まれて最終的に解放されるのは別の複数の関数であったり
そこへの参照(ポインタ)が解放時に残っていないことを満たさなければいけなかったり
複数のスレッドで共有することもある
それらが複雑に組み合わさって全てのケースを細かく人間がミスなく管理しきれるかというと無理だ
そしてメモリ管理バグを日々どこかで量産され続けている
メモリを確保した関数でそのメモリを解放する簡易なプログラムならばその通り
しかし現実には確保したメモリが他のデータ構造に組み込まれて最終的に解放されるのは別の複数の関数であったり
そこへの参照(ポインタ)が解放時に残っていないことを満たさなければいけなかったり
複数のスレッドで共有することもある
それらが複雑に組み合わさって全てのケースを細かく人間がミスなく管理しきれるかというと無理だ
そしてメモリ管理バグを日々どこかで量産され続けている
240デフォルトの名無しさん
2023/07/08(土) 03:16:15.71ID:Snxto99T241デフォルトの名無しさん
2023/07/08(土) 03:16:56.52ID:Snxto99T >>239
そのためにクラスの概念が発明されたんだよ。
そのためにクラスの概念が発明されたんだよ。
242デフォルトの名無しさん
2023/07/08(土) 03:18:11.94ID:VdwsFu6Q 優秀なエンジニアは性善説に頼ったりはしない
243デフォルトの名無しさん
2023/07/08(土) 03:19:59.66ID:Snxto99T 頭のいい人にとって便利な方法と、凡人にとって便利な方法とは異なる。
前者にとっては、後者用の方法はメンドクサく、
利便性が損なわれ、記述が長くなり、コーディングに時間がかかる。
頭がいいので、別にバグも入らない。
道具とはそういうものだ。
前者にとっては、後者用の方法はメンドクサく、
利便性が損なわれ、記述が長くなり、コーディングに時間がかかる。
頭がいいので、別にバグも入らない。
道具とはそういうものだ。
244デフォルトの名無しさん
2023/07/08(土) 03:20:54.59ID:Snxto99T245デフォルトの名無しさん
2023/07/08(土) 03:21:57.34ID:4uosm6dj246デフォルトの名無しさん
2023/07/08(土) 03:24:16.15ID:Snxto99T 馬鹿な人は、自分と、自分の周囲に人を基準にしか考えられない。
「人間とは沢山ミスをするものだ」
「ミスするとそれを見つけ出して直すのにとても苦労するものだ」
などと。
実は優秀な人は、ミスもとても少ないし、ミスしても短時間で
根本原因を探り当てて、根本治癒できる能力がある。
凡人はそれが出来ないから、Rustが輝いて見えるらしい。
「人間とは沢山ミスをするものだ」
「ミスするとそれを見つけ出して直すのにとても苦労するものだ」
などと。
実は優秀な人は、ミスもとても少ないし、ミスしても短時間で
根本原因を探り当てて、根本治癒できる能力がある。
凡人はそれが出来ないから、Rustが輝いて見えるらしい。
247デフォルトの名無しさん
2023/07/08(土) 03:24:55.50ID:Snxto99T >>245
俺は実世界ではとても優秀だと評価されている。
俺は実世界ではとても優秀だと評価されている。
248デフォルトの名無しさん
2023/07/08(土) 03:25:04.83ID:VdwsFu6Q >>244
性善説に頼るあなたは下手くそプログラマー
性善説に頼るあなたは下手くそプログラマー
249デフォルトの名無しさん
2023/07/08(土) 03:33:15.30ID:Snxto99T >>248
そんなことない。
人によって能力に大差があるのに、一律に安全性だけを
重視する方がおかしい。
だから日本はプログラミング産業が大成しなかった。
絵と音楽と運動能力だけが才能だと見なし、
生まれながらの知的能力の差は認めない。
そして実験ばかり重視して理論軽視。
この板も、何かと言えば、測定しろ、ばかり。
測定せずに、イマジネーションを働かせて思考実験する
風土が育ってない。
そんなことない。
人によって能力に大差があるのに、一律に安全性だけを
重視する方がおかしい。
だから日本はプログラミング産業が大成しなかった。
絵と音楽と運動能力だけが才能だと見なし、
生まれながらの知的能力の差は認めない。
そして実験ばかり重視して理論軽視。
この板も、何かと言えば、測定しろ、ばかり。
測定せずに、イマジネーションを働かせて思考実験する
風土が育ってない。
250デフォルトの名無しさん
2023/07/08(土) 03:35:32.85ID:VdwsFu6Q 性善説に頼るという判断ミスはプログラミング以前の問題
エンジニアとしての資質がない
エンジニアとしての資質がない
251デフォルトの名無しさん
2023/07/08(土) 03:44:16.18ID:Snxto99T >>250
むしろ、どんなプログラマも同じ制約やレギュレーションに従わなければ
ならないと考えるのは、まさに左翼的な考え。
左翼は個人差を認めず、みんなが同じ様に低め合おうとする。
能力が高ければ十分に安全に使えるのに、その方法を使ってる
人を軽蔑したりする。
「マシン語を直接使っている人は安全軽視だから能力が低い」
などと考えるのか、ということになる。
それは評価軸が間違っている。
むしろ、どんなプログラマも同じ制約やレギュレーションに従わなければ
ならないと考えるのは、まさに左翼的な考え。
左翼は個人差を認めず、みんなが同じ様に低め合おうとする。
能力が高ければ十分に安全に使えるのに、その方法を使ってる
人を軽蔑したりする。
「マシン語を直接使っている人は安全軽視だから能力が低い」
などと考えるのか、ということになる。
それは評価軸が間違っている。
252デフォルトの名無しさん
2023/07/08(土) 03:50:33.97ID:VdwsFu6Q 安全でないのはC++ではなくあなた
経験値が足りないのだろう
経験値が足りないのだろう
253デフォルトの名無しさん
2023/07/08(土) 03:59:42.63ID:Snxto99T254デフォルトの名無しさん
2023/07/08(土) 04:08:07.96ID:Snxto99T アメリカ生まれの「Security 詐欺」という経営方法が有り、
このスレの人はそれを使っている。
「C++は危ないんだから、それを使ってる人は馬鹿、愚か、無能」
と。
Securityの事を言われるとそれに従わざるを得なくなる人間心理を
悪用し、商売に結びつける詐欺商法。
マイクロソフトがOS Updateしない人を悪人扱いするのは、
UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
このスレの人はそれを使っている。
「C++は危ないんだから、それを使ってる人は馬鹿、愚か、無能」
と。
Securityの事を言われるとそれに従わざるを得なくなる人間心理を
悪用し、商売に結びつける詐欺商法。
マイクロソフトがOS Updateしない人を悪人扱いするのは、
UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
255デフォルトの名無しさん
2023/07/08(土) 04:12:16.47ID:VdwsFu6Q エンジニアは願望ではなく事実に基づいて判断する
これは難しいことではないが、向かない人もいる
これは難しいことではないが、向かない人もいる
256デフォルトの名無しさん
2023/07/08(土) 04:44:39.71ID:hz58RfSC >>229
制約していく点はどちらもほぼ同じ
C++てもRustでもメモリ安全や競合に対応するため自分で律して正しく制約してプログラミングする
自分で律して正しく制約できなかった時に違いが出る
C++はコンパイルが通って実行時にミスに気付くかあるいは気付かないまま完成したと思い込む
Rustはコンパイルエラーとなりすぐに必ず気付くことでこの点でも開発効率が高い
制約していく点はどちらもほぼ同じ
C++てもRustでもメモリ安全や競合に対応するため自分で律して正しく制約してプログラミングする
自分で律して正しく制約できなかった時に違いが出る
C++はコンパイルが通って実行時にミスに気付くかあるいは気付かないまま完成したと思い込む
Rustはコンパイルエラーとなりすぐに必ず気付くことでこの点でも開発効率が高い
257デフォルトの名無しさん
2023/07/08(土) 04:52:36.07ID:mpe+rXny まあ、使わないのは自由なんだよ
所有権。あれはいいものだ
はよC++にも来い
大げさだなと思うような超小コードには使わなきゃいいだけ
所有権。あれはいいものだ
はよC++にも来い
大げさだなと思うような超小コードには使わなきゃいいだけ
258デフォルトの名無しさん
2023/07/08(土) 05:07:23.17ID:Snxto99T >>256
それで開発効率が高くなるかどうかは人による。
それで開発効率が高くなるかどうかは人による。
259デフォルトの名無しさん
2023/07/08(土) 05:54:00.44ID:hz58RfSC >>258
C++は実行時デバッグとなるため開発効率が低くなる
さらにレア発生のため気付かぬまま実運用に入ってから発覚するとペナルティコストも大きい
早期にコンパイルエラーとなるRustはそれらのコストが不要となる
C++は実行時デバッグとなるため開発効率が低くなる
さらにレア発生のため気付かぬまま実運用に入ってから発覚するとペナルティコストも大きい
早期にコンパイルエラーとなるRustはそれらのコストが不要となる
260デフォルトの名無しさん
2023/07/08(土) 05:56:31.34ID:Snxto99T261デフォルトの名無しさん
2023/07/08(土) 06:26:49.21ID:m4s2ktM0262デフォルトの名無しさん
2023/07/08(土) 07:59:41.56ID:hz58RfSC >>260
C++とRustで同条件の話を持ち出しても反論になっていないよ
C++とRustで同条件の話を持ち出しても反論になっていないよ
263デフォルトの名無しさん
2023/07/08(土) 08:44:23.04ID:knIeRqDp シープラ使ってるハゲって自己評価高いな
264デフォルトの名無しさん
2023/07/08(土) 09:35:05.64ID:M6MMYA5O >>230
virtual 忘れるなよ
virtual 忘れるなよ
265デフォルトの名無しさん
2023/07/08(土) 09:39:11.12ID:M6MMYA5O266デフォルトの名無しさん
2023/07/08(土) 09:45:26.32ID:M6MMYA5O >>254
>アメリカ生まれの「Security 詐欺」という経営方法が有り、
>このスレの人はそれを使っている。
>「C++は危ないんだから、それを使ってる人は馬鹿、愚か、無能」
>と。
ほんそれ
>Securityの事を言われるとそれに従わざるを得なくなる人間心理を
>悪用し、商売に結びつける詐欺商法。
その通り
USO800認証取得で金も時間も掛かるとか能率を下げさせる攻撃がまかり通ってる
>マイクロソフトがOS Updateしない人を悪人扱いするのは、
>UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
これは言い過ぎ(気持ちは判る)
>アメリカ生まれの「Security 詐欺」という経営方法が有り、
>このスレの人はそれを使っている。
>「C++は危ないんだから、それを使ってる人は馬鹿、愚か、無能」
>と。
ほんそれ
>Securityの事を言われるとそれに従わざるを得なくなる人間心理を
>悪用し、商売に結びつける詐欺商法。
その通り
USO800認証取得で金も時間も掛かるとか能率を下げさせる攻撃がまかり通ってる
>マイクロソフトがOS Updateしない人を悪人扱いするのは、
>UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
これは言い過ぎ(気持ちは判る)
267デフォルトの名無しさん
2023/07/08(土) 09:48:22.81ID:ONcKyxOd >>265
どんなに優秀な人たちでもミスを必ずする
Google&Microsoft「セキュリティ脆弱性バグの70%はC/C++のメモリ管理ミスが原因。それがRustを採用した理由だ。」
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
どんなに優秀な人たちでもミスを必ずする
Google&Microsoft「セキュリティ脆弱性バグの70%はC/C++のメモリ管理ミスが原因。それがRustを採用した理由だ。」
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
268デフォルトの名無しさん
2023/07/08(土) 09:48:50.55ID:M6MMYA5O269デフォルトの名無しさん
2023/07/08(土) 09:50:07.66ID:M6MMYA5O >>261
お前モナ
お前モナ
270デフォルトの名無しさん
2023/07/08(土) 09:51:51.79ID:M6MMYA5O271デフォルトの名無しさん
2023/07/08(土) 09:56:21.11ID:z6h9kmb4 >>270
と、これが馬鹿の思考です
と、これが馬鹿の思考です
272デフォルトの名無しさん
2023/07/08(土) 09:57:58.69ID:ONcKyxOd >>270
C++の欠陥のせいでセキュリティ脆弱性が多発している現実の記事
C++はメモリ管理ミスを検出すらできないためコンパイルエラーにすることができない
致命的な欠陥のあるC++を今後は捨てていこうという話
C++の欠陥のせいでセキュリティ脆弱性が多発している現実の記事
C++はメモリ管理ミスを検出すらできないためコンパイルエラーにすることができない
致命的な欠陥のあるC++を今後は捨てていこうという話
273デフォルトの名無しさん
2023/07/08(土) 10:49:35.84ID:PpTTWe5V Rustの次の言語に期待
274デフォルトの名無しさん
2023/07/08(土) 11:04:17.25ID:fNvohE+k メモリ確保と開放位置をきっちり考えて書けないような奴がそれをプログラム言語のせいにしてるだけだな
ここからここまでがどうなってとか理論的に構造を考えれない奴に限って言語が悪いと責任転嫁をする
そういう奴がプログラム書くな
メモリ関連だけじゃなくバグだらけのプログラムしかできない
ここからここまでがどうなってとか理論的に構造を考えれない奴に限って言語が悪いと責任転嫁をする
そういう奴がプログラム書くな
メモリ関連だけじゃなくバグだらけのプログラムしかできない
275デフォルトの名無しさん
2023/07/08(土) 11:10:07.92ID:VdwsFu6Q 間違わないやつは間違わない
は論理的ではない
エンジニアの考え方ではない
は論理的ではない
エンジニアの考え方ではない
276デフォルトの名無しさん
2023/07/08(土) 11:12:56.26ID:tRB3lUB8 まあ、>>230のコードが即メモリバグを起こすかというと、そうではない
CSomeは自分しか使わない、自分はその使い方を間違えない、という条件ならたしかにおかしなことは起きない
ID:Snxto99TはこのCSomeをどう「誤用」すればメモリバグが起きるか説明できる?
できないならやっぱりザコだよ
CSomeは自分しか使わない、自分はその使い方を間違えない、という条件ならたしかにおかしなことは起きない
ID:Snxto99TはこのCSomeをどう「誤用」すればメモリバグが起きるか説明できる?
できないならやっぱりザコだよ
277デフォルトの名無しさん
2023/07/08(土) 11:14:38.03ID:7APnxgwh 間違う間違わない以前の問題として理論的に構造を考えて書けないでそれ言語せいにする奴
こうい奴はプログラムを書くな
こうい奴はプログラムを書くな
278デフォルトの名無しさん
2023/07/08(土) 11:23:49.72ID:gK2vRDVX 話は簡単で
優秀なプログラマーはC++でもRustでも難なく使いこなすことができる
一方で事実として
C++はうっかりメモリ管理やメモリ競合でミスをしてもコンパイラが通してしまう欠陥を抱えた古い言語
Rustはその場合でもコンパイラがエラーにしてくれる点やC++にない様々な高機能を持つ進んだ言語
結論として
優秀な人たちはどちらも使いこなせるので高機能で便利なRustを使っている
高機能な言語を使いこなせない人たちがC++のみに拘る
優秀なプログラマーはC++でもRustでも難なく使いこなすことができる
一方で事実として
C++はうっかりメモリ管理やメモリ競合でミスをしてもコンパイラが通してしまう欠陥を抱えた古い言語
Rustはその場合でもコンパイラがエラーにしてくれる点やC++にない様々な高機能を持つ進んだ言語
結論として
優秀な人たちはどちらも使いこなせるので高機能で便利なRustを使っている
高機能な言語を使いこなせない人たちがC++のみに拘る
279デフォルトの名無しさん
2023/07/08(土) 11:35:04.80ID:hU6KuhT0 >>232
>馬鹿だからミスや論理間違いを犯すのでnewやdeleteは使うな、
>となる。
make_uniqueとmake_sharedが規格に入ったから
newとdeleteを直接呼ぶ必要がなくなったから
>馬鹿だからミスや論理間違いを犯すのでnewやdeleteは使うな、
>となる。
make_uniqueとmake_sharedが規格に入ったから
newとdeleteを直接呼ぶ必要がなくなったから
280デフォルトの名無しさん
2023/07/08(土) 11:35:37.79ID:VdwsFu6Q 優秀なエンジニアは間違わないエンジニアではなく、間違わない方法を考え、選択するエンジニア
281デフォルトの名無しさん
2023/07/08(土) 11:48:14.94ID:/jSq4Gja fn clever_choice() {unsafe {...}}
282デフォルトの名無しさん
2023/07/08(土) 12:05:38.94ID:EB0iRg5v 優秀な人しか使えないんでは何時までたっても普及しないのでわ
283デフォルトの名無しさん
2023/07/08(土) 12:31:12.90ID:0dKdZ1v3 現在の選択肢ベースで考えれば十分普及してるでしょ
米しかなかった時代の米食の普及率でも目指してんの?
米しかなかった時代の米食の普及率でも目指してんの?
284デフォルトの名無しさん
2023/07/08(土) 12:33:13.38ID:777Hyqek オレはアホなのでアホでも使える方を選びます
285デフォルトの名無しさん
2023/07/08(土) 13:41:39.02ID:0jPiV6IB 開放と解放を間違えるような人が「俺は間違えない!」とか言っても無自覚バカ宣言にしか聞こえないわな
286デフォルトの名無しさん
2023/07/08(土) 13:56:46.11ID:p+sO9/0D ある意味あってるな
有名私立は服装も自由でピンク頭金髪可でピアスも開け放題
一方の馬鹿学校は制服で校則も厳しい
有名私立は服装も自由でピンク頭金髪可でピアスも開け放題
一方の馬鹿学校は制服で校則も厳しい
287デフォルトの名無しさん
2023/07/08(土) 14:11:41.74ID:Gy8EoznK >>266
>>マイクロソフトがOS Updateしない人を悪人扱いするのは、
>>UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
>これは言い過ぎ(気持ちは判る)
そんなことない。
「計画的陳腐化」や
「薬物売人の経営論()drug buyer business economics」
などを使っていると言われている。
>>マイクロソフトがOS Updateしない人を悪人扱いするのは、
>>UpdateのたびにOSを遅くして、新しいOSを買わせる手段。
>これは言い過ぎ(気持ちは判る)
そんなことない。
「計画的陳腐化」や
「薬物売人の経営論()drug buyer business economics」
などを使っていると言われている。
288デフォルトの名無しさん
2023/07/08(土) 14:17:48.79ID:Gy8EoznK >>279
古いコンパイラは対応して無い。
新しいコンパイラをまともな速度で使おうとすると、
最新パソコンに買い替えが必要となり、OSも全入れ替えが必要
となり、今まで便利に使えていたアプリの大部分が動かなくなる。
そしてアプリは廃版になっていて新しいバージョンも出てない
から買い換えることも出来ない。
Win10にすると、WinXP時代のアプリが動かなくなったりする。
もっと古いものも持ってるし。
だから新しいハードウェアは買わない。
古いコンパイラは対応して無い。
新しいコンパイラをまともな速度で使おうとすると、
最新パソコンに買い替えが必要となり、OSも全入れ替えが必要
となり、今まで便利に使えていたアプリの大部分が動かなくなる。
そしてアプリは廃版になっていて新しいバージョンも出てない
から買い換えることも出来ない。
Win10にすると、WinXP時代のアプリが動かなくなったりする。
もっと古いものも持ってるし。
だから新しいハードウェアは買わない。
289デフォルトの名無しさん
2023/07/08(土) 14:21:53.18ID:M4Y1POjO セキュリティアップデートなんて商売に関係なく
フリーソフトウェアでもあるだろろうがw
リスクがある状況でUpdateしない奴は悪人だよ
フリーソフトウェアでもあるだろろうがw
リスクがある状況でUpdateしない奴は悪人だよ
290デフォルトの名無しさん
2023/07/08(土) 14:25:44.35ID:Gy8EoznK291デフォルトの名無しさん
2023/07/08(土) 14:31:35.48ID:Gy8EoznK 言葉だけではどっちが本当の事を言っているのか分からない。
実際のRustのコードを見れば、汚さが分かるし、
CやC++と全く似て無いことも分かる。
汚いと言うのは論理では表しにくいので、言葉では表現しにくいので
あたかも言葉だけではRustには欠点が無いかのように見えてしまう。
実際のRustのコードを見れば、汚さが分かるし、
CやC++と全く似て無いことも分かる。
汚いと言うのは論理では表しにくいので、言葉では表現しにくいので
あたかも言葉だけではRustには欠点が無いかのように見えてしまう。
292デフォルトの名無しさん
2023/07/08(土) 14:32:02.14ID:M4Y1POjO293デフォルトの名無しさん
2023/07/08(土) 14:33:34.46ID:M4Y1POjO294デフォルトの名無しさん
2023/07/08(土) 14:34:51.65ID:Gy8EoznK Rustの本を見てみたら、冒頭のOS環境として
Linux
MacOS
Windows 10
の順序で書いてあった。
まさに、オープンソースカルト左翼であることを目の当たりにした。
Linux
MacOS
Windows 10
の順序で書いてあった。
まさに、オープンソースカルト左翼であることを目の当たりにした。
295デフォルトの名無しさん
2023/07/08(土) 14:46:14.76ID:M4Y1POjO296デフォルトの名無しさん
2023/07/08(土) 14:49:30.87ID:Gy8EoznK297デフォルトの名無しさん
2023/07/08(土) 14:56:05.98ID:p+sO9/0D ある意味この人は保護対象じゃないのかと思った
298デフォルトの名無しさん
2023/07/08(土) 15:08:40.55ID:suNzn+84299デフォルトの名無しさん
2023/07/08(土) 15:14:57.62ID:Gy8EoznK300デフォルトの名無しさん
2023/07/08(土) 15:19:13.13ID:suNzn+84301デフォルトの名無しさん
2023/07/08(土) 15:19:27.20ID:/jSq4Gja 俺らと話しても薬物治療の代わりにはならないよ
302デフォルトの名無しさん
2023/07/08(土) 15:22:48.26ID:Gy8EoznK 悔しいのお。左翼どもよ。いくら頑張っても
Rustは流行らないと言う事実は変わらないよな。
Rustは流行らないと言う事実は変わらないよな。
303デフォルトの名無しさん
2023/07/08(土) 15:32:10.56ID:suNzn+84 >>302
お前はC++20の開発環境を用意しろ
お前はC++20の開発環境を用意しろ
304デフォルトの名無しさん
2023/07/08(土) 15:37:47.72ID:409zOGbF 日本はIT技術者が少ないんだから、これからは世の中のOSSではない外国製のソフトからは多めに税金を取るくらいの姿勢でよい。
OSSはIT弱小国家にとっては唯一の活路でしょ。今の中央集権の先駆者総取りのIT業界は残念ながら日本には不利だ。
OSSはIT弱小国家にとっては唯一の活路でしょ。今の中央集権の先駆者総取りのIT業界は残念ながら日本には不利だ。
305デフォルトの名無しさん
2023/07/08(土) 16:06:29.07ID:409zOGbF Ndarray構造体を全てArcとMutexで書きかえたけどそんなに実行速度が落ちなかった。
306デフォルトの名無しさん
2023/07/08(土) 16:08:46.88ID:b8BxfChJ >>302
大学でちゃんとソフトウェア工学なりプログラミング言語なり勉強した経験はあるん?
大学でちゃんとソフトウェア工学なりプログラミング言語なり勉強した経験はあるん?
307デフォルトの名無しさん
2023/07/08(土) 16:14:43.78ID:C0afRZOI >>305
スレッド間で試した?
スレッド間で試した?
308デフォルトの名無しさん
2023/07/08(土) 16:18:14.17ID:auRxfwEH >>306
俺の話は置いとけ。
Rustを作り始めた筆頭プログラマは、大学の専攻はバイオで
真菌を研究しており、真菌の生命力に見せられてRustの名は
真菌の一種から採ったんだそうだぞ。
そしてそのような工学とは縁もゆかりもない人が作った
言語を有りがたそうに崇拝しているのがRust信者なんだぞ。
俺の話は置いとけ。
Rustを作り始めた筆頭プログラマは、大学の専攻はバイオで
真菌を研究しており、真菌の生命力に見せられてRustの名は
真菌の一種から採ったんだそうだぞ。
そしてそのような工学とは縁もゆかりもない人が作った
言語を有りがたそうに崇拝しているのがRust信者なんだぞ。
309デフォルトの名無しさん
2023/07/08(土) 16:19:44.04ID:auRxfwEH Rustの速度の見積もりが間違っているのが前から謎だったが、
数学とは縁が無い人が作ったからだったんだな。
数学とは縁が無い人が作ったからだったんだな。
310デフォルトの名無しさん
2023/07/08(土) 16:23:14.66ID:auRxfwEH >>306
俺はそんなpopularな学科には行って無い。
俺はそんなpopularな学科には行って無い。
311デフォルトの名無しさん
2023/07/08(土) 16:25:41.23ID:409zOGbF312デフォルトの名無しさん
2023/07/08(土) 16:34:49.31ID:auRxfwEH313デフォルトの名無しさん
2023/07/08(土) 16:41:49.73ID:aF1ddcQd 水源とは何か良く分からんが、OSSでアメリカの大手ITをぶっ潰せるような仕組みを作れば日本には大きな得がある。出遅れた日本にとれる選択肢は少ない。
ビットコインのような非中央集権型のシステムを日本はITの全分野で押し進めていくべき。
ビットコインのような非中央集権型のシステムを日本はITの全分野で押し進めていくべき。
314デフォルトの名無しさん
2023/07/08(土) 16:43:47.67ID:gK2vRDVX 優秀でないから様々なオープンソースソフトウェアを使いこなせないのだろう
Rustのアンチ活動をしている人のレベルの低さを知った
Rustのアンチ活動をしている人のレベルの低さを知った
315デフォルトの名無しさん
2023/07/08(土) 16:44:42.96ID:u2zK5bfH >>310
大学では何やってたん?
大学では何やってたん?
316デフォルトの名無しさん
2023/07/08(土) 16:47:18.72ID:svPDr0rA 情報系産業は資本代替性が高いとは言うが殆どそれは資本力勝負となりアメリカには勝てない
なので別の方法で勝負しないといけない
流石にここまでのビッグテック支配は居心地が悪い
なので別の方法で勝負しないといけない
流石にここまでのビッグテック支配は居心地が悪い
317デフォルトの名無しさん
2023/07/08(土) 16:49:51.85ID:auRxfwEH >>316
技術と言うより金の問題になっている気がするな。
金で優秀な人や企業を吸収したり、あるいは、検索エンジン用や
AI用のスパコンみたいなものを持っていたり。
いまのITは大量のプログラマやデータセンターが無いと成り立たない様になってきている。
技術と言うより金の問題になっている気がするな。
金で優秀な人や企業を吸収したり、あるいは、検索エンジン用や
AI用のスパコンみたいなものを持っていたり。
いまのITは大量のプログラマやデータセンターが無いと成り立たない様になってきている。
318デフォルトの名無しさん
2023/07/08(土) 16:56:40.99ID:aF1ddcQd >>317
パブリッククラウドを国家が無償で日本国民に開放するべきだと思う。日本はアメリカの様に大規模な資本家がいないので政府主導で計算資源を国民に開放してくべきだと思う。
パブリッククラウドを国家が無償で日本国民に開放するべきだと思う。日本はアメリカの様に大規模な資本家がいないので政府主導で計算資源を国民に開放してくべきだと思う。
319デフォルトの名無しさん
2023/07/08(土) 16:57:28.70ID:svPDr0rA AIなんかも結局はぶん回し勝負ってことで電気エネルギーを如何に大量に安価に調達出来るかが勝負となってきている
なのでマイクロソフトやGoogleは核融合発電の研究開発に躍起になっている
資本さえあればなんとでもなる世界になってしまった
なのでマイクロソフトやGoogleは核融合発電の研究開発に躍起になっている
資本さえあればなんとでもなる世界になってしまった
320デフォルトの名無しさん
2023/07/08(土) 16:59:21.48ID:auRxfwEH 左翼がオープンソース化を進めた結果、ソフトウェアを個人で作って
売れる時代が終わってしをいました。
売れる時代が終わってしをいました。
321デフォルトの名無しさん
2023/07/08(土) 17:01:20.34ID:auRxfwEH322デフォルトの名無しさん
2023/07/08(土) 17:01:33.20ID:DfgvMNWU ID:auRxfwEHは自分で優秀と言うくらいだから
少なくともドクター取ってるんやろね
あれだけ自分で言っててまさか学部生ってことはあるまい
でも
発言からはアカデミックな香りを感じさせないのよね
数学や工学のバックグラウンドが見えないと言うか
文系かまったく畑違いなとこから来てるのかな?
少なくともドクター取ってるんやろね
あれだけ自分で言っててまさか学部生ってことはあるまい
でも
発言からはアカデミックな香りを感じさせないのよね
数学や工学のバックグラウンドが見えないと言うか
文系かまったく畑違いなとこから来てるのかな?
323デフォルトの名無しさん
2023/07/08(土) 17:10:00.07ID:p+sO9/0D NECや銀行とかでメインフレームを触ってた70代のおじいちゃんでしょ
324デフォルトの名無しさん
2023/07/08(土) 17:18:52.84ID:DfgvMNWU なんか山に籠もって一人でPC触ってるアマチュアって感じなんだよ正直
仕事からも学問からも遠いっていうか
自分たった一人でおうちで夢見ながら喋ってるような
批判や競争や責任からすごく遠いところに引きこもってるような
仕事からも学問からも遠いっていうか
自分たった一人でおうちで夢見ながら喋ってるような
批判や競争や責任からすごく遠いところに引きこもってるような
325デフォルトの名無しさん
2023/07/08(土) 17:58:46.48ID:M4Y1POjO326デフォルトの名無しさん
2023/07/08(土) 18:05:27.13ID:C0afRZOI 急にどうした?
発狂してからに
支離滅裂で会話が成立してないぞ
まずは強いお薬を飲め
発狂してからに
支離滅裂で会話が成立してないぞ
まずは強いお薬を飲め
327デフォルトの名無しさん
2023/07/08(土) 18:06:54.48ID:C0afRZOI >>311
スレッド間じゃないなら最適化されちゃうよ
スレッド間じゃないなら最適化されちゃうよ
328デフォルトの名無しさん
2023/07/08(土) 18:18:03.03ID:SdplvoMh Rustのライフタイムの型注釈についてちょっと真面目に資料読んでみたいんだけど「こういう時困る、だからこうしよう」的な文章しか転がってない
ちゃんと論文レベルで解説してる文章とかないですかね?
ちゃんと論文レベルで解説してる文章とかないですかね?
329デフォルトの名無しさん
2023/07/08(土) 18:32:09.99ID:p+sO9/0D ありませんね
次の患者さんどうぞー
次の患者さんどうぞー
330デフォルトの名無しさん
2023/07/08(土) 18:41:14.61ID:Yg5OnBqY >>328
現状の公式ドキュメントとしてはたぶんNLLのRFCが一番詳しいと思う
現状の公式ドキュメントとしてはたぶんNLLのRFCが一番詳しいと思う
331デフォルトの名無しさん
2023/07/08(土) 18:43:49.70ID:gK2vRDVX >>327
確認したことないからわからないけどSendしていないからといってそんな最適化するかな?
まずまったく異なる型のArcをRcへ変えてしまう無茶はしないはず
ではArcの中身のAtomicUsizeをusizeにしてしまう最適化をするだろうか
その両者の速度差はndarrayの計算覧ハと比べて微々bスる誤差にすぎbネい話だと思う
Mutexについても同様で最適化するとしたら丸ごと無くすことになるがそれは考えにくい
一方でスレッド間テストをすれば競合時のlockのwaitが起きるなどで少し遅くなる可能性はあるが
それはどのようにコードを書いても必須で避けられない正しい行為
確認したことないからわからないけどSendしていないからといってそんな最適化するかな?
まずまったく異なる型のArcをRcへ変えてしまう無茶はしないはず
ではArcの中身のAtomicUsizeをusizeにしてしまう最適化をするだろうか
その両者の速度差はndarrayの計算覧ハと比べて微々bスる誤差にすぎbネい話だと思う
Mutexについても同様で最適化するとしたら丸ごと無くすことになるがそれは考えにくい
一方でスレッド間テストをすれば競合時のlockのwaitが起きるなどで少し遅くなる可能性はあるが
それはどのようにコードを書いても必須で避けられない正しい行為
332デフォルトの名無しさん
2023/07/08(土) 18:51:22.44ID:SdplvoMh >>330
そうなんですか?
探してみます
ともかく“ライフタイム注釈”って“コンパイラが決定(推論)できないライフタイムを注釈する必要がある”というものらしいけど、どんな時は推論できてどんな時は推論できないのかさっぱり分からない
普通のHindley–Milner (HM) type systemとかだと論文レベルで解説文書がネットに転がっててわかるんですけど、ライフタイム注釈についてはどんな範囲では推論が可能なのかとか資料がひとつも見つからない
そうなんですか?
探してみます
ともかく“ライフタイム注釈”って“コンパイラが決定(推論)できないライフタイムを注釈する必要がある”というものらしいけど、どんな時は推論できてどんな時は推論できないのかさっぱり分からない
普通のHindley–Milner (HM) type systemとかだと論文レベルで解説文書がネットに転がっててわかるんですけど、ライフタイム注釈についてはどんな範囲では推論が可能なのかとか資料がひとつも見つからない
333デフォルトの名無しさん
2023/07/08(土) 18:52:33.75ID:auRxfwEH 日本の工学系は教授ですらIT技術の良し悪しを語る資格は無いのに。
334デフォルトの名無しさん
2023/07/08(土) 19:03:14.40ID:x767qEv3 このスレは各言語の特徴的なキーワードだけを参考にしている。
どっちが優れているとかどっちがゴミだとかという話は全く参考にならない。
どっちが優れているとかどっちがゴミだとかという話は全く参考にならない。
335デフォルトの名無しさん
2023/07/08(土) 19:11:01.12ID:p+sO9/0D >>332
論文レベルじゃないと理解できないのは困りものですね
論文レベルじゃないと理解できないのは困りものですね
336デフォルトの名無しさん
2023/07/08(土) 19:11:09.06ID:Yg5OnBqY >>332
lifetime elisionは別に推論じゃないぞ
borrowckとしてはライフタイムは必ず事前に注釈されなくてはならない
一部のよくあるパターンで省略を許可する、人間のためのルールがelision rules
lifetime elisionは別に推論じゃないぞ
borrowckとしてはライフタイムは必ず事前に注釈されなくてはならない
一部のよくあるパターンで省略を許可する、人間のためのルールがelision rules
337デフォルトの名無しさん
2023/07/08(土) 19:11:28.76ID:VdwsFu6Q Rustについて安全であるということだけを切り取って議論しているのは、現場も現実も知らない阿呆
338デフォルトの名無しさん
2023/07/08(土) 19:16:23.21ID:gK2vRDVX >>332
考え方が逆
ライフタイム注釈はコンパイラにとって常に必要
だからライフタイム注釈するのが基本しかしそれを省略することができる状況が多々あって
その省略された時にコンパイラが省略を補う規則が定められている
https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html#lifetime-elision
lifetime elision rules
The first rule is that
The second rule is that
The third rule is that
考え方が逆
ライフタイム注釈はコンパイラにとって常に必要
だからライフタイム注釈するのが基本しかしそれを省略することができる状況が多々あって
その省略された時にコンパイラが省略を補う規則が定められている
https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html#lifetime-elision
lifetime elision rules
The first rule is that
The second rule is that
The third rule is that
339デフォルトの名無しさん
2023/07/08(土) 19:18:56.60ID:auRxfwEH >>337
それ。
それ。
340デフォルトの名無しさん
2023/07/08(土) 19:19:42.70ID:7vcICBIU341デフォルトの名無しさん
2023/07/08(土) 19:32:01.59ID:p+sO9/0D ここで説明しても無駄だよ
彼は論文レベルじゃないと理解できないんだから
彼は論文レベルじゃないと理解できないんだから
342デフォルトの名無しさん
2023/07/08(土) 19:44:44.75ID:SdplvoMh みなさまありがとうございます
ちょっと私まだ疑問が解決してないです
私の認識書いてみます
私の認識だとrustの“ライフタイム”はコンパイラが確保したメモリを解放するタイミングを決定するために必須のものだと考えています
何故なら効率のためにrustは複数の参照が同じオブジェクトを参照する事を許す“参照の貸与”のシステムを導入してるからです
なので所有権を持ちその参照が切れる前に全ての“貸与”していた全ての参照の“ライフタイム”が切れていなければなりません
コンパイラは貸し出された参照のライフタイムが所有権を持つ参照のライフタイムより長いものが有ればそれを検出し、貸借規定違反としてコンパイル時にそれを検出する事でダングリング参照の発生を防ぐシステムだと認識してます
その“参照のライフタイム”はユーザーが宣言するものではなくて本来ならコンパイラが自動的に拾うべきものだと思ってます
何故ならばrustの参照のライフタイムが「プログラマが好き勝手に自由に設定していい」ものなら結局それは“コンパイラがダングリング参照の発生を未然に検出する”システムになど到底ならないからです
少なくともユーザーが“この関数の返り値のライフタイムは引数のこのライフタイム以前に切れる”と宣言してもその宣言の妥当性をコンパイラが検証しないなら意味がありません、もちろん検証すると思います、具体的には返り値として用意された値のライフタイムがその値を作成した右辺値に現れる参照のライフタイムより長ければその時点で不当なライフタイムの宣言を検出できてそれでコンパイラは不適切なライフタイム注釈を検出できると思います
分からないのはそれなら結局コンパイラはライフタイムをやろうと思えば自分で推論できるのではないかという事です、実際rustの初期のコンパイラでは必須だったライフタイム注釈はいくつかの推論可能なケースでは省略可能になっているようです
じゃあいつダメなのか?いつどんな時なら推論がうまくいかないのかの基本的な理論がよく分からないんです
ちょっと私まだ疑問が解決してないです
私の認識書いてみます
私の認識だとrustの“ライフタイム”はコンパイラが確保したメモリを解放するタイミングを決定するために必須のものだと考えています
何故なら効率のためにrustは複数の参照が同じオブジェクトを参照する事を許す“参照の貸与”のシステムを導入してるからです
なので所有権を持ちその参照が切れる前に全ての“貸与”していた全ての参照の“ライフタイム”が切れていなければなりません
コンパイラは貸し出された参照のライフタイムが所有権を持つ参照のライフタイムより長いものが有ればそれを検出し、貸借規定違反としてコンパイル時にそれを検出する事でダングリング参照の発生を防ぐシステムだと認識してます
その“参照のライフタイム”はユーザーが宣言するものではなくて本来ならコンパイラが自動的に拾うべきものだと思ってます
何故ならばrustの参照のライフタイムが「プログラマが好き勝手に自由に設定していい」ものなら結局それは“コンパイラがダングリング参照の発生を未然に検出する”システムになど到底ならないからです
少なくともユーザーが“この関数の返り値のライフタイムは引数のこのライフタイム以前に切れる”と宣言してもその宣言の妥当性をコンパイラが検証しないなら意味がありません、もちろん検証すると思います、具体的には返り値として用意された値のライフタイムがその値を作成した右辺値に現れる参照のライフタイムより長ければその時点で不当なライフタイムの宣言を検出できてそれでコンパイラは不適切なライフタイム注釈を検出できると思います
分からないのはそれなら結局コンパイラはライフタイムをやろうと思えば自分で推論できるのではないかという事です、実際rustの初期のコンパイラでは必須だったライフタイム注釈はいくつかの推論可能なケースでは省略可能になっているようです
じゃあいつダメなのか?いつどんな時なら推論がうまくいかないのかの基本的な理論がよく分からないんです
343デフォルトの名無しさん
2023/07/08(土) 19:52:23.40ID:7vcICBIU344デフォルトの名無しさん
2023/07/08(土) 19:53:38.62ID:p+sO9/0D 長文しか掛けんのかこいつは
全部関数など使わないで書けばライフタイム自体は一目瞭然
だが不注意な人はブロックから抜けて死んでる物を参照して使おうとする
それをコンパイラが阻止する
ライフタイムは基本的はこれだけ
これが前段階
全部関数など使わないで書けばライフタイム自体は一目瞭然
だが不注意な人はブロックから抜けて死んでる物を参照して使おうとする
それをコンパイラが阻止する
ライフタイムは基本的はこれだけ
これが前段階
345デフォルトの名無しさん
2023/07/08(土) 19:59:31.52ID:7vcICBIU 多分GC言語しか使ったことがないのだろう
参照がある限り値が生き続けるというぬるま湯に浸かってるから理解できない
参照がある限り値が生き続けるというぬるま湯に浸かってるから理解できない
346デフォルトの名無しさん
2023/07/08(土) 19:59:33.99ID:mgDMV1th すいません、私が知りたい事説明するのにこれ以上短くできませんでした
347デフォルトの名無しさん
2023/07/08(土) 20:00:38.48ID:p+sO9/0D それが途中で関数が使われてると戻り値のライフタイムがわからなくなる
入力した引数と戻り値のライフタイムが関連付けられるならその様にしなければならない
仮に a とbが与えられて戻り値がどちらかになるのであれば
「寿命が短い方を共通の寿命」と考えることが必要になる
そうしないと死んでる奴を参照しちゃうから
それを元にライフタイムの範囲を判定してはみ出てたらコンパイルエラーにする
入力した引数と戻り値のライフタイムが関連付けられるならその様にしなければならない
仮に a とbが与えられて戻り値がどちらかになるのであれば
「寿命が短い方を共通の寿命」と考えることが必要になる
そうしないと死んでる奴を参照しちゃうから
それを元にライフタイムの範囲を判定してはみ出てたらコンパイルエラーにする
348デフォルトの名無しさん
2023/07/08(土) 20:00:57.02ID:7vcICBIU 発想を逆転させな?
「変数が生きている間しか参照は存在できない」
「変数が生きている間しか参照は存在できない」
349デフォルトの名無しさん
2023/07/08(土) 20:08:08.08ID:gK2vRDVX350デフォルトの名無しさん
2023/07/08(土) 20:08:44.10ID:7vcICBIU 参照というのは実体がないと生きられないの
関数の引数や戻り値が参照だけだと実体がどれだけ生きてるかわからんでしょ?
関数の引数や戻り値が参照だけだと実体がどれだけ生きてるかわからんでしょ?
351デフォルトの名無しさん
2023/07/08(土) 20:13:07.67ID:p+sO9/0D ライフタイム自体はコードが書かれた時点で決まってる
それがおかしくないか判定するときのヒントがライフタイム注釈
それがおかしくないか判定するときのヒントがライフタイム注釈
352デフォルトの名無しさん
2023/07/08(土) 20:22:47.98ID:mgDMV1th >>349
はい、rustは型推論をしないのは知ってます
しかしそれが何故なのか分からないんです
例えばHaskellなら一才の型注釈は省略が可能です
全ての型は全てコンパイラによって推論され、型注釈を入れてコンパイルできるプログラムは型注釈を全消ししても(ただし効率のためにmtoplevel monomorphism restrictionというシステムが邪魔してくれますけどそれ外せば)必ずコンパイラが正しく推論してコンパイルしてくれます、その推論メカニズムの理論的根拠は論文として寄稿されネットにいくらでも転がってます
知りたいのはRustのライフタイム注釈は推論して省略可能だけどいつもいつも省略可能なわけではないのは、
・そもそもいつでも推論可能なわけではないので基本宣言させる、コンパイラが推論可能な限られたケースでは可能としている
・いつでも推論可能(私にはそう思える)のだけど効率を考えてそうしない(Haskell の toplevel monomorphic restrictionと同じように)
のどっちなんだろうと
そしてその話をtegulationに求めないのは必ずしもregulationは最新の研究を反映しているわけではないからです
つまり“現在のregulatinでは推論しない”という現状が必ずしも“そもそも推論などできない”を必ずしも意味しないからです
私ちょっとプログラミング言語論齧ってた事がありましてその辺の理論的背景どうなってるのかちょっと知りたいもので
はい、rustは型推論をしないのは知ってます
しかしそれが何故なのか分からないんです
例えばHaskellなら一才の型注釈は省略が可能です
全ての型は全てコンパイラによって推論され、型注釈を入れてコンパイルできるプログラムは型注釈を全消ししても(ただし効率のためにmtoplevel monomorphism restrictionというシステムが邪魔してくれますけどそれ外せば)必ずコンパイラが正しく推論してコンパイルしてくれます、その推論メカニズムの理論的根拠は論文として寄稿されネットにいくらでも転がってます
知りたいのはRustのライフタイム注釈は推論して省略可能だけどいつもいつも省略可能なわけではないのは、
・そもそもいつでも推論可能なわけではないので基本宣言させる、コンパイラが推論可能な限られたケースでは可能としている
・いつでも推論可能(私にはそう思える)のだけど効率を考えてそうしない(Haskell の toplevel monomorphic restrictionと同じように)
のどっちなんだろうと
そしてその話をtegulationに求めないのは必ずしもregulationは最新の研究を反映しているわけではないからです
つまり“現在のregulatinでは推論しない”という現状が必ずしも“そもそも推論などできない”を必ずしも意味しないからです
私ちょっとプログラミング言語論齧ってた事がありましてその辺の理論的背景どうなってるのかちょっと知りたいもので
353デフォルトの名無しさん
2023/07/08(土) 20:36:53.33ID:7vcICBIU お前のお気持ち表明はいらん
354デフォルトの名無しさん
2023/07/08(土) 20:42:31.52ID:gK2vRDVX >>352
Rustは型推論します
非常に便利です
ただし間違った型推論の連鎖を起こす混乱やニワタマ問題などを避けるために
関数の引数値と返値については(ジェネリックを除き)
敢えてプログラマーに明確に型宣言させています
つまり型推論が可能な領域はもっと広いけど
意図的にRustは一定の範囲内に抑えていることになります
ライフタイム注釈についても同様で
推論可能な領域は確かに存在するけれど
意図的にRustは推論をせずに機械的な省略補完ルールの適用のみに抑えていることになります
Rustは型推論します
非常に便利です
ただし間違った型推論の連鎖を起こす混乱やニワタマ問題などを避けるために
関数の引数値と返値については(ジェネリックを除き)
敢えてプログラマーに明確に型宣言させています
つまり型推論が可能な領域はもっと広いけど
意図的にRustは一定の範囲内に抑えていることになります
ライフタイム注釈についても同様で
推論可能な領域は確かに存在するけれど
意図的にRustは推論をせずに機械的な省略補完ルールの適用のみに抑えていることになります
355デフォルトの名無しさん
2023/07/08(土) 20:52:23.19ID:gK2vRDVX そして明確に型宣言することが基本である関数の引数値と返値についても
ジェネリックな型とそのトレイト境界による制限を用いることで個別の型宣言をさけることができるし
さらに型宣言の位置に「impl トレイト名」という形で静的なopaqueな型指定をしたり
「dyn トレイト名」という形で動的な型指定をすることで
幅広い型を受け付ける関数を書くこともできたり
複雑な型を返す時にそれを明示せずに済むなど
Rustでは型推論とは別のアプローチで利便性と可読性の向上に役立っています
ジェネリックな型とそのトレイト境界による制限を用いることで個別の型宣言をさけることができるし
さらに型宣言の位置に「impl トレイト名」という形で静的なopaqueな型指定をしたり
「dyn トレイト名」という形で動的な型指定をすることで
幅広い型を受け付ける関数を書くこともできたり
複雑な型を返す時にそれを明示せずに済むなど
Rustでは型推論とは別のアプローチで利便性と可読性の向上に役立っています
356デフォルトの名無しさん
2023/07/08(土) 21:00:55.19ID:p+sO9/0D ChatGPTみたいなレスだな…
357デフォルトの名無しさん
2023/07/08(土) 21:01:52.49ID:CoFTghq/ >>354
そうですね
一般的には“コンパイラにできないわけではない”場合でもユーザーにあえて“注釈をつけさせる”事が非常に便利な場合があります
多分Rustのライフタイム注釈もそれだと思ってはいるんですけど、ほんとにそれで間違い無いのか文書でまとめられたものがないか確認したいんです
HaskellやRustの型推論システムはもう論文でいくつか読んだ事があるのでそのメカニズムもまぁわかります
Rustのライフタイム注釈の場合も多分同じ事ができそうだとは思ってるんですけど敢えてか何故かやってない、それが“できそう”と思ってる自分の勘違いなのか、やはり“できるけど敢えてやってない”のか、あるいは現時点の最新研究でどこまではできることが確認されているのかとかその辺の情報持ってる人いないかなと
そうですね
一般的には“コンパイラにできないわけではない”場合でもユーザーにあえて“注釈をつけさせる”事が非常に便利な場合があります
多分Rustのライフタイム注釈もそれだと思ってはいるんですけど、ほんとにそれで間違い無いのか文書でまとめられたものがないか確認したいんです
HaskellやRustの型推論システムはもう論文でいくつか読んだ事があるのでそのメカニズムもまぁわかります
Rustのライフタイム注釈の場合も多分同じ事ができそうだとは思ってるんですけど敢えてか何故かやってない、それが“できそう”と思ってる自分の勘違いなのか、やはり“できるけど敢えてやってない”のか、あるいは現時点の最新研究でどこまではできることが確認されているのかとかその辺の情報持ってる人いないかなと
358デフォルトの名無しさん
2023/07/08(土) 21:16:10.37ID:p+sO9/0D いやいや
関数を使う人間側が推論不可だろ
関数を使う人間側が推論不可だろ
359デフォルトの名無しさん
2023/07/08(土) 22:06:00.43ID:7vcICBIU NGでスッキリ
360デフォルトの名無しさん
2023/07/08(土) 22:07:59.43ID:p+sO9/0D ググったら理由が出てきた
基本的に関数シグネチャが変わるような事態を避けたいようだ
関数内部を変更したら推論されるライフタイムを含んだシグネチャも変わってしまう事態が起こりうる
変更で呼び出した側であちこちにボコボココンパイルエラーが出るのはプログラマ的にうれしくないので避けてる
呼び出し規約は人間が決めてそれをコードを書く側が守ると言うこと
基本的に関数シグネチャが変わるような事態を避けたいようだ
関数内部を変更したら推論されるライフタイムを含んだシグネチャも変わってしまう事態が起こりうる
変更で呼び出した側であちこちにボコボココンパイルエラーが出るのはプログラマ的にうれしくないので避けてる
呼び出し規約は人間が決めてそれをコードを書く側が守ると言うこと
361デフォルトの名無しさん
2023/07/08(土) 22:12:52.52ID:0dKdZ1v3 Rustは関数単位で色んなチェックしてるけど
その関数が「どこでどう使われているか」を材料にして検証とか推論はしないし
最初からそんなつもりはないと思う
関数を全部インライン展開して1つのmain関数にできれば理論的には全部推論できそうだけど
関数ポインタとかdyn traitを使った動的な呼び出しが絡むと多分無理
Haskellレベルの推論は動的な呼び出しが存在しない参照透過性?が前提にあるはず
その関数が「どこでどう使われているか」を材料にして検証とか推論はしないし
最初からそんなつもりはないと思う
関数を全部インライン展開して1つのmain関数にできれば理論的には全部推論できそうだけど
関数ポインタとかdyn traitを使った動的な呼び出しが絡むと多分無理
Haskellレベルの推論は動的な呼び出しが存在しない参照透過性?が前提にあるはず
362デフォルトの名無しさん
2023/07/08(土) 22:13:25.29ID:p+sO9/0D 推論されたライフタイムを含むシグネチャと人間側が思ってる必要なシグネチャ(ライフタイム)と違うことが起こりうる
例えば他人が作ったライブラリのコードが変わって自分のところに波及してきたら嫌だろ?
従来のはそのままで別のシグネチャの関数を作れと思うだろ?
例えば他人が作ったライブラリのコードが変わって自分のところに波及してきたら嫌だろ?
従来のはそのままで別のシグネチャの関数を作れと思うだろ?
363デフォルトの名無しさん
2023/07/08(土) 22:19:22.93ID:+KTtE1Ht イヤ、ライふタイム注釈の推論に“使われる場所”まで検証する必要はないですよ
関数の返り値を作成してる右辺値を調べればそれで十分だと思います
その単位で返り値のライフタイム注釈が決定されれは、返り値が解放後に参照されるエラーが発生するか否かはその返り値を利用する呼び出し側関数のコンパイル時点で検出できると思います
関数の返り値を作成してる右辺値を調べればそれで十分だと思います
その単位で返り値のライフタイム注釈が決定されれは、返り値が解放後に参照されるエラーが発生するか否かはその返り値を利用する呼び出し側関数のコンパイル時点で検出できると思います
364デフォルトの名無しさん
2023/07/08(土) 22:20:56.17ID:ugEehqjn >>332
論文を探す前にチュートリアルを読みましょう
論文を探す前にチュートリアルを読みましょう
365デフォルトの名無しさん
2023/07/08(土) 22:24:17.70ID:p+sO9/0D せっかくググって答えを見つけてきたのにガン無視されてる…
366デフォルトの名無しさん
2023/07/08(土) 22:24:38.70ID:892HfYmC いい感じにゴミ集積所になりつつあるな
367デフォルトの名無しさん
2023/07/08(土) 22:27:06.38ID:7vcICBIU ゴミクズ荒らすなよ
368デフォルトの名無しさん
2023/07/08(土) 22:30:55.58ID:p+sO9/0D 最初は実質ライフタイムの使い方がわからないと言うのが徐々に軌道修正されて変なところまでたどり着いた
369デフォルトの名無しさん
2023/07/08(土) 22:33:04.65ID:5IIZUoQE >>382
コンパイラが推論する型と人間が想定する型が違うなんてもちろん日常茶飯事ですね
Haskell使ってて:tで推論した型表示させたら「うおーなんじゃこりゃ」と思うことなんてしょっちゅうです
コンパイラは右辺値(haskellでは表現)が提供可能な“最大に一般的な型”を与えようとします、そしてその「提供可能な最大の多層型」の中に関数の利用者が要求する利用可能ないずれかの型が含まれるかどうかを確認して可能ならその単相型を導出し、無理ならコンパイルエラーを吐きます
そして同じメカニズムは多分Rustのライフタイム注釈でも可能なはずです
しかしいくつか当たったRustのライフタイム注釈の解説文書のなかにはあたかも「それは不可能なのでプログラマに注釈をつけさせる」という類の説明がついてることが多いんです
それ見てホントかと、しかもその手の文書についてる例では明らかに推論可能でそれくらいコンパイラが自分でできるやろというくだらない作業をプログラマに強いてるだけの例がついてる事が多いんですよ
それがRustの“仕様”であるならそれはそれでいいんですけど、それを強いる理由が「推論することが不可能だから」と説明してるのがおかしいなと、何か自分の気付いてない勘違いしてるのかなと
コンパイラが推論する型と人間が想定する型が違うなんてもちろん日常茶飯事ですね
Haskell使ってて:tで推論した型表示させたら「うおーなんじゃこりゃ」と思うことなんてしょっちゅうです
コンパイラは右辺値(haskellでは表現)が提供可能な“最大に一般的な型”を与えようとします、そしてその「提供可能な最大の多層型」の中に関数の利用者が要求する利用可能ないずれかの型が含まれるかどうかを確認して可能ならその単相型を導出し、無理ならコンパイルエラーを吐きます
そして同じメカニズムは多分Rustのライフタイム注釈でも可能なはずです
しかしいくつか当たったRustのライフタイム注釈の解説文書のなかにはあたかも「それは不可能なのでプログラマに注釈をつけさせる」という類の説明がついてることが多いんです
それ見てホントかと、しかもその手の文書についてる例では明らかに推論可能でそれくらいコンパイラが自分でできるやろというくだらない作業をプログラマに強いてるだけの例がついてる事が多いんですよ
それがRustの“仕様”であるならそれはそれでいいんですけど、それを強いる理由が「推論することが不可能だから」と説明してるのがおかしいなと、何か自分の気付いてない勘違いしてるのかなと
370デフォルトの名無しさん
2023/07/08(土) 22:34:33.60ID:p+sO9/0D371デフォルトの名無しさん
2023/07/08(土) 22:34:40.18ID:7vcICBIU わかったから消えろ
372デフォルトの名無しさん
2023/07/08(土) 22:38:51.77ID:p+sO9/0D 完全に推論可能かは知らないが実害があるのでそもそも実装されていない
ただあからさまな場合は省略可能
コンパイラも楽だろ
戻り値のライフタイム覚えておいて型を返す場所でチェックするだけだし
ただあからさまな場合は省略可能
コンパイラも楽だろ
戻り値のライフタイム覚えておいて型を返す場所でチェックするだけだし
373デフォルトの名無しさん
2023/07/08(土) 22:51:32.65ID:5IIZUoQE >>372
そうですね、多分コンパイラが楽だからがホントの理由な気がします
推論するには最低限その関数の関数定義が終了する時点まで読まなければならないですからね
しかし実際には関数の終わりの時点まで読んだ段階で完全に決定してその1回目の読み、ワンバス目で終わる気はします、少なくともコンパイラの世界の暗黙の了解「線形オーダーで解決しなくてはいけない」はクリアするとは思います、(勘ですけど)
まぁそれでも「必ず宣言するように、異論は認めない」が仕様ならそれはそれで結構なんですけどそれを「できないから宣言するしかないんです」という説明はある程度以上を勉強するつもりの人が読むと多分混乱招くと思うんですよ
初学者が余計な気を回さないように「できない、信じろ、なので宣言しろ」は初学者向けの説明でありかなとは思わないではないんですけどね
そこでちゃんとした論文ないもんかと
そうですね、多分コンパイラが楽だからがホントの理由な気がします
推論するには最低限その関数の関数定義が終了する時点まで読まなければならないですからね
しかし実際には関数の終わりの時点まで読んだ段階で完全に決定してその1回目の読み、ワンバス目で終わる気はします、少なくともコンパイラの世界の暗黙の了解「線形オーダーで解決しなくてはいけない」はクリアするとは思います、(勘ですけど)
まぁそれでも「必ず宣言するように、異論は認めない」が仕様ならそれはそれで結構なんですけどそれを「できないから宣言するしかないんです」という説明はある程度以上を勉強するつもりの人が読むと多分混乱招くと思うんですよ
初学者が余計な気を回さないように「できない、信じろ、なので宣言しろ」は初学者向けの説明でありかなとは思わないではないんですけどね
そこでちゃんとした論文ないもんかと
374デフォルトの名無しさん
2023/07/08(土) 22:58:05.15ID:Yg5OnBqY もしかして、クロージャなら式から推論してるのかな
関数のシグネチャはフルで書かなきゃいけないってだけで
関数のシグネチャはフルで書かなきゃいけないってだけで
375デフォルトの名無しさん
2023/07/08(土) 23:59:50.01ID:PWdcv54p クロージャは型推論してくれるからそういう用途に使える
集合としてみてもfnよりFnを満たす集合の方が大きい
逆にクロージャでも型指定を要求されることもある
集合としてみてもfnよりFnを満たす集合の方が大きい
逆にクロージャでも型指定を要求されることもある
376デフォルトの名無しさん
2023/07/09(日) 02:18:11.28ID:/JDwe3nB いずれにせよ、Rustは、自由と民主主義をベースとする西側諸国
の価値観には合わず、中国と同じ社会主義的な東側諸国の価値観
に合っている。この言語が成功することはIT産業が壊滅状態になる
ことを意味する。
の価値観には合わず、中国と同じ社会主義的な東側諸国の価値観
に合っている。この言語が成功することはIT産業が壊滅状態になる
ことを意味する。
377デフォルトの名無しさん
2023/07/09(日) 02:21:16.31ID:/JDwe3nB 自分達の作った言語を普及させるためには、無料にして、他の業者
がどれだけ迷惑を被っても構わないというスタンスをとる。
このことは、世界の中心でありもっとも進んだ国であるところの
中国の価値観を広めるためには、人民の犠牲もいとわない、
他国がどれだけ苦しんでも構わない、むしろ歓迎する、などという
中国のスタンスと共通する。
がどれだけ迷惑を被っても構わないというスタンスをとる。
このことは、世界の中心でありもっとも進んだ国であるところの
中国の価値観を広めるためには、人民の犠牲もいとわない、
他国がどれだけ苦しんでも構わない、むしろ歓迎する、などという
中国のスタンスと共通する。
378デフォルトの名無しさん
2023/07/09(日) 02:24:03.48ID:/JDwe3nB もっとも優れた政治経済思想であると事の中国流社会主義を
世界に広めるためには、どんな犠牲もいとわず、どんな
人権侵害も環境破壊もいとわず、経済ルールを無視して独自
ルールを徹底し、言論統制し本当の情報を流さない、
という中国のスタンスと、Rust信者達が行っているスタンスは
そっくりである。
世界に広めるためには、どんな犠牲もいとわず、どんな
人権侵害も環境破壊もいとわず、経済ルールを無視して独自
ルールを徹底し、言論統制し本当の情報を流さない、
という中国のスタンスと、Rust信者達が行っているスタンスは
そっくりである。
379デフォルトの名無しさん
2023/07/09(日) 02:26:49.94ID:/JDwe3nB 中国人は洗脳の結果、自分達が世界最高の政治体制を持つ偉大な
国家であり、その思想と政治体制を世界中に教えてあげなければ
ならないと思っている。
そしてアジアの最高の先進国は中国であり、日本より上回っている
と勝手に思い込んでいる。
この状況とRust信者の脳内心理はそっくりである。
国家であり、その思想と政治体制を世界中に教えてあげなければ
ならないと思っている。
そしてアジアの最高の先進国は中国であり、日本より上回っている
と勝手に思い込んでいる。
この状況とRust信者の脳内心理はそっくりである。
380デフォルトの名無しさん
2023/07/09(日) 04:44:46.78ID:KDx9Q8HN >>376
IT産業の壊滅とか最高じゃん。一番損をするのは覇権国のアメリカ、一番得するのは出遅れた日本だからねぇ。
ちなみにOSSとITの民主化は中国などのレッドチームを追い詰めることに繋がると思うぞ。お得意の世論統制が難しくなるからね。
IT産業の壊滅とか最高じゃん。一番損をするのは覇権国のアメリカ、一番得するのは出遅れた日本だからねぇ。
ちなみにOSSとITの民主化は中国などのレッドチームを追い詰めることに繋がると思うぞ。お得意の世論統制が難しくなるからね。
381デフォルトの名無しさん
2023/07/09(日) 07:41:46.99ID:xOIWVRNM >>376
お前誰からも必要とされてないから消えて
お前誰からも必要とされてないから消えて
382デフォルトの名無しさん
2023/07/09(日) 07:46:09.21ID:4eXZ8lBD383デフォルトの名無しさん
2023/07/09(日) 08:32:03.98ID:kMeOQgn0 マシな流れからまたクソな流れになってきそうだな
384デフォルトの名無しさん
2023/07/09(日) 09:19:07.63ID:KDx9Q8HN RustはDynamicRustみたいな感じのRustコンパイラ上で動くスクリプト言語が有っても面白いかもな。
385デフォルトの名無しさん
2023/07/09(日) 11:03:32.10ID:BH58EEOI 頭のおかしいネトウヨがアンチrust側で良かった
386デフォルトの名無しさん
2023/07/09(日) 11:23:19.56ID:KDx9Q8HN387デフォルトの名無しさん
2023/07/09(日) 12:20:32.66ID:r53YpIy/388デフォルトの名無しさん
2023/07/09(日) 13:41:10.77ID:3PS2GvjM 効きすぎだろw
389デフォルトの名無しさん
2023/07/09(日) 14:20:00.41ID:5sT0qDGq Rustなら失敗しなかったと思う割とマジで
https://www.youtube.com/watch?v=XDy0dqZrbN4
https://www.youtube.com/watch?v=XDy0dqZrbN4
390デフォルトの名無しさん
2023/07/09(日) 14:21:39.84ID:jB1Be+SF だれもRustの使用を強制してないのに強制されてると思い込んでるあたりが危険だな…
どこかの大臣が「Rustの利便性向上のためにC++コンパイラを廃止します」とか言い出したら騒いでもいいけど
どこかの大臣が「Rustの利便性向上のためにC++コンパイラを廃止します」とか言い出したら騒いでもいいけど
391デフォルトの名無しさん
2023/07/09(日) 14:30:11.62ID:5sT0qDGq >>337
Rustが安全であるという考え方が最も危険である
Rustが安全であるという考え方が最も危険である
392デフォルトの名無しさん
2023/07/09(日) 15:40:54.31ID:LeWNN8mE >>308
それが本当なら水虫言語じゃん
それが本当なら水虫言語じゃん
393デフォルトの名無しさん
2023/07/09(日) 15:57:49.89ID:4eXZ8lBD 糖質だから仕方ない
誰からも必要とされてないことすら気がつかないのだから
誰からも必要とされてないことすら気がつかないのだから
394デフォルトの名無しさん
2023/07/09(日) 16:23:35.82ID:JjLC50DJ RustがC/C++に似ているとか、構文が便利だとか本気で思っている
方が統合失調症だ。病院で見てもらえ。
方が統合失調症だ。病院で見てもらえ。
395デフォルトの名無しさん
2023/07/09(日) 18:47:10.60ID:KDx9Q8HN Rustが爆発的に飛躍するには何が足りないの?
396デフォルトの名無しさん
2023/07/09(日) 19:01:36.68ID:/ahYiZL6 学習コスト低減、ライブラリ作成支援
何よりもRustの案件・求人の増加
何よりもRustの案件・求人の増加
397デフォルトの名無しさん
2023/07/09(日) 19:08:06.34ID:4eXZ8lBD 誰からも必要とされてない人
今日もよく喋るな
今日もよく喋るな
398デフォルトの名無しさん
2023/07/09(日) 19:43:24.19ID:JWK25eUy せいぜい、人から必要とされまくって楽しい人生を謳歌しろよ。
ww
ww
399デフォルトの名無しさん
2023/07/09(日) 20:02:58.84ID:KDx9Q8HN 行列積ってマルチスレッドで実装すべき?それとも、キャッシュやコピーを減らすためにシングルスレッドの方が良いのかな?
400デフォルトの名無しさん
2023/07/09(日) 20:44:21.03ID:To34JzcQ GPUに投げるべき
401デフォルトの名無しさん
2023/07/09(日) 20:46:14.43ID:To34JzcQ 真面目な話するとプロファイル取ってサイズで分岐すればいいんじゃないすかね
402デフォルトの名無しさん
2023/07/09(日) 21:34:02.14ID:xOIWVRNM >>399
parallel=trueみたいなオプションをどこかに書けばスレッド使うようにする
parallel=trueみたいなオプションをどこかに書けばスレッド使うようにする
403デフォルトの名無しさん
2023/07/09(日) 21:55:27.03ID:KDx9Q8HN >>400
GPUを使った並列演算処理を提供するRustのクレートで良いのは何?できれば、GPUのデバイスによらずに操作が抽象化されてるものが良いな。
GPUを使った並列演算処理を提供するRustのクレートで良いのは何?できれば、GPUのデバイスによらずに操作が抽象化されてるものが良いな。
404デフォルトの名無しさん
2023/07/09(日) 23:36:02.19ID:wAJ5czLT 四次元ポケットがあるかのような話だな…
405デフォルトの名無しさん
2023/07/09(日) 23:43:54.14ID:e+9JuWWy C++にはあるんじゃね?
406デフォルトの名無しさん
2023/07/09(日) 23:57:17.50ID:KDx9Q8HN rust-gpuとかいうクレートはどうなの?これはcudaがないと動作しない感じ?
407デフォルトの名無しさん
2023/07/10(月) 00:29:46.98ID:fziS9tUP CUDAとかOpenCLとか書かれているから、CUDAでなくても動くんじゃね?
408デフォルトの名無しさん
2023/07/10(月) 01:25:56.97ID:h4dg/BEy GPUは考えなくて良いと思う
まずはCPUのシングルノードで性能を出すことが大事
GPU使えるなら現状は生のCUDAやpytorch使うので
まずはCPUのシングルノードで性能を出すことが大事
GPU使えるなら現状は生のCUDAやpytorch使うので
409デフォルトの名無しさん
2023/07/10(月) 02:08:14.76ID:gFGbWr8l どうしてOSSの人って自分が良い事してると思ってるのか。
競合企業には悪魔なのに。
競合企業には悪魔なのに。
410デフォルトの名無しさん
2023/07/10(月) 08:11:40.21ID:ZGeN7ohp 慈善でやってると思ってる阿呆
411デフォルトの名無しさん
2023/07/10(月) 10:33:54.78ID:Xcne1xaV >>408
現状ではnumpyではCPUってどれくらい効率的に使用できてるの?
現状ではnumpyではCPUってどれくらい効率的に使用できてるの?
412デフォルトの名無しさん
2023/07/10(月) 11:38:27.06ID:ikEhHQu8413デフォルトの名無しさん
2023/07/10(月) 11:50:27.92ID:g81ZTmTB >>409
お,無根拠なOSS批判だ
お,無根拠なOSS批判だ
414デフォルトの名無しさん
2023/07/10(月) 12:17:50.81ID:6RMJuu71 >>320
「料理を自由にやられたら料理人が困るだろ!」
「レシピを共有するやつはカルトだ!左翼だ!」
って言ってるようなもの
料理人は家庭では難しい料理をつくるなり
サービスで付加価値をつけるなり
マネタイズ方法はいくらでもある
「料理を自由にやられたら料理人が困るだろ!」
「レシピを共有するやつはカルトだ!左翼だ!」
って言ってるようなもの
料理人は家庭では難しい料理をつくるなり
サービスで付加価値をつけるなり
マネタイズ方法はいくらでもある
415デフォルトの名無しさん
2023/07/10(月) 13:15:01.70ID:5iSLO28B >>356
ChatGPTωには無理ωωω
ChatGPTωには無理ωωω
416デフォルトの名無しさん
2023/07/10(月) 13:36:14.40ID:5iSLO28B417デフォルトの名無しさん
2023/07/10(月) 13:37:15.38ID:5iSLO28B >>400
それ
それ
418デフォルトの名無しさん
2023/07/10(月) 13:38:07.30ID:5iSLO28B419デフォルトの名無しさん
2023/07/10(月) 15:10:35.46ID:h4dg/BEy >>411
君の言う効率的の意味が単純に速度ということなら
全てin-place演算子かつ同じメモリを使い回すような書き方をすればキャッシュヒット率が高くなり
ベクトル演算を使うので生のCで書くより速い
rustでこの速度と同等まで持っていくのはなかなかしんどいが
非同期IOやスレッドを組み合わせることで
大規模な演算では上をいける可能性はなくはない
君の言う効率的の意味が単純に速度ということなら
全てin-place演算子かつ同じメモリを使い回すような書き方をすればキャッシュヒット率が高くなり
ベクトル演算を使うので生のCで書くより速い
rustでこの速度と同等まで持っていくのはなかなかしんどいが
非同期IOやスレッドを組み合わせることで
大規模な演算では上をいける可能性はなくはない
420デフォルトの名無しさん
2023/07/10(月) 15:36:45.51ID:Y/mmaJD9 例えばメモリに乗らないようなクソでかい行列の積が上げられる
MMLなどの学習時に使われる多次元配列は普通にやるとメモリに乗らないので
ファイルに吐くことになる
その時非同期IOやスレッドを駆使できるrustの方が速くなるのではないかと思う
MMLなどの学習時に使われる多次元配列は普通にやるとメモリに乗らないので
ファイルに吐くことになる
その時非同期IOやスレッドを駆使できるrustの方が速くなるのではないかと思う
421デフォルトの名無しさん
2023/07/10(月) 16:19:14.48ID:ikEhHQu8 普通にやるとメモリに乗らないので、モンスターマシンを使う、とかじゃないん。
422デフォルトの名無しさん
2023/07/10(月) 16:28:12.83ID:K2YeESBC ファイルなら無限大
423デフォルトの名無しさん
2023/07/10(月) 16:33:34.04ID:h4dg/BEy424デフォルトの名無しさん
2023/07/10(月) 20:18:27.95ID:Gb5m/Q1F Rustで5ちゃんみたいな掲示板作れないの?
425デフォルトの名無しさん
2023/07/10(月) 20:35:07.61ID:B9xklitj 当然作れるけど言語に関係なく
無数にSNSがある状況で宣伝資本がなければ集客が無理
さらに犯罪予告から怒涛の妨害書き込みへの対処が面倒
無数にSNSがある状況で宣伝資本がなければ集客が無理
さらに犯罪予告から怒涛の妨害書き込みへの対処が面倒
426デフォルトの名無しさん
2023/07/10(月) 21:19:10.81ID:HuRNpvAr とりあえずrust純正の多次元配列の実装の以下の感じでやって行こうと思う。
シングルスレッドでの多次元配列の演算の実装
⬇
CPUベースのマルチスレッド(rayonとtokioを主に使用)での演算の最適化の実装
⬇
requires_gradの実装(これもマルチスレッドでの計算最適化を適用。)
⬇
余裕があればGPUベースの並列演算機能も実装。これはできればcudaがなくともGPUの種類によらない計算ができるようにしたい。
シングルスレッドでの多次元配列の演算の実装
⬇
CPUベースのマルチスレッド(rayonとtokioを主に使用)での演算の最適化の実装
⬇
requires_gradの実装(これもマルチスレッドでの計算最適化を適用。)
⬇
余裕があればGPUベースの並列演算機能も実装。これはできればcudaがなくともGPUの種類によらない計算ができるようにしたい。
427デフォルトの名無しさん
2023/07/10(月) 22:41:22.83ID:HuRNpvAr Numpyは多次元配列の中身を1次元配列に変換して持っているけど、多次元インデックスから内部の配列の対応するインデックスを一々計算してるのかなぁ?
428デフォルトの名無しさん
2023/07/10(月) 23:45:11.15ID:nKw3UH6a 行とか列に沿って数値処理する計算ならインデクスを一定間隔でずらせばいいでしょ
ランダムアクセスならどうしようもないけど
ランダムアクセスならどうしようもないけど
429デフォルトの名無しさん
2023/07/11(火) 00:08:55.75ID:hvAV/O5o430デフォルトの名無しさん
2023/07/11(火) 00:10:24.53ID:hvAV/O5o それと、数100Gバイト 位なら、スパコンならRAMにおいて
問題ないだろう。
問題ないだろう。
431デフォルトの名無しさん
2023/07/11(火) 00:13:54.90ID:ZJ6seY0P M*Nの巨大なメモリを一気に確保できる範囲内ならばそれが可能だけど無理な場合もありそう
例えばM=N=100万とすると
1要素64bitとして1列分は64MBだけど
行列全体は64TBだね
例えばM=N=100万とすると
1要素64bitとして1列分は64MBだけど
行列全体は64TBだね
432デフォルトの名無しさん
2023/07/11(火) 00:21:06.99ID:hvAV/O5o >>414
それとはかなり違う。
料理の場合:
1. 本当に優れた料理人のレシピは公開されて無い。
(もし公開されている、とされていても、本物かどうか分からない。)
2. レシピがあっても、腕が無いと作れない。
3. 仮に作れても、手間がかかるので料金を払ってでも、作ってもらって
食べたい人が大勢いる。
ソフトウェアの場合、特に 3 の部分が全く違っていて、
簡単にコピーできてしまう特徴がある。
それとはかなり違う。
料理の場合:
1. 本当に優れた料理人のレシピは公開されて無い。
(もし公開されている、とされていても、本物かどうか分からない。)
2. レシピがあっても、腕が無いと作れない。
3. 仮に作れても、手間がかかるので料金を払ってでも、作ってもらって
食べたい人が大勢いる。
ソフトウェアの場合、特に 3 の部分が全く違っていて、
簡単にコピーできてしまう特徴がある。
433デフォルトの名無しさん
2023/07/11(火) 00:28:20.56ID:hvAV/O5o434デフォルトの名無しさん
2023/07/11(火) 02:04:14.13ID:pWql3Z3H >>429
複数ノード使えばなんの問題もない
今のスパコンはほぼそれ
俺が普段やってる流体や量子化学計算も
32コア程度のマシンを複数台で1週間計算したりしてる
今のpytorchはasync使ってないから行列計算を並行してできるところも全てブロックしてる
GPUへの転送もブロックする処理をしてる
シングルノードで超高性能のGPUで力技で計算するというのは普通の企業では難しい
クラウド使っても費用が半端ない
CPUでの高速化を実現しコストを下げることができれば次のステージへ行ける
なんか運営でゴタゴタが起きてるらしく
スレの読み込みができなくなったから改善しないと今後は書き込まないかも
複数ノード使えばなんの問題もない
今のスパコンはほぼそれ
俺が普段やってる流体や量子化学計算も
32コア程度のマシンを複数台で1週間計算したりしてる
今のpytorchはasync使ってないから行列計算を並行してできるところも全てブロックしてる
GPUへの転送もブロックする処理をしてる
シングルノードで超高性能のGPUで力技で計算するというのは普通の企業では難しい
クラウド使っても費用が半端ない
CPUでの高速化を実現しコストを下げることができれば次のステージへ行ける
なんか運営でゴタゴタが起きてるらしく
スレの読み込みができなくなったから改善しないと今後は書き込まないかも
435デフォルトの名無しさん
2023/07/11(火) 02:39:20.70ID:ZJ6seY0P >>434
専ブラ何使ってる?
各種スレ読み込み方法見つかってるよ
例えばchmateならばこうするらしい
設定メニュー→URLを指定して開く
http://mevius.5Ch.net/tech/
※注意 5chが大文字で5Ch
専ブラ何使ってる?
各種スレ読み込み方法見つかってるよ
例えばchmateならばこうするらしい
設定メニュー→URLを指定して開く
http://mevius.5Ch.net/tech/
※注意 5chが大文字で5Ch
436デフォルトの名無しさん
2023/07/11(火) 03:35:24.17ID:pWql3Z3H とりあえずスクリプトで書き込めるので雑に書く
シングルノードで性能を出すのは意外と難しい
コア数=スレッドという単純なものではないから
OSのスレッドや他のアプリも多数のスレッドが動いている
コア数を最大限活かすというのはとにかく計測することでしか最適解を出せない
最近のCPUはハイパースレッディングという技術があり
これを使うと各コアで一つ以上のスレッドを動かすことができる
このようにCPUはまだまだ無限の可能性を秘めている
ベクトル演算もこれまで全く活用されてこなかった
さらに非同期IOを組み合わせればさらに待ち時間を減らせる
いまCPUが熱い
シングルノードで性能を出すのは意外と難しい
コア数=スレッドという単純なものではないから
OSのスレッドや他のアプリも多数のスレッドが動いている
コア数を最大限活かすというのはとにかく計測することでしか最適解を出せない
最近のCPUはハイパースレッディングという技術があり
これを使うと各コアで一つ以上のスレッドを動かすことができる
このようにCPUはまだまだ無限の可能性を秘めている
ベクトル演算もこれまで全く活用されてこなかった
さらに非同期IOを組み合わせればさらに待ち時間を減らせる
いまCPUが熱い
437デフォルトの名無しさん
2023/07/11(火) 07:16:15.54ID:VTWwffnW コピペルナーV6
438デフォルトの名無しさん
2023/07/11(火) 11:18:17.20ID:heSsZz8c >>433
その能力では重力波観測出来ないな
その能力では重力波観測出来ないな
439デフォルトの名無しさん
2023/07/11(火) 11:34:55.16ID:heSsZz8c440デフォルトの名無しさん
2023/07/11(火) 16:25:11.26ID:pWql3Z3H テスト
441デフォルトの名無しさん
2023/07/11(火) 17:19:00.53ID:QLD1ZTwR442デフォルトの名無しさん
2023/07/11(火) 18:29:18.59ID:dW46lKMj443デフォルトの名無しさん
2023/07/11(火) 19:54:59.41ID:UcX6nu3h jane styleはOSSをクローズにしてやりたい放題やって
こんなに迷惑をかけている
こんなに迷惑をかけている
444デフォルトの名無しさん
2023/07/11(火) 20:33:49.40ID:FPwSRARi 確かこんな経緯だっけ?
Janeは元々オープンソースのおかげで便利な特徴ある亜種が豊富にある閲覧ブラウザ
↓
Jane Styleはその亜種の中の一つだがソース非公開
↓
当時2ch/5chは各スレのデータが*.datファイルとしてオープンデータなAPIだったので自由に多種多様な閲覧ブラウザが作られていた
↓
ところがある時Jane Style側が5chにクローズドなAPI化で広告必須にして儲ける提案を持ちかけた
↓
Jane Style側が管轄する5ch APIが誕生しJane Style側と契約しない多くのブラウザが締め出されStyle以外の各種Janeは全滅
↓
数年間経過
↓
Jane Style側が5ch APIを突如閉鎖して新掲示板Talkへ誘導
↓
5chは対抗処置として各スレの*.datファイルを再びオープンデータとし自由な閲覧ブラウザの参入を呼び掛け
Janeは元々オープンソースのおかげで便利な特徴ある亜種が豊富にある閲覧ブラウザ
↓
Jane Styleはその亜種の中の一つだがソース非公開
↓
当時2ch/5chは各スレのデータが*.datファイルとしてオープンデータなAPIだったので自由に多種多様な閲覧ブラウザが作られていた
↓
ところがある時Jane Style側が5chにクローズドなAPI化で広告必須にして儲ける提案を持ちかけた
↓
Jane Style側が管轄する5ch APIが誕生しJane Style側と契約しない多くのブラウザが締め出されStyle以外の各種Janeは全滅
↓
数年間経過
↓
Jane Style側が5ch APIを突如閉鎖して新掲示板Talkへ誘導
↓
5chは対抗処置として各スレの*.datファイルを再びオープンデータとし自由な閲覧ブラウザの参入を呼び掛け
445デフォルトの名無しさん
2023/07/11(火) 22:45:13.05ID:IUx5aYIs446デフォルトの名無しさん
2023/07/11(火) 22:55:33.99ID:0HX/1I5L 5chは終わりだな
talkに移住したほうが良さげ
talkに移住したほうが良さげ
447デフォルトの名無しさん
2023/07/11(火) 23:05:48.32ID:IUx5aYIs Jane Styleがユーザー数一番多いのかな?
ざっと何%くらいなんだろう?
ざっと何%くらいなんだろう?
448デフォルトの名無しさん
2023/07/11(火) 23:11:31.90ID:8n82Mx+O449デフォルトの名無しさん
2023/07/12(水) 00:52:13.10ID:NJFIcEQ6 >>433
統計力学と熱力学の勉強を大学でやったけど、これをメモリに応用する方法とか全く検討つかないんだけど、どうやんの?
統計力学と熱力学の勉強を大学でやったけど、これをメモリに応用する方法とか全く検討つかないんだけど、どうやんの?
450デフォルトの名無しさん
2023/07/12(水) 01:12:01.30ID:w0UvOxDC451デフォルトの名無しさん
2023/07/12(水) 06:44:12.72ID:GThgJXoz .try_into().unwrap()
なにこれ超めんどくさいんだけど
だっさ
なにこれ超めんどくさいんだけど
だっさ
452デフォルトの名無しさん
2023/07/12(水) 07:27:41.45ID:40CzoJJP 課金したら閲覧者が枯渇
453デフォルトの名無しさん
2023/07/12(水) 13:39:50.28ID:JEmfvhKm >>449
今回は、AIの機械学習の話だから、ニューラルネットワーク限定。
シナプス結合が、「ほぼ 0」とみなせるようなニューロン対が
有るのだと思われる。
それを理論的に見つけるために熱力学や統計力学が使えるのではないかと
思われる。
実際、最近の機械学習では熱力学からヒントを得ていると聞いている。
今回は、AIの機械学習の話だから、ニューラルネットワーク限定。
シナプス結合が、「ほぼ 0」とみなせるようなニューロン対が
有るのだと思われる。
それを理論的に見つけるために熱力学や統計力学が使えるのではないかと
思われる。
実際、最近の機械学習では熱力学からヒントを得ていると聞いている。
454デフォルトの名無しさん
2023/07/12(水) 13:47:41.55ID:JEmfvhKm455デフォルトの名無しさん
2023/07/12(水) 14:03:47.08ID:75WTF1Df 大工の源さんは枯渇したよ
456デフォルトの名無しさん
2023/07/12(水) 16:36:21.89ID:EH/jRxPW すっかり人が減ったな
イーロンマスクがいかに優秀だったかわかるな
ひろゆきの言うようにtwitterは致命的な状態にはなってないんだよ
イーロンマスクがいかに優秀だったかわかるな
ひろゆきの言うようにtwitterは致命的な状態にはなってないんだよ
457デフォルトの名無しさん
2023/07/12(水) 16:43:02.15ID:V7YD2kGE 統計学や熱力学とは別に
統計熱力学という分野があって量子力学のツールになっている
統計熱力学という分野があって量子力学のツールになっている
458デフォルトの名無しさん
2023/07/12(水) 16:48:07.57ID:eYJFNCYr459デフォルトの名無しさん
2023/07/12(水) 16:49:01.89ID:EH/jRxPW460デフォルトの名無しさん
2023/07/12(水) 18:25:50.72ID:IrwEnPUh >>458
問題は、需要はあるのに生産できないことに有る。
問題は、需要はあるのに生産できないことに有る。
461デフォルトの名無しさん
2023/07/12(水) 18:27:53.63ID:IrwEnPUh >>460
需要はあり、しかも、技術的は生産可能。しかし、OSS
とGoogleが邪魔するせいで生産できない。しかし、
現在は存在せず。人々は欲しいのに商品が無い。しかし、
商品は技術的には製造可能。しかし、邪魔する人のせいで
製造不可能。
需要はあり、しかも、技術的は生産可能。しかし、OSS
とGoogleが邪魔するせいで生産できない。しかし、
現在は存在せず。人々は欲しいのに商品が無い。しかし、
商品は技術的には製造可能。しかし、邪魔する人のせいで
製造不可能。
462デフォルトの名無しさん
2023/07/12(水) 18:29:50.07ID:IrwEnPUh OSSの問題点は、需要があるのに、全く生産されないか、
または、生産されてもちゃんとしたものではない。
しかし、ちゃんとしたものを生産すると、すぐにそれを真似て
無料化したものが出てくるから、ちゃんとしたものを生産できない
というジレンマが生じていること。
それが悪循環になっている。
または、生産されてもちゃんとしたものではない。
しかし、ちゃんとしたものを生産すると、すぐにそれを真似て
無料化したものが出てくるから、ちゃんとしたものを生産できない
というジレンマが生じていること。
それが悪循環になっている。
463デフォルトの名無しさん
2023/07/12(水) 19:11:00.67ID:l4X7BbNV で、クローズドでマネタイズしようとした5chとかjanestyleはどうなりましたか?
464デフォルトの名無しさん
2023/07/12(水) 20:33:00.31ID:j8K/hPwF コードとサービスをごっちゃにしてて草
465デフォルトの名無しさん
2023/07/12(水) 23:01:21.25ID:NJFIcEQ6 OSSの開発者はそれ単体でマネタイズしようとか基本的に考えてないだろう。自分の事業への資金の呼び水にしたいとかとか、キャリアアップに利用したいとか、純粋にボランティアとか色々事情があるだろ。
466デフォルトの名無しさん
2023/07/12(水) 23:20:30.70ID:w0UvOxDC 自分が多様な世界に適応する能力がないのを
多様な世界に原因がある
世界は一様であるべきと言っているだけだよ
よくある症状だよ
多様な世界に原因がある
世界は一様であるべきと言っているだけだよ
よくある症状だよ
467デフォルトの名無しさん
2023/07/12(水) 23:51:54.82ID:NJFIcEQ6 Ndarray構造体に演算を実装しているんだけどバグがあった。具体的には
nar += &narとか nar = &nar * &nar
が所有権の関係でできないことが分かった。
ndarrayクレートではこれってどうやって解決してんの?
nar += &narとか nar = &nar * &nar
が所有権の関係でできないことが分かった。
ndarrayクレートではこれってどうやって解決してんの?
468デフォルトの名無しさん
2023/07/13(木) 00:26:15.94ID:6kUdjFSi ほれはよRust製の専ブラ作れよ
それともRustってRADには不向きかな?
それともRustってRADには不向きかな?
469デフォルトの名無しさん
2023/07/13(木) 01:26:33.09ID:UHgHd+Ew >>467
ndarrayの実装は知らないけど標準ライブラリ(std::ops)を参考に
AddAssignの方は
impl AddAssign<Self> for Foo
impl AddAssign<&Self> for Foo
を両方実装する
(impl AddAssignだけだとデフォルト(<Rhs=Self>)で1番目になってる)
1番目の実装の処理は2番目の実装に丸投げできるはず
Mulの方は
impl Mul<Foo> for Foo
impl Mul<&Foo> for Foo
impl<'a> Mul<Foo> for &'a Foo
impl<'a> Mul<&Foo> for &'a Foo
を全部実装する
上の3つは1番下の実装に丸投げできるはず
forward_ref_binopとかいうマクロがあるらしいけどCopy型前提みたいだから使えなそう
(Copy型だと下の3つを1番上の実装に丸投げできる)
MulとかFooのバリエーションが多くなると丸投げ部分のコードをマクロで生成しないとしんどい
ndarrayの実装は知らないけど標準ライブラリ(std::ops)を参考に
AddAssignの方は
impl AddAssign<Self> for Foo
impl AddAssign<&Self> for Foo
を両方実装する
(impl AddAssignだけだとデフォルト(<Rhs=Self>)で1番目になってる)
1番目の実装の処理は2番目の実装に丸投げできるはず
Mulの方は
impl Mul<Foo> for Foo
impl Mul<&Foo> for Foo
impl<'a> Mul<Foo> for &'a Foo
impl<'a> Mul<&Foo> for &'a Foo
を全部実装する
上の3つは1番下の実装に丸投げできるはず
forward_ref_binopとかいうマクロがあるらしいけどCopy型前提みたいだから使えなそう
(Copy型だと下の3つを1番上の実装に丸投げできる)
MulとかFooのバリエーションが多くなると丸投げ部分のコードをマクロで生成しないとしんどい
470デフォルトの名無しさん
2023/07/13(木) 02:25:19.98ID:XmwQUPfG >>467
そのものズバリの演算子はない?
Zipを使えば以下のようにできるみたい
let mut vec = Array1::from_elem(10, 1.);
Zip::from(&mut vec).for_each(|vec| {
*vec += *vec;
});
そのものズバリの演算子はない?
Zipを使えば以下のようにできるみたい
let mut vec = Array1::from_elem(10, 1.);
Zip::from(&mut vec).for_each(|vec| {
*vec += *vec;
});
471デフォルトの名無しさん
2023/07/13(木) 02:38:27.81ID:XmwQUPfG このfor_eachがベクトル演算を使ったループになれば良い感じかも
ただ泥臭過ぎて面倒だな
ただ泥臭過ぎて面倒だな
472デフォルトの名無しさん
2023/07/13(木) 07:43:06.44ID:kV5XLHA0 Announcing Windows 11 Insider Preview Build 25905
https://blogs.windows.com/windows-insider/2023/07/12/announcing-windows-11-insider-preview-build-25905/
Rust offers advantages in reliability and security over traditional programs written in C/C++. This preview shipped with an early implementation of critical kernel features in safe Rust. Specifically, win32kbase_rs.sys contains a new implementation of GDI region. While this is a small trial, we will continue to increase the usage of Rust in the kernel. Stay tuned!
https://blogs.windows.com/windows-insider/2023/07/12/announcing-windows-11-insider-preview-build-25905/
Rust offers advantages in reliability and security over traditional programs written in C/C++. This preview shipped with an early implementation of critical kernel features in safe Rust. Specifically, win32kbase_rs.sys contains a new implementation of GDI region. While this is a small trial, we will continue to increase the usage of Rust in the kernel. Stay tuned!
473デフォルトの名無しさん
2023/07/13(木) 08:55:33.76ID:Oq+5RtyL おいおい昨日25393落としたばっかだぞw (まだ入れてない
早速覗いてみるかな、(最終的に)pdbどうなってるんかしらん
C++にもunsafe{ }はよ
早速覗いてみるかな、(最終的に)pdbどうなってるんかしらん
C++にもunsafe{ }はよ
474デフォルトの名無しさん
2023/07/13(木) 10:59:52.32ID:nV7PXIXO Rust AIすげー
https://www.youtube.com/watch?v=mYmWimr0Jd4
https://www.youtube.com/watch?v=mYmWimr0Jd4
475デフォルトの名無しさん
2023/07/13(木) 13:28:05.75ID:GXWOfs8o 予言しよう。Rustは絶対流行らない。
476デフォルトの名無しさん
2023/07/13(木) 13:54:46.62ID:GXWOfs8o477デフォルトの名無しさん
2023/07/13(木) 13:59:36.78ID:aSyZRdNR >>476
そもそも、IT技術では日本はアメリカに比べて環境的に圧倒的にゴミで、技術者の数も少なくて、技術自体もアレなのに、IT技術で日本再興とか非現実的だろ。IT技術は蓄積なんで、一回周回遅れになった日本がITで没落を避けれる訳ないじゃん。君は何を目指してんの?
そもそも、IT技術では日本はアメリカに比べて環境的に圧倒的にゴミで、技術者の数も少なくて、技術自体もアレなのに、IT技術で日本再興とか非現実的だろ。IT技術は蓄積なんで、一回周回遅れになった日本がITで没落を避けれる訳ないじゃん。君は何を目指してんの?
478デフォルトの名無しさん
2023/07/13(木) 14:09:35.65ID:GXWOfs8o いまだにトヨタ車一本で未来までいけるとでも思ってるんだろうか、
この人は。
この人は。
479デフォルトの名無しさん
2023/07/13(木) 14:15:03.35ID:aSyZRdNR 日本は得意な量子コンピューターとかに注力すれば良いじゃん。間違いなく次世代のゲームチェンジャー的技術だし。日本の量子コンピューターの技術はアメリカと比べてもかなり悪くない位置にいると思うよ。
480デフォルトの名無しさん
2023/07/13(木) 14:18:09.38ID:Oq+5RtyL >>475
webのほうでは十分生き残りそう、なんとなくね
webのほうでは十分生き残りそう、なんとなくね
481デフォルトの名無しさん
2023/07/13(木) 14:22:14.94ID:GXWOfs8o >>479
そういう国家レベルで行なわれるようなものはアメリカに抜かれる。
そういう国家レベルで行なわれるようなものはアメリカに抜かれる。
482デフォルトの名無しさん
2023/07/13(木) 14:22:54.04ID:GXWOfs8o >>480
多くてもシェア10%未満。
多くてもシェア10%未満。
483デフォルトの名無しさん
2023/07/13(木) 14:35:24.76ID:GXWOfs8o 量子コンピューターも、お金がないと勝てません。
ITでお金を稼げなかった日本には財源がありません。
ITでお金を稼げなかった日本には財源がありません。
484デフォルトの名無しさん
2023/07/13(木) 14:36:26.57ID:GXWOfs8o >>477
水源が枯渇したので、こつこつ稼ぐ機会が無かったからね。
水源が枯渇したので、こつこつ稼ぐ機会が無かったからね。
485デフォルトの名無しさん
2023/07/13(木) 14:39:43.08ID:1jqNvhNL486デフォルトの名無しさん
2023/07/13(木) 15:03:07.65ID:GXWOfs8o 経済はこつこつ稼ぐことが重要。
ITの実績がほとんど無い国が量子コンピューターで巻き返しなんて
不可能だと思うぞ。
こつこつ稼がないと基盤ができない。
小銭から集めていかなければ目をどんどん大きく成長させられない。
いきなり大事業なんて不可能。
ITの実績がほとんど無い国が量子コンピューターで巻き返しなんて
不可能だと思うぞ。
こつこつ稼がないと基盤ができない。
小銭から集めていかなければ目をどんどん大きく成長させられない。
いきなり大事業なんて不可能。
487デフォルトの名無しさん
2023/07/13(木) 15:08:03.96ID:GXWOfs8o トヨタも恐らく駄目になる。
なぜなら太陽光発電は欧米では適地が沢山有るため激安になる
公算が大きいから。
なぜなら太陽光発電は欧米では適地が沢山有るため激安になる
公算が大きいから。
488デフォルトの名無しさん
2023/07/13(木) 15:21:31.64ID:Oq+5RtyL こつこつって大事だけどね、その間成果ゼロ扱いになるんよね
489デフォルトの名無しさん
2023/07/13(木) 15:23:34.91ID:GXWOfs8o490デフォルトの名無しさん
2023/07/13(木) 16:17:23.89ID:nV7PXIXO 100円稼ぐのに何円の経費がかかるかって指数があるよね
営業係数というのかな
きっと100以上になるはず
営業係数というのかな
きっと100以上になるはず
491デフォルトの名無しさん
2023/07/13(木) 16:32:54.73ID:1MkvLWgX OSSがなくなると日本のITがアメリカに勝てるようになるのか?
んなわけねーだろ
んなわけねーだろ
492デフォルトの名無しさん
2023/07/13(木) 17:32:37.80ID:GXWOfs8o >>491
少なくともOSSが有ると、「芽」が育つには不利な状況にはなるね。
どんなに潜在ポテンシャルの高くても、巨木が芽に光を当てない
ずるい状況生じている。
光さえ当てれば、既存の巨木を越える育つかも知れなくても。
少なくともOSSが有ると、「芽」が育つには不利な状況にはなるね。
どんなに潜在ポテンシャルの高くても、巨木が芽に光を当てない
ずるい状況生じている。
光さえ当てれば、既存の巨木を越える育つかも知れなくても。
493デフォルトの名無しさん
2023/07/13(木) 17:33:16.14ID:GXWOfs8o >>491
なるよ。
なるよ。
494デフォルトの名無しさん
2023/07/13(木) 18:14:57.97ID:aSyZRdNR >>492
芽に光を当てるに既存の巨木を伐採しまくらないといけないけど、どうすんの?
アメリカの大企業に資本でも技術力でも人材でも何にも太刀打ちできる要素ないじゃん。
コツコツ積み上げて云々ができるのは中国みたいに協力に自国の産業が守れる国だけ。戦後体制的に日本にはそんなことは許してもらえないよ。現実的な戦略はOSSとITの民主化以外ない。
芽に光を当てるに既存の巨木を伐採しまくらないといけないけど、どうすんの?
アメリカの大企業に資本でも技術力でも人材でも何にも太刀打ちできる要素ないじゃん。
コツコツ積み上げて云々ができるのは中国みたいに協力に自国の産業が守れる国だけ。戦後体制的に日本にはそんなことは許してもらえないよ。現実的な戦略はOSSとITの民主化以外ない。
495デフォルトの名無しさん
2023/07/13(木) 18:25:29.18ID:GXWOfs8o >>494
OSSなんて推進したら、ますます足を引っ張るだけだぞ。
OSSなんて推進したら、ますます足を引っ張るだけだぞ。
496デフォルトの名無しさん
2023/07/13(木) 18:29:50.99ID:6Dc0Fr5K オープンソースの話はあまりにもスレ違い過ぎて長期に続いているから別スレへ分けようよ
C++もRustも他のプログラミング言語もほとんどがOSSに支えられていてそこに対立点はない
C++もRustも他のプログラミング言語もほとんどがOSSに支えられていてそこに対立点はない
497デフォルトの名無しさん
2023/07/13(木) 18:30:51.58ID:GXWOfs8o RedHatなんて何やってるのかさっぱり分からん会社なのに、
自分では技術系の会社だと言い張ってるだろ。
実体は、単なるテレホンサポートみたいなもんだろ。知らんけど。
技術なんて有るわけ無いのに嘘ばっか。
OSSを推進すると言うことは技術を捨てると言うことだ。
技術立国にはなり得ない。
資源や面積の少ない日本では技術しか頼るものは無いんだから、
アメリカと同じようには出来ない。
自分では技術系の会社だと言い張ってるだろ。
実体は、単なるテレホンサポートみたいなもんだろ。知らんけど。
技術なんて有るわけ無いのに嘘ばっか。
OSSを推進すると言うことは技術を捨てると言うことだ。
技術立国にはなり得ない。
資源や面積の少ない日本では技術しか頼るものは無いんだから、
アメリカと同じようには出来ない。
498デフォルトの名無しさん
2023/07/13(木) 18:32:41.13ID:GXWOfs8o アメリカのソフトは品質が悪くてね。
それなのにはびこってるのは独占と資金的体力のおかげ。
PC-9801時代の日本製のソフトはもっとちゃんとしてた。
それなのにはびこってるのは独占と資金的体力のおかげ。
PC-9801時代の日本製のソフトはもっとちゃんとしてた。
499デフォルトの名無しさん
2023/07/13(木) 18:39:53.57ID:GXWOfs8o >>494
育ってしまった巨木には税金を沢山かけて、新しい
芽にチャンスを与えなくてはならない。
アメリカ以外の国ガ税金を沢山取る。
そのための法律がOECDかなんかで計画されていて、
2025年くらいに施工される予定だとか。
アメリカは反発するだろうが、無視しなければならない。
アメリかはペナルティーを受けるべきだ。
育ってしまった巨木には税金を沢山かけて、新しい
芽にチャンスを与えなくてはならない。
アメリカ以外の国ガ税金を沢山取る。
そのための法律がOECDかなんかで計画されていて、
2025年くらいに施工される予定だとか。
アメリカは反発するだろうが、無視しなければならない。
アメリかはペナルティーを受けるべきだ。
500デフォルトの名無しさん
2023/07/13(木) 19:18:07.22ID:aSyZRdNR >>496
同意。流石にスレ違いのOSSの話題が長くなりすぎた。
同意。流石にスレ違いのOSSの話題が長くなりすぎた。
501デフォルトの名無しさん
2023/07/13(木) 19:19:05.46ID:1MkvLWgX PC98にはアメリカ製のMS-DOSが同梱してただろボケ
502デフォルトの名無しさん
2023/07/13(木) 19:24:10.58ID:GXWOfs8o503デフォルトの名無しさん
2023/07/13(木) 19:26:34.50ID:GXWOfs8o MS-DOSはとてもシンプルで、Diskの読み書きと
stdin, stdout と exe の実行だけを受け持っていた
ようなもの。
BootSelector は NEC 独自のものだったらしく、
今の Windows より遥かに使い勝手が良かった。
DOSもsubstやjoinのような便利なコマンドが有ったのに、
Windowsでは使えなくなってしまった。
機能低下、改悪。
stdin, stdout と exe の実行だけを受け持っていた
ようなもの。
BootSelector は NEC 独自のものだったらしく、
今の Windows より遥かに使い勝手が良かった。
DOSもsubstやjoinのような便利なコマンドが有ったのに、
Windowsでは使えなくなってしまった。
機能低下、改悪。
504デフォルトの名無しさん
2023/07/13(木) 19:55:49.31ID:MEfo9A9S ずっとOSSの話してていいよ
俺が許可する
俺が許可する
505デフォルトの名無しさん
2023/07/13(木) 19:57:24.07ID:1MkvLWgX506デフォルトの名無しさん
2023/07/13(木) 20:08:49.45ID:XmwQUPfG アスペキチガイまた来たのか
こっちは中身のある話してるんだから消えろ
お前は誰からも必要とされてないんだよ
こっちは中身のある話してるんだから消えろ
お前は誰からも必要とされてないんだよ
507デフォルトの名無しさん
2023/07/13(木) 20:30:11.47ID:UfjzNeJr 適応能力が低いのは仕方ないからさ
それを周りの環境が変わったせいにするのは見苦しいぞ
皆適応している
それを周りの環境が変わったせいにするのは見苦しいぞ
皆適応している
508デフォルトの名無しさん
2023/07/13(木) 20:59:52.95ID:BNsnAvS4 >>503
substはWindowsでも使えるし、joinはWindowsのシンボリックリンクで似たようなことができるぞ。
substはWindowsでも使えるし、joinはWindowsのシンボリックリンクで似たようなことができるぞ。
509デフォルトの名無しさん
2023/07/14(金) 01:42:39.92ID:+CmAzkzF Rustを使うということは回りまわってプログラマーの首を
締めることになることが分かるのも使われない一因となる。
その他、オープンソースの負のブランディング力による
ところも大きい。OSS=メンドクサイ、時間がとられる、
いつも途中で上手く行かなくなる、などの経験法則
により、安物低品質のブランドとなっているから。
締めることになることが分かるのも使われない一因となる。
その他、オープンソースの負のブランディング力による
ところも大きい。OSS=メンドクサイ、時間がとられる、
いつも途中で上手く行かなくなる、などの経験法則
により、安物低品質のブランドとなっているから。
510デフォルトの名無しさん
2023/07/14(金) 01:55:46.33ID:+CmAzkzF Rust信者は自分の頭の悪さ故にメモリーバグを起こしている
に過ぎないのに、それをC++言語のせいにし、Rustを
救世主だと思っている。
に過ぎないのに、それをC++言語のせいにし、Rustを
救世主だと思っている。
511デフォルトの名無しさん
2023/07/14(金) 03:10:54.16ID:g6nYUGzr Arc<Mutex<>>でラッピングしている要素を持つ構造体にIndaxトレイトが実装できなくて困ってる。具体的には以下の様な構造体。
struct Ndarray<T> {
data: Arc<Mutex<Vec<>T>>,
shape: Vec<usize>,
strides: Vec<usize>
}
struct Ndarray<T> {
data: Arc<Mutex<Vec<>T>>,
shape: Vec<usize>,
strides: Vec<usize>
}
512デフォルトの名無しさん
2023/07/14(金) 03:11:52.10ID:g6nYUGzr >>511
Indax →Indax
Indax →Indax
513デフォルトの名無しさん
2023/07/14(金) 03:13:03.22ID:g6nYUGzr514デフォルトの名無しさん
2023/07/14(金) 07:25:05.69ID:swOUTbdF >>510
Rustを使えば、頭の悪い奴(俺含む)を現場に投入できるってロジックも成り立つぞ
Rustを使えば、頭の悪い奴(俺含む)を現場に投入できるってロジックも成り立つぞ
515デフォルトの名無しさん
2023/07/14(金) 10:10:28.88ID:w/+GEdt2516デフォルトの名無しさん
2023/07/14(金) 10:10:59.03ID:3uixgQAa シープラ(ハゲ、爺)の自己評価の高さって世界的ですよね
517デフォルトの名無しさん
2023/07/14(金) 11:43:24.47ID:zaiMDtK3 >>497
>RedHatなんて何やってるのかさっぱり分からん会社なのに、
>自分では技術系の会社だと言い張ってるだろ。
>実体は、単なるテレホンサポートみたいなもんだろ。知らんけど。
>技術なんて有るわけ無いのに嘘ばっか。
若くはなさそうだしこの世間知らずは引きこもりなのか?
>RedHatなんて何やってるのかさっぱり分からん会社なのに、
>自分では技術系の会社だと言い張ってるだろ。
>実体は、単なるテレホンサポートみたいなもんだろ。知らんけど。
>技術なんて有るわけ無いのに嘘ばっか。
若くはなさそうだしこの世間知らずは引きこもりなのか?
518デフォルトの名無しさん
2023/07/14(金) 12:03:50.01ID:MdAXDHyo >>515
自分の場合は、C, C++で開発してるとコンパイル通っても予期しない動作をすることが結構あるんだよね。そういう点ではRustは非常に優秀だと思う。ただ、所有権の制約がキツくて一部のコードは複雑化しやすい点は問題だとは思う。
自分の場合は、C, C++で開発してるとコンパイル通っても予期しない動作をすることが結構あるんだよね。そういう点ではRustは非常に優秀だと思う。ただ、所有権の制約がキツくて一部のコードは複雑化しやすい点は問題だとは思う。
519デフォルトの名無しさん
2023/07/14(金) 12:32:45.81ID:8YyBZiGG ここなら知ってる人居そうなので教えてくれ
昨日木曜の22時頃からNHKBSでコズミックフロントの
天文学シミュレーションの歴史みたいなのやってて
その中で何度か画面中のコンソールにソースファイルが映されたんだけど
HDLのようなRustのようなC/C++ではない何かの言語だったが
なんの言語か判る?定番なんかな?
最新のGRAPE用なのかどうかは判らん
来週再放送ありそう
昨日木曜の22時頃からNHKBSでコズミックフロントの
天文学シミュレーションの歴史みたいなのやってて
その中で何度か画面中のコンソールにソースファイルが映されたんだけど
HDLのようなRustのようなC/C++ではない何かの言語だったが
なんの言語か判る?定番なんかな?
最新のGRAPE用なのかどうかは判らん
来週再放送ありそう
520デフォルトの名無しさん
2023/07/14(金) 12:47:40.84ID:x3sVtKWK521デフォルトの名無しさん
2023/07/14(金) 12:50:37.89ID:x3sVtKWK522デフォルトの名無しさん
2023/07/14(金) 13:41:45.73ID:8YyBZiGG523デフォルトの名無しさん
2023/07/14(金) 15:20:18.19ID:qBV+KWq7524デフォルトの名無しさん
2023/07/14(金) 17:25:19.68ID:Jf6zu8AW c+にも素直なヤングマンおるんやな
525デフォルトの名無しさん
2023/07/14(金) 17:30:00.04ID:NM5pG7go C++とRustって見た目結構違うのになんでライバルみたいな扱いになってんの?
526デフォルトの名無しさん
2023/07/14(金) 17:32:55.85ID:NqLHzajz527デフォルトの名無しさん
2023/07/14(金) 17:46:18.19ID:l3lWzNaZ528デフォルトの名無しさん
2023/07/14(金) 17:47:04.57ID:+4BZA0bd そこまで言うんならテレサポ以外の具体的な仕事を教えてあげたらいいのに
529デフォルトの名無しさん
2023/07/14(金) 18:02:16.86ID:tvaXDSEz >>511
Indexは保持データの指定された位置の参照を返すためのtraitだけど
内部でロックしてる間しかアクセスできないデータの直参照は返せないよ
dataがどのスレッドからも変更されないことが保証されてるなら
1.ロック中にVecのas_ptrとlenでポインタと長さを取り出す
2.ロック解除後にunsafe slice::from_raw_partsでスライスを復元(ライフタイムはselfに合わせる)
3.復元したスライスから指定された位置の参照を返す
でいけるかな
unsafeの安全条件はdata内のVecがどのスレッドからも変更されないこと
Indexは保持データの指定された位置の参照を返すためのtraitだけど
内部でロックしてる間しかアクセスできないデータの直参照は返せないよ
dataがどのスレッドからも変更されないことが保証されてるなら
1.ロック中にVecのas_ptrとlenでポインタと長さを取り出す
2.ロック解除後にunsafe slice::from_raw_partsでスライスを復元(ライフタイムはselfに合わせる)
3.復元したスライスから指定された位置の参照を返す
でいけるかな
unsafeの安全条件はdata内のVecがどのスレッドからも変更されないこと
530デフォルトの名無しさん
2023/07/14(金) 18:03:58.67ID:NqLHzajz531デフォルトの名無しさん
2023/07/14(金) 18:16:49.52ID:zaiMDtK3 >>527
>現時点ではC++とRustのライバルバランスが成り立っている
C++ユーザからしたら成り立ってないと思う
Rustの有している機能は素晴らしいと思うがまだ実績がなさ過ぎ
普及したRustカーネルのOSが欲しいね
カーネルに関してはC++というよりもCだけども
>現時点ではC++とRustのライバルバランスが成り立っている
C++ユーザからしたら成り立ってないと思う
Rustの有している機能は素晴らしいと思うがまだ実績がなさ過ぎ
普及したRustカーネルのOSが欲しいね
カーネルに関してはC++というよりもCだけども
532デフォルトの名無しさん
2023/07/14(金) 18:18:36.50ID:NqLHzajz533デフォルトの名無しさん
2023/07/14(金) 18:31:00.85ID:NqLHzajz >>520
古代遺産を守ろうとした国は必ず衰退するから
温泉を潰して発電し、富士山にソーラーパネルを置き、
京都の寺を潰してソーラーパネル化する、ということが
日本復活に必要なことかもしれない。
富士山をぴかぴかのピラミッド様にすれば、観光資源にもなり、
一石二鳥。
富士山一つだけで凄いでんりょくがまかなえるだろう。
自然破壊にもなりにくいし。
古代遺産を守ろうとした国は必ず衰退するから
温泉を潰して発電し、富士山にソーラーパネルを置き、
京都の寺を潰してソーラーパネル化する、ということが
日本復活に必要なことかもしれない。
富士山をぴかぴかのピラミッド様にすれば、観光資源にもなり、
一石二鳥。
富士山一つだけで凄いでんりょくがまかなえるだろう。
自然破壊にもなりにくいし。
534デフォルトの名無しさん
2023/07/14(金) 18:39:33.76ID:NqLHzajz 京都の五重の塔や姫路城を太陽光パネル化し、
渡月橋の歩くところに強化ガラス版の太陽光パネルを
敷く、などすれば、経済効率が上がるかも知れない。
古代遺産は現代の経済には余り恩恵ももたらさない
ことがおおい。現に京都は観光客は多いのにお金は
落ちず、日本の中でも貧乏県だそうだ。
なんと、遥かに田舎の隣の滋賀県よりも貧乏なんだとか。
人口も利便性も都会レベルも京都の方が上なのに、
なぜなんだろうか。
古代遺跡を守ろうとしているからだろう。
高さ制限も、空が広くて明るくて快適ではあるが
経済的にはマイナスなんだろうな。
新宿は暗くて寒くて空が狭いが、経済的には日本一
なんだろう、知らんけど。
渡月橋の歩くところに強化ガラス版の太陽光パネルを
敷く、などすれば、経済効率が上がるかも知れない。
古代遺産は現代の経済には余り恩恵ももたらさない
ことがおおい。現に京都は観光客は多いのにお金は
落ちず、日本の中でも貧乏県だそうだ。
なんと、遥かに田舎の隣の滋賀県よりも貧乏なんだとか。
人口も利便性も都会レベルも京都の方が上なのに、
なぜなんだろうか。
古代遺跡を守ろうとしているからだろう。
高さ制限も、空が広くて明るくて快適ではあるが
経済的にはマイナスなんだろうな。
新宿は暗くて寒くて空が狭いが、経済的には日本一
なんだろう、知らんけど。
535デフォルトの名無しさん
2023/07/14(金) 18:45:13.58ID:s39u3Dpn 何の話?
536デフォルトの名無しさん
2023/07/14(金) 18:52:21.06ID:Jf6zu8AW こういう人がc+書いてるからunsafeだねって話
537デフォルトの名無しさん
2023/07/14(金) 18:58:00.49ID:FuHeClZX アスペ気狂いよ
お前の居場所はどこにもない
諦めろ
お前の居場所はどこにもない
諦めろ
538デフォルトの名無しさん
2023/07/14(金) 19:02:03.78ID:4pnOt+dl C++が後発の言語に張り合うとか絶対やめたほうがいいわ
できるだけはやく死んだほうがいい
できるだけはやく死んだほうがいい
539デフォルトの名無しさん
2023/07/14(金) 19:20:10.52ID:kdVvbi01 Rustじゃ何も出来ない。
540デフォルトの名無しさん
2023/07/14(金) 20:52:49.41ID:FuHeClZX それはお前
541デフォルトの名無しさん
2023/07/14(金) 20:55:28.55ID:PohABDSE まあどちらにしても不思議だね
実際にここにいる人たちがコードや書いたりアプリを作ってるとは思えない
今週自分は専ブラ作ったり画像解析などのアプリ作ったりしてた
実際にここにいる人たちがコードや書いたりアプリを作ってるとは思えない
今週自分は専ブラ作ったり画像解析などのアプリ作ったりしてた
542デフォルトの名無しさん
2023/07/14(金) 20:56:58.23ID:at4d1W3f C++に対しては「メモリーエラーを起こしえるのは
言語の欠陥に過ぎない」などと言っているんだから、
Rustの守備範囲が狭いのも言語の欠陥であると考える
のが公平と言うもの。
言語の欠陥に過ぎない」などと言っているんだから、
Rustの守備範囲が狭いのも言語の欠陥であると考える
のが公平と言うもの。
543デフォルトの名無しさん
2023/07/14(金) 21:00:54.94ID:PohABDSE RustにしろC++にしろ大体メモリリークの対策なんて本質じゃないもんな
メモリリーク対策がしたくてコード書いてる人間などいない
どちらとも快適な開発とは程遠い
メモリリーク対策がしたくてコード書いてる人間などいない
どちらとも快適な開発とは程遠い
544デフォルトの名無しさん
2023/07/14(金) 21:07:43.24ID:FuHeClZX C++のことを欠陥などと言ってるのはお前だけだよ
545デフォルトの名無しさん
2023/07/14(金) 21:08:39.31ID:i4/iEcAZ まともにRustで開発してる人はとっくに5chなんて見限ってるし、こんなゴミスレには絶対に常駐しない
546デフォルトの名無しさん
2023/07/14(金) 21:14:53.97ID:tvaXDSEz Rustが対処してるのはメモリリークじゃなくダングリングポインタ
segfaultでプロセスが即死するだけならいいけど脆弱性の要因にもなったりする
メモリリークは割と気にしてない
segfaultでプロセスが即死するだけならいいけど脆弱性の要因にもなったりする
メモリリークは割と気にしてない
547デフォルトの名無しさん
2023/07/14(金) 21:30:06.52ID:at4d1W3f >>545
開発と言う定義が、多くのプログラマとRust信者の間では
異なって認識されているようだ。
Rust信者は売れないアプリや実用性の無いアプリを
作る事を開発と呼んでいる。
作った事を報告して褒めてもらう事を目的にしているようだ。
開発と言う定義が、多くのプログラマとRust信者の間では
異なって認識されているようだ。
Rust信者は売れないアプリや実用性の無いアプリを
作る事を開発と呼んでいる。
作った事を報告して褒めてもらう事を目的にしているようだ。
548デフォルトの名無しさん
2023/07/14(金) 21:33:50.95ID:at4d1W3f githubもその狂った定義が徹底されており、
実用性が無ければ無いほどSTARが付く傾向が有る。
全く無意味なプログラムが賞賛され、楯まで送られてくる。
集団幻覚カルトであることが判明した。
実用性が無ければ無いほどSTARが付く傾向が有る。
全く無意味なプログラムが賞賛され、楯まで送られてくる。
集団幻覚カルトであることが判明した。
549デフォルトの名無しさん
2023/07/14(金) 21:37:30.55ID:zaiMDtK3 まーた始まった
550デフォルトの名無しさん
2023/07/14(金) 21:42:45.43ID:at4d1W3f 集団幻覚なので、自分達が正しくて周囲の人が間違って
いるように見えているらしい。
いるように見えているらしい。
551デフォルトの名無しさん
2023/07/14(金) 23:20:38.82ID:sYqKfQlj >>511
Arc<Mutex<Vec<T>>>は
Vec<T>を同時に読み書きするやつを
実行時チェックで1つに限定したい場合に使うもの
Indexトレイトを実装したいというなら用途が違うんじゃないの?
Arc<Mutex<Vec<T>>>は
Vec<T>を同時に読み書きするやつを
実行時チェックで1つに限定したい場合に使うもの
Indexトレイトを実装したいというなら用途が違うんじゃないの?
552デフォルトの名無しさん
2023/07/15(土) 02:42:09.83ID:PGpnn5Sq 多次元配列の計算ライブラリの実装頑張ってるけど、ndarrayクレートはやっぱりすごいんだなって実感するわ。マジで、高速さと利便性を追求するほど所有権の壁の高さを感じる。
553デフォルトの名無しさん
2023/07/15(土) 03:02:17.38ID:ZPSM1SGK もう諦めるんか
554デフォルトの名無しさん
2023/07/15(土) 03:03:41.55ID:UVmcINwt555デフォルトの名無しさん
2023/07/15(土) 03:13:03.77ID:PGpnn5Sq >>553
諦めないぞ。今、上手く行く方法を悩んでいる所。何とか形にしたい。
諦めないぞ。今、上手く行く方法を悩んでいる所。何とか形にしたい。
556デフォルトの名無しさん
2023/07/15(土) 07:34:20.50ID:7Sjd/b2U557デフォルトの名無しさん
2023/07/15(土) 08:39:36.95ID:cA9bBYoN Rustは失敗だったんだよ
次に期待しようよ
次に期待しようよ
558デフォルトの名無しさん
2023/07/15(土) 09:10:39.04ID:qHTh8sAi Google開発者1000人が答えた「Rustのウワサ」、習得に6カ月以上かかる? 実は遅い? は本当か
Rustに関する5つの洞察
https://atmarkit.itmedia.co.jp/ait/articles/2307/15/news039.html
Rustに関する5つの洞察
https://atmarkit.itmedia.co.jp/ait/articles/2307/15/news039.html
559デフォルトの名無しさん
2023/07/15(土) 11:25:30.28ID:UiYhW/dJ560デフォルトの名無しさん
2023/07/15(土) 12:22:16.61ID:cA9bBYoN ウワサかあ
561デフォルトの名無しさん
2023/07/15(土) 12:38:05.76ID:FawF2Viq562デフォルトの名無しさん
2023/07/15(土) 12:40:23.41ID:FawF2Viq >>534
>高さ制限も、空が広くて明るくて快適ではあるが
京都の空が広いとは思わないな
空の広さで言えば圧倒的に東京の方が空が広いと感じる
京都が盆地で東京が関東平野だからだろう
ビルの高さはあんまり関係無いよ(規制のための建前かもな)
景観の観点から言えば規制には賛成の立場
>高さ制限も、空が広くて明るくて快適ではあるが
京都の空が広いとは思わないな
空の広さで言えば圧倒的に東京の方が空が広いと感じる
京都が盆地で東京が関東平野だからだろう
ビルの高さはあんまり関係無いよ(規制のための建前かもな)
景観の観点から言えば規制には賛成の立場
563デフォルトの名無しさん
2023/07/15(土) 12:47:31.81ID:FawF2Viq564デフォルトの名無しさん
2023/07/15(土) 13:25:15.50ID:UMGmc4KY Wasmをやりたいと思ったとき、EmscriptenよりRust
の方が便利そうと言うことでRustの方を選ぶと、
なんのためにWasmをやっているのか分からずやめてしまう
法則。その心は、RustはJSより不便だから。
C++でやってこそ、Wasmの良さが分かる。そもそもWasmが
作られた理由はC++を使いたかったのだから。
の方が便利そうと言うことでRustの方を選ぶと、
なんのためにWasmをやっているのか分からずやめてしまう
法則。その心は、RustはJSより不便だから。
C++でやってこそ、Wasmの良さが分かる。そもそもWasmが
作られた理由はC++を使いたかったのだから。
565デフォルトの名無しさん
2023/07/15(土) 16:27:57.06ID:7Sjd/b2U スクリプト言語しか使ったことない人にとったら6ヶ月くらいかかるかもね
下手したら永遠に書けない可能性もある
下手したら永遠に書けない可能性もある
566デフォルトの名無しさん
2023/07/15(土) 16:44:43.04ID:mPrtICz3567デフォルトの名無しさん
2023/07/15(土) 17:11:08.01ID:7Sjd/b2U >>566
現時点ではwasmなんかよりV8ランタイムの方が速いからね
数値計算ならある程度速くできそうだけど現時点では遅い
まずスタックマシンというのもどうなのか
モダンな最適化しにくいし
今設計するならレジスタマシンだろう
現時点ではwasmなんかよりV8ランタイムの方が速いからね
数値計算ならある程度速くできそうだけど現時点では遅い
まずスタックマシンというのもどうなのか
モダンな最適化しにくいし
今設計するならレジスタマシンだろう
568デフォルトの名無しさん
2023/07/15(土) 17:16:08.85ID:+MrrJBXN wasmなんて自分が書き慣れた言語でいいよ
Cに慣れてるならCを選べばいいしRustに慣れてるならRustを選べばいい
ただRustのbindingはお節介というか本来jsでやるべき処理までRustで書けるようにしてるから
素人向けでないかもしれない。全部Rustで書きたい人もいるんだろうけど
個人的には数値計算とか複雑な処理だけwasmに投げてDOM操作はjs/tsで書きたい
Cに慣れてるならCを選べばいいしRustに慣れてるならRustを選べばいい
ただRustのbindingはお節介というか本来jsでやるべき処理までRustで書けるようにしてるから
素人向けでないかもしれない。全部Rustで書きたい人もいるんだろうけど
個人的には数値計算とか複雑な処理だけwasmに投げてDOM操作はjs/tsで書きたい
569デフォルトの名無しさん
2023/07/15(土) 17:52:08.10ID:cjFspWyo >>564
>> RustはJSより不便だから。
>> C++でやってこそ、Wasmの良さが分かる。
JavaScriptよりRustが不便だと主張しつつC++でWasmの良さがわかる??
もしC++で便利になる状況ならRustでさらに便利になるだろう
>>566
Wasm化にRustを選んで速度が速くならない??
C++を選ぶと同じことが速くると主張したいのか?
Wasm化で速くなる遅くなるの正解はこれ
・WasmでDOM操作メインならオーバーヘッドの分だけJavaScriptより少し遅くなる
・Wasmで何かを算出するなどの処理をしてオーバーヘッド分を取り戻すと当然JavaScriptより速くなる
これだけの話でこの速さ問題はWasm⇔JavaScriptのオーバーヘッド分を超える作業をWasmにやらせているかどうかだけ
C++かRustかなんて話は当然関係ない
>>567
>> wasmなんかよりV8ランタイムの方が速い
それだとWasmの存在意義が全くないことになる
正解はWasm⇔JavaScriptのオーバーヘッドを取り戻せるか否かで決まる
>> RustはJSより不便だから。
>> C++でやってこそ、Wasmの良さが分かる。
JavaScriptよりRustが不便だと主張しつつC++でWasmの良さがわかる??
もしC++で便利になる状況ならRustでさらに便利になるだろう
>>566
Wasm化にRustを選んで速度が速くならない??
C++を選ぶと同じことが速くると主張したいのか?
Wasm化で速くなる遅くなるの正解はこれ
・WasmでDOM操作メインならオーバーヘッドの分だけJavaScriptより少し遅くなる
・Wasmで何かを算出するなどの処理をしてオーバーヘッド分を取り戻すと当然JavaScriptより速くなる
これだけの話でこの速さ問題はWasm⇔JavaScriptのオーバーヘッド分を超える作業をWasmにやらせているかどうかだけ
C++かRustかなんて話は当然関係ない
>>567
>> wasmなんかよりV8ランタイムの方が速い
それだとWasmの存在意義が全くないことになる
正解はWasm⇔JavaScriptのオーバーヘッドを取り戻せるか否かで決まる
570デフォルトの名無しさん
2023/07/15(土) 18:16:24.19ID:xjlkhkqt571デフォルトの名無しさん
2023/07/15(土) 18:27:33.72ID:cjFspWyo572デフォルトの名無しさん
2023/07/15(土) 18:32:32.92ID:xjlkhkqt >>571
これ以上言わないわ。自分で考えろ。
これ以上言わないわ。自分で考えろ。
573デフォルトの名無しさん
2023/07/15(土) 18:33:47.39ID:xjlkhkqt こんなに馬鹿なにされて、正しい情報を伝授する義務は
俺には無い。貴重な情報なのに。
いつまでも幻覚の中で生きてろ。
俺には無い。貴重な情報なのに。
いつまでも幻覚の中で生きてろ。
574デフォルトの名無しさん
2023/07/15(土) 18:55:27.98ID:dbngzqa+ Wasmを使うためにRustを使うのは環境も整っているしGCも必要ないしベストだろな
実際にRustが一番使われているし問題点を聞いたこともない
一方でRustと全く関係ない話としてJavaScriptのWasm化が無意味な場合がある
ほとんどがGUI処理ならWasmより直接操作できるJavaScriptが速くなってしまう
もちろんC++でWasmを書こうが遅い
実際にRustが一番使われているし問題点を聞いたこともない
一方でRustと全く関係ない話としてJavaScriptのWasm化が無意味な場合がある
ほとんどがGUI処理ならWasmより直接操作できるJavaScriptが速くなってしまう
もちろんC++でWasmを書こうが遅い
575デフォルトの名無しさん
2023/07/15(土) 18:56:54.92ID:xjlkhkqt RustでWasm化した人は、思っていたのと違ってすぐやめる
のに対し、C++でWasm化した人は、良いものを手に入れた
と思って二度とJSに戻らない法則。
のに対し、C++でWasm化した人は、良いものを手に入れた
と思って二度とJSに戻らない法則。
576デフォルトの名無しさん
2023/07/15(土) 19:02:14.15ID:cjFspWyo >>575
その書き込みでJavaScriptもWasmも書いたことがない人だとわかる
その書き込みでJavaScriptもWasmも書いたことがない人だとわかる
577デフォルトの名無しさん
2023/07/15(土) 19:04:24.33ID:7Sjd/b2U578デフォルトの名無しさん
2023/07/15(土) 19:07:37.18ID:7Sjd/b2U 俺の観測範囲だとフロントエンドの人たちがrustに飛びついたがほとんどの人がまともに書けずに挫折して
TypeScriptに戻っていった
そして今Reactがサーバーサイドコンポーネントという銀の弾丸を持ってきた
これでwasmはますますいらなくなった
TypeScriptに戻っていった
そして今Reactがサーバーサイドコンポーネントという銀の弾丸を持ってきた
これでwasmはますますいらなくなった
579デフォルトの名無しさん
2023/07/15(土) 19:16:47.79ID:7Sjd/b2U wasmの目的としてポータブルでデータが小さいからJSよりサイズを小さくできるという狙いがあったが
もうRSCによりサーバーサイドに先祖返りしたので
フロントエンド側で頑張って何かやる必要性はゼロ
言語もRustでよろしい
もうRSCによりサーバーサイドに先祖返りしたので
フロントエンド側で頑張って何かやる必要性はゼロ
言語もRustでよろしい
580デフォルトの名無しさん
2023/07/15(土) 19:20:05.38ID:xjlkhkqt そうでなくて、Rustで書くから馬鹿馬鹿しくなるだけなんだ。
JSとの比較で言語としての魅力が無いので速度比較だけになってしまうから。
JSとの比較で言語としての魅力が無いので速度比較だけになってしまうから。
581デフォルトの名無しさん
2023/07/15(土) 19:22:27.92ID:xjlkhkqt RustでWasm化してみた人はみんな、速度が余り
速くならないから、思っていたのと違う、と書いている。
JSと比較してRustには魅力が無いからそうなってしまう。
速くならないから、思っていたのと違う、と書いている。
JSと比較してRustには魅力が無いからそうなってしまう。
582デフォルトの名無しさん
2023/07/15(土) 19:22:39.42ID:dbngzqa+583デフォルトの名無しさん
2023/07/15(土) 19:30:39.78ID:QsJkwQGV584デフォルトの名無しさん
2023/07/15(土) 19:32:53.27ID:xjlkhkqt Wasm化するのは速度の問題だけじゃないんだよ。
C++は言語として魅力があるからWasm化して便利になる。
ところが、Rustは言語として問題が多すぎるから
Wasm化するとJSに比べてめんどくさすぎると言うことだ。
C++は言語として魅力があるからWasm化して便利になる。
ところが、Rustは言語として問題が多すぎるから
Wasm化するとJSに比べてめんどくさすぎると言うことだ。
585デフォルトの名無しさん
2023/07/15(土) 19:39:27.04ID:QsJkwQGV586デフォルトの名無しさん
2023/07/15(土) 19:39:47.20ID:xjlkhkqt Mozillaとかの脳内では、高速化が必要な部分だけ
Wasm化する、というものだ。ところがこの考え方は
馬鹿馬鹿しい。というのは多くのサイトではFrontの
高速化が必要ないからだ。
一方、全面的にC++化した場合は、飛躍的に利便性
がアップする。この方針だとJSは、ブラウザのAPI呼び出し
担当だけにとどまり、出来る限り使用しないことになる。
こうすると、JSやHTML5より遥かに楽にアプリが書ける様になる。
Wasm化する、というものだ。ところがこの考え方は
馬鹿馬鹿しい。というのは多くのサイトではFrontの
高速化が必要ないからだ。
一方、全面的にC++化した場合は、飛躍的に利便性
がアップする。この方針だとJSは、ブラウザのAPI呼び出し
担当だけにとどまり、出来る限り使用しないことになる。
こうすると、JSやHTML5より遥かに楽にアプリが書ける様になる。
587デフォルトの名無しさん
2023/07/15(土) 19:46:08.86ID:epSo72Qu wasmってなんか難読化したいときに使うんちゃうん(偏見
588デフォルトの名無しさん
2023/07/15(土) 20:07:04.46ID:gEsF2Ccb589デフォルトの名無しさん
2023/07/15(土) 20:12:10.30ID:4taGP2gD まぁ高級言語であるjsより“楽に書ける”なんではずはないし、そもそも「HTML5で楽にアプリが書ける」とは何言ってるか意味すらわからん
590デフォルトの名無しさん
2023/07/15(土) 20:17:44.08ID:xjlkhkqt Rustなんかでフロント書くのはHTML5+JS以上に地獄。
591デフォルトの名無しさん
2023/07/15(土) 20:19:25.95ID:xjlkhkqt SNSでRustの自作あぷりを話題にしてるのは、
「こんなんできますよ」をやってるだけで、それを
成長させて売る気は無い連中ばかり。
「こんなんできますよ」をやってるだけで、それを
成長させて売る気は無い連中ばかり。
592デフォルトの名無しさん
2023/07/15(土) 20:25:18.59ID:xjlkhkqt Rustで自作アプリをSNSで話題にしてる人は、
最後まで使う気は無いが、上から目線で「教えてやる」
をやってる。本の著者などが多いようだ。
最後まで使う気は無いが、上から目線で「教えてやる」
をやってる。本の著者などが多いようだ。
593デフォルトの名無しさん
2023/07/15(土) 20:45:16.50ID:gEsF2Ccb なぜIT大手も含めて各社がRustへと舵を切っているのか理解できていないのか
594デフォルトの名無しさん
2023/07/15(土) 20:47:28.14ID:xjlkhkqt595デフォルトの名無しさん
2023/07/15(土) 20:47:39.94ID:33/evfg+ まあwasmが何かもわかってないアスペ
みんなにバカにされとるw
みんなにバカにされとるw
596デフォルトの名無しさん
2023/07/15(土) 20:48:31.69ID:wfhnDtnz597デフォルトの名無しさん
2023/07/15(土) 20:50:04.45ID:dbngzqa+ >>586
サーバーサイドとブラウザサイドの区別ができてなさそうな書き込みですね
基本的にはC++もRustも立ち位置は同じですが『全面的にC++化した場合は、飛躍的に利便性がアップする。』とはどういう意味でしょう?
サーバーサイドにしても並行並列環境の書きやすさの差で今はRustが有利でしょう
サーバーサイドとブラウザサイドの区別ができてなさそうな書き込みですね
基本的にはC++もRustも立ち位置は同じですが『全面的にC++化した場合は、飛躍的に利便性がアップする。』とはどういう意味でしょう?
サーバーサイドにしても並行並列環境の書きやすさの差で今はRustが有利でしょう
598デフォルトの名無しさん
2023/07/15(土) 21:22:03.75ID:0NaOek0L そもそも業界用語すら使えてない
599デフォルトの名無しさん
2023/07/15(土) 21:38:22.36ID:TEO9VBDe またアホなオジとアホな複オジの争いかぁ
コリンナぁ
コリンナぁ
600デフォルトの名無しさん
2023/07/15(土) 21:41:32.60ID:33/evfg+ >>586
マジで支離滅裂で草
マジで支離滅裂で草
601デフォルトの名無しさん
2023/07/15(土) 22:04:03.50ID:+MrrJBXN 586を読み解くとおそらくwasmをブラウザのプラグインの類だと考えてる
かつて存在したActiveXと呼ばれる秘術と重ねてるかもしれない
かつて存在したActiveXと呼ばれる秘術と重ねてるかもしれない
602デフォルトの名無しさん
2023/07/15(土) 22:20:40.59ID:7Sjd/b2U 待て待て待て待て
俺にも分析させろ
まず全面的にC++化した場合というのはどういう意味だろう?
現時点でブラウザで生のC++を使うことはできないのだけど
俺にも分析させろ
まず全面的にC++化した場合というのはどういう意味だろう?
現時点でブラウザで生のC++を使うことはできないのだけど
603デフォルトの名無しさん
2023/07/15(土) 22:24:47.11ID:33/evfg+ おそらくブラウザで使える言語をC++にしろと言った趣旨なのでは?
604デフォルトの名無しさん
2023/07/15(土) 22:49:01.00ID:epSo72Qu 結局これでいく 造作かけさせやがって。。
00285FA8: 74 EB
00285FA8: 74 EB
605デフォルトの名無しさん
2023/07/15(土) 22:52:16.76ID:cA9bBYoN Rustって大企業が奴隷に使わせたい言語ナンバー1って感じなんじゃね?
606デフォルトの名無しさん
2023/07/15(土) 22:54:26.52ID:33/evfg+ HTML5()とかいう化石用語を使ってるのほんま草
今誰も使ってないぞ
今誰も使ってないぞ
607デフォルトの名無しさん
2023/07/15(土) 23:31:12.84ID:epSo72Qu ぐぐっても出てこないなと思ったら、専用スレではもうちょっと手前で切ってた
自力で解けたのでまあ満足かな
自力で解けたのでまあ満足かな
608デフォルトの名無しさん
2023/07/15(土) 23:55:02.92ID:YbymSuZE 算数100点マン最近はオープンソースで暴れていたが今日はウェブで無知っぷりかよ
609デフォルトの名無しさん
2023/07/16(日) 02:18:30.87ID:ziCJMtw+ なんか特徴的な文体してるよなーとはずっと思ってたけどやっと分かったわ
話し言葉と書き言葉が一文の中で妙な混ざり方してるんやな
アスペは方言と標準語を使い分けるのがむずかしいらしいけど、話し言葉と書き言葉の区別もそうなんかね
話し言葉と書き言葉が一文の中で妙な混ざり方してるんやな
アスペは方言と標準語を使い分けるのがむずかしいらしいけど、話し言葉と書き言葉の区別もそうなんかね
610デフォルトの名無しさん
2023/07/16(日) 02:24:41.19ID:ziCJMtw+ ていうか数学大先生とOSSに親を殺されたおじさんは本当に同一人物でええんか?
611デフォルトの名無しさん
2023/07/16(日) 02:49:49.28ID:pJdN2MUj アスペは頭の中に絵があってそれを想像しながら文章書いたり喋ったりするらしい
だから文章だけ見ると訳がわからない
だから文章だけ見ると訳がわからない
612デフォルトの名無しさん
2023/07/16(日) 02:50:52.44ID:ZBlSMNK8613デフォルトの名無しさん
2023/07/16(日) 03:31:31.48ID:pJdN2MUj >>610
こんな異常者が2人といると思うか?
こんな異常者が2人といると思うか?
614デフォルトの名無しさん
2023/07/16(日) 03:57:18.45ID:ziCJMtw+615デフォルトの名無しさん
2023/07/16(日) 06:24:47.74ID:zD7t6MWN 過去のある時点の成果を使用することを許さないRsut はクソ
616デフォルトの名無しさん
2023/07/16(日) 09:26:55.11ID:nur2cn9Y 特殊学級の子ってたぶん
外の世界を知らないから幼児的万能感を保ってるんよ
だから自分は算数が世界一得意だし
OSSを批判する権利が自分に唯一あると思ってる
外の世界を知らないから幼児的万能感を保ってるんよ
だから自分は算数が世界一得意だし
OSSを批判する権利が自分に唯一あると思ってる
617デフォルトの名無しさん
2023/07/16(日) 10:53:53.92ID:FXAuZXSV 権利ねえ
618デフォルトの名無しさん
2023/07/16(日) 13:19:04.88ID:OAJoWucZ Rustは頑張ってるけど、地頭やIQが低い、または、
学業成績がよく無かった人に人気が高い傾向がある。
海外では酷評されている。
学業成績がよく無かった人に人気が高い傾向がある。
海外では酷評されている。
619デフォルトの名無しさん
2023/07/16(日) 13:27:48.61ID:+r3oKLPQ >>618
根拠は?
根拠は?
620デフォルトの名無しさん
2023/07/16(日) 13:44:44.00ID:OAJoWucZ621デフォルトの名無しさん
2023/07/16(日) 13:53:10.77ID:+r3oKLPQ >>620
1文目の根拠は?
1文目の根拠は?
622デフォルトの名無しさん
2023/07/16(日) 14:02:51.68ID:OAJoWucZ623デフォルトの名無しさん
2023/07/16(日) 14:13:01.23ID:aonKa36p >>568
jsはもううんざり
jsはもううんざり
624デフォルトの名無しさん
2023/07/16(日) 14:22:22.92ID:aonKa36p625デフォルトの名無しさん
2023/07/16(日) 14:27:41.93ID:aonKa36p >>581
むかしJavaでjsが描ける謳い文句のGWTなるものが流行って廃れたがそれに似てる
むかしJavaでjsが描ける謳い文句のGWTなるものが流行って廃れたがそれに似てる
626デフォルトの名無しさん
2023/07/16(日) 14:28:12.55ID:aonKa36p >>580 だった
むかしJavaでjsが描ける謳い文句のGWTなるものが流行って廃れたがそれに似てる
むかしJavaでjsが描ける謳い文句のGWTなるものが流行って廃れたがそれに似てる
627デフォルトの名無しさん
2023/07/16(日) 14:29:23.29ID:+r3oKLPQ628デフォルトの名無しさん
2023/07/16(日) 14:35:13.61ID:aonKa36p >>613
45人はいる
45人はいる
629デフォルトの名無しさん
2023/07/16(日) 14:36:25.41ID:aonKa36p >>618
それだ
それだ
630デフォルトの名無しさん
2023/07/16(日) 14:38:34.26ID:aonKa36p631デフォルトの名無しさん
2023/07/16(日) 15:10:10.88ID:AUjDi11I そもそも「メモリの解放をシステムが自動でやってくれる」事を「解放し忘れ防止」のためだけだと思ってる時点でズレてるやろ
もう他から参照されないと確定した領域は残しとく意味がないんだから解放する、それもシステムが自動で解放してくれるならコードにその事書く必要がなくなる、するとプログラムはコンパイラに“自動的にやってはくれない本質的な処理”だけを書く事が可能になり可読性が向上する
“オレは天才、全てのプログラムはオレが組む”というなら好きにすればいいとは思うがね
仕事にならんわ
もう他から参照されないと確定した領域は残しとく意味がないんだから解放する、それもシステムが自動で解放してくれるならコードにその事書く必要がなくなる、するとプログラムはコンパイラに“自動的にやってはくれない本質的な処理”だけを書く事が可能になり可読性が向上する
“オレは天才、全てのプログラムはオレが組む”というなら好きにすればいいとは思うがね
仕事にならんわ
632デフォルトの名無しさん
2023/07/16(日) 15:41:03.27ID:GsKHBEDi ダングリングポインタは設計の問題であって、言語の問題ではないのだが
ここがわかっていないといろいろ難しいだろな
生きていくのとか
ここがわかっていないといろいろ難しいだろな
生きていくのとか
633デフォルトの名無しさん
2023/07/16(日) 15:41:23.51ID:D3FCtl3z634デフォルトの名無しさん
2023/07/16(日) 15:48:53.70ID:GsKHBEDi C++には長年の経験が詰め込まれているので、C++の流儀、経験則に従っていれば問題なくトップグループに存在できる
635デフォルトの名無しさん
2023/07/16(日) 15:50:34.37ID:GsKHBEDi636デフォルトの名無しさん
2023/07/16(日) 15:51:47.46ID:GsKHBEDi637デフォルトの名無しさん
2023/07/16(日) 16:00:23.68ID:aonKa36p lifetimeは面倒だからいちいち描かなくても良きに計らって欲しい
638デフォルトの名無しさん
2023/07/16(日) 16:20:18.23ID:D3FCtl3z Rust lang demerit
でググるだけでも問題点が色々出てくる。
実際はこんなもんだけじゃなく、技術的に根深い問題を
沢山抱えている。
でググるだけでも問題点が色々出てくる。
実際はこんなもんだけじゃなく、技術的に根深い問題を
沢山抱えている。
639デフォルトの名無しさん
2023/07/16(日) 16:22:17.40ID:D3FCtl3z おっと、くれぐれも英語モードで検索するんだぞ。
日本語モードではダメだぞ。
日本語モードではダメだぞ。
640デフォルトの名無しさん
2023/07/16(日) 16:29:18.14ID:pitMVxoQ てかソフトウェア工学なんか1ミリも勉強した事ないんやろ?
なんでそんな自信満々なん?
自分は神に選ばれた天才とか思ってるん?
なんでそんな自信満々なん?
自分は神に選ばれた天才とか思ってるん?
641デフォルトの名無しさん
2023/07/16(日) 16:30:36.28ID:D3FCtl3z 人格攻撃が来たぞ。
642デフォルトの名無しさん
2023/07/16(日) 16:59:15.24ID:yvzYaA8q イヤ、人格攻撃とひとつ非難する前にまず自分の発言見直そうよ
自分が今自信満々に述べてるその主張はもちろん自分の知見に基づいてるんだよね?
その知見はその発言内容に見合うほどのソフトウェア工学に対する勉学に基づいていると自分に対してじしんを持って言えるん?
自分が今自信満々に述べてるその主張はもちろん自分の知見に基づいてるんだよね?
その知見はその発言内容に見合うほどのソフトウェア工学に対する勉学に基づいていると自分に対してじしんを持って言えるん?
643デフォルトの名無しさん
2023/07/16(日) 17:12:24.84ID:F+/xoE5c644デフォルトの名無しさん
2023/07/16(日) 17:38:12.30ID:Zu8bZnXc645デフォルトの名無しさん
2023/07/16(日) 17:44:50.01ID:pJdN2MUj 自分が無能でソフトウェア工学も知らない
知識が15年前でとまってる無職アスペおじさんなのに
偉そうにソフトウェアやRustについて語る
虫唾が走る
知識が15年前でとまってる無職アスペおじさんなのに
偉そうにソフトウェアやRustについて語る
虫唾が走る
646デフォルトの名無しさん
2023/07/16(日) 17:48:04.71ID:MXLn+eQD こうは言える
Rustはまだまだ進化の余地を残しており、飛びつくには時期が悪いw
例によって、自分用言語ね 仕事で指定されたら>>1 のとおり
少なくとも、このスレで見聞きした知見で、自分用のC++コードは見直してるよ
Rustはまだまだ進化の余地を残しており、飛びつくには時期が悪いw
例によって、自分用言語ね 仕事で指定されたら>>1 のとおり
少なくとも、このスレで見聞きした知見で、自分用のC++コードは見直してるよ
647デフォルトの名無しさん
2023/07/16(日) 17:54:55.66ID:Zu8bZnXc コンピュータサイエンスと違ってソフトウェア工学ってのは実践知だから
それほど体系だってもないし理論的でもなくて座学で頑張って学ぶような類のものじゃないぞ
どういうイメージを持ってるのか知らんが
それほど体系だってもないし理論的でもなくて座学で頑張って学ぶような類のものじゃないぞ
どういうイメージを持ってるのか知らんが
648デフォルトの名無しさん
2023/07/16(日) 18:10:52.59ID:pJdN2MUj 学ぶべきものだぞ
どういうイメージ持ってるのか知らんが
どういうイメージ持ってるのか知らんが
649デフォルトの名無しさん
2023/07/16(日) 18:45:02.36ID:am83Lv+X C++はオワコン
はっきりわかんだね
はっきりわかんだね
650デフォルトの名無しさん
2023/07/16(日) 18:48:37.90ID:am83Lv+X RustについていけないC++erの阿鼻叫喚を見ればいかにRustが脅威かわかるね
仕事奪われるもんね
もうC++erはいらなーいって首切られるよね
残念だね
悲しいね
仕事奪われるもんね
もうC++erはいらなーいって首切られるよね
残念だね
悲しいね
651デフォルトの名無しさん
2023/07/16(日) 19:34:28.69ID:8Py6r9io ははその前に彼らは定年(あと数年)迎えるから大丈夫さ
652デフォルトの名無しさん
2023/07/16(日) 20:12:11.04ID:PXTHgxNo できれば、pythonとC, C++の関係みたいにRustコンパイラで動く有力なスクリプト言語が欲しい。
653デフォルトの名無しさん
2023/07/16(日) 21:48:38.53ID:MXLn+eQD 自分用言語だから、(世間評価が)どうなろうとかまわんぞ
廃れすぎてコンパイラがなくなるとかまでいくと困るが…そこまではないだろ…haha
廃れすぎてコンパイラがなくなるとかまでいくと困るが…そこまではないだろ…haha
654デフォルトの名無しさん
2023/07/17(月) 04:32:46.63ID:6nWUTG61 しかし実際は、日本語プログラミング言語なでしこ
の作者みたいな恐らく高齢者がRust信者で
あったりするのだよなぁ。
の作者みたいな恐らく高齢者がRust信者で
あったりするのだよなぁ。
655デフォルトの名無しさん
2023/07/17(月) 09:43:25.24ID:tnTatiuh Rustは難しいと文句言う人はwebでスクリプトしか書いてこなかったひと
https://zenn.dev/helloyuki/scraps/94c1dd0822c54f
https://zenn.dev/mabe/articles/936b788cd2b4d4
フーン
https://zenn.dev/khale/articles/rust-beginners-catchup
https://zenn.dev/helloyuki/scraps/94c1dd0822c54f
https://zenn.dev/mabe/articles/936b788cd2b4d4
フーン
https://zenn.dev/khale/articles/rust-beginners-catchup
656デフォルトの名無しさん
2023/07/17(月) 09:45:14.52ID:tnTatiuh657デフォルトの名無しさん
2023/07/17(月) 09:46:49.09ID:tnTatiuh >>650
そんな心配は unsafe {} で全て解決
そんな心配は unsafe {} で全て解決
658デフォルトの名無しさん
2023/07/17(月) 09:47:54.55ID:tnTatiuh659デフォルトの名無しさん
2023/07/17(月) 10:03:55.54ID:afOmWYlK マスク氏がAI規制しようとしたのも有名人が匿名性を規制しようとするのも
自分が持ってない力を他人が持つことを最優先で規制したいんだろうと思う
だからリスクの大きさと優先順位は比例しない
自信の大きさにも比例しない
しかし誰でもコピーできるオープンソースについては
自分が持ってないと感じた物は一体何なんだろう
自分が持ってない力を他人が持つことを最優先で規制したいんだろうと思う
だからリスクの大きさと優先順位は比例しない
自信の大きさにも比例しない
しかし誰でもコピーできるオープンソースについては
自分が持ってないと感じた物は一体何なんだろう
660デフォルトの名無しさん
2023/07/17(月) 10:18:03.63ID:j0Vw12Lc >>654
それはただの偏見では?自分は学生だけど、Rustは大好きですよ。と言っても必要に応じて別の言語も普通に使うけど。絶対的に嫌いなのがJavaですかね。なぜか全く好きになれなかった。C, C++はまあ、嫌いではないですよ。
それはただの偏見では?自分は学生だけど、Rustは大好きですよ。と言っても必要に応じて別の言語も普通に使うけど。絶対的に嫌いなのがJavaですかね。なぜか全く好きになれなかった。C, C++はまあ、嫌いではないですよ。
661デフォルトの名無しさん
2023/07/17(月) 10:33:38.53ID:1MjL2U0C662デフォルトの名無しさん
2023/07/17(月) 11:20:26.14ID:8CmoCsnZ 浅く広くさくっと読みたい初心者向けの本の方が売れるんだよ
一般書店に並ぶから
一般書店に並ぶから
663デフォルトの名無しさん
2023/07/17(月) 12:14:44.74ID:galtzlSN 普通は公式ドキュメントか、ソースからだよな
クリエイティブツールだと、ようつべで操作してんのみたりもせんではないけど
クリエイティブツールだと、ようつべで操作してんのみたりもせんではないけど
664デフォルトの名無しさん
2023/07/17(月) 14:41:33.79ID:+IbP7SE4 日本語プログラミング言語なでしこ作者、クジラ飛行机:
「手軽に音データを扱えるのもRustの魅力です。
Rustで自作シンセ開発ブーム到来目前?!」
と書いてるけど、いわゆるブーム捏造なんじゃないの。
「手軽に音データを扱えるのもRustの魅力です。
Rustで自作シンセ開発ブーム到来目前?!」
と書いてるけど、いわゆるブーム捏造なんじゃないの。
665デフォルトの名無しさん
2023/07/17(月) 14:49:29.12ID:tRotVpCU あいつのはどれも30分立ち読みで十分な内容だからタイパがいい
まとめサイトみたいなもの
買わないけどね
まとめサイトみたいなもの
買わないけどね
666デフォルトの名無しさん
2023/07/18(火) 02:50:07.52ID:ArV4bzaH 苦心して漸く多次元配列構造体のイテレータやインデックスとか大体の演算が実装できた。ただし、今の所、全くマルチスレッド対応ではにいし、GPUの抽象化もできてない。
requires_gradも実装できてない。まだ、大分、長い道のりって感じだわ。
requires_gradも実装できてない。まだ、大分、長い道のりって感じだわ。
667デフォルトの名無しさん
2023/07/18(火) 04:44:55.78ID:20jZ4czG オープンソースは、暴力と同じ。
暴力を振るうことは人間の能力の一つではあるが、
それだと社会が成り立たなくなるので近代社会では禁止
されているのと同様、オープンソースは禁止すべきだ。
暴力を振るうことは人間の能力の一つではあるが、
それだと社会が成り立たなくなるので近代社会では禁止
されているのと同様、オープンソースは禁止すべきだ。
668デフォルトの名無しさん
2023/07/18(火) 04:47:39.80ID:20jZ4czG >>667
発展途上国で低賃金でミシン労働者を使うのは搾取なので
禁止すべきと言われているが、それとオープンソースは同じ。
逆に、ミシンの方だけ禁止してオープンソースは許容
するのは差別。
LGBTやジェンダーだけ問題視するのもおかしい。
オープンソースは人権侵害だ。
発展途上国で低賃金でミシン労働者を使うのは搾取なので
禁止すべきと言われているが、それとオープンソースは同じ。
逆に、ミシンの方だけ禁止してオープンソースは許容
するのは差別。
LGBTやジェンダーだけ問題視するのもおかしい。
オープンソースは人権侵害だ。
669デフォルトの名無しさん
2023/07/18(火) 08:55:35.36ID:D1xcke2e 情報工学系ニキに聞いてみたい
volatileと書いたら、ついついatomicも付いてくると考えがちなのは、何の誤謬なのかな
volatileと書いたら、ついついatomicも付いてくると考えがちなのは、何の誤謬なのかな
670デフォルトの名無しさん
2023/07/18(火) 10:13:13.27ID:xpmB4AL6 イメージとしては両者は逆だな
volatileはIOメモリなどアクセスのためメモリ直接演算の最適化せずに律儀に値の読み込み→値の演算→値の書き込み
atomicはマルチスレッドなど競合に対処するためアトミック指定のメモリ直接演算
volatileはIOメモリなどアクセスのためメモリ直接演算の最適化せずに律儀に値の読み込み→値の演算→値の書き込み
atomicはマルチスレッドなど競合に対処するためアトミック指定のメモリ直接演算
671デフォルトの名無しさん
2023/07/18(火) 11:09:47.82ID:8SlkaJNb672デフォルトの名無しさん
2023/07/18(火) 14:01:35.52ID:Jy8oOC40 高速に動くプログラムを作るには極力if文を減らす、コピーを減らす等のキャッシュ効率の向上、+=, -=, *=, /=等の演算子でできるだけ四則演算を回していく。ここら辺か。
Rustでこの様な工夫をしたところ、かなりサイズの大きい配列の計算が速くなった。
Rustでこの様な工夫をしたところ、かなりサイズの大きい配列の計算が速くなった。
673デフォルトの名無しさん
2023/07/18(火) 15:28:04.66ID:FdSfzeLG >>672
本当はどんなマシン語(アセンブリコード)になるかを
知っていないと十分な高速化は難しいことがある。
それと、それ以上にアルゴリズムの
O(1)、O(log N)、O(N)、O(N logN)、
O(N^2)などの違いの方が遥かに重要だったりする。
数学が出来ない人は、後者が理解できない。
B.J.Stroustrup 氏もその辺が全く理解できて無い。
本当はどんなマシン語(アセンブリコード)になるかを
知っていないと十分な高速化は難しいことがある。
それと、それ以上にアルゴリズムの
O(1)、O(log N)、O(N)、O(N logN)、
O(N^2)などの違いの方が遥かに重要だったりする。
数学が出来ない人は、後者が理解できない。
B.J.Stroustrup 氏もその辺が全く理解できて無い。
674デフォルトの名無しさん
2023/07/18(火) 15:40:09.79ID:Jy8oOC40 >>673
アルゴリズムの最適化は当然だろ。それはやった上での話だよ。
アルゴリズムの最適化は当然だろ。それはやった上での話だよ。
675デフォルトの名無しさん
2023/07/18(火) 15:42:48.20ID:FdSfzeLG676デフォルトの名無しさん
2023/07/18(火) 15:55:20.63ID:Jy8oOC40 >>675
Stroustrupって誰だよ。自分は全然知らないな。普通はアルゴリズムの最適化を行い、プログラム自体の最適化を行うもんだろ。
Stroustrupって誰だよ。自分は全然知らないな。普通はアルゴリズムの最適化を行い、プログラム自体の最適化を行うもんだろ。
677デフォルトの名無しさん
2023/07/18(火) 16:06:28.75ID:fggT64M6 遅くなるの判ってても
.clone() しまくりたくなる誘惑
.clone() しまくりたくなる誘惑
678デフォルトの名無しさん
2023/07/18(火) 16:12:19.35ID:Jy8oOC40 >>677
できる限り参照返しにしてる。
できる限り参照返しにしてる。
679デフォルトの名無しさん
2023/07/18(火) 16:23:03.42ID:fggT64M6680デフォルトの名無しさん
2023/07/18(火) 16:26:10.43ID:fggT64M6 >>678
hoge.clone() したくなる場面(というかRustcがシレっとhoge.clone()しろって薦めてくるとき)
&hoge[..] とするだけで済むケースが結構あるけどこれ速くなってるよね?
hoge.clone() したくなる場面(というかRustcがシレっとhoge.clone()しろって薦めてくるとき)
&hoge[..] とするだけで済むケースが結構あるけどこれ速くなってるよね?
681デフォルトの名無しさん
2023/07/18(火) 16:53:51.58ID:fFSHFUc1 仕事でやってるやつでアルゴリズムの単純なオーダーを理解できないやつなんていないだろ
amortizedを理解できないとかそういう話ならまだわからなくもないが
amortizedを理解できないとかそういう話ならまだわからなくもないが
682デフォルトの名無しさん
2023/07/18(火) 17:12:16.37ID:FdSfzeLG >>681
アメリカ人は学者ですらちゃんと理解できて無い。
アメリカ人は学者ですらちゃんと理解できて無い。
683デフォルトの名無しさん
2023/07/18(火) 18:33:02.09ID:ArV4bzaH684デフォルトの名無しさん
2023/07/19(水) 00:05:33.03ID:OLP4lycj >>676
StroustrupはC++を作った人で少し前にその人の書いた記事が話題になってた
要約すると↓みたいな流れだったと思う
記事(英語)の内容
ファームウェアみたいにメモリアクセスが高価な環境では多少非効率でも
vectorを使った方がキャッシュ等の関係でパフォーマンスがよくなる
実測データでも数万件程度(うろ覚え)ではvectorが優位だった
記事に対するこのスレでの批判
何にでもvectorを使うように推奨するのはアルゴリズムを理解できてないからだ
StroustrupはC++を作った人で少し前にその人の書いた記事が話題になってた
要約すると↓みたいな流れだったと思う
記事(英語)の内容
ファームウェアみたいにメモリアクセスが高価な環境では多少非効率でも
vectorを使った方がキャッシュ等の関係でパフォーマンスがよくなる
実測データでも数万件程度(うろ覚え)ではvectorが優位だった
記事に対するこのスレでの批判
何にでもvectorを使うように推奨するのはアルゴリズムを理解できてないからだ
685デフォルトの名無しさん
2023/07/19(水) 00:22:21.27ID:A8l3aPdJ 算数100点大先生がcache localityを理解できないという話をまたやるのか
686デフォルトの名無しさん
2023/07/19(水) 00:38:56.49ID:BVUrsxWl >>680
どういうコードでhoge.clone()をお勧めされるんですか?
どういうコードでhoge.clone()をお勧めされるんですか?
687デフォルトの名無しさん
2023/07/19(水) 01:09:55.37ID:uHB1pLL3 ハッシュテーブルが遅くなる攻撃を思いつくような奴は確率を信じてない
というかこのラインをこえたら信じないというローカルルールがある
そもそもローカルがグローバルより劣っているみたいな考えは数学で扱わないので
そんなものを信じる義理はない
というかこのラインをこえたら信じないというローカルルールがある
そもそもローカルがグローバルより劣っているみたいな考えは数学で扱わないので
そんなものを信じる義理はない
688デフォルトの名無しさん
2023/07/19(水) 01:44:50.95ID:I9n1c/oL >>685
理解できて無いのはこのスレの馬鹿どもとStroustrup氏の法だ。
理解できて無いのはこのスレの馬鹿どもとStroustrup氏の法だ。
689デフォルトの名無しさん
2023/07/19(水) 04:04:32.47ID:hoAEd/Nt 文脈が全くわからないのだがStroustrupの記事ってどれ?
690デフォルトの名無しさん
2023/07/19(水) 08:41:42.67ID:fSe9gnNy691デフォルトの名無しさん
2023/07/19(水) 09:52:37.73ID:R6hIykH/ ハゲは>>684記事で実測を示したんでしょ?
692デフォルトの名無しさん
2023/07/19(水) 11:34:57.60ID:x9es5cRL >>676
C/C++ スレでハゲと描かれていたらそいつのことだ
C/C++ スレでハゲと描かれていたらそいつのことだ
693デフォルトの名無しさん
2023/07/19(水) 11:37:33.24ID:x9es5cRL694デフォルトの名無しさん
2023/07/19(水) 12:59:18.29ID:j0DQe/l9 >>690
「ほとんどの」というのが嘘だ。
「ほとんどの」というのが嘘だ。
695デフォルトの名無しさん
2023/07/19(水) 13:00:42.03ID:j0DQe/l9 この板は馬鹿ばっかりで、それで納得してしまうのかも
知れんが、海外のサイトだと、ちゃんと、リンクリストが
有利な場合が沢山あげられている。
知れんが、海外のサイトだと、ちゃんと、リンクリストが
有利な場合が沢山あげられている。
697デフォルトの名無しさん
2023/07/19(水) 13:07:03.89ID:j0DQe/l9698デフォルトの名無しさん
2023/07/19(水) 13:15:37.13ID:R6hIykH/699デフォルトの名無しさん
2023/07/19(水) 14:05:33.79ID:uHB1pLL3 価値観を押し付け合うのは実は平和的だよな
相手の価値観に合わせる柔軟なタイプが最も危険で
相手が戦争嫌いではないと知ったら嫌いになるまで戦争をやめない
相手の価値観に合わせる柔軟なタイプが最も危険で
相手が戦争嫌いではないと知ったら嫌いになるまで戦争をやめない
700デフォルトの名無しさん
2023/07/19(水) 14:24:01.78ID:+s9cgmAB Stroustrup師って、一人でさらさらって書いて出しちゃう御仁なのかな
こーゆうツッコミが入るのはわかるだろうにね やっぱ原著見ないとか
こーゆうツッコミが入るのはわかるだろうにね やっぱ原著見ないとか
701デフォルトの名無しさん
2023/07/19(水) 14:45:35.26ID:x9es5cRL >>699
なるほど折伏ですね判ります
なるほど折伏ですね判ります
702デフォルトの名無しさん
2023/07/19(水) 15:39:26.34ID:ZB5rrH9Z703デフォルトの名無しさん
2023/07/19(水) 16:11:16.93ID:KlTfFVa+704デフォルトの名無しさん
2023/07/19(水) 16:21:05.94ID:izSWunkt705デフォルトの名無しさん
2023/07/19(水) 20:59:38.09ID:OLP4lycj 興味ある人のためにStroustrup氏の記事のリンク(Rust本スレのPart18で議論されてた)
https://www.stroustrup.com/Software-for-infrastructure.pdf
URLからも分かるけど記事のタイトルは「Software Development of Infrastracture」で内容は少しハード寄り
https://www.stroustrup.com/Software-for-infrastructure.pdf
URLからも分かるけど記事のタイトルは「Software Development of Infrastracture」で内容は少しハード寄り
706デフォルトの名無しさん
2023/07/19(水) 21:18:14.58ID:Ss9DWb65 >>702
スゲーCOBOLに勝ててるんじゃん
スゲーCOBOLに勝ててるんじゃん
707デフォルトの名無しさん
2023/07/19(水) 21:21:56.85ID:L5673Vn2 >>705
ハゲの言うinfrastructure softwareはハードよりかどうかは関係ない
ハゲの言うinfrastructure softwareはハードよりかどうかは関係ない
708デフォルトの名無しさん
2023/07/19(水) 22:58:56.01ID:hoAEd/Nt 俺はハゲに同意かな
LinkedListはもはや古いデータ構造だと思う
現代のアーキテクチャにおいてはキャッシュメモリに乗せることがめちゃくちゃ重要なんだよ
LinkedListは挿入や削除を繰り返すとメモリアドレスがめちゃくちゃになりがちだし
ポインタを辿るという操作もページアウトなどを引き起こす
普通にポインタ配列のvectorが良い
もちろんreallocのコストが無視できない環境だと有効であるのは間違いない
LinkedListはもはや古いデータ構造だと思う
現代のアーキテクチャにおいてはキャッシュメモリに乗せることがめちゃくちゃ重要なんだよ
LinkedListは挿入や削除を繰り返すとメモリアドレスがめちゃくちゃになりがちだし
ポインタを辿るという操作もページアウトなどを引き起こす
普通にポインタ配列のvectorが良い
もちろんreallocのコストが無視できない環境だと有効であるのは間違いない
709デフォルトの名無しさん
2023/07/19(水) 23:21:25.02ID:hoAEd/Nt キャッシュメモリがゴミカスレベルのサイズ
もしくは存在しないレベル
メモリアロケーションのコストが高い
追加削除が頻繁に起きまくるようなソフトウェア
これらの場合はLinkedListで良いかも
もしくは存在しないレベル
メモリアロケーションのコストが高い
追加削除が頻繁に起きまくるようなソフトウェア
これらの場合はLinkedListで良いかも
710デフォルトの名無しさん
2023/07/19(水) 23:33:20.68ID:/VZakDHW コンパイラとかもろもろ最適化して計測するとndarrayクレートのArrayのイテレータよりも自分の作った多次元構造体のイテレータの方がまだ10倍くらい遅い。nextメソッドで呼び出される自作の外部関数の呼び出しがコストになってるっぽい。
711デフォルトの名無しさん
2023/07/20(木) 02:38:53.91ID:w+pPERAN 馬鹿な人ほど、LinkedListを嫌う傾向がある。
712デフォルトの名無しさん
2023/07/20(木) 02:50:37.46ID:o+4teY+W ほとんどのケースでLinkedListが使われないのは遅いしメモリも余分に食うためだ
次の位置のアドレスを得るためにメモリアクセスが必要となり遅い
Vectorなら次の位置のアドレスはインクリメントするだけだ
前の位置も辿りたいならLinkedListだと双方向リンクでさらにメモリ使用量も増える
次の位置のアドレスを得るためにメモリアクセスが必要となり遅い
Vectorなら次の位置のアドレスはインクリメントするだけだ
前の位置も辿りたいならLinkedListだと双方向リンクでさらにメモリ使用量も増える
713デフォルトの名無しさん
2023/07/20(木) 03:04:02.05ID:w+pPERAN714デフォルトの名無しさん
2023/07/20(木) 03:09:08.59ID:w+pPERAN >>713
>次のアドレスを得るのはどちらも mov 命令1つで、
>どちらも1クロックで時間に差は無い。
間違えた。
正しくは、
「インクリメントは、add、次のアドレスを得るのは movだが、
どちらも1クロックで必要時間に差は無い。」
>次のアドレスを得るのはどちらも mov 命令1つで、
>どちらも1クロックで時間に差は無い。
間違えた。
正しくは、
「インクリメントは、add、次のアドレスを得るのは movだが、
どちらも1クロックで必要時間に差は無い。」
715デフォルトの名無しさん
2023/07/20(木) 03:15:52.51ID:zPjslGgC いやだからメモリアクセスが支配的になるという話なのだが?
キャッシュメモリに乗ってないと致命的な速度低下となる
キャッシュメモリに乗ってないと致命的な速度低下となる
716デフォルトの名無しさん
2023/07/20(木) 03:18:02.86ID:o+4teY+W >>713
メモリアクセスに時間がかかることすら知らないならコンピューターの入門レベルからやり直せ
メモリアクセスに時間がかかることすら知らないならコンピューターの入門レベルからやり直せ
717デフォルトの名無しさん
2023/07/20(木) 03:22:57.78ID:w+pPERAN >>716
キャッシュメモリに乗っている場合の話だ。
乗っていない場合には、もちろんペナルティーが発生する。
ただ、ArrayListは、途中への挿入や削除がO(N)かかるが、
LinkedListは、O(1)だから、Nが10万の時には10万倍
の時間差となる。
一方、キャッシュのペナルティーは15(ns)くらいだから、
現在のCPUでは、45クロック位。
これだと、最悪のケースでも9倍程度だから、圧倒的に
LinkedListの方が時間的に安定。
キャッシュメモリに乗っている場合の話だ。
乗っていない場合には、もちろんペナルティーが発生する。
ただ、ArrayListは、途中への挿入や削除がO(N)かかるが、
LinkedListは、O(1)だから、Nが10万の時には10万倍
の時間差となる。
一方、キャッシュのペナルティーは15(ns)くらいだから、
現在のCPUでは、45クロック位。
これだと、最悪のケースでも9倍程度だから、圧倒的に
LinkedListの方が時間的に安定。
718デフォルトの名無しさん
2023/07/20(木) 03:25:15.25ID:w+pPERAN はっきりいって、ここの数学的才能の無い連中にも
俺は説得できる説明が出来る自信は有るが、敢えて
やってない。なぜなら、それを論文にしてステップアップ
に利用すると言うずるがしこい連中を多く見てきた
からだ。
俺は説得できる説明が出来る自信は有るが、敢えて
やってない。なぜなら、それを論文にしてステップアップ
に利用すると言うずるがしこい連中を多く見てきた
からだ。
719デフォルトの名無しさん
2023/07/20(木) 03:29:46.06ID:w+pPERAN この板の人は、数学的才能の無い人ばっかなので
異常に馬鹿丁寧に説明しないと理解できない。
今回の説明でも馬鹿丁寧だが、経験上、この程度の
丁寧さでは理解できないだろう。
もっとアセンブリコードまで徹底して書いて、
キャッシュとメインメモリの関係の図を書いて、
大量の比較コードを提示して、やっと僅かに理解できる人が
一人現れる程度だ。
それなのに、自分は賢いと思い込んでいる。
また、文書が読めない人が多い。
音声で言わないと理解できないらしい。
だから、掲示板では無理。
異常に馬鹿丁寧に説明しないと理解できない。
今回の説明でも馬鹿丁寧だが、経験上、この程度の
丁寧さでは理解できないだろう。
もっとアセンブリコードまで徹底して書いて、
キャッシュとメインメモリの関係の図を書いて、
大量の比較コードを提示して、やっと僅かに理解できる人が
一人現れる程度だ。
それなのに、自分は賢いと思い込んでいる。
また、文書が読めない人が多い。
音声で言わないと理解できないらしい。
だから、掲示板では無理。
720デフォルトの名無しさん
2023/07/20(木) 05:22:45.38ID:ShEsV12p はよ賢い人たちに説明しにいって、出禁にされてこい
721デフォルトの名無しさん
2023/07/20(木) 06:31:51.97ID:zPjslGgC722デフォルトの名無しさん
2023/07/20(木) 06:47:19.72ID:WN56tjQW LinkedListすらまともに作れない言語ってどうなんだろうなw
723デフォルトの名無しさん
2023/07/20(木) 07:29:26.02ID:o+4teY+W >>717
キャッシュメモリに載っていてもいなくてもメモリアクセスのペナルティが発生する
キャッシュに載っていないメインメモリならレジスタの数百倍
L3キャッシュに載っていればレジスタの数十倍
L2キャッシュに載っていればレジスタの十数倍
L1キャッシュに載っていてもレジスタの数倍かかる
メモリアクセスはこのようにとても遅い
したがってレジスタのインクリメントだけでアドレスを得られるVectorの方が有利になる
さらにVectorなら次の要素はほぼ必ずL1キャッシュに載っている恩恵も加わる
ほとんどのケースでVectorが速いのはこれらメモリアクセスの観点も効いている
キャッシュメモリに載っていてもいなくてもメモリアクセスのペナルティが発生する
キャッシュに載っていないメインメモリならレジスタの数百倍
L3キャッシュに載っていればレジスタの数十倍
L2キャッシュに載っていればレジスタの十数倍
L1キャッシュに載っていてもレジスタの数倍かかる
メモリアクセスはこのようにとても遅い
したがってレジスタのインクリメントだけでアドレスを得られるVectorの方が有利になる
さらにVectorなら次の要素はほぼ必ずL1キャッシュに載っている恩恵も加わる
ほとんどのケースでVectorが速いのはこれらメモリアクセスの観点も効いている
724デフォルトの名無しさん
2023/07/20(木) 08:26:57.52ID:uyFqK2iH ランダムアクセスになる場合なんかはlinkedlistなんかメチャクチャ遅くなる
例えばバッファサイズが8のフーリエ変換だと
1-5,2-6,3-7,4-8,
1-3,2-4,5-7-6-8,
1-2,3-4,5-6,7-8
とアクセスする
頭から読んでいくとものすごいコストがかかる
例えばバッファサイズが8のフーリエ変換だと
1-5,2-6,3-7,4-8,
1-3,2-4,5-7-6-8,
1-2,3-4,5-6,7-8
とアクセスする
頭から読んでいくとものすごいコストがかかる
725デフォルトの名無しさん
2023/07/20(木) 08:40:23.30ID:WN56tjQW そのレベルで速度気にするんならCやC++の方がよくね?
726デフォルトの名無しさん
2023/07/20(木) 09:05:41.95ID:o+4teY+W 全員がプログラミング言語に全く依存しない話をしてるところで唐突だな
727デフォルトの名無しさん
2023/07/20(木) 09:35:16.93ID:2+rEEHlb728デフォルトの名無しさん
2023/07/20(木) 11:05:22.25ID:397DPwdK ハゲの書いてることは00年代中盤にはCSでは一般常識化してた内容
実測すれば答えすぐ出るから
実測すれば答えすぐ出るから
729デフォルトの名無しさん
2023/07/20(木) 12:39:51.73ID:OPngbi2z >>720
出禁にされた結果がこのスレや
出禁にされた結果がこのスレや
730デフォルトの名無しさん
2023/07/20(木) 12:47:25.92ID:6BSTmMYa cargo は便利だけど crates.io の複数のモジュール同時使用で衝突するケースがあるよな
それぞれ単独で使うと問題起きないのに組み合わせて使うと死ねる
それぞれの開発者はたぶんお互いを認知してないかあるいは
どうなろうと知ったこっちゃないんだろ
それぞれ単独で使うと問題起きないのに組み合わせて使うと死ねる
それぞれの開発者はたぶんお互いを認知してないかあるいは
どうなろうと知ったこっちゃないんだろ
731デフォルトの名無しさん
2023/07/20(木) 12:56:38.69ID:6BSTmMYa732デフォルトの名無しさん
2023/07/20(木) 13:00:04.58ID:6BSTmMYa733デフォルトの名無しさん
2023/07/20(木) 13:03:06.20ID:6BSTmMYa >>721
明らかに君が可笑しい
明らかに君が可笑しい
734デフォルトの名無しさん
2023/07/20(木) 14:30:33.52ID:LhjzUCmo バランスを考えるのをやめろ
両極端の宗派はそのままにしておけ
統一するな
両極端の宗派はそのままにしておけ
統一するな
735デフォルトの名無しさん
2023/07/20(木) 15:21:54.49ID:zPjslGgC736デフォルトの名無しさん
2023/07/20(木) 15:33:00.56ID:E8mUVG43737デフォルトの名無しさん
2023/07/20(木) 15:43:18.38ID:7U3pGa9H LinkedListが一直線のリンクで実現してるのか、二分木とか赤黒木とかまで含んでるのかで話が変わる
738デフォルトの名無しさん
2023/07/20(木) 15:51:48.08ID:zPjslGgC >>736
うーん、じゃあもういいやw
うーん、じゃあもういいやw
739デフォルトの名無しさん
2023/07/20(木) 16:09:51.27ID:+MYe1bAK 同じO(N)でも性能は全く違うって話なのは理解してる?
740デフォルトの名無しさん
2023/07/20(木) 16:12:38.55ID:zPjslGgC このスレではLinkedListは常にO(1)ってことにしようw
よし使いまくるぞ!w
よし使いまくるぞ!w
741デフォルトの名無しさん
2023/07/20(木) 17:35:21.34ID:E8mUVG43742デフォルトの名無しさん
2023/07/20(木) 18:03:33.53ID:7Xbf5imk なおRust標準ライブラリのLinkedListの扱い
(https://doc.rust-lang.org/std/collections/index.html)
Use a `LinkedList` when:
* You want a `Vec` or `VecDeque` of unknown size, and can't tolerate amortization.
* You want to efficiently split and append lists.
* You are *absolutely* certain you *really*, *truly*, want a doubly linked list.
(https://doc.rust-lang.org/std/collections/index.html)
Use a `LinkedList` when:
* You want a `Vec` or `VecDeque` of unknown size, and can't tolerate amortization.
* You want to efficiently split and append lists.
* You are *absolutely* certain you *really*, *truly*, want a doubly linked list.
743デフォルトの名無しさん
2023/07/20(木) 18:32:16.87ID:zPjslGgC744デフォルトの名無しさん
2023/07/20(木) 18:57:14.98ID:KJVi0UK+ 1. ソートされた状態でデータを管理したい
2. 走査は激遅でいいけどキーに対応する値1件の取得/挿入/削除は高速に行いたい
3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
これらを満たしてる場合にのみLinkedListが候補の1つに上がる
2. 走査は激遅でいいけどキーに対応する値1件の取得/挿入/削除は高速に行いたい
3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
これらを満たしてる場合にのみLinkedListが候補の1つに上がる
745デフォルトの名無しさん
2023/07/20(木) 20:29:35.29ID:2+rEEHlb 数学の人とオープンソースの人はひょっとして同じ人?
746デフォルトの名無しさん
2023/07/20(木) 21:52:17.16ID:aEdleXCL ひょっとしなくても同じやつだろ
747デフォルトの名無しさん
2023/07/20(木) 21:57:32.90ID:neDY19sM >>744
>> 3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
それはLinkedList全ての要素へのポインタ一覧を持っていないと無理だな
それをベクタで持つならその削除問題が発生してLinkedList利用の唯一の利点が消える
別のLinkedListで持つなら再び激遅な走査問題が起きる
>> 3. 取得/挿入/削除時に先頭末尾以外位置はリストにアクセスしなくても分かる
それはLinkedList全ての要素へのポインタ一覧を持っていないと無理だな
それをベクタで持つならその削除問題が発生してLinkedList利用の唯一の利点が消える
別のLinkedListで持つなら再び激遅な走査問題が起きる
748デフォルトの名無しさん
2023/07/20(木) 23:49:45.08ID:KJVi0UK+ >>747
一般的にはLinkedListとHashMapを組み合わせる
一部の言語に実装されてるLinkedHashMap/OrderedDictionaryや
基本的なLRUキャッシュの実装でその組み合わせが使われてる
一般的にはLinkedListとHashMapを組み合わせる
一部の言語に実装されてるLinkedHashMap/OrderedDictionaryや
基本的なLRUキャッシュの実装でその組み合わせが使われてる
749デフォルトの名無しさん
2023/07/21(金) 00:53:33.35ID:JyRjpbQR 一般的なLinkedListはともかくとしてRustに標準に実装されてる
use std::collections::LinkedList;
は前後のノードへのポインタで実現してるらしい
赤黒木がどうこうとかいうものではとてもなさそう
ランダムアクセスなんか劇遅やろ
そもそもLinkedListのくせに
「リストの中間地点に要素を追加したり、削除する操作が効率的にできるのも連結リストの特徴ですが、Rust1.26の時点では、そのような操作のためのメソッドが用意されていません」
とはどういうつもりなんやと
https://qiita.com/garkimasera/items/a6df4d1cd99bc5010a5e
use std::collections::LinkedList;
は前後のノードへのポインタで実現してるらしい
赤黒木がどうこうとかいうものではとてもなさそう
ランダムアクセスなんか劇遅やろ
そもそもLinkedListのくせに
「リストの中間地点に要素を追加したり、削除する操作が効率的にできるのも連結リストの特徴ですが、Rust1.26の時点では、そのような操作のためのメソッドが用意されていません」
とはどういうつもりなんやと
https://qiita.com/garkimasera/items/a6df4d1cd99bc5010a5e
750デフォルトの名無しさん
2023/07/21(金) 02:25:21.34ID:bXmgkOZk LinkedList単体で使おうとするとベクタ系での実装に対するアドバンテージがほとんどのケースで存在しない
またソートを維持したいならLinkedListよりもBTreeMapが有利
他にもそれぞれ目的別に有利なデータ構造がある
>>748
Rustにも毎日10万ダウンロードされているLinkedHashMapがある
https://crates.io/crates/linked-hash-map
またソートを維持したいならLinkedListよりもBTreeMapが有利
他にもそれぞれ目的別に有利なデータ構造がある
>>748
Rustにも毎日10万ダウンロードされているLinkedHashMapがある
https://crates.io/crates/linked-hash-map
751デフォルトの名無しさん
2023/07/21(金) 02:46:28.99ID:yV1TyWhB アルゴリズムやデータ構造の性能を評価する上で、
よく使われてきた計算量という指標の実用性も微妙になっちゃったな
よく使われてきた計算量という指標の実用性も微妙になっちゃったな
752デフォルトの名無しさん
2023/07/21(金) 03:01:04.83ID:2VYXkkOH >>724
そのように番号で場所にアクセスするような
事に使用するにはArrayが有利。
単純なLinkedListは、番号でアクセスする用途には向いていない。
LinkedListを効率よく利用するには番号ではなくアドレスでアクセスする。
アドレスとは、ノードに付けられた唯一無二の名前。
この板の人達はその概念が全く理解できず、
いつまでも番号によるアクセスから頭が切り替えられないでいる。
そのように番号で場所にアクセスするような
事に使用するにはArrayが有利。
単純なLinkedListは、番号でアクセスする用途には向いていない。
LinkedListを効率よく利用するには番号ではなくアドレスでアクセスする。
アドレスとは、ノードに付けられた唯一無二の名前。
この板の人達はその概念が全く理解できず、
いつまでも番号によるアクセスから頭が切り替えられないでいる。
753デフォルトの名無しさん
2023/07/21(金) 03:38:53.42ID:uRvhRVMm ndarrayクレートはイテレータの高速化のためにZip構造体を使ってるって聞いたんだけど、Zip構造体ってどんなことやってんの?誰か教えて。
754デフォルトの名無しさん
2023/07/21(金) 03:40:00.01ID:bXmgkOZk755デフォルトの名無しさん
2023/07/21(金) 03:49:23.59ID:bXmgkOZk >>753
今一瞬しか見ていないがndarray::Zipは単なるタプル化
今一瞬しか見ていないがndarray::Zipは単なるタプル化
756デフォルトの名無しさん
2023/07/21(金) 08:45:47.57ID:JJPP05HL これがRustの実力だ
FirefoxがついにChromeよりも高速なブラウザに
https://gigazine.net/news/20230720-firefox-surpassed-chrome-speedometer/
FirefoxがついにChromeよりも高速なブラウザに
https://gigazine.net/news/20230720-firefox-surpassed-chrome-speedometer/
757デフォルトの名無しさん
2023/07/21(金) 09:30:46.83ID:wvgr6UMJ そろそろ、(Rust世代の知見を組み入れた新世代の)C++でフルスクラッチが試みられてもいい頃合だな
758デフォルトの名無しさん
2023/07/21(金) 09:59:32.61ID:7DNLJ1Kp >>756
記事にはRustのRの字もないのだが本当に早くなった要因なの?
記事にはRustのRの字もないのだが本当に早くなった要因なの?
759デフォルトの名無しさん
2023/07/21(金) 10:11:38.01ID:QmRMHzGa まぁそんな結論出せるわけない
その結論出すにはFireFoxと同じアルゴリズムで別の言語で組み直して実測するしかない
そんな事誰もしない
しかしRustは他の言語に比べて抽象度はやや高め(C++等とでは)だから速度面とかでは不利になるはず
しかしそのディスアドバンテージが跳ね返されるくらいの性能がある事は実証されたとしていいやろ
その結論出すにはFireFoxと同じアルゴリズムで別の言語で組み直して実測するしかない
そんな事誰もしない
しかしRustは他の言語に比べて抽象度はやや高め(C++等とでは)だから速度面とかでは不利になるはず
しかしそのディスアドバンテージが跳ね返されるくらいの性能がある事は実証されたとしていいやろ
760デフォルトの名無しさん
2023/07/21(金) 10:27:50.89ID:AI3linaX761デフォルトの名無しさん
2023/07/21(金) 11:44:03.63ID:wjGhTghi >>751
絶対的性能を評価するためのものではなくて
要素数の変化に対する性能変化の次数(order of growth)を分かりやすく把握するためのもの
“計算量”という誤った訳語から受ける印象に引きずられてはいけない
絶対的性能を評価するためのものではなくて
要素数の変化に対する性能変化の次数(order of growth)を分かりやすく把握するためのもの
“計算量”という誤った訳語から受ける印象に引きずられてはいけない
762デフォルトの名無しさん
2023/07/21(金) 11:51:22.56ID:7DNLJ1Kp トータルの消費時間を決定する要因は複数なんだから
律速段階も見極めずに最適化しても意味はない
律速段階も見極めずに最適化しても意味はない
763デフォルトの名無しさん
2023/07/21(金) 14:00:29.86ID:7qvd6Y5g >>759
抽象度が高いことによる速度面の不利はコンパイル時間の方で吸収してると思う
抽象度が高いことによる速度面の不利はコンパイル時間の方で吸収してると思う
764デフォルトの名無しさん
2023/07/21(金) 14:39:47.78ID:73tgjVOL FireFoxは糞ブラ
↓
Rustは糞言語
↓
C/C++勝利
↓
Rustは糞言語
↓
C/C++勝利
765デフォルトの名無しさん
2023/07/21(金) 15:20:14.46ID:a1CVw2PP >>763
w
w
766デフォルトの名無しさん
2023/07/21(金) 16:03:44.31ID:JG1QJO7i767デフォルトの名無しさん
2023/07/21(金) 19:13:00.15ID:EuuKLcB1 フィールズ賞を受賞してる日本人で広中さんって人がいるよな
広中さんは「自分は鈍才だが、森君は天才」と言ってるそうな(wikipedia調べ)
このスレで数学の才能がどうのと言ってる人はこれもう
ひょっとしたら森さんなのかもしれんな
森さんって人も、フィールズ賞受賞してる数学の天才
このスレすげーな
広中さんは「自分は鈍才だが、森君は天才」と言ってるそうな(wikipedia調べ)
このスレで数学の才能がどうのと言ってる人はこれもう
ひょっとしたら森さんなのかもしれんな
森さんって人も、フィールズ賞受賞してる数学の天才
このスレすげーな
768デフォルトの名無しさん
2023/07/21(金) 19:42:37.78ID:LLLiYepM 日本は30年以上フィールズ賞出てない
韓国は数年前出てる
しかもヲタ属性の好青年
韓国は数年前出てる
しかもヲタ属性の好青年
769デフォルトの名無しさん
2023/07/21(金) 19:48:10.45ID:EuuKLcB1 広中さんほどの人でも鈍才ってことなんだから
自分で数学の才能をアピってくるやつって
なんか凄い賞とか受賞してたりするんやろな
そうやって世界に認められてるんやろな
自分で数学の才能をアピってくるやつって
なんか凄い賞とか受賞してたりするんやろな
そうやって世界に認められてるんやろな
770デフォルトの名無しさん
2023/07/21(金) 20:26:35.88ID:xlwh4aD5 そんなことよりLinkedListとO記法の勉強しろよw
771デフォルトの名無しさん
2023/07/21(金) 20:45:01.52ID:7DNLJ1Kp フィールズ賞で思い出したけどモッチーはどうなった?
宇宙際タヒミューラー理論(調べずに記憶をもとに書いてるw)
はどうなった?
宇宙際タヒミューラー理論(調べずに記憶をもとに書いてるw)
はどうなった?
772デフォルトの名無しさん
2023/07/21(金) 20:50:46.81ID:AI3linaX 作品に罪はないと三回唱えれば
受賞が目標だった人もいつの間にか無罪が目標になってる
受賞が目標だった人もいつの間にか無罪が目標になってる
773デフォルトの名無しさん
2023/07/21(金) 21:00:24.54ID:xlwh4aD5774デフォルトの名無しさん
2023/07/21(金) 21:05:46.80ID:EuuKLcB1 世の中には凄い天才がいるもんですねえ
775デフォルトの名無しさん
2023/07/21(金) 21:08:55.93ID:7DNLJ1Kp776デフォルトの名無しさん
2023/07/21(金) 21:10:02.45ID:EmQ2vqLD もうつべですら名前出なくなった
ここくらいやろ
ここくらいやろ
777デフォルトの名無しさん
2023/07/21(金) 22:04:13.55ID:xlwh4aD5778デフォルトの名無しさん
2023/07/21(金) 22:30:59.27ID:1a4kRuD0 もしかしたら今数学板で暴れ回ってるアホここまで進出してるんかな
779デフォルトの名無しさん
2023/07/21(金) 22:49:21.36ID:xlwh4aD5 そいつが同一人物なのか知らないがそれだったら皮肉だな
LinkedListの間違いを指摘し俺は数学科出身だ
LinkedListの間違いを指摘し俺は数学科出身だ
780デフォルトの名無しさん
2023/07/21(金) 23:04:33.44ID:/OSxXnE2 モッチーが勝ちと言ってる時点で数学科卒の面汚しとわかる
781デフォルトの名無しさん
2023/07/21(金) 23:12:54.88ID:s5ilNDrf たまたま間違い指摘されたやつが数学科とかw
こうなるともう数学にマウントを取られ続ける人生だな
宿命というべきか
こうなるともう数学にマウントを取られ続ける人生だな
宿命というべきか
782デフォルトの名無しさん
2023/07/21(金) 23:32:01.38ID:AI3linaX 大衆の反逆とか、下民に足を引っ張られる問題に詳しい人がいて
じゃあ逆に上からマウントすれば問題ないよねって思いついたハッカーがいて
マウントが流行した
じゃあ逆に上からマウントすれば問題ないよねって思いついたハッカーがいて
マウントが流行した
783デフォルトの名無しさん
2023/07/21(金) 23:35:54.82ID:xlwh4aD5 安心しろ俺も数学は挫折した
ゼミの時の代数幾何の教科書で完全に心折れた
得意だったプログラミングの方に逃げただけだ
ゼミの時の代数幾何の教科書で完全に心折れた
得意だったプログラミングの方に逃げただけだ
784デフォルトの名無しさん
2023/07/22(土) 00:15:00.79ID:zZd5vg4P mojo🔥が完成したらrust失速する?
785デフォルトの名無しさん
2023/07/22(土) 00:25:44.41ID:GoncfkXA 本当に理想的な速度が出るならわからないが
まあ難しいと思う
同じ作者のswiftが速度的にはObjective-Cに比べると負けまくってる事実からそうそう簡単ではない
まあ難しいと思う
同じ作者のswiftが速度的にはObjective-Cに比べると負けまくってる事実からそうそう簡単ではない
786デフォルトの名無しさん
2023/07/22(土) 00:28:58.77ID:GoncfkXA Rustのようにゼロコスト抽象化を踏まえた言語デザインをしないと難しいでしょう
pythonに型を指定しただけで速くなるなら
とっくに速くなっている
pythonに型を指定しただけで速くなるなら
とっくに速くなっている
787デフォルトの名無しさん
2023/07/22(土) 00:32:22.74ID:zZd5vg4P そっか~
色々RustからパクってるみたいだけどPythonが多少マシになるならいいけど
色々RustからパクってるみたいだけどPythonが多少マシになるならいいけど
788デフォルトの名無しさん
2023/07/22(土) 00:44:48.84ID:htX2UcZa Mojoの設計は積極的にC++とRustを批判してるもんな
>> C++とRustは、デフォルトで値を渡す方法についてプログラマと奇妙な戦いを始めたことに注意してください。
>> テンプレートは通常、コピーを避けるために const& を使用しますが、これは int のような単純な型を渡すには非効率的な方法です。
>> 私たちは、直接アドレス指定する型レベルのアノテーションを提案します。これにより、言語内の引数に対してより広範囲に借用を使用できるようになります。
>> 値のデストラクターを定義する方法ができたので、それを自動的に呼び出す必要があります。
>> ローカル値バインディングのデストラクターはどこで呼び出すのでしょうか? 主な選択肢は 2 つあります。
>> 私は Swift モデルに従うことを推奨します。これによりメモリの使用量が削減され、実際に問題が発生するのを見たことがありません。
>> これに関するトレードオフは、これによりC++ プログラマーが驚くべき可能性があるということです。
>> C++とRustは、デフォルトで値を渡す方法についてプログラマと奇妙な戦いを始めたことに注意してください。
>> テンプレートは通常、コピーを避けるために const& を使用しますが、これは int のような単純な型を渡すには非効率的な方法です。
>> 私たちは、直接アドレス指定する型レベルのアノテーションを提案します。これにより、言語内の引数に対してより広範囲に借用を使用できるようになります。
>> 値のデストラクターを定義する方法ができたので、それを自動的に呼び出す必要があります。
>> ローカル値バインディングのデストラクターはどこで呼び出すのでしょうか? 主な選択肢は 2 つあります。
>> 私は Swift モデルに従うことを推奨します。これによりメモリの使用量が削減され、実際に問題が発生するのを見たことがありません。
>> これに関するトレードオフは、これによりC++ プログラマーが驚くべき可能性があるということです。
789デフォルトの名無しさん
2023/07/22(土) 01:08:17.00ID:GoncfkXA790デフォルトの名無しさん
2023/07/22(土) 01:08:28.87ID:htX2UcZa Mojoにはsafeエリアが無さそうだな
つまりプログラム全体がunsafeエリアであるC++と同じ方針をとっているのか
Rustのようにコンパイラがなにもかも保証してくれるsafeエリアを設けないと対抗できないよな
>> Mojoにはまだ適切なライフタイムマーカーのサポートがありません。
>> つまり、返された参照を推論できないため、Mojoはそれらをサポートしていません。
>> 明示的なポインタを渡すことで、安全でない参照を返したり保持したりできます。
>> Mojo は、オブジェクトを破壊できると判断するとすぐにオブジェクトを破壊します。
>> つまり、安全でない参照があるオブジェクトの有効期間を手動で延長する必要があります。
>> 左辺値が返されないということは、適切なライフタイム生涯サポートが構築されるまで、
>> 特定のパターンを実装するにはマジックキーワードが必要であることも意味します。
>> そのようなパターンの1つは、オブジェクトから安全でない参照を取得することです。
つまりプログラム全体がunsafeエリアであるC++と同じ方針をとっているのか
Rustのようにコンパイラがなにもかも保証してくれるsafeエリアを設けないと対抗できないよな
>> Mojoにはまだ適切なライフタイムマーカーのサポートがありません。
>> つまり、返された参照を推論できないため、Mojoはそれらをサポートしていません。
>> 明示的なポインタを渡すことで、安全でない参照を返したり保持したりできます。
>> Mojo は、オブジェクトを破壊できると判断するとすぐにオブジェクトを破壊します。
>> つまり、安全でない参照があるオブジェクトの有効期間を手動で延長する必要があります。
>> 左辺値が返されないということは、適切なライフタイム生涯サポートが構築されるまで、
>> 特定のパターンを実装するにはマジックキーワードが必要であることも意味します。
>> そのようなパターンの1つは、オブジェクトから安全でない参照を取得することです。
791デフォルトの名無しさん
2023/07/22(土) 01:30:10.61ID:psW1WegU Pythonは何しろユーザー数多いからね
それを取り込んじゃう戦略
Rustより有望かもね
それを取り込んじゃう戦略
Rustより有望かもね
792デフォルトの名無しさん
2023/07/22(土) 08:35:49.24ID:YLqzZrt5 Rustが馬鹿向けという評価には全く同意である
だからと言ってRustが馬鹿専用かというとそうでもない
上級者も馬鹿向けのRustを利用しては逝けないという障壁は全く無いのだから
きみらにとって現在はC/C++の習得コストは0かも知れないが
過去に初見からのC/C++の習得コストがどうだったか思い出して欲しい
だからと言ってRustが馬鹿専用かというとそうでもない
上級者も馬鹿向けのRustを利用しては逝けないという障壁は全く無いのだから
きみらにとって現在はC/C++の習得コストは0かも知れないが
過去に初見からのC/C++の習得コストがどうだったか思い出して欲しい
793デフォルトの名無しさん
2023/07/22(土) 08:44:04.68ID:YLqzZrt5794デフォルトの名無しさん
2023/07/22(土) 08:46:08.53ID:YLqzZrt5 >>767
>広中さんは「自分は鈍才だが、森君は天才」と言ってるそうな(wikipedia調べ)
wikipedia 観たけど「森君は天才」なんてどこにも書いてないぞ
森君ってひょっとして森毅のことか
>広中さんは「自分は鈍才だが、森君は天才」と言ってるそうな(wikipedia調べ)
wikipedia 観たけど「森君は天才」なんてどこにも書いてないぞ
森君ってひょっとして森毅のことか
795デフォルトの名無しさん
2023/07/22(土) 08:46:16.17ID:OpWxnY6j796デフォルトの名無しさん
2023/07/22(土) 09:07:15.86ID:eFQEbPGf797デフォルトの名無しさん
2023/07/22(土) 09:16:42.85ID:eFQEbPGf798デフォルトの名無しさん
2023/07/22(土) 10:52:28.80ID:wzDYyI8z 自己評価高すぎる爺って周りから煙たがられてそう
799デフォルトの名無しさん
2023/07/22(土) 12:47:34.51ID:tvxxAvU4 キャッシュメモリ云々の話は解決したの?
800デフォルトの名無しさん
2023/07/22(土) 14:05:46.99ID:o1deZ1gA それより病気の治療が先
801デフォルトの名無しさん
2023/07/22(土) 14:17:40.70ID:j4FWBx/w トポロジー理論を極めると細かい差異が見えなくなってドーナツとコーヒーカップが同じになるとか言うし
数学の才能があってアルゴリズムを極めた人間には実世界で計算量のオーダに付随する係数も見えなくなるんだろう
だから(1000000×N)と(3×N^2)は常に(3×N^2)の方が大きく見えるようになるし
それに違反する実測結果もすべて(高々有限個の)例外にしか見えなくなる
話が通じない場合も多々あるけど我々とは見えてる世界が違うと思って諦めるしかない
数学の才能があってアルゴリズムを極めた人間には実世界で計算量のオーダに付随する係数も見えなくなるんだろう
だから(1000000×N)と(3×N^2)は常に(3×N^2)の方が大きく見えるようになるし
それに違反する実測結果もすべて(高々有限個の)例外にしか見えなくなる
話が通じない場合も多々あるけど我々とは見えてる世界が違うと思って諦めるしかない
802デフォルトの名無しさん
2023/07/22(土) 14:27:29.52ID:psW1WegU そもそも数学が極まってる人にはとても見えないのだが...
803デフォルトの名無しさん
2023/07/22(土) 14:27:59.80ID:eFQEbPGf ここにいるやつらって基本、数学できるやつだと思うんよ
子供の頃から算数も数学も別に苦手としてなかっただろ?
全科目サボってた割に数学物理は点取りやすかっただろ?
だから理系の理学部、理工学部、工学部に進んだりしただろ?
でも
その時周りに「数学の才能がある」とか自らアピってるやつおった?
一体どれだけの才能に恵まれたら自らアピりだすんだろうな
子供の頃から算数も数学も別に苦手としてなかっただろ?
全科目サボってた割に数学物理は点取りやすかっただろ?
だから理系の理学部、理工学部、工学部に進んだりしただろ?
でも
その時周りに「数学の才能がある」とか自らアピってるやつおった?
一体どれだけの才能に恵まれたら自らアピりだすんだろうな
804デフォルトの名無しさん
2023/07/22(土) 15:49:30.96ID:YLqzZrt5 >>801
>数学の才能があってアルゴリズムを極めた人間には実世界で計算量のオーダに付随する係数も見えなくなるんだろう
簡単な例だと nCr の公式
Σ(n!/(r!(n-r)!))
馬鹿正直にこの通りにloopすると無駄な計算が多い
>数学の才能があってアルゴリズムを極めた人間には実世界で計算量のオーダに付随する係数も見えなくなるんだろう
簡単な例だと nCr の公式
Σ(n!/(r!(n-r)!))
馬鹿正直にこの通りにloopすると無駄な計算が多い
805デフォルトの名無しさん
2023/07/22(土) 16:16:53.88ID:kAWTuV72 なんかのAAに見えてしまう俺(ry
806デフォルトの名無しさん
2023/07/22(土) 16:38:56.50ID:j4FWBx/w シグマつけるとnCrの公式じゃなく2^nになるな
807デフォルトの名無しさん
2023/07/22(土) 16:52:58.46ID:NWfMWzFP 普通にかけて行ってO(nklog(n))くらいはすぐ思いつくけどもっと早い方法あるん?
808デフォルトの名無しさん
2023/07/22(土) 16:59:32.04ID:NWfMWzFP もちろん固定長レジスタで桁数の増大分も込めてO(knlog(n))ね
桁数の増大無視、純粋な掛け算、割り算回数なら掛け算2k-2回、割り算一回で2k-1回の四則演算で出せる
桁数がO(n)だから一回の乗算、除算はn×log(n)前後
もっと早くできる?
桁数の増大無視、純粋な掛け算、割り算回数なら掛け算2k-2回、割り算一回で2k-1回の四則演算で出せる
桁数がO(n)だから一回の乗算、除算はn×log(n)前後
もっと早くできる?
809デフォルトの名無しさん
2023/07/22(土) 17:08:56.89ID:GoncfkXA810デフォルトの名無しさん
2023/07/22(土) 17:11:59.52ID:NWfMWzFP あ、わかった
Binetの公式で少し早くなるのかな?
Binetの公式で少し早くなるのかな?
811デフォルトの名無しさん
2023/07/22(土) 17:20:36.85ID:j4FWBx/w812デフォルトの名無しさん
2023/07/22(土) 17:36:20.37ID:GoncfkXA813デフォルトの名無しさん
2023/07/22(土) 17:37:57.59ID:GoncfkXA まあとはいえそんな係数だけが大きい定数となるケースはほとんどないのでだけどね
そのような場合は間違いなくNが関与していることが多い
そのような場合は間違いなくNが関与していることが多い
814デフォルトの名無しさん
2023/07/22(土) 17:41:04.50ID:GoncfkXA 数学が苦手な人はこのように基本的な定義とか定理をきちんと理解してないことが多い
それなのにこの場合はおかしい!と言う
定義に戻ってみるとそんな場合のことは言ってないことが多い
それなのにこの場合はおかしい!と言う
定義に戻ってみるとそんな場合のことは言ってないことが多い
815デフォルトの名無しさん
2023/07/22(土) 17:46:37.41ID:GoncfkXA O記法はnを無限大に持って行った時の話
o記法はnを無限小に持って行った時の話
きちんと定義を確認しよう
これらは大学の微積でやるよ?
ちな数学での定義は厳密に書かれているから分かりにくいが直感的な理解の仕方を自分で考えるのが良い
o記法はnを無限小に持って行った時の話
きちんと定義を確認しよう
これらは大学の微積でやるよ?
ちな数学での定義は厳密に書かれているから分かりにくいが直感的な理解の仕方を自分で考えるのが良い
816デフォルトの名無しさん
2023/07/22(土) 17:55:32.12ID:XFIdOXKk817デフォルトの名無しさん
2023/07/22(土) 18:03:08.40ID:GoncfkXA 厳密に書くとそうなるだけだよ
無限大や無限小を正確に表すにはイプシロンデルタや上界下界の定義が必要
ただこれらはプログラマにとってはオーバースペックなので俺のいう上の直感的な定義を理解しとけばよろしい
無限大や無限小を正確に表すにはイプシロンデルタや上界下界の定義が必要
ただこれらはプログラマにとってはオーバースペックなので俺のいう上の直感的な定義を理解しとけばよろしい
818デフォルトの名無しさん
2023/07/22(土) 18:07:40.13ID:GoncfkXA 数学がある程度出来る人は正確な定義と
理解するための直感的な考え方を持ってる
しかし教科書ではその直感的な考え方を書くと同業者から不正確だ!って突っ込まれるので書きにくい
だから勉強しにくい
ほんと困ったものです
理解するための直感的な考え方を持ってる
しかし教科書ではその直感的な考え方を書くと同業者から不正確だ!って突っ込まれるので書きにくい
だから勉強しにくい
ほんと困ったものです
819デフォルトの名無しさん
2023/07/22(土) 18:16:40.96ID:GoncfkXA O記法やo記法はnを無限大/無限小に持って行った時
どういう関数になるのか?を表しているだけなのです!
どん!ね、簡単でしょ
どういう関数になるのか?を表しているだけなのです!
どん!ね、簡単でしょ
820デフォルトの名無しさん
2023/07/22(土) 18:20:17.39ID:sToEtmK8 京大の数学専攻に行った人知ってるけどまあひどいありさまだよ
中学の担任がまずそれで暴力教師
社会に出てあった人はうつ病で施設を行ったり来たり
もう一人は中退して地元帰ってきてギャンブルにのめりこんで今もパチプロみたいな生活してる
中学の担任がまずそれで暴力教師
社会に出てあった人はうつ病で施設を行ったり来たり
もう一人は中退して地元帰ってきてギャンブルにのめりこんで今もパチプロみたいな生活してる
821デフォルトの名無しさん
2023/07/22(土) 18:23:18.53ID:kAWTuV72 確率計算がさくっとできちゃうからパチプロできるんだったりして
雀士とかいうのも聞いたことある マンガとかでだけどw
雀士とかいうのも聞いたことある マンガとかでだけどw
822デフォルトの名無しさん
2023/07/22(土) 18:38:00.93ID:sToEtmK8 一般生活でも自然現象を見て脳内でモデル作って偏微分の境界条件とか気になる人が数学が出来る人
823デフォルトの名無しさん
2023/07/22(土) 18:46:30.74ID:sToEtmK8 その人たちの共通点は一つ
本人が理不尽だと感じることには絶対妥協しないで最後まで食い下がってくる
狂気を感じた
本人が理不尽だと感じることには絶対妥協しないで最後まで食い下がってくる
狂気を感じた
824デフォルトの名無しさん
2023/07/22(土) 20:16:03.51ID:DM7c04yB825デフォルトの名無しさん
2023/07/22(土) 20:38:27.64ID:bCf8Jd0F826デフォルトの名無しさん
2023/07/22(土) 20:53:08.15ID:tvxxAvU4 沢山数式暗記してても馬鹿は馬鹿なんだよな
827デフォルトの名無しさん
2023/07/22(土) 21:00:51.86ID:XFIdOXKk828デフォルトの名無しさん
2023/07/22(土) 21:06:42.21ID:YhxH2f1t829デフォルトの名無しさん
2023/07/22(土) 21:50:16.59ID:kdu4dn9d >> テンプレートは通常、コピーを避けるために const& を使用しますが、これは int のような単純な型を渡すには非効率的な方法です。
な?C++20便利だろ?
な?C++20便利だろ?
830デフォルトの名無しさん
2023/07/22(土) 22:36:24.52ID:nB6v7J6K 計算量でスモールoとか使う場所あるの
831デフォルトの名無しさん
2023/07/22(土) 23:22:57.00ID:kdu4dn9d そういえばJAXAに居たとき使ってたわ
832デフォルトの名無しさん
2023/07/22(土) 23:43:43.06ID:pjILcF77 ロケットが失敗続きな理由がなんとなくわかった
833デフォルトの名無しさん
2023/07/22(土) 23:47:22.27ID:kdu4dn9d 俺が辞めたからだろ?
834デフォルトの名無しさん
2023/07/23(日) 08:32:47.35ID:YG1/7f33 マジレスすれば、いかに優秀でも一人抜けたくらいで…といったところだが、
人材流出ネタを聞くたびに、ひょっとして…と思ってしまう自分が情けない
人材流出ネタを聞くたびに、ひょっとして…と思ってしまう自分が情けない
835デフォルトの名無しさん
2023/07/23(日) 09:44:20.13ID:mLgzCYW9 ロブ・パイクの「プログラミング5カ条」
ルール2:処理速度を測定すること。測定して、コードのある部分が他の部分を圧倒しない限り、速度の調整をしてはいけない。
ルール3:派手なアルゴリズムは、入力値のnが小さいと処理が遅い。そして通常、nは小さい。派手なアルゴリズムは大きな定数を持っている。nが頻繁に大きくなることがないなら、派手なアルゴリズムは使わないようにすること。(nが大きくなっても、まずルール2を適用すること)
https://gigazine.net/news/20200817-rob-pike-5-rules-programming/
ルール2:処理速度を測定すること。測定して、コードのある部分が他の部分を圧倒しない限り、速度の調整をしてはいけない。
ルール3:派手なアルゴリズムは、入力値のnが小さいと処理が遅い。そして通常、nは小さい。派手なアルゴリズムは大きな定数を持っている。nが頻繁に大きくなることがないなら、派手なアルゴリズムは使わないようにすること。(nが大きくなっても、まずルール2を適用すること)
https://gigazine.net/news/20200817-rob-pike-5-rules-programming/
836デフォルトの名無しさん
2023/07/23(日) 09:55:53.38ID:DSw9DmtI LinkedListの挿入削除は常にO(1)!だから最強!
草
オーダ記法を最近覚えて得意げに使ってそう
Javaの入門本でもArrayListとLinkedListの使い分けはこういう用途でやりましょうって書いてあるよねw
草
オーダ記法を最近覚えて得意げに使ってそう
Javaの入門本でもArrayListとLinkedListの使い分けはこういう用途でやりましょうって書いてあるよねw
837デフォルトの名無しさん
2023/07/23(日) 10:58:23.71ID:bnyHswx7 給料もらってるのに辞めるとか、課金してもサービス終了するようでは
フリーソフトに対する優位性がなくなってしまう
フリーソフトに対する優位性がなくなってしまう
838デフォルトの名無しさん
2023/07/23(日) 11:19:29.58ID:kMNWXVHy >>804 の実装で一番早いのは
パスカルの三角形で縦に足して行くやり方の気がする
パスカルの三角形で縦に足して行くやり方の気がする
839デフォルトの名無しさん
2023/07/23(日) 11:39:51.12ID:kMNWXVHy840デフォルトの名無しさん
2023/07/23(日) 11:43:20.98ID:NhS1+0R5 クライマックスシリーズはまだはやい
841デフォルトの名無しさん
2023/07/23(日) 11:48:32.16ID:kMNWXVHy842デフォルトの名無しさん
2023/07/23(日) 11:49:16.91ID:kMNWXVHy >>834 だった
843デフォルトの名無しさん
2023/07/23(日) 11:51:24.56ID:kMNWXVHy844デフォルトの名無しさん
2023/07/23(日) 12:06:43.78ID:GuX7KEu3845デフォルトの名無しさん
2023/07/23(日) 14:11:34.49ID:OiBoM91I Rustは、コンパイル速度が遅いと言う噂があるが、
VC++(msvc、precompiled header利用時)と比べると
どうなんだ。
VC++(msvc、precompiled header利用時)と比べると
どうなんだ。
846デフォルトの名無しさん
2023/07/23(日) 14:12:51.60ID:OiBoM91I コンパイル速度は、本を見てるだけでは分からない事
の一つだな。そして大規模開発には物凄く重要となる。
の一つだな。そして大規模開発には物凄く重要となる。
847デフォルトの名無しさん
2023/07/23(日) 15:04:02.22ID:ILZNl6Xo さすがにそこは、clangと比べるべきでは
848デフォルトの名無しさん
2023/07/23(日) 15:47:54.37ID:kMNWXVHy >>844
それがどうかしましたか?
それがどうかしましたか?
849デフォルトの名無しさん
2023/07/23(日) 15:55:24.23ID:ZTC84cTM let hoge = "a";
println!("{:2}後ろ",hoge);
let hoge = "あ";
println!("{:2}後ろ",hoge);
表示幅を揃えたいのですが上のやり方だと
後者の「あ」と「後ろ」の間にスペース1文字入ってしまいます
hogeに「あ」か「a」かどちらが入るか不定の時
どうするのが定石?
println!("{:2}後ろ",hoge);
let hoge = "あ";
println!("{:2}後ろ",hoge);
表示幅を揃えたいのですが上のやり方だと
後者の「あ」と「後ろ」の間にスペース1文字入ってしまいます
hogeに「あ」か「a」かどちらが入るか不定の時
どうするのが定石?
850デフォルトの名無しさん
2023/07/23(日) 16:38:44.72ID:bnyHswx7 traitを作る
とりあえず定石無視でimplする
とりあえず定石無視でimplする
851デフォルトの名無しさん
2023/07/23(日) 16:40:47.70ID:OMFtuUSH852デフォルトの名無しさん
2023/07/23(日) 18:04:59.73ID:hD/uYp9Y メモリ安全性は大規模開発時に有利に働く特徴なのだが、
コンパイル速度の遅さなど、Rustにはそれとは逆の特徴も
持っており、ややこしいぞ。
コンパイル速度の遅さなど、Rustにはそれとは逆の特徴も
持っており、ややこしいぞ。
853デフォルトの名無しさん
2023/07/23(日) 21:22:05.78ID:lmJrnSr9854デフォルトの名無しさん
2023/07/23(日) 22:53:08.93ID:bnyHswx7 コストカットに取り憑かれたら
文字列cloneしてスペースを付け足して返すコストも
許可がないと支払えない人間になったりして
知らんけど
文字列cloneしてスペースを付け足して返すコストも
許可がないと支払えない人間になったりして
知らんけど
855デフォルトの名無しさん
2023/07/24(月) 03:35:04.61ID:tlNrTE5b C++だと、ライブラリが大きくなってもコンパイル速度が
遅くなることは無い。異常に大きくなった場合には
リンク速度が遅くなることが有る程度だが、通常は
遅さを感じることが無い程度に留まる。
Rustだと、crateが大きくなったりcrateの個数が増えると
コンパイルが遅くなったりするの?
遅くなることは無い。異常に大きくなった場合には
リンク速度が遅くなることが有る程度だが、通常は
遅さを感じることが無い程度に留まる。
Rustだと、crateが大きくなったりcrateの個数が増えると
コンパイルが遅くなったりするの?
856デフォルトの名無しさん
2023/07/24(月) 04:35:03.66ID:8nghHebx ブラウザにはJSがあるから
C++やRustのコード修正と再コンパイルをすることなくJSのコードを修正すればいい
これが大規模開発ではないというなら小規模で十分
C++やRustのコード修正と再コンパイルをすることなくJSのコードを修正すればいい
これが大規模開発ではないというなら小規模で十分
857デフォルトの名無しさん
2023/07/24(月) 07:01:01.92ID:E3S0vo4U どうやろ?
コンパイラの暗黙の了解でサイズに対して処理は線形にならなければならないというのがある
流石にその範囲ではあるんじゃないの?
ただ線形は線形でも係数がでかいんかな
それだけならコンピュータが早くなれば体感的には改善していくはず
コンパイラの暗黙の了解でサイズに対して処理は線形にならなければならないというのがある
流石にその範囲ではあるんじゃないの?
ただ線形は線形でも係数がでかいんかな
それだけならコンピュータが早くなれば体感的には改善していくはず
858デフォルトの名無しさん
2023/07/24(月) 08:50:15.20ID:b4teMFwb Rustのcratesの依存関係でcargoが予期せぬものをいっぱいダウンロードするから
遅い回線だと(一回目の)コンパイル(というかコンパイルの準備)は超遅くなる
遅い回線だと(一回目の)コンパイル(というかコンパイルの準備)は超遅くなる
859デフォルトの名無しさん
2023/07/24(月) 11:25:58.22ID:Jt1K3EYN デフォルトが全部静的リンクだからそれが遅いのもある
860デフォルトの名無しさん
2023/07/24(月) 11:35:01.87ID:DOk3bTYa >>858
その「遅い回線」って何?
その「遅い回線」って何?
861デフォルトの名無しさん
2023/07/24(月) 13:30:21.48ID:LicyyNi9862デフォルトの名無しさん
2023/07/24(月) 13:34:38.77ID:DOk3bTYa863デフォルトの名無しさん
2023/07/24(月) 13:36:23.66ID:DOk3bTYa 通信インフラってのは
ソフトウェアの複製がゼロコストなのと違って
コストが掛かるんだよ
ソフトウェアの複製がゼロコストなのと違って
コストが掛かるんだよ
864デフォルトの名無しさん
2023/07/24(月) 13:39:12.35ID:LicyyNi9 >>862
左翼は能力の差まで無視しようとするで。
左翼は能力の差まで無視しようとするで。
865デフォルトの名無しさん
2023/07/24(月) 13:51:35.63ID:DOk3bTYa866デフォルトの名無しさん
2023/07/24(月) 13:59:42.61ID:7fuealYq 自分用には、そこそこ全体がコンパクトな方が好きかなあ
仕事用には、回線も装置も会社のものだから兎も角なんだが
仕事用には、回線も装置も会社のものだから兎も角なんだが
867デフォルトの名無しさん
2023/07/24(月) 14:04:31.32ID:LicyyNi9 「コンパイル速度が遅い」という噂が立ってるんですが、
実際は、crateのダウンロード速度が遅い、ということなんですか?
実際は、crateのダウンロード速度が遅い、ということなんですか?
868デフォルトの名無しさん
2023/07/24(月) 14:05:59.45ID:LicyyNi9869デフォルトの名無しさん
2023/07/24(月) 14:07:33.73ID:1ixoDG3j >>868
例えば? 煽りではなく
例えば? 煽りではなく
870デフォルトの名無しさん
2023/07/24(月) 15:00:19.41ID:056Z4jSG イヤちゃうやろ
流石にそれはコンパイラの作業量が純粋に多いから遅いでしょ
そりゃC++と比べて早くなるわけない
チェックしてる事多いんだから
流石にそれはコンパイラの作業量が純粋に多いから遅いでしょ
そりゃC++と比べて早くなるわけない
チェックしてる事多いんだから
871デフォルトの名無しさん
2023/07/24(月) 15:30:37.55ID:9sf7J+PW >>861
それはプログラム板で主張することじゃないやろ
それはプログラム板で主張することじゃないやろ
872デフォルトの名無しさん
2023/07/24(月) 16:03:16.33ID:7fuealYq C++派だが、C++もたいがい遅いだろ
pchとか使うのが習慣化してるけど
そういや、結構前からmoduleってのが使えるけど、きちんと使ったことないな。。
pchとか使うのが習慣化してるけど
そういや、結構前からmoduleってのが使えるけど、きちんと使ったことないな。。
873デフォルトの名無しさん
2023/07/24(月) 17:44:58.93ID:u3xro2aJ874デフォルトの名無しさん
2023/07/24(月) 18:20:23.66ID:dGeJrBxo 10人必要っぽい場所に20人投入すればいいのに
10人投入してめちゃくちゃになってから10人追加するやつって何なの?
戦力の逐次投入なの?
10人投入してめちゃくちゃになってから10人追加するやつって何なの?
戦力の逐次投入なの?
875デフォルトの名無しさん
2023/07/24(月) 18:51:49.12ID:DOk3bTYa876デフォルトの名無しさん
2023/07/24(月) 21:47:00.51ID:Zw6srC2c877デフォルトの名無しさん
2023/07/24(月) 22:22:14.29ID:dGeJrBxo 自己責任ってあれほど言ったのに
自己とは誰なのか
誰も知らないんだよな
自己とは誰なのか
誰も知らないんだよな
878デフォルトの名無しさん
2023/07/25(火) 01:43:34.89ID:bta56IUp 多次元配列のライブラリの演算スピードがまだnumpyより倍くらい遅い。また、速くできる要素は利便性の観点から悩ましい。rayonを使えばnumpyの倍速くらいにはできるようになった。
879デフォルトの名無しさん
2023/07/25(火) 03:35:47.01ID:w8nK1FpQ880デフォルトの名無しさん
2023/07/25(火) 08:41:35.71ID:UPZxbC6+ スピードが必要な部分だけRustを使わないようにすれば解決
881デフォルトの名無しさん
2023/07/25(火) 08:54:51.87ID:k8WJtY+U そういえば君らのメモリ管理の会話でLinkedListの使い道思い出したわ
Rustやその他の言語側じゃなくてOS側のメモリ管理にLinkedList使われてるわ
Rustやその他の言語側じゃなくてOS側のメモリ管理にLinkedList使われてるわ
882デフォルトの名無しさん
2023/07/25(火) 09:01:07.57ID:k8WJtY+U883デフォルトの名無しさん
2023/07/25(火) 09:02:56.16ID:k8WJtY+U >>880
unsafe {} 便利ですね判ります
unsafe {} 便利ですね判ります
884デフォルトの名無しさん
2023/07/25(火) 09:03:45.28ID:P1fUbQNp まぁ調べてみると確かに行列配列系の計算は“生rust”だと難しいんやろな
でかいデータを高速に捌くには“参照”をうまく使いこなしてなるべく“コピー”の回数を減らすくらいしかアルゴリズムの改善は見込めない
しかしrustは安全性の観点からC++のそれより所有権、生存期間の抽象度、制約を一段引き上げてる
だからそれでも速度が欲しいならunsafeで囲って危ない橋を渡るしかない、実際rcとかarcのソース読むとundafeだらけやしな
逆に言うとユーザーがその“危ない橋”を渡らなくても済むようにライブラリがあるとも言える
でかいデータを高速に捌くには“参照”をうまく使いこなしてなるべく“コピー”の回数を減らすくらいしかアルゴリズムの改善は見込めない
しかしrustは安全性の観点からC++のそれより所有権、生存期間の抽象度、制約を一段引き上げてる
だからそれでも速度が欲しいならunsafeで囲って危ない橋を渡るしかない、実際rcとかarcのソース読むとundafeだらけやしな
逆に言うとユーザーがその“危ない橋”を渡らなくても済むようにライブラリがあるとも言える
885デフォルトの名無しさん
2023/07/25(火) 13:32:44.33ID:cCDBQCCP >>884
ArcやRcは使用はやめた。マルチスレッド化の時にだるいことが多いから。仕方ないのでreshapeメソッドとかでは配列をクローンすることにした。
ArcやRcは使用はやめた。マルチスレッド化の時にだるいことが多いから。仕方ないのでreshapeメソッドとかでは配列をクローンすることにした。
886デフォルトの名無しさん
2023/07/25(火) 13:34:21.22ID:cCDBQCCP あと、行列の計算とかでループのスピードを速くするために次元はconst N: usizeを使ってる。
887デフォルトの名無しさん
2023/07/25(火) 13:51:24.76ID:nk58GX8+ 海外のサイトを見ていたら、Rustは、インクリメンタル
ビルドが遅いらしい。だから、ソースを細かく分けすぎると
遅くなるのかも知れない。しかし、ビルドの高速化の
ために発明されたのがインクリメンタルビルドだった
のだから、本末転倒の厄介な問題だ。
なんでも、リンクに10秒くらいかかるのだとか。
ある人によれば一時間くらいかかったと言う。
ビルドが遅いらしい。だから、ソースを細かく分けすぎると
遅くなるのかも知れない。しかし、ビルドの高速化の
ために発明されたのがインクリメンタルビルドだった
のだから、本末転倒の厄介な問題だ。
なんでも、リンクに10秒くらいかかるのだとか。
ある人によれば一時間くらいかかったと言う。
888デフォルトの名無しさん
2023/07/25(火) 13:53:33.03ID:nk58GX8+ >>887
crateの初回使用の時にフルコンパイルされる
ので遅いのは、それはそれで困るが、ギリギリセーフ
だとしても、それ以上に厄介なのは、自分のソースを
少しいじってビルドしなおしても、リンクはどうしても
必要だから、そこで10秒もかかってしまっては
開発は非常にストレスがかかってしまうことだ。
crateの初回使用の時にフルコンパイルされる
ので遅いのは、それはそれで困るが、ギリギリセーフ
だとしても、それ以上に厄介なのは、自分のソースを
少しいじってビルドしなおしても、リンクはどうしても
必要だから、そこで10秒もかかってしまっては
開発は非常にストレスがかかってしまうことだ。
889デフォルトの名無しさん
2023/07/25(火) 13:58:22.63ID:nk58GX8+ 中くらいの大きさのプロジェクトで、
structの中の一行を変えるだけで、5分かかって
困っていると言う報告も見つけた。
structの中の一行を変えるだけで、5分かかって
困っていると言う報告も見つけた。
890デフォルトの名無しさん
2023/07/25(火) 14:00:01.53ID:uSv6E5ak >>888
リンカーは共通だろうからC/C++と差はないと思うのだが?
リンカーは共通だろうからC/C++と差はないと思うのだが?
891デフォルトの名無しさん
2023/07/25(火) 14:15:10.14ID:nk58GX8+ https://www.reddit.com/r/rust/comments/11vrzme/help_me_love_rust_compilation_time/
Hey all, I've been writing software for about 15 years, Started from VB, .NET (C#), Java, C++, JS (Node), Scala and Go.
I've been hearing about how Rust is great from everyone ! But when I started learning it one thing drove me nuts: compilation time.
Compared to Go (my main language today) I find myself waiting and waiting for the compilation to end.
If you take any medium sized OSS project and compile once, it takes ages for the first time (3,4 minutes, up to 10 !) but even if I change one character in a string it can still take around a minute.
Hey all, I've been writing software for about 15 years, Started from VB, .NET (C#), Java, C++, JS (Node), Scala and Go.
I've been hearing about how Rust is great from everyone ! But when I started learning it one thing drove me nuts: compilation time.
Compared to Go (my main language today) I find myself waiting and waiting for the compilation to end.
If you take any medium sized OSS project and compile once, it takes ages for the first time (3,4 minutes, up to 10 !) but even if I change one character in a string it can still take around a minute.
892デフォルトの名無しさん
2023/07/25(火) 14:31:37.57ID:iTChcdyR cargo 使ってるときに rust にリンカオプション教える方法教えて
893デフォルトの名無しさん
2023/07/25(火) 14:32:50.71ID:nk58GX8+ 海外のサイトを見ていて考えられる要因の候補
・マクロの使いすぎ。Rustのマクロは乱用すると遅いらしい。
・メモリー不足で仮想記憶が働いてしまっている?
・マクロの使いすぎ。Rustのマクロは乱用すると遅いらしい。
・メモリー不足で仮想記憶が働いてしまっている?
894デフォルトの名無しさん
2023/07/25(火) 14:37:55.45ID:nk58GX8+ Rustは、ファイル単位でなく crate 単位でコンパイルするらしい。
だから、あるソースファイルの1行を直してもcrate全体の
コンパイル時間が必要となる。
C++が、ファイル単位でコンパイルするのと対照的となる。
Q: Does Rust compile fast?
A: For incremental builds, Rust will take longer to compile
than C++ (i.e. C++ wins).
This is because Rust compiles one crate at a time,
rather than one file at a time like in C++,
so Rust has to look at more code after each small change.
Jan 5, 2023
だから、あるソースファイルの1行を直してもcrate全体の
コンパイル時間が必要となる。
C++が、ファイル単位でコンパイルするのと対照的となる。
Q: Does Rust compile fast?
A: For incremental builds, Rust will take longer to compile
than C++ (i.e. C++ wins).
This is because Rust compiles one crate at a time,
rather than one file at a time like in C++,
so Rust has to look at more code after each small change.
Jan 5, 2023
895デフォルトの名無しさん
2023/07/25(火) 14:41:52.08ID:MikqYz6X でcrateってのは複数ファイルに跨ることが多いわけ?
それとも1ファイルに複数のcrateが実装されることが多いわけ?
それとも1ファイルに複数のcrateが実装されることが多いわけ?
896デフォルトの名無しさん
2023/07/25(火) 14:49:22.82ID:nk58GX8+ >>895
前者だろう。
前者だろう。
897デフォルトの名無しさん
2023/07/25(火) 14:54:39.48ID:MikqYz6X898デフォルトの名無しさん
2023/07/25(火) 14:55:34.04ID:iTChcdyR create の document の comment coverage てやっぱり判りにくいな
899デフォルトの名無しさん
2023/07/25(火) 17:54:05.55ID:eTFG8/xx Rustもまだまだだなー
Rustを始めるにはまだ早いな(時期が悪いおじさん式
Rustを始めるにはまだ早いな(時期が悪いおじさん式
900デフォルトの名無しさん
2023/07/25(火) 18:01:39.24ID:UOy+ke99 incremental buildはcodegen unit単位
開発者が明示的にリビルドを指示できるのはcrate単位
incremental buildなら変更が不要なcodegen unitはリビルドされない
codegen unitは1モジュールで2つ(non-genericとgeneric)
デフォルトでは1crateにつきcodegen unitの上限は256なのでそれを超えるようならマージされる
モジュール単位なのでファイル単位よりも細かい
開発者が明示的にリビルドを指示できるのはcrate単位
incremental buildなら変更が不要なcodegen unitはリビルドされない
codegen unitは1モジュールで2つ(non-genericとgeneric)
デフォルトでは1crateにつきcodegen unitの上限は256なのでそれを超えるようならマージされる
モジュール単位なのでファイル単位よりも細かい
901デフォルトの名無しさん
2023/07/25(火) 19:11:44.72ID:nk58GX8+ 難しいね。
902デフォルトの名無しさん
2023/07/25(火) 23:14:21.10ID:PfWx6dVw Cの (shared) objectファイルには型情報がない
というかアセンブラの出力と同じ形式にしないとアセンブラを使いにくい
型を無視すればリンクが速い
ヘッダファイルを厳密に管理し、なおかつヘッダを変更しまくれば
C++やRustと似たような遅さになるかもね
というかアセンブラの出力と同じ形式にしないとアセンブラを使いにくい
型を無視すればリンクが速い
ヘッダファイルを厳密に管理し、なおかつヘッダを変更しまくれば
C++やRustと似たような遅さになるかもね
903デフォルトの名無しさん
2023/07/26(水) 03:55:53.44ID:lJlGHJrp ああだから良く判らないcratesが乱立してるのか
cratesに分割すればするほど効率は上がる
crates.ioは氾濫して収拾付かなくなる
cratesに分割すればするほど効率は上がる
crates.ioは氾濫して収拾付かなくなる
904デフォルトの名無しさん
2023/07/26(水) 12:19:34.24ID:kTr42gXw >>902
C++はRustほど遅くない
C++はRustほど遅くない
905デフォルトの名無しさん
2023/07/26(水) 14:36:33.56ID:+VPKYlg4 cast するにも int x から (long long)x でコンパイルされるのと
x: i32 から x as i64 でコンパイルされるのと天と地ほどの時間差がありそう
x: i32 から x as i64 でコンパイルされるのと天と地ほどの時間差がありそう
906デフォルトの名無しさん
2023/07/26(水) 18:02:28.67ID:oS2bmI+b コンパイル時間かかるのは多相型から単相型を導出するとこじゃないの?
907デフォルトの名無しさん
2023/07/26(水) 18:32:17.02ID:JPp8jJPL rust好きだけどJS/TSエコシステム並みにcrateの粒度が小さいのはちょっと厳しいよな。
apacheみたいなのに集約するのはもう時代じゃないんだろうけどさ。
apacheみたいなのに集約するのはもう時代じゃないんだろうけどさ。
908デフォルトの名無しさん
2023/07/26(水) 18:57:07.57ID:jPIzcFjy いつのまにかWindowsでAndroidアプリが動くようになってる
これは便利
これは便利
909デフォルトの名無しさん
2023/07/26(水) 20:27:27.27ID:fbe27uY+910デフォルトの名無しさん
2023/07/27(木) 00:57:46.43ID:as7IkMsZ 型パラメータの候補が複数見つかったらすぐに諦めて競合エラー吐いてる印象
cargo checkだけだと割と軽いからジェネリクスの実体化(コード生成)が重いのかもしれない
型ごとに使ってる処理を割り出して必要な分だけ生成してそうだし
cargo checkだけだと割と軽いからジェネリクスの実体化(コード生成)が重いのかもしれない
型ごとに使ってる処理を割り出して必要な分だけ生成してそうだし
911デフォルトの名無しさん
2023/07/27(木) 02:10:00.11ID:+a559wq5 >>907
私はnumpy並みにデカいパッケージを作ろうと思ってますよ。
私はnumpy並みにデカいパッケージを作ろうと思ってますよ。
912デフォルトの名無しさん
2023/07/27(木) 08:24:40.27ID:mogDSubD >>909
ウソかホントか知らんけど上の方の話だとRustのコンパイルが遅いのはファイル跨ぎの再コンパイルをやらされるからとか
なぜファイル跨ぎの再コンパイルが多発するかといえばやはり多相性の問題じゃないの?
posix系のアーカイバは分割コンパイルを可能とするために関数呼び出しの方法を標準化してる、すなわち呼び出し引数の数と種類が与えられた時、その引数を関数側のローカルスタックに順にセットして呼び出す、そのルールがわかっていれば呼び出し側、呼び出され側は引数の種類と順番がわかっていれば分割してコンパイルできる、たとえはCだとそれを実現するために呼び出し側は関数側の内容全部をしらなくてもよいが引数の種類だけはコンパイラに教えないといけない、それがプロトタイプ宣言
ところが多相型を利用する言語では呼び出し側と呼び出され側の内容が相が多相型だとposix標準ではリンクの方法が定められてないからこのシステムを使う事ができない
なのでHaskellではファイルにまたがる最上位の多相型は明示しないと行けない、明示しない物はコンパイラが勝手に単相化すると言う単相制限(monomorphism restriction)をつけて対処する
一方でRustはその手の制限は設けない、好きにやれと言う立場で単相型決定に必要な“型方程式”に関わるものがファイルを跨いで巨大化する事を禁止しない、その代わりコンパイルが遅くなるのは我慢しろと言う立場なんでしょ?
ウソかホントか知らんけど上の方の話だとRustのコンパイルが遅いのはファイル跨ぎの再コンパイルをやらされるからとか
なぜファイル跨ぎの再コンパイルが多発するかといえばやはり多相性の問題じゃないの?
posix系のアーカイバは分割コンパイルを可能とするために関数呼び出しの方法を標準化してる、すなわち呼び出し引数の数と種類が与えられた時、その引数を関数側のローカルスタックに順にセットして呼び出す、そのルールがわかっていれば呼び出し側、呼び出され側は引数の種類と順番がわかっていれば分割してコンパイルできる、たとえはCだとそれを実現するために呼び出し側は関数側の内容全部をしらなくてもよいが引数の種類だけはコンパイラに教えないといけない、それがプロトタイプ宣言
ところが多相型を利用する言語では呼び出し側と呼び出され側の内容が相が多相型だとposix標準ではリンクの方法が定められてないからこのシステムを使う事ができない
なのでHaskellではファイルにまたがる最上位の多相型は明示しないと行けない、明示しない物はコンパイラが勝手に単相化すると言う単相制限(monomorphism restriction)をつけて対処する
一方でRustはその手の制限は設けない、好きにやれと言う立場で単相型決定に必要な“型方程式”に関わるものがファイルを跨いで巨大化する事を禁止しない、その代わりコンパイルが遅くなるのは我慢しろと言う立場なんでしょ?
913デフォルトの名無しさん
2023/07/27(木) 08:30:54.30ID:+a559wq5 >>912
Rustはライブラリとかのバージョン管理を徹底しているからでない?実際、すべてのライブラリのバージョンはCargo.tomlに明記されてるし、rustのエディションもここに明記されてる。この結果コードの一部を変えただけでもまずCargo.tomlの中身に変更がないかコンパイラが見ないといけない。その後、Cargo.tomlに記載されたライブラリを使ってるすべてののファイルのライブラリ使用に関してチェックしないといけなくなり、これによって少しの変更でもクレート全体の再コンパイルに繋がっているのでは?
Rustはライブラリとかのバージョン管理を徹底しているからでない?実際、すべてのライブラリのバージョンはCargo.tomlに明記されてるし、rustのエディションもここに明記されてる。この結果コードの一部を変えただけでもまずCargo.tomlの中身に変更がないかコンパイラが見ないといけない。その後、Cargo.tomlに記載されたライブラリを使ってるすべてののファイルのライブラリ使用に関してチェックしないといけなくなり、これによって少しの変更でもクレート全体の再コンパイルに繋がっているのでは?
914デフォルトの名無しさん
2023/07/27(木) 08:54:12.15ID:GoQM94Wc >>912
Nimはもっと良いぞ
Nimはもっと良いぞ
915デフォルトの名無しさん
2023/07/27(木) 08:54:59.21ID:xfctCHbO >>913
イヤ、ライブラリのタイムスタンプが違えばとかいうのはCでもC++でも同じ、それで言語間の差はない
C,C++とRust,Monomorphism restriction外したHaskellに差があってコンパイル上の、特に分割コンパイル絡みの差がどこで出てるかの話なんだから
イヤ、ライブラリのタイムスタンプが違えばとかいうのはCでもC++でも同じ、それで言語間の差はない
C,C++とRust,Monomorphism restriction外したHaskellに差があってコンパイル上の、特に分割コンパイル絡みの差がどこで出てるかの話なんだから
916デフォルトの名無しさん
2023/07/27(木) 08:57:49.70ID:4+9enMhq GC無し最速動作のできないNimは論外でスレ対象外
917デフォルトの名無しさん
2023/07/27(木) 09:05:43.60ID:xfctCHbO 一例はお題スレで出てた答え
https://itest.5ch.net/mevius/test/read.cgi/tech/1668333636/969
このfooという関数の型はこのソースだけでは決定できない
呼び出した側がvec<i8>とかvec<i32>とか呼び出した側の要求に応じて初めて単相型が決まる、その時点で初めてスタックに何がどんな順番で積まれるのかが決まる
なのでこの場合posix標準のライブラリ管理の方式では呼び出し側と呼び出され側を別々に分割コンパイルできない
抜粋 (全角スペース使用)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len())).map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
https://itest.5ch.net/mevius/test/read.cgi/tech/1668333636/969
このfooという関数の型はこのソースだけでは決定できない
呼び出した側がvec<i8>とかvec<i32>とか呼び出した側の要求に応じて初めて単相型が決まる、その時点で初めてスタックに何がどんな順番で積まれるのかが決まる
なのでこの場合posix標準のライブラリ管理の方式では呼び出し側と呼び出され側を別々に分割コンパイルできない
抜粋 (全角スペース使用)
fn foo(input: u32) -> impl Iterator<Item = u32> {
let table: Vec<u32> = bits_iter(input)
.map(|p| 1 << p)
.collect();
(0..(1 << table.len())).map(move |bits| {
bits_iter(bits)
.map(|p| table[p as usize])
.sum()
})
}
918デフォルトの名無しさん
2023/07/27(木) 09:12:08.48ID:xfctCHbO おっと、この例は中身はu32固定だったな
多相性はiteratorのところだった
まぁ本質同じ、呼び出され側が多相型の場合、呼び出し側の要求と折り合いをどこでつけるのか決定するには両方のソースの型情報が必要、そしてこのような多相型の標準化はposixのライブラリシステムにはない
多相性はiteratorのところだった
まぁ本質同じ、呼び出され側が多相型の場合、呼び出し側の要求と折り合いをどこでつけるのか決定するには両方のソースの型情報が必要、そしてこのような多相型の標準化はposixのライブラリシステムにはない
919デフォルトの名無しさん
2023/07/27(木) 09:14:53.79ID:4+9enMhq >>917
そのfooにジェネリック無いだろ
そのfooにジェネリック無いだろ
920デフォルトの名無しさん
2023/07/27(木) 09:28:11.91ID:4+9enMhq921デフォルトの名無しさん
2023/07/27(木) 09:48:28.92ID:GoQM94Wc >>917-918
ωωω
ωωω
922デフォルトの名無しさん
2023/07/27(木) 10:03:28.53ID:+SEMblDr923デフォルトの名無しさん
2023/07/27(木) 10:12:31.52ID:+SEMblDr924デフォルトの名無しさん
2023/07/27(木) 10:26:22.29ID:8yXVmnx7 だからu32のとこ読み替えてって言ってるやん
925デフォルトの名無しさん
2023/07/27(木) 10:32:44.98ID:xpSIuq71 アレ?
rust の impl trait が返り値に指定されてるのは多相型じゃなかった?
Haskellの
( Num A ) -> [ A ]
とかの糖衣表現でしょ?
上のはstd::iter::Iteratorのtraitのインスタンスは全部取れるんじゃないの?
rust の impl trait が返り値に指定されてるのは多相型じゃなかった?
Haskellの
( Num A ) -> [ A ]
とかの糖衣表現でしょ?
上のはstd::iter::Iteratorのtraitのインスタンスは全部取れるんじゃないの?
926デフォルトの名無しさん
2023/07/27(木) 10:40:56.55ID:xpSIuq71 >>923
そう、この問題を従来のposixのライブラリ管理で無理クリ実現するには関数側が提供できる可能性のある多相型をあらかじめ“全部”用意しといてlinkerが適切な関数を選んでも使うくらいしかない
まあしかしそんな事実際不可能
結局多相型が別ファイルにまたがる場合全ファイルの提供側の多相型と右辺値で現れる制限との型方程式を全部集めて解くしかない
おそらく将来的にはML型の多相型を使う言語全体で多相型の型を分割コンパイルが自由にできるようになるには言語を跨って多相型のインターフェースの規格なりなんなりが定まってこないと無理
当面それは難しいからHaskellはデフォルトで使用禁止、Rustは遅いの我慢しろにしてるんやろ
そう、この問題を従来のposixのライブラリ管理で無理クリ実現するには関数側が提供できる可能性のある多相型をあらかじめ“全部”用意しといてlinkerが適切な関数を選んでも使うくらいしかない
まあしかしそんな事実際不可能
結局多相型が別ファイルにまたがる場合全ファイルの提供側の多相型と右辺値で現れる制限との型方程式を全部集めて解くしかない
おそらく将来的にはML型の多相型を使う言語全体で多相型の型を分割コンパイルが自由にできるようになるには言語を跨って多相型のインターフェースの規格なりなんなりが定まってこないと無理
当面それは難しいからHaskellはデフォルトで使用禁止、Rustは遅いの我慢しろにしてるんやろ
927デフォルトの名無しさん
2023/07/27(木) 10:58:53.97ID:Ak2CsEEh >>925
引数のimpl traitはその関数にとってどんな具体型がやってくるかわからないから多相であり具体型ごとに単相化される
返すimpl traitはその関数にとって具体型が確定しているから多相ではない
引数のimpl traitはその関数にとってどんな具体型がやってくるかわからないから多相であり具体型ごとに単相化される
返すimpl traitはその関数にとって具体型が確定しているから多相ではない
928デフォルトの名無しさん
2023/07/27(木) 11:13:06.60ID:WdhxKs44 >>927
上の例だと返り値は確定してるんですか?
返り値はItem=u32のiterator型なら何でも取れるのでは?
vec<u32>でもLinkedList<u32>でも
呼び出し側の注釈でas vec![u32]なり何なりでいくらでも返り値変えられるのでは?
上の例だと返り値は確定してるんですか?
返り値はItem=u32のiterator型なら何でも取れるのでは?
vec<u32>でもLinkedList<u32>でも
呼び出し側の注釈でas vec![u32]なり何なりでいくらでも返り値変えられるのでは?
929デフォルトの名無しさん
2023/07/27(木) 11:18:43.07ID:WdhxKs44 Item = u32であるIterator traitのインスタンスね
上の例は返り値がItem=u32のiterator traitを持つ任意の型を返り値にとれる
じゃないの?
上の例は返り値がItem=u32のiterator traitを持つ任意の型を返り値にとれる
じゃないの?
930デフォルトの名無しさん
2023/07/27(木) 12:01:34.76ID:GoQM94Wc collect correctly
931デフォルトの名無しさん
2023/07/27(木) 12:03:41.01ID:as7IkMsZ 関数の戻り値が
(0..(1 << table.len()).map(...)
だから戻り値の型はMap<Range<usize>, F<Output = u32>>
(Fはラムダ式の型でコードでは表現できない)
これをimpl Iterator<Item = u32>で代替表記してる
関数の戻り値を変えれば別の型にもできるけど
関数内で分岐して複数通りのIterator実装型を返すのはimpl traitでは無理なはず
(0..(1 << table.len()).map(...)
だから戻り値の型はMap<Range<usize>, F<Output = u32>>
(Fはラムダ式の型でコードでは表現できない)
これをimpl Iterator<Item = u32>で代替表記してる
関数の戻り値を変えれば別の型にもできるけど
関数内で分岐して複数通りのIterator実装型を返すのはimpl traitでは無理なはず
932デフォルトの名無しさん
2023/07/27(木) 12:04:36.92ID:Ak2CsEEh933デフォルトの名無しさん
2023/07/27(木) 12:08:33.21ID:Ak2CsEEh934デフォルトの名無しさん
2023/07/27(木) 12:15:53.12ID:/bGsBsBb でも確かに昔のweb情報見てるとできないって書いてるページあるけど
----
impl Traitは異なる型を返せない
impl Traitは静的ディスパッチなので異なる型を返すことはできません。このコードはコンパイルエラーになります。
fn foo(x: u32) -> impl Iterator<Item=u32> {
if x == 0 {
Some(0).into_iter()
} else {
0..x
}
}
----
https://qiita.com/taiki-e/items/39688f6c86b919988222より
しかし実際上の例ではコンパイル通ってるのでは?
----
impl Traitは異なる型を返せない
impl Traitは静的ディスパッチなので異なる型を返すことはできません。このコードはコンパイルエラーになります。
fn foo(x: u32) -> impl Iterator<Item=u32> {
if x == 0 {
Some(0).into_iter()
} else {
0..x
}
}
----
https://qiita.com/taiki-e/items/39688f6c86b919988222より
しかし実際上の例ではコンパイル通ってるのでは?
935デフォルトの名無しさん
2023/07/27(木) 12:19:18.73ID:/bGsBsBb 具体的に上の例ではIterator<item = u32>は何か単相型に決まってしまうんですか?
[u32]とかvec<u32>とか勝手にコンパイラが決めてしまうんですか?
それ以外の型で使おうとしたらコンパイルできないの?
ホント?
[u32]とかvec<u32>とか勝手にコンパイラが決めてしまうんですか?
それ以外の型で使おうとしたらコンパイルできないの?
ホント?
936デフォルトの名無しさん
2023/07/27(木) 12:45:27.87ID:/bGsBsBb Haskellの例だと下のコードは通ります
https://ideone.com/VQHxZ9
sqTo100 :: ( Enum a, Num a ) => [ a ]
sqTo100 = [ n^2 | n<-[1..10]]
main = do
print $ ( sqTo100 :: [ Int] )
print $ ( sqTo100 :: [ Float] )
5行目ではsqTo100は[Int]型を返す関数として、6行目では[Float]型を返す関数として“臨機応変に”使い分けてくれます
ただしこのような“多相型を返す関数”はPosix標準のLinkerが準拠していないのでHaskellではファイル毎という制限がありますけど
(monomorphism restriction)
rustではできないんですか?
https://ideone.com/VQHxZ9
sqTo100 :: ( Enum a, Num a ) => [ a ]
sqTo100 = [ n^2 | n<-[1..10]]
main = do
print $ ( sqTo100 :: [ Int] )
print $ ( sqTo100 :: [ Float] )
5行目ではsqTo100は[Int]型を返す関数として、6行目では[Float]型を返す関数として“臨機応変に”使い分けてくれます
ただしこのような“多相型を返す関数”はPosix標準のLinkerが準拠していないのでHaskellではファイル毎という制限がありますけど
(monomorphism restriction)
rustではできないんですか?
937デフォルトの名無しさん
2023/07/27(木) 12:47:44.86ID:mFFFavmH 複おじの好きそうな話題
よかったな
よかったな
938デフォルトの名無しさん
2023/07/27(木) 14:12:15.53ID:+SEMblDr >>926
>まあしかしそんな事実際不可能
不可能でない場合も結構多いけども? C++で話をすると
templateパラメータでPOD型しか取り得ない場合は結構ある
POD型なんて限られているので全部明示的インスタンス化しておけば
ビルド時間は短縮できる
>まあしかしそんな事実際不可能
不可能でない場合も結構多いけども? C++で話をすると
templateパラメータでPOD型しか取り得ない場合は結構ある
POD型なんて限られているので全部明示的インスタンス化しておけば
ビルド時間は短縮できる
939デフォルトの名無しさん
2023/07/27(木) 14:38:15.87ID:V6/hbrNj940デフォルトの名無しさん
2023/07/27(木) 14:56:22.32ID:V6/hbrNj 思いっきりガイシュツやった
なんで同じこと何回も聞いてるんだよ
なんで同じこと何回も聞いてるんだよ
941デフォルトの名無しさん
2023/07/27(木) 21:42:00.32ID:x4QyUuiY >>935
関数の戻り型は未定のgeneric parameterを含まなければその関数のコードにより型が一つに定まっている
そしてIteratorは型ではなくtraitなので具体的なtrait実装型が関数のコードにより定まっている
一方で具体的なtrait実装型の中でもparameterとして他の型が含まれると記述が長く指定も面倒になってくる
例えば型parameterに入る他の型にも型parameterが付いて多段になることもよかある
コンパイラはそれらの複雑な指定の具体型を推論で確定できるが人間が記述するのは面倒で可読性も悪い
そのため具体型ではなくimpl traitと具象型を書くことで記述性と可読性を向上できる
関数の戻り型は未定のgeneric parameterを含まなければその関数のコードにより型が一つに定まっている
そしてIteratorは型ではなくtraitなので具体的なtrait実装型が関数のコードにより定まっている
一方で具体的なtrait実装型の中でもparameterとして他の型が含まれると記述が長く指定も面倒になってくる
例えば型parameterに入る他の型にも型parameterが付いて多段になることもよかある
コンパイラはそれらの複雑な指定の具体型を推論で確定できるが人間が記述するのは面倒で可読性も悪い
そのため具体型ではなくimpl traitと具象型を書くことで記述性と可読性を向上できる
942デフォルトの名無しさん
2023/07/27(木) 21:43:40.45ID:x4QyUuiY クロージャは具体型を書くことができない
各クロージャは全て異なる型が自動付与されるがコード上でそれを記述する方法がないためだ
その場合を具象型としてimpl Fn/FnMut/FnOnceを指定できる
各クロージャは全て異なる型が自動付与されるがコード上でそれを記述する方法がないためだ
その場合を具象型としてimpl Fn/FnMut/FnOnceを指定できる
943デフォルトの名無しさん
2023/07/27(木) 23:16:49.96ID:383XGmyH944デフォルトの名無しさん
2023/07/27(木) 23:27:43.84ID:5YX5RIhz 単にジェネリック使えばいいだけだろ
Haskellやっててここまで頭悪いやつ見たの初めてだわ
Haskellやっててここまで頭悪いやつ見たの初めてだわ
945デフォルトの名無しさん
2023/07/28(金) 09:03:31.47ID:3WCp+Y82 このスレは、Rust嫌いな人も集まるスレなんだぞ。
そして、Rustの欠点を書いているのは改良してもらいたいから
ではなく、Rustに退場してもらいたいからだ。
そして、Rustの欠点を書いているのは改良してもらいたいから
ではなく、Rustに退場してもらいたいからだ。
946デフォルトの名無しさん
2023/07/28(金) 10:46:00.43ID:Zgvcm9f5 そ、うそだったのか
947デフォルトの名無しさん
2023/07/28(金) 13:34:05.05ID:plp8L3in >>944
イヤ、上の方で「Rustの返り値にimpl traitをとった場合それがジェネリックにならない理由」を述べてる人いるやん?
それが関数返り値に多相型を取れない理由になるならRustの関数返り値は常に単相型になってしまう、でもそんな事ないでしょつて言ってるんですよ
ともかくRustの説明てそういう理屈に合わない説明をする人かなりいるから困るんですよ
頭わるいのは認めますよ
頭わ悪くてすいません
イヤ、上の方で「Rustの返り値にimpl traitをとった場合それがジェネリックにならない理由」を述べてる人いるやん?
それが関数返り値に多相型を取れない理由になるならRustの関数返り値は常に単相型になってしまう、でもそんな事ないでしょつて言ってるんですよ
ともかくRustの説明てそういう理屈に合わない説明をする人かなりいるから困るんですよ
頭わるいのは認めますよ
頭わ悪くてすいません
948デフォルトの名無しさん
2023/07/28(金) 13:45:48.26ID:/QxH2HMp すいません
結論としてRustでは>>936のような「呼び出し側の都合に合わせて返し値を返す関数」は型変数使って書けば書けるけどimpl traitの書式だと書けない、理由は仕様、でいいんですか?
結論としてRustでは>>936のような「呼び出し側の都合に合わせて返し値を返す関数」は型変数使って書けば書けるけどimpl traitの書式だと書けない、理由は仕様、でいいんですか?
949デフォルトの名無しさん
2023/07/28(金) 13:57:57.50ID:muXw35+Y 総称型と部分型をどっちも単に多相って呼んでるから訳分からなくなってるんでは?
950デフォルトの名無しさん
2023/07/28(金) 14:02:06.50ID:K+Na1vWv951デフォルトの名無しさん
2023/07/28(金) 14:07:57.62ID:muXw35+Y952デフォルトの名無しさん
2023/07/28(金) 14:10:58.16ID:GMHqUp+Z impl traitの中にgenericsの型パラメータ含めればいい
936をRustで実装すると↓みたいになる
(RustにはEnumクラスもNumクラスもないからFrom<u8>で代用してる)
fn iter_sq_to_100<T>() -> impl Iterator<Item = T>
where
T: Copy + From<u8> + std::ops::Mul<Output = T>,
{
(1u8..=10u8).map(|v| {
let t = T::from(v);
t * t
})
}
fn main() {
// 戻り値を受け取る側からTの型を指定
println!("{:?}", iter_sq_to_100().collect::<Vec<u32>>());
println!("{:?}", iter_sq_to_100().collect::<Vec<f32>>());
// 関数を呼び出す側からTの型を指定
println!("{:?}", iter_sq_to_100::<u32>().collect::<Vec<_>>());
println!("{:?}", iter_sq_to_100::<f32>().collect::<Vec<_>>());
}
ただしこれは型パラメータで戻り値が多相的になってるだけでimpl traitでそうなってるわけではない
多相型もジェネリクスも一緒だと思うけどHaskellとの対比だとクラスをBoundに置き換えればいいのかな
936をRustで実装すると↓みたいになる
(RustにはEnumクラスもNumクラスもないからFrom<u8>で代用してる)
fn iter_sq_to_100<T>() -> impl Iterator<Item = T>
where
T: Copy + From<u8> + std::ops::Mul<Output = T>,
{
(1u8..=10u8).map(|v| {
let t = T::from(v);
t * t
})
}
fn main() {
// 戻り値を受け取る側からTの型を指定
println!("{:?}", iter_sq_to_100().collect::<Vec<u32>>());
println!("{:?}", iter_sq_to_100().collect::<Vec<f32>>());
// 関数を呼び出す側からTの型を指定
println!("{:?}", iter_sq_to_100::<u32>().collect::<Vec<_>>());
println!("{:?}", iter_sq_to_100::<f32>().collect::<Vec<_>>());
}
ただしこれは型パラメータで戻り値が多相的になってるだけでimpl traitでそうなってるわけではない
多相型もジェネリクスも一緒だと思うけどHaskellとの対比だとクラスをBoundに置き換えればいいのかな
953デフォルトの名無しさん
2023/07/28(金) 14:40:11.65ID:g7faSWJw >>952
すいません、やっぱりわたしの疑問とは違っています
わたしの理解では「impl traitは引数、返り値に一般型をとるが特定のtrait 境界を持つものを指定する場合の糖衣構文」だと思っていたのです
つまり先の例impl Iterator<Item = u32>であれば
①まず
fn myF(××) -> impl T {...}
の記法でTはtypeではなくてtraitである(ここにtraitが来る事が impl trait 記法の呼び名の理由、この記法は
fn myF(××) -> impl A, where A;T{...}
の糖衣構文で「myFはtrait Tのimplementを持つ任意の型を返す関数」を意味する
と思っていて、よって先の例
fn foo1(input: u32) -> impl Iterator<Item = u32> {...
ではfooはItemがu32であるIterator traitを持つ任意の型を返り値として持てる関数だと思っていました、もちろん自分で好きなクロージャ作ってそれにIterator<Item = u32>をimplementすればそれを返り値に持てると思っているんです
しかしそれは違う、fooは単相型、型は決定しており返り値のサイズも配置も決定しているので分割コンパイルできる(そもそも分割コンパイルの話の中で出てきた話なのでここでの多層性はもちろんこの意味)というツッコミが入ったのでホントかと、もうこのソースでRustはfooの返り値の型を完全に決定してて別のファイルからfooを呼ぶ場合にも別々にコンパイルしてposixの標準のリンカが使えるのかなんてことができるのかと
少なくともHaskellではできないはずです
すいません、やっぱりわたしの疑問とは違っています
わたしの理解では「impl traitは引数、返り値に一般型をとるが特定のtrait 境界を持つものを指定する場合の糖衣構文」だと思っていたのです
つまり先の例impl Iterator<Item = u32>であれば
①まず
fn myF(××) -> impl T {...}
の記法でTはtypeではなくてtraitである(ここにtraitが来る事が impl trait 記法の呼び名の理由、この記法は
fn myF(××) -> impl A, where A;T{...}
の糖衣構文で「myFはtrait Tのimplementを持つ任意の型を返す関数」を意味する
と思っていて、よって先の例
fn foo1(input: u32) -> impl Iterator<Item = u32> {...
ではfooはItemがu32であるIterator traitを持つ任意の型を返り値として持てる関数だと思っていました、もちろん自分で好きなクロージャ作ってそれにIterator<Item = u32>をimplementすればそれを返り値に持てると思っているんです
しかしそれは違う、fooは単相型、型は決定しており返り値のサイズも配置も決定しているので分割コンパイルできる(そもそも分割コンパイルの話の中で出てきた話なのでここでの多層性はもちろんこの意味)というツッコミが入ったのでホントかと、もうこのソースでRustはfooの返り値の型を完全に決定してて別のファイルからfooを呼ぶ場合にも別々にコンパイルしてposixの標準のリンカが使えるのかなんてことができるのかと
少なくともHaskellではできないはずです
954デフォルトの名無しさん
2023/07/28(金) 15:00:21.91ID:GMHqUp+Z 少なくともfooを呼ぶ側はfooの実装とリンクされるまで
返されるimpl traitのサイズも実際の型も分からないから
完全に分割コンパイルが可能とは言えないね
型が分からないと呼ぶべき関数の実装も分からないから標準(?)のリンカは使えない
traitを実装しててその関数が存在することだけは分かるけど
ただfooの戻り値のimpl traitの型は(型パラメータがなければ)
fooの実装側で完全に決定される
「正体が分からない単相型」って感じ
返されるimpl traitのサイズも実際の型も分からないから
完全に分割コンパイルが可能とは言えないね
型が分からないと呼ぶべき関数の実装も分からないから標準(?)のリンカは使えない
traitを実装しててその関数が存在することだけは分かるけど
ただfooの戻り値のimpl traitの型は(型パラメータがなければ)
fooの実装側で完全に決定される
「正体が分からない単相型」って感じ
955デフォルトの名無しさん
2023/07/28(金) 15:13:12.73ID:GMHqUp+Z リンク時に外から型サイズを指定できるオブジェクト形式だと頑張れば分割コンパイル可能なのかな
あまりこの辺は知識がない
あまりこの辺は知識がない
956デフォルトの名無しさん
2023/07/28(金) 15:26:38.94ID:orZ7jJno なんかよう分からないけど、この数日のスレ見てても
imp,trait,whereなど知らない概念が多すぎてRustは難しすぎる。
imp,trait,whereなど知らない概念が多すぎてRustは難しすぎる。
957デフォルトの名無しさん
2023/07/28(金) 15:55:11.46ID:CGNQVLgE958デフォルトの名無しさん
2023/07/28(金) 16:22:37.19ID:cNvH/3YC >>957
間違ってますか?
結論的に
impl Iterator<Item = u32>
を返り値として持つ関数をFile Aで定義して事前コンパイル、その後File Bで独自のIterator <u32> のinstanceを持つ型を作った場合、rust compilorはcompile済みのfile Aをlinkするだけでいいんですか?
間違ってますか?
結論的に
impl Iterator<Item = u32>
を返り値として持つ関数をFile Aで定義して事前コンパイル、その後File Bで独自のIterator <u32> のinstanceを持つ型を作った場合、rust compilorはcompile済みのfile Aをlinkするだけでいいんですか?
959デフォルトの名無しさん
2023/07/28(金) 16:33:53.87ID:2BokdQo2 具体的にはどうするんですか?
file AにはItemとしてどんなサイズの型を指定されるかわからないわけですけどcompilorは各引数を受け取る時スタックのどこに第××引数が格納されてると決定できるんですか?
昔のweb情報では「impl traitが静的にアクセスするアドレスを決定できるように多相な型にするには oxで囲まないとダメ」とありました
Boxedである事を要請すれば確かに事前にアドレスを決定できます
しかし先の例ではBoxedてないので呼び出し側が要求する返り値のサイズが決まっていなければ生でスタックに並べられたら呼ばれた関数は引数を読み出せないんじゃないですか?
もちろん動的に呼び出す時に引数のサイズ与えればできますけどRustはアクセスすべきアドレスをコンパイル時に静的に決定してるんじゃないんですか?
file AにはItemとしてどんなサイズの型を指定されるかわからないわけですけどcompilorは各引数を受け取る時スタックのどこに第××引数が格納されてると決定できるんですか?
昔のweb情報では「impl traitが静的にアクセスするアドレスを決定できるように多相な型にするには oxで囲まないとダメ」とありました
Boxedである事を要請すれば確かに事前にアドレスを決定できます
しかし先の例ではBoxedてないので呼び出し側が要求する返り値のサイズが決まっていなければ生でスタックに並べられたら呼ばれた関数は引数を読み出せないんじゃないですか?
もちろん動的に呼び出す時に引数のサイズ与えればできますけどRustはアクセスすべきアドレスをコンパイル時に静的に決定してるんじゃないんですか?
960デフォルトの名無しさん
2023/07/28(金) 16:45:41.21ID:4cjf/6GX 関数の返し型を具体的に書くかimpl Traitと書くかの違いはもちろん明瞭にある
簡単な例で説明する
// まず実験用のおもちゃ(5ずつ増えるイテレータStepFive)を用意
pub struct StepFive { n: i64 }
impl StepFive {
fn new(init: i64) -> Self { StepFive { n: init } }
pub fn cur_value(&self) -> i64 { self.n } // 注意: イテレータには不要な追加機能
}
impl Iterator for StepFive {
type Item = i64;
fn next(&mut self) -> Option<Self::Item> { self.n += 5; Some(self.n) }
}
// このおもちゃイテレータを返す関数を二つ用意する
// 返し型を具体的に StepFive と書くケース
pub fn step_five_1(init: i64) -> StepFive { StepFive::new(init) }
// 返し型を impl Trait の形で書くケース
pub fn step_five_2(init: i64) -> impl Iterator<Item = i64> { StepFive::new(init) }
fn main() {
// イテレータとしてはどちらも当然機能する
assert_eq!(vec![5, 10, 15], step_five_1(0).take(3).collect::<Vec<_>>());
assert_eq!(vec![5, 10, 15], step_five_2(0).take(3).collect::<Vec<_>>());
// しかしイテレータにない機能を使うと違いが明瞭に出る
assert_eq!(123, step_five_1(123).cur_value()); // コンパイル通る
assert_eq!(123, step_five_2(123).cur_value()); // コンパイルエラー method not found in `impl Iterator<Item = i64>`
}
簡単な例で説明する
// まず実験用のおもちゃ(5ずつ増えるイテレータStepFive)を用意
pub struct StepFive { n: i64 }
impl StepFive {
fn new(init: i64) -> Self { StepFive { n: init } }
pub fn cur_value(&self) -> i64 { self.n } // 注意: イテレータには不要な追加機能
}
impl Iterator for StepFive {
type Item = i64;
fn next(&mut self) -> Option<Self::Item> { self.n += 5; Some(self.n) }
}
// このおもちゃイテレータを返す関数を二つ用意する
// 返し型を具体的に StepFive と書くケース
pub fn step_five_1(init: i64) -> StepFive { StepFive::new(init) }
// 返し型を impl Trait の形で書くケース
pub fn step_five_2(init: i64) -> impl Iterator<Item = i64> { StepFive::new(init) }
fn main() {
// イテレータとしてはどちらも当然機能する
assert_eq!(vec![5, 10, 15], step_five_1(0).take(3).collect::<Vec<_>>());
assert_eq!(vec![5, 10, 15], step_five_2(0).take(3).collect::<Vec<_>>());
// しかしイテレータにない機能を使うと違いが明瞭に出る
assert_eq!(123, step_five_1(123).cur_value()); // コンパイル通る
assert_eq!(123, step_five_2(123).cur_value()); // コンパイルエラー method not found in `impl Iterator<Item = i64>`
}
961デフォルトの名無しさん
2023/07/28(金) 16:46:14.77ID:4cjf/6GX >>960の続き
つまり返し型を具体的に StepFive と書けばその型の機能をフルに活用できる
しかし返し型を impl Iterator<Item = i64> と書けばイテレータとしての機能のみが使える
後者はコンパイル時に StepFive の実装を知る必要がなくなる
つまり後者は next() で Option<i64> が返るという「impl Iterator<Item = i64>」の一般的知識のみでコンパイルできることになる
その代わり後者は StepFive にcur_value() というイテレータとは別のメソッドがあっても使えないという違いが出てくる
つまり返し型を具体的に StepFive と書けばその型の機能をフルに活用できる
しかし返し型を impl Iterator<Item = i64> と書けばイテレータとしての機能のみが使える
後者はコンパイル時に StepFive の実装を知る必要がなくなる
つまり後者は next() で Option<i64> が返るという「impl Iterator<Item = i64>」の一般的知識のみでコンパイルできることになる
その代わり後者は StepFive にcur_value() というイテレータとは別のメソッドがあっても使えないという違いが出てくる
962デフォルトの名無しさん
2023/07/28(金) 16:49:54.59ID:GMHqUp+Z963デフォルトの名無しさん
2023/07/28(金) 17:13:12.78ID:CGNQVLgE964デフォルトの名無しさん
2023/07/28(金) 17:40:24.39ID:sn3bIpOK >>962
>C++20もconceptとかrequireとか言い出してるから心配しなくていいよ
最近のC++に問題が多数混入したことは知られているが、
人気が絶頂だったころのC++はシンプルで分かり易かったぞ。
>C++20もconceptとかrequireとか言い出してるから心配しなくていいよ
最近のC++に問題が多数混入したことは知られているが、
人気が絶頂だったころのC++はシンプルで分かり易かったぞ。
965デフォルトの名無しさん
2023/07/28(金) 17:59:52.30ID:gdkptAW0966デフォルトの名無しさん
2023/07/28(金) 18:02:55.59ID:GMHqUp+Z 人気が絶頂だったころのC++っていつのC++だ
C++17あたりかな
まさかC++98とは言わんよな…(当時は言語の選択肢が少なかったと思うけど)
C++17あたりかな
まさかC++98とは言わんよな…(当時は言語の選択肢が少なかったと思うけど)
967デフォルトの名無しさん
2023/07/28(金) 18:26:18.74ID:sn3bIpOK C++98位が絶頂。
968デフォルトの名無しさん
2023/07/28(金) 19:04:47.55ID:Ih8SBU9O >>956
流石にそれはRustへの知識が足らんだろ。impl, trait, whereは全てRustでは必要不可欠な概念だぞ。ここら辺がわかってないとなると構造体に関する理解も怪しいだろ。
流石にそれはRustへの知識が足らんだろ。impl, trait, whereは全てRustでは必要不可欠な概念だぞ。ここら辺がわかってないとなると構造体に関する理解も怪しいだろ。
969デフォルトの名無しさん
2023/07/28(金) 19:33:09.89ID:sn3bIpOK >>968
でも覚えたくないから。
でも覚えたくないから。
970デフォルトの名無しさん
2023/07/28(金) 20:29:08.19ID:rzH+uNMJ >>956
traitの概念と用法だけ覚えればよくてimplとwhererは一般的な言葉と同じ
implは単なる「実装」
「impl Trait」が型指定の位置に来れば「Traitを実装」している型の意味
「impl Trait for 型」は「その型にTraitを実装」宣言
「impl 型」は「その型を実装」宣言
whereは説明を後置する関係副詞と同じ
型に対してtraitによる境界(制約)などを指定
traitの概念と用法だけ覚えればよくてimplとwhererは一般的な言葉と同じ
implは単なる「実装」
「impl Trait」が型指定の位置に来れば「Traitを実装」している型の意味
「impl Trait for 型」は「その型にTraitを実装」宣言
「impl 型」は「その型を実装」宣言
whereは説明を後置する関係副詞と同じ
型に対してtraitによる境界(制約)などを指定
971デフォルトの名無しさん
2023/07/28(金) 20:33:57.60ID:rDj5FSnq >>967
そっからは…JavaScriptなんかが本気で伸びていった時期か。
そっからは…JavaScriptなんかが本気で伸びていった時期か。
972デフォルトの名無しさん
2023/07/28(金) 23:59:27.11ID:GMHqUp+Z C++アンチの大半はC++98を嫌々使ってた世代だろ
C++0xが16進数のBになるとは思わなかった
C++0xが16進数のBになるとは思わなかった
973デフォルトの名無しさん
2023/07/29(土) 02:08:00.81ID:MBm8IaU2 ポコチンファイト
974デフォルトの名無しさん
2023/07/29(土) 03:40:53.45ID:yFHJJQio C++は、98年頃、非常に人気であった。
それが、どんどん人気を失い、現状に至っている。
それが、どんどん人気を失い、現状に至っている。
975デフォルトの名無しさん
2023/07/29(土) 05:56:52.93ID:oT83Ayc0 人気があったのはあくまでc とかの古い言語に対してだろ。
当時もperl5とかのスクリプト言語の方が人気だったし。
当時もperl5とかのスクリプト言語の方が人気だったし。
976デフォルトの名無しさん
2023/07/29(土) 10:55:11.31ID:m3e/8XSV >>965
its true👍
its true👍
977デフォルトの名無しさん
2023/07/29(土) 12:15:13.32ID:mCbo+dID >>975
C++は、C++11以後、改悪された。
C++は、C++11以後、改悪された。
978デフォルトの名無しさん
2023/07/29(土) 12:34:34.52ID:XwXxiU6u979デフォルトの名無しさん
2023/07/29(土) 12:37:22.94ID:mCbo+dID C++以後とはC++11自体も含む。
C++11が改悪の最初。
C++11が改悪の最初。
980デフォルトの名無しさん
2023/07/29(土) 12:42:47.89ID:mCbo+dID C++11が最良と思っている人はC++が最悪の言語に
見えることだろう。そしてそういう人がRustを礼賛
しているように見える。
ちなみに、Stackoverflow の Most Loved Language
は、実際に使用した上で好き嫌いを表明した人を分母
とした上での好きな人の比率に過ぎないので、
たとえば、
C++ : 好き=50:嫌い=50, 愛され率 50%
Rust : 好き=7:嫌い=3, 愛され率 70%
のようになっているに過ぎない。
この場合、C++好きはRust好きの7倍以上居るが、
比率的には愛され率が50%になってしまって、
Rustより愛されて無い、という結果になってしまうが
それは統計上の一応の数値に過ぎない。
見えることだろう。そしてそういう人がRustを礼賛
しているように見える。
ちなみに、Stackoverflow の Most Loved Language
は、実際に使用した上で好き嫌いを表明した人を分母
とした上での好きな人の比率に過ぎないので、
たとえば、
C++ : 好き=50:嫌い=50, 愛され率 50%
Rust : 好き=7:嫌い=3, 愛され率 70%
のようになっているに過ぎない。
この場合、C++好きはRust好きの7倍以上居るが、
比率的には愛され率が50%になってしまって、
Rustより愛されて無い、という結果になってしまうが
それは統計上の一応の数値に過ぎない。
981デフォルトの名無しさん
2023/07/29(土) 12:56:18.62ID:XwXxiU6u982デフォルトの名無しさん
2023/07/29(土) 12:56:58.78ID:mCbo+dID 新しいものが良いものだという固定観念は間違い。
C++は、C++98が最良で、C++11で改悪されごちゃごちゃに
なった。
C++を愛する人はC++98を愛した人。
C++11以後を見ると改悪された後なのでごちゃごちゃになった
醜態を見る事になり、C++が大嫌いになる。
そして、そういう人がC++を完全に避けるようになり、行き場所を
失い、Rustを礼賛している。
C++は、C++98が最良で、C++11で改悪されごちゃごちゃに
なった。
C++を愛する人はC++98を愛した人。
C++11以後を見ると改悪された後なのでごちゃごちゃになった
醜態を見る事になり、C++が大嫌いになる。
そして、そういう人がC++を完全に避けるようになり、行き場所を
失い、Rustを礼賛している。
983デフォルトの名無しさん
2023/07/29(土) 12:58:15.78ID:XwXxiU6u984デフォルトの名無しさん
2023/07/29(土) 12:58:56.51ID:mCbo+dID >>981
moveは、std::vectorをメインコンテナに位置づけたから
必要となった概念に過ぎない。LinkedListをメインコンテナ
にすれば、不要となる。そして、ここでいうLinkedListとは
本来のLinkedListの事であり、std::listのことでない。
C++委員会は馬鹿ばっかっりなので、本来のLinkedList
を全く理解できて無い。
moveは、std::vectorをメインコンテナに位置づけたから
必要となった概念に過ぎない。LinkedListをメインコンテナ
にすれば、不要となる。そして、ここでいうLinkedListとは
本来のLinkedListの事であり、std::listのことでない。
C++委員会は馬鹿ばっかっりなので、本来のLinkedList
を全く理解できて無い。
985デフォルトの名無しさん
2023/07/29(土) 12:59:13.66ID:XwXxiU6u >>982
moveなしのC++なんよく使う気になるね
moveなしのC++なんよく使う気になるね
986デフォルトの名無しさん
2023/07/29(土) 12:59:23.06ID:mCbo+dID987デフォルトの名無しさん
2023/07/29(土) 13:01:23.60ID:mCbo+dID >>985
数学や右脳的IQが低い人にはLinkedListは理解が難しい
概念とされているため、LinkedListを使わない人に
とって、moveは必須となってしまうが、バグの温床と
なっている。
そのために出てきたのがRust。
何もかもが間違っている。
数学や右脳的IQが低い人にはLinkedListは理解が難しい
概念とされているため、LinkedListを使わない人に
とって、moveは必須となってしまうが、バグの温床と
なっている。
そのために出てきたのがRust。
何もかもが間違っている。
988デフォルトの名無しさん
2023/07/29(土) 13:02:06.55ID:XwXxiU6u >>984
>moveは、std::vectorをメインコンテナに位置づけたから
>必要となった概念に過ぎない。
違うだろwww
std::vectorの高速化にも役立つが
vectorのために作られた概念では断じてない
>moveは、std::vectorをメインコンテナに位置づけたから
>必要となった概念に過ぎない。
違うだろwww
std::vectorの高速化にも役立つが
vectorのために作られた概念では断じてない
989デフォルトの名無しさん
2023/07/29(土) 13:03:53.63ID:XwXxiU6u990デフォルトの名無しさん
2023/07/29(土) 13:06:10.18ID:XwXxiU6u991デフォルトの名無しさん
2023/07/29(土) 13:09:29.91ID:XwXxiU6u この人の行動パターンは新しいことを学習することを極度に嫌うんだな
それ自体は当人の自由だが
「俺が覚えたくない新しいことは間違ってるのでおまいらも覚えるな
おまいらは馬鹿だ」って考え方はどうなのよ?
それ自体は当人の自由だが
「俺が覚えたくない新しいことは間違ってるのでおまいらも覚えるな
おまいらは馬鹿だ」って考え方はどうなのよ?
992デフォルトの名無しさん
2023/07/29(土) 13:10:49.76ID:mCbo+dID はっきりいって、std::vectorとそれに類するデータ構造
以外では、moveはほとんど役立ってない。
以外では、moveはほとんど役立ってない。
993デフォルトの名無しさん
2023/07/29(土) 13:11:57.95ID:mCbo+dID もちろん、意味が有るケースもあるが、コンピュータでは、
「率」が重要となる。
重箱の隅をつつくような事を重視して、優先順位の高い
ことを疎かにすれば、良い結果にはならない。
「率」が重要となる。
重箱の隅をつつくような事を重視して、優先順位の高い
ことを疎かにすれば、良い結果にはならない。
994デフォルトの名無しさん
2023/07/29(土) 13:15:00.69ID:mCbo+dID コンピュータの世界では何かの概念を導入すると、
必ずと言っていいほど、別の何かとはトレードオフに
なってしまう。
だから、優先順位や使用率、遭遇率、出現確率などを
常に考慮し続けなければならない。
その配慮に欠けているのが(C++11も含む)C++11以後。
そして、Rustは優先順位が間違ったC++11の悪いものを改良して
しまったから、汚い最悪の言語となってしまっている。
センスの悪い言語と言える。
必ずと言っていいほど、別の何かとはトレードオフに
なってしまう。
だから、優先順位や使用率、遭遇率、出現確率などを
常に考慮し続けなければならない。
その配慮に欠けているのが(C++11も含む)C++11以後。
そして、Rustは優先順位が間違ったC++11の悪いものを改良して
しまったから、汚い最悪の言語となってしまっている。
センスの悪い言語と言える。
995デフォルトの名無しさん
2023/07/29(土) 13:39:52.19ID:XwXxiU6u996デフォルトの名無しさん
2023/07/29(土) 13:41:30.10ID:XwXxiU6u997デフォルトの名無しさん
2023/07/29(土) 13:44:38.55ID:XwXxiU6u998デフォルトの名無しさん
2023/07/29(土) 13:51:09.21ID:5uFTVg8T その人small oの意味間違ってた人?
あの数学力見るととても言ってるほど賢いと思えない
あの数学力見るととても言ってるほど賢いと思えない
999デフォルトの名無しさん
2023/07/29(土) 14:01:34.25ID:mCbo+dID >>998
俺はそんな間違いはしない。別人だろう。
俺はそんな間違いはしない。別人だろう。
1000デフォルトの名無しさん
2023/07/29(土) 14:04:41.52ID:mCbo+dID >>997
手短に言えば、本来の使い方をするためのインターフェースだな。
手短に言えば、本来の使い方をするためのインターフェースだな。
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 28日 16時間 8分 6秒
新しいスレッドを立ててください。
life time: 28日 16時間 8分 6秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★3 [蚤の市★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 [煮卵★]
- 【テレビ】石破前首相 中国レーダー照射「フェーズ上がってる」と指摘も「日本の世論が激高するのは避ける必要が…」 [少考さん★]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨 [931948549]
- 【悲報】山里亮太(南海キャンディーズ)さん [329329848]
- 統一教会っていらない田んぼ畑ビルディング(アスベスト)も引き取ってくれるの? [358382861]
- 【高市悲報】日本が🇨🇳輸出規制したフォトレジスト、早速韓国企業が中国に売り込みかけて日本の対抗手段もうなくなるwww [709039863]
- 中国父「日本の一般大衆は高市を支持しておらず、反対している人も多い。悪いのは日本国民ではなく高市!」 すまんこれほんと? [271912485]
- 高市「中国さんお願い電話で話そ、このままじゃ武力衝突になっちゃう😭」日中間の専用電話に日本側からかけるも無視される [931948549]
