Rust part17

レス数が950を超えています。1000を超えると書き込みができなくなります。
2022/10/06(木) 22:43:13.96ID:Re0G7B20
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/

※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust

※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/

※次スレは原則>>980が立てること

前スレ
Rust part16
2022/12/07(水) 17:44:20.91ID:Mw8qZqut
>>884
GutHubでどこにあるのかは分からないがAndroid Code Searchでは以下が出てきたのでpre-built binary使ってるのかなと判断した

https://cs.android.com/android/platform/superproject/+/master:prebuilts/rust/linux-musl-x86/1.63.0/bin/rustc;l=1?q=rustc&sq=

C++もrustも外部ライブラリはexternal配下にまとめられているようなので、それぞれで集計の仕方を変えるなんて事をしてない限りは、同一条件での比較になるんじゃないかな

あと150万行ってのはAndroid13の話じゃなくて累積のコード量がって話しだよ
2022/12/07(水) 17:44:50.45ID:8PgDeggG
>>884 追記
なんかRust批判みたいな印象になっているけど、881が多少調べたっぽいので詳しく知りたいだけ
889デフォルトの名無しさん
垢版 |
2022/12/07(水) 17:47:35.12ID:JLiaiVk0
>>886
次世代隔離スレがなくなると暇してるオジサン達が溢れてくるのよ
2022/12/07(水) 17:55:32.50ID:8PgDeggG
>>887 ありがと
ただし、ここ見るだれでもrustコンパイラを構成するソースファイルが山ほどある
https://cs.android.com/android/platform/superproject/+/master:prebuilts/rust/linux-musl-x86/1.63.0/src/

さすがにgccの方はsoになってる
https://cs.android.com/android/platform/superproject/+/master:prebuilts/gcc/linux-x86/

>C++もrustも外部ライブラリはexternal配下にまとめられている
こうした統計ではソースとしておいてあるかどうかで結構差がある
2022/12/07(水) 17:59:46.34ID:vqEtcxl0
割合で言えば大したことは無くてもある程度は積極的に使おうとする雰囲気は感じなくもないってところかな。
2022/12/07(水) 18:00:13.04ID:8PgDeggG
>>887
>あと150万行ってのはAndroid13の話じゃなくて累積のコード量がって話しだよ

累積のコード量で、Android向け書き起こしRustソースが150万行、という主張であれば水増しの疑いを持ってる
2022/12/07(水) 18:01:45.15ID:8PgDeggG
>>891
>ある程度は積極的に使おうとする雰囲気
それは同感
2022/12/07(水) 18:01:53.83ID:Mw8qZqut
>>890
コンパイラじゃなくて標準ライブラリのことね
確かにlibcとは扱いに差があるかもね

詳細な数値が気になるならソースダウンロードして測定してみたら良いのでは
https://source.android.com/docs/setup/download/downloading
2022/12/07(水) 18:04:39.07ID:8PgDeggG
>>894
そんな手間かけたくないから聞いたんだけど、皆そうなんだろうな

>累積のコード量で、Android向け書き起こしRustソースが150万行、という主張であれば水増しの疑いを持ってる
これで継続だな
2022/12/07(水) 18:06:43.25ID:Mw8qZqut
>>895
> Android向け書き起こしRustソースが150万行、という主張
原文ではそんな主張はしていないよ
2022/12/07(水) 18:11:19.10ID:8PgDeggG
>>896
そう。原文は意図的かどうかは分からないが、あやふやな表現なので範囲を問うてみた
ここだけ読んでそう捉えて誤解をした人がいたら、まず範囲を疑うのが普通、と思った
2022/12/07(水) 18:13:51.76ID:8PgDeggG
ちなみにPhoronixで読んだが、LinuxのRust対応は賞味2万行
2022/12/07(水) 18:20:26.12ID:wjXnim/d
>>867
じゃあ一から訳したら?
誰かがそうやったから存在するんだが…

