1 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 22:19:47.56 ID:avZQ9Wm7.net] 闘え ※前スレ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ C vs C++ vs Rust Part.2 https://mevius.5ch.net/test/read.cgi/tech/1639539350/
855 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 13:15:41.55 ID:ES6j8MQa.net] >>839 >fs<<"test"<<std::endl; ファイルオープンできてるかどうかわからないのに書き込むのかよwww C++てファイルオープンできてもないところに書き込んだときに 処理を停止せず、自動でうまく例外処理するおしゃれな機能なんてあったっけ? using(var sw=new StreamWriter("a.txt")){ sw.WriteLine("test"); } とじゃ全然意味が違うだろ なんでエラーチェックしないの? わざわざチェックしなきゃいけないかどうかの話をしてんだよ わざと論点ずらすな >C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない その通り それを問題にしてんの。 そのおかげでC++では生産性の向上が見られない 認めてるじゃねーかwww
856 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 13:54:11.00 ID:nEZBRLmQ.net] C++ vs C#スレ立てるか?
857 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 14:02:35.35 ID:uj+JKNAz.net] >>842 > ファイルオープンできてるかどうかわからないのに書き込むのかよwww そういうのが欲しけりゃエラー時に例外を出すようにしとけばいいだけ C# 使ってりゃそれぐらいわかるだろ ... 使えてりゃねw
858 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 15:37:33.26 ID:Blieee3P.net] >>842 >>838 は無視かよ。 ずいぶんと都合のいい目をしているんだな。
859 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 18:17:46.54 ID:aaZp/+dN.net] >>838 見ればC++がなぜ衰退していくかよくわかるな
860 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 18:28:11.81 ID:4Wrqo5DU.net] >>846 なんで? そこまでいうからにはきっちり説明してもらおうか。 説明できなきゃ馬鹿にしようかね。
861 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:08:24.48 ID:WCI7hBXJ.net] iostreamなんて今使ってないだろ
862 名前:デフォルトの名無しさん [2022/03/30(水) 20:21:40.16 ID:qIK9n1MF.net] > C#のusingみたいな構文 C#の発明と言うより、発祥は、お前らの嫌いな、Visual Basic(VBA)の、With〜 End Withじゃないかな?
863 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:22:04.28 ID:UJJsLtPb.net] C++は例外がcharベースのwhatしかない時点で日本語Win上では実情と合わなくなるんよね。
864 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:22:32.28 ID:/krHLZdG.net] >>834 Rustだと以下のようになる > ・using RustもC++と同じくRAIIなのでusingは不要 let mut file = File::create("a.txt")?; file.write("test")?; エラー時は?演算子で即returnとなり例外処理と類似状態になる スコープを抜ける時に自動的にデストラクタdrop()が呼ばれる 何もしなくてもファイルなら自動closeされてロックなら自動解除される > ・$"X = {X}" Rustでは標準マクロ利用でほぼ同様の形式 format!("x={x}") > ・null合体演算子 Rustは安全重視のため各型にnullやnilといった値が無い状態というものがない そこで関数型言語と同様に代数的データであるenumを用いてジェネリックにT型に対してenum Option<T>型を使う Option<T>型はT型の値tが存在する場合Some(t)と存在しない場合Noneの2つのenum値をとる なのでnullに対応するものはNoneとなるが型が異なるので明白に区別できてミスがあればコンパイル時に検出可能
865 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:25:10.41 ID:/krHLZdG.net] >>834 > ・null合体演算子 Rustでは>>851 という状況なのでnull合体演算子についても少し概念が違ってくるが xがNoneの時にDEFAULT_VALUEとしたい場合 x.or(Some(DEFAULT_VALUE)) でOption<T>型を得る x.or(Some(DEFAULT_VALUE)).unwrap() でT型を得る x.unwrap_or(DEFAULT_VALUE) が上記の簡易版でT型を得る 例えばC#での x ?? y ?? z を全てOption<T>型で表すと Rustでは x.or(y).or(z) となりほぼ同じシンプルな表現 ちなみに?演算子によるNone時の即retun Noneも可能で 例えば各メソッドがOption<T>型を返すとするとこれでT型を得られる let output = input.method1()?.method2()?.method3()?;
866 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:27:16.59 ID:WCI7hBXJ.net] >>850 その例外ベースだけだとおもってるの? クラスや型ならなんでも投げられるんだが
867 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:31:07.93 ID:UJJsLtPb.net] それは例外そのものの型のことでしょ。 基本的にはexceptionの派生や孫で作られてるものが大半だからwhatでメッセージ受けるわけだが、 何のエンコードかは定かではない。
868 名前:デフォルトの名無しさん [2022/03/30(水) 20:33:36.81 ID:qIK9n1MF.net] >>842 根本的な理解がない、残念君のご様子。 > std::ofstream fs("a.txt"); コンストラクタでOpenする場合、失敗すると例外がスローされるから、関数内 または上位でtry〜catchかな。 C#やJavaで毎回NULL参照チェック書いてるか? いずれにしろ、オープンされていないオブジェクトが > fs<<"test"<<std::endl; に渡されることはない。 こうした処理は、オブジェクトのシリアライズ処理を実装 した関数内へ記述して、参照渡しでオープン済のオブジェクトを渡すのが一般的。
869 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:43:31.08 ID:/krHLZdG.net] Rustにはnullも例外もなく どちらも代数的データ型であるenumで表現するため シンプルかつ安全性をコンパイル時に保証できる
870 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:06:36.60 ID:UJJsLtPb.net] RustでC#のdynamicみたいなことやるにはどうするの?
871 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:23:30.04 ID:yBbOBLyf.net] >>849 全然ちゃうわww
872 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:25:28.30 ID:9xKIjqbP.net] >>857 C#はdynamic型という間違った方法を取ったため C#は実行時エラーおよび実行時例外が発生し安全でない Rustは型とは直行するトレイトがあるため 複数の様々な型に対して共通する振る舞いをトレイトとして実装できる これらはコンパイル時にチェックされ実行時の安全性が保証される 更に加えてトレイトの利用方法は用途に向けて2種類用意されている 1つは利用時にimpl Traitで宣言する静的なトレイト利用であり 複数の様々な型に対して各々の静的に異なるコードが適用され高速である もう1つは利用時にdyn Traitで宣言する動的なトレイト利用であり 複数の様々な型に対して実行時にダイナミックにディスパッチし柔軟である 2種類ともにコンパイル時にチェック確定するため Rustではこれら実行時にエラーや例外が起きることはない
873 名前:デフォルトの名無しさん [2022/03/30(水) 21:55:25.20 ID:qIK9n1MF.net] > Rustではこれら実行時にエラーや例外が起きることはない 実行時にメモリが足りなくなったら、Rustで書かれたプログラムは どんな挙動を返すの?
874 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:57:54.53 ID:UJJsLtPb.net] それだと使えないなぁ。
875 名前:デフォルトの名無しさん [2022/03/30(水) 21:58:03.62 ID:qIK9n1MF.net] >>858 おなじだよ。 usingに一時オブジェクトを渡す場合に限って、usingの終わりと オブジェクト寿命が同じなだけだ。
876 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:00:39.04 ID:T6u2kz/X.net] 毎度のことながら複オジのアホ解説読むと Rust勧めてるのはこのレベルの人なのかと悲しくなる 無知にも程がある
877 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:05:28.12 ID:qUkXH45r.net] >>860 それちゃんとよく読めよ C#のdynamic型に対応するものの話だろ ちなみにRustではメモリアロケータも変更可能&自作も可能でベアメタル含めて任意の環境に対応できる だからメモリ不足時の対応も自由にできてOS等も書ける もちろん一番単純な対処としてはpanic
878 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:07:51.84 ID:jqrh8rWF.net] >>861 C#でのdynamic型で適用してる事項はすべて適用出来るでしょ 反例を持ってこない限りこれはC#側の負けよ
879 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:11:11.16 ID:bu0twkVZ.net] >>862 With~End Withだけじゃなくusingも勉強し直した方がいいよ リアルで恥を掻く前に
880 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:14:11.74 ID:UJJsLtPb.net] 対象なオブジェクトがrust内にあるわけでも存在してるかさえわからない状態なんだから、 実行時にはエラーや例外が発生すると思うのだが...
881 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:25:39.59 ID:ALQUZfnd.net] >>867 どういう想定か曖昧すぎてわからないため一般的な話をすると Rustにはnullもundefinedもないし いわゆるtry-catch例外もないから あるT型が求められる時の関数の返り型は>>851 でも触れられているように代数的データ型となって enum Option<T>型かenum Result<T, Err>型になるよ これらはT型を取り出すために広い意味での分岐となるだけで普通に処理が進むね
882 名前:デフォルトの名無しさん [2022/03/30(水) 22:26:22.84 ID:qIK9n1MF.net] >>866 お前がナー
883 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:31:08.47 ID:YEeL7eMZ.net] >>867 それはC#でdynamic型を使って問題を解決している例ではないのでは? 例えばWebのDOM操作など色んな異なる型が返ってくるときのためにC#ではdynamic型を使う Rustではそういう時にトレイトを使うので色んな異なる型が返ってきても対応できる
884 名前:デフォルトの名無しさん [2022/03/30(水) 22:34:21.72 ID:qIK9n1MF.net] >>839 > usingより簡単だし例外でも問題なし。 >>842 は、 > using(var sw=new StreamWriter("a.txt")){ の、newに失敗すると、その時点で例外がスローされることを判ってないん だろうな。
885 名前:デフォルトの名無しさん [2022/03/30(水) 22:37:02.42 ID:qIK9n1MF.net] >>864 > ちなみにRustではメモリアロケータも変更可能&自作も可能 C++でもできるわけだが?
886 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:42:11.12 ID:OkNrkUse.net] >>872 どこにもC++のことを否定していない書き込みに対して唐突のイチャモンやな それならC++だけでなく Cでもできるわけだが?
887 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:47:22.15 ID:4xlnCCQ3.net] >>860 君は頭が悪いな C#のdynamic型は失敗仕様であるという話だぜ メモリが十分にあっても実行時エラーや例外で死んでしまう コンパイラが検知できない仕様なためミスがあっても通してしまうからだ
888 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:50:27.28 ID:NgOFxdTU.net] >>869 いや、マジで勉強したほうがいいぞ using はスコープから拔ける時に Dispose 呼ぶだけ 寿命に感知はしないよ
889 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:09:24.22 ID:4bDt5Vb4.net] dynamic自体は名前がわかってるreflectionをいちいち書くのダルいから妥当な導入ではある ジェネリクスにC++20のrequiresみたいな制限があればdynamicなんていらなかったのは確かだが
890 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:15:44.80 ID:SheiVyTd.net] 実行時になってようやくエラーを引き起こし得るdynamicはC#の設計ミス C++やRustは異なる解決をしている
891 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:59:52.46 ID:Lj4LP6Zg.net] dynamicってそもそもリフレクション+式木でしょうが こんなもん使うな ジェネリック使え
892 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 00:03:05.89 ID:EY1WgKK4.net] tagged-unionだよ
893 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 00:24:36.68 ID:LBSBAbTE.net] ミスった時にコンパイルエラーを出せない仕様はよくないな >>859 Rustでの対応は3種類だな (1) ジェネリックにトレイト境界で制約して静的にモノモーフィゼーション (2) ジェネリックにトレイト境界で制約して動的にディスパッチ (3) enumでタグ付け収容して処理時分岐 いずれもプログラミングでミスれば実行時ではなくコンパイル時に早期エラー発覚できる
894 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 01:54:42.49 ID:sTE3Pr3t.net] >>855 std::ofstreamのコンストラクタで例外を投げるってマジ? 普段からC++使ってるの?
895 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 15:47:20.37 ID:TWJkYixT.net] >>832 リソース解放って構造体と紐づけるのは結構無理があると感じることが多い。 もっとコンテクストによるって方が一般的感覚だと思うわ。 そういう意味でdeferのが馴染む。
896 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 16:56:25.59 ID:+qzJxbYZ.net] >>882 上にも書いたけど自由度は高いと思うけど忘れたり間違えたりしそうで怖い
897 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 17:43:45.66 ID:TWJkYixT.net] デストラクタを正しく書く方が簡単で間違いと考えてる?あんまり理解できんな。
898 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 18:24:33.50 ID:wBL3yx/w.net] >>884 デストラクタは一度書けばいいけどdeferは使う度に書かないとだめでしょ? どっちが間違いやすいかは考えるまでもない
899 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 18:47:26.32 ID:d1Z8MU3o.net] >>884 必要なものはだいたい標準ライブラリに入ってるから手書きで頑張る必要はないのでは 例外安全にするのがめんどくさいとかそういう話?
900 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:19:43.92 ID:Yphv2UuC.net] https://discourse.llvm.org/t/rfc-lifetime-annotations-for-c/61377 clangの独自拡張としてだけどC++にlifetime入れようという議論があるんだね
901 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:54:43.62 ID:ezdDFz2p.net] ライフタイム導入すればコンパイル時点でバグを発見できて 実行時の無駄なデバッグを減らせるし メモリ関係の未知のセキュリティバグもコンパイル時点で検出できるもんな
902 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 22:41:04.77 ID:5MtdHF70.net] これ以上C++を接ぎ木してこねくり回すの止めにしたら
903 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 11:55:08.48 ID:W9pHkRzU.net] >>887 でもrustと同じならdoubly linked listは表現出来ないんでしょ?
904 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 12:04:52.85 ID:llhYZSlD.net] >>889 C++ってかわいそうな運命だよなあ
905 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 16:13:05.78 ID:9lFqLTmO.net] >>890 それはlifetime関係なくてxor mutabilityの話だよね
906 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 16:37:52.29 ID:W9pHkRzU.net] >>892 なるほど
907 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:12:35.56 ID:Qom6hzMo.net] >>890 Rustでは出来るよ
908 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:28:58.27 ID:FsLhH6TX.net] >>885 そんなの一行書くだけろ。。むしろ意図
909 名前:通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。 [] [ここ壊れてます]
910 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:44:36.67 ID:77d+30yb.net] >>895 > そんなの一行書くだけろ。。 できないプログラマーの典型で草 一行書くだけだから確実にできると言うならバグは無くなるわ > むしろ意図通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。 それはお前の能力が足らんだけ
911 名前:デフォルトの名無しさん [2022/04/03(日) 17:49:59.46 ID:rc6NcMYZ.net] >>895 defer使えば怪しい挙動は絶対しないとでも?
912 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:57:55.57 ID:9lFqLTmO.net] デストラクタでリソースが解放されることを保証するのはデータ構造を定義する人だけど deferの場合はデータ構造を使う人の責任になる データ構造を定義する回数と使う回数では普通は後者の方が多くなるから deferの方が間違いを起こしやすいと
913 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:34:48.12 ID:W9pHkRzU.net] >>894 実行時にオーバヘッドが出る形でしか実現できないやん
914 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:40:47.40 ID:9lFqLTmO.net] >>899 オーバーヘッドが出てるのって具体的に何のこと? stdのLinkedListの実装にもオーバーヘッドあるの?
915 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:02:06.19 ID:14cK0a9Z.net] >>900 LinkedListってunsafeで実装されてるんだけど静的にメモリセーフティを実現する言語機能があるRustでそれをするっておかしいよね? それって行儀よく実装するとオーバーヘッドが出ることの裏返しだよね?ちょっとは頭を使おうか?
916 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:14:12.42 ID:y2zkcNcq.net] >>901 えっ、じゃあなんでunsafeという機能がわざわざ用意されてるの? 頭使って考えてみて
917 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:31:58.76 ID:WSInp7AV.net] >>901 linked listに限らず何でもunsafeで作られているよ unsafeは悪ではなく、安全なインタフェースを備えた型やモジュールの内部に閉じ込めるもの その結果Rustではプログラム全体の安全性を保証できる 悪なのはプログラム全体がunsafe状態なC/C++
918 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:56:40.12 ID:88Lrr0N7.net] >>902 そりゃRustの型システムがオーバーヘッドが起こるやり方でしか安全性を保証できないからでしょ? 頭使えないんだねかわいそう
919 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:04:31.11 ID:y2zkcNcq.net] >>904 そうそう、コンパイラとプログラマの責任範囲を明確化するための仕組みだよね 結局 >>899 で言いたかったのは safe rust だけで LinkedList を実装するとオーバーヘッドが生じると言うことだったんだね
920 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:09:11.84 ID:9r+bgOYm.net] >>903 それってRustの型システムに基づいて行儀よく実装するとオーバーヘッドが出ることへの反論になってないよね? つまりRustの型システムはdoubly linked listを含めたあらゆるデータ構造をオーバーヘッドなく実装できるほどの表現力がないってことだよね
921 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:23:50.48 ID:y2zkcNcq.net] >>906 safe rustの範疇ではあらゆるデータ構造を表現できないのはその通り なのでunsafeというescape hatchを用意している rustはpureな言語ではないのでコンパイラですべての安全性を保証することは最初から狙ってないよ
922 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:34:53.41 ID:M7C/Fpbq.net] >>906 それは違う 例えばVec(ベクタ)はRustが標準ライブラリで提供している型だが LinkedList(二重リンクリスト)もRustが標準ライブラリで提供している型である VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している その両者に違いはなくRustによる安全性の保証に何も問題を及ぼしていない
923 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 13:39:53.90 ID:RabHiWd3.net] オーバーヘッドwってことでいいじゃん 中途半端な知識でムキになるから無駄なやり取りが続くんだよ
924 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 15:17:06.36 ID:ilb8jjlp.net] >>908 > VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している ホントかなぁ。 ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど? これを防ぐには、ベクターやリスト自体はもちろん、各要素や生ポインタを含めて あらゆる変数に参照カウンタを設けた上で、参照数が0になったタイミングでオブ ジェクト自動破棄する必要があるが、まさにオーバーヘッド。
925 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 18:59:43.72 ID:RDBERkGC.net] rustって、unsafe使っていても メモリ安全のチェックはしてくれるって事であってる?
926 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 19:11:22.90 ID:vi3Hd2oR.net] >>911 そんなことはない。 ttps://doc.rust-jp.rs/book-ja/ch19-01-unsafe-rust.html
927 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 19:18:31.93 ID:UrWVuubJ.net] rustって、制限きついなら制限緩い他の言語に変換しやすいとかある?
928 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:04:42.98 ID:0mSmJ0PC.net] 標準ライブラリに問題がないって言い切れるの? コンパイラとか標準ライブラリを盲信できるほど完成度高いんですかね 盲信してると不具合の発見に支障が出そう
929 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:07:34.39 ID:Aq9lII9f.net] 嫌なら使わなければいいだけやろ
930 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:19:31.81 ID:VNZL7sLo.net] >>910 そんなRustの初歩くらいは学んでからレスしようぜw
931 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:23:28.80 ID:y2zkcNcq.net] >>914 プログラムがバグった時にまず自分のコードを疑うべきと言える程度には信頼できると思うよ
932 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:28:34.57 ID:88Lrr0N7.net] >>916 オーバーヘッドなのは否定できてなくて草
933 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:41:28.56 ID:y2zkcNcq.net] >>910 > ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ > に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど? 以下のようなコードを意図してるんだと思うけど rust だとコンパイルエラーになるよ let v = vec![Box::new(1), Box::new(2)]; let ptr = &v[1]; drop(v); println!("{ptr}"); https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=f4b4be3e93f71ec0828c6039dd156cb7
934 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:48:51.57 ID:ZmDtAG5s.net] >>914 今までにコンパイラやライブラリのバグ見つけたことある? 自分が作り込んだバグとどっちが多かった?
935 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:00:31.84 ID:V8HUi7lD.net] 殆どの言語が標準ライブラリはバグってたりセキュリティの穴見つかったりして更新し続けてるがな。
936 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:11:15.35 ID:y9KalPQq.net] メモリ安全性に関していえば Rustなら不具合の可能性があるのはコンパイラとライブラリのunsafe領域だけだけど (しかもそれらはそこそこの人数でチェックされている) C/C++の場合ありとあらゆる箇所で可能性があるからな 盲信とかでなく単純に引く確率が低い
937 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:11:46.66 ID:yn3hKO4L.net] libcにもバグあるしそれどころか カーネルもヤバい問題発覚することがある もうパソコンを窓から投げ捨てよう
938 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:41:12.90 ID:dNgOu4No.net] >>921 だからそれお前が見つけたのか?
939 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 22:18:49.72 ID:yJV2c6am.net] 初心者ほど「コンパイラのバグ」などと言い出す ダニング=クルーガー効果である
940 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 23:05:18.52 ID:jLJ2cB6c.net] >>910 あまりにも無知なその知識でRustを叩くのは無理がある そういうケースも含めて検出してくれるのがRust だからRustはC++よりも圧倒的に優れている
941 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 06:13:13.50 ID:l+kYPJyP.net] そろそろ飽きろよこの流れ
942 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 09:01:35.21 ID:rwKxODkm.net] >>926 Rustはunsafe内のメモリ関連のバグまでは検出しないけど? 例えRustには無知だとしてもunsafeという語感からだけでunsafe内では何も保証されないってことは推測できるよね?
943 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 09:22:45.52 ID:i/q849BZ.net] >>928 もちろんそう それ以外の部分をRustは保証してくれるから大手IT企業を初めとして皆が採用している 全てがunsafeなC++を捨てつつある、
944 名前:デフォルトの名無しさん [2022/04/05(火) 11:55:20.23 ID:Md/fZtCu.net] 2038年問題を再発させるコードが多数の場所にコピーされてしまっている ttps://gigazine.net/news/20220330-2038-problem/ > エイドリアンさんが調べた限りでは、下記のリポジトリにて問題のあるコードが使用されていたとのことです。 > > O3DE > Dokany > Ceph-Dokan > libarchive > ghc::filesystem > ImageMagick > Cxbx-Reloaded > ReactOS > > また、下記のリポジトリについては記事作成時点で既にエイドリアンさんの指摘を受けてコード修正済みとなっていました。 > > OpenRCT2 > DuckStation
945 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 03:36:26.34 ID:A9app5rs.net] >>919 それ、子スレッドで実行する関数に引数として渡して、スレッド終了を待たずに 親スレッド側で解放するとかしたら、コンパイルエラーにならないと思うけど?
946 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 03:42:32.00 ID:ryRy0Ktk.net] >>931 そんなことは不可能だろう まずは基本的知識を学べや
947 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 04:46:14.51 ID:MueoLJZZ.net] エスパーさせんな、コードで示せ
948 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 09:00:45.09 ID:Z4fh8uHR.net] >>931 見事な恥の上塗りでワロタ
949 名前:デフォルトの名無しさん [2022/04/06(水) 09:22:57.25 ID:A9app5rs.net] >>932 何が不可能なの? 参照渡しされた場合、スレッド関数側ではメインスレッド側で 解放される変数の寿命が判らないから、参照カウントで実行時にはオブジェクト 寿命を管理できても、少なくともコンパイル時のエラーにはならないと思うが? >>933 Rustやってないし、やる気もない。 ちなみに、919みたいなケースは実際にはそもそも書かないが、コンパイラ依存だけど 戻り値としてローカル変数への参照を返すとかは、最近のC++だと警告が出る。 可変引数のprintf()等でも、昔は書式制御文字列と引数の数や型が一致していなく てもノーチェックだったけど、最近は警告が出るし。
950 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 09:29:13.74 ID:OcEMaDN/.net] >>935 妄想で思い込みをして架空の意味のない話を進めて批判している なんと愚かなことだろう
951 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 10:57:59.47 ID:X0SajXCN.net] >>931 エラーになるよ use std::{thread, time::Duration}; fn main() { let v = vec![Box::new(1), Box::new(2)]; thread::spawn(|| { thread::sleep(Duration::from_secs(100000)); let ptr = &v[1]; println!("{ptr}"); }); drop(v); } https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6ffcf2e259e138e27d653db6fdd4fc98
952 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 11:01:15.13 ID:BAnc7YwE.net] >>935 C++相当のコードか擬似コードでもいいからお前が言う操作のコードを出せ スレッド間操作か参照の使い方周りでC++でもぶっ壊れるやつな Rust使いの誰かがコンパイルの通しようがないって教えてくれるだろうよ
953 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 11:41:09.81 ID:A9app5rs.net] >>397 それ、同じmain()スコープの中で宣言しているローカル関数だからでは? 普通、そんな書き方せんでしょ。 thread::spawnで起動している、無名関数を、引数ありの独立した関数として 定義して、参照渡しとしてスレッド実行した場合、コンパイル時の静的解析 ではエラー検出できない。
954 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 11:55:40.05 ID:KqMgG2U/.net] 流石にこのレベルの人を叩いて悦に入るのはやめようぜ
955 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 12:00:23.11 ID:a0CdlgS1.net] >>939 意味不明だな 実際にそういうコードをわかるように書いてくれ
956 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 15:45:42.18 ID:MueoLJZZ.net] thread::spawnには引数無しのクロージャしか渡せません pthread_createとかで明示的にvoid *を渡すのに相当する処理は、Rustだとこの引数無しクロージャにキャプチャさせる方法で実現されます で、それをやってるのが>>937 です
957 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 16:11:31.38 ID:Dn8F6G2j.net] >>924 VCいじってりゃ嫌でもforループ前の初期化バグにぶち当たるわ。 最適化オプション下げるとか、for内でやるのをやめるとかいろいろ修正方法はあるが。 むしろいままでコンパイラバグに当たらない方が不思議。 お前仕事してんのかって疑われるレベル。
958 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 16:23:15.68 ID:2Jp54xD1.net] forループ前の初期化バグってどんなの?
959 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 17:07:47.57 ID:X0SajXCN.net] >>931 こういうこと?これもエラーになる。 use std::{thread, time::Duration}; fn main() { let v = vec![Box::new(1), Box::new(2)]; thread::spawn(|| sub(&v[1])); drop(v); } fn sub(ptr: &i32) { thread::sleep(Duration::from_secs(100000)); println!("{ptr}"); } https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d90b955b8539696c776b1d44b0e8c5a9 ちなみにこれはコンパイルが通る https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38157f3760d2ce9dde7d9d22c74195ad これは通らない https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38157f3760d2ce9dde7d9d22c74195ad
960 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 17:09:04.34 ID:X0SajXCN.net] >>945 URL間違えた コンパイル通るやつ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=10577ae2a6cdd42a9815971f82772c3a コンパイル通らないやつ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9080880c0cab4626cd94cf4806b2e5a2
961 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 17:18:09.35 ID:vFuVta1u.net] >>943 具体的に書けよw
962 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:45:31.77 ID:A9app5rs.net] >>945 > こういうこと?これもエラーになる。 Rustの文法がよう判らんけど、おおむね合ってると思う。 ちなみに、C/C++だと大規模プログラム開発を想定して、ソース分割による分割 コンパイルや、ライブラリ化という仕組みがあるわけだが、Rustの言語仕様って そのあたりどうなん? 例えば、スレッド関数「fn sub(ptr: &i32)」が、「fn main() 」を別のファイルに (例: main.cpp, sub.cpp のように)実装してビルドするとか、スレッド関数の 「fn sub(ptr: &i32)」だけをライブラリ(dllまたはlib)化するとかできるの? そもそも、Rust でライブラリを書いたり、Rust で書いたプログラムって、他の 言語で書かれたライブラリ(OpenCVとか)とリンクできるのか?
963 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:47:00.11 ID:4TDuv4YW.net] pythonのライブラリとかgithubにいくらでもあるけど?
964 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:52:54.88 ID:X0SajXCN.net] >>948 モジュール分割は普通に備えてる というかC/C++のモジュール分割は貧弱な方で、大半の言語はまともな仕組み備えてるよ Rustでライブラリ作ってCから呼び出したり、CのライブラリをRustから呼び出すこともランタイムとかめんどくさいこと考えずに普通にできる
965 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 22:27:56.00 ID:MiVqlX0M.net] Rustのモジュール分割はC/C++の分割コンパイルとはちょっと違う気がする C/C++だとソースファイルごとにコンパイルしてオブジェクト(.o)作ってからリンカでまとめるけど Rustは最初にcrate内のソースを1つにまとめてから一気にコンパイルする感じ (見えない部分で分割してるっぽいけどソースファイル単位じゃないしプログラマは意識しない) C/C++の.dllとか.libに対応するのはRustだとcrateになるからsubだけライブラリ化するなら ファイルを分けるというよりプロジェクト(crate)を分ける感じになるかな C/C++の.oに相当する中間ファイルはRustだと存在しないはず
966 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 06:01:34.50 ID:yfLrBpxG.net] いやgolangよりCとの相互利用はマシだけど、褒められるほどRustにCとの互換性はないよ。Dとかのほうがまだまし
967 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 07:14:19.71 ID:Ug2bY/ov.net] RustとC++の相互呼び出しはCXXで完璧や
968 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 07:28:15.01 ID:G2jE/Lgc.net] ぶっちゃけモジュール分割がなんでよしとされてるのかがわからない 過大評価やろ parseにオーバーヘッドあると言われているけどC/C++のような分割コンパイルの方が並列化できるしええやん
969 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 09:21:09.02 ID:0q4aQzv/.net] C++にはモジュール導入したいという 話はずっと前からなかったっけ
970 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 09:32:06.83 ID:jLJRe/XC.net] 分割コンパイルはgenericsとかtemplateと相性が悪いんだよね(C++の悩みの種になってるはず) Cの時代のマシンパワーだと最適解だったと思うけど Rustの // main.rs mod foo { pub fn f() {} } と // main.rs mod foo; // foo.rs pub fn f() {} を等価とみなせる言語設計は分かりやすくて余計な悩みが少ない
971 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:15:13.87 ID:Fr57TkZu.net] >>951 ちょっと調べてみたが、RustってFlutterと同様、結局のところ単なるコンパイラ コンパイラ(Rust→C++, Dart→C++)じゃんよ。 だから、どちらもターゲットプラットフォーム用のC++コンパイラ(Windowsなら Visual Studio(Build Tools)または MinGW、macOSならXcode)が要る。 > C/C++の.oに相当する中間ファイルはRustだと存在しないはず 隠蔽されているだけで、vclやgccが動いてリンカーに渡す段階で、オブジェクト ファイル(.oや.obj)が生成されている。 スタティックライブラリ(.aや.lib)は、 単なるオブジェクトファイルの寄せ集めなので、他のOSS含めてリンクできる。 オブジェクトファイル自体に対応していなけりゃスタティックライブラリをリンク できないし、ELFフォーマットのデバッガも使えないし、malloc()等のランタイム との内部整合性も取れないからな。 自転車に乗れない(C++で安全なプログラムが書けない)プログラマ向けの補助輪 みたいなもんか?
972 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:27:13.60 ID:lezm9YBI.net] >>957 前半は何言ってるのかわからんが codegen unitごと.oファイルが生成されるのはその通り codegen unitはソースレベルのmoduleごとに2つずつ作られcodegen単位で並列化される
973 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:32:34.52 ID:HPvPKplB.net] >>957 デタラメすぎる RustコンパイラはCコードやC++コードを生成しません あなたの書いていることは全て間違っています
974 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:44:03.67 ID:jLJRe/XC.net] >>957 main.cに対応するmain.oが存在しないという意味で書いたつもりだった 混乱させたみたいですまない
975 名前:デフォルトの名無しさん [2022/04/07(木) 12:45:05.63 ID:pUyNlzjX.net] >>957 補助輪、というより電動機かな 同じ自転車だけど、少ない力でこげる 結果的に同じ体力でより遠くへ行ける
976 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 13:35:54.27 ID:tEZE72Zs.net] Rustやる気ないとか言う割にはずいぶんと熱心じゃん The Bookあたりから読み始めてみては?
977 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 13:49:05.41 ID:Fr57TkZu.net] >>959 > RustコンパイラはCコードやC++コードを生成しません だったら、Visual Studio (Build Tools)や、Min-GW、Xcode等がインストール されていない環境で、Rustだけをインストールしてバイナリ生成してみな。 下請けにプラットフォーム固有のC++コンパイラを使っているから、ターゲット プラットフォーム毎に、オフラインインストーラ―が存在するんだよ。 ttps://forge.rust-lang.org/infra/other-installation-methods.html
978 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 14:01:29.41 ID:tEZE72Zs.net] >>963 それはできない ただしその理由はコンパイラを下請けとして利用しているからじゃなくて、リンカを下請けとして利用しているからだよ > Why might one not want to install using those instructions? > * Offline installation. ... 斜め読みしすぎじゃないですかね? オフラインインストーラがあるなんてどこに書いてある?
979 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 14:32:47.76 ID:0q4aQzv/.net] 空想上のRustに似た言語叩きする人多いな
980 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 14:49:00.36 ID:DqPGONrT.net] LLVMを知らないんだろ もう引退するお年頃
981 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:03:24.56 ID:cqCq8D8c.net] 5chに常駐してるようなC++民はビックリするほど見識が狭いよな ある意味コボラーと同じ人種
982 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:09:08.48 ID:Fr57TkZu.net] > オフラインインストーラがあるなんてどこに書いてある? 折角リンクを貼ってやったのに英語読めないの? 「Standalone installers」って とこ。 > The official Rust standalone installers contain a single release of Rust, > and are suitable for offline installation. その下にリンク集の表があるでしょ。 以下、直リンク抜粋 Windows+GCC(32-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-i686-pc-windows-gnu.msi Windows+MSVC(32-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-i686-pc-windows-msvc.msi Windows+GCC(64-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-x86_64-pc-windows-gnu.msi Windows+MSVC(64-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-x86_64-pc-windows-msvc.msi
983 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:34:45.27 ID:wO4kVij8.net] >>968 それは単にプラットフォーム毎にビルド済みのRustコンパイラと標準ライブラリが違うだけ いずれにしてもC++に変換してC++コンパイラを使ってるなんて事実はない
984 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:35:55.43 ID:tEZE72Zs.net] >>968 ああそこはこちらの勘違いでしたね すみません
985 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:55:01.85 ID:gcjUoiEr.net] ちんちんシュッ!シュッ!シュッ!
986 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 18:28:45.48 ID:6J24GmAj.net] >>954 クソデカヘッダファイルのパースコストは馬鹿にならないよ コンパイラはプリコンパイル済みヘッダファイルを用意したり、涙ぐましい努力をしている >>957 rustが必要としてるのはVS Build Toolのリンカやランタイムで、コンパイル自身はrustcというかLLVMがやっている vclは動かないよ
987 名前:デフォルトの名無しさん [2022/04/07(木) 22:11:21.15 ID:cJXUldxb.net] Rustの集大成と言えるFirefoxが世界で一番固まるブラウザとして名高いのだから、ユーザーに嫌がらせしたいプログラマはRustを使うべき。 タブレットモードで使ってると毎日一回は操作不能になるからね。 電源ボタン長押しして強制リセットするしかなくなる。
988 名前:デフォルトの名無しさん [2022/04/07(木) 23:12:28.96 ID:6mRJTF59.net] >>963 コンパイラとリンカを一緒くたにされてもなぁ。 それ言ったらc/c++も結局アセンブラ必要じゃん。 c/c++なんてアセンブリ言語使えない奴向けの補助輪じゃん。
989 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 23:26:31.11 ID:YR3mJewM.net] そいやRUSTってオプションでアセンブラ出力させたり出来るの?
990 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 23:27:28.73 ID:YR3mJewM.net] >>973 まだservoとかだけでしょ?
991 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 00:19:49.85 ID:PcnkB3on.net] >>973 アプリケーションのせいで電源強制断を要求されるのはOSが悪いのでは... というのはさておきfirefoxの悪い部分がrustに依るものってのはどうやって調べたの?
992 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 01:42:20.81 ID:uV0lTSE5.net] それにマジレスするか
993 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 06:18:52.60 ID:8k2J9S8r.net] >>973 もしそれが本当ならばWindowsでの問題でしょう LinuxでFirefoxを使っているけど一度も固まったことがない
994 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 07:35:26.61 ID:UBiXicJa.net] 俺はwindowsでEdge使ってるけど一度も固まったことないな
995 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 07:40:49.60 ID:OhTsNUjo.net] Rustを叩くために>>973 が適当なホラを吹いてるのだろう 毎日固まるブラウザなんてあるわけないし 頻出するバグがあったらすぐに修整される
996 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 07:57:10.73 ID:phXvIdWB.net] そもそも>>725 が書いてるけどrustはまだ全体の1割位しか使ってないのにrustの集大成とかアホ晒しすぎw
997 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 08:00:48.24 ID:Z05AA1u1.net] firefoxは固まるもの。 固まったところで誰も気にしない
998 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 08:02:17.06 ID:cn2WsGzN.net] >>983 どんな環境で使っている? 一度も固まったことない
999 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:36:43.82 ID:gFm4wviN.net] >>982 登場して10年で1割ですか。100年後もfirefoxが動いてるといいですね。
1000 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:59:58.15 ID:Fa4rer7L.net] 既に昔からある動いているモジュールを書き換える無駄なことはしないからそんなもんじゃね? そもそもRust自体も他の言語と同様にlibc含めて鉄板のC製ライブラリ使いまくるしな どの言語でもそのへんは同じだろ
1001 名前:デフォルトの名無しさん [2022/04/08(金) 14:54:35.66 ID:aIPGNTn3.net] firefox は固まるっていうかメモリリークだな rust のコードが unsafe だらけになっているのかは知らんが タブを閉じても使い終わったメモリを開放しない ひたすら使用メモリが増え続けswapがいっぱいになって固まる
1002 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 14:59:41.50 ID:LPi7J7jk.net] >>987 両方を使ってみればわかるが メモリをバカ食いするのはChromeの方
1003 名前:デフォルトの名無しさん [2022/04/08(金) 15:37:14.24 ID:aIPGNTn3.net] >>988 自分は firefox で swap に悩まされてて その後 chromium 系の vivaldi とか brave にして一気に快適になった メモリ4Gのマシンに linux 64bit を入れてた時の話だけど
1004 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:13:47 ID:i2DHgPAx.net] firefoxのせいで、スレまでの流れまで止まったな
1005 名前:デフォルトの名無しさん mailto:sage [2022/0
] [ここ壊れてます]
1006 名前:4/15(金) 14:27:51.53 ID:sD2CwuNi.net mailto: >>957 なるほど 最初のころのC++といっしょで 単なるトランスレーターなんかrustって [] [ここ壊れてます]
1007 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 14:38:25.40 ID:sD2CwuNi.net] >>987 通信障害起こしてるのをfirefoxのせいにされてもなww firefox使ってる最中に固まったことあったよ 使ってる最中にSSDが死んでアクセス不能になったのが原因だった
1008 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:14:39.30 ID:k/yGxJzN.net] >>991 ちがうよ rustでのビルド必要なのはターゲットプラットフォーム用のリンカであってC++コンパイラは不要 RustはLLVM使ってるからLLVM bitcodeへのコンパイラとは言えるかも知れないけどC++は一切関与しないよ
1009 名前:デフォルトの名無しさん [2022/04/15(金) 17:33:35.75 ID:k+WJVc0v.net] >>991 バカそうなやつ
1010 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:07:09.22 ID:sD2CwuNi.net] リリースされて10年経過する言語に思いを寄せてるのは馬鹿の骨頂だろwww お前といっしょでもう終わってんだよハナタレ せめてIARあたりがリリースしてたんなら話は別だがな どこぞのチップメーカでrustコンパイラ出してるとこあったけ? チップメーカが見向きもしない言語それがRust って認識でFA? あ、そーそ、SystemC rustで書けるか? これぐらい書けなきゃC++はreplaceできない C++をreplaceが目標じゃなかったっけ?
1011 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:14:02.55 ID:sD2CwuNi.net] 大体 Rustなんてネーミングがセンスなさすぎだろ。あほすぎて。これで洒落たつもりかよ。 これからぴかぴかの新製品投入するときにRustてwwww 機械メーカなら絶対採用したくい名前だろこんなもん
1012 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:26:31.06 ID:k/yGxJzN.net] >>995 LLVMって知ってる?
1013 名前:デフォルトの名無しさん [2022/04/15(金) 20:35:07.13 ID:k+WJVc0v.net] >>996 確かに
1014 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:37:43.23 ID:tyfulKnM.net] というか何故か言語って大概ネーミングに疑問符がつくような感じだよね
1015 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:38:50.95 ID:sD2CwuNi.net] rustてさび以外に "役に立たない" て意味もあるのな まさに、理念のみの 役 た た ず 言 語
1016 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 77日 22時間 19分 4秒
1017 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています