結局C++とRustってど ..
782:デフォルトの名無しさん
23/08/21 20:44:27.67 oR9oJ1qa.net
背理法の仮定を利用しなくても矛盾するなら、任意の結論を背理法で証明できる
だから「矛盾しているのはお前だけ」みたいな結論はむしろ出てこないんだよ
属人的な仮定を必要としないのだから全人類が矛盾する
783:デフォルトの名無しさん
23/08/21 21:19:54.31 q/j5yT82.net
>>782
論理を語るのなら、まず共通の前提条件を全部出して合意取れよ。
前提条件より先に結論が出るとかありえないし、前提条件の合意が取れていないなら矛盾するから議論する意味がない。
784:デフォルトの名無しさん
23/08/21 21:26:14.98 6J/DqmTl.net
>>778
おもしろい
785:デフォルトの名無しさん
23/08/21 21:58:53.90 oR9oJ1qa.net
>>782
合意がなければ義務はないというのは正しい
議論には義務が必要不可欠というのは間違っている
強制力があるべきという合意がもしあれば論理ではなく物理的な戦争が始まる
786:デフォルトの名無しさん
23/08/21 22:02:41.22 oR9oJ1qa.net
ちょっと間違えたけど、どこを間違えたのかいちいち合意を取るのが面倒臭い
787:デフォルトの名無しさん
23/08/22 00:06:37.51 p77SLRC3.net
まあ、この板はプログラム関連なら基本的に何話しても良いってことで。この6traits目を、立てた本人が言ってることなんで。次のtraitからはそれについても書いとく?
788:デフォルトの名無しさん
23/08/22 00:42:55.89 CKREFo3h.net
>>787
君スレと板ごっちゃにしてない?
789:デフォルトの名無しさん
23/08/22 06:46:28.34 oV9q0mPv.net
このスレタイに釣られるって段階で、参加者がある程度絞られてる
別に何話そうが確かに構わんのだが、面白いことを書け
ライブラリ書いてるヤツが定着してるのは、Rustのライブラリ作りってこんな感じなのか、と思って眺めてる
そういや、hsutter氏がなんか動画出してたけど、まだ観てない
勉強しないといけないこと(non C++, non Rust)大杉
790:デフォルトの名無しさん
23/08/22 12:18:07.09 whNyN1Gw.net
>>773
スレタイを100万回読め
791:デフォルトの名無しさん
23/08/22 19:02:47.39 jvLbVv4g.net
>>766 訂正
測定自体はOKですが、最後の一文、桁を読み間違えてたorz
× >juliaが行列積でnumpyの10倍遅いのが意外
juliaとnumpyは同じスピードです(両方ともopenblasバックエンド、同一スレッド数の場合)
URLリンク(i.imgur.com)
>>747,759,764
そちらの環境でのマルチスレッドnumpyの測定数値が出ていたら自作ライブラリとの比較結果お願いします
792:デフォルトの名無しさん
23/08/22 19:57:32.16 p77SLRC3.net
>>791
なんかnumpyでマルチスレッド指定しても速度上がんないんですけど何か要因は考えられますか?
793:デフォルトの名無しさん
23/08/22 21:29:39.50 3Q3W0wKi.net
>>792
こちらでは素のvenvでやり直しても、defaultでマルチスレッドが効いています
$ python311 -m venv venv
$ . venv/Scripts/activate
$ pip install numpy
$ pip list
Package Version
---------- -------
numpy 1.25.2
pip 23.2.1
setuptools 65.5.0
$ du -h venv
96M venv
$ python matmul-numpy.py 1000
0.006245136260986328
0.006272077560424805
0.006720542907714844
0.007251739501953125
0.006670713424682617
0.0067596435546875
0.006724119186401367
0.005736351013183594
0.005699872970581055
0.007322788238525391
condaの場合は分かりませんので、とりあえずpipのopenblas版numpyで計測してみては?
URLリンク(numpy.org)
794:デフォルトの名無しさん
23/08/22 22:57:52.73 3Q3W0wKi.net
miniforgeのcondaでchannel指定してmkl版numpyを入れましたが、こちらもマルチスレッドが効いています(MKL_NUM_THREADS指定無しでも)
$ conda install -c intel numpy
$ du -h ****/tmpenv2
1.3G ****/tmpenv2 <-- orz
$ python -c 'import numpy; numpy.show_config()'
....
blas_mkl_info:
libraries = ['mkl_rt']
library_dirs = [****]
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = [****]
....
MKL_NUM_THREADS=8 python matmul-numpy.py 1000
0.007200717926025391
0.007269620895385742
0.0062868595123291016
0.00983738899230957
0.007195472717285156
0.006726503372192383
0.006485939025878906
0.0068206787109375
0.006815910339355469
0.006788492202758789
795:デフォルトの名無しさん
23/08/22 23:05:57.11 3Q3W0wKi.net
MKL版はthread数指定しないと=8よりも若干遅くなる
$ python matmul-numpy.py 1000
0.007860660552978516
0.009339094161987305
0.00830698013305664
0.006848335266113281
0.008496522903442383
0.007841348648071289
0.007840871810913086
0.00741887092590332
0.007982254028320312
0.006742000579833984
$ python -V
Python 3.8.11 :: Intel Corporation
芋づるインストールされた中でバージョンが気になるもの
mkl intel/win-64::mkl-2023.2.0-intel_49496
mkl-service intel/win-64::mkl-service-2.4.0-py38h9a4cf0c_35
mkl_fft intel/win-64::mkl_fft-1.3.6-py38h5020ddc_56
mkl_random intel/win-64::mkl_random-1.2.2-py38hf267b2b_76
mkl_umath intel/win-64::mkl_umath-0.1.1-py38h51af1d9_86
numpy intel/win-64::numpy-1.24.3-py38hcdfd0aa_0
numpy-base intel/win-64::numpy-base-1.24.3-py38h9b12b81_0
796:デフォルトの名無しさん
23/08/22 23:11:09.00 3Q3W0wKi.net
シングルスレッドがopenblasよりも若干遅いじゃないか!
この辺でやめておきますorz
MKL_NUM_THREADS=1 python matmul-numpy.py 1000
0.032694339752197266
0.03222513198852539
0.03307652473449707
0.03224611282348633
0.031710147857666016
0.03175640106201172
0.032773494720458984
0.032234907150268555
0.03272652626037598
0.0316920280456543
797:デフォルトの名無しさん
23/08/23 11:18:41.09 89z/H8g7.net
crate の docs の comment 率上げるために
struct に comment 付け捲る仕様はホントうざい
798:デフォルトの名無しさん
23/08/24 02:29:53.65 zGLBQFrp.net
python や bumpy の話題はスレ違い。
OSSの話題は許容範囲。
同一視してはいけない。
799:デフォルトの名無しさん
23/08/24 02:32:08.21 zGLBQFrp.net
RustとC++の比較において、前者が「パソコンにおいて」
OSSからスタートしてしまったことは、全ての問題の始まり。
かつてC言語はUnixではOSSであったろうが、パソコンでは
原則的にクローズドであったからこそ発展を遂げた。
800:デフォルトの名無しさん
23/08/24 02:42:41.30 hEI/Eij5.net
>>799
>かつてC言語はUnixではOSSであったろうが、パソコンでは
>原則的にクローズドであったからこそ発展を遂げた。
自分で書いていて論理がおかしいと思わないのかな?
801:デフォルトの名無しさん
23/08/24 02:45:44.43 hEI/Eij5.net
>>799
C言語がクローズドって何がクローズなのかな?
ANSIは誰もが使えるオープンな規格だろうが?
他人に伝えたい文章は正確に書き給え
802:デフォルトの名無しさん
23/08/24 02:47:37.96 zGLBQFrp.net
>>801
TurboC, msc, Watcom C/C++, LSI C, Lattice C,
Small C などがクローズであり、パソコンでOSSなものは
当時存在していなかったはずだ。
803:デフォルトの名無しさん
23/08/24 02:53:01.56 zGLBQFrp.net
C言語は、規格はオープンと言えばオープンであったが、
PC-9801用のコンパイラのソースコードは非公開であった。
X68000 は gcc だったらしいが。
804:デフォルトの名無しさん
23/08/24 02:53:58.47 hEI/Eij5.net
>>802
>>799
>パソコンでは原則的にクローズドであったからこそ発展を遂げた。
これは因果化関係を主張しているので
相関ではなくて因果の根拠を示すことが必要です
述べて下さい
805:デフォルトの名無しさん
23/08/24 02:56:38.98 hEI/Eij5.net
分かると思うけどタイポ
-因果化関係
+因果関係
806:デフォルトの名無しさん
23/08/24 03:19:55.67 zGLBQFrp.net
>>804
クローズドだから競争が生じ、開発環境が高度に発展した。
807:デフォルトの名無しさん
23/08/24 03:23:10.48 zGLBQFrp.net
Win95が開発環境にとって終わりの始まりだった。
OSが32BIT化したことで、Unix系の無料OSSツールが
「主流のビジネスパソコン(PC-9801など)」の世界に
大量流入。
競争条件が破綻し、競争が不可能となり、衰退。
808:デフォルトの名無しさん
23/08/24 04:23:51.68 ejJL7Sq0.net
>>759
(室温超伝導)サンプルの提出をお願いします
>>793-796
スルーか一言で済ませて、余計な知恵を付けさすな
809:デフォルトの名無しさん
23/08/24 04:45:44.07 UfAeCzV0.net
C/C++
/*
printf("hoge*/hoge\n");
*/
コンパイル通る
Rust
/*
println!("hoge*/hoge");
*/
コンパイル通らないωωω
810:デフォルトの名無しさん
23/08/24 04:47:55.84 UfAeCzV0.net
#[cfg(test)]
が原因か?
811:デフォルトの名無しさん
23/08/24 04:51:35.83 UfAeCzV0.net
>>799
>RustとC++の比較において、前者が「パソコンにおいて」
>OSSからスタートしてしまったことは、全ての問題の始まり。
一理ある
>かつてC言語はUnixではOSSであったろうが、パソコンでは
>原則的にクローズドであったからこそ発展を遂げた。
君の世界戦は異世界のものなのか?
812:デフォルトの名無しさん
23/08/24 04:54:05.61 UfAeCzV0.net
分かると思うけどタイポ
世界戦
世界線
813:デフォルトの名無しさん
23/08/24 04:57:32.27 zGLBQFrp.net
>>811
俺が言っているパソコンとは、PC-9801のことだ。
他のパソコンは知らんが、PC/AT機でもDOSでは、
OSSなコンパイラはほとんど動かなかったのでは。
814:デフォルトの名無しさん
23/08/24 04:59:32.52 UfAeCzV0.net
知らないならさっさと寝て下さい
815:デフォルトの名無しさん
23/08/24 05:13:21.27 zGLBQFrp.net
>>814
お前の方が知らんだろ。
OSSのせいで何もかも衰退してる。
816:デフォルトの名無しさん
23/08/24 05:26:52.49 7AUlTMfz.net
OSSは貧者(俺含む)の味方。これはガチ
817:デフォルトの名無しさん
23/08/24 07:39:52.41 UfAeCzV0.net
みんなの予想通り
プリゴジン氏が暗殺された
ぜんぶOSSのせいだ
818:デフォルトの名無しさん
23/08/24 08:51:41.95 TNcuPvYX.net
>>802
当時っていつだよ。
gnu cは1980年台からあるだろ。
819:デフォルトの名無しさん
23/08/24 08:53:47.64 TNcuPvYX.net
>>813
ハナクソみたいな日本市場で世界を騙るとか、どこの異世界ですかね?
820:デフォルトの名無しさん
23/08/24 12:14:49.40 fsW9ztQn.net
>>819
5chでイキって気持ち良くなるとか、どこの暇人ですかね?
821:デフォルトの名無しさん
23/08/24 13:03:33.51 hEI/Eij5.net
>>802
確かにコンパイラは淘汰され減ったが
トータルのコンパイラの利用者つまり開発者は
OSSがない場合に比べて増加したんだと思うよ
誰でも直ぐに無料で開発を進められるようになり
開発者の裾野が広がったのは
ソフトウェアの進化速度を考える上で重要だったと思う
822:デフォルトの名無しさん
23/08/24 15:07:09.15 HFuNmebf.net
>>821
淘汰されたのはOSSのせいじゃなくてVisual C++のせい。
823:デフォルトの名無しさん
23/08/24 15:13:16.73 YZsWFF7D.net
>>818
DOSのPC-9801ではまともに使えなかった。
824:デフォルトの名無しさん
23/08/24 15:51:29.49 YZsWFF7D.net
競技プログラミングみたいな何の能力を測定しているのか、
また、参加者も限られるようなものの成績が良かった
ことと、言語に対する評価眼を持っていることは別である。
評価とは、審査する側が誰であるかによって異なってしまう。
国際組織でも、アメリカの金で成り立っている組織は、
アメリカの意見になってしまうことは良く知られている
のと同様、プログラムでも学問の世界でも同様だと考えられる。
825:デフォルトの名無しさん
23/08/24 15:56:25.89 hEI/Eij5.net
>>824
それで?
826:デフォルトの名無しさん
23/08/24 15:56:54.62 YZsWFF7D.net
「若いから年上の人より正しい判断が出来る」とは限らない。
しかも、その若者の能力が高いかどうかを判定しているのが
京大総長というような高齢の権威者の場合はなおさら。
何を持って人の能力を判断しているのか問題、という問題
が起きる。
827:デフォルトの名無しさん
23/08/24 16:00:05.43 YZsWFF7D.net
京大総長が、「この人はプログラミング能力がすばらしい」などと
判断したとしよう。
しかし、それは「京大総長基準」に過ぎない。
「プログラミング能力が素晴らしい」とは、一体何を
もって決めるのか。
仮に素晴らしかったとしても、プログラミング言語の
良し悪しをその人一人が判断してよいということでもない。
828:デフォルトの名無しさん
23/08/24 16:12:01.07 M4GRlfeF.net
それで?
829:デフォルトの名無しさん
23/08/24 18:17:38.62 QG+ZRfMP.net
test
830:デフォルトの名無しさん
23/08/24 18:50:59.70 RER6Zrq6.net
パソコンが高価だった時代はゲーム機が貧者の味方
その時代のゲームは今でも売買されているが開発者の利益にはならない
むしろ過去の商用ソフトは衰退させた方が最新のゲームを売りやすい
831:デフォルトの名無しさん
23/08/24 18:52:23.22 CY1BVKcv.net
#[derive'Copy, Clone)]
たとえば古い passwd ファイルの形式とかで使われていた
root:x:0:0:root:/root:/bin/bash
user01:x:500:500::/home/user01:/bin/bash
のような「:」区切りのテキストファイルのデータベースを扱いたいとき
C標準のライブラリは何ですか?
Rust用のcrateで言うと何ですか?
832:デフォルトの名無しさん
23/08/24 19:15:40.09 zclBScKH.net
なんでそんなこと聞くの?
833:デフォルトの名無しさん
23/08/24 22:11:36.44 3ljd7W/g.net
自作自演の準備じゃね
834:デフォルトの名無しさん
23/08/25 00:12:20.33 1ayFYibv.net
>>831
区切るだけならstr.split(':')かstr.splitn(7, ':')
構造体に入れるなら一般的にserde crate
そのケースならcsv crateでコロンにデリミタ指定でもいけるはず
835:デフォルトの名無しさん
23/08/25 00:21:37.84 jCG33I6S.net
Cなら自分はstrtokが好きかなあ もちろんいろいろとunsafe
836:デフォルトの名無しさん
23/08/25 03:14:57.13 VpCvI12o.net
Ruby で、CSV モジュールを使って書いた
UNIXプログラミング質問すれ Part10
スレリンク(tech板:936番)-937
837:デフォルトの名無しさん
23/08/25 05:21:04.13 +GAmI8K8.net
>>681
わかりみ
838:デフォルトの名無しさん
23/08/25 07:20:56.16 vekBwhc6.net
BDS-C とか α-C の人は少数派かな
839:デフォルトの名無しさん
23/08/25 07:34:56.19 jCG33I6S.net
THINK Cとか、CodeWarriorとかあったけどねえ 内製にはgccで十分だわって
840:デフォルトの名無しさん
23/08/25 10:05:27.96 QjCfYj97.net
マクロはズル
非売品はチート
ネイティブコンパイラは商品という雰囲気
841:デフォルトの名無しさん
23/08/25 21:47:21.62 dgCh3EK3.net
スレタイだけ見て検証結果だけ見に来ました
どこですか?
842:デフォルトの名無しさん
23/08/25 22:49:31.05 TKWUIPKw.net
検証結果ならC++とRustの平行線が交差してるところに書いてあるよ
843:デフォルトの名無しさん
23/08/26 09:36:49.47 6yPOQcjp.net
何番のレスですか?
844:デフォルトの名無しさん
23/08/26 10:17:55.69 YvKfERa1.net
MS「BASICとCってどっちが儲かるの」
科学「推測するな。速度を計測しろ」
アンチOSS「ソースを見れない方が勝つ」
845:デフォルトの名無しさん
23/08/26 10:47:48.15 oTZjsNGJ.net
>>844
アホ科学者「推測するな。速度を計測しろ」
知的科学者「思考実験しろ」
846:デフォルトの名無しさん
23/08/26 12:11:26.64 n9Zpgb21.net
科学的wの含意がわからないバカは単なるバカより悪性度が高い
847:デフォルトの名無しさん
23/08/26 12:50:41.78 EQIr/PqP.net
参照で充分なのに所有権の移転を要求する関数があると
いちいちcloneしてから渡さないといけないから非効率
もちろん一回呼ぶだけならclone不要だが
ループ中とかで何度も呼ぶ用途には使えない
なんでそんな関数の設計になってるんだろう?
別にメリットでもあるんか?
848:デフォルトの名無しさん
23/08/26 13:34:35.63 Zw1oRqbC.net
日本の科学界は理論軽視。実験ばかりしてる。
849:デフォルトの名無しさん
23/08/26 13:51:37.78 BkdXpONX.net
日本のプログラマは設計軽視
実装ばかりしている
850:デフォルトの名無しさん
23/08/26 13:53:57.47 1I5XjMeW.net
まだ検証結果とかないんですね
結果だけは知りたいので、そのうちまた来ます
851:デフォルトの名無しさん
23/08/26 13:54:42.84 X9B+4TBT.net
無駄な事を如何に合理的に行うか
852:デフォルトの名無しさん
23/08/26 17:14:09.12 BANL9PLy.net
>>847
例えばどの関数?
853:デフォルトの名無しさん
23/08/26 18:20:57.77 SuFMWKx7.net
>>852
誰かばれるからネットでは言えないだろうて。
854:デフォルトの名無しさん
23/08/26 18:28:43.52 PUW/Ds/i.net
逆じゃね
日本人は実装軽視
設計でガチガチに固めすぎる
855:デフォルトの名無しさん
23/08/26 18:35:38.61 d2gT63Zp.net
>>853
具体例出せないんだと
本人の認識に問題あるのか
関数の作りに問題があるのかわからない
856:デフォルトの名無しさん
23/08/26 18:39:02.26 rFnbk731.net
わからなくていいんじゃない?
857:デフォルトの名無しさん
23/08/26 19:54:07.81 W0ZiOB7w.net
わかってないのに何かわかったつもりになって書き込まれているクソスレ
858:デフォルトの名無しさん
23/08/26 21:07:05.08 0tgAAb31.net
上には上がある わかったつもりでも、さらに賢い奴から見ればクソ
自分なりに勉強して持論もまとめてるが、わかったなんて思わないもんだ
859:デフォルトの名無しさん
23/08/26 21:55:32.22 H12RzSKf.net
さすが老害スレww
860:デフォルトの名無しさん
23/08/26 22:24:06.83 lapxHx5e.net
賭け事とか軽率な行動をしなければいいよ
頭の中が謙虚だろうが傲慢だろうが行動に直結しなければいい
いくら謙虚になっても忠誠心か何かで極端な行動をするパターンはある
861:デフォルトの名無しさん
23/08/26 22:46:59.85 rQ60jT/J.net
さすが老害スレw
862:デフォルトの名無しさん
23/08/27 02:06:49.72 q6Sk83rz.net
判ると解るの違いも分からないとか単なるバカだろ
863:デフォルトの名無しさん
23/08/27 02:08:05.98 fTLdLIfO.net
あーそれめっちゃわーかーるー!
864:デフォルトの名無しさん
23/08/27 02:39:08.79 v+5WY+8u.net
Firefoxは何かと問題が多い
865:デフォルトの名無しさん
23/08/27 10:34:56.61 m1noAQBG.net
構造体に演算子オーバーロードしたいときって,所有権持ってかれないように構造体の参照に対して演算子オーバーロードでいいの?
期待通りに動くんだけど
&a + &b
みたいな書き方になってまどろっこしい
866:デフォルトの名無しさん
23/08/27 10:46:11.22 FBPgStJh.net
(*a).演算()やa->演算()を間違えてa.演算()と書いたらエラーになるのがC++で
エラーにならないのがRustじゃないの
867:デフォルトの名無しさん
23/08/27 10:50:29.34 fHPM9HO/.net
>>855
前者だったことが判明
868:デフォルトの名無しさん
23/08/27 11:12:20.72 KN9Q47l4.net
勝利宣言おじさん!
869:デフォルトの名無しさん
23/08/27 12:47:03.16 nwdT7crg.net
>>867
ネットで身元がばれるような情報が書けない事をいいことに
勝利宣言してしまう人。
870:デフォルトの名無しさん
23/08/27 13:02:52.22 gIdFwVfH.net
くやしそうww
871:デフォルトの名無しさん
23/08/27 13:15:32.07 nwdT7crg.net
どうせ普及し無い事が分かってるし、なんとでも言え。
872:デフォルトの名無しさん
23/08/27 13:30:23.89 FBPgStJh.net
スマホや自動車の部品のように
買わされたけど存在意義は知らない物が普及することはよくある
873:デフォルトの名無しさん
23/08/27 13:50:59.05 HtzqCBy6.net
おじさん思考トレース
おじさんはね
Rustに部分的にでも欠陥があるかのような物言いは許せないんだよ
コードが出れば今すぐにでもそいつのせいにしてマウントして打ち消しようと思うんだけどね
証拠がないならそいつのせいってことで断定してマウントとっちゃうのが手っ取り早いから、もうそういうことにしちゃうよ
874:デフォルトの名無しさん
23/08/27 13:53:29.74 HtzqCBy6.net
こうして今日もRustの名誉は保たれた
875:デフォルトの名無しさん
23/08/27 14:19:51.40 FzVOeawK.net
FirefoxはRustで書かれてる
876:デフォルトの名無しさん
23/08/27 14:42:04.03 ZMNQeswV.net
めちゃくちゃくやしかったんだなwwwww
クッソおもろい
877:デフォルトの名無しさん
23/08/27 14:45:24.00 wLUi1wnU.net
FirefoxってRustでも書かれているってだけで
C/C++の方がまだ多いうだよ
878:デフォルトの名無しさん
23/08/27 14:53:34.38 FBPgStJh.net
確率的にはコンパイラのバグよりもアプリかライブラリのバグが多いから
コンパイラに欠陥があった的な物言いは分が悪い
これをやりたいためにライブラリを外部に丸投げする方式が普及している
879:デフォルトの名無しさん
23/08/27 15:00:51.57 FzVOeawK.net
使用率100%は電池が減る
880:デフォルトの名無しさん
23/08/27 16:29:11.02 CnmnxBvX.net
>>865
普通はCopyにする
Copyにできないなら明示的にcloneする
どちらにも採用できない状況なら
参照に対してのみオーバーロードを書く
+や-の演算子はdot演算子と違ってauto-referencingが効かないから
&a + &bみたいな書き方になるのは現状では避けようがない
将来的にauto-refが効くように改修されることがもしあれば
a + bのような書き方もできるようになるかもしれない
881:デフォルトの名無しさん
23/08/27 17:02:53.80 dtO6uWju.net
>&a + &b
>みたいな書き方になってまどろっこしい
Copy実装したくない大型なら参照を使うから&a + &bの書き方がありがたい
小型ならCopy実装してa + bと書ける
882:デフォルトの名無しさん
23/08/27 17:07:29.78 FBPgStJh.net
大きいサイズの値を2回以上コピーするのを1回にするような最適化は
コピーコンストラクタに副作用がない保証があればできる気がする
そしてRustのCopyの振る舞いはユーザが勝手に定義できない
883:デフォルトの名無しさん
23/08/27 18:00:17.55 U2l728xv.net
>>867
具体例出せないと後者の可能性高いだろ。
標準ライブラリやOSSならそういう問題は他の誰かからも指摘入って修正されるだろうし。
884:デフォルトの名無しさん
23/08/27 18:26:07.84 5kryRYaj.net
>>880
ありがとう
auto-refないから&a+&bって書き方になるのね
理解したわ
885:デフォルトの名無しさん
23/08/27 18:47:19.96 9Fw72WPV.net
>>883
具体例はfn add(self, rhs: Rhs) -> Outputだったということでしょ
886:デフォルトの名無しさん
23/08/27 19:50:49.96 zk2DK/9o.net
>>885
なるほどね
やはり勘違いしていたわけだ
&selfと書いていないから参照はダメだと思い込んでしまったのだろう
実際にはもちろんself自体が参照型でもOK
887:デフォルトの名無しさん
23/08/27 19:55:22.28 zk2DK/9o.net
一般的にもトレイトのメソッドfoo(self, ...)についてself自体が&T型の場合もある
&T型はCopy実装されているため消費されても構わない
ようはポインタだから
888:デフォルトの名無しさん
23/08/27 20:33:53.99 E6sVfEz/.net
え、その二つの話つながってたの?
889:デフォルトの名無しさん
23/08/27 21:23:31.52 Cz9QaAKK.net
比較演算子とかはauto-ref/derefできたほうがいいと思うが算術演算子はexplicitな今のスタイルの方がいいと思う
今でも&a + &bの中身がa.clone() + b.clone()になってるやつとかやめて欲しい
890:デフォルトの名無しさん
23/08/27 21:33:56.56 OVTDvFv9.net
>>885でSelfもRhsもOutputも自由なのでT次第でT + T、T + &T、&T + &Tなどそれぞれ最適な実装ができる
例えばT + &T -> Tは敢えて消費してそのメモリを居抜して返す効率パターン
例えば計算途中の中間生成Tは消費されてもよいわけで再び結果の中間生成Tに転用できる
891:デフォルトの名無しさん
23/08/27 21:35:11.73 Aks4ymi6.net
>>889
俺もそう思う
コピーして演算なら a+bで良いと思うけど
デカいオブジェクトで参照で演算なら&a+&bのほうがわかりやすいから良いと思う
892:デフォルトの名無しさん
23/08/27 21:44:01.12 OVTDvFv9.net
数値計算以外にも応用できて
Rhsは &T でなくてもよいため
例えば { string.push_str(other_str); string } と書くところを
string + other_str と簡潔に書ける
以下の居抜き実装があるため
impl Add<&str> for String {
type Output = String;
#[inline]
fn add(mut self, other: &str) -> String {
self.push_str(other);
self
}
}
893:デフォルトの名無しさん
23/08/27 21:45:30.32 Aks4ymi6.net
>>888
俺もなんで&a+&bの&を書くのがまどろっこしいが
>>847の
>参照で充分なのに所有権の移転を要求する関数があると
>いちいちcloneしてから渡さないといけないから非効率
に結び付くのか理解できないが,でも、rust野郎は激頭いいから同じ質問を形を変えた質問と
見抜いたんだろう
894:デフォルトの名無しさん
23/08/28 03:04:54.55 kRbDFKro.net
質問してる人と答えてる人が同じ人だったら怖いなあ
895:デフォルトの名無しさん
23/08/28 03:16:32.18 gISZWwhM.net
自演の多いスレ
896:デフォルトの名無しさん
23/08/28 09:03:13.17 ponuOfxz.net
ほんそれ
>>873-874
897:デフォルトの名無しさん
23/08/28 10:16:26.38 uyUKevyw.net
くやしすぎて負け惜しみを書かずにはいられない老害爺ww
898:デフォルトの名無しさん
23/08/28 12:32:28.64 PXcIjE1o.net
Rustの名誉を守るため、日々欠かさずパトロール。
そうしてRustの名誉は保たれているのだ。
899:デフォルトの名無しさん
23/08/28 12:58:11.57 v69lGQmU.net
質問してたのは行列演算の人でしょ
900:デフォルトの名無しさん
23/08/28 13:33:08.88 EHUcz/c8.net
>>847と>>865両方とも?
901:デフォルトの名無しさん
23/08/28 14:14:10.40 fWSSPYAk.net
impl<'a> Add for &'a Foo
impl<'a> Add<&'a Foo> for Foo
これで、変数名に&はつかないけど括弧に&がつく感じにできるね
a + b + c == &(a + b) + c == a + &(b + c)
902:デフォルトの名無しさん
23/08/28 15:01:10.40 Lf88OaGD.net
それだけじゃ無理
903:デフォルトの名無しさん
23/08/28 15:28:15.79 YEWHN9+F.net
Rustで学ぶなんとかとかいう本いっぱい出ているし、結構個人でやる気のあるやつは覚えるんじゃね?
Rust人口増えている印象。
904:デフォルトの名無しさん
23/08/28 16:02:44.46 Ga4nU38J.net
この出版不況にそれは凄いじゃん!
905:デフォルトの名無しさん
23/08/28 17:40:21.62 g5rB6bRy.net
数年後はHaskellみたいな存在になってそう
906:デフォルトの名無しさん
23/08/28 17:40:22.57 v1Y6udqG.net
数年後はHaskellみたいな存在になってそう
907:デフォルトの名無しさん
23/08/28 18:31:30.91 F1J/4/k0.net
地学を笑えば名誉を保てそうなのに
逆に名誉を捨てて地学を取る芸風みたいな
908:デフォルトの名無しさん
23/08/28 19:57:39.97 4Zx7/Z20.net
数年後にはHaskellみたいなってると言う人が数年前からいるけど数年後もいるだろうなぁ
909:デフォルトの名無しさん
23/08/28 20:08:53.96 BueC5+dS.net
数年前はHaskellはまだブームだったからその時は誉め言葉だったんじゃないの?
910:デフォルトの名無しさん
23/08/28 20:46:16.35 o8MpXwtV.net
まあそもそもC++人口がそんなに多くないのにそこからRUSTに移行する人間なんて更に少ないわな
911:デフォルトの名無しさん
23/08/28 20:47:30.82 C2T1kkQt.net
ちょっと勉強するならいいけどビジネスでRust書くとか発狂しそう
912:デフォルトの名無しさん
23/08/28 20:53:03.47 kRbDFKro.net
そろそろ質問する人と答える人が出てくるかも
913:デフォルトの名無しさん
23/08/28 21:01:02.40 DV0IBXio.net
単純なoperator overlodingでもTと&Tの組み合わせで最低4パターンは考慮しないといけないからな
一般的なビジネスアプリケーションでこういう手間をかけるだけのメリットを享受できるケースは少ない
914:デフォルトの名無しさん
23/08/28 22:06:15.45 LALZht9t.net
operator overlodを使うビジネスアプリケーションw
あるとしてもoperator overlodを定義するのはライブラリの仕事
利用者は型エラー起こさないように使うだけであり一般的な静的型付け言語どれも同じ
915:デフォルトの名無しさん
23/08/28 22:36:07.58 78Jgmrk1.net
>>914
知らない分野に無理にコメントしなくていいぞ
916:デフォルトの名無しさん
23/08/28 22:50:16.52 t6DgO9mO.net
ないな
算術以外でオーバーロードは必要ない
関数(メソッド)名で目的をはっきりさせる
917:デフォルトの名無しさん
23/08/28 22:53:49.98 56ZoPPYl.net
くやしくてイチャモンつけたかっただけだろw
918:デフォルトの名無しさん
23/08/28 23:04:09.89 o8MpXwtV.net
バカでも書けるフレームワークでも無ければビジネス利用は無いだろね
919:デフォルトの名無しさん
23/08/28 23:07:53.29 N5WGrjIW.net
>>916
operator<<
operator>>
920:デフォルトの名無しさん
23/08/28 23:08:27.79 F1J/4/k0.net
PerlやC++の演算子を想定してるんだろうけど
若者はそんなものは知らん
PythonとRustは失敗を繰り返さなかった
921:デフォルトの名無しさん
23/08/28 23:30:17.72 t6DgO9mO.net
>>919
シフトは整数以外で使ったことないな
そんなものをオーバーロードしてどうするんだよ
意味不明になるぞ
922:デフォルトの名無しさん
23/08/28 23:56:35.09 LALZht9t.net
>>915
具体的にoperatorをoverload実装して使うビジネスアプリケーションを言ってみろよ
例えば多倍長を利用するとしても汎用ライブラリが実装するから該当しないよな
923:デフォルトの名無しさん
23/08/29 00:00:35.21 J3xeIa5d.net
一般的には算術演算子よりも比較演算子をオーバーロードすることのほうが多いだろうな
924:デフォルトの名無しさん
23/08/29 00:04:16.28 82ATxlW4.net
>>921
そいう批判は昔からあったけど混乱することは全くないよ
925:デフォルトの名無しさん
23/08/29 00:36:27.64 fynFs9jV.net
>>923
Rustなら例えばこう書くだけだな
#[derive(PartialEq)]
struct Foo { ... }
これで型表記Foo == Fooも&Foo == &Fooも通る
Foo == &Fooは撥ねてくれる
ちなみに値の比較ではなく
同一性すなわちポインタの比較をしたいならば
std::ptr::eq(&Foo, &Foo)
926:デフォルトの名無しさん
23/08/29 01:09:16.27 Cd1k3Xfz.net
>>922
もしかしなくても実務経験ゼロ?
927:デフォルトの名無しさん
23/08/29 01:43:28.47 g1jCtVM0.net
>>925
>Foo == &Fooは撥ねてくれる
値として扱うならこれは跳ねるべきではないのでPatrialEqのimplが追加で2ついる
928:デフォルトの名無しさん
23/08/29 01:43:31.90 fynFs9jV.net
おまえらいつも例を出さずにもめてるな
演算子をオーバーロード実装するビジネスアプリとやらの例を出せば済む話
929:デフォルトの名無しさん
23/08/29 01:45:18.86 fynFs9jV.net
>>927
型不一致として撥ねるべきだ
930:デフォルトの名無しさん
23/08/29 01:49:31.97 fynFs9jV.net
>>927
例えば型不一致でも通せ!という理不尽な要求はここへ行き着くので認めるべきでない
if Foo != &Foo {
Foo = &Foo;
}
931:デフォルトの名無しさん
23/08/29 01:51:57.07 3VOu0kGE.net
>>929
eqメソッドを使った時も撥ねる仕様ならその言い訳も成り立ったかもね
932:デフォルトの名無しさん
23/08/29 02:17:09.83 +HxwobiY.net
>>926
と素人が申しております
933:デフォルトの名無しさん
23/08/29 02:25:36.33 RO95g2iU.net
>>931
演算子オーバーロードの話をしているところにメソッドを持ち出したらオウンゴールw
メソッド使用でいいなら演算子オーバーロードの必要なし
934:デフォルトの名無しさん
23/08/29 05:40:09.32 DdsP5NoC.net
演算子のオーバロードは、ライブラリマンに任せるよ これはC++も同様
あんなものバグ・抜けなしで書けるとか数学マンかよ
ああいうこともできる、というのがC++のいいところだが、自分には過ぎた代物
935:デフォルトの名無しさん
23/08/29 07:50:33.04 E3TpD5zQ.net
英単語ではない記号を使うだけなら仮想関数でもできる
仮想関数のように型を統一しないのがオーバーロードの特徴
統一するとvoid*とかObjecとか残念な型になってしまう
936:デフォルトの名無しさん
23/08/29 10:14:25.34 RvCE3Lp0.net
>>900
その二つは別人
ソース俺
>>888
繋がってない
めっちゃ迷惑
自演じゃなくて他演されたの初めてだわ
937:デフォルトの名無しさん
23/08/29 12:39:12.46 Gj9jSZac.net
>>936を信じるなら
ID:EQIr/PqP
≠
ID:m1noAQBG = ID:RvCE3Lp0 = 行列ライブラリの人
で、ID:Aks4ymi6は行列ライブラリの人になりすまそうとしたっぽい謎の人物ってことかいな?
938:デフォルトの名無しさん
23/08/29 13:05:17.54 4jFDwxnu.net
このスレまじで負け惜しみレスが多いな
なんでここまで幼児メンタルを引きつけるのか謎
939:デフォルトの名無しさん
23/08/29 13:45:45.19 L7AzKEdf.net
ここはプログラマ板ではなくプログラム板
話はプログラムで示せ
それができない話ならばプログラマ板へ行け
具体的なコードで話せずに文句と批判するだけの無能は不要
940:デフォルトの名無しさん
23/08/29 13:57:24.70 YzXqUdha.net
自分で自分追放してて草
941:デフォルトの名無しさん
23/08/29 14:01:13.75 Gj9jSZac.net
>>939
問題の切り分けができない無能も不要
942:デフォルトの名無しさん
23/08/29 14:44:41.31 CCTytCTB.net
急に発狂するやついて草
何か刺さっちまったんだろうなw
943:デフォルトの名無しさん
23/08/29 18:25:25.49 113viVdP.net
玲音しね
944:デフォルトの名無しさん
23/08/29 18:42:00.76 E3TpD5zQ.net
こんな仮想空間でまじになっちゃって
負けたら大変なことになると思い込むのが問題なんだけど
論破というのはまさにそういう仮想空間で相手にそう思い込ませる術だよね
945:デフォルトの名無しさん
23/08/29 19:18:58.62 YzXqUdha.net
rustって名前が良くないよねって思ったけどcも大概やったわ
946:デフォルトの名無しさん
23/08/29 20:54:09.08 Nn6iD5I/.net
おれ865だけどなんで847と同一人物認定されてんの?
947:デフォルトの名無しさん
23/08/29 21:54:12.23 0ZJbGVqi.net
Rustは普及してないという願望・妄想と
Rustに言及するレスが続いてる現状を両立させるためだろ
948:デフォルトの名無しさん
23/08/29 21:55:40.52 o1bsY+eR.net
稚拙w
949:デフォルトの名無しさん
23/08/29 22:39:33.53 qbvOBi0x.net
>>947
C++おっさん・爺は年齢的にRust覚えられないから
普及されると嫌だろうからな
一方、若い連中はもう化石言語になるC++よりRustに将来性を見出すだろうからな。
950:デフォルトの名無しさん
23/08/29 23:08:37.53 dpeDea2P.net
若い人は誰も使ってないイメージ
951:デフォルトの名無しさん
23/08/29 23:42:50.57 KeTq/BI+.net
でも、いまC++もRustも経験がない人が勉強するならC++からじゃない? C++がある程度分かってないと、Rustのありがたみも分からないし。
952:デフォルトの名無しさん
23/08/30 00:16:18.11 4rN9QUhj.net
Cと各スクリプト言語から来てRustで困ることなかった
C++は必要なさそう
953:デフォルトの名無しさん
23/08/30 08:48:22.21 eE+KSztu.net
将来性ならpython
言語設計ならNimかMojo
実力ならc/c++
かね。
pythonは無くなることないから身につけて損はないし、その延長線としてNimは使える。
Mojoはスタックフレーム指向として将来性感じる。RustはMojoの踏み台。
954:デフォルトの名無しさん
23/08/30 08:54:27.99 Q1GiOTDg.net
バイナリサイズを小さくしたい→C
バグを少なくしたい→Rust
??→C++
955:デフォルトの名無しさん
23/08/30 10:06:20.92 7zJH/Xg6.net
>>954
Cの後継はZig
C++の後継はRust
C++はいらないこ
956:デフォルトの名無しさん
23/08/30 10:57:54.24 O0+f/FEO.net
mojoはわかるけどnimってスーパーマイナーすぎんか
957:デフォルトの名無しさん
23/08/30 12:29:00.92 kkA3iJAe.net
>>953
>>956
mojoは早くソース公開しろよ
958:デフォルトの名無しさん
23/08/30 12:30:46.34 kkA3iJAe.net
>>955
zig使ってるbunが1.0になったのに、肝心のzigはいつ1.0になるんだよ?
959:デフォルトの名無しさん
23/08/30 12:32:21.28 K0sdPATe.net
喪女はまだめっちゃアーリーステージです~って言ってなかったか
それであんなにドヤ顔登場させた意味はわからんが
960:デフォルトの名無しさん
23/08/30 12:40:02.98 wWfEYgvd.net
やねうら氏ね
961:デフォルトの名無しさん
23/08/30 12:40:52.41 wWfEYgvd.net
>>951-952
C++は知らない方が良い
962:デフォルトの名無しさん
23/08/30 12:42:41.11 wWfEYgvd.net
>>956
nim知らないの?遅れてるな
963:デフォルトの名無しさん
23/08/30 13:45:48.64 mNxVjhal.net
>>962
あなたの遅れてる認定とか知りませんやんw
964:デフォルトの名無しさん
23/08/30 15:17:49.40 zHni/Vbc.net
智慧をくれ
965:デフォルトの名無しさん
23/08/30 15:36:17.12 HQ0MoXmm.net
「次世代言語wに憧れる一日中暇なお爺さん達wのスレ」
さすが!中身がない!
966:デフォルトの名無しさん
23/08/30 17:03:14.09 JRlr8oOO.net
前にnimは使ったことあるけど、結論的にはそんなに将来性を感じなかった。nimのライブラリが少ないし、pythonのライブラリを使うと結局そこが律速段階になるので速度の恩恵も個人的には微妙だった。これなら普通にpythonを使った方が便利だなとは思った。いまはどんだけ進展してるのかは良く知らんけど。
967:デフォルトの名無しさん
23/08/30 18:40:48.60 Blqpd4nm.net
>>953
Pythonは必要な時にスクリプトの読み書きができれば十分で
あの言語仕様と遅さはプログラミング言語としては適してないためこのスレの対象外
Nimは何もかも中途半端であることに加え
先が見えてしまったのとあの開発体制では今後も期待できないため無視してよい存在
968:デフォルトの名無しさん
23/08/30 18:56:26.78 VDEXXxkp.net
意味のないレスだよ
969:デフォルトの名無しさん
23/08/30 19:40:27.89 K0sdPATe.net
mojoを持ちつつPythonを嗜み
Rustを横目にc+に打ち込む
970:デフォルトの名無しさん
23/08/30 20:24:13.48 YW1fodiP.net
Rustが失敗作だったってことじゃん
971:デフォルトの名無しさん
23/08/30 20:35:58.15 o+6d8X1p.net
現実はこれ>>496
新たなネットインフラC++ではなくRustで記述されている
972:デフォルトの名無しさん
23/08/30 21:03:04.24 U5prozod.net
>>971
現実はRustで書かれているものも稀にあるってだけでは?
973:デフォルトの名無しさん
23/08/30 21:05:54.95 EFFGi3bv.net
>>298
mallocしたままfreeしないのはRustでももちろんできる
BoxやVecなどにはleak()があり意図的にリークする(=今後解放しない)ことができる
代わりに得られるのはライフタイムがstaticな可変参照
つまり静的にメモリ確保したことと同じ扱いになりライフタイムの束縛がなくなり自由となる
974:デフォルトの名無しさん
23/08/30 21:20:25.79 qErRQYHl.net
>>972
超大手が色々検討してその結果Rustで作ったなんだが、
知りたいのは、なんで(C++じゃなく)Rustを採用したのかなんだよな。
俺思うに、ネットインフラは公開で超攻撃対象になるから、脆弱性がなるべく少なくなるように
するためにはC++よりRustが良いと判断したからじゃないかと妄想。
975:デフォルトの名無しさん
23/08/30 21:33:28.86 U5prozod.net
>>974
だからその超大手の数多ある新規プロジェクト群の中に
Rustのプロジェクが稀にあるってだけなのでは?
976:デフォルトの名無しさん
23/08/30 21:37:48.96 qErRQYHl.net
>>973
そんなの(leak()って)あるのか、leak()でdropしない(禁止する)ように指示しているのかな
977:デフォルトの名無しさん
23/08/30 21:39:30.75 8/HxBYkL.net
>>974
C++と比べるとRustはまず記述のしやすさと可読性の良さ
そしてC++よりもコンパイル時点で判明できるミスやバグが多くてデバッガ実行も激減し開発効率が高い
同時にそれらは保守性の良さにも繋がっている
C++とRustのどちらも選べる環境ではC++が今後使われることがほぼなくなるのだろう
978:デフォルトの名無しさん
23/08/30 21:43:01.91 qErRQYHl.net
>>975
まれだとしても,超重要なものにわざわざRustだからな
話題のRustでどれぐらいのものが出来るか確認するための
重要なものを作ってみた可能性もあるが
979:デフォルトの名無しさん
23/08/30 21:49:43.21 8/HxBYkL.net
>>496はCloudflareとAWSそれぞれの最も重要な中核部分だ
試しに作ってみるような部分ではない
今後は人員さえ揃えばRustを使うというIT各社の確固たる方針
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
423日前に更新/279 KB
担当:undef