>>870
情けないよね。マージされたらそれなりに嬉しいのに。
2022/12/07(水) 18:24:03.55ID:8PgDeggG
例えば、ここだけど、150万行はおろか、2万行すら程遠いかな
https://github.com/aosp-mirror/kernel_common/tree/android-mainline/rust
2022/12/07(水) 18:36:53.47ID:M+Adnv0G
もっと有意義な話しようぜ
fn<T>foo(x: &T); のTにSized制約付くの邪魔くせーとかさ
2022/12/07(水) 18:39:18.13ID:CifLjB7G
>>878
そうするとまたはじめの疑問が...
> まだRustでは書きにくい所があるんだろうか?
2022/12/07(水) 18:41:18.29ID:Mw8qZqut
>>901
x: TのときはSizedついて欲しいけど、&Tのときはついて欲しくないということ?
Box<T>やRc<T>やユーザー定義のスマートポインタの扱い考えるとめんどくさいから一律Sizedがデフォルトでよくない?
2022/12/07(水) 18:48:05.32ID:Mw8qZqut
>>902
今出てきている情報だけではなんとも言えないかと
Android開発者の内Rustを使える人の割合が少ないだけの可能性もある
2022/12/07(水) 18:51:46.12ID:8PgDeggG
>>902,904
その21%が水増しかどうかは重要なわけではなく

>ある程度は積極的に使おうとする雰囲気
これに意義がある
2022/12/07(水) 18:53:03.86ID:21cwGaas
そりゃC++とのInteropが絶対に必要だしRustはそこが弱い
そういう用途としてはCarbonがあるけどセキュアではない
(C++よりはマシだろうが)
2022/12/07(水) 18:58:45.38ID:8PgDeggG
>>906
は20%(水増し?)で浮き足立ったり、Carbonの話に拘ってるけど
当分の間はCarbonの話をすると鬼が笑うと思う
2022/12/07(水) 19:02:37.66ID:glN0FB8M
Androidの中のRustはGabeldorsche, keystore2, DoH, UWBくらいだっけ
もう3年くらいかかってるからそれなりの行数になってる気もするけどどうなんだろ
aospのrepo sync全部やるの時間かかるんだよな…
2022/12/07(水) 19:05:40.97ID:8PgDeggG
>>908
>aospのrepo sync全部やるの時間かかるんだよな…
そこを何とかお願いします
どの範囲を集計したら150万行に到達するのか皆気になってます
2022/12/07(水) 19:09:14.99ID:/TInWduh
repo sync 終わらんよな
今3時間経過
2022/12/07(水) 19:14:14.71ID:8PgDeggG
期待大

原文では
>There are approximately 1.5 million total lines of Rust code in AOSP across new functionality and components such as Keystore2, the new Ultra-wideband (UWB) stack, DNS-over-HTTP3, Android’s Virtualization framework (AVF), and various other components and their open source dependencies.
となってますので、

Keystore2
Ultra-wideband (UWB) stack
DNS-over-HTTP3
Android’s Virtualization framework (AVF)
and various other components and their open source dependencies.
これで150万行の大半を占めているかのような書き方です

まさかこれが大半を占めていたり
>open source dependencies
rustコンパイラのソースツリーが入っているとは言えませんよね
2022/12/07(水) 19:30:47.68ID:/TInWduh
期待すんな
gitとpython入ってるwsl環境とかあれば簡単にとってこれるぞ
https://source.android.com/docs/setup/download/downloading
ただ時間がかかるだけ
この程度出来ない奴がrustについて云々言うとか片腹痛い
2022/12/07(水) 19:35:42.75ID:8PgDeggG
>この程度出来ない奴がrustについて云々言うとか片腹痛い
そうだね(笑)

こっちでもやってみるかな
2022/12/07(水) 19:35:54.12ID:glN0FB8M
半年ほど前のやつがあったのでそれでtokeiかけてみた
とりあえずexternal内が180万行でprebuiltsが500万行くらい
なので1.5mの根拠はexternalの方かな
prebuiltsの方に上で挙がってたmuslとか入っている
external内はrustディレクトリ内の依存クレートが150万くらい
依存クレートでないので最大はcrosvmが30万行くらい

というわけでAndroidのために150万行書き下ろしたというのは言い過ぎ
ただ150万行のソースコード使ってるという原文の主張は正しそう(コンパイラのコードとかは入ってない)
まぁ依存クレートにも明らかにAndroid用っぽいのもあるし
これ以上の切り分けは難しいな
2022/12/07(水) 19:50:48.43ID:CifLjB7G
>>904
それなりに優秀な人たちだと思うんたけどそれでもハードル高いのかな...

>>905
水増しとかどうでもいいのでいちいち絡んで来ないでね
2022/12/07(水) 20:03:05.60ID:glN0FB8M
一応依存クレートも一通り見てみたけど大きいのはメジャーなやつだね
というわけでAndroidのために書かれたコードは全体で40万行以内ってとこかな

まぁtokioやらcrossbeamがちゃんと使われているのは水増しと批判するようなことではなく
むしろいいことなんじゃないか?
2022/12/07(水) 22:19:15.93ID:Lb4jZ7zf
それにしても無駄の多いコーディングだな。
そもそもAndroidで使われたというだけであって、Rustが広まったという訳ではない。
2022/12/07(水) 22:24:52.03ID:Lb4jZ7zf
かつてCが流行したのは、LatticeC、SmallC、TurboC、MS-C、WatcomC など
色んな企業がコンパイラ作りを競い合った結果だったかも知れん。
TurboCが流行ったが、それ以前からCは雑誌I/Oなどでも取り上げられて、
さまざまな人が話をし、良い言語であるという噂が立っていた。
当時を知っている俺が言わせて貰えば、なぜか、Rustはビビっとこない。
Cはビビっと来た。
C++は、初期の頃にびびっときたが、C++11では、こりゃもう駄目だ、
と思った。
919デフォルトの名無しさん
垢版 |
2022/12/07(水) 22:39:14.39ID:UARY1o0b
>>918 蓋を開けてみれば様々なバグ(特にメモリ関連)の元凶だったから、その感覚の逆が正解かな
2022/12/07(水) 22:42:23.65ID:cTs8jKu4
アセンブラとBASICしか無かった所に
Cが登場したから、そりゃ喜んで使うわ
2022/12/07(水) 22:59:32.88ID:Odhm3loP
>>918
今は何にビビっと来るの?
2022/12/07(水) 23:01:58.13ID:Xa+0WmXy
>>918
LSI C-86も入れといてね
2022/12/07(水) 23:23:48.68ID:g3+WCnxI
スタックかグローバル変数しか無い文化でCを流行らせてもヒープのバグは少ない

ヒープを使わないなら変数の寿命は固定長、という伏線が回収されたことに
まだ気付いてない人もいる
2022/12/07(水) 23:25:35.88ID:21cwGaas
>>918
ロートルは去れ
2022/12/07(水) 23:26:15.82ID:Lb4jZ7zf
>>921
そうだな、まだ決め手となるものは無いが、(個人的には好きではないが)JSに
人気が有るのはブラウザがそれしか使えなかったから「では無い」と思ってる。
Rubyと比較すればJSの方が優れているように感じる。
また、C#はJavaよりは改良されていると感じる。但し、これも好きではない。
Pythonも好きではない。人気が有る理由は恐らくAIのライブラリと使用例が
多いからではないかと思ってる。
ということで、今はびびっとくるものが無い。
2022/12/07(水) 23:31:51.79ID:Xa+0WmXy
結局RUSTに限った話じゃなかったかw
2022/12/07(水) 23:34:48.20ID:Lb4jZ7zf
Rustは大々的には流行らないんじゃないと思うぞ。
理由は色々有るが、
・流行ってる言語は、JS、Python、Java、PHP、C#、Ruby、VB など、初心者向けの
 簡易言語が多い。
・Rustは中途半端。伝統を無視。習慣を無視。直感的でない。
・そもそもRustは低レベル向け言語、上記に書いた簡易言語のターゲット層には
 被らない。
