23/07/29 15:09:04.43 2Hm/yplK.net
Rustはライフタイムの管理がムズいな。上手くいくかなと思っても結構コンパイルエラーが起こる。これは自分がライフタイムを正確に理解してないだけ?
3:デフォルトの名無しさん
23/07/29 15:12:09.86 nTghkNr5.net
>>1
関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
スレリンク(prog板)
4:デフォルトの名無しさん
23/07/29 15:14:14.57 nTghkNr5.net
クラウド世界トップシェアのAWSもRustで構築されているらしい
URLリンク(japan.zdnet.com)
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」などがある。
5:デフォルトの名無しさん
23/07/29 15:41:05.71 huwazm+x.net
もう決着ついたじゃん
6:デフォルトの名無しさん
23/07/29 16:23:31.04 SDRO8Mha.net
=== 複製おじさん(通称複おじ)について ===
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。
Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。
しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
スレリンク(tech板:786番)-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。
ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
7:デフォルトの名無しさん
23/07/29 16:55:07.62 c1f+so80.net
>>5
うんうんよかったよね、おめでとう
8:デフォルトの名無しさん
23/07/29 17:37:52.03 I0+lwIGZ.net
前スレで、moveいるいらないっぽい話がちょろっと出てたけど、
moveまわりを避けて、実直にポインタでやりとりする書き方してるんだろうな
APIにごく近いところに住んでて、簡潔に書くようにしてたら、おのずとそうなるかと
9:デフォルトの名無しさん
23/07/29 19:15:34.26 of1FckjJ.net
C++のtemplateの扱いもガチ勢とコンテナ専で意見が分かれそうだな
マルチパラダイム言語だから仕方ないけど見る人によっては無駄に複雑化してるかもしれない
>>1
亀だけどスレ立て乙です
10:デフォルトの名無しさん
23/07/29 21:45:32.91 XwXxiU6u.net
>>9
C++の最大の特徴は後方互換性だよ
拡張された部分が複雑で気に入らなければ
使わなくても良いんだよ
11:デフォルトの名無しさん
23/07/29 23:38:06.97 I6XWshKt.net
じゃあ過去のコードを手直しせずに新しいコンパイラでコンパイルできるのかと言えばそうでもない
12:デフォルトの名無しさん
23/07/29 23:59:23.36 XwXxiU6u.net
コンパイラのバージョン上げて必要になる修正なんて微々たるもの
あんまりコンパイラのバージョン跨ぐと修正が多くなるけども
追従していけばそれほど大変でもない
例の人には特に苦手な作業だろうw
13:デフォルトの名無しさん
23/07/30 03:38:14.45 8vbtpK07.net
Rustを使ってる人は、
何か作りたいものが有って作ってるんじゃなく、
自己アピールや書籍を書いたりするためにしている人が多い。
14:デフォルトの名無しさん
23/07/30 07:07:33.08 zpxjufbE.net
>>964 前スレから
>>>962
>>C++20もconceptとかrequireとか言い出してるから心配しなくていいよ
>最近のC++に問題が多数混入したことは知られているが、
>人気が絶頂だったころのC++はシンプルで分かり易かったぞ。
最近っていつ?
15:デフォルトの名無しさん
23/07/30 07:30:46.91 O1YJNKqz.net
C++って、全機能使いこなせないと殴られるんちゃうかみたいな ふいんきあった
仕様書頭に入ってないと発言権ありません的な
まあでもそのくらいの気合はあって悪くない
Rustを前にして、苦手意識のほうを捨てることにしたよ
16:デフォルトの名無しさん
23/07/30 07:30:53.64 CCkbn9cO.net
>>13
私は非同期並列処理を用いた高速な行列演算フレームワークを開発しているところ何ですけど。
17:デフォルトの名無しさん
23/07/30 09:04:44.76 azQXcNDB.net
>>968
メンド臭いな
もっとシンプルにしろ
18:デフォルトの名無しさん
23/07/30 09:08:21.61 azQXcNDB.net
>>977
気持ちは判る
改悪は事実だが元々良かった訳でもないしな
19:デフォルトの名無しさん
23/07/30 09:11:27.27 azQXcNDB.net
>>984
これも判る
std::vectorもstd::listも馬鹿設計
20:デフォルトの名無しさん
23/07/30 09:15:05.98 UyrP6xJo.net
あたまのおかしい連続レス
>>1
こんな板
21:違いのクソスレ立てるくらいならワッチョイ付きのまともなRustスレ立てろ ここは頭のおかしい荒らしを養殖、醸成させるスレになってんだよ
22:デフォルトの名無しさん
23/07/30 09:16:12.95 azQXcNDB.net
>>2
むずいというよりメンドくさいだけ
考え方はシンプル
メンドくささを受け入れられない気持ちは判る
23:デフォルトの名無しさん
23/07/30 09:20:35.40 azQXcNDB.net
>>20
スレタイを unsafe {} で囲め
24:デフォルトの名無しさん
23/07/30 10:20:14.20 s4F4miSt.net
>>22
unsafeがあれば安心安全だよな
25:デフォルトの名無しさん
23/07/30 11:29:34.23 Phugis3j.net
>>19
どういった点が? 煽りではなく
26:デフォルトの名無しさん
23/07/30 11:31:46.14 PxbGsfYc.net
>>21
関数引数のライフタイム注釈は、まあ、分かるんだけど、
structに対するライフタイム注釈は、色々な書籍を見ても、
厳密な定義が分からなかった。
ちゃんと、数学的な言葉や擬似コードなどで書いて欲しい。
たとえば、注釈Aと注釈Bの積集合が、戻り値のライフタイム
になる、みたいな言葉で書くのが数学的な書き方なんだが、
今のRustの仕様書では、そのような言葉で書かれていないので
精密な定義が分からない。
なので、ちゃんとしたプログラムが出来ない。
27:デフォルトの名無しさん
23/07/30 11:32:55.90 PxbGsfYc.net
>>24
気付くかどうかがその人の能力。
具体的にプログラミングして実現する実装能力とは別。
28:デフォルトの名無しさん
23/07/30 11:38:08.04 wjjxPYUe.net
Haskellバカも含めて論文だの厳密だの言うくせに誰もRFC2094を読んでいないのはなぜなのか
URLリンク(ubnt-intrepid.netlify.app)
29:デフォルトの名無しさん
23/07/30 11:57:11.73 zED6HehG.net
煽ったり荒らしたりして情報を引き出すやり方なんだろう
自己中
30:デフォルトの名無しさん
23/07/30 11:58:14.59 Phugis3j.net
>>26
>気付くかどうかがその人の能力。
「俺は問題が分かっている気づかないお前は能力が低い」では議論にならない
こういう言い回しが散見される
あなたが社会に馴染めない原因
31:デフォルトの名無しさん
23/07/30 12:00:32.88 Phugis3j.net
>>25
規格をまとめれば査読されるだろうからマシになる
32:デフォルトの名無しさん
23/07/30 12:09:03.54 3Gt2feL7.net
>>25
君の頭の悪さをRustのせいにするなよな
33:デフォルトの名無しさん
23/07/30 13:09:07.24 wjjxPYUe.net
>>20
ワッチョイ付きスレもあるよ
単発自演バカ以外はこんなスレ求めてないから機能停止してるけど
スレリンク(tech板)
34:デフォルトの名無しさん
23/07/30 15:31:48.90 EsXxjTNc.net
>>31
なんとでも言え。
俺は現実世界では優秀だと認められてるから。
35:デフォルトの名無しさん
23/07/30 16:02:20.57 Dx2gCh8i.net
虚しい人生だったなぁ
36:デフォルトの名無しさん
23/07/30 17:28:04.45 EsXxjTNc.net
>>34
おまえはおまえでちゃんとやっているつもりなんだろうが、
おれはおれでちゃんとやっているつもりだ。
Rustを非推奨とするのは、俺の心からの日本や世界への
愛でもある。
俺の考えでは、Rustは人類を良く無い方向に導くから
それを阻止しようと考えている。いわば、聖戦のようなもの。
37:デフォルトの名無しさん
23/07/30 18:04:19.90 xwHMDX1r.net
現実世界でも優秀でないのは文章を見れば一目瞭然
ある一定以上の知性がある人はここまで馬鹿な文章を書かないから
38:デフォルトの名無しさん
23/07/30 18:10:24.42 EsXxjTNc.net
>>36
俺は左脳的じゃないからかも。
色々調べてみると、右脳優位らしいし。
39:デフォルトの名無しさん
23/07/30 18:25:30.98 cVJ/YlET.net
脳の言語機能が発達してない人にプログラミングは無理だろ
少なくとも今の技術では
40:デフォルトの名無しさん
23/07/30 19:00:04.97 v002Bwgv.net
難化の原因の一つはstatic変数の悪口を言ったこと
だから昔の技術ではプログラミングできた人達も、今の技術では無理になった
41:デフォルトの名無しさん
23/07/30 19:38:56.42 EsXxjTNc.net
>>38
でも俺は計算は得意だよ。
42:デフォルトの名無しさん
23/07/30 20:15:01.23 Lf76jods.net
>>35
歳はかなり上のはずなのに
時折書く文章は中学生みたい
引きこもりなのかな?
43:デフォルトの名無しさん
23/07/30 21:19:18.98 BvovDmTI.net
本当に頭がよければ世界の80億人を愛するとか簡単に言うわけないんだよな
少なくとも世界中に足を運んで交流してからだろ
44:デフォルトの名無しさん
23/07/30 21:27:24.25 Phugis3j.net
歳は若くても45くらい多分50代後半かなと思う
それで>>35の書き込みだよ
社会経験が乏しいだと思う
俺はこの人は高齢引きこもりなんだと思う
何かの事情があったのだろう
45:デフォルトの名無しさん
23/07/30 21:31:43.58 v002Bwgv.net
両者とも何か、リスクが低過ぎる物事に対する憎悪を感じる
詐欺よりも未定義の言葉を嫌うのもリスクが低過ぎるからじゃないか
46:デフォルトの名無しさん
23/07/31 02:12:09.36 7hP7Lhrw.net
病人の相手を任せるためにも、はやくAIの開発がすすんでほしいわ
47:デフォルトの名無しさん
23/07/31 03:49:12.78 nT30zTPs.net
まず、このスレの連中は、いったん素晴らしいと思い込んだ
ものを無批判に受け入れすぎている。そして、英語圏の
批評、批判を全く読んでない。
読んでいればRustの評価は余り高くなくて、意見が
半々くらいに分かれていることがすぐに分かるから。
48:デフォルトの名無しさん
23/07/31 07:47:53.35 lZja90Kc.net
OSなんて一つの言語で記述するメリットが大きすぎる
それを上回るよほどの大きなメリットがない限り他の言語を導入することはない
しかしMicrosoftはWindowsでRustを導入しGoogleはAndroidでRustを導入した
C++を邪道な言語として使用を拒否してきたLinuxもRustを導入した
49:デフォルトの名無しさん
23/07/31 07:49:34.85 OPAJDfNb.net
w
50:デフォルトの名無しさん
23/07/31 08:31:37.72 3Z/Pn9k1.net
まあmalloc失敗でpanicにならんのならええんやない?
51:デフォルトの名無しさん
23/07/31 10:22:06.96 8wbRk2dY.net
>>49
Rust の方でも .unwrap() 禁止するか unsafe {} 必須にして欲しいわ
52:デフォルトの名無しさん
23/07/31 10:26:23.87 fc/+y7rt.net
OSではCの支持率100%になってもアセンブラを排除するのは不可能
つまり、数値を抑制するのではなく
数値が上がりすぎるとスカウターみたいに爆発する脆弱性をなくせばいい
安全をどれだけ信奉してもunsafeを排除できないのは良いことだ
53:デフォルトの名無しさん
23/07/31 11:49:57.24 ulrQSEBD.net
>>47
>C++を邪道な言語として使用を拒否してきたLinuxもRustを導入した
$ wget 'URLリンク(cdn.kernel.org)'
$ tar xJf linux-6.4.7.tar.xz
$ find linux-6.4.7 -name *.c -o -name *.h | xargs cat | wc -l
32115936
$ find linux-6.4.7 -name *.rs | xargs cat | wc -l
17057
たった0.05%だよ
rsソースの増加速度よりcソース増加速度の方が速いのも前回示した通り
>しかしMicrosoftはWindowsでRustを導入しGoogleはAndroidでRustを導入した
Windowsは前に出回ったスクショにファイルサイズが出てたねw
Andoroidで使われているとか言ってるRustは果たしてどのくらいなのかな?
54:デフォルトの名無しさん
23/07/31 11:54:50.00 ulrQSEBD.net
>>46
ここは北朝鮮じゃないので何を使うかは選択でき自由がある
「無批判に受け入れすぎている」は全く当たらない
55:デフォルトの名無しさん
23/07/31 12:41:48.10 lZja90Kc.net
>>49
RustはLinuxなどのおかげで改善された
メモリ確保もエラーを返せるようになった
56:デフォルトの名無しさん
23/07/31 13:01:06.05 sgBBFIN2.net
>>52
ぐぐーるもM$も基本ウソツキだシナ
57:デフォルトの名無しさん
23/07/31 13:48:39.26 fc/+y7rt.net
行数もいいけど独裁者が何人いるか数えてみろよ
たったの1人しかいないから無力の無能だと言えるなら正直者
だが掌返して1人だからといって無能とは限らないとか言い出せば嘘つきだ
58:デフォルトの名無しさん
23/07/31 13:56:25.29 SQ3dcTOC.net
>>56
意味がわからん
日本語も書けなくなったのか?
59:デフォルトの名無しさん
23/07/31 13:58:30.69 eCR2qI4e.net
>>57
多分、アメリカ人が書いている。
60:デフォルトの名無しさん
23/07/31 14:57:58.99 MuwrPG3l.net
>>52
あの頑固者のLinusが解禁したこと自体が画期的
RustがOKなら、Rust程度のOOPはOKってことで、近い言語が続々参入したりして
そうなると、simple化付きC++ってのも見えてくる
61:デフォルトの名無しさん
23/07/31 15:00:33.59 ulrQSEBD.net
>>59
Rustコンパイラは何を使うの?
62:デフォルトの名無しさん
23/07/31 15:05:23.78 OPAJDfNb.net
何かの政治的な理由でRustを仕方なく使ったんじゃね?
63:デフォルトの名無しさん
23/07/31 16:30:08.80 MuwrPG3l.net
>>60
知らんまじで 処理系に指定があるかまでは存じ上げず
64:デフォルトの名無しさん
23/07/31 18:53:04.02 ky4iWRF2.net
普通にrustc(+llvm)でいいでしょ
知らんけど
65:デフォルトの名無しさん
23/07/31 19:29:15.62 f18AP/yx.net
>>63
じゃカーネルのコンパイルは何使うの?
66:デフォルトの名無しさん
23/07/31 22:08:37.01 +bjI2PCn.net
カーネルおじさん
67:デフォルトの名無しさん
23/07/31 23:55:46.68 bJxDuGa3.net
どいつもこいつもマウントを取る相手に飢えてるんやなあって
68:デフォルトの名無しさん
23/08/01 00:02:17.45 lcAcDegU.net
パタリとレスが止まったが
>>59みたいなこと書くのなら>>60とか>>64には答えられんとなぁw
69:デフォルトの名無しさん
23/08/01 01:13:33.06 enF/Vqu1.net
カーネルは知らないがrustcでコンパイルしたものとc言語で書かれたものはリンクできて動いてるし何を問題にしているのかわからない
最近はPythonやJavaScriptのライブラリもRustで書かれることが増えている
70:デフォルトの名無しさん
23/08/01 01:42:20.33 lcAcDegU.net
>>68
Linuxカーネルは伝統的にgccでコンパイルされてきた
rustのコードはrustc on llvmでコンパイルされる
そうするとgccが吐いたオブジェクトファイルと
rustc on llvmが吐いたオブジェクトファイルをリンクできるのか?
という疑問が普通に浮かぶ
[解法1] できるのなら何も問題ない
[解法2] できないのならカーネルをclang on llvmでビルドすればリンクできるだろう
最近はclang on llvmでカーネルをビルドすることもあるみたいで
検索するとAndroidはclangらしい
[解法3] あるいはgccrsでrustコードをコンパイルすればgccのコードとリンクできるだろう
さて始まったらしい(しかし何もリリースされていないw)カーネルでRustの利用方法は
1なのか2なのか3なのか? あるいは別の方法かな?
71:デフォルトの名無しさん
23/08/01 01:44:23.88 lcAcDegU.net
>>59みたいなこと書くのなら答えられんとなぁw
72:デフォルトの名無しさん
23/08/01 01:47:19.20 lcAcDegU.net
WindowsでRustの利用が始まっているらしいが
MSはllvm使うのかね? Visual Rustかね?
73:デフォルトの名無しさん
23/08/01 02:10:15.58 enF/Vqu1.net
>>69
何を問題にしているのかさっぱりわからん
gccもclangも同じELF形式のオブジェクトファイルを吐くだけだぞ
共有ライブラリなども当然同じものが使われている
コンパイラ毎に別々の形式を吐いて共有ライブラリなども別々に用意されていると勘違いしている??
74:デフォルトの名無しさん
23/08/01 02:15:20.41 8wU+ches.net
rustのコードはrustc on llvmでコンパイルされる
そうするとgccが吐いたオブジェクトファイルと
rustc on llvmが吐いたオブジェクトファイルをリンクできるのか?
あほすぎわろす
75:デフォルトの名無しさん
23/08/01 02:28:22.85 lcAcDegU.net
>>72,73
じゃ1で良いのかな?
76:デフォルトの名無しさん
23/08/01 02:44:40.50 enF/Vqu1.net
そもそもRustは全く関係なくC言語だけを使う世界でも同じ話
コンパイラを変えてもリンクする既存ライブラリは同じものを指定して同じものをリンクするだろ
それを知らないとはエアプログラマーかね?
77:デフォルトの名無しさん
23/08/01 02:46:40.94 rdOaCXEZ.net
まずrustcがllvmでコード生成してることを知ってるかどうか確認する必要があるな
rustc on llvmという表現に若干の不安を感じる
もしかしたらllvmを知ってるかどうかの確認も必要かもしれない
78:デフォルトの名無しさん
23/08/01 03:08:01.35 lcAcDegU.net
>>75,76
じゃ1で良いのかな?
つまりカーネルはgccでビルドして
Rustで書かれたカーネルモジュールは(まだないけどもw)
rustcでコンパイルするのかな?
79:デフォルトの名無しさん
23/08/01 03:19:00.62 y4WjFr+T.net
coff とか omf とか elf とか面倒だよなω
D は沈没したしωωω
80:59
23/08/01 06:25:09.53 1HHpj/ls.net
夏風邪で寝込んでた 隠れ新型コロナかもしれん ちなマスクはしてる
俺はC++派だし、どうしてるんかまで知らんって
Rust部のツールチェーンのバージョンを指定してるんじゃないか
見に行く元気はない まだだりぃ
Rustの努力にはライバルながら賛辞を贈る
Rustの成功をC++に取り込むべきだと思ってるからね
81:デフォルトの名無しさん
23/08/01 10:31:09.40 1HHpj/ls.net
ぐぐったらこれがあったので貼る
URLリンク(docs.kernel.org)
引き続き、精読する元気はない(w
82:デフォルトの名無しさん
23/08/01 10:39:09.49 lcAcDegU.net
>>80
>>69の解法2だね
>>72,73,75,76
何で解法1じゃないの?
何でvery experimentalなの?
83:デフォルトの名無しさん
23/08/01 11:29:23.00 a8DQwFPL.net
Rustに詳しい人しか答えられないような内容を
ここに書くべきじゃない。
Rust専門スレがあるのに、何故そこに書かないか。
84:デフォルトの名無しさん
23/08/01 11:32:16.29 AvEKEx5a.net
昔はコンパイラとリンカは別物でコンパイラはposix標準のライブラリファイルを出すのが仕事でその後各言語が吐き出したライブラリファイルをリンカでくっつけてた
しかし今はコンパイラがリンクまでやってるのでこの“別言語間のリンク”がどうなんとなってるけど、流石にコンパイル後リンク前のライブラリファイル形式もその形式のファイルをはくオプションも残ってるやろ
85:デフォルトの名無しさん
23/08/01 11:34:34.48 lcAcDegU.net
>>82
>Rustに詳しい人しか答えられないような内容を
>ここに書くべきじゃない。
何やそれw
自分が詳しくないこと分からないことについては
ここに限らず(5chにも限らず)書くべきじゃない
86:デフォルトの名無しさん
23/08/01 11:53:54.57 1HHpj/ls.net
かたいこというなや
「しらんけど」って付けときゃいいんだよ
しらんけど
まあ、bfd/binutilみたいのができて久しいし、
そのへんに準拠してれば、リンクはできるよ
(最近のことは)しらんけどw
87:デフォルトの名無しさん
23/08/01 12:12:45.73 1HHpj/ls.net
calling convention は、今後もなんとか突き合わせてもらうとして。
だいぶ前に書いたのは、RustにはRustのname manglingがあって、C/C++がそれに合わせられないかってこと
それができれば、所有権情報付きの型に対応できることになるから、
C/C++も一気に所有権まわりを獲得できるってことになる
88:デフォルトの名無しさん
23/08/01 12:53:01.64 f+qzMJki.net
>>84
Rust専用スレがある。
そっちの住人にこっちは隔離スレとされた。
隔離されて無いはずのスレに戻れよ。
そっちの方が多いはずなんだろ、Rust信者の脳内では。
89:デフォルトの名無しさん
23/08/01 15:10:07.83 lcAcDegU.net
>>87
文章は丁寧に(自戒も込めて)
90:デフォルトの名無しさん
23/08/01 15:34:55.86 vjzMKnjk.net
>>88
ウザい
91:デフォルトの名無しさん
23/08/01 15:45:28.88 lcAcDegU.net
戻れも何も俺はそもそもRustユーザではないので
「Rust専用スレ」なるものを開いたことはない
ここには議論をしに来たのであってウザいと言われれば
反論できないのだなぁwとしか思わん
92:デフォルトの名無しさん
23/08/01 15:48:14.84 1HHpj/ls.net
またーりしていけよもう
たらこは言った、面白いことをかけって
93:デフォルトの名無しさん
23/08/01 18:54:49.18 a4U8O1ra.net
Rust一択でしょ
どっちもやったことないけど
94:デフォルトの名無しさん
23/08/01 19:06:00.69 G//O9I6m.net
質問してるヤツと答えてるヤツが同一人物って可能性もある
95:デフォルトの名無しさん
23/08/01 20:49:40.26 rdOaCXEZ.net
さすがにその可能性を疑い出したら病気の一歩手前だから気を付けてくれ
何か引っ掛かる点があったなら別だけど
96:デフォルトの名無しさん
23/08/01 20:51:58.06 lcAcDegU.net
>>93
同一人物で自作自演したとして
俺が何をどう思われたいと思ってるのかが分からんので
是非論理的に教えてくれ
97:デフォルトの名無しさん
23/08/02 00:36:41.42 NJTTLLY6.net
>>69
それはRustと全く関係ない問題
オブジェクトファイルはコンパイラと独立した存在
C言語だけの話でもclangとgccを当然併用できる
まず関数fooだけのfoo.cを用意
$ cat foo.c
#include <stdint.h>
int foo(int32_t a, int32_t b) {
return a + b;
}
これをclangでコンパイル
$ clang -c foo.c
オブジェクトファイルfoo.oが出来ている
$ ls foo.o
foo.o
つづく
98:デフォルトの名無しさん
23/08/02 00:37:45.81 NJTTLLY6.net
次に関数mainのmain.cを用意
$ cat main.c
#include <stdio.h>
#include <stdint.h>
int32_t foo(int32_t, int32_t);
int main(void) {
int ret = foo(10, 20);
printf("ret = %d\n", ret);
return 0;
}
このmain.cをgccでコンパイルして(clangで作った)foo.oをリンクして実行ファイル生成
$ gcc -o main main.c foo.o
無事に足し算が実行できました
$ ./main
ret = 30
99:デフォルトの名無しさん
23/08/02 00:59:42.14 NJTTLLY6.net
clangとgccで上手くいった話は
rustcとgccにしても当然上手くいく
今度はRustで関数fooだけのfoo.rsを用意 (区別できるように掛け算に変えた)
$ cat foo.rs
#[no_mangle]
pub extern "C" fn foo(a: i32, b: i32) -> i32 {
a * b
}
念のためfoo.oを削除しておく
$ rm foo.o
そしてrustcでコンパイルしてオブジェクトファイル生成
$ rustc -O --emit obj --crate-type staticlib foo.rs
さっきと同様にオブジェクトファイルfoo.oが出来ている
$ ls foo.o
foo.o
再び全く同じくgccでmain.cをコンパイルして(rustcで作った)foo.oもリンクして実行ファイル生成
$ gcc -o main main.c foo.o
無事に掛け算が実行できました
$ ./main
ret = 200
つまりRustで書かれたコードとその生成オブジェクトファイルは
何の問題もなくgccでコンパイルしたC言語コードから呼び出せる
(もちろん逆向きもOK)
100:デフォルトの名無しさん
23/08/02 01:09:19.89 iG8SsFh7.net
>>96-98
それは>>69の解法1を取り得ることを意味するが
公式文書では>>80のように解法2が説明されており
解法1はvery experimentalとある
なぜだい?
101:デフォルトの名無しさん
23/08/02 01:11:29.45 8pIQRBW6.net
誰でも知ってることを長文で書かなくていいから>>80読んでね
102:デフォルトの名無しさん
23/08/02 01:15:12.91 iG8SsFh7.net
>>86
>それができれば、所有権情報付きの型に対応できることになるから、
これが気になってて
>>98みたいにno_mangleすると
所有権システムは制限されるのかな?
103:デフォルトの名無しさん
23/08/02 01:28:10.98 NJTTLLY6.net
>>99
その文書に根拠が書かれていないからわからない
その文書によるとclangとrustcならば上手くいくのだからRust側の問題ではなくclang側の問題でもない
仮に問題があるとすればgcc側の問題なのだろう
そしてその場合かあると仮定するとC言語のみでもgccとclangで上手くいかないケースが存在するのだろう
104:デフォルトの名無しさん
23/08/02 01:34:00.68 MBDISWVo.net
very experimentalなのは単純に実績が浅いからでしょ
同じ規格に合わせて作ったつもりでも実際に組み合わせると想定外の問題が生じる場合がある
この辺は結合テストの経験がないとピンとこないかもしれない
105:デフォルトの名無しさん
23/08/02 01:51:18.44 TcjEDVFj.net
>>103
実績は10年以上あるでしょ
例えば/usr/lib/の下にあるライブラリファイルがgccかclangかどちらでコンパイルされたものかに関わらず
gccからもclangからもそれらライブラリを区別なく使われて問題を起こさず動いてきた
そこはELFのフォーマットが定められているからコンパイラの違いがあっても大丈夫
106:デフォルトの名無しさん
23/08/02 02:02:17.30 iG8SsFh7.net
linuxのソースに含まれない外部配布のカーネルモジュールのコンパイルって
普通コンパイラを(バージョンも含めて)揃えない?
神経質過ぎるだけかな?
107:デフォルトの名無しさん
23/08/02 03:18:19.71 stxSLRlm.net
結論
C++使いとRust使いは生産性が低い
108:デフォルトの名無しさん
23/08/02 06:19:43.25 2Ms30o08.net
生産性最強は…「さくっと探してくる」
なんでも自作(内製)しようとしちゃうよね、自分にもそんな時期がありました
勉強にはなるけど
109:デフォルトの名無しさん
23/08/02 09:10:06.07 4pI1Wfnv.net
>>93-95
hissi.org を AI に掛けたらそろそろ自演検出出来る時代
110:デフォルトの名無しさん
23/08/02 14:23:27.46 iG8SsFh7.net
教師データが少なすぎて精度が上がらんやろ
111:デフォルトの名無しさん
23/08/02 20:35:38.56 HZivUK5/.net
>>101
こういうことじゃないか
少し前にRust派が貼った URLリンク(github.com) は、
win32 APIをunsafeなRustで受けてる そういうreadmeになってるからそうなんだろう
unsafeなAPIにRustが接続してるんだから、たしかに道理
Rust派がいうように、どんどんRust世代(Swiftとかも含む)のAPIが増えてくると、
所有権情報がついたAPIになるわけだから、C++(とC)も当然それに合わせていく必要があるし、
それがわかってるなら、いまのうちから追随に向けたC++の発展を期待するぜ、っていうわけ
112:デフォルトの名無しさん
23/08/02 20:46:07.42 ss9KhaID.net
C++なんざ何処が良いのか分からん
C#ほどセーフティーな訳でも無ければ
アセンブラみたいに痒い所に手が届く訳でもない
113:デフォルトの名無しさん
23/08/02 21:02:46.80 bcW2DJn5.net
普通はインラインアセンブラとか使えるぞ たまに便利
114:デフォルトの名無しさん
23/08/02 21:43:56.55 2DJiiIQu.net
>>110
>所有権情報がついたAPIになるわけだから、C++(とC)も当然それに合わせていく必要があるし
C/C++の言語仕様・ライブラリでこれをサポートする予定があるのか
115:デフォルトの名無しさん
23/08/03 06:38:17.02 x4MCSOl6.net
サポートしてもらわないと困るって話
Rustがそこまで普及するんならね
116:デフォルトの名無しさん
23/08/03 08:14:30.82 8npqW66R.net
C/C++の問題点はプログラム全体がunsafeエリアな点にある
Rustのように自動的に安全が保証されるsafeエリアを作るべきだ
117:デフォルトの名無しさん
23/08/03 13:49:40.33 Lr04Zjag.net
unsafe { } なコード描き捲れば良いじゃん
誰も止めないし
118:デフォルトの名無しさん
23/08/03 14:47:00.92 8npqW66R.net
生のメモリはunsafeだからunsafeなエリアをゼロにするのは無理だが最小限に閉じ込めることはできる
ちなみにunsafeなエリアとは自動的に安全性が保証されず人間が安全性を保証しなければならない意味であり安全でないコードの意味ではない
C/C++は全てがunsafeなエリアとなっていることが根本的な問題であるためC/C++に導入すべきはsafeなエリアとunsafeなエリアの区別の導入
119:デフォルトの名無しさん
23/08/04 02:45:20.65 9vVWYNaF.net
科学者は、新しいものより古いものを好むような気がする。
やっとFortranからC++に移行したみたいな感じじゃない。
120:デフォルトの名無しさん
23/08/04 09:03:06.23 XLfSEGlw.net
unsafe { C++ }
unsafe { unsafe { Fortran }}
121:デフォルトの名無しさん
23/08/04 11:28:27.58 rcIkyW/J.net
>>118
ある年齢以下だと科学者でもかなりpythonが主流派だよ。
122:デフォルトの名無しさん
23/08/04 12:38:38.48 Hxv32tG4.net
unsafeは名前が悪い。
noguardがguidelessの方が実態に合っている。
123:デフォルトの名無しさん
23/08/04 12:40:31.64 l9tpj9tS.net
>>121
同意。
rustも別にunsafeだから安全じゃないってわけじゃないからな。
124:デフォルトの名無しさん
23/08/04 13:02:53.96 2tbTIxDy.net
>>121
>noguardがguidelessの方が実態に合っている。
wwwww
guidelesswww
125:デフォルトの名無しさん
23/08/04 13:09:44.29 TzILUUtf.net
俺はコンパイラの支援なんか不要!
安全なコード書けるから!
などというバカ対策
126:デフォルトの名無しさん
23/08/04 13:32:31.68 sr1c8EdF.net
いくら自信があっても
いくら百戦錬磨のプロでも
思い込みや見逃しでミスが入り込む可能性がある
そしてミスがないと主張してもその客観的な根拠はなく頭の中にしかない
C/C++にも客観的に自動的に安全性が保証されるsafeエリアを導入すべきだ
そしてプログラム本体にunsafeエリアが露出せずに済むようにsafeなライブラリ関数を充実すべきだ
127:デフォルトの名無しさん
23/08/04 14:14:29.32 egOIBhxw.net
急にスレのベレルが下がったな
128:デフォルトの名無しさん
23/08/04 14:23:45.74 neuFS+YA.net
気のせいです
129:デフォルトの名無しさん
23/08/04 14:45:44.75 z0X1ZVr3.net
>>125
唐突なポエム草
130:デフォルトの名無しさん
23/08/04 15:02:43.37 BcxuRAkw.net
もっともマトモな層は、コード書きに行ってこんなとこ来ないからw
131:デフォルトの名無しさん
23/08/04 15:21:59.11 9eDSr/2C.net
急にスレのベレルが下がったな
132:デフォルトの名無しさん
23/08/04 15:39:49.20 XLfSEGlw.net
高かったことが一度でも在ったかのような言い草だな
133:デフォルトの名無しさん
23/08/04 15:45:57.96 f95F43ae.net
散髪屋に安全ガミソリを強制したり、マシン語プログラマを
蔑みそうな思想だな。
134:デフォルトの名無しさん
23/08/04 15:49:31.23 f95F43ae.net
安全ガミソリは刃に毛が挟まって取
135:れなくなって、 再利用しにくいのに対し、直刃のかみそりは、 安全面さえ気をつければ手入れが簡単で再利用しやすい からプロは後者を好んで使う。 それと同じ。
136:デフォルトの名無しさん
23/08/04 15:51:38.78 f95F43ae.net
直刃のかみそりを好んで使うプロたちに対して、
「お前らは客の安全性を疎かにする自信過剰で傲慢な
駄目な奴ら」
だとか言うつもりか。
137:デフォルトの名無しさん
23/08/04 15:56:47.17 i+NL2LDR.net
急にスレのベレルが下がったな
138:デフォルトの名無しさん
23/08/04 15:58:20.80 BcxuRAkw.net
>>134
消毒(sanitize)はどうしてるのかって問題はたしかにあるな
俺は気にしてないが、気にする人がいてもいい
139:デフォルトの名無しさん
23/08/04 16:01:00.54 f95F43ae.net
マシン語プログラマに対して、
「おまえらは、自身の腕を過信する安全性軽視の
駄目プログラマだ」
なんて言う権利は他人には無いと思う。
140:デフォルトの名無しさん
23/08/04 16:09:50.05 S7yEvO65.net
>>137
安全性とは何なのかも定義も理解できていないからそんな馬鹿げた書き込みばかりしてるのか
141:デフォルトの名無しさん
23/08/04 16:17:28.67 f95F43ae.net
結局、相手を馬鹿にしてRustを推すのが、Rust信者の
やり口。
142:デフォルトの名無しさん
23/08/04 16:31:11.69 EJnCR0gN.net
安全カミソリは安全ではないし
直刃のカミソリを使うプロでも客に切り傷つけることはよくある
143:デフォルトの名無しさん
23/08/04 19:56:00.95 l9tpj9tS.net
直刃のカミソリっていうか、柄もないカミソリの刃だけを使うようなもんだろ。
自分も痛い目みること含めて。
144:デフォルトの名無しさん
23/08/04 20:09:16.36 S7yEvO65.net
他人が書いた部分や使ってるライブラリやその孫ライブラリまで含めて全ソースをチェックするのは非現実的だからな
もちろん自分で書いた部分やリファクタリングした部分も万が一のチェックを書き換えるたびにするのも手間暇コスト増
unsafeでもunguardでも呼び名はなんでもいいからsafe/guard部分がコンパイラによる自動チェックされるようになれば人間がチェックすべき部分は激減できる
145:デフォルトの名無しさん
23/08/04 20:15:00.62 bJlFt79O.net
急にスレのベレルが下がったな
146:デフォルトの名無しさん
23/08/04 20:26:53.92 og8Edpiv.net
ダングリングの検出ってGPTの登場で
言語側が備える意味は最早なくなった
そのうち外部にチェックプログラムが登場するよ
ABIが非互換になるデメリットを考えると
なおさらRustに追随する言語はないと思う
さよならRustの未来を信じた皆さん
147:デフォルトの名無しさん
23/08/04 20:36:35.81 q/UYza0u.net
>>144
ダングリングなんて小さな問題だけが対象ではないことを理解していなさそうにもみえるが
これまで外部ログラムがいくら頑張っても各種問題を静的に見つけることはできていないし今後も無理だろう
AIであろうとそれは同じであり神のようなAIが登場するならその時は全ての言語のプログラマー全員廃業だ
148:デフォルトの名無しさん
23/08/04 21:00:09.09 IJ6nE+NX.net
>>144
外部のチェックツールって今までもあったけどね。
上手いプロンプトを考えられたらいいね。
149:デフォルトの名無しさん
23/08/04 21:36:58.62 K3V5Xtdy.net
>そのうち外部にチェックプログラムが登場するよ
今まで使ったことないのかよww
150:デフォルトの名無しさん
23/08/04 22:00:25.44 CoH1yBj0.net
CheckGPTでRustは終わる
151:デフォルトの名無しさん
23/08/05 00:03:15.32 8PC/4Tei.net
残念だけど言語サポート無しにRustと同じレベルのチェックは不可能
それがわからない時点で安全なコードを書く能力もないことが分かる
152:デフォルトの名無しさん
23/08/05 01:06:25.49 YeB01PWa.net
>>149
SendやSyncのマーカートレイトなど
様々な安全性を型チェックで保証できるような枠組みがRustには揃ってるあたりのことか
C++にも導入すべきだよな
C++は色んな機能が足りなすぎる
153:デフォルトの名無しさん
23/08/05 01:50:07.55 dts8KIsS.net
Rustは人の命をあずかるシステムに使えますか?
154:デフォルトの名無しさん
23/08/05 02:47:29.11 LVFgAb7y.net
使えます
155:デフォルトの名無しさん
23/08/05 04:34:10.67 KocMWFZU.net
Rust信者の正体は、ぎゃあぎゃあ五月蝿い評論家だ。
自分が上だと思って色々言ってくる。
156:デフォルトの名無しさん
23/08/05 04:36:47.68 KocMWFZU.net
実際にソフトウェアでサラリーマンとしてではなく、事業
として成功している人以外の意見はさらっと流して無視
しなければ、上手く行かない。
157:デフォルトの名無しさん
23/08/05 07:16:06.28 xdlV5LLb.net
>>148
これ
158:デフォルトの名無しさん
23/08/05 07:31:06.33 YeB01PWa.net
>>155
Rustが様々な安全性をコンパイラで保証できる仕組みは
例えばスレッド間での移動や共有の可否などを抽象的なトレイトで表現して
各型をそれらのトレイト境界で制約して型チェックで実現したりしているようだから
C++にもそういう仕組みを導入すれば自動チェックの可能性が出てくるね
159:デフォルトの名無しさん
23/08/05 08:05:44.87 xdlV5LLb.net
>>156
将来的にそういうのはエディタに組み込まれたCheckGPTがやってくれるんじゃん
160:デフォルトの名無しさん
23/08/05 08:24:07.60 YeB01PWa.net
>>157
言語仕様に組み込まれていないとそれは不可能と思われる
もしそれさえ覆すAIが出現した時にはプログラミング言語自体が全て滅びてしまう新時代となる
その新時代になるまでは言語仕様が強力なRustがAI支援で圧倒的に有利にみえる
161:デフォルトの名無しさん
23/08/05 08:38:30.69 xdlV5LLb.net
>>158
AIに最適化された言語が登場するのかも
162:デフォルトの名無しさん
23/08/05 11:23:13.95 NzC+Rt9F.net
>>158
>言語仕様に組み込まれていないとそれは不可能と思われる
そなの?
人間がソースコードを読んで発見できるバグなら
直感的にはAIにも出来るのでは?
163:デフォルトの名無しさん
23/08/05 11:43:54.44 Lx+Vx/pL.net
クソスレ上げんな低能
164:デフォルトの名無しさん
23/08/05 12:00:58.94 YeB01PWa.net
>>160
そこは単純な話でプログラミングよりも遥かに難しいため
つまりそれが可能な領域にAIが達した時にはAIが最初から全て行なうのでそもそもチェックも不要になる
165:デフォルトの名無しさん
23/08/05 12:36:48.81 G0xPWQV0.net
人間がソースコードを読んで発見できるバグなら最初からバグ入らない
166:デフォルトの名無しさん
23/08/05 12:44:17.52 NzC+Rt9F.net
人間が読んで発見できないバグをRustが発見できるかのような言い草だな
167:デフォルトの名無しさん
23/08/05 12:48:32.07 C2ROzTMY.net
たぶん、いきなり初作でバグ書いたりはしないと思うのな
あとで改造したときにエンバグする
そこでコンパイルエラーになるように言語ができてる
168:デフォルトの名無しさん
23/08/05 14:13:18.22 NzC+Rt9F.net
ChatGPT-4では検出できないが
Rustで書けば検出出来るC/C++のバグを考えようぜ
ChatGPT-4はかなり賢いので俺は既に無いと予想するよ
169:デフォルトの名無しさん
23/08/05 14:14:11.76 NzC+Rt9F.net
俺は既に無いと主張するが
反証1つで論破できる
170:デフォルトの名無しさん
23/08/05 14:42:07.80 z8pTYjl5.net
ChatGPTは、
じゃんけんの論理構造が理解できないから、じゃんけんの
プログラムのバグを発見できない。
171:デフォルトの名無しさん
23/08/05 15:00:11.14 LVFgAb7y.net
とりあえずシンプルなバグ
ChatGPT使い方分からんから検証は任せた
C++は長いこと書いてないから古い書き方があったらすまん
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
auto names = vector<string>();
names.reserve(8);
string empty = "";
string *longest = ∅
while (true) {
string name;
cin >> name;
names.push_back(name);
if (names.back().length() > longest->length()) {
longest = &names.back();
}
cout << names.size() << " names, (longest: " << *longest << ")" << endl;
}
}
172:デフォルトの名無しさん
23/08/05 15:14:36.79 LVFgAb7y.net
なんか&empty;が空集合の記号に変換されて表示されてしまった…
たしかに文字参照形式だけど5chのバグ踏んだんかな
173:デフォルトの名無しさん
23/08/05 15:21:16.34 NzC+Rt9F.net
>>169
Thanks! そのまま貼るね
I: C++プログラムのバグを教えて欲しいのですが? コードレビューをできますか?
G: もちろんです、C++のコードを見せていただければ、そのコードのバグや改善点を提案することができます。どんなコードをレビューすればよいですか?
I: >>169のコード
ただし string *longest = は string *longest = nullptr; に修正
174:デフォルトの名無しさん
23/08/05 15:22:34.42 NzC+Rt9F.net
G: コードを見た結果、最初の問題点は次の行で生じます。
if (names.back().length() > longest->length()) {
G: 最初の入力が行われる前、longest ポインタは nullptr に設定されています。
したがって、デリファレンス操作(-> を使用)は無効なメモリへのアクセスを引き起こし、
これは未定義の動作につながります。
この問題を解決するためには、longest ポインタを使用する前に、
有効な string オブジェクトを指すように設定する必要があります。
コードを次のように修正することで、
最初の入力の後に longest ポインタを設定することができます。
175:デフォルトの名無しさん
23/08/05 15:23:56.83 NzC+Rt9F.net
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> names;
names.reserve(8);
string *longest = nullptr;
while (true) {
string name;
cin >> name;
if (name == "exit") { // 終了コマンドを追加
break;
}
names.push_back(name);
// 入力後にポインタを初期化
if (longest == nullptr || names.back().length() > longest->length()) {
longest = &names.back();
}
cout << names.size() << " names, longest: " << *longest << endl;
}
return 0;
}
176:デフォルトの名無しさん
23/08/05 15:24:14.45 LVFgAb7y.net
もし空集合の記号が見えてたら&empty;(←半角)に修正してほしい
nullptrだと最初の比較で普通に死ぬから意図したバグが出ない
177:デフォルトの名無しさん
23/08/05 15:27:55.04 NzC+Rt9F.net
文章を解釈してオーダにない修正(exitの追加)までしている
ChatGPT-4はマルチスレッドの競合状態なんかも検出するよ
デッドロックは試してないがら無理かもね
Rustはデッドロックは検出するんだっけ?
178:デフォルトの名無しさん
23/08/05 15:30:21.32 LVFgAb7y.net
173見るとnullエラーは検出するけどvectorの再配置によるダングリングは見逃す感じでいいのかな
179:デフォルトの名無しさん
23/08/05 15:33:22.24 NzC+Rt9F.net
>>174 修正してみた
-string *longest = nullptr;
+string *longest = ∅
G: あなたのコードは、ユーザーからの入力を無限に受け取り、
最長の文字列を保持しようとしていますが、問題がいくつかあります。
まず、reserve関数はメモリを確保しますが、実際の要素数を増やすわけではありません。
したがって、push_backを使用すると、reserveで予約された領域を超えてメモリが確保されます。
しかし、それはこの特定のコードには重大な問題ではないと思われます。
大きな問題は、無限ループとポインタの管理です。
1. 無限ループ:while (true)とすると、無限ループになります。
これは、ユーザーが特定のアクション(例:特定のキーワードを入力する)を行わない限り、
永遠に終了しないプログラムを作成します。
これを解決するためには、ループを抜け出すための条件(例:空の名前が入力された場合)を設定する必要があります。
2. ポインタの管理:longestへのポインタが問題です。
names.back()が返す参照は、次にpush_backが呼び出されると無効になる可能性があります。
これは、push_backが内部の動的配列をリサイズする必要がある場合、
新しいメモリ領域に要素が移動され、古い参照が無効になるからです。
以下に修正したコードを示します。
180:デフォルトの名無しさん
23/08/05 15:33:27.10 97ZAjLd0.net
俺、C++ド素人で>>169が何をしているのかさっぱり分からんから、
どこが悪いのかさっぱり分からんが
でも、ChatGPTは何をしよう(しているのか)を理解して
(質問者にvectorの再配置でポンタ無効になるからと教えて)
>>171のような修正を提示するんだな。賢すぎだろ
181:デフォルトの名無しさん
23/08/05 15:34:42.49 NzC+Rt9F.net
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<string> names;
string longest = "";
while (true) {
string name;
cin >> name;
if (name.empty()) {
break;
}
names.push_back(name);
if (names.back().length() > longest.length()) {
longest = names.back();
}
cout << names.size() << " names, (longest: " << longest << ")" << endl;
}
return 0;
}
このコードでは、longestがポインタではなく値として管理されているため、
namesの内容が変更されても影響を受けません。
また、名前が空の場合にループを抜ける条件を追加しました。
182:デフォルトの名無しさん
23/08/05 15:39:09.24 NzC+Rt9F.net
>>176
その通りだね
ところが>>177の修正を加えて返ってきた答えには
vectorの再配置によるダングリングを考慮してある
>>177以外の修正は俺は一切加えていない
まだ間違った答えを返すことがあるが
正解を返すポテンシャルは既にある
183:デフォルトの名無しさん
23/08/05 15:41:17.99 NzC+Rt9F.net
ところで>>175なんだけど
Rustってデッドロックって検出できるんだっけ?
184:デフォルトの名無しさん
23/08/05 15:44:11.69 97ZAjLd0.net
いま、C++で生ポンタを使うこと避けるようにするんじゃないのか
185:デフォルトの名無しさん
23/08/05 15:45:41.69 LVFgAb7y.net
>>174
サンクス
さすがにこのレベルだと検出できるか
(ほかに目立つバグがあるとスルーされるのかもしれないけど)
186:デフォルトの名無しさん
23/08/05 15:58:47.07 wQaB7TT9.net
デッドロックは人間でも解決できないパターンがあるからw
187:デフォルトの名無しさん
23/08/05 16:03:33.32 LVFgAb7y.net
あらゆるデッドロックを検出しようとするとデッドロックするから無理って
チューリング先生が証明してたと思う
停止性とは違うのかもしれないけどどうせ帰着ルート見つけるでしょ(適当)
188:デフォルトの名無しさん
23/08/05 16:22:05.73 z8pTYjl5.net
AIに関して。たまたま上手く行ったケースだけを
書いている可能性がある。
実際にやってみると変になることもあったりする
のがよくあるパターン。
189:デフォルトの名無しさん
23/08/05 16:44:23.90 NzC+Rt9F.net
>>186
>>171は1回だよ そのあと>>170を読んだので
チャットの途中から>>177の修正を加えて回答を生成させた
これも1回限り
ChatGPT-4を普段触っていて能力を知っていれば
納得の回答レベルだと思うけど?
190:デフォルトの名無しさん
23/08/05 16:52:12.45 z8pTYjl5.net
std::vector でよくある性質だけ、ChatGPTに
ハードコーディングされてる可能性がある。
191:デフォルトの名無しさん
23/08/05 17:30:10.13 YdmkUc66.net
>>181
デッドロックは静的に(実行せずに)検出できないことが理論的にわかっている
そのためRustを含めて任意のシステムで静的にデッドロックを検出するものは存在しない
192:デフォルトの名無しさん
23/08/05 17:46:13.30 YdmkUc66.net
デッドロックはロック順序が定まるように自主的対応するとして
一方でデータ競合についてはRustがデータ競合のないことを保証してくれる
193:デフォルトの名無しさん
23/08/05 18:41:15.10 NzC+Rt9F.net
>>190
データ競合はChatGPG-4も検出してくれる
194:デフォルトの名無しさん
23/08/05 18:58:04.88 nLwYtk1m.net
実は俺は未来が見える。
Rustは普及しない。
いっちゃった。
ヤバイ。
195:デフォルトの名無しさん
23/08/05 19:24:44.46 YdmkUc66.net
>>191
ChatGPTは検出できるケースもあるだけだぞ
Rustはデータ競合を100%回避できる
そしてデータ競合は100%回避しなければならない
100%回避できる方法がある状況でそうではないChatGPTに頼るやつはバカだと断言できる
196:デフォルトの名無しさん
23/08/05 19:35:03.34 3ig1p59X.net
>>193
GPT4使ったてないやろ?
そんなもんじゃない
197:デフォルトの名無しさん
23/08/05 19:45:05.47 YdmkUc66.net
>>194
100%防がなければいけないこと(今回の例だとデータ競合)で
ChatGPTに依存するは愚の骨頂
ましてや100%防げるRustが存在する状況で
198:デフォルトの名無しさん
23/08/05 19:56:21.43 ovYwnQ8g.net
>>195
だってRust覚えるのめんどいじゃん?
199:デフォルトの名無しさん
23/08/05 21:11:57.10 xdlV5LLb.net
はいRustの負け~
200:デフォルトの名無しさん
23/08/05 21:31:44.37 Ab8yJnrX.net
>>196
Rustは必要な高機能が充実しているにま関わらず
洗練されていて覚えることが少なくて楽だ
C++はC++20まで把握してもまだRustの高機能に追いつけていない
201:デフォルトの名無しさん
23/08/05 21:39:17.35 NzC+Rt9F.net
RustやってもCを別に覚えなきゃならないじゃん?
C++覚えればCはサブセットだし楽だよ
なによりRustはやってる人が少な過ぎて人が集まらん
202:デフォルトの名無しさん
23/08/05 22:16:55.85 lVlXn5uE.net
RUSTぐらいサクッと習得出来る人じゃ無ければ集まらなくって良くない?
203:デフォルトの名無しさん
23/08/05 22:45:10.55 HgL/MIsm.net
>>198
そういうのはdyn-upcastとかspecializationとかのRFCをstabilizeしてから言ったほうがいい
204:デフォルトの名無しさん
23/08/05 23:31:44.33 Z3AMXPsc.net
Rustは速くsimd命令周りをstableにして欲しい。
205:デフォルトの名無しさん
23/08/06 00:25:51.10 yMFHtXLh.net
Rustってなんで全然普及しないの?
206:デフォルトの名無しさん
23/08/06 01:19:10.93 3wcIZOky.net
それはね
もう十分普及してるからだよ
207:デフォルトの名無しさん
23/08/06 01:22:19.33 qy7GXfpS.net
直訳すると最期って意味だから縁起が悪い
208:デフォルトの名無しさん
23/08/06 01:36:56.92 /n3JPvRf.net
信者の脳内でLinuxは大成功している事と同様の事也。
209:デフォルトの名無しさん
23/08/06 01:59:35.05 0QxiCITa.net
Linuxって史上最も普及したカーネルだと思うよ
210:デフォルトの名無しさん
23/08/06 02:18:54.27 3wcIZOky.net
それじゃ全然足りないってことでしょ
「信者が~」とか言っちゃう奴って目標高過ぎというか欲張り過ぎなんだよね
どっちが信者だよって感じ
211:デフォルトの名無しさん
23/08/06 02:36:01.14 /n3JPvRf.net
無料なので、100均やユニクロより地位は下だということなんだがな。
212:デフォルトの名無しさん
23/08/06 02:37:30.46 /n3JPvRf.net
Linuxと比べれば底辺の食べ物みたいに馬鹿にされる
サイゼリヤやマクドナルドの方が遥かに高級ということになる。
213:デフォルトの名無しさん
23/08/06 02:45:19.77 /n3JPvRf.net
そしてgccやemacsやnasmは貧者のツール。
214:デフォルトの名無しさん
23/08/06 02:45:25.28 0QxiCITa.net
まーた始まった
215:デフォルトの名無しさん
23/08/06 02:48:06.95 0QxiCITa.net
>>211
50代だと思うけど引きこもりなのかな?
力になるよ
216:デフォルトの名無しさん
23/08/06 02:51:33.28 /n3JPvRf.net
無料なんだから、貧者のツールだ。
当たり前。
217:デフォルトの名無しさん
23/08/06 02:59:11.89 /n3JPvRf.net
アメリカ製のSNSが存続できているのは、アメリカ政府の
補助金のおかげ。YouTubeは個人情報をアメリカ政府に
差し出す見返りに政府から補助金を得ている。
218:デフォルトの名無しさん
23/08/06 02:59:19.72 0QxiCITa.net
>>214
引きこもってるの?
219:デフォルトの名無しさん
23/08/06 03:01:24.81 0QxiCITa.net
>>215
周りに気兼ねなく話せる人はいるかい?
220:デフォルトの名無しさん
23/08/06 03:07:03.60 /n3JPvRf.net
どうでもいい。
221:デフォルトの名無しさん
23/08/06 03:21:25.88 FBMr5AjE.net
Rust叩きをしている人たちがちょっと頭のおかしい人たちばかりなのは偶然なのか必然なのか
222:デフォルトの名無しさん
23/08/06 03:48:28.55 /n3JPvRf.net
Rust信者は域外者に対する批判に暇が無いね。
223:デフォルトの名無しさん
23/08/06 06:57:45.77 G1mNNcoT.net
>>214
C++も無料だから、それを言ったらどっこいどっこい
224:デフォルトの名無しさん
23/08/06 07:19:58.01 V97WePr1.net
スレのレベルがまた一段と下がってるね
低学年の小学生みたいw
225:デフォルトの名無しさん
23/08/06 07:47:32.01 yMFHtXLh.net
↑これってボット?
226:デフォルトの名無しさん
23/08/06 09:15:11.08 xJ7XeiL9.net
>>170
5chのバグではない
仕様通りの動作
227:デフォルトの名無しさん
23/08/06 09:23:00.88 xJ7XeiL9.net
>>199-200
今Rustで募集すると間違いなくゲーマーが応募してくる
228:デフォルトの名無しさん
23/08/06 09:56:02.83 ctz5BWzh.net
>>221
ほとんどのプロは無料環境を使ってない。
229:デフォルトの名無しさん
23/08/06 09:58:51.57 ES7Kp55N.net
VisualStudioって有料だよね
230:デフォルトの名無しさん
23/08/06 10:15:09.14 ctz5BWzh.net
GTK, wxWidgt, Qt, CodeBlocks などを試してみたが、
どれも使う気になれなかった。Qtは有料だが。
231:デフォルトの名無しさん
23/08/06 11:32:39.13 xFPyICNs.net
合わなかったって事?
232:デフォルトの名無しさん
23/08/06 11:35:14.84 ctz5BWzh.net
>>229
その中でましな方のCodeBlocksですら、
メニューやボタンはあれども機能しない項目が
多かったり、順序によって機能し無かったりが多く、
どのような順序で事を行なっても動作するところの
VC++とは使い勝手が全く違った。
233:デフォルトの名無しさん
23/08/06 11:39:05.81 ctz5BWzh.net
手短に言えば「みかけだおし」で実際には機能しない
メニュー項目やオプション類が多数あって、混乱した。
gccもオプションは多すぎるほど多いが、実際にちゃんと
機能するものはほとんど無く、-I -L -O1 -v みたいなもの
だけに限られ、他のオプションは指定してもまったく機能
しないか、機能しても他のオプションと併用すると破綻したり、
または、機能しても僅かな変化しかなく、msvcが大胆に
機能変化するのとは全く異なっている。
234:デフォルトの名無しさん
23/08/06 11:43:44.43 ctz5BWzh.net
また、ボランティアによってせっかくチュートリアルが
作られていても、「すぐに変化して」しまうため、
最新版とは同じにはならない。
しかも、チュートリアルなしでは使いこなせないような
インターフェースになっており、非常に使い勝手が
悪かった。
このことは、3DモデラのBlenderでもあてはまる。
価値観の異なる別の人がプログラミングに参加してしまう
せいか、一年たてば、使い方ががらりと変化してしまう。
そのため、YouTubeなどでボランティアが多大な時間と
努力で作り上げた解説動画と、最新版の使い方が大胆に
異なっている。それで、古い解説動画扱いされ、
老害扱いされる。せっかく努力した人の努力は水泡に帰する。
これはまさに共産主義。努力した人をあざ笑い、何もしなかった
人が安泰になる仕組み。
235:デフォルトの名無しさん
23/08/06 11:45:18.85 xFPyICNs.net
んーなんかよくわからないがUIビルダー試してるって事かなあ?
RUSTから離れて行ってね?
236:デフォルトの名無しさん
23/08/06 11:51:59.05 ctz5BWzh.net
Rustも同様の事が起こる可能性が高い。
#OSSを見守ってきた人生経験より。
237:デフォルトの名無しさん
23/08/06 11:52:31.08 xJ7XeiL9.net
>>228
GTKは糞(GTK自体はC)
wxWidgetsは優秀(C++)
QtはQMLになって糞化(C++)
Code::Blocksは(C/C++)実質wxWidgets
どれも使えないのはC++の理解が足りてないんじゃないか
馬鹿自慢してるようなもの
238:デフォルトの名無しさん
23/08/06 11:54:22.02 6rDWJ/3o.net
tkは?
239:デフォルトの名無しさん
23/08/06 11:55:06.00 ctz5BWzh.net
有名なOSSツールで、年々ツールのバイナリサイズが肥大化
し、異常にサイズが大きくなってしまったものも知っている。
16BIT時代から続く有名なOSSだが、そのころから機能は
僅かしか追加されて無いのに、今や、4GB位のストレージ
を消費してしまう。機能は16BIT時代と対して変わってない。
16BIT時代だったら、数MBだっただろう。
240:デフォルトの名無しさん
23/08/06 11:56:08.73 ctz5BWzh.net
>>235
使えるが、使いたくなかった。
なんでそんな苦労しなきゃならないのか分からん。
241:デフォルトの名無しさん
23/08/06 11:57:07.74 xJ7XeiL9.net
>>234
まあRustがTauri薦めてる時点でRustもひどいってのは同意
242:デフォルトの名無しさん
23/08/06 11:58:15.10 xJ7XeiL9.net
>>236
tcl/tkはだぁぃ好き
243:デフォルトの名無しさん
23/08/06 11:59:35.42 ctz5BWzh.net
>>237
機能が2倍くらいになって徐々に肥大化して言ったならまだ分かる。
しかし、数年前まで32BIT版で500MB位であって、
機能は1%も追加されて無いのに、4GBになった。
これがOSSソフトの典型例。
パソコンの性能は劇的に増加したのに、インストール時間は
むしろ長くなった。
細かい時間は忘れたがインストールするだけで10分以上はかかった。
244:デフォルトの名無しさん
23/08/06 12:01:49.07 ctz5BWzh.net
それに、ユーザー数やシェアを考えれば、優先順位は
Windows、Android、iOS、、Mac、Linux 位の順で
なければならないのに、多くのOSSでは、ターゲットもホストも
大体、Linux、Mac、Windows、iOS、Android
のような順序になっており、ほとんど逆に近い。
このことも、ストレスフルになる。
245:デフォルトの名無しさん
23/08/06 12:02:07.07 xJ7XeiL9.net
VCもインストール時間必要以上に長いぞ
246:デフォルトの名無しさん
23/08/06 12:13:52.92 ctz5BWzh.net
OSS作者の多くは、Linuxをメインに開発していて、
Windowsは「仕方なく」対応していることが多いらしい。
だから、WindowsとLinuxの違いのために面倒な
追加コーディングが必要になったときには、ストレスフル
となり、いやいやコーディングしてしまう。そのため、
Windowsでは中途半端な出来栄えとなり、どこかに
不具合を抱えていることが多い。
そしてそれを自分の責任とせず、Windowsや、Windows
を使っているユーザー、または、Windowsを使っている社会
などに責任転嫁してしまう。
その結果、そのような作者が多いOSSをWindowsで使うと、
ストレスフルで使う側が嫌な気分を味あうことが多くなる。
247:デフォルトの名無しさん
23/08/06 12:17:19.87 ctz5BWzh.net
AdobeのPDF Readderもそうである。
恐らくMacとiOS(やスマホ)のインターフェースを
ベースにしているため、Windowsユーザーには物凄く
使いにくい。
Windws版のKindle Readerも同様。物凄く使いにくい。
Google Mapのインターフェースも最悪だといわれている。
しかし、それがデファクトスタンダードとなっていて、
無料なことが災いして、競争相手が育たず、世界中の
人々が使い勝手の悪い無料ソフトで、生産性が悪い
社会となってしまっている。
248:デフォルトの名無しさん
23/08/06 12:19:45.27 FBMr5AjE.net
>>228
それら以外にRust製のGUIもたくさんあるけど言及ないの?
>>239
RustがGUIとしてTauriを勧めたことなんて一度もない
Rustにも多様なGUIライブラリが揃っている
Tauriに相応するものはElectronであってGUIといってもHTML/CSS/JavaScriptを前提とするタイプ
その比較では性能面でElectronよりTauriが優れているというだけの話
249:デフォルトの名無しさん
23/08/06 12:23:27.05 0QxiCITa.net
>>ID:ctz5BWzh
世界は多様でいくらお前が望んでもそれは変わらない
皆(動物さえも)適応して生活している
ずっと読んできたが
おまいさんは多様性への適用能力に問題を抱えているんだよ
250:デフォルトの名無しさん
23/08/06 12:25:47.78 ctz5BWzh.net
OSSの作者は「逆張り」傾向が強い。
別の言い方をすれば天邪鬼。
だから、多数派向けのアプリを作りたい人には、
OSSの開発環境は足かせになる事が多い。
251:デフォルトの名無しさん
23/08/06 12:28:15.33 xJ7XeiL9.net
認識が随分偏ってるというか捻じ曲がってる人いるな
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
URLリンク(www.youtube.com)
252:4tBLlow https://www.youtube.com/watch?v=PR5t-4nGSpg https://www.youtube.com/watch?v=3Od9rhxlS-E
253:デフォルトの名無しさん
23/08/06 12:30:47.90 xJ7XeiL9.net
>>244
uby界隈の人は特にそういう傾向あるな
254:デフォルトの名無しさん
23/08/06 12:32:12.03 xFPyICNs.net
つまり要約すると「俺の利益を優先させろ!」で合ってる?
255:デフォルトの名無しさん
23/08/06 13:08:31.97 526NdK6C.net
>>251
OSS・無料ものはくそってことだろ
貧乏はくそなものでもただなら大歓迎だからな
256:デフォルトの名無しさん
23/08/06 13:12:13.42 xJ7XeiL9.net
貧乏だけどタダでも糞は嫌だよ
257:デフォルトの名無しさん
23/08/06 13:28:13.42 526NdK6C.net
>>253
でも、乞食必死してるんだろ
貧すれば鈍するだから、時期にくそを受け入れるようになるよ。
無料もの使うと乞食化するし、そして、
くそ物を使うと使っている奴もくそ化するし
そうなってもそうなっている自覚はないだろうが
258:デフォルトの名無しさん
23/08/06 14:14:02.54 3wcIZOky.net
OSSが有料だとか無料だとかそんな次元で語ってる時点で発想が乞食でしょ
自分で何か作って公開することで知識や技術を「交換」するみたいな発想はできないのかな
使わせて「貰う」ことしか頭にないなら仕方ないけど
OSSコミュニティがみんなそうだとは思わない方がいいよ
259:デフォルトの名無しさん
23/08/06 14:17:22.94 xFPyICNs.net
つまり「俺が作ってるものは無料じゃないので糞では断じて無い!」なの?
260:デフォルトの名無しさん
23/08/06 14:18:04.40 xJ7XeiL9.net
まるで有料に糞が無いかのような物言いだな
261:デフォルトの名無しさん
23/08/06 14:19:27.05 xJ7XeiL9.net
>>254
>くそ物を使うと使っている奴もくそ化するし
>そうなってもそうなっている自覚はないだろうが
その通りだ
有料糞品の最大派閥が君の大好きなWindowsだ
262:デフォルトの名無しさん
23/08/06 14:20:24.67 o/Yc4yMs.net
有料でクソだと生き残れないが、無料だとクソでも生き残る。
263:デフォルトの名無しさん
23/08/06 14:25:00.14 xFPyICNs.net
ああそうか今日は日曜日か
264:デフォルトの名無しさん
23/08/06 14:49:38.75 FBMr5AjE.net
>>224
&empty;が∅で表示される問題は>>170が言う通り5chとそのブラウザの仕様バグで合っているんじゃないかな
5chのdat仕様はHTMLタグや文字参照(&xxx;)を含んでいてそれらをそのまま表示することになっている
一方で利用者にとってはそんなことは関係ないため&empty;の書き込みがそのままその内部表現となり文字参照として解釈されるのは自然ではない
もちろんそのまま通さずにエスケープ処理することで対応している掲示板やSNSも多い
文字参照はあくまでもHTML(や*ML)での表現であるため利用者がそれを会話や書き込みで打ち込むのを前提とするのはありえないからである
ではなぜ5chはこんな変な仕様になっているのかというとshift-jisのまま範囲外の文字を受け付けるためだ
これを仕様通りとするならば5ch専ブラ側は利用者からユニコードで受け付けてshift-jis範囲外の文字と&等のみを文字参照として5chへ送るべきことになる
そうすれば利用者からの入力&empty;は5chへ&amp;empty;と送られて表示時も正しく表示されることになる
265:デフォルトの名無しさん
23/08/06 15:00:49.49 jVU2mLBC.net
争え……もっと争え……
266:デフォルトの名無しさん
23/08/06 15:11:36.53 3wcIZOky.net
調べたら10年以上前に決めた仕様らしいから仕方ない
普通の文章だと&...;みたいな文字列は出てこないし
267:デフォルトの名無しさん
23/08/06 15:34:51.43 chHFU/NY.net
Steamには有料のクソゲーが腐るほどある
268:デフォルトの名無しさん
23/08/06 15:35:01.33 xJ7XeiL9.net
>5chへ&amp;empty;と送られて
これが為されてないのは専ブラのせい?
269:デフォルトの名無しさん
23/08/06 16:05:39.21 0QxiCITa.net
>>231
>gccもオプションは多すぎるほど多いが、実際にちゃんと
>機能するものはほとんど無く、-I -L -O1 -v みたいなもの
>だけに限られ、他のオプションは指定してもまったく機能
>しないか、機能しても他のオプションと併用すると破綻したり、
>または、機能しても僅かな変化しかなく、msvcが大胆に
>機能変化するのとは全く異なっている。
バイナリ変わっとるやろ?
gccのオプションが多いのは否定しないが
お前が使いこなせていないだけ
270:デフォルトの名無しさん
23/08/06 16:07:07.06 0QxiCITa.net
>>232
チュートリアルの批判は妥当だね
追従できていないことは多々ある
271:デフォルトの名無しさん
23/08/06 16:11:32.80 0QxiCITa.net
>>232
最後の共産主義云々は飛躍せずに論理の筋道を書かないと全く意味が分からない
まともな批判も書いているのだが
社会生活を送っているように思えない書き込みも散見される
272:デフォルトの名無しさん
23/08/06 16:14:36.17 0QxiCITa.net
>>237
ソース見れば肥大化した理由が分かるのでは?
OSSなら知る自由があるよ
273:デフォルトの名無しさん
23/08/06 16:21:14.15 o/Yc4yMs.net
日本人は知らされて無いけど、中国がずっと前からOSSを推進しており、
githubのスポンサーも中国企業が多いと聞いた。
それにgithubの一番人気ソフトは中国製。
274:デフォルトの名無しさん
23/08/06 16:27:02.28 chHFU/NY.net
こいつの言ってることが本当なら、それらの問題点を改善したソフトを
有料で売れば大儲けできるのになぜかやらないんだよなぁ
275:デフォルトの名無しさん
23/08/06 16:29:09.60 FBMr5AjE.net
>>270
githubのスポンサーというか所有者はあなたが信奉して依存しまくっているMicrosoftです
276:デフォルトの名無しさん
23/08/06 16:31:30.86 o/Yc4yMs.net
>>272
githubの所有者とは別に、スポンサー企業と言うのがあるんだよ。
277:デフォルトの名無しさん
23/08/06 17:53:54.77 xFPyICNs.net
まだこういう事言ってる人いたんだ
278:デフォルトの名無しさん
23/08/06 19:10:54.10 o/Yc4yMs.net
この板を含め、ネットでは、技術よりマーケティング重視の人が多い。
それで日本の技術力低下が起きたのではないか。
279:デフォルトの名無しさん
23/08/06 19:16:21.94 o/Yc4yMs.net
テレビを見ると、やたらと技術だけでは駄目、という言葉ばかり
叫ばれるが、GAFAMは、技術先行型、プロダクトアウト型だと
言われている。実は、マーケットイン型は、模倣され易いと言われており、
だから、新興国に模倣されているのかも知れない。
GAFAMのものは、技術先行型だから他社が真似するのは難しい。
模倣しようと思っても模倣できない参入障壁が多い。
検索エンジンやChatGPTも、プログラミングだけでなく、処理能力が
桁違いに大きなスパコンの様なデータセンターが必要だと思われる。
そして二番手以下は全く売上げがたたないので大赤字となるため、
参入できない。
それが自動車産業や家電業界とは異なるところ。
280:デフォルトの名無しさん
23/08/06 19:59:20.44 6rDWJ/3o.net
そんなことよりRustとC++の話しない?
281:デフォルトの名無しさん
23/08/06 20:17:03.40 /D5+TjxD.net
コマンドラインアプリってRustってどこが向いているの?
例えばメモリリークしないっていう謳い文句があるけど別にCやC++だったらコンパイラやCLIみたいなすぐ終了するプログラムは一回もfreeしなくてもいいわけで
その場合はまるでGC言語みたいな自由な書き方が選択できるわけじゃん
メモリリークなんてどうでもいいのにそれを強制的に意識させられる言語なわけだがCLIに何が向いてるのかわからん
282:デフォルトの名無しさん
23/08/06 20:28:32.60 xFPyICNs.net
いや別に好きにすればいいじゃん
283:デフォルトの名無しさん
23/08/06 21:09:02.37 1Y5TUJVR.net
向いてるって言ったやつに聞けば
284:デフォルトの名無しさん
23/08/06 21:15:56.82 5kraJYIW.net
>>278
根本的に勘違いしているようだが
GC言語が遅いのはGCでメモリ解放処理をするためではない
GCが起きる前に終わってしまうプログラムでも遅いことを知っているはずだ
もう一つ
Rustはメモリ自動解放されるからfree()とか気にする必要はない
RustはCLI含めて様々な用途に向いている
さらにもう一つ
「CLIみたいなすぐ終了するプログラム」
CLIとGUIでそんな差があると勘違いする人はかなり珍しい
CLIであろうが時間のかかる様々な処理にサーバーなどすぐに終了しないものが多い
285:デフォルトの名無しさん
23/08/06 21:24:44.11 dxxU0i4r.net
C/C++ → ライブラリの用意がめんどい(cargoとかnpmみたいな現代的な仕組みがデファクトで存在しない)
Ruby, JS, Python, Java → 処理系のバージョンや依存ライブラリのインストールに悩まされる。バイナリポンできない。
Go → GCとかでフットプリントがでかい?わりと Go でもいいじゃん派。
clap の出来もいいし向いているかはさておき秀作として CLI から始めやすいしバイナリポンでプロダクション投入しやすいのはあるね。
286:デフォルトの名無しさん
23/08/06 21:28:44.29 xFPyICNs.net
バイナリポンって何かの栄養ドリンクみたいだ
287:デフォルトの名無しさん
23/08/06 21:32:26.35 0QxiCITa.net
>>282
>C/C++ → ライブラリの用意がめんどい(cargoとかnpmみたいな現代的な仕組みがデファクトで存在しない)
はい? 何がめんどい?
288:デフォルトの名無しさん
23/08/06 21:33:53.00 0QxiCITa.net
>>282
>Ruby, JS, Python, Java → 処理系のバージョンや依存ライブラリのインストールに悩まされる。バイナリポンできない。
aptでええがな
289:デフォルトの名無しさん
23/08/06 21:34:47.11 /D5+TjxD.net
>>281
>Rustはメモリ自動解放されるからfree()とか気にする必要はない
はあ?
Cでfreeしない場合はGC言語みたいに好きに書けるけどRustはそもそもルールを守って書かないとコンパイルが通らないだろ?
そもそもそのコンパイルを通すためにルールを守ることを強制するってのがどうなのって話
データ構造やアルゴリズムに制限を加えてるってことだよね
290:デフォルトの名無しさん
23/08/06 21:42:33.91 wMXJiymC.net
>>278
新手のアホが現れた!
291:デフォルトの名無しさん
23/08/06 21:53:53.68 5kraJYIW.net
>>286
何を言いたいのかさっぱりわからない
プログラミング経験がないのか?
292:デフォルトの名無しさん
23/08/06 22:09:03.59 0QxiCITa.net
>>189
GPT4を舐めてはいけない
I: C++プログラムのバグを教えて欲しいのですが? コードレビューをできますか?
G: もちろんです、お気軽にコードを共有してください。
バグを特定したり、最適化やリファクタリングの提案をしたりできます。
I:
#include <thread>
#include <chrono>
using namespace std;
int main () {
using Lock = lock_guard <mutex>;
mutex m0;
mutex m1;
thread th0 {
[&] () {
Lock l0 {m0};
this_thread::sleep_for (chrono::seconds {1});
Lock l1 {m1};
}
};
thread th1 {
[&] () {
Lock l1 {m1};
Lock l0 {m0};
}
};
th0.join ();
th1.join ();
return 0;
}
293:デフォルトの名無しさん
23/08/06 22:11:02.39 0QxiCITa.net
G: このC++のコードにはデッドロック(両方のスレッドが無限に待機する状態)があります。
th0スレッドはm0をロックし、その後m1をロックしようとします。
一方、th1スレッドはm1をロックし、その後m0をロックしようとします。
これは次のようなシナリオでデッドロックになる可能性があります:
1. th0がm0をロックします。
2. th1がm1をロックします。
3. th0がm1をロックしようとしますが、m1は既にth1によってロックされているため、
th0はm1が解放されるのを待つことになります。
4. 同様に、th1がm0をロックしようとしますが、
m0は既にth0によってロックされているため、
th1はm0が解放されるのを待つことになります。
結果として、どちらのスレッドも他方がmutexを解放するのを無限に待つことになり、
デッドロックになります。
これを解決するためには、両方のスレッドがmutexを取得する順序を一貫させることが重要です。
以下に修正したコードを示します:
294:デフォルトの名無しさん
23/08/06 22:11:54.17 0QxiCITa.net
G:
#include <thread>
#include <chrono>
using namespace std;
int main () {
using Lock = lock_guard<mutex>;
mutex m0;
mutex m1;
thread th0 {
[&] () {
Lock l0 {m0};
this_thread::sleep_for (chrono::seconds {1});
Lock l1 {m1};
}
};
thread th1 {
[&] () {
Lock l0 {m0};
Lock l1 {m1};
}
};
th0.join ();
th1.join ();
return 0;
}
G: この修正により、どちらのスレッドも最初にm0をロックし、その後m1をロックします。
このようにすることで、スレッド間のデッドロックを避けることができます。
295:デフォルトの名無しさん
23/08/06 22:14:32.72 0QxiCITa.net
まもなくVisual Studioを始めとした開発環境にGPTが統合されるだろうから
Rustのセールスポイントの価値は崩壊する
296:デフォルトの名無しさん
23/08/06 22:18:09.75 /D5+TjxD.net
>>288
競プロでもRustが向いてないのはそういうことだし、データ構造やアルゴリズムの実装パターンに制限を与えるのがRust言語だよね
freeを一切しないってのもプログラムの設計パターンとしてあるし、そうやって実装されてるコンパイラもあるわけ
低レイヤを触るプロフェッショナルからしたらそんなの足枷になるだけだろ?
コンパイルも遅くなるし
ある意味縛りプレイを強要しているわけ
マゾ言語だな
297:デフォルトの名無しさん
23/08/06 22:26:15.02 5kraJYIW.net
>>293
壮大な勘違いをしているようで何を言いたいのかわからん
話を単純にするためにRustのことは横においとくとして
C言語でfree()をすると実装パターンに制限を与えるからfree()しない方がよいという主張なのか?
298:デフォルトの名無しさん
23/08/06 22:26:41.46 xFPyICNs.net
>>292
それ、プログラマも要らなくならないか?
299:デフォルトの名無しさん
23/08/06 22:27:43.74 0QxiCITa.net
家でもパンツくらい履け派と履かんでもよかろうもん派
300:デフォルトの名無しさん
23/08/06 22:29:56.52 0QxiCITa.net
>>295
要件を定義するのに特化したのがプログラミング言語だから
自然言語での要件定義は不効率だと思うよ
数式なしの数学の本が本当に良いか?って話と同じ
301:デフォルトの名無しさん
23/08/06 22:31:22.30 /D5+TjxD.net
>>294
Cだとmallocするだけでメモリ解放はプロセス終了時に任せるという設計パターンが取れるわけで、そのすればGC言語と同じように好きなタイミングで動的確保していけるわけだけど
Rustはできるの?できないだろ?
これは設計パターンを制限していることになるよね
同じくCで書かれたコードをそのままRustに移植すると難しかったりするだろう?
一種の書き方を制限することでプログラマの自由度をなくすのがRustの本質だよね
302:デフォルトの名無しさん
23/08/06 22:35:05.72 0QxiCITa.net
Cだとパンツは外出するときに履けば良いわけで
Rustは家の中でパンツを履くのを強制している
夏はパンツ蒸れるねん
303:デフォルトの名無しさん
23/08/06 22:35:14.35 5kraJYIW.net
>>292
どうみてもRustと無関係な話あるいは全ての言語に関係ある話だな
その手の話はRust叩きに使えない
304:デフォルトの名無しさん
23/08/06 22:39:21.65 0QxiCITa.net
>>300
Rust最大のセールスポイントを
GPTを用いたコードチェッカの登場により
その他の言語全てが手に入れるという話
おまけにGPTを用いたチェッカーは
Rustでも不可能なデッドロックの検出可能となる
305:デフォルトの名無しさん
23/08/06 22:43:39.08 5kraJYIW.net
>>298
Rustで何ができないと言ってるのかわからない
何か出来なかったことでもあるのか?
Rustでもメモリの返還を最後までしないあるいは途中で返還せずクライアント毎やバッチ毎にまとめて解放は普通に行なわれている手法
306:デフォルトの名無しさん
23/08/06 22:51:03.33 5kraJYIW.net
>>301
100%は合っていなくても大体合っていればいい文章生成動画像生成ならともかく
量が増えたり複雑化すると簡単な計算すら間違えるため数値計算にすら使えない状況で
100%確実なRustに対してどんなアドバンテージがあるんだよ
セキュリティ面を考えるなら吐かせるコードもRustにすれば解決だからRustが有利になる主張なら理解できる
307:デフォルトの名無しさん
23/08/06 23:01:43.37 dxxU0i4r.net
>>284
そこの面倒さが分からないの旧世代すぎだろ。
>>285
ディストリ毎の対応面倒すぎるだろ。MacとかWindowsも対応したいケースもあるし。
308:デフォルトの名無しさん
23/08/06 23:08:50.38 0QxiCITa.net
これまでRustを始めようとしてきた者は
学習コストの高さと享受されるメモリ安全を天秤に掛けて
なんとかRustを選んできた訳だがセールスポイントを失うのだよ
GPTを使用したコードチェッカはRustにとっては逆風だよ
C/C++のように普及した状態ではなくこれから布教させようってときに
309:デフォルトの名無しさん
23/08/06 23:13:30.02 0QxiCITa.net
トランスフォーマーって意味の理解をしているわけではないとよく言われるが
>>289で>>290の解説が返ってくるところ
意味の理解が出来てるようにしか見えないなぁ...
規模がでかいってのは凄いやね
310:デフォルトの名無しさん
23/08/06 23:56:34.67 BLzBDKrS.net
>>305
学習コストはほとんど同じ
そもそも所有権やムーブのことならC++でも学習するしその学習に半日もかからない
311:デフォルトの名無しさん
23/08/07 00:21:48.23 xccab0Og.net
ChatGPTの登場でRustが有利になってるよ
ChatGPTは桁が大きくなったり複雑になったりすると計算すら間違うように論理的なことは苦手で100%を求められるチェックには向かないが
多少間違うかもしれないけど大雑把な生成は得意なのでコードの叩き台には役立つ
したがって叩き台のRustコードを吐かせて必要なら人間が補正指示を出すとともに100%チェックしてくれるRustコンパイラが通るコードを吐かせれば相性も効率も完璧
312:デフォルトの名無しさん
23/08/07 05:59:36.42 r5QIvx3G.net
>>288
お前がプログラムの経験無いだろw
313:デフォルトの名無しさん
23/08/07 09:23:32.99 yk4PtrI0.net
ChatGPTが監査しました、でお客様が納得するか、なんだよな
コンパイルが通る通らないでチェックしてくれるほうがいいっちゃいい
これは、C++のsanitizerも同様
314:デフォルトの名無しさん
23/08/07 10:18:41.03 PaVldV1Z.net
今年に入ってどこも社会はLLM利用の体制を整えてきたと思う
当たり前の世界に直ぐなるよ
315:デフォルトの名無しさん
23/08/07 10:59:05.68 O+2ha1KL.net
ならば、パソコンだけで処理する時代が終わり、スパコン必須の時代に
入ったと言うことか。
316:デフォルトの名無しさん
23/08/07 11:04:17.89 wl/Lx6N5.net
動的型言語とGC言語をごっちゃにしてる人も存在するねこのすれ
317:デフォルトの名無しさん
23/08/07 11:08:25.70 O+2ha1KL.net
OSS推進の結果、パソコン向けのソフトウェアを売って儲けることが
不可能となり、アメリカのテック企業はサーバーサイドでスパコン
を差別化と参入障壁にし出した。Googleの検索エンジンもスパコン
有りき。AIも学習過程はスパコン有りき。パソコンでは不可能。
318:デフォルトの名無しさん
23/08/07 11:08:56.21 wl/Lx6N5.net
>>296
めっちゃ判り易いωωω
パンツはかない方が絶対速い
319:デフォルトの名無しさん
23/08/07 11:14:25.47 O+2ha1KL.net
OSS推進の結果、プログラマーの活躍が出来る時代は終焉した。
今後は、大資本を持つ大企業がスパコン有り気で設ける時代に
なるだろう。ベンチャーの時代も終わった。
320:デフォルトの名無しさん
23/08/07 11:15:24.33 O+2ha1KL.net
>>316
OSS推進の結果、プログラマーが活躍出来る時代は終焉した。
今後は大資本を持つ大企業がスパコン有りきで儲ける時代に
なるだろう。ベンチャーの時代も終わった。
321:デフォルトの名無しさん
23/08/07 11:19:47.49 O+2ha1KL.net
プログラマは高校生男子のなりたい職業No.1らしいが、もう時代遅れだ。
OSS推進をやめない限り、プログラマの価値は下がり続けるだろう。
322:デフォルトの名無しさん
23/08/07 11:21:40.36 bRk0wqmp.net
>>314
スパコンww
基本的なことを知らなさ過ぎるのに
それを自認できないから妄想爺になるんだな
勉強になるわ
323:デフォルトの名無しさん
23/08/07 11:23:38.99 PaVldV1Z.net
>>316
Visual C++で個人利用のPC用のソフトを書いて販売
って最も原始的なビジネスモデルはとっくに終わっている
>OSS推進の結果、プログラマーの活躍が出来る時代は終焉した。
大企業で働いたりその資本で下請けのプログラマーとしてやれば良いのでは?
あるいはあくまで個人利用のソフトを書いて
ビジネスと考えるなら携帯用のソフトならありえる
324:デフォルトの名無しさん
23/08/07 11:26:11.06 wl/Lx6N5.net
今の若いもんには携帯ソフトって言っても通じないだろ
携帯アプリと言え
325:デフォルトの名無しさん
23/08/07 11:28:10.28 PaVldV1Z.net
>>321
歳がバレるねwww
326:デフォルトの名無しさん
23/08/07 11:33:12.04 O+2ha1KL.net
>>320
>大企業で働いたりその資本で下請けのプログラマーとしてやれば良いのでは?
日本やEUにとっては、それは、自国が税金を使って育てた人材が
アメリカ企業に利用されることになるし、若者にとっては脱サラや
一国一乗の主になるという夢が絶対に実現しない最悪の社会になる
事を意味する。