なお、Googleは色んな言語に手を出す企業。
使ってる言語も幅広く、(同列に入れるべきでないものも混ざるが)
C++、NaCL(*)、Java、Kotlin(*)、Go(*)、Dart(*)、Carbon(*)、Rust、Wasm、
などなど。[(*)は自社製言語や自社製仮想言語(?)]
自社製言語だけでも4つ、仮想言語が1つ。
2022/12/07(水) 23:36:08.15ID:cTs8jKu4
MS-DOS 向けで最初に入ってきたのは
optimizing C86 だったと思う
2022/12/07(水) 23:40:24.00ID:Lb4jZ7zf
そもそも低レベル言語でもココまでメモリ管理に気をとられる言語はなく、
直感的に書けた。
Rustはメモリ管理ばかりに気をとられる言語。論理に集中しにくい。
また、JavaやC#、C、C++では直感的に書けることがRustでは書けない。
なお、「それはおまえがバグのコードを書いているから」と反論されるが、
はっきり言って、そのコードでも全くバグは無いから。
930デフォルトの名無しさん
垢版 |
2022/12/07(水) 23:49:55.59ID:51+7TkbX
隔離スレがないからとにかく昔話をしたいお爺ちゃん達のたまり場になっちゃったね
2022/12/07(水) 23:56:19.06ID:Lb4jZ7zf
Cが流行ったのはリンクリストが作れたからだ。
Strousutup氏はリンクリストを全否定に近い形で否定しまくっているが、
彼は机上の空論であり、彼が自分で実験してvectorの方が速いとしたものも
実際に合わない机上の空論的なベンチマークテストだったろう。
そしてそれを信じてしまったRustの作者はRustではリンクリストを
まともには使えない状態にしてしまった。
2022/12/07(水) 23:59:45.09ID:sHYfIE3H
なんだお前だったのか
2022/12/08(木) 00:03:22.42ID:kNVI3qAc
スレ立てろよ
手持ちの回線だと全部無理なんだ
2022/12/08(木) 00:08:02.18ID:QroOE5Fs
ID:Lb4jZ7zfのプライドだけ高い老害感すごいな 狙ってできるもんじゃない
2022/12/08(木) 00:20:06.52ID:pMPEGjtK
一般人は馬鹿だから偉い学者さんが言った間違った言説を信じるしかない。
実験したことが現実的な状況と合ってなければ実験結果は無意味。
だから、他の経験者はリンクリストが速くてメモリー効率もいいことを知っている
のに机上の空論者であるところのStroustrup氏は、自分がやった机上の空論的な
実験結果を縦に徹底抗戦を仕掛けている。
しかし、実際と有って無いから反感を買っている。
それも、C++から人が離れていっている原因の一つ。
C++もRustもどちらも机上の空論になってる。
2022/12/08(木) 00:22:10.33ID:pMPEGjtK
>>934
老害はStroustrup氏とRustの信者の方。
Rust信者には本の謳い文句に騙された哀れな宗教信者も多いが。
937デフォルトの名無しさん
垢版 |
2022/12/08(木) 00:29:07.90ID:WCqcOtXz
即NG㌧
2022/12/08(木) 00:32:17.18ID:pMPEGjtK
LinkedListがキャッシュ効率が悪いというのも机上の空論。
なぜなら、机上の空論者は、LinkedListのノードのアドレスが「ランダム」で
あると間違った仮定するから。
実際には基本的に連続しており、多くの場合は連続して無いとしても
軽微な数バイトの隙間がところどころ空いているだけ。
大きく変化することもあるが、それは全体の数箇所だけ。
なぜなら、挿入箇所は、一箇所から始まってその周辺を押し広げてノードを挿入している
だけで、それが少数あるだけだから、アドレスが大きく変わる箇所はわずかで、
「バースト的」になっているから。
机上の空論者は、ノードアドレスをランダムだと考えるから、キャッシュ・ミスが常に
起きると考えてしまう。ところが、そんな状況はまず有りえない。
2022/12/08(木) 00:35:48.02ID:pMPEGjtK
>>938
さらに、LinkedListのメモリー効率が悪いというのもウソで、むしろ、
std::vectorの方が悪いことが多い。
なぜなら、後者は、濃度ーを末尾追加していくと、スプリアス的に
今までの配列の入ったテーブルの1.5倍のサイズのテーブルをヒープ領域から
確保してしまう。
これが物凄く致命的で、std::vectorは、要素 T のサイズが大きい場合、
物凄くメモリー効率が悪くなる。
一方、std::list は、要素 T のサイズが大きい場合、std::vectorより遥かにメモリー効率が良い。
2022/12/08(木) 00:39:53.26ID:pMPEGjtK
>>939
[補足]
std::vectorは、sizeがcapacityを越えそうになると、今までのcapacityの
1.5倍のテーブルを新たに確保するので、今までのテーブルと合わせると、
一時的に 1 + 1.5 = 2.5 倍のメモリー領域を確保してしまう。
std::list ならこんなことは起きない。
なおさらに悪いことに、std::vectorはことの時、全要素を move するので
キャッシュが大規模に汚染されてしまう。
キャッシュ汚染という点では、std::vectorは、先頭や途中への要素追加
の際もキャッシュが大規模に汚染されてしまう。
2022/12/08(木) 00:45:56.87ID:pMPEGjtK
stroustrup氏の言説はデタラメが多くてストレスがたまる。
そして、自分が間違った説を後ろ盾するために、間違った仮定の元に
実験を行なっている。
コンピュータの実験の場合、正しい仮定のもとで行なうことが重要で、
実験して時節を裏付ける結果が出たとしても、仮定がまるっきり
間違っているのだからどうしようもない。
ベンチマークテストでも、もし、実際と合わないような内容をテストしても
意味が無い。そんな状況は滅多に起きないから。
コンピュータの測度は「加重平均値」で決まる。どういう「加重」かが、机上の空論者
には分からないからデタラメになる。
言語仕様の策定においても、実際にはそんなことをやってもほとんど意味が無いことを
優先的に簡単化しようとする一方で、もっとも重要なことがめんどくさくなるような
仕様を追加してしまったりする。
だから、C++は机上の空論といわれる。
ところが、同じことがRustにも言える。
2022/12/08(木) 00:46:30.49ID:rnWAZYk7
gccのrustフロントエンドがマージされるそうだけど、これってどういう時に便利なの?
gccでビルドしたCとのcross-language LTOとかできるの?
2022/12/08(木) 01:02:47.82ID:D2mGrKMe
>>914,916
ありがとうございます とても参考になります

こちらはパーティションを小分けにしていたせいで要領不足にあっていました
これ全体だと300GB以上あるのでしょうか?

仕方ないので
repo init -u https://android.googlesource.com/platform/manifest --depth=1 --partial-clone --clone-filter=blob:limit=10M -b android-13.0.0_r18
としたら100GB位に収まって何とか完走したところです

android-12.1.0_r26も取ってきて21%がcrosvm(当初はChromeOS向け)の移行を含んでるのかどうか見たかったのですが
話のネタが変わってしまったので週末かどこかでやり直すことにしました
2022/12/09(金) 01:41:09.99ID:Sh2LVmg/
LinkedList信者まだいるんだ....
リンクリストなんて既にETHやMITでも、コンピューターサイエンスで多くの人が間違いなく否定するものなのに。別にStrousutupだけじゃないぞ?ほぼ全否定で言ってるのは
キャパを越えそうな事を無理やりするのはほぼ設計の問題だし、途中への要素追加が起きるようなコードを書いてて問題ないと思ってるのはプログラマの能力の問題。
バースト的なんて言ってるけど、連続するメモリー領域へのアクセスと比べて明らかにリンクリストが不利になるのは自明だ、さらに逆に途中追加した場合のキャッシュミスを汚染なんて言ってるけど
それこそ現代の多段キャッシュアーキテクチャを甘く見すぎてる。そりゃ容量を超えるような操作を行えばメインメモリに取りに行くけど、言うまでもないがリンクリストの要素の先はメインメモリー散らばってる。
それがキャッシュされるとしてもCPUのキャッシュは1Byteとか8Byteをキャッシュするものじゃなく1キャッシュブロックで連続するメモリーをk単位でキャッシュする。
StrousutupのC++は明らかに欠陥言語だが、それとデーター構造の理解は別の問題。 コンピュータの速度は加重平均なんていう単純なもんではない
すべてがキャッシュに乗るなら一番早く動くが、メインメモリを頻繁にアクセスするなら100倍遅くなる。メインメモリにさえ載りきらないデータを扱いHDDならそこからさらに1000倍遅い。
だがキャッシュの容量しかデータを扱えないプログラムは役に立たたないし、Swapしまくりのプログラムは実用に耐えない。
まだLinkedListを擁護する人が多いのは、欧米のように日本のプログラマーは文系や高卒がやり、明らかにまともに計算機科学というものを受けていないからだ
Rustこそ欧州主体で行われている計算機科学にあまり即してない、FORTRANみたいな米国主導のLinkedListのような産物
945デフォルトの名無しさん
垢版 |
2022/12/09(金) 02:35:24.01ID:wDDTmzGU
なんだかRubyガイジみたいな論法だよな
Rubyでできることはすばらしいこと
Rubyでできないことは必要ないこと

いや必要あるか、使うかどうかは検討の上こっちが決めるんで😅
2022/12/09(金) 08:53:27.93ID:eLXAv6sJ
関数型のElixir は、先頭だけに追加できる片方向リストで、
データが変更されない・immutable だから、バグらない

x = a-b の時に、
先頭に、c を追加して、y = c-a-b となった時に、
a-bの部分が変更されないので、x, y 両方で再利用できる
2022/12/09(金) 09:23:54.41ID:Bd/06DhF
>>944
絶対ネタで書いてるだろw
2022/12/09(金) 13:50:41.90ID:3DNXTGzR
>>944
CPUにおいて、基本的に cache block と cache line は同じ意味だが、
https://stackoverflow.com/questions/14707803/line-size-of-l1-and-l2-caches
のように、Intel CPUにおけるcache lineの大きさは 64バイト。
先読み機能が有るので、少し先まで読むことがあるが、
1KBみたいに大きくは無い。
2022/12/09(金) 13:58:22.82ID:3DNXTGzR
>>944
コンピュータ科学ではむしろ、LinkedListがArrayListより速いことがあることを学ぶ。
2022/12/09(金) 14:00:08.53ID:3DNXTGzR
>>944
>言うまでもないがリンクリストの要素の先はメインメモリー散らばってる。
現実的な使用法では、バースト的になっていて、散らばってない。
散らばっていると思っている人が現実を知らない机上の空論家だと言っている。
2022/12/09(金) 14:03:46.44ID:3DNXTGzR
>>950
[補足]
バース的で無い場合においても、非常に近いアドレスになっていることが多い。
例えば、ノードを削除してから追加すると、最後に削除されたアドレスが再利用されるから、
データ列を加工する場合にはキャッシュがとても強く働く。
また、ソートにおいてもノードの繋ぎ方を変えるだけだから、コピーはおろか、
ムーブすら発生せず、要素Tのバイト数sizeof(T)が十分大きい場合は、
std::vectorより速い。
2022/12/09(金) 14:08:27.79ID:3DNXTGzR
>>944
>コンピュータの速度は加重平均なんていう単純なもんではない
加重平均である事と、単純である事は同じことでは無い。
単純ではないが、加重平均である。
実行時間 T = Σ_i w_i T_i
w_i = 処理 i に対する重みパラメータ
T_i = 処理 i に掛かる時間

w_i は、経験を積まないとわからなくて、机上の空論家はこれを誤って見積もる。
偉いとされる先生を筆頭とした「象牙の塔」の集団幻覚の様な現象が起きる。
2022/12/09(金) 14:13:39.03ID:3DNXTGzR
>>951
[さらに補足]
・ノードを削除してから追加する--->malloc や new が、直近に
 削除したノードのアドレスを再利用されるのでキャッシュが良く効く。
・削除したノードのメモリ・ブロックが全部使われた場合、
 malloc や new がHeapやOSから新しくアドレスを確保してくる -->
 OSは後続の連続アドレスを返してくるので、アドレスはほぼ連続
 するので、キャッシュが良く効く。

故に、実際的な使用においては、LinkedListはキャッシュがよく効く。
 
 
2022/12/09(金) 14:18:24.24ID:3DNXTGzR
たとえば、馬鹿な人は、通信経路においてのエラーは「ランダムに起きる」から、
「本当にランダム」のケースを脳内で勝手に想像して、
「CRC符合は一般には役に立たない」
と結論付けてしまうかも知れないが、それは机上の空論で、
実際のエラーはバースト的に起きるから、CRC符合は非常に強力に働く。
それと同様にLinkedListもキャッシュが良く効く。
なぜならノードのアドレスが「ランダム」ではないから。
955デフォルトの名無しさん
垢版 |
2022/12/09(金) 15:08:04.74ID:gsPXBpPV
どっちもヤバくて草w
2022/12/09(金) 16:41:02.60ID:WiULU0Bz
自己完結すれば最速で完結するが
机上で完結しないことを望むなら呪術的な対価を要求されるんだよ
957デフォルトの名無しさん
垢版 |
2022/12/09(金) 17:13:50.21ID:TeKO8AU2
>自己完結すれば最速で完結する
アタオカの巣窟になりつつあるな
2022/12/09(金) 18:30:00.75ID:rq1aZYl+
絶対にベンチマークの数値は出せないリンクリストおじさん
いつまでrustに粘着してんの
2022/12/09(金) 21:16:01.37ID:o+3mnUPM
馬鹿は想像力が無いから、理論から計算できない上に、仮定も間違っているから
間違った条件で実験して間違った実験結果を出して、それを信じてしまう。
Stroustrup氏もその一部。
2022/12/09(金) 21:33:34.50ID:o+3mnUPM
>>959
そんな馬鹿でも実際にプログラムしてる人は自分の間違いに気付くが、
彼と彼の取り巻き達はベンチマーク以外のプログラムはしないので
一生気付かない。そして自分達は実験したから正しいんだと主張し
まくって、それを信じた人類は謝った認識を持って文明の発達が遅れる。
2022/12/09(金) 22:18:43.15ID:STy7gq1K
真面目に言うならStroustrupの指摘したリンクリストは、愚直で安直な1要素で次を示すようなデータ構造はバカのすることで間違いない。
というかStroustrupはプログラマのために教え諭してるのに対して、自分が攻撃されたと思い込み、稀なケースで「LinkedListがArrayListより速いことがある」なんていい年してイキっててもしょうもないだろう?
「非常に近いアドレス」とか自分で参照効率が悪いことを理解してるのに、何がしたいのかサッパリわからん。ぴろゆきみたいに見えない仮想的にロンパーしたいの?
https://www.youtube.com/watch?v=YQs6IC-vgmo

ま、今ではUnrolled Linked listとか普通の配列やB-Treeなどと区別がつかない参照の局所性が大幅に向上しているものもあるから
そんなことで騒ぐのはもはやジジイの域だなあ、10年前の出来事じゃん・・・・
2022/12/09(金) 22:39:25.91ID:rOm/uTcN
ジジイと言うかその人は
1) 頭が悪くて
2) 経験もなくて
3) その自覚が無い
というかわいそうな存在だからあんま刺激しちゃダメ
こうなってくるとこの手のひとは
あとは粘着するだけのマシンと化すから要注意だぞみんな
2022/12/10(土) 00:05:08.23ID:s9w4cjy9
自己完結は悪と思ってるから他者に粘着するんでしょ
2022/12/10(土) 01:32:53.73ID:ExYz252Q
コンピュータサイエンスやプログラミング関連の学者は、アホばっかだからな。
2022/12/10(土) 01:33:28.16ID:CrLmIOQg
Rustではポインタの代わりに要素のインデックスで管理するのが基本であり安全
リストもツリーもグラフもこれで実装可能
これはポインタがない言語では当たり前のように使われていた方式
これまでが間違ってた
ポインタなどというものは数百万行とかあるプログラムで正しく使うのは無理
世界中のエンジニアがそのために苦労している
ポインタとNULLは完全に失敗
2022/12/10(土) 01:36:13.33ID:CrLmIOQg
ちなみにインデックス管理がゴミだったのはCみたいに配列の要素チェックがなく
生アドレスを直接触れる仕様だったせい
本来この仕様があり得ない
これならポインタの方がマシだし楽だからという理由でポインタが乱用されてきた
2022/12/10(土) 01:42:29.86ID:ExYz252Q
>>961
その動画のジジイはまさに馬鹿。
老害。
2022/12/10(土) 01:44:30.98ID:ExYz252Q
アメリカのコンピュータ学者は馬鹿。
自ら馬鹿な方法ばかり想定しているから遅いと思い込んでいる。
それを鵜呑みにしてる学生は大ばか者。
2022/12/10(土) 01:46:18.37ID:ExYz252Q
だからアメリカ人の作るソフトは遅い上にサイズも大きいんだな。
日本人の作るソフトはコードも小さいし、データも小さいし、速度も速い。
全然違う。
なぜなら、アメリカ人がイマジネーションが足りなくて馬鹿なのに自覚が無いから。
なのに、詐欺的手法によってアメリカ製ソフトを蔓延させた。
2022/12/10(土) 01:47:54.33ID:48CeiLls
ポインタてのは、CPUの汎用レジスタの
アドレッシングモードを考慮して
OSをコーディングしやすくする仕組みだから
2022/12/10(土) 01:51:53.77ID:ExYz252Q
>>967
おっと、こいつが、Stroustrup氏だったのか。
どうりでデタラメな事言ってると思った。まさに、彼が自書で言ってる通りの内容。
この人は計算量などを考えるイマジネーションが不足している。
2022/12/10(土) 02:00:02.88ID:ExYz252Q
仮に、彼の間違った仮定であるところの、リンクリストのノードのアドレスが
ランダムに近い状態だったとして(それ自体がウソの仮定なのだが)も、
キャッシュペナルティーは、一回当り20クロックほどだ。
だから、この場合、次のノードに移るのに20クロック掛かることになる。
しかし、それでも、ノード数がNの場合に、20*N クロックほどで済むから
そんなに致命的ではない。Nを100倍しても、100倍の時間がかかるだけで、
大した増加ではない。
一方、std::vectorの場合、挿入や削除一回当り、O(N)の時間が掛かるから、
N回それを繰り返すと、O(N^2)の時間が掛かる。
これは致命的で、Nを100倍すると、1万倍の時間になってしまう。
Stroustrup氏は、オーダーの考え方が経験的に身についてない。
2022/12/10(土) 02:06:32.68ID:ExYz252Q
>>972
[補足]
CPUの速度はこの30年間で、1コアあたりに限定しても300倍以上になっている。
良いアルゴリズムを使えば、扱うデータも300倍に増やすことが出来る。
ところが、std::vetcorを使った挿入や削除を行なっていた場合、300*300=9万倍
にクロック数が増えるから、CPUの速度がせっかく300倍になっても、300倍の
時間が掛かることになる。
一方、std::listを使った挿入や削除を行なっていた場合には、クロック数が
300倍で済むから、CPUが300倍になったことにより、時間は昔のままで済む。
つまり、std::listの場合、CPUの速度が300倍になった現在、
データを300倍に増やしても、挿入や削除が昔と同じ時間で済むのに対し、
std::vectorは、同じことをするとなんと昔の300倍の時間が掛かるということだ。

こういう基本をstroustrup氏は理解出来て無い。
探索の時間は関係無い。探索しなければいいのだから。
2022/12/10(土) 02:29:35.43ID:ExYz252Q
>>961
>稀なケースで「LinkedListがArrayListより速いことがある」なんていい年してイキっててもしょうもないだろう?
稀ではない。
今はCPUが速くなりすぎて実感がわかないだけ。
だから、遅いCPUでトレーニングした方が良いと言われている。
2022/12/10(土) 03:06:45.22ID:EiHCMpy7
プロファイルでは粘着というより、論破された時の憂さ晴らし自演が延々と続くパターン
ID:Lb4jZ7zf = ID:pMPEGjtK = ID:3DNXTGzR = ID:ExYz252Q +α
今回は ID:Mw8qZqut だな
2022/12/10(土) 08:26:05.03ID:wI0qdr5j
CPUが早くなったんだからRustで多少遅くなっても大丈夫
2022/12/10(土) 08:49:37.65ID:pTzP7Jq7
Goも大丈夫
2022/12/10(土) 08:52:02.51ID:QB2FhiiS
>>975
ID:Mw8qZqut だけどこの人と同一人物判定されるのは不名誉すぎるからやめてくれ
2022/12/10(土) 08:54:11.81ID:5JJKT/6S
>>978
そうかな?流れ的には水増し論に決着して放り投げてるよ
980962
垢版 |
2022/12/10(土) 09:12:41.82ID:pmPytGrf
誤解は避けたいからいちおう書いとく

> ジジイと言うかその人は

これはもちろん連投してる哀れなID:ExYz252Qのことね
C++やハゲに文句言うとか身の程知らずもいいとこやわ
2022/12/10(土) 09:19:33.69ID:5JJKT/6S
>>980
その人C++スレの自称天才でRustに傾倒していてChatGPT並みに尤もらしい適当をこいている人
2022/12/10(土) 09:22:07.09ID:5JJKT/6S
その人自演が大好きなので ID:Mw8qZqut だとしてもおかしくない
2022/12/10(土) 09:25:57.47ID:5JJKT/6S
流れ的には水増しの話が再開するはずなので、ID:Mw8qZqut = >>978がどう反応するか楽しみ
2022/12/10(土) 09:30:48.75ID:pmPytGrf
>>981
C++スレも荒らされてるのか
自称天才の粘着力すげえな
2022/12/10(土) 11:09:35.00ID:/zXB1Eur
C++ vs Rust Part4建てとく?
2022/12/10(土) 12:35:14.53ID:QB2FhiiS
>>983
Androidのソースコード量については、
* コンパイラはカウントされていない
* 外部の依存関係はカウントされているぽい
ということで、事実関係についてはだいたい確定したのでは
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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