1 名前:デフォルトの名無しさん mailto:sage [2023/10/28(土) 13:45:00.38 ID:fh9BWjjr.net] 「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」 「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」 っていう雑談スレ。 ・C/C++ <=> Rust いまさら聞けない移行質問なども適当にどぞ ・レスバはじめんのは勝手だけど、面白いこと・へぇなこと書いたヤツが優勝 ・マな話は、マのスレもご活用ください↓ 前スレ: 結局C++とRustってどっちが良いの? 7traits mevius.5ch.net/test/read.cgi/tech/1693451813/ 関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」 https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2 名前:デフォルトの名無しさん mailto:sage [2023/10/28(土) 13:45:36.64 ID:fh9BWjjr.net] あるあるトピックス ・後発のRustは優れている(この点で特に争いはない ・といっても、C/C++から「推し変」するほどじゃない(使わないとは言ってない ・ていうか、Cとの比較と、C++との比較は違うくね? ・いくら安全っつっても、ヘタクソがunsafeだらけに書いちゃったらおんなし ・てかC++にも unsafe{ } はよ ・web方面、特に基盤部分での人気すごいね ・ChatGPTとかが賢くなる(のに賭けてる)からどうでもいい
3 名前:デフォルトの名無しさん [2023/10/28(土) 13:50:00.20 ID:1iiYkiVL.net] スレ立て乙 unsafe {
4 名前:デフォルトの名無しさん mailto:sage [2023/10/28(土) 14:37:18.81 ID:o0Izqpe5.net] 次スレいらんわボケ
5 名前:デフォルトの名無しさん mailto:sage [2023/10/28(土) 16:34:04.19 ID:enMMtIYH.net] ネットインフラが次々とRust製になっていってる >【CDN世界トップシェアCloudflare】 >https://www.publickey1.jp/blog/22/cloudflarenginxrusthttppingoracdncpu31.html >CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、 >同社自身がRust製のHTTPプロキシである「Pingora」を開発し利 用していることを明らかにしました。 >【クラウド世界トップシェアAWS】 >https://japan.zdnet.com/article/35183866/ >Rustで構築されたAWSサービスの例としては、 >コンテナーアプリ用のサーバーレスプラットフォーム「Lamba」を支える「Firecracker」、 >「Amazon Simple Storage Service(S3)」、 >「Amazon Elastic Compute Cloud(EC2)」、 >コンテンツ配信ネットワーク「Amazon CloudFront」、 >LinuxベースのコンテナーOS「Bottlerocket」などがある。
6 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 07:04:58.86 ID:/j90tPs+.net] プログラミング言語「Rust」は世界のセキュリティレベルを底上げする https://wired.jp/article/rust-secure-programming-language-memory-safe/ Androidでは今、暗号鍵を管理する機能の多くがRustで書かれているとGoogleのクライダーマーカーは話す。 たとえば、暗号化したインターネット通信の機能である「DNS over HTTPS」、新バージョンの超広帯域無線(UWB)チップスタック、 そしてグーグルの独自のチップである「Tensor G2」で使用される新しい「Android 仮想化フレームワーク(AVF)」 などだ。 また、BluetoothやWi-Fiなどの通信接続に使われるスタックも、Androidの開発チームによってRustへの変換が積極的に進められている。 理由は、これらが業界の複雑な標準規格に基づいており、脆弱性を多く含む傾向にあるからだとGoogleのクライダーマーカーは付け加える。 つまり最も狙われやすい、あるいは最も重要なソフトウェアの部分からRustに書き換えて、 そこから徐々に広げることで段階的にセキュリティ上の恩恵を受けようという戦略なのだ。
7 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 09:34:40.05 ID:7Lr6oJeR.net] >>1 ・・・で、結局どっちが良いの?
8 名前:デフォルトの名無しさん [2023/10/29(日) 11:34:03.80 ID:GrwAVmld.net] >>2 C++はデフォルトがunsafeだから、入れるならsafe{}じゃないのけ?
9 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 11:55:56.89 ID:jrKbdvhX.net] デフォルトをsafeにするって話やろw そうすると現行のライブラリはビルドできないので取り敢えず全部unsafeで囲う バージョンを重ねてunsafeの部分を減らすって戦略でしょ?
10 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 12:10:31.41 ID:rFgSsne0.net] >>8 それ意味ないのわかんない?
11 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 12:58:33.36 ID:gLyKM6Q0.net] null safetyですら無理なんだからunsafeなんて夢のまた夢
12 名前:デフォルトの名無しさん [2023/10/29(日) 13:01:53.93 ID:IsQ6p7Vf.net] positive list と nagative list の違いやろ どっちも一長一短があるってだけで どっちが一方的に優れているということではない
13 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 13:06:42.15 ID:x+5RB5aB.net] 前者が明らかに劣ってるのは自衛隊見れば明らかじゃん
14 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 14:22:40.43 ID:IsQ6p7Vf.net] 青山繁晴ファンですね判ります
15 名前:デフォルトの名無しさん [2023/10/29(日) 14:24:26.17 ID:IsQ6p7Vf.net] ちなみに Rust の unsafe {} は positive list に相当すると思う
16 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 16:22:18.96 ID:UpWU1GX+.net] 時代は静的検出なので、冒頭に #pragma safe とかでも書くとかになるんじゃないかな そのうしろに、縛りの識別子が入るのでもいい
17 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 16:22:22.63 ID:B2pW3CpU.net] unsafe {}ってなに? ポインタ扱えなくするやつ?
18 名前:デフォルトの名無しさん mailto:sage [2023/10/29(日) 18:07:40.10 ID:UpWU1GX+.net] } // あとでみなおす とりあえず生ポはなしかな ポインタはきちんと定義される
19 名前:デフォルトの名無しさん [2023/10/30(月) 01:11:12.37 ID:SHIqNVOV.net] >>9 あー、そういうことね。
20 名前:デフォルトの名無しさん mailto:sage [2023/10/30(月) 14:08:13.49 ID:yf48i6Jz.net] 前スレ >>997 HashMapはとVecは異なる型なので直接代入できない 一般的に入力イテレータinput_iterからHashMapを作るには HashMap::from_iter(input_iter)とすればよい これは代入先の型がHashMapの時のinput_iter.collect()と同じ collect()の正体はfrom_iter()を呼ぶだけ ちなみにfrom_iter()はFromIteratorトレイトのメソッド 引数としてIteratorだけでなくIntoIteratorも取れるため 今回の入力ベクタinput_vecに対してinto_iter()せずとも そのままHashMap::from_iter(input_vec)と書ける 一方でcollect()を使う場合これはIteratorのメソッドなので 明示的に変換してinput_vec.into_iter().collect()となる
21 名前:デフォルトの名無しさん [2023/10/31(火) 05:55:29.82 ID:DJT4usEp.net] ゲーム業界はC++かC# Rustが入る余地なし
22 名前:デフォルトの名無しさん [2023/10/31(火) 08:54:10.63 ID:5Lja4y81.net] Rust がリファクタリングと相性が悪いんじゃないか と思うことが時々というより割と頻繁にある
23 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 10:17:54.25 ID:Fz0aDVxr.net] 設計が悪いおじさん「設計が悪い」 …とはいうものの、書き味ってもんがあるよね言語って
24 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 20:53:25.14 ID:1IgY5W3A.net] 難しそうという直感でリファクタリングを中止できるのは損なのか得なのか
25 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 22:01:39.08 ID:PwivvYFW.net] Rustはリファクタリングや更新メンテとの相性いいと思う C/C++で他人もしくは過去の自分が書いたコードの肝の部分をうっかり踏み抜いてメモリデバッグコースとなるところを Rustは未然に防いでくれてる
26 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 22:13:21.13 ID:3AsVVcfX.net] リファクタリングでエンバグしにくいけど、そもそもリファクタリング自体しにくいよね
27 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 22:25:05.59 ID:NeIS8/9C.net] https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2687r0.pdf C++はfeature gate方式でアノテーションした箇所のみ static analyzerでチェックする方針で一応進み始めてるのね なんというか過去の資産を生かすというのは大変なんだな Rustと同レベルのsafetyが提供できるようになるかどうかまだわからないけどまあ頑張ってという感想
28 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 03:51:28.75 ID:5z6NYMjm.net] 悪い(かも知れない)設計を 良い(かも知れない)設計に するのがリファクタリングのモチベだと思うので 元の設計が悪い(かも知れない)のは仕方ないが 良い(かも知れない)設計に変更するのを阻む力をRustはもってる もちろんリファクタリングでエンバグしない利点は認めている
29 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 03:53:16.74 ID:5z6NYMjm.net] 更新メンテでエンバグしないと言っても 汚いコードが汚いまま増設されていく不安しかない
30 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 05:10:40.48 ID:fNUPqUoJ.net] リファクタリングなんてもんは無能な働き者がすることよ
31 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 08:38:55.26 ID:TrWFH7YA.net] 以上、無能な働き者の感想でした
32 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 08:49:48.50 ID:VeDR0B8A.net] 耳が痛いわ〜w (横から >>27 走り読み…と思ったら、かっちりしたまとめだった 型に含めることばっかり(自分なりに)考えてたが、属性かー。 ああそういや、VCの属性プロバイダ、API公開まだだったよな
33 名前:デフォルトの名無しさん [2023/11/01(水) 09:15:51.82 ID:QJoNTbA8.net] borrow! またお前かっ!! ですね 判ります あとは C# みたいな PartialTrait があれば良いのに
34 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 09:29:13.02 ID:g0uNXVFl.net] >>28 他の言語との比較も含めて具体的な例を上げてくれないと 何が困ってるのかよくわからん
35 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 11:28:14.65 ID:r0MV67Oa.net] >ゼークトの組織論において、もっとも害のある存在とされるのが、無能な働き者(愚鈍:勤勉)タイプの人材です。正しい判断力や行動力が備わっていないにもかかわらず、自身の判断で行動してしまう特徴を持っています。いわゆる「余計なことをしてくれる」タイプの人材です。 無能な働き者が動くことで間違った判断により損害が出たり、周囲が後始末に追われたりといった混乱を招きます。しかも、本人は「よかれと思って動いている」点が、大きな問題となるのです。
36 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 11:36:32.25 ID:r0MV67Oa.net] 無能な働き者は放置しておくことで、組織にとって大きな損害をもたらすリスクとなります。 努力や判断のベクトルが間違っているだけで、意欲的な人材であるかもしれません。適切に関わり軌道修正を図れば、組織に貢献してくれる人材になってくれるかもしれません。この困ったちゃんを相手にする余力が会社や関係者にあればよいのですが、そうでない場合は自己都合退職へ誘導し、早めに組織から追い出しましょう。
37 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 12:40:12.80 ID:8C4ZzEMt.net] 軍人を4つのタイプに分類する「ゼークトの組織論」と呼ばれる軍事ジョークがあり[注釈 2]、ゼークトが以下のように語ったとされる。 ---------8<----------8=------ これは実際には同時期のドイツ軍人であったクルト・フォン・ハンマーシュタイン=エクヴォルトが副官に述べたとされるもの[31]が元になっている。
38 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 19:08:00.09 ID:gqkX1mpA.net] いつの間に、こんなに積極的に、異物は排除しましょうなんて世の中に深化したのかねえ 世知辛い
39 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 19:59:16.09 ID:r0MV67Oa.net] >>38 >いつの間に いつと問われれば人が集落として生活するようになるぐらい古代から…なんじゃね 村八分とか神隠しとかぐらいは聞いたことあると思うけど 司法がない時代は私刑が日常的に行われていたんだよ 今は法律もあるしネットで大騒ぎすれば助けてくれる奴も出てくるだろうけど 属していた会社なり組織からは切り離される形に落ち着くだろうね
40 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 20:11:22.67 ID:mATsi7Ug.net] Rustはリファクタリングでのエンバグ防止も強力で開発効率良いな
41 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 22:31:20.11 ID:H181/maX.net] >>38 嫌なら見るな 嫌なら出ていけ
42 名前:デフォルトの名無しさん mailto:sage [2023/11/01(水) 23:11:21.03 ID:FbXsZBSZ.net] 競技プログラミングでは何でみんなc++なのですか
43 名前:デフォルトの名無しさん [2023/11/02(木) 02:07:29.05 ID:uLntp6kp.net] >>42 Rust使ったことないだろ
44 名前:デフォルトの名無しさん [2023/11/02(木) 09:27:36.71 ID:kxWwWLf8.net] >>36 東近江市市長ですね判ります
45 名前:デフォルトの名無しさん [2023/11/02(木) 09:30:06.68 ID:kxWwWLf8.net] >>39 私刑の大半は「自分が気に入らない相手を消す」だろ
46 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 10:28:31.37 ID:e3rN7I7Z.net] ゼロサムゲームなんだよねえ あいつがいると、こっちの幸せの取り分が減る
47 名前:デフォルトの名無しさん [2023/11/02(木) 11:00:23.03 ID:NLwKfBpd.net] C++のchrono Sun=0, Mon=1, ..., Sat=6 Rustのchrono Mon=0, Tue=1, ..., Sun=0 なんかの嫌がらせか?これ
48 名前:デフォルトの名無しさん [2023/11/02(木) 11:01:31.85 ID:NLwKfBpd.net] 訂正 C++のchrono Sun=0, Mon=1, ..., Sat=6 Rustのchrono Mon=0, Tue=1, ..., Sun=6 なんかの嫌がらせか?これ
49 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 11:38:23.20 ID:SgY2tw2G.net] >>48 enumで処理するもんじゃないの?
50 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 12:27:57.80 ID:e3rN7I7Z.net] いっしょは嫌だったんじゃない? (はなほじ
51 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 13:14:01.78 ID:sR7LRQS1.net] >>49 0と7が日曜だと便利なんだよ なんで変えちゃったのかね
52 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 14:01:21.75 ID:26D/b4Fo.net] おまえら全員エアプログラマーだな Rustのchronoは両対応で困ることはない num_days_from_sunday()だと日曜日から0発進 num_days_from_monday()だと月曜日から0発進
53 名前:デフォルトの名無しさん [2023/11/02(木) 14:21:03.74 ID:R1/lC5p9.net] ISO8601では月曜は1で日曜は7なんだよな。
54 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 14:43:04.82 ID:26D/b4Fo.net] >>53 Rustのchronoが日曜スタートと月曜スタートの両対応にしている理由がそれ C++のchronoでISOに変換するには日曜日だけif文するか再び%7する必要がある
55 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 15:51:19.67 ID:C/SY5g2v.net] たぶん何も考えてない+誰も使わないから放置されているだけだね Mon=0固定の前提でTryFrom<u8>なんか実装してるし
56 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 16:27:45.50 ID:26D/b4Fo.net] そこは言語によって異なるんだよ Pythonは月曜スタート weekday() 月曜日=0 ~ 日曜日=6 isoweekday() 月曜日=1 ~ 日曜日=7 Javaも月曜スタート DayOfWeek 月曜日=1 ~ 日曜日=7 だから両対応しているRustが最も良い状況
57 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 20:37:31.47 ID:YFXMye4z.net] 曜日の内部表現とかどうでもいいだろ…
58 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 21:59:20.29 ID:SgY2tw2G.net] HTTPでJSONやりとりしてるとき思い込みで バグになるというのはあるかも
59 名前:デフォルトの名無しさん mailto:sage [2023/11/02(木) 23:52:30.67 ID:M3hXBmrb.net] 今回のchronoでイチャモン始めたやつも 日曜日開始のC++しか知らなくてそれが正しいと思い込みをしてたからな 月曜日開始のISO8601とそれに従うプログラミング言語を一つでも知っていればそんな勘違いは起きなかった
60 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 00:21:59.00 ID:g+drsbNI.net] と、C言語のtm構造体から続くC/C++/UNIX系全般の伝統を知らなかった人が申しております
61 名前:デフォルトの名無しさん [2023/11/03(金) 00:34:37.66 ID:OMWtAqQI.net] 恥ずかしいのぉ ああ恥ずかしい
62 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 00:58:32.47 ID:/+LsOzGq.net] >>60 それも常識だな そしてISOおよびそれに準じるJavaやPythonも常識 両派あることを知っていれば両対応のRustを批判しだすような愚かな言動はしない
63 名前:デフォルトの名無しさん [2023/11/03(金) 03:57:01.11 ID:QmAmywB5.net] >>62 コウモリ野郎が一番嫌われるんだよ おまえは獣なのか鳥なのか
64 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 06:56:19.57 ID:N2L5n51t.net] 伝統的には日曜始まり、商用的には月曜始まり、ということだろ。 そもそも現代主流のグレゴリオ暦自体が欠陥だらけ (素数の7を週単位にしている、月の日数がバラバラ) だから、効率を気にしてもしょうがない。 完全数の6と3素数積の30を基準にすれば全然違ったのにな。
65 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 08:41:35.38 ID:znXtgxSS.net] >>59 おまい望月衣望子そっくりな人間だな
66 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 08:41:37.96 ID:hQugpIJj.net] >>64 だからその日曜始まり日曜終わり両方に対応できる日曜0,7が有能だった話よ
67 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 10:30:38.41 ID:FAT4ZC6j.net] C++もc_encodingとiso_encodingで両方対応はしてる 簡単に変換できるから正直どうでもいいけど https://en.cppreference.com/w/cpp/chrono/weekday/encoding このドキュメントはReturn valueの2) の内容が間違ってる レビュープロセスが心配になるな
68 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 11:42:31.25 ID:7w5cnhLp.net] >>58 シリアライズ時と異なるエンコーディングで復元しようとしたらそりゃバグるわな でもそんなやつらのために内部表現を統一しろと言われても誰も相手にしないでしょ
69 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 12:30:23.11 ID:xNBDqk0z.net] >>56 JavaはWeekFields経由で日曜始まりにもできる Pythonは日曜始まりのインデックスを直接取得することはできないがcalenderモジュールで日曜始まりのカレンダーを扱える どちらもRustほど低レイヤーやC++を意識する必要がないからRust比べて少し高いレイヤーで日曜始まりにも対応している Rustの開発者にとって最もいい状況が他の言語の開発者にとっても最もいい状況とは限らない
70 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 13:42:53.76 ID:IVkiUA9g.net] === 複製おじさん(通称複おじ)について === Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。 Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。 同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。 それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。 その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。 しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。 本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。 https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている) 要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。 常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。 ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。 このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
71 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 13:43:15.14 ID:IVkiUA9g.net] テンプレ忘れてるぞ
72 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 15:43:05.53 ID:+wuvOqHg.net] ゲームプログラミングに向かない時点でRustに勝ち目は無い
73 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 16:17:15.97 ID:TISIAi2y.net] ゲームとかどうでもいい
74 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 16:35:04.29 ID:hQugpIJj.net] プログラミング言語は とにかくユーザ数が増えて裾野が広がらないとだめよ とはいっても、Rustはその性格上 エンジン系にはとても強いと思う
75 名前:デフォルトの名無しさん [2023/11/03(金) 20:01:25.17 ID:oS0jLPzO.net] なんでゲームに向いてないの?
76 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:18:57.74 ID:L6NiYGzz.net] ビルド時間が長いとか主要なゲームエンジンが対応してないとかかな?
77 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:23:49.80 ID:m1BMAQzf.net] >>74 ゲームエンジンこそどうでもいい どうせ他人の成果物使うだけやし つまりRustはゲームプログラミングに向いてない
78 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:27:09.44 ID:DDLGlAPd.net] >>75 オブジェクト指向じゃないから大規模開発に向いてない
79 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:27:51.26 ID:DDLGlAPd.net] ゲームはプログラムの積み上げ方式 Rustなんか使い物にならん
80 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:48:01.15 ID:L6NiYGzz.net] え?rustってオブジェクト指向じゃないの?
81 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 20:54:38.72 ID:hQugpIJj.net] >>77 エンジンを作る側の話やで
82 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 21:23:41.57 ID:YDoJin8V.net] >>78 むしろRustは大規模開発にも適するように設計された言語 今どきの普通にマルチパラダイムで当然オブジェクト指向もサポート
83 名前:デフォルトの名無しさん [2023/11/03(金) 22:56:37.98 ID:oS0jLPzO.net] これすごいわ https://www.youtube.com/watch?v=62ZcxDGawd4 Rust もびっくり
84 名前:デフォルトの名無しさん [2023/11/03(金) 22:58:02.02 ID:oS0jLPzO.net] >>75 >>79 グローバル変数が超絶面倒臭いからじゃね
85 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 23:50:14.81 ID:DpBIrO9u.net] オブジェクト指向を理解してない無能が多すぎる
86 名前:デフォルトの名無しさん mailto:sage [2023/11/03(金) 23:54:28.74 ID:caMFRrqc.net] オブジェクト指向なんてもはや有害じゃねという 話も出てるようだけど
87 名前:デフォルトの名無しさん [2023/11/04(土) 00:10:04.03 ID:vTgEadDD.net] 既存のオブジェクト指向言語の置き換えを狙ってるなら 既存のオブジェクト指向言語の機能は備えんとなぁ 設計からやり直す必要が生じてまんどくさってなる スクラッチから新たに書くのなら支障ないだろうけども それではいつまで経ってもマイナー言語だよ この先生きのこれん
88 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 00:22:53.36 ID:p6vbmy4R.net] みんな反発しても結局オブジェクト指向に帰ってくる みんなC++に帰ってくる
89 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 00:23:19.27 ID:EeyeeoXm.net] 最近のプログラミング言語は基本的にオブジェクト指向だがクラス継承だけは亡くなったらしい 最近のプログラミング言語 【クラス継承がない】Elixir、Go、Julia、Nim、Rust、Zig 【クラス継承がある】Kotlin(=Javaの後継)、Swift(=Objective-Cの後継) つまり過去のしがらみでクラス継承を含めざるを得なかったKotlinとSwiftを除いて 全ての言語でクラス継承は亡くなった
90 名前:デフォルトの名無しさん [2023/11/04(土) 00:27:29.67 ID:vTgEadDD.net] おかげでみんなマイナー言語のままじゃんw
91 名前:デフォルトの名無しさん [2023/11/04(土) 00:28:23.25 ID:vTgEadDD.net] 人間は保守的なんだから 互換性を軽視したらユーザは絶対にぶんどれん
92 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 02:16:54.87 ID:eaDg3ztu.net] >>89 GUI開発用言語とそうでない言語にきれいに分かれてんね
93 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 03:14:34.51 ID:6Rm06W4Y.net] GUIはクラス継承要らないだろ 有害なクラス継承しかないとクラス継承を使って巨大なピラミッドを作ってしまい その反省も各新言語が揃って意図的にクラス継承を廃止した要因
94 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 03:24:41.20 ID:W1fOq5zR.net] 継承無くした結果、馬鹿なことをやらされる https://qiita.com/muumu/items/a0d111d129d20240d182
95 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 05:01:54.27 ID:qNKpZaTJ.net] それはクラスの継承というよくない古い考え方しかできない人向けの方法だな 様々に方向性も異なる方針の新プログラミング諸言語がクラスの継承だけは導入しない同じ結論に至った重みは大きい
96 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 05:58:52.07 ID:QaQpRr0T.net] IUnk教わい、なくなるといわれるとちょっとさみしい (なくなるとは言われてない
97 名前:デフォルトの名無しさん [2023/11/04(土) 06:13:35.65 ID:9ClykILV.net] 継承がない言語には大抵はmix-inという優れた代替が用意されてる 継承もmix-inもないRustは無能
98 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 07:37:08.58 ID:tOjhAD6C.net] そうゆうのがない、切り捨ててるから、Linuxカーネルに来てよろしいって言われたのかもね しらんけど やっぱり必要となりゃ、そのうち解禁(追加)になるでしょ
99 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 07:50:02.45 ID:W1fOq5zR.net] >>95 極端だな そんな考えじゃC++から移行なんて益々困難だし こんなスレ立てて対立煽りするレベルにも達してないじゃないか >この記事ではC++やJavaで継承を使っていた人がRustで同様の実装をしたいときにどうすればよいのかを説明します。 この課題については君はどうしたらいいと思ってる?
100 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 08:26:29.68 ID:tOjhAD6C.net] 第1スレはわからんけど、このスレの>>1 は俺
101 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 09:10:11.30 ID:LI9X3aVk.net] >>89 Javaの開発者も継承だけは間違いだったと言ってるみたいだね
102 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 09:32:38.86 ID:0JVEbPjc.net] 64 デフォルトの名無しさん 2023/09/26(火) 09:36 以前Javaのユーザグループミーティングに出席した際、James Gosling(Javaの生みの親)がメインの講演者として招かれていました。 すばらしいQ&Aセッションの途中に、こんな質問が出ました。 「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」 答えは「クラスを除外するでしょうね」というものでした。 笑いが静まった後、彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。 インターフェースによる継承(implementsの関係)のほうが望ましいのです。できる限り実装継承は避けたほうがよいでしょう。
103 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 09:32:49.65 ID:6irn+b/+.net] やっぱりコミットするならシープラだなとおもいました
104 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 09:56:14.27 ID:/2/myesZ.net] その論法に乗っかってやると過去の 言語のパラダイム変化はどうやって起きたのか 謎になるな
105 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 09:59:34.34 ID:eaDg3ztu.net] >>93 >GUIはクラス継承要らないだろ 要るか要らないかという話はしてないよ 1) Elixir、Go、Julia、Nim、Rust、Zig 2) Kotlin、Swift 1)の言語でGUI作れなくはないけど実際に作る開発者がかなり少ない 逆に2)の言語は大半の開発者がGUIを作ってる それには理由があるということ もっと言えばクラス継承的な機能の有無はトレードオフだからそれを理解しましょうねという話
106 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 10:34:34.64 ID:2TRtrAOp.net] 多くの高機能webサイトはGUIアプリと言って良いと思うが ts jsのクラス機能はあるけど使わないな
107 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 10:49:05.41 ID:XpaBBm0T.net] やっぱりRustが最強だなっておもいました
108 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 11:16:32.88 ID:qG8ydW8y.net] 最強はRust世代 俺のおかんはC++
109 名前:デフォルトの名無しさん [2023/11/04(土) 12:01:10.23 ID:vTgEadDD.net] >>89 思惑の違いが見事に結果に表れている分類だね 興味深い
110 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 12:09:00.72 ID:vTgEadDD.net] >>104 その「言語のパラダイム変化」って具体的にはどれを指している? Rustがユーザを獲得する際の参考になるかもしれんね
111 名前:デフォルトの名無しさん [2023/11/04(土) 12:27:39.60 ID:KPpuxUox.net] オブジェクト(classじゃなくてstructで良い)があって 正しい型指定で正しく関数が呼ばれてれば クラス継承なんて要らないんだよな 別に禁止というほど厳しくやらなくても自然とそうなる
112 名前:デフォルトの名無しさん [2023/11/04(土) 12:29:16.51 ID:KPpuxUox.net] C++ の template なんてあれオブジェクト指向じゃねーし
113 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 12:35:18.44 ID:eFHrirh7.net] >>105 KotlinとSwiftは最初からGUIアプリをターゲットにしてるしそれ以外の分野では全然使われてないような
114 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 16:44:29.40 ID:qG8ydW8y.net] いまさら人に聞けない 悪い継承ってのがわからなくなった 継承おぼえたてて(一人プロジェクトが)めちゃくちゃになった経験ならあるけど、そうじゃなくてこう
115 名前:デフォルトの名無しさん [2023/11/04(土) 17:10:03.05 ID:S8hti0fw.net] クラス継承は必要 オブジェクト指向を理解できないのはただのザコ
116 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 18:03:19.84 ID:rn/KP434.net] >>115 最近のプログラミング言語たちが揃いも揃ってクラス継承を不要と判断しちゃいましたぁ 【クラス継承がない言語】Elixir、Go、Julia、Nim、Rust、Zig
117 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 18:26:15.51 ID:EmvA1J0P.net] 言語開発者が設計した基底クラス以外の継承はいらないんじゃないかなぁ
118 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 18:26:28.96 ID:p6vbmy4R.net] rust以外上がり目なさそうな言語たちで草
119 名前:デフォルトの名無しさん [2023/11/04(土) 18:42:09.44 ID:vTgEadDD.net] Rustも同じく普及戦略を誤った言語だよ
120 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 19:41:01.77 ID:hPdVOFaj.net] Pythonスーパーセットのmojoにこのまま成長してほしいけどシープラRustの競合にはならないか
121 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 19:51:27.75 ID:Is+FXxYG.net] mojoはAI関連の高速化を狙ったものだろうから限定的な利用になりそう
122 名前:デフォルトの名無しさん [2023/11/04(土) 21:29:47.46 ID:9ClykILV.net] 結局ユーザーが欲しかったのは「ポインタのないC++」であって所有権やtraitみたいな使いづらい独自機能じゃなかったんだよなあ
123 名前:デフォルトの名無しさん mailto:sage [2023/11/04(土) 22:19:37.19 ID:+CP/CRpL.net] >>122 所有権はC++にもある traitはC++の抽象クラスからデータ(メンバー)を分離独立させ
124 名前:トより良い設計ができるようになっている 使いづらくなっていない [] [ここ壊れてます]
125 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 10:25:09.84 ID:ol9bMVcc.net] >>117 doubleがfloatを継承していないのはなぜ? f64がf32を継承していないのはなぜ?
126 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 11:09:33.12 ID:JT3Ktc4T.net] それって継承するようなもんかね
127 名前:デフォルトの名無しさん [2023/11/05(日) 11:48:56.89 ID:8w5QKIdz.net] 精度の違いであって継承関係無いな。 むしろ継承したらダメなやつ。 共通のインターフェースを用意するのが普通。
128 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 12:19:51.94 ID:pw4Q0c9f.net] パフォーマンスを度外視するなら 浮動小数点数型をfloatとdoubleの両方とも継承するのが自然かなぁ
129 名前:デフォルトの名無しさん [2023/11/05(日) 17:32:34.60 ID:vp0BWznn.net] >>127 その浮動小数点型ってどんなもの? インターフェースじゃないんだよね?
130 名前:デフォルトの名無しさん [2023/11/05(日) 19:27:50.24 ID:aeGT2yJ/.net] >>116 自分に都合の良い言語のみ列挙する まさにザコ 自分の考えが無い
131 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 19:50:12.60 ID:o9vKIGF+.net] >>129 同じくらいたくさん反例を挙げようよ
132 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 04:14:47.70 ID:m6bVjB7O.net] >>130 そんなことよりこのクソスレ立てたのもお前? https://mevius.5ch.net/test/read.cgi/tech/1693054853/
133 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 08:09:26.10 ID:Cot/SbpY.net] 募集してんのか、大胆だな!
134 名前:デフォルトの名無しさん [2023/11/06(月) 10:12:15.79 ID:48qtdwXc.net] Rustとの相性で言えば Rust+Pythonはかなり良い Rust+Cが最強 Rust+C++は最悪 Nimとの相性で言えば Nim+Pythonはとても良い Nim+Cが最強 Nim+C++も最強 Nimの勝ち
135 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 10:16:59.00 ID:UjpY0LiG.net] >>129 自分はなにも例を挙げられないの? それでよく人を批判する気になれたね
136 名前:デフォルトの名無しさん [2023/11/06(月) 14:46:38.23 ID:DT4BUOTR.net] テンプレートパターンやるにしても今は継承よりもクロージャで渡す方がわかりやすいって話やね。 まあどっちにしろ低レイヤー言語だとオブジェクトの解放タイミングとか気にしてめんどくさくはなるが。
137 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 14:50:37.11 ID:mJLQiI1M.net] Nimちゃんに行くわ RUSTとかクソゲーみたい
138 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 15:23:25.15 ID:X0T3Y72w.net] C++/Rustと比べて何もかも劣るNimは選択肢に上がることがない
139 名前:デフォルトの名無しさん [2023/11/06(月) 18:05:43.27 ID:BlmWAswu.net] >>134 そもそも流行りの話自体何の根拠にもなってないんでこの話自体無意味 無意味な話は時間の無駄
140 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 18:18:33.08 ID:mZ9CqDyY.net] C++は仕様などがugly Rustはbeauty
141 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 18:45:27.89 ID:Yw0
] [ここ壊れてます]
142 名前:Fs1sT.net mailto: >>138 お前もかなりのザコだぞ [] [ここ壊れてます]
143 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 19:58:38.94 ID:2NClhQZD.net] >>137 文法はNimの圧勝。
144 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 21:52:22.89 ID:xwaCKIbt.net] Nimの唯一のメリットがPythonに似た文法と言われているが このスレの住人はそれをメリットと感じない
145 名前:デフォルトの名無しさん [2023/11/06(月) 22:00:03.84 ID:juqSJt+O.net] 何でお前が住人を代表してるの?w
146 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 22:14:50.32 ID:BFZIHaDs.net] 複オジ代表チーっすw
147 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 23:09:22.63 ID:m6bVjB7O.net] まあ複おじ隔離スレなんだから代表は複おじでいいんじゃない?
148 名前:デフォルトの名無しさん mailto:sage [2023/11/06(月) 23:55:02.14 ID:X0T3Y72w.net] >>141 インデントではなく波括弧でブロックを表すのが好まれている多数派
149 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 07:52:40.08 ID:Z7KocuHY.net] >>146 c世代はそうだけど、pythonユーザーの方が多い現在はインデントブロックの方が主流。じゃなきゃYAMLとか流行らん。 LISPも丸括弧使ってるけどインデントブロック風の整形しているし、波括弧ブロックが多数派とは思えん。
150 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 09:16:54.55 ID:YntbMeAj.net] 詭弁 - Wikipedia https://ja.wikipedia.org/wiki/%E8%A9%AD%E5%BC%81
151 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 09:19:09.61 ID:YNljO5VY.net] >>147 どさくさに紛れてYAMLを流行り扱いすんなやww
152 名前:デフォルトの名無しさん [2023/11/07(火) 09:23:10.10 ID:pJrSerDn.net] Pythonみたいなインデントずれたら明後日の動きする様な言語は欠損言語だろ
153 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 09:32:16.68 ID:IkuZHVo7.net] 「Linux」メンテナーの燃え尽き症候群問題--業務内容の変化と支援の必要性 https://japan.zdnet.com/article/35210969/ Corbet氏は「Rust」言語がLinux開発で採用されたことについて歓迎しているものの、これによってメンテナーにさらなる負担がかかるようにもなるとした。同氏は、「カーネルメンテナーを務める以上、Rust言語で記述されたコードのマージ依頼も受け取ることになるため、同言語に対する極めて深い知識が必要となる(中略)既に多忙を極め、自らの仕事量に圧倒されているメンテナーに対して、この新言語の学習を求めるのは酷というものだ。このため、この点は今後、問題となりそうだ」と述べた。
154 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 09:58:24.32 ID:KQXk8Lyc.net] >>147 インデントに整形以上の意味を持たせた言語の方が好まれてるかどうかの話をしてるのに 他の言語でもインデントで整形してることを根拠にしても意味ないだろ
155 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 10:27:17.78 ID:sAtxR3nB.net] インデントより会話の論点を揃えないとな
156 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 10:45:48.18 ID:S2z7fl4T.net] whitespace significantな言語はプログラミングの素人にとっては多少読みやすいというメリットはある しかしそれ以外はデメリットだらけなので素人を釣りたい場合を除いて採用するメリットがない
157 名前:デフォルトの名無しさん [2023/11/07(火) 10:53:19.67 ID:sYaGJjSb.net] リモートワーク制度が削減・廃止されたら「転職や別案件を探す」が4割-- 「Offers」登録者調査 ITエンジニア/デザイナーの副業・転職サービス「Offers」を提供するoverflowは、 同社が運営する「Offersデジタル人材総研」にて「リモートワーク実態調査2023」 を公表した。 これによると、リモートワークになり、5人に1人が引っ越したと回答した。そのうち、 現職でリモートワーク制度が削減・廃止された場合、「転職や別案件を探す」
158 名前:ニいう 回答が44.0%にものぼった。一方「会社と交渉する」という回答は40.0%、 「引っ越さず受け入れる」が12.0%となった。 さらにリモートワークを希望している理由として「通勤時間が無駄だと感じている」が 87.7%でトップとなった。このほか「個人の時間ができる」(62.3%)、「副業を続け やすいから」(39.6%)、「子育てができる」(35.8%)と続いた。 [] [ここ壊れてます]
159 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 16:44:22.56 ID:K3Q4DPSx.net] > Pythonみたいなインデントずれたら明後日の動きする様な言語は欠損言語だろ ほんとこれ > インデントより会話の論点を揃えないとな ほんとこれ
160 名前:デフォルトの名無しさん [2023/11/07(火) 16:48:16.87 ID:r4VgdGvO.net] >>150 ずれたら思ってない動作になる場合があるのは確かだが ずれることがめったに起こらない
161 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 17:52:17.78 ID:yNm6SVJF.net] 正直食わず嫌いなんだが、あのインデント式、慣れない悪寒しかしない yaml書かされるけど、おっかなびっくりだわ
162 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 18:32:13.35 ID:WwhMyV/o.net] ifとかforがネストしてるときに論理構成変えたときに ぐちゃぐちゃになったりしないの?
163 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 19:03:13.54 ID:nOWHHYht.net] コピペした時困るのはあるけど そんなネスト深いところにコピペする時点でコードが終わってるのだろう
164 名前:デフォルトの名無しさん [2023/11/07(火) 19:24:21.76 ID:RqjiUzBc.net] あっちのファイルはスペースで、こっちのファイルはタブでそれぞれインデントしてるとかw 更に同じファイル内でスペースとタブが混在したインデントしてるとかw
165 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 21:26:08.28 ID:cNgR9CBR.net] シープラの文法が醜いってとこまで合意できてるってことでいいかな
166 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 22:35:55.75 ID:irgQLNGX.net] >>162 ダメなのはNim
167 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 23:28:55.99 ID:hgNhDI9g.net] 長いだけあって、いくらでも悪く書ける
168 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 23:29:26.17 ID:zgo9bT4J.net] >>151 >メンテナーに報酬を支払おうというところはほとんど「ない」のだ メンテナーほぼ金貰ってないのかw 壮絶な時間の無駄だな linuxなんて潰れちまえ
169 名前:デフォルトの名無しさん mailto:sage [2023/11/07(火) 23:40:27.67 ID:laLhHNQt.net] >>162 インデント構文はその醜さを完全に理解した親切な人が書くとわりとマシに読めるって話なら同意できる
170 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 07:17:12.54 ID:W3To02R9.net] >>163 Nimの文法が駄目ならRustは産業廃棄物だな。
171 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 09:28:37.50 ID:G1poaB6X.net] >>167 最初からそう言ってますよね
172 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 10:02:49.03 ID:RamzJ36x.net] >>165 Linuxなんて無料だから普及したってだけだし 無名の大学生が作った有料カーネルなんか誰が使うかよ
173 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 10:07:20.75 ID:QixgdFmt.net] Rustが最も美しいけどC++に比べたらPythonの方がまし
174 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 10:21:07.20 ID:rqy+WU7a.net] cppは汚らしい
175 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 10:34:17.23 ID:K2ksJD7C.net] あれがいいんだぞ でも、template<>のごちゃっとしてるのは苦手
176 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 10:49:02.95 ID:MFNjLgBF.net] NimはPython由来の文法が多い中でprocヘッダーの区切りをわざわざ=記号にしたのは何でなの?
177 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 11:13:52.74 ID:U7ghqgyy.net] 痘痕もエクボっていうしずっと使ってると美しく見えるのかもしれん 始祖のハゲ散らかしもイケオジに見えるのかもしれん
178 名前:デフォルトの名無しさん [2023/11/08(水) 11:26:24.47 ID:088wzVve.net] >>173 macro
179 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 12:07:42.23 ID:fBbSHd4U.net] >>175 関係ないやろ
180 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 13:10:09.47 ID:l0v/WxBk.net] >>169 BSD
181 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 14:09:53.13 ID:qh/Yreq5.net] Nimは継承あるじゃん だれか突っ込めよ 複オジ嘘つき放題じゃねーか
182 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 14:45:54.44 ID:7EPaeHp0.net] Nim使ってる時点でセンスがないからな
183 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 15:29:55.01 ID:9/Sq9IWJ.net] Nimはクラスがないため当然クラス継承もない
184 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 15:41:40.86 ID:hsKTrqcL.net] このスレの半分は複オジのウソで出来ています。 用法・用量を守って正しくご使用下さい。
185 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 15:50:23.42 ID:J3/ZiO6G.net] 複おじってニートでしょ? なんか我々と対等に喋れること自体がとんでもない体験なんだし もっと感謝して欲しいね
186 名前:デフォルトの名無しさん [2023/11/08(水) 17:01:15.09 ID:wMkAKLer.net] C++er的にC23ってどうなの?
187 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 17:32:19.27 ID:K2ksJD7C.net] #embed はあると安心 ないとやっぱり一手間かかる clangではできてたっぽいけど(VC派
188 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 17:35:31.79 ID:orrrVPZ2.net] >>180 www
189 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 18:12:04.23 ID:J3/ZiO6G.net] >>180 クラス継承だけが継承ではないのだけどね
190 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 19:11:51.53 ID:BxyJgb4P.net] 有害とされているのはクラスの継承 それ以外の継承はあってもいい
191 名前:デフォルトの名無しさん [2023/11/08(水) 19:13:26.39 ID:mR96+8QE.net] >>182 とニートが申しております
192 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 20:13:44.98 ID:ow8V8oTj.net] 有害なのは多重継承では? 単一継承はいいでしょ
193 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 20:15:54.45 ID:dNhK+uJb.net] 綺麗に書けるならという条件がつく 本来、綺麗に階層化するのが目的だったのが、どうしてもごちゃついてしまう 基本にして難 それが継承 って感じでいい?
194 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 20:28:47.14 ID:dEbgw7JQ.net] >>189 大抵は駄目。 継承は「インターフェイスの共有」という外部との契約と、「実装の共有」という内部との契約をごっちゃにしているから、すぐに設計がごちゃごちゃになる。 内部と外部は明確に分離したほうが手間がかかるが問題になりにくい。
195 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 20:35:51.69 ID:57OVemIO.net] クラス継承では複数の機能を継承したくなった時に多重継承が起きてしまう 多重継承を避けるには使うすべての機能を巨大なツリー関係に押し込める本末転倒な事態になる
196 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 20:37:37.21 ID:5gc/7Ny5.net] >継承は「インターフェイスの共有」という外部との契約と、「実装の共有」という内部との契約をごっちゃにしている Nimの継承にも同じことが当てはまるけど Nimにはクラスはないから有害じゃないという主張でいいのかな?
197 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 20:53:57.66 ID:7EPaeHp0.net] >>189 そのレベル浅い知識ならおそらく「SOLID原則」を知らないでしょ 勉強しな? メンテや機能追加を繰り返してるとどうしても内部構造が腐敗していくものよ
198 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 21:01:44.80 ID:dEbgw7JQ.net] >>193 理想は継承なしの共通インターフェイス。継承自体いらん。 原理的には同じメソッドを持つのならどんなインスタンスでも同じインターフェイスで扱えるから、継承を使って扱えるインターフェイスを制限するのは「早すぎる最適化」としかいえん。
199 名前:デフォルトの名無しさん [2023/11/08(水) 21:07:15.90 ID:5ONqWRVX.net] 多重継承って本当に悪か? 多重継承を使う前に周りに悪って教え込まれたので これまで本格的に使ったことはないのだが みんなは酷い目にあったことあるかい? 敢えて「多重継承=悪」思考停止論を提起したい
200 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 21:20:08.15 ID:orrrVPZ2.net] 有用なものを何も生み出せない 目的と手段を履き違えた無能たちの知識
201 名前:oトルロワイヤル [] [ここ壊れてます]
202 名前:デフォルトの名無しさん [2023/11/08(水) 21:23:09.85 ID:wwLvTPFi.net] 現在動作してる過去のシステムを捨てるわけにいかない状況で、新しい共通システムを書くには継承がいいと思うけど どうなんでしょう?素人考えなんですけど。
203 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 21:23:13.22 ID:WEquhdeD.net] オブジェクト指向のメリットってホントにメリットなんだろうか?
204 名前:デフォルトの名無しさん [2023/11/08(水) 21:35:45.96 ID:JLAEJM24.net] >>199 モジュール分割の方法を広げるっていうメリットはある。 カーネルドライバー部分はオブジェクト指向した方がいいって、否定派のlinusも認めてる。
205 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 21:56:55.44 ID:cf3mLuef.net] オブジェクト指向 ⊃ クラスの使用 ⊃ クラス継承の使用 オブジェクト指向自体は問題ない クラスの使用も継承を用いなければ問題ないが クラスと他との違いはクラス継承にあるように本質がその継承機能にあるため クラス自体を無くしたプログラミング言語が最近は多数派となった
206 名前:デフォルトの名無しさん [2023/11/08(水) 22:24:24.52 ID:5ONqWRVX.net] >>201 全部マイナー言語じゃん 支持されてないんだよ
207 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 22:32:30.66 ID:5gc/7Ny5.net] >>195 全く答えになってない Nimの継承は君が主張している有害な継承に該当するのか否か?
208 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 22:52:12.05 ID:W3To02R9.net] >>203 「継承自体いらん」と書いているだろ。 shared_ptr<function<T>>のTがインターフェイスになったのがあれば継承自体いらん。
209 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 23:04:09.93 ID:08jT+y3p.net] >継承は「インターフェイスの共有」という外部との契約と、「実装の共有」という内部との契約をごっちゃにしている もう一つ付け加えると↑これはデフォルト実装のあるTraitやインターフェースにも同じことが当てはまる でもインターフェースのデフォルト実装を有害と言う人は少ない なぜだろうね?
210 名前:デフォルトの名無しさん [2023/11/08(水) 23:45:38.02 ID:wMkAKLer.net] 特殊事情持ち出して一般論を語るな。 例外的なのが無いとでも思ってるのか
211 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 23:46:51.04 ID:dNhK+uJb.net] 最初はきれいなんだよ、最初は
212 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 23:59:18.59 ID:57OVemIO.net] >>205 Rustのtraitはデータ(メンバー)とは切り離された設計になっているから デフォルト実装自身がデータ(メンバー)にアクセスできない点で違うんじゃないか
213 名前:デフォルトの名無しさん [2023/11/09(木) 11:54:56.82 ID:Fo7n9qIp.net] >>196 iostream観たら判るし
214 名前:デフォルトの名無しさん [2023/11/09(木) 12:57:22.06 ID:vs5NVBb2.net] >>194 SOLIDは名前しか知らないがライブラリのクラスを拡張するときは継承あると便利だけどな コンポジションだとゲッターかプロパティでライブラリクラスのオブジェクト取得しないといけないし面倒じゃない?
215 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 15:49:49.48 ID:Nh0igmG8.net] >>210 その継承やらインターフェースの設計をうまくやるためのパターンがSOLIDだよ これを知らずに継承使ってるやつは大抵ゴミコードを量産してる
216 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 16:57:59.50 ID:vs5NVBb2.net] >>211 ゴミコードは沢山書いてきたが継承使う時はほどほどにしてるからな あまりゴミ化はしたことないな SOLIDは概念が難しかったがこれって継承の複雑さが出ちゃってるね 継承はもっとシンプルに使わないと
217 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 17:02:28.18 ID:Nh0igmG8.net] >>212 継承がなければSOLIDなんてほぼ考えなくて良いからね 「インターフェース分離の原則」あたりさえ気にしていれば問題ないし モダンな言語ならインターフェースは言語のコアとして搭載されてる 継承を無くすることでSOLID原則みたいな面倒なことを考えなくても良いし コードもシンプルになるしメリットしかない だから最近の言語では継承がない これがモダンな言語では継承が存在しない理由
218 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 17:17:08.18 ID:wF5VsxRz.net] >継承がなければSOLIDなんてほぼ考えなくて良いからね おいおいw 揃いも揃って何なんだここは
219 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 17:41:32.22 ID:Nh0igmG8.net] >>214 ? ほぼ継承に関する問題を解決するための原則だぞこれは
220 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 17:
] [ここ壊れてます]
221 名前:53:14.45 ID:apZquDee.net mailto: Lだけだろ [] [ここ壊れてます]
222 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:02:47.11 ID:Nh0igmG8.net] S 継承がなければ単一にしかなりようがない O 継承がなければ勝手に追加も削除も容易 L 継承がなければ置換もクソもない I 継承がなければインターフェースなんていくらでも分離できる D 言わずもがな 継承があるからこの原則は生きる つまり継承の悪い部分を避けるための オブジェクト指向の原則 その知識は何のためにあるのか? きちんと自分の頭で考えよう それが知恵というものだ
223 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:06:49.12 ID:Nh0igmG8.net] オブジェクト指向の全ての悪は継承にあり DIなんかもこの悪を退治するための刃だ 継承こそがソフトウェアをゴミ化し 変更をしにくくする悪魔👿なのだ この事実を誰も指摘してないことは驚愕に値する オブジェクト指向はオワコンとかいう人に限って何が悪なのか明示的に指摘できていない
224 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:07:38.95 ID:Nh0igmG8.net] 俺ははっきりと言う 継承こそが全ての間違いの始まりだと
225 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:09:54.14 ID:Nh0igmG8.net] はるか昔「オブ脳」という概念があった 全てをオブジェクト指向で考えようというものだ まずベースクラスを考えて〜 いやちょい待ち その発想がまず間違っている なんでベースクラスを最初から考えられると思った? そんなことは神でもできない そのようなオブ脳🧠こそゴミエンジニアへの入り口 幸いモダンな言語は継承を排除した 英断だと思う
226 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:13:43.54 ID:Nh0igmG8.net] モダンな言語に置いては インターフェース(トレイトとか制約とかプロトコルとか言語によって名前は違うが本質は同じ) ありきで考える 言語のコアもインターフェース前提で設計されている 誰もベースクラスガーとか考えない まずインターフェース考えよ、となる そしてそのインターフェースを満たすための構造を考える こうすることでデータがシンプルになり 頭を悩ますことが減る これは業務ロジックでも同じ インターフェースから考えよ
227 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:24:54.65 ID:46vHv3J3.net] solidが面倒ってのもよくわからんな
228 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:28:01.90 ID:GxZAPNre.net] このスレの半分は複オジのウソで出来ています。 用法・用量を守って正しくご使用下さい。
229 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 18:41:12.35 ID:hICX9By2.net] 「それは、継承から始まった。」っていう世代の資産がまだまだあるからね 自分用には、継承を、きれいに書けるようになりたい C++から逃げるな
230 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 19:19:30.86 ID:Jqv+rt1P.net] 継承を綺麗に書けないバカの断末魔ww
231 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 19:22:43.00 ID:Nh0igmG8.net] 断末魔で結構 継承カッケーと思ってるエンジニアにどどいてくれ
232 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 19:23:51.89 ID:Nh0igmG8.net] ソフトウェア業界における設計失敗2選 1.ヌルポ 2.継承
233 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 19:28:25.39 ID:hICX9By2.net] ぬるぽは原始より居ただろ 飼い慣らせない人間が悪い(俺を含む
234 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 19:45:53.51 ID:Nh0igmG8.net] ヌルポをなくしてOption型をデフォルトにすべきだった コンパイラによるチェックを必須にすべきだったのよ 本当にこれだけのことで全てが変わった
235 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 20:06:24.95 ID:T10okj+l.net] >>229 10年後に今の言語がどうけなされてるか言ってみ?
236 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 20:26:38.28 ID:GhU74Yg7.net] result型とoption型 rustだけがこの2つをデフォルトに採用した 生き残るのはrustだけ
237 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 20:29:05.07 ID:8vjWDFJE.net] >>229 Object型じゃ型情報少なすぎるだろ。 全てのクラスにNullObjectを付けてnullptrを禁止すればマシになる。 あとインターフェイスはもっと制約を減らすべき。 c++テンプレートだと、テンプレート引数に指定するクラスはテンプレートについて何も知らなくていいけど、インターフェイスもそのレベルでクラス
238 名前:Eインスタンスから切り離されているべきだ。 [] [ここ壊れてます]
239 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 20:57:20.45 ID:PEX7rJUj.net] > Object型じゃ型情報少なすぎるだろ。 > 全てのクラスにNullObjectを付けてnullptrを禁止すればマシになる Object型ではなくOption型 全ての各型にNullObjectを付ける必要はなく 任意のT型に対してOption<T>型を用いればよい Option<T>型の値はSome(Tの値)のNone二択 T型自体は決してNull値やNone値をとなってはいけなくここが肝要
240 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 21:05:40.49 ID:GhU74Yg7.net] ただジェネリクスやテンプレートがないCに追加するのは容易ではない それほど罪深い仕様
241 名前:デフォルトの名無しさん [2023/11/09(木) 22:19:33.09 ID:/jR/7UWQ.net] C++はまだ改良頑張ってるよ。 Cなんて、C11ぶり10年以上も改良してないとか酷すぎる。
242 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 22:33:55.61 ID:U2tOOexp.net] C23ってどうなったんだっけか もう少し先?
243 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 23:32:03.13 ID:alU/Ei+B.net] SOLIDすら理解してないやつがRust推してるのか 呆れを通り越して悲しみを感じる
244 名前:デフォルトの名無しさん mailto:sage [2023/11/09(木) 23:45:28.17 ID:FlvKmVTx.net] SOLID理解してない人はクラス継承派だからアンチRust側
245 名前:デフォルトの名無しさん [2023/11/09(木) 23:51:27.12 ID:/jR/7UWQ.net] >>236 新機能は決まって来年ISOから発行
246 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 00:37:21.40 ID:YpxZ8uto.net] SOLIDもだが30年前から言われてるfavor composition over inheritanceの理由を理解してないのも呆れる Rustの推し活する前にまずは基礎を学ぼうぜ じゃないとどの言語使おうがゴミ量産するだけだぞ
247 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 02:22:01.34 ID:bGIK0BM5.net] 継承より合成とそうすべき理由を理解していないのはRustを叩いてる側だな 理解できないがためにいつまでもクラス継承に固執している
248 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 05:15:36.99 ID:bzX4P4Us.net] 俺はRustも継承も嫌いじゃないんだが SOLIDは難しいから苦手だけど
249 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 09:27:08.62 ID:YqCm/hRG.net] >>235 だからゴチャゴチャしてるんだ
250 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 09:40:56.20 ID:aa+qv15K.net] ついつい、機能を全部くらい使って書こうとしちゃうんだよね 複数世代のパラダイムが入ってるから、まぜるな危険
251 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 10:45:22.93 ID:TCW8Ak5o.net] C++はスマホやPCと同じだよ 昭和ジジイはすぐ「これが持つすべての機能をマスターしてすべて使いこなそう!」とか無意味な事を考え そして挫折して「パソコンなんて憶えても意味はないっ!人間の尊厳はもっとシンプルなものにあるのだ! パソコンをつかわずに人間らしい美しい生き方をしよう!」とかいいだす スマホもPCも自分に必要な機能だけ憶えて使えばいいだけ
252 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 12:12:06.75 ID:aa+qv15K.net] s/パソコン/スマホ/g
253 名前:デフォルトの名無しさん [2023/11/10(金) 13:40:46.42 ID:E5/tDr6w.net] s/ジジイ/池沼/g
254 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 15:25:54.34 ID:nVu+/fuO.net] かわいそうだな 継承が上手く書けないくらい頭おかしいと
255 名前:デフォルトの名無しさん [2023/11/10(金) 16:20:15.04 ID:FL9N1XVu.net] c++はどっちかというとフロントボンネット開けっ放しでエンジン丸出しにしたテスラって感じだけどな
256 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 16:50:58.76 ID:3Hc35zyY.net] 【基礎解説】 メモリ利用を効率化! Modern C++のキモ「ムーブセマンティクス」 https://codezine.jp/article/detail/18574
257 名前:デフォルトの名無しさん [2023/11/10(金) 16:51:19.99 ID:tLf5vZ8S.net] >>249 うまい例えのつもりなのか?
258 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 16:55:26.35 ID:SY+Dup8/.net] テスラ車にエンジンは付いてないけどな
259 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 20:11:27.55 ID:NL+wF9v3.net] エンジン無しでどうやって走るのかと
260 名前:デフォルトの名無しさん [2023/11/10(金) 20:21:08.16 ID:
] [ここ壊れてます]
261 名前:VDRR6isO.net mailto: モーター [] [ここ壊れてます]
262 名前:デフォルトの名無しさん [2023/11/10(金) 20:21:28.96 ID:eRO+Ebqf.net] ガソリンエンジンか、エレクトリックエンジンかの違いだね
263 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 20:33:46.45 ID:POaaExM9.net] NTにもJetエンジン付いてるね 2色ある
264 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 23:56:02.81 ID:XAiSTtL/.net] >>248 継承を使わないほうが様々な問題を起こさず上手く書けるというのが本筋 例えばクラスと継承を広めたJavaの生みの親であるJames Goslingも>>102 でJavaを作り直せるとしたら継承を除外したいと言っている これはプログラミング言語界では共通認識であるためモダンな各言語ではクラスとその継承が除外されている
265 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 00:01:12.93 ID:woXaVSWq.net] 発言のコンテキストを理解しようとしないからアホな結論に達するんだよなあ
266 名前:デフォルトの名無しさん [2023/11/11(土) 00:03:12.63 ID:uDCEJA+a.net] どうでもいいくだらない話題で延びるのは 上の方に消したいレスがあるとき
267 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 00:09:22.37 ID:DbOeM/y4.net] 消したいのはNimとSOLIDだろうな
268 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 00:53:13.03 ID:Qqt+MGf6.net] >>258 伝言ゲームで多くの人を介した後の情報にしか接しようとしない人はコンテキストとかわかんないんだよ
269 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 00:54:21.99 ID:CRU56Rbd.net] アスペルガーはそういうのわからないよ
270 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 01:19:19.80 ID:PsmtBz7W.net] Go/Rust/Elixir の3大言語は継承ない。 でも継承のある、Ruby の米国年収は、3大言語を超えた! Ruby, Elixir : 9.3 万ドル Go : 8.9 Rust : 8.7 多くの言語 : 6.5〜7 PHP : 5 Dart : 4.4 Ruby on Rails, AWS Solution Architect は13万ドルとか! YouTube で有名な雑食系エンジニア・KENTA は、 初心者のキャリアパスは、Rails → Go だけと言ってる 文系のアホには全職種の中で唯一、Railsがチート職業!
271 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 07:03:04.53 ID:6YPjiDGp.net] >>257 Rustはclassの機能をstruct,impl,traitにばらしているからな。 いっそのことimplも無くしてnimみたいなメソッド構文にしてほしいわ。
272 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 09:24:43.23 ID:sUAuCE0K.net] >>264 他の型(=他のclass)と継承関係を持つ型がclass RustやGoなどにclassの機能はない
273 名前:デフォルトの名無しさん [2023/11/11(土) 09:40:11.96 ID:fuGMacjx.net] Rubyはないわ ΚΕИТΑもないわ
274 名前:デフォルトの名無しさん [2023/11/11(土) 09:53:08.61 ID:qMAq6GeL.net] 継承を問題だと考えるならそう考える人が使わなきゃ良いだけで 言語仕様からなくす必要はなかったんだよ 他の機能との間に衝突が生じるというのなら無いのも分かるけど ユーザの選択肢として継承はあるべきだった(発想が原理主義的なんだよね) 間口を狭めた結果ユーザー数は一向に増えない ユーザー数が少なければユーザー数を増えないという負のスパイラルを抜け出せない 継承はあるものの手本を示すために標準ライブラリ(ってあるのかな?w)で 継承を使わないという方針を取るべきだったと思う
275 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 09:59:27.11 ID:hCMtMwE+.net] >>263 Ruby使ってるサイトってまだあるの?
276 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 10:48:09.09 ID:hFMfv8+p.net] TikTok LiteでPayPayやAmazonギフトなどに交換可能な4000円分のポイントをプレゼント中! ※既存TikTokユーザーの方はTikTokアプリ
277 名前:からログアウトしてアンインストールすれば参加できる可能性があります。 1.SIMの入ったスマホ・タブレットを用意する 2.以下のTikTok Litのサイトからアプリをダウンロード(ダウンロードだけでまだ起動しない) https://lite.tiktok.com/t/ZSNfJQ9TG/ 3.ダウンロード完了後、もう一度上記アドレスのリンクからアプリを起動 4.アプリ内でTikTok未使用の電話番号かメールアドレスを使用して登録 5.10日間連続のチェックインで合計で4000円分のポイントゲット ポイントはPayPayやAmazonギフト券に交換可能! 家族・友人に紹介したり通常タスクをこなせば更にポイントを追加で獲得できます。 [] [ここ壊れてます]
278 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 12:33:28.67 ID:8FSI241M.net] >>269 サンキュー試してみる
279 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 17:06:47.94 ID:rVvrsmp3.net] >>265 その解釈で言うなら>>180 は間違いで、Nimにはクラス継承はあるってことでいいのか? クラスにしろオブジェクトにしろトレイトにしろ、言語によって定義は微妙に違うのだから 特定の言語にだけ当てはまる特性を一般的なものとして語られると、議論に混乱がもたらされる 意図的にやっているのならば、それは藁人形論法と呼ばれる
280 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 17:17:53.08 ID:rVvrsmp3.net] というか、型ごとにクラスであるか否かが決まるのか? C++のclass C: public D {};はクラスだが、class C {};はクラスではないということになるのか? 動的型付け言語なら「値がクラスであるための条件」を定義することで何がクラスであるか定義する言語もあるが (にしたって継承に依存しないだろうが) 静的型付け言語も含めた一般的な定義としては使えなさそうだ
281 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 17:56:27.75 ID:8uzQmIun.net] カプセル化などはクラス以外にも存在しクラスの固有機能ではない クラスをクラスたらしめている要素は継承 Javaの生みの親が>>102 で「Javaを作り直すとしたらクラスを除外したい」と発言した意図も、 その後に付加説明しているように「クラスを除外」とは「継承を除外」の意味としている 継承を使わないならクラスである必要はない それがクラスごと除外した各モダン言語の意図だろう
282 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 18:18:11.36 ID:rtkZqGR9.net] >>269 友達にも教えてあげる
283 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 18:19:47.08 ID:Mzt4UIrv.net] 実装継承は菱形継承の問題もある
284 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 18:28:45.74 ID:mn5CSVOj.net] 菱形は無理になくてもいい …といいつつ、あとになって菱形になっちゃいましたもありうるんだろうしな まあ積極的には使わん 人智を超えるw
285 名前:デフォルトの名無しさん [2023/11/11(土) 19:45:32.60 ID:2HJkyP1v.net] >>272 javascriptのprototypeに近いものをclassと思ってるんじゃないかな
286 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 20:07:27.33 ID:Ig0qHM6i.net] JavaScriptもC++と同じく実装継承だからアウトだろ
287 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 00:15:34.52 ID:EWqnRvOH.net] >>268 Githubとかはまだ使ってるみたいだけど明らかに減ってきてる感あるね
288 名前:デフォルトの名無しさん [2023/11/12(日) 00:36:55.65 ID:E93HrjVI.net] >>267 ユーザー数と継承機能の有無は関係無いぞ
289 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 01:09:33.43 ID:l8rhUXJt.net] >>280 >>89 の通り大有りだ
290 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 01:59:57.74 ID:daW7Mc+n.net] エンジニアなら作ったもので勝負しろ
291 名前:デフォルトの名無しさん [2023/11/12(日) 02:41:28.74 ID:E93HrjVI.net] >>281 元になった言語があるかどうかじゃん。継承関係ねーじゃん。
292 名前:デフォルトの名無しさん [2023/11/12(日) 04:42:06.75 ID:yMP0yjCE.net] >>281 全部ドマイナー
293 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 08:54:04.31 ID:TrDrLjQN.net] モダン言語=関数型ベースにボクの考えた似非オブジェクト指向追加するのが流行ってるだけって感じで終わってる
294 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 09:00:27.54 ID:EWqnRvOH.net] とは言っても俺らより遥かに頭いい人が考えた結果だからな
295 名前:デフォルトの名無しさん [2023/11/12(日) 09:53:11.34 ID:l8rhUXJt.net] >>283 ユーザ数が少ないとユーザは増えないんだよ おまいらはどマイナー言語が趣味だろうけども世間は違う ユーザ数を増やすには既存の言語のユーザを分捕るのが手っ取り早い 継承関係がないってことは他言語のユーザが学習したり 他言語のライブラリを移植する際にハードルとなる 期せずして書かれた>>89 は上は全部どマイナー言語 下の言語はC++もそうだけどユーザー数が上より遥かに多い 普及戦略には既存言語との互換性が最大の影響を与えるということを示している 俺様の理想のみを追求した原理主義では誰もついてこない
296 名前:デフォルトの名無しさん [2023/11/12(日) 09:57:24.71 ID:l8rhUXJt.net] そういやRustで書かれたOSが実用化される話を読んだよ 軌道に乗ればRustを使う現場が増えるかもね https://www.gizmodo.jp/2023/11/vivo-blueos.html
297 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 10:10:01.41 ID:nDYms+cf.net] ロゴがVAIOっぽくて草ァ
298 名前:デフォルトの名無しさん [2023/11/12(日) 10:24:30.80 ID:l8rhUXJt.net] 本家は英語のページがない https://blueos.vivo.com/
299 名前:デフォルトの名無しさん [2023/11/12(日) 11:24:34.62 ID:yMP0yjCE.net] 古い? オブジェクト指向経験者のためのRust https://qiita.com/nacika_ins/items/cf3782bd371da79def74
300 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:25:51.39 ID:yMP0yjCE.net] どうでもいいけど ドマイナーってCmのことだね
301 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:31:15.41 ID:yMP0yjCE.net] >>288-290 Rust 推してんの中國人なんか? そういえば github の Rust も中國語多い気がするな Rust に関わるのもう辞めようかな
302 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:32:56.85 ID:CMeM7fMz.net] 情熱的な曲ってCmベース多いよ ドマイナーはドマイナーじゃない(豆 # そのギャグどっかで使おうっと
303 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:34:44.94 ID:CMeM7fMz.net] 母数でかいし、まだまだ金回りいいしね cnをなめちゃだめだw
304 名前:デフォルトの名無しさん [2023/11/12(日) 11:39:24.18 ID:l8rhUXJt.net] >>293 コンピュータに関しては中国はもうかなりの分野で日本を凌駕してる 日本人にはRustで書かれたOSを実用化することは 残念ながら金輪際できないだろうね プライドを捨てる必要がありそうだ
305 名前:デフォルトの名無しさん [2023/11/12(日) 11:56:22.44 ID:TjUPxwN+.net] >>257 偉い人の名前どうでもいいから具体的な話をしなさいよ まあ無理だろうけどw
306 名前:デフォルトの名無しさん [2023/11/12(日) 12:50:23.87 ID:gR0aPFqO.net] Rustが浸透する可能性としてAIライブラリの充実がカギのような気がする。 ライブラリが充実すればマイコンへのAI実装が加速するかもしれないんじゃないかな?
307 名前:デフォルトの名無しさん [2023/11/12(日) 13:00:10.14 ID:E93HrjVI.net] >>287 javaにはinterfaceがあるしkotlinにもある。 objective-cにはprotocolがあるしswiftにもある。 うん、継承関係ねーな。
308 名前:デフォルトの名無しさん [2023/11/12(日) 13:24:47.44 ID:yMP0yjCE.net] どうみても結果論で Java に class も継承も無くて interface だけだったら 普及も糞も無かったはず 今の Rust より地位低かっただろう
309 名前:デフォルトの名無しさん [2023/11/12(日) 13:42:28.02 ID:l8rhUXJt.net] JavaはC++と
310 名前:文法を似せたことが初期でのユーザ獲得に効いたんだよ ある程度ユーザ数を獲得したら ユーザ数の多さがユーザ数の増加につながる 正のスパイラルが始まった Rustはこの先生きのこれるかな? [] [ここ壊れてます]
311 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 15:04:17.66 ID:2kP6dQwH.net] GoogleのC++スタイルガイドでも継承より合成が適切とあり 特に実装の多重継承は強く非推奨とある C++には継承があるから積極的に使おうなんて話はない
312 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 15:10:39.48 ID:BtB8NmKb.net] インターフェースの多重実装は? 俺的にはアリだが
313 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 15:12:06.22 ID:FXO/G2ox.net] アリというかそれは普通だろ
314 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 17:22:10.37 ID:fcqBe9ye.net] たとえアンチでも、それは過去資産という位置づけでは
315 名前:デフォルトの名無しさん [2023/11/12(日) 19:58:58.70 ID:UMFi1GHl.net] >>302 なぜ非推奨と言ってるの? それはどうでもよくてGoogleと言いたい人なの?
316 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 20:22:32.82 ID:EWqnRvOH.net] 合成とか言うのか昔(2000年代前半頃)C++勉強してた頃には合成とかいう言葉なかった気がする
317 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 20:32:20.30 ID:EyVQy8uj.net] compositionでしょ?
318 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 20:54:38.02 ID:oa0+ZaPS.net] composition over inheritanceの文脈で compositionを合成と訳すのば明らかに誤訳
319 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 21:10:07.68 ID:uw3vvLb2.net] チンポジション推奨はわかるがひたすらデリゲード書く羽目になるのはだるい 文法的にサポートすべき
320 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 22:58:36.87 ID:OO+koJ2d.net] >>307 継承が濫用されまくった反省から…っていう認識でいいのかな 継承とくらべてコンポジはフットプリントのコストがかかるけど(個人の感想です)、 そのくらいいいから、もっとわかりやすく書かないとって気運は確かに感じた
321 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 23:24:53.52 ID:R2fa8NnH.net] James Goslingがクラスを無くすという話で警鐘を鳴らしたかったのはimplementation inheritanceのマイナス面 クラスがなくてもGoやRustにもimplementation inheritanceは存在していてそのマイナス面も全部ではないが継承してる 大事なのはプラス面とマイナス面の両面を把握した上で適宜使い分けるということ
322 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 23:29:45.60 ID:p1tJuVOt.net] ちなみにRustは単純なクラス継承相当はないからコードの再利用がやりにくいという弱みがある 言語開発者もそれはかなり昔から認識してて機能追加をあれこれ検討してるが実現には至ってないためマクロを使ってコードを複製することが多い
323 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 23:33:34.84 ID:kGZwhVgb.net] そのためのクレートでは(エアプ
324 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 00:43:02.47 ID:AJp6/mRY.net] オブシコの綻び 継承無くしてオブシコ厨の大好きだった動物犬猫ニンゲンはどう表現するんですか
325 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 01:10:29.96 ID:uWfytJAu.net] みんな違ってみんないい ってか、おまえらが自分らと同じクラスなど、不遜にもほどがあるニャ
326 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 02:50:04.87 ID:SmGbt3Rc.net] トレイトって仕組みわりと便利だけどな PHPでもこの仕組み取り入れられててわりと重宝する
327 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 07:32:53.84 ID:tgErF0Wq.net] 基本はアダプタパターンで、本来はインターフェイスに代入するときに自動で適合してくれるのがいいのよ。 継承はクラスの親子関係でやらなきゃいけないから依存が強すぎるし、合成も実装とインターフェイスが切り離せないから密結合しすぎる。
328 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 08:45:58.99 ID:nbPiM1Pw.net] リファクタリングするときに Rustの「親切設計」が思考の邪魔をしてくる どうにかならんか?
329 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 08:47
] [ここ壊れてます]
330 名前::34.93 ID:nbPiM1Pw.net mailto: >>298 小池AIなら要らないぞ [] [ここ壊れてます]
331 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 08:49:35.17 ID:nbPiM1Pw.net] >>310 >ひたすらデリゲーション RustのTraitもこれなんだな
332 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 09:10:04.39 ID:y0V48+mZ.net] >>318 それがcomだな
333 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 11:10:08.61 ID:mdWiRvuj.net] >>319 どんなコード?
334 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 11:24:38.37 ID:Ex26ICxs.net] >>322 継承無しのcomで、インターフェイスはコンパイル時に検証する感じがいい。
335 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 18:01:25.01 ID:QMjdC+SV.net] 新たなゲームエンジン「Arete Engine」発表 https://automaton-media.com/articles/newsjp/20231113-271841/ Rustベースとのこと 対応言語として、C++, C#ほか
336 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 19:27:32.88 ID:eizg6Llc.net] なんか良さげじゃないか これブレークしたらRust大発展場、ワンチャンありそう
337 名前:デフォルトの名無しさん [2023/11/13(月) 22:14:58.07 ID:vy9Jjh7g.net] 6.x以降サポートされてLinuxカーネルコンパイルできるんだね。知らんかった。 Cから置き換わるか? まだ、メジャーバージョンアップはありそうな気がするが
338 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 22:30:02.31 ID:VKpgHGcI.net] >>325 Unityの1000倍高速な部分を売りにして Unityと違ってライセンス料金も低く広く無料カバーされ Unityからの置き換えを狙ってるな
339 名前:デフォルトの名無しさん [2023/11/14(火) 00:08:42.55 ID:elb2YwUG.net] >>327 今まで動いてたものを置き換わることは無いんじゃね。 新規ドライバとかは少しずつ対応されるかもね。
340 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 07:56:37.32 ID:NHwXNMzQ.net] >>327 ドライバだけに使われることあっても置き換わることはありえない
341 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 08:35:51.95 ID:DoXgoJ+r.net] 置き換えになる前に、Cが強化される方に期待 やっぱり、クリティカル用のCってあったほうがいい
342 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 10:15:35.52 ID:XadOWBX2.net] Cは進化を前提としたABIではないから シンタックスシュガー的な強化しかできない モダンな機能を求めるならCにトランスパイルする言語を使うことになる
343 名前:デフォルトの名無しさん [2023/11/14(火) 12:09:27.81 ID:SRCspH78.net] fn main(){ println!("{}", 111111111*111111111); println!("{}", 111111111u64*111111111u64); } 1653732529 12345678987654321 警告もコンパイルエラーも出ないんだが Rustってあほなんか?
344 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 13:48:38.27 ID:CBni7tLT.net] C++の唯一の得意分野だったゲームまでRustに置き換わりそう
345 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 15:16:56.57 ID:XhCdgplR.net] >>333 書いてるやつがアホなだけだろw
346 名前:デフォルトの名無しさん [2023/11/14(火) 16:14:21.75 ID:SRCspH78.net] あほが間違ったのを指摘できるのがRustのメリットじゃなかったんか
347 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 16:25:51.54 ID:B1tltd4R.net] 程度による
348 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 16:28:06.37 ID:Z/oEWqNB.net] >>333 そのままやってみたらエラー出た error: this arithmetic operation will overflow --> src/main.rs:2:18 | 2 | println!("{}", 111111111*111111111); | ^^^^^^^^^^^^^^^^^^^ attempt to compute `111111111_i32 * 111111111_i32`, which would overflow | = note: `#[deny(arithmetic_overflow)]` on by default 型を全く指定しないとi32型とみなされるようだ エラーも丁寧に出るから初心者にもやさしいな
349 名前:デフォルトの名無しさん [2023/11/14(火) 18:34:48.03 ID:hryaTN3D.net] >>330 言い切るのはいいが、その根拠を示さないとな。
350 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 18:48:47.69 ID:do91JJab.net] ドライバ開発用の環境しかないから 知らんのか
351 名前:デフォルトの名無しさん [2023/11/14(火) 19:23:59.78 ID:hryaTN3D.net] 現状はそうだけど それでは、未来永劫置き換わらないと言えないのでは? sudoとか置き換わってるよ
352 名前:デフォルトの名無しさん [2023/11/14(火) 20:26:23.93 ID:QUrDO32K.net] >>338 paiza.io があほだな https://paiza.io/projects/EOdRe5MWBWrUr4Wtxd_Hiw
353 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 21:16:27.35 ID:K+bD5cJ/.net] オーバーフローチェックがどういう時に働くか把握してないならThe Bookからやり直しましょう
354 名前:デフォルトの名無しさん [2023/11/14(火) 21:54:16.75 ID:sG8x0H9f.net] >>341 置き換わってねーよw
355 名前:デフォルトの名無しさん [2023/11/14(火) 22:10:44.82 ID:elb2YwUG.net] >>331 Cの機能強化はあきらめろ。 委員会の顔はベンダーのほうをみていてCを良くしようなんて思ってないから。
356 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 22:30:39.73 ID:e1z7sXs7.net] >>341 未来永劫とか言い出すのはガキ 今から置き換えるメリットがない せいぜいcの黒魔術マクロを排除できるぐらいだろ カーネルサイズ大きくなりました ちょっと遅くなりました 気持ちメモリ安全になった気がします どうせこういう結果になる
357 名前:デフォルトの名無しさん [2023/11/14(火) 23:19:38.77 ID:hryaTN3D.net] もちついて。 きき方が悪かったんだけどさ、LinuxカーネルをRust置き換えがありえないってのはなぜ? これが聞きたかっただけですよ。 現状からの置き換えコストがかかるからという理由は置いといて、すでになにかあるの? ケンカしたいんじゃないぞ >>344 sudoは置き換わってないね
358 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 23:52:26.09 ID:5RSSAN+/.net] LinuxのカーネルのソースコードをすべてRustに置き換えたときそれはLinuxと呼べるのだろうか (テセウスのパラドックス)
359 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 00:44:03.25 ID:aoVQj80M.net] Rustの道具立てが揃ってきたら スケジューラとかネットワークスタックなど コアな部分をRustで書き直そうぜとか 言い出す人は確実にでると思うけど POSIX互換(Linux互換)カーネルを Rustでゼロから書いた方が早いとかなるのかどうか
360 名前:デフォルトの名無しさん [2023/11/15(水) 00:55:26.57 ID:ywV5GNL0.net] 残念ながらレビューできる人がいない
361 名前:デフォルトの名無しさん [2023/11/15(水) 01:32:50.34 ID:ywV5GNL0.net] >>347 >>>344 sudoは置き換わってないね どのディストリビューションの何が置き換わった?
362 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 02:15:41.37 ID:1U/J6vOE.net] 口から出任せばっかりのRust宣教師 それに付き合う暇人
363 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 05:50:02.33 ID:y8SxX7I2.net] カーネルをコンパイルできるか、ってのは、ひとつのベンチマークになるらしい(どっかで見た C2Rustみたいな翻案ツールができたら、Linuxで試されるようには思う
364 名前:デフォルトの名無しさん [2023/11/15(水) 08:24:44.15 ID:yd8/VhXj.net] Linusの気持ちは?
365 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 08:28:35.87 ID:L9zXFwKt.net] 「その頃」のLinusはカス嫌いだったんだろうから、アウトプットがよければどうでもいい、だろ C++は百花繚乱感があって、後から考えたらあれは嫌われるわけだ
366 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 09:41:39.61 ID:pZco8j8P.net] Linuxはもう枯れたと言える技術分野であって エッジな人々が集まるところではないからな エンタープライズ分野でたとえれば汎用機システムのメンテナンスしてるようなもの
367 名前:デフォルトの名無しさん [2023/11/15(水) 10:46:32.75 ID:PvDO1mrU.net] >>351 wiki見るとAndr
368 名前:oidは置き換わってるように書いてあるね。 アマゾンのAWSのLinux?とか カーネルは6.6.1でfind -name '*.rs' で引っかけるとmallocとかCのライブラリ関係かな?ほかいろいろ LLTM=1スイッチで置き換わるようだが。 すぐに全体が置き換わるわけではないだろうけど、コアで脆弱性なところから始まってる感じに思えるね。 [] [ここ壊れてます]
369 名前:デフォルトの名無しさん [2023/11/15(水) 11:16:22.78 ID:ywV5GNL0.net] 最新の安定版カーネルは11月8日にリリースされたV. 6.6.1 $ curl 'https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.1.tar.xz' -o - | tar xJf - $ find linux-6.6.1 -name *.rs | xargs cat | wc -l 19033 $ find linux-6.6.1 -name *.c -o -name *.h | xargs cat | wc -l 32601643 19033 / (19033 + 32601643) = 0.05834643034374886 Rustのソースは僅か0.058%
370 名前:デフォルトの名無しさん [2023/11/15(水) 11:18:06.72 ID:ywV5GNL0.net] Rustがlinuxに取り込まれたのが昨年12月でV. 6.1 $ curl 'https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.tar.xz' -o - | tar xJf - $ find linux-6.1 -name *.rs | xargs cat | wc -l 10359 $ find linux-6.1 -name *.c -o -name *.h | xargs cat | wc -l 31476383 この11ヶ月にCで書かれたのは32601643 - 31476383 = 1125260ステップ その間にRustで書かれたソースは19033 - 10359 = 8674ステップ 増分を比較すると 8674 / 1125260 = 0.007708440715923431 Rustで書こうって人はCの0.8%未満ってことだ C開発者が100人いたらRust開発者は1人もいないくらい Linuxカーネルのプロジェクトで Rustに存在感は全くない 少なくとも最初の11ヶ月間の事実
371 名前:デフォルトの名無しさん [2023/11/15(水) 11:20:10.48 ID:ywV5GNL0.net] >>357 >すぐに全体が置き換わるわけではないだろうけど、コアで脆弱性なところから始まってる感じに思えるね。 全くそうは思えないのだが?
372 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 11:25:52.06 ID:7t1hSBTd.net] このスレの半分は複オジのウソで出来ています。 用法・用量を守って正しくご使用下さい。
373 名前:デフォルトの名無しさん [2023/11/15(水) 11:35:20.23 ID:PvDO1mrU.net] >>360 そういわれると、たしかにコードの置き換えとしては進んでない感じするな まだ実験検討段階って感じか
374 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 12:21:37.48 ID:no7PoE7H.net] >>356 世間知らず クラウドインフラの技術が集結してる
375 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 12:27:36.50 ID:teqcURmf.net] >>347 「コスト」が最大の理由だろ。 コードをRustに置き換えるだけでも膨大な手間と時間がかかる。 そもそもLinusとかのメンテナがRustを使いこなすのに何年費やすかね。そんな時間があったら現環境で機能強化するわな。
376 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 13:00:57.66 ID:no7PoE7H.net] clangでのビルドにも慎重なのにrustで置き換えなんか進むわけない そもそも書き換える行為に生産性がないのだから せいぜい新しく書くところで部分的に使っていきましょうとなる だからドライバでとなる
377 名前:デフォルトの名無しさん [2023/11/15(水) 13:19:00.88 ID:ywV5GNL0.net] Rustの本家本元のfirefoxのソースコードでも Debianの115.4.0esr-1~deb12u1を調べると以下の通りだよ Rust(*.rs) 15% JS(*.js) 35% C++/C(*.cpp *.cxx *.c *.h) 50% LinuxでRustがCを置き換えるなんてことは >>341 の言葉を借りて「未来永劫」ないとないと言い切ってやろう
378 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 14:07:32.56 ID:g71OGRWz.net] >>366 単に物量の問題だろ 何百万行あると思ってるんだよ
379 名前:デフォルトの名無しさん [2023/11/15(水) 14:11:39.36 ID:ywV5GNL0.net] >>367 ざっと2千500万行だね
380 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 14:24:01.47 ID:kSRDfKJq.net] 30年の積み重ねを置き換えるのに30年… とまでは行かなくても5年で大部分書き換え とかはなら
381 名前:んだろう [] [ここ壊れてます]
382 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 14:51:21.03 ID:6FugGo49.net] 元々Cで造られたプロジェクトを一部だけRustに置き換えなんて面倒なだけでメリット無い どうせRustでやるんだったら全部描き治しの方が良いに決まってる Rustで置き換えと言うよりRustで新たにLinux互換プロジェクトが出来上がるだけ
383 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 14:56:46.34 ID:/tSVEj7/.net] >>368 ひぇっ
384 名前:デフォルトの名無しさん [2023/11/15(水) 15:12:05.87 ID:PvDO1mrU.net] Andoroidは置き換え比較的進んでるよ、事実だしこれは否定しようがない。 >>356 が言うようにLinuxはメンテナーが少なくなってきてるという記事を読んだことがある。 Cを本当に使える人が減ってきてるんだってさ。AIとかに流出してるのかもね。 Linuxは長い実績で堅牢なんだろうけどまだ脆弱性を含んでいるのは間違いないし。 メンテナーのレベルが落ちると長年で培った堅牢性がゆらいでいくんじゃない? 時間かけてじわじわいくよ。
385 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 16:57:42.00 ID:HubpN1/i.net] >>372 カーネルに新機能追加する人は給料貰ってフルタイムで やってる人がいるけどコードレビューする人は ボランティアベースで辛いという話だぞ
386 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 18:15:25.04 ID:/tSVEj7/.net] >>372 富士通の社員がやってるんじゃないの?
387 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 18:31:31.15 ID:c9l3XMad.net] GoogleがAndroid OSのRust化を進めている
388 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 19:02:01.02 ID:V2KbO/sW.net] 都合の悪い話されるとすぐそうやって話題変える
389 名前:デフォルトの名無しさん [2023/11/15(水) 21:13:40.04 ID:ywV5GNL0.net] >>372 ,375 プログラマなんだから話は定量的にどうぞ
390 名前:デフォルトの名無しさん [2023/11/15(水) 21:36:10.57 ID:2QF9cM/v.net] トランスレータ作ればいいのにね
391 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 21:48:13.78 ID:FmmLZXFq.net] Linux Kernelコードの70%はドライバー こいつらは基本的にデバイス屋さんが書いてる
392 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 23:20:59.98 ID:9Wll1i1V.net] >>372 >Cを本当に使える人が減ってきてるんだってさ。 ×Cを本当に使える人が減ってきてる ○Linuxをメンテしたい人が減ってきてる 大事な所を履き違えんなよ
393 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 23:25:45.67 ID:/tSVEj7/.net] Linusは自分がいなくなっても継続できるようにしてると言ってたけどホントかいな
394 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 02:20:43.10 ID:YE0GrThs.net] ああいうワンマン強引タイプの周辺はだいたい イエスマン(しかも心中はそのうち取って代ってやると思ってる野心家)ばっかりになってて 本人は継続できるようなつもりになってるけどいざ倒れると急におかしな方向いったり弱体化したりしがち
395 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 07:32:35.40 ID:nbKqUUuT.net] >>381 もう本人コード書いてないし
396 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 09:47:18.38 ID:wNLmB51s.net] カーネルの話にAndroidを出してくる奴
397 名前:デフォルトの名無しさん [2023/11/16(木) 10:24:39.57 ID:csSKyxVc.net] >>383 リーナス氏はカーネルを書いただけの人で、Linuxはgnuの周辺が無ければ成立しないんだよなぁ
398 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 10:36:18.81 ID:c22vQqL3.net] ニュース記事を斜め読みしただけで プログラム書いてなさそう人が参入してるな
399 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 10:58:48.69 ID:oAo4ftxR.net] 複おじのことやん
400 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:04:24.85 ID:JqwSNCs1.net] >>384 GoogleがAndroid用にforkしたLinuxカーネルへ加えた変更がアップストリームにも適用されることが多々あるから別におかしい話じゃないぞ Androidと関係なくてもGoogle自体がLinuxカーネルを進化させてるメジャープレイヤーでもある
401 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:05:25.04 ID:wNLmB51s.net] rustサポートって何してるのか気になってコミットログ読んでみたけどこんなもんか
402 名前:デフォルトの名無しさん mailto:sage [2023/11/1
] [ここ壊れてます]
403 名前:6(木) 11:15:44.45 ID:cWrKpE+4.net mailto: >>385 なおさら駄目じゃね? GNUツールのRust移行とか不可能だろ。 [] [ここ壊れてます]
404 名前:デフォルトの名無しさん [2023/11/16(木) 11:20:28.08 ID:QXdh7keC.net] >>376 ほんそれ >>382 すばらしい洞察
405 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:23:05.99 ID:5W7eUxhr.net] 既存の枯れた部分を移行するメリットは低くそこに興味を持っているのはおまえらだけ 全く新たに作られていってるシステムなどに使われていく言語が世間での焦点
406 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:36:03.27 ID:oAo4ftxR.net] >>392 なるほどはっきりしたな RustはC/C++の置き換えには適さない 以上!!!!本スレは終了!!!!
407 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:40:52.68 ID:5W7eUxhr.net] 既存の枯れた安定してるものを他言語で置き換えなんてムダなことをするバカはいない >>5 のような新たなシステムがどの言語で書かれているかが全て
408 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:44:41.17 ID:c22vQqL3.net] >>388 AndroidのRust適用はミドルウェアとか 実行ファイルの話
409 名前:デフォルトの名無しさん [2023/11/16(木) 11:52:51.95 ID:nxuWB9A/.net] >>394 新規のシステムもRustよりC++/Cの方が多いでしょうよ Rustはユーザ数が少な過ぎる
410 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 11:59:45.29 ID:oAo4ftxR.net] >CDNプロバイダのCloudflareは、同社のグローバルなCDNの基盤として長らく利用してきたNGINXに代えて、 >>394 「C言語製の枯れて安定してるnginxをわざわざRustで置き換えるCloudflareはムダなことをするバカ」
411 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 12:24:14.05 ID:AwpJQf7l.net] >>397 Pingoraの話じゃないの?
412 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 12:31:03.07 ID:1vSd70Wx.net] >>397 記事読めてる? nginxでは機能が不十分で様々な検討をして新たに作ることになったとある そしてRust製のPingoraを開発して以下の性能を出したと記事に書かれている >Pingoraはすでに同社のCDNに採用され、毎日1兆回以上のリクエストを処理し、性能向上や数多くの新機能の提供を実現しつつ、従来と比較してCPUとメモリリソースの消費はいずれも3分の1程度に収まっているとのこと。
413 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 12:42:36.36 ID:c22vQqL3.net] >>397 nginxでは性能の限界があってRustで新規に 作ったと記事の読み飛ばしたところに 書きてなかった?
414 名前:デフォルトの名無しさん [2023/11/16(木) 12:47:30.32 ID:QXdh7keC.net] APIがRustになってないとRust採用する意味が無い
415 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 12:53:18.79 ID:1vSd70Wx.net] >>401 今回の話の場合APIに相当するものはHTTPだと思いますが APIがRustになっていないと、とは何?
416 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 12:53:44.43 ID:oAo4ftxR.net] nginxの代わりに使えるものを「新しく」作ったのだからPingoraはnginxの「置き換え」ではないと言いたいのか?? じゃあ>>392 の言う「移行」>>394 の言う「置き換え」って厳密には何のことを指すんだ??
417 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 13:04:58.32 ID:1vSd70Wx.net] たとえ後発のより良い新言語(ex. Rust)であっても システムそのままで新言語への置き換えはコスト的に意味がなく 新たなシステムへ置き換える時に新言語の採用は大いに意味があるという実例だろう
418 名前:デフォルトの名無しさん [2023/11/16(木) 13:27:53.62 ID:6XhGio1W.net] 403 は言葉使いからして感情でしか物事をみれない
419 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 13:37:39.61 ID:GrubNHks.net] >>383 一応メールの中でコードを書いてるって言ってたけどね
420 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 13:40:47.78 ID:GrubNHks.net] >>397 そりゃCloudflareレベルの規模ならメリットはあるだろう メリットがあるなら書き直すし メリットがないなら書き直さない それだけ
421 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 14:28:52.70 ID:U5aa+aRa.net] >>394 置き換えがしたいという意志があるとは誰も言って
422 名前:ネい そもそも修正と新規作成をどうしても区別したいという意志がない ただ、ミクロな意志と無関係なマクロな現象として 置き換えが自然発生するかも知れないという謎の空気はある [] [ここ壊れてます]
423 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 15:09:24.13 ID:IFD1cI+g.net] early adoptersやearly majorityになるのは Linuxのperipheralとしてビジネスをしている企業ではなく Linuxをperipheralとしたビジネスをしている企業 前者の大半はゲームのルールを他者に支配されている立場であり裁量の余地が小さいためマインドセットが保守的 純粋なコストベネフィット以外に低いリスク選好度からくる心理的抵抗が強いためearly adoptersやearly majorityにはなりにくい 複オジがいつも事例であげてるAndroid、Cloudflare、AWSなどが全て後者なのは偶然ではなく構造上の特性から生じる必然 新しい技術というのはゲームのルールを自らコントロールできるこちら側の企業によって牽引される
424 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 15:14:00.47 ID:IFD1cI+g.net] つまり何が言いたかったかというと Linux KernelにおけるRustの採用率というのは 技術採用ライフサイクルの観点で見た場合 late majorityやluggardsのRust採用率の目安だということ
425 名前:デフォルトの名無しさん [2023/11/16(木) 15:14:30.69 ID:QXdh7keC.net] adaptor だと思ってたけど adopter なんか
426 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 15:24:27.23 ID:JRjQuxlT.net] >>410 × luggards ○ laggards
427 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 15:29:19.80 ID:FRf+5dUd.net] early adopter とは https://dictionary.goo.ne.jp/word/en/early+adopter/ アーリーアダプター,(新製品の)初期受容者 adopter とは https://dictionary.goo.ne.jp/word/en/adopter/ 1 採用[採択]者 2 養い親,里親
428 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 16:41:51.84 ID:cWrKpE+4.net] >>403 コードの移行、コードの置き換え。 >397は>370の例だろ。
429 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:06:23.69 ID:DQsCMcKm.net] それぞれのケースで大きく異なるから区別が必要 (1) 新規に作るもの CloudflareやAWSの例やゲームの新フレームワークやLinuxの新たなデバドラ等すべてこれ これらは100% Rustが有利 (2) 既存のソフトの言語のみの置き換え (2)-a. スクリプト言語などからの言語の置き換え CPUやメモリの使用リソース削減が目的ならばRust化は有利 (2)-b. C/C++からの言語の置き換え セキュリティやメモリ管理の不安定で困ってる時にRust化が有利 一般的に可能なら(2)の単なる言語間の移植よりも 設計を見直して(1)の新規作成とした方が好ましい >>399 でCloudflareがCPUメモリリソース消費1/3にできた例も 単なるC→Rustへの(2)移植ではなく 新たな設計での(1)新規作成だからであろう
430 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:13:48.99 ID:GrubNHks.net] C/C++から書き直すにしても設計をそのまま使えないことが多いから かなり大変なんだよな とくに参照やポインタだらけで全部ヒープアロケーションしまくってる場合とか C++でもその辺りポインタを多用せずスマポやスタック割り当てをうまく使って書いてあるソフトは移植しやすい
431 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:41:46.11 ID:cVeFFprT.net] どの言語からでもいいけどRustに移行するのにプログラム設計もそのまま引き継いだ自動コンバージョン的な移行を想定するほうがおかしいやろ そんなんありえんよ
432 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:41:52.36 ID:nV/QBQ73.net] C/C++にRust世代の知見が流入してくることに賭けて、待ってる勢はあるはず 自分は
433 名前:そう それもあるけど、いまあるRustから前線で知見を得ようという勢もあるはず [] [ここ壊れてます]
434 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:47:05.98 ID:nV/QBQ73.net] >>417 C/C++もclangがいったん咀嚼してLLVMにしてる Rustにトランスパイルするのは非現実的とまではいえないはず うまくいけば、Linuxは一夜にしてpure Rustになる Rust派の誰かがやるんじゃないかと思ってる
435 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:51:33.13 ID:xS+g93Tz.net] >>417 な いつもの藁人形論法 AWSが最初からRustで構築されたとでも思ってんのかね
436 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:55:14.82 ID:GrubNHks.net] 全てスタック変数で割り当てる コピー時に適切なムーブをする ヒープが必要なところはスマポを使う これをちゃんとやればC++をrustに置き換えることは可能 しかしこれをやってるC++プロジェクトはない
437 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:56:48.64 ID:GrubNHks.net] >>420 そいつの意見を真面目に考えてて草
438 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 18:05:24.97 ID:nV/QBQ73.net] ま、雑談だから ストローマンは愚痴 一頃のC++はなんでもかんでもヒープに置きすぎだったよね まあ、お膝元のスタックがそんなでかくない石・スレッドも少なくないけど
439 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 18:12:37.43 ID:C/58Cd2m.net] >>419 わざわざLLVM IRまで降りて戻ってこなくてもc2rustとか最低限のトランスパイラはいくつかあるぞ 出力結果は作業の開始地点として使うものでそのままプロダクションに使うものじゃない
440 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 18:27:30.00 ID:nV/QBQ73.net] c2rustの出力をあんまり手直しばっかりしなくていいように、 入力のCにアノテーションを加えていこう、みたいな動きは必ず出ると思うんだよね 良くも悪くもCはマクロ世界だから、当面関わってない人には影響ゼロなようにも書けるはず そのアノテーションが、そのまま、safe C の礎になればいいんだよ
441 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 18:28:02.28 ID:jjq/yUIi.net] ああ、ストローマンは自動コンバージョンに反応したのか “的な”の意味が通じなかったんだな
442 名前:デフォルトの名無しさん [2023/11/16(木) 18:39:53.99 ID:RH2XyDS1.net] >>397 記事を読めてないバカを晒すスレはここですか?
443 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 18:40:10.28 ID:U5aa+aRa.net] LinuxはスクリプトとCの二刀流だ PythonとCの関係はRustとCの関係にも使える その知見が流入してこない原因はスクリプト不要論だろう
444 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 20:51:00.53 ID:AwpJQf7l.net] >>423 だがスマートポインタはスタックに置いて参照渡ししたい。
445 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 23:13:12.09 ID:BwM227bO.net] >>425 Cの安全性を高める目的ならトランスパイラではなく静的コード解析ツール用にアノテーションするほうが遥かに簡単 C++と同じようにCにもそういう動きが出てくる可能性はあると思う ただ安全性を高めようとすればするほど既存のコードとはかけ離れていくからMISRAのように標準化され半強制的なものにならない限り広く受け入れられる気がしない イメージ的には↓こういうやつ 浸透するとしても10年以上先だろうね https://www.youtube.com/watch?v=Pk2RAl8kG1o
446 名前:デフォルトの名無しさん [2023/11/16(木) 23:35:15.35 ID:nxuWB9A/.net] そこで奥さんChat-GPTですよ!
447 名前:デフォルトの名無しさん [2023/11/16(木) 23:43:26.30 ID:4If2hIRf.net] >>430 Cの標準では今後も無い。 委員会がやる気ない。
448 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 00:28:52.66 ID:XzLpc9VL.net] Cは他のお笑い言語とは違って俺が最初に手に取ったK&R第二版から変える必要無かったからな
449 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 00:34:46.03 ID:UIKq6eA7.net] >>4
450 名前:33 さすがにK&Rからは変わってる (ギャグだったならスマン) [] [ここ壊れてます]
451 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 00:41:31.13 ID:ofj+MCpV.net] C++もlifetime annotationどうするか決まってないんだな 一番めんどくさくてコードも汚くなる部分だからannotation周りの評価はlifetime+borrow checkerの出来次第だと思ってる https://discourse.llvm.org/t/rfc-lifetime-annotations-for-c/61377
452 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 01:27:31.74 ID:lIdOKj8F.net] やる気が暴走したPerlとかC++とかを過大評価するのは暑苦しい やる気以外のルールはないのか
453 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 05:30:59.53 ID:30xMjeDv.net] あー、Perlも好きだわーw ドザなので、シェルスクリプト代わりに、中途半端な処理は全部お願いしてる
454 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 10:14:27.25 ID:vs9w0Abf.net] >>436 無能な働き者がやる気を出すとね……
455 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 21:12:15.87 ID:+5SAg77h.net] NGINXモジュールがRustで書けるようになった https://www.infoq.com/jp/news/2023/11/nginx-modules-rust/
456 名前:デフォルトの名無しさん [2023/11/17(金) 22:09:06.15 ID:HoPy7y+y.net] >>421 >コピー時に適切なムーブをする これが恣意的すぎて自動的に対応できんわな。
457 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 23:36:50.31 ID:FMmcnveO.net] >>436 その2言語は増築工事でダメになった
458 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 23:58:55.97 ID:8WHR7HZ4.net] 継承でダメになった、と言った? ほぼそれに近い?
459 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 11:21:22.60 ID:ZyDTP43o.net] 立場によってはそう 継承に親でも殺されたんかって人なら、そう言うだろう でもそれ、自分の推しの言語に継承かなにかが後出し採用されたら、ブーメランだぞw
460 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 11:36:22.09 ID:XY0Izw3X.net] クラス継承(実装継承)は悪でプログラミング言語界が一致してるから後から継承の採用はないだろうな 過去のしがらみで継承を採用したSwiftやKotlinですら継承を使わずに済む機構などを採り入れている
461 名前:デフォルトの名無しさん [2023/11/18(土) 11:44:56.68 ID:GRi2RJZB.net] その結果>>89 が示す通りマイナー言語に留まっているじゃん? ユーザ数を増やすことを優先しないと 数多あるマイナー言語の一つとして忘れ去られる
462 名前:デフォルトの名無しさん [2023/11/18(土) 11:52:32.21 ID:GRi2RJZB.net] 言語のユーザ数の増加要因として最大なのはユーザー数だよ
463 名前:デフォルトの名無しさん [2023/11/18(土) 11:58:51.53 ID:63IqxYSZ.net] >>446 頭沸いてんのかおまえ、進次郎かよw
464 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:08:09.00 ID:Q9aHTM00.net] それがわからんようでは、いっしょに旨い酒は呑めんなあw わかれよーわかりきってんだろ再帰だろ
465 名前:デフォルトの名無しさん [2023/11/18(土) 12:11:13.74 ID:GRi2RJZB.net] >>447 微分積分はまだなのかな?
466 名前:デフォルトの名無しさん [2023/11/18(土) 12:11:30.53 ID:63IqxYSZ.net] ユーザー数の多いアプリやOSの開発言語が言語利用者数に影響してるんだろうがいw
467 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:22:30.52 ID:moXb3tPD.net] 方法が違うだけでRustやGoにも実装継承が採用されてる SwiftやKotlinは過去のしがらみで実装継承を採用してるわけではない 目的に対して有益だから採用してるだけ 実装継承の乱用するやつも悪だと決めつけるやつも中身を理解してないという意味では同類だから どの言語を使っていようがどちらも採用してはいけない
468 名前:デフォルトの名無しさん [2023/11/18(土) 12:22:47.39 ID:GRi2RJZB.net] >>450 dN/dt = cN 右辺は一次関数とは限らんだろうけども 新たに学ぶ言語を選択するときには
469 名前: 人は多くの人が使っている言語を選択する傾向にある [] [ここ壊れてます]
470 名前:デフォルトの名無しさん [2023/11/18(土) 12:27:30.14 ID:63IqxYSZ.net] >>452 そんなん仕事で開発する人には通用しないよw 開発対象がどのハードのどのOSで動かすかによって決まるからな
471 名前:デフォルトの名無しさん [2023/11/18(土) 12:29:23.25 ID:63IqxYSZ.net] しかし、パラメータの意味も説明も無くいきなり数式出す奴ってなんなの?
472 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:31:03.67 ID:jiGs7deg.net] >>451 それは理解していなさすぎる 実装継承とはある型(クラス)に対して定義したメソッドが別の型(クラス)に対して引き継がれることを指す Rustに実装継承はない
473 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:35:26.40 ID:Q9aHTM00.net] 継承はダメおじさん「継承はダメ」 IUnk教徒俺「うんこ->Release();」
474 名前:デフォルトの名無しさん [2023/11/18(土) 12:38:02.55 ID:GRi2RJZB.net] >>453 「仕事で開発する人」ってのは仕事の多さに左右される 新規の言語はまずユーザー数を増やさないと この先生きのこれない
475 名前:デフォルトの名無しさん [2023/11/18(土) 12:38:26.91 ID:63IqxYSZ.net] 多段継承は何だかなぁだけど 単純な基礎クラスに応用クラス乗せるくらいは許して欲しいなぁ
476 名前:デフォルトの名無しさん [2023/11/18(土) 12:39:14.68 ID:GRi2RJZB.net] >>454 Nってのは数 tは時間 cは定数 どれもよく使うから端折ったけども?
477 名前:デフォルトの名無しさん [2023/11/18(土) 12:40:04.55 ID:63IqxYSZ.net] >>457 だからユーザー数なんて増えないんだよw その言語でしか開発出来ないスマホとかでも作らないとなw
478 名前:デフォルトの名無しさん [2023/11/18(土) 12:41:04.57 ID:63IqxYSZ.net] >>459 dは何よ?
479 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:42:08.12 ID:Q9aHTM00.net] ダァン! ってやつだ 俺が考えた
480 名前:デフォルトの名無しさん [2023/11/18(土) 12:45:04.02 ID:GRi2RJZB.net] >>461 >>449
481 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:49:36.30 ID:zRkY2vB2.net] ネットワーク外部性 - Wikipedia https://ja.wikipedia.org/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E5%A4%96%E9%83%A8%E6%80%A7
482 名前:デフォルトの名無しさん [2023/11/18(土) 12:49:49.32 ID:63IqxYSZ.net] >>463 ならば進次郎にも分かる説明でないとダメだろ
483 名前:デフォルトの名無しさん [2023/11/18(土) 12:54:44.31 ID:GRi2RJZB.net] >>465 >>446 に分かりやすく書いておる
484 名前:デフォルトの名無しさん [2023/11/18(土) 12:55:17.22 ID:63IqxYSZ.net] >>466 だからそれは否定されたろ
485 名前:デフォルトの名無しさん [2023/11/18(土) 12:56:30.92 ID:GRi2RJZB.net] >>467 誰に?
486 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 12:56:35.04 ID:zRkY2vB2.net] 仕事で使う技術選定の最大要因ってなんだかんだで利用者数の多さ(≒資料の多さ)になりがち
487 名前:デフォルトの名無しさん [2023/11/18(土) 12:57:39.99 ID:63IqxYSZ.net] >>468 俺にw
488 名前:デフォルトの名無しさん [2023/11/18(土) 12:59:42.63 ID:GRi2RJZB.net] >>470 そりゃお前が読めてないだけだよ >>452 の最後の1行も平易に同じことを書いているので読んでね
489 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 13:00:29.94 ID:9pS/cQYo.net] >>461 ワロタ
490 名前:デフォルトの名無しさん [2023/11/18(土) 13:03:35.26 ID:63IqxYSZ.net] C++の資料なんか腐るほどあるが 今やC#かCしか生き残って無いだろw
491 名前:デフォルトの名無しさん [2023/11/18(土) 13:05:11.55 ID:63IqxYSZ.net] Rustなんて使わなきや開発出来ないアプリなんか無いし 使う事は未来永劫無いだろうね
492 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 13:06:24.64 ID:9pS/cQYo.net] 書けない人がいくら叫んでも無駄
493 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 13:09:08.70 ID:9pS/cQYo.net] Rust書けないからって嫉妬してるのはわかるけどそこまで逆恨みすることはないじゃん?
494 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 13:09:45.32 ID:9pS/cQYo.net] それともここで煽られたから「Rustを書いてる人」が嫌いなのかな?
495 名前:デフォルトの名無しさん [2023/11/18(土) 13:42:18.00 ID:GRi2RJZB.net] >>473 Debian bookwormのfirefox-esrのソースのうちcとc++を比較すると ヘッダは区別がつかないので除外して $ apt source firefox-esr $ find firefox-esr-115.4.0esr -name *.cpp -o -name *.cxx | xargs cat | wc -l 4766467 $ find firefox-esr-115.4.0esr -name *.c | xargs cat | wc -l 3598263 4766467 / 3598263 = 1.3... C++がCの1.3倍程度 C++はヘッダのみで実装してしまうことも多々あるから1.3倍では済まないだろう C++の方が多いのだよ Rustは>>366 に書いた通り全体の15%程度(総本山なのに)
496 名前:デフォルトの名無しさん [2023/11/18(土) 14:46:30.05 ID:BPYzRrhj.net] それ過去に開発された言語が混ざってるよね?
497 名前:デフォルトの名無しさん [2023/11/18(土) 15:41:41.81 ID:aHGnQ9F/.net] もうすでに15%もあるといった考え方は?現状の%を並べても5年どうなるかわからないんだし。 その調べかたからわかるのことは限定的だな。 その割合が年々減っていってるのならRustはだめだろうし。
498 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 16:00:47.99 ID:Q+v8Z7oO.net] 言語の変更は多くの場合システム改新などコードを書き換えるタイミングで行なわれる また言語の変更をするか否かに関係なくモノリシックなシステムはシステム改新に不利でその点ではマイクロサービスなど多数で構成されるシステムが有利 OSカーネルやWebブラウザも同様でモノリシックに作られている場合は言語の変更に最も適していない そのような最も適していない極端な特殊例を持ち出して数え上げることは無意味で無駄な行為
499 名前:デフォルトの名無しさん [2023/11/18(土) 17:15:55.14 ID:rXJKESWN.net] 一眼観て微分方程式だと判らないレベルの人は黙っていて欲しい
500 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 19:58:38.30 ID:HxfHsjDi.net] それはわかったけど、英語そんな読めない俺、なんも言えず 教えてもらったRustの再評価? 論文、積ん読になってるんだよねえ 面白そうだったから忘れたことはないけど
501 名前:デフォルトの名無しさん [2023/11/18(土) 21:45:39.76 ID:0cWoHYmK.net] >>444 一致してない 継承理解できずにアホな使い方する一部の人が勝手に騒いでるだけ 採り入れないとおまえみたいなのが無根拠に騒ぐからとりあえず採り入れてるだけ
502 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 22:49:22.88 ID:zlAHanIg.net] モダンなプログラミング言語のうち、 過去のしがらみのある2つの言語を除いて、 すべての言語が継承をクラスごと排除して採用していないもんな
503 名前:デフォルトの名無しさん [2023/11/18(土) 22:53:24.96 ID:GRi2RJZB.net] >>485 おかげで全てマイナー言語のままじゃん?
504 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 23:39:14.05 ID:Wj/Y5gpw.net] 切捨ては極端すぎる。まるで都合の悪いことは無かったことにする左翼の思想 継承はあった方が便利なんだよ 元々オブシコは継承機能が売りだったのに手のひら返してやっぱ合成でいいって、それC言語でもできることだし… 先祖返り…デグレード…設計ミスってことぉ?
505 名前:デフォルトの名無しさん mailto:sage [2023/11/18(土) 23:51:56.62 ID:WzRKAbU/.net] 2010年以降にできた言語で広く使われてるのは Kotlin, Swift, Dart, TypeScriptらのクラス継承のある言語
506 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 00:04:07.84 ID:QnG3yXze.net] 型のgeneralization/specializationはどの言語でも必須と言っていい機能でspecializeされた型でgeneralな型の実装を再利用できるというのは物凄く直感的でわかりやすく便利な機能だから完全に無くせば利便性を損なうだけ Rustでも形を変えて実装継承が存在するのはそのため
507 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 04:16:47.88 ID:RVJYDbf6.net] >>489 実装継承は問題点が多すぎるからRustでは採用されていない 実装継承とはある型で定義されたメソッド実装がその型を継承する別の型にそのまま継承されること Rustは実装継承をちゃんと排除している
508 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 10:00:16.37 ID:tWthAkiw.net] >>490 >実装継承とはある型で定義されたメソッド実装がその型を継承する別の型にそのまま継承されること さすが進次郎 トートロジーが得意だな
509 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 10:14:54.62 ID:xroD2KWj.net] 継承が必須という人は>191 >195 >2
510 名前:04に反論してくれんかね? shared_ptr<function<T>>で、Tをコンセプトに拡張したものがイメージかね。コンセプトに合致する「インスタンス」なら何でも変数に代入できるようにできれば、わざわざ継承で「インスタンス」の代入可能性を確保する必要は無い。 [] [ここ壊れてます]
511 名前:デフォルトの名無しさん [2023/11/19(日) 10:29:52.82 ID:nljhlBVQ.net] >>492 継承で定義のコードを書く手間が減るだけでメリットになっている デメリットうんぬんは使い方知らないだけ 使う場所間違えてる 以上 論破
512 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 11:09:12.91 ID:xroD2KWj.net] >>493 ずいぶん貧弱な論破だなぁ。 >継承で定義のコードを書く手間が減る そのために「事前にクラス継承関係をクラスに追加する」という余計な重たい依存関係を埋め込む必要があり、後々のインターフェイス設計に多大なコストが発生する。 依存関係低減のためにAdaptorを使うことになるなら、最初からインターフェイスにAdaptorみたいな機能があった方が良い。 >デメリットうんぬんは使い方知らないだけ使う場所間違えてる あなたの感想ですか?
513 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 11:18:00.14 ID:a8wUH91D.net] >>492 複オジはデメリットを真に理解してないから どれレスでも的外れな内容になっている >shared_ptr<function<T>>で、Tをコンセプトに拡張したものがイメージかね。コンセプトに合致する「インスタンス」なら何でも変数に代入できるようにできれば、わざわざ継承で「インスタンス」の代入可能性を確保する必要は無い。 継承の前にポリモーフィズムから勉強した方がよさそうだね メリットとデメリットを理解してないというのは同じようだけど
514 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 11:25:06.19 ID:xroD2KWj.net] >>495 おいおい、まともな反論できなくなったらレッテル張りかよ。 >ポリモーフィズム だからポリモーフィズムにサブタイピングは依存関係重すぎると言っているんだよ。 std::funcionを理解できていますか?
515 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 11:34:23.07 ID:h6lf9AUt.net] 記述量が多くなる=悪は誰にでも判るだろう RADが流行ったのも理解できるだろう プログラマはいつも何を重視しているのか、それは時間だ Rustでコンパイル通す時間よりC++でやった方が早かろう C++でGUIアプリ作るよりC#でやった方が早かろう さてRustでGUIアプリ作るには、一体どれだけ時間が掛かるのか 話は終わりだ
516 名前:デフォルトの名無しさん [2023/11/19(日) 11:39:08.94 ID:JXkS/kRe.net] >>492 必須とは考えてないから反論はしない ユーザが選択できれば良いんだよ 言語としては装備していて 害悪があると考えるならそう考えるユーザが使わなければ良い 他言語のライブラリを移植する際に 使った方が再設計の手間が掛からないというなら使えば良い マイナー言語のまま終わるぞ
517 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 11:58:31.45 ID:o0KxE9xi.net] 数年でRustみたいな思想はAIが肩代わりしてくれると思うよ 今からRustで数年苦労するよりは 他の事しつつ待ってた方がもしかして有意義なんじゃないかな笑
518 名前:デフォルトの名無しさん [2023/11/19(日) 12:13:25.84 ID:nljhlBVQ.net] >>494 その指摘のような状況で使わなければいいだけ 全てのケースでその指摘が当てはまるわけではない 不適切な使用をしてる例を自分自身で示しているが、それに気づいていない 言うに事欠いて私の感想? 何回論破されるのあなた?
519 名前:デフォルトの名無しさん [2023/11/19(日) 12:32:27.75 ID:/G2k3fWt.net] >>497 別にRust推す訳じゃないが その理屈はRustで簡単にGUIが描けるツールが出たら解消してしまうがな
520 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 12:35:10.88 ID:Tj6ZCNuo.net] pythonのpysimpleguiでサクッと作って時間の掛かる処理だけpyo3でコールするか
521 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 13:27:48.93 ID:h6lf9AUt.net] >>501 Rustが世に出て13年みたいだが解消する見込みなし 時間の浪費は罪に等しいと考える現実的なプログラマであれば他の手段を見つけて
522 名前:るだろう 何もかも遅すぎるのろまに構う価値はない [] [ここ壊れてます]
523 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 13:57:40.85 ID:Oy1huhHi.net] >>497 C#でGUIとか今時書かんて
524 名前:デフォルトの名無しさん [2023/11/19(日) 14:01:24.71 ID:nljhlBVQ.net] >>504 今時はguiには何使うもの?
525 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 14:07:51.59 ID:Oy1huhHi.net] >>505 electronかtauriをガワにして中身はHTML+TypeScript 今のGUIアプリは大抵これ ちなみに新しいteamsではガワはネイティブ実装で 中身はWebView2というコンポーネントを使っているらしい 作り方はHTML+TypeScriptなのは変わらない WebView2はまだ簡単には使えないがおそらくこいつが主流になるはず MS好きならちゃんとキャッチアップくらいしとこうぜ?
526 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 14:10:24.62 ID:Oy1huhHi.net] 当たり前だが別にそれにしろとは言わん シンプルな業務系の画面なら何でも良いし作りやすい方が良い RustのGUIは今のところ有力なものはないのは事実
527 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 14:21:03.03 ID:BvvFFAMC.net] 「マウス」のイベントハンドラを継承するメリットが誰にでもわかる という前提が怪しいんだよ マウスだぞマウス
528 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 14:38:54.75 ID:iOyghJL5.net] え?! RustってGUIライブラリがないの??
529 名前:デフォルトの名無しさん [2023/11/19(日) 14:57:36.66 ID:/G2k3fWt.net] Tauriは糞
530 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 14:57:55.82 ID:y0Jh7vt2.net] >>509 RustのGUIも色々揃っている GUIは用途によって多種多様な世界だからeguiのようなリフレッシュフレームベースのGUIクレートもある そういう用途でなければRust関係なく一般的な話として今は各プログラミング言語でGUI作るのは極少数派になっている つまりHTML/CSS/JavaScriptベースで作られるようになっていて使用言語を強いて言えばJS/TSの時代
531 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 15:15:35.10 ID:xroD2KWj.net] >>500 ならせめて「当てはまるわけではない」ケースを指摘しないと反論にならん。 「不適切な使用をしてる例を自分自身で示しているが、それに気づいていない」というのに指摘しないのは反論者として誠実でない。後出しじゃんけんを狙った詐欺師にしか見えん。
532 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 15:17:38.47 ID:BvvFFAMC.net] フィクションでもマウス的な小道具を無くそうとしてる だから剣と魔法しかない
533 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 15:21:36.07 ID:5CKxkiE7.net] >HTML/CSS/JavaScriptベースで作られるようになっていて使用言語を強いて言えばJS/TSの時代 そしてそれらは全て実装継承モリモリの実装に支えられている
534 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 15:24:12.29 ID:xroD2KWj.net] >>500 「その指摘のような状況で使わなければいいだけ」とか後出しジャンケンにもなっていないな。情報が空っぽすぎる。 無敵ジャンケン出して勝った気になるお子様みたい。
535 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 16:13:36.90 ID:NqOCouPw.net] >>514 Reactはクラス止めて関数型のやり方に変えて かなり経つよ
536 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 16:43:45.43 ID:HSZIalWb.net] あったはずだけど
537 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 16:45:02.12 ID:HSZIalWb.net] あ、めっちゃ遅れレスだけど>>509 に対して書いたつもりだった
538 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 17:14:49.95 ID:H8V03qQo.net] >>514 Reactは本体含めて継承は使っていない 全て関数
539 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 17:17:51.68 ID:H8V03qQo.net] まあ今後のGUIはWebView2になるのは間違いなさそう 特にwindowsはこれが決定版になるはず
540 名前:デフォルトの名無しさん [2023/11/19(日) 17:39:17.01 ID:nljhlBVQ.net] >>512 ただ親クラスを継承して親クラスのメソッドを使うだけでしょ? そんなことはどこにでもあるが、そのすべてがインターフェイス的に全てのメンバの実装が必須なケースになるのか? ならない なるケースはインターフェイスなど使えばいいだけ
541 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 17:55:10.88 ID:o+X6buyf.net] メンバ変数に直接アクセスするメリットはgetやsetを実装する時間を浪費しないことだが 継承のメリットはこれに類似している
542 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 18:40:03.88 ID:RRmaBkyu.net] >>516 ,519 意味のない指摘をありがとう ReactはHTML/CSS/JavaScriptを支える技術じゃなく HTML/CSS/JavaScriptを活用した技術 ちなみにReactの本体では今でも実装継承使ってる つまらない嘘はいい加減止めようね
543 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 18:50:12.97 ID:WxxDsdGH.net] >>523 支える技術とか活用した技術とか意味不明すぎる
544 名前:デフォルトの名無しさん [2023/11/19(日) 19:34:44.92 ID:nljhlBVQ.net] >>524 何で知ったかしてバレないと思うん?
545 名前:デフォルトの名無しさん [2023/11/19(日) 20:05:00.46 ID:aXcE9XXk.net] マイコンレベルに小さなコンパイラを搭載しなければいけないような案件だとRustは重たすぎて無理っぽいが それ以外のデメリットは無い感じはする。今のところ FPGAの論理合成のような長いコンパイルプロセスに未来を感じる(感想)
546 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 20:46:51.67 ID:H8V03qQo.net] >>523 頭が悪すぎて嫌になるな
547 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 20:52:10.42 ID:H8V03qQo.net] >>524 なんか日本語がおかしい 韓国人なんかな?
548 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 21:13:25.27 ID:o+X6buyf.net] 英語圏で同じこと言われる不安を煽ってるから英語が苦手になるパターン
549 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 22:14:28.15 ID:fSaG2PoW.net] 昔のReactはコンポーネントクラスというJavaScriptのクラスを用いた方法を用いていたけど それでも継承は使わないでコンポジションを使うようにと公式に書かれていた 今のReactはクラスではなく関数コンポーネントを用いるようになった
550 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 22:31:23.82 ID:2h4NT+3n.net] 継承はクラスの再利用とクラスの切り替えが同じ継承に集約 されていたのが問題だった
551 名前:デフォルトの名無しさん mailto:sage [2023/11/19(日) 23:15:24.31 ID:WkLuwjlK.net] >>531 コードの再利用とサブタイピングが一緒になっていたらなぜ問題なの?
552 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 00:02:51.71 ID:miVVMWsb.net] >>523 継承使ってるというのはどこのコード?
553 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 03:25:10.93 ID:m3TC6/PX.net] クラスの切り替えとはキャストのことか だがダックタイピング界隈には「キャストする」という振る舞いがない templateなら引数を変えることが切り替えでありキャストは重要ではない 重要ではないものを重要と思ってたなら問題だ
554 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 03:52:37.02 ID:Uh0cT6mQ.net] だからさ、独自用語で煙に巻いてないでTaPL読んだうえで共通語彙で話しようぜって
555 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 07:37:53.49 ID:kv+dmWMk.net] >>521 親クラスを継承できないクラスはポリモーフィズムできないねぇ。 後から「読み取り専用のIFが欲しい」「書き込み専用が欲しい」となったらどうすんの? 「なるケースはインターフェイスなど使えばいいだけ」なら、途中で継承からIFに切り替える? 「早すぎる最適化」だなぁ
556 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 08:24:47.95 ID:dEVryb2p.net] さすがにその例だと、「モード切替するメソッドを足す。所有権管理もさせる。旧クラスは廃止」とかだろ
557 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 08:49:37.76 ID:Gc8IZzjG.net] >>537 だから「継承は重い。早すぎる最適化」なんだよ。 いつインターフェイスを確定するのは設計を煮詰めないと無理だから、設計初期に確定なんて不可能。
558 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 09:03:13.39 ID:07sj62mg.net] >>499 俺もそう思う
559 名前:デフォルトの名無しさん [2023/11/20(月) 10:54:06.11 ID:NElbrJwW.net] 何で君達は最小のサンプルコードも書かずに俺様用語で議論してるの? プログラマじゃないのかな?
560 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 11:26:53.92 ID:6jnK0Jj8.net] 今朝のGoogleニュースで米の求人報酬だかでRustが2位とか見たわ 人事的にはRustで沼る人材が欲しいらしいぞ 良かったな
561 名前:デフォルトの名無しさん [2023/11/20(月) 12:00:36.92 ID:ZwEoOGmm.net] >>536 そこら辺は言語によって違うからせめて言語くらい前提として共有しないと議論にならない。 親クラスを継承できないクラス、意味不明。 そもそもサンプルコード見せれば確実なところを自然言語で議論しようとする発想が意味わからない
562 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 12:49:28.44 ID:aVFf8Qq7.net] >>542 さすがに出先スマホでコード打ち込みたくないわな。 コードで言うなら>492みたいなのが欲しいというだけだし。 >親クラスを継承できないクラス、意味不明。 例えばライブラリが返すインスタンスのクラス。普通はクラスを直接弄ることはできないし、final宣言されてたら派生も無理。クラスを直接弄くれるとしても、ライブラリをメンテナンスするとか面倒臭いからやりたくない。 普通はAdoptor作るけど、それなら>492みたいなIF側で自動的にやる機能が欲しい。
563 名前:デフォルトの名無しさん [2023/11/20(月) 12:49:42.01 ID:JpnTJcOA.net] githubの2023年成長率でもRustが40%増でTOPだったな。 でもまだ人気言語TOP10には食い込んでなかったけど。
564 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 12:53:05.42 ID:PG0EBfXZ.net] >>541 日本だとマジで少ねえんだよな ガッツリ使ってて将来性があるところならぜひ行きたい
565 名前:デフォルトの名無しさん [2023/11/20(月) 13:32:31.99 ID:NElbrJwW.net] >>541 1位はpython?
566 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 13:42:54.45 ID:IjnmMF1h.net] そりゃ1位はPHPだよ
567 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 13:54:03.53 ID:SNQO1x/A.net] >>523 早くだせよコラ 適当いってんのはテメェだろクソが
568 名前:デフォルトの名無しさん [2023/11/20(月) 14:04:35.58 ID:NElbrJwW.net] >>547 PHPを書けるより市場価値がないの?
569 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 14:38:31.00 ID:dEVryb2p.net] Rustが出せるのは高い信頼性だが、日本で何か作っても、それ信頼できんの?ってなるから だったりして
570 名前:デフォルトの名無しさん [2023/11/20(月) 14:44:00.93 ID:NElbrJwW.net] >>550 求められている信頼性って「Rustが出せる信頼性」とは違うんだと思うよ
571 名前:デフォルトの名無しさん [2023/11/20(月) 15:09:31.41 ID:MS7hPbOQ.net] 日本だけに限らないかも知れないけど ソフトウェアの利用者ってそもそも 何の言語で造ってるかなんて気にしてないし知ろうともしない
572 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 15:36:03.59 ID:JXHwx0JF.net] Rustが使われる理由は高速省メモリで開発効率や保守性が良いため
573 名前:デフォルトの名無しさん [2023/11/20(月) 15:41:32.66 ID:NElbrJwW.net] >>553 それはRustプログラマの視点 それまでの話は発注者側からの話
574 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 15:49:44.16 ID:JXHwx0JF.net] 発注者側の視点でも 高速省メモリで安全性も高いのはRustとなる
575 名前:デフォルトの名無しさん [2023/11/20(月) 15:55:24.47 ID:NElbrJwW.net] 鶏と卵の関係になるけどプログラマが確保できなく保守性が悪い
576 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:02:14.85 ID:N43MAaAU.net] >>555 という願望 いいものなら売れるというナイーブな考えは捨てろ
577 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 16:18:06.96 ID:JXHwx0JF.net] >>556 プログラムの保守性自体はRustが高くて好ましいため あとはプログラマーの数は単調増加する一方なので特に問題なし
578 名前:デフォルトの名無しさん [2023/11/20(月) 16:27:04.23 ID:NElbrJwW.net] >>558 プログラマが確保できないってことは 発注者側からすると運用後の保守に 支障を来すリクスがあるってことだよ
579 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 17:04:51.35 ID:aPv5cKlG.net] コントリビューター増加「率」はミスリードかも、レポ増加「数」は github 2023年新規レポジトリ10KB以上 JavaScript 2.1M results Java 767k results Python 749k results TypeScript 627k results C# 338k results C++ 244k results C 174k results PHP 152k results Kotlin 147k results Dart 109k results Go 84.4k results Ruby 64.3k results Swift 59.3k results Rust 39.4k results Lua 22.1k results HCL 16.4k results
580 名前:デフォルトの名無しさん [2023/11/20(月) 18:15:53.85 ID:1QHH6H
] [ここ壊れてます]
581 名前:XV.net mailto: クローズ開発案件が含められないから意味が無い件 [] [ここ壊れてます]
582 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 18:32:56.66 ID:Tq0YX8uR.net] >>557 株とかはそうだね いいものは誰にも教えないで買い占めるはず 商品化し売られているのは悪いものしかない説
583 名前:デフォルトの名無しさん [2023/11/20(月) 20:50:45.51 ID:NElbrJwW.net] >>561 ある程度は相関してるでしょ
584 名前:デフォルトの名無しさん [2023/11/20(月) 21:15:52.04 ID:ojqzhkRS.net] >>562 お前がレスに使ってる端末は悪いものなんだな~。
585 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 21:47:51.39 ID:Tq0YX8uR.net] >>564 自然言語で雑談ばっかりして コーディングとコンパイルと実行をしない原因はこの端末かもしれないな
586 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 21:56:32.85 ID:Ygoo/zhh.net] >>533 >>548 嘘つきオジは「知ったかぶりして”Reactは本体含めて継承は使っていない全て関数”などという真っ赤なウソをついてすみませんでした」と言うのが先だろ
587 名前:デフォルトの名無しさん [2023/11/20(月) 21:59:46.43 ID:1QHH6HXV.net] >>563 全くしてないだろ 公開出来るソフトなんて業界の一部でしか無いからなぁ
588 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 22:02:12.48 ID:SNQO1x/A.net] >>566 負けを認めろ 土下座したら許してやるぞ
589 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 23:27:57.05 ID:/Ubqd6b6.net] >>530 Reactはクラスコンポーネント時代も 開発元のFacebookが様々なケースで継承を使うとよいケースは存在していないことを確認しているとReact公式に書いていたもんな もちろん今はクラスコンポーネントすら捨てて関数コンポーネント
590 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 08:57:03.65 ID:CeBFd4j1.net] GitHubで最も使われている言語はJavaScript、最も利用者が増加したのはRust。AIプロジェクト数はこの1年で3倍増GitHubが年次調査「Octoverse 2023」発表 https://www.publickey1.jp/blog/23/githubjavascriptrustai13githuboctoverse_2023.html AI関連のプロジェクトを国別に見ると米国が突出していますが、日本はインドに次いで3位となっており、日本のオープンソース開発者は世界的に見て積極的にAI関連のプロジェクトに関わっていることが分かります。 プログラミング言語別にコントリビュータの増加率を見ると、1位がRust、2位がRua、3位がTypeScript、4位がHCL(HashiCorp Configration Language)、4位がTSQL、5位がPythonとなります。
591 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 09:29:05.70 ID:WJ7yrtvk.net] React本体のJavaScriptコードで継承が使われてるという事実は嘘つきオジがいたので指摘しただけで重要な事ではない JavaScriptの継承を理解してる人ならリポジトリ見れば誰でもわかる 重要なのはReactやReact Nativeが依存しているHTML/CSS/JavaScriptなどのホスト環境が提供するGUIライブラリやそれに類するものは全て実装継承モリモリで作られているということ それはなぜなのか?
592 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 09:48:09.93 ID:meOGGGPH.net] >>570 Rustはもう何年もずーっと愛され続けてずーっと増加率もすごく高いのに 誰も使ってないのが不思議w
593 名前:デフォルトの名無しさん [2023/11/21(火) 10:52:34.98 ID:TIZNoRj+.net] 増加<率>だからねw
594 名前:デフォルトの名無しさん [2023/11/21(火) 10:53:27.83 ID:TIZNoRj+.net] つまり分子が大きいというより分母が少ない
595 名前:デフォルトの名無しさん [2023/11/21(火) 10:56:46.75 ID:fyFN08Ef.net] ヒント非公開
596 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:02:46.10 ID:ZX3v40di.net] >>571 GitHubのコードに対するリンク一行貼るくらいやってよ
597 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:06:40.20 ID:ZX3v40di.net] >>571 gtkはCだね
598 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:07:36.25 ID:HSO31doi.net] >>557 ほんそれ
599 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 11:18:07.78 ID:Lmp19CDx.net] >>575 エビデンスを出せという言葉を使えば公開されるという認識なんじゃないか まるで魔法みたいに
600 名前:デフォルトの名無しさん [2023/11/21(火) 11:27:49.20 ID:j31CN6Yb.net] >>569 とFacebookの犬が申しております
601 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 12:12:04.36 ID:Vub9wpCB.net] >>571 嘘つきはお前だよ
602 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 12:25:12.17 ID:MyNMYruR.net] >>571 お前毎回遅レスなのは何なの? 回線がない生活保護施設にでも住んでるのか?
603 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 12:27:03.76 ID:vP2RupFQ.net] 特定のレスに妙に攻撃的な単発ちょくちょく湧いてくるのってやっぱりアイツ?
604 名前:デフォルトの名無しさん [2023/11/21(火) 12:50:14.72 ID:j31CN6Yb.net] >>583 いや、あいつとは別
605 名前:デフォルトの名無しさん [2023/11/21(火) 12:50:16.11 ID:j31CN6Yb.net] >>583 いや、あいつとは別
606 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 13:37:07.13 ID:f4244eke.net] アイツじゃねーかw
607 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 13:52:02.24 ID:Lmp19CDx.net] 質問する側は基本的に無力で、答える側に生殺与奪の権を握られる 一発逆転するには攻撃力か何かで優位に立たなければ
608 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 18:59:23.42 ID:E3kr56i/.net] 勝ったところで、所詮クソvsクソだぞ 面白いことを書け
609 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 19:14:06.76 ID:MyNMYruR.net] 攻撃的なこと言われて大人しくなってるの草
610 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 22:22:25.20 ID:3Y9OZVuh.net] >>577 GTKは実装継承モリモリ Cで実装継承を実現するためのオブジェクト管理システムをGTK用に作ってある Reactの話とは関係ないけどね
611 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 22:23:49.29 ID:3Y9OZVuh.net] >>582 誰もが君のように暇なわけではないんだよ つかそんなにレスが欲しかったのかよw
612 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 22:43:10.96 ID:Q9pynku3.net] >>590 そういう返答するだろうなあと思ってたよ 言語機能になくても実装で継承使われてるんだ~ というならどんな言語使っても構わないね はい終了
613 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:11:04.07 ID:Lmp19CDx.net] Cはスマポ<T>を作れない C++でもtemplateを使わない主義ならばスマポのようなものをTが実装継承するかも
614 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:15:06.85 ID:x0TxAGsF.net] >>592 論点は実装継承は不要なのかどうか 常にコンポジションを使うべきかどうか GTKは言語機能によらない実装継承を使っているというだけ コンポジションで実装する事も技術的には当然可能だがその選択をしてないことに意味がある 特に言語が提供してないにもかかわらずGTKのためだけに継承機能をわざわざ作り上げるほど実装継承を欲した理由を理解するべき
615 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:35:36.54 ID:LOJe+P0r.net] Reactが依存しているHTMLのボタン要素を例に話をするとボタン要素は次のような型階層を取ることがDOM APIの仕様で決められている EventTarget <- Node <- Element <- HTMLElement <- HTMLButtonElement 上位の型のパブリックなメソッドやプロパティはや下位の型でも使えるようにする必要がある これは実装継承だけでなくコンポジション+インターフェースでもRustのenumのような代数データ型を使っても実現可能なんだが知る限り全てのブラウザが実装継承を使って実装している
616 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:45:35.68 ID:Q9pynku3.net] >>594 言語機能になくても問題はないんだから 言語の機能比較という論点からは どうでもいい話
617 名前:セね [] [ここ壊れてます]
618 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:49:00.55 ID:5SU8rUzf.net] なぜかというと 例えば仕様変更でNodeに新しいメソッドが追加されたとしても実装継承なら一箇所変更すればいいだけだから コンポジション+インターフェースの場合はNode以下の数百個のクラスや構造体にメソッドを追加して委譲するコードを書いて回らないといけない 実装継承というのはサブタイピングとコードの再利用を同時に行うことだが、その2つを同時に行えるという点が最大のメリットであり存在理由なわけ
619 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:08:02.11 ID:h68LLJ0S.net] >>596 問題がないわけではないんだよ GTKの実装継承は言語機能のそれと比べてクソ面倒臭い上に言語に組み込まれた型システムではないからこその弱さがある Rustでも実装継承をマクロで模倣することもできるがだからといってそれに何の問題ないわけではないというのと同じ 他のやり方があったとしてもより楽に安全に開発できるようになるなら言語機能としてあった方がいいってことになるよね?
620 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:19:05.87 ID:i7dbnQQ2.net] >>1-10 乗り遅れるな! いつまでも待ってはくれませんよ https://note.com/nukatiktok/n/nfbb66b3b3d3e ←4000円貰えます この機会にぜひ https://i.imgur.com/eWEQ3eT.jpg (毎日動画見てるだけでお金貰えるんだぞ💰)
621 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:33:52.03 ID:SCjy6MJ9.net] >>597 それは仕様変更前のクラス数百個を捨てさせ変更後の数百個で置き換えるには都合が良い 一箇所変更するだけで古いクラス数百個が消滅する だが古いクラスに依存していた資産が消滅するのは本当にお得なのか?
622 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 01:12:20.99 ID:uxQX1dJD.net] >>590 はよReactの実装継承について参考にすべき ファイルとかだしてくれ
623 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 01:26:34.89 ID:uxQX1dJD.net] >>598 > 他のやり方があったとしてもより楽に安全に開発できるようになるなら言語機能としてあった方がいいってことになるよね? c++に色々跳ね返ってきそうなお言葉来たな
624 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 16:32:36.94 ID:Ky8NVDmM.net] 「GCは嫌い。だけどC++は苦手。 噂だとRustがそれを解決するらしいから」 ということでRust票が入っているだけ。
625 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 18:06:32.01 ID:VuMm7++t.net] GoogleもMicrosoftもAmazonもCloudflareも そんな理由でRustを採用して使っている?
626 名前:デフォルトの名無しさん [2023/11/22(水) 18:40:30.34 ID:I05HGQ1N.net] 結局windows11 10.0.22631.2715 (23H2)にRust製モジュール入らなかったが
627 名前:デフォルトの名無しさん [2023/11/22(水) 19:20:29.71 ID:zUxnYc1v.net] MSの使ってるコンパイラは何だろう?
628 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 20:23:02.05 ID:BBiTeKwa.net] >>600 >だが古いクラスに依存していた資産が消滅するのは本当にお得なのか? 消滅しないよ
629 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 20:29:20.42 ID:ltxaInSK.net] >>604 信用できないアホコーダーにはバグを入れる自由なんて与えない。 コーティング規約だと防ぎきれないから抜け道の少ないRustにする。 ということだろ。
630 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 21:18:08.59 ID:+UnlqW3r.net] 関数名の重複を許す仕組みは信用できる クラスは名前がかぶったらたいてい古い方が無かったことにされるのが信用できない
631 名前:デフォルトの名無しさん [2023/11/22(水) 21:25:34.99 ID:zUxnYc1v.net] なにそれ?
632 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 21:26:35.97 ID:5rDf7evN.net] >>603 C++苦手でRustなら大丈夫!って人種は居るのかな さらに苦労しそうだけど
633 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 21:47:18.27 ID:+UnlqW3r.net] intは信用できないのでi32やi64になったのはまあいい 実装継承の祖先の名前がずらりと並ぶのは嫌だ
634 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 22
] [ここ壊れてます]
635 名前::42:24.09 ID:+dkhSESN.net mailto: >>612 それは実装継承による設計をする古い頭のままの駄目プログラマーの典型例 [] [ここ壊れてます]
636 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 22:48:19.59 ID:F4GGzYS9.net] >>611 いるよワイ とにかくC++はコピーを正しく扱うのがあまりにも難しいのよ C++の弱点はこの一点に尽きる もちろんCとの互換性を保つためなのだが本当に難しい そこにコピーやめたろ!って英断したRustは本当にC++使いの人が設計したんだなと感じる この部分に手を入れかつ速度を落とさない実装もできる方法を突き詰めるとこうなる
637 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 22:59:48.09 ID:Lo22StDU.net] >>614 Firefoxはservoで行き詰ったよ
638 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:05:36.01 ID:F4GGzYS9.net] Effective C++の初版はほぼこのコピーをいかにうまくやるかを解説した本だった あらゆる手段でコピーが発生してもオブジェクトの整合性が取れるように注意点を書きまくった しかしその内容はあまりにも普通の人には難し過ぎた そして一つのクラスを作るたびにこんなに気をつけて実装しないといけないのか!やってられん!となって その結果、もう全部ヒープにとって生ポインタでいいじゃんとなってしまった そのおかげでコピー問題は無くなったが メモリリークや二重開放、ヌルポの山を産んだ
639 名前:デフォルトの名無しさん [2023/11/22(水) 23:09:46.91 ID:EF2LJjbV.net] ポインターをメンバーに持つと言うのがコピーの問題になってるだけやん? アドレスをコピーするのか、実体を複製して新しいポインターとして格納するのか 用途によってはどちらかが不都合だったりするからなぁ
640 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:14:04.80 ID:F4GGzYS9.net] >>617 実態を持っても同じだよ そのオブジェクトが内部にポインタを持ってたら同じ問題が発生 さらにそのオブジェクトが(ry というわけで地獄のような連鎖になることがわかる そして厄介なのは自分が作っていないクラスだった場合お手上げということ いかにやばいか分かっていただけただろうか だから一時期はあらゆるオブジェクトがヒープ割り当てをしていた
641 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:21:57.25 ID:F4GGzYS9.net] スマートポインタによって状況はだいぶ改善されたとは思うが しかしこのコピー問題というのは常に残っているのだ そのオブジェクトを安全にコピーできるようにするという本質的な難しさは変わっていない そしてムーブかコピーかみたいなものをライブラリ提供者が決めなければならず それを使う側が意識することはかなり難しい ドキュメントを読み込んで使い方を熟読するしかない 数百個のクラスがあった場合その全てのクラスの性質を暗記しないといけないのである! しかも一個のミスで全てが崩壊する こんなことは不可能に近い
642 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:27:21.33 ID:F4GGzYS9.net] その結果全てのオブジェクトをヒープにとってそのポインタだけを持ち回る、という実装がほとんどとなったのである こうすればとりあえずコピーに関する問題はなくなる 俺はその時期にC++を仕事で書いていた 全てのオブジェクトがヒープにあった コピーに関して悩んだことがなかったので Effective C++を読んでもこの本は何でこんな「不整合が起きないオブジェクト」の作り方の解説ばっかりやってるんだろうと思っていたぐらいだ
643 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:30:42.74 ID:F4GGzYS9.net] ちなみにこの全てのオブジェクトをヒープに取ればいいじゃんの思想をデフォルトにした言語がJavaである メモリの解放漏れはGCにより問題なくなったがヌルポを量産したのは言うまでもない
644 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:32:00.30 ID:UBOPkQxC.net] ChatGPTとまでは言わんが、IDEも仕事しろ、っていう世の中ではある
645 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 23:37:47
] [ここ壊れてます]
646 名前:.47 ID:Rf3A/fx6.net mailto: >>615 金がなくなっただけでスポンサーついたら復活した [] [ここ壊れてます]
647 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 00:06:01.85 ID:KrVwEhLS.net] >>623 稼働してるの2~3人だけど当時よりは整ったはずだから今度は完成するよね? とりあえず年内にtableタグが実装だっけ?
648 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 00:11:54.90 ID:mLPybMZb.net] Javaにはポインタしかない ゆえにコンポジションを繰り返せばリンクリストのようになる でも実装継承なら という風に二つの問題は一つにつながる
649 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 01:52:03.12 ID:FMewW6Qw.net] >>616 Effective C++がコピーの話ばっかりという印象はないけどな あるのはもともとCにあるコピー問題をいかにC++で解決するかというスタンスの解説 あとコピー問題を解決するためヒープを使うってのも謎理論 それは因果関係逆でしょ ポインタをメンバーに持つデータ構造のコピーをいかに安全に実現するかでしょ STLコンテナによりそこに厳密な意味定義が必要となった
650 名前:デフォルトの名無しさん [2023/11/23(木) 07:44:46.73 ID:N5SmR8A3.net] >>568 と負け犬が申しております
651 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 09:38:23.37 ID:jt92Atwz.net] >>621 ヌルポは型無しnullpointerによる型の制約に違反する問題だろ。 スタックだろうがヒープだろうが型無しインスタンスを使う限り発生する。 c++もポインタを排除して参照のみにできれば随分違うだろうけど。
652 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 10:31:50.34 ID:mLPybMZb.net] 中途半端に浅いコピーは、深い方が正しい可能性を否定できない これがコピー問題 ヒープを使えば極端に浅いコピーになる これはバグではなく意図的にしか見えないから問題が解消する
653 名前:デフォルトの名無しさん [2023/11/23(木) 10:37:31.57 ID:mHKDjsht.net] >>597 そこはRust最低だよな
654 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 10:57:07.78 ID:KmXfNFgK.net] 機能追加が常に善なら後発言語は機能お化けに なる一方のはずだがそうはなってないので 〇〇言語には△△機能が無いからゴミという 論法はあまり意味がない
655 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 12:06:15.18 ID:gaANDpVB.net] >>627 だからお前は何でそんな遅レスなんだよw 遅レスおじさん登場〜👴
656 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 12:33:56.71 ID:cJqQ5Mzl.net] >>631 C++のよろしくない点で一番言われるのは、長い歴史といろんなパラダイムを取り込みまくったことで まさに機能お化けになっちゃったことだからな
657 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 13:07:39.51 ID:mHKDjsht.net] C++のtemplateは失敗
658 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 13:35:39.34 ID:tND7y2dZ.net] >>631 >機能追加が常に善なら 誰もそんなことは言ってないから それこそ意味のない論法
659 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 13:53:47.80 ID:KmXfNFgK.net] >>635 誰かがそういう主張しているという文章じゃ ないんだが 頭悪いな
660 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 14:01:33.34 ID:P5PvPGf5.net] 実装継承不要とか言ってたやつら負けるの早すぎだろ 拍子抜けもいいところ
661 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 15:08:18.27 ID:m+MQWJu5.net] いや。参考になったから、それはそれでいいぞ(IUnk派
662 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 16:01:38.36 ID:M3SMKrV5.net] Reactの継承を使っているコードを出せない時点で負け犬はどっちか明確 強い言葉使ってやるからかかってこい
663 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 16:37:00.29 ID:/KrkujPK.net] 「Reactは本体含めて継承は一切使っておらず、全て関数だと言い張る人がいるのですが本当でしょうか?」と 自分の主張ではないフリしてStack Overflowあたりで聞いてみ? めっちゃ馬鹿にされるだろうけどすぐに欲しがってる答えをもらえるぞw
664 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 16:38:05.49 ID:t7xzkVTj
] [ここ壊れてます]
665 名前:.net mailto: ビビってレスもできんかw 情けないクズ [] [ここ壊れてます]
666 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 16:43:11.88 ID:9Fa6B1S9.net] プロトタイプ継承もわかってないのに事あるごとにReact連呼してたのかと思うと滑稽を通り越してちょっと可哀想
667 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 16:52:07.60 ID:t7xzkVTj.net] はよそのコードを出せよ それも出せないくせに偉そうに御託をごちゃごちゃ言う 偉そうに自分語りするくせに的外れ 虫唾が走る
668 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 17:57:28.21 ID:qpiJFg02.net] 継承はプログラミングスタイルとして決定が多いため モダンな各プログラミング言語で継承が不採用となっただけでなく Reactでも継承を使わずに済むように進化してきたのよ
669 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 18:04:46.83 ID:t7xzkVTj.net] おーいまた遅レスかー? 快活クラブから出ちゃったのー?
670 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 18:52:56.05 ID:t7xzkVTj.net] >>644 多分そういう意味すらわかってないと思うよ プロトタイプ継承がどうとかそんな話とカンケーないのにな とっととReactのリポジトリクローンしてgrepすりゃわかるのに 何でその程度のことができないのか
671 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 19:34:58.02 ID:5s3/w8/I.net] src/foo/bar.jsの124行目見てどう思うプギャー とやればいいだけなのになぜかやらない
672 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 21:12:25.76 ID:FMewW6Qw.net] >>629 それは理解がおかしい 浅い深いのコピーの分類ではうまくいかなかったのが歴史 それが所有権の概念とムーブセマンティクスの導入で整理されたのが今の状態 浅いと言っていたのがムーブで深いのがコピー ヒープがどうのこうのってのは間接的なこと そもそもヒープが単一って前提もc++にはない
673 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 21:20:40.39 ID:FMewW6Qw.net] >>634 まぁ判断は難しいね 下手に表現力が高かったがために、一見言語組み込みでやるべきものの多くがユーザー側で実現されてきた 様々なテクニックが発見され発展速度向上には寄与しただろうが一方で深い考察のなく導入された結果仕様の複雑さを招いた 個人的にはエラーメッセージ見ても何が悪いのかすぐに理解できない代物になったのは許せないね
674 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 21:32:54.70 ID:12+j04nO.net] C++のテンプレートはCのマクロ文化を止めたかったんでしょ メタプロガチ勢が頑張りすぎてカオスになったけど功績は大きいと思う
675 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 21:58:33.69 ID:hsLNP7GU.net] ディープコピーを知らずに盛大に恥を晒した某オジがコピーについて語るとか世も末だなw
676 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 22:09:33.63 ID:t7xzkVTj.net] テンプレートはコンテナを矛盾なく書くのがめちゃくちゃ難しいのよ まず要素の型が実体とポインタ両方に対してうまく動くようにするのは至難の業 例のコピー可能オブジェクトの話とも絡んできて「無理」となる この辺Rustはよくできてる イテレータが可変参照なのか共有参照なのか、実体なのかによってきちんと分けられている C++で困った部分を完全に解決してくれてる Rust素晴らしい
677 名前:デフォルトの名無しさん [2023/11/23(木) 22:28:06.68 ID:0De2U7us.net] >>652 >テンプレートはコンテナを矛盾なく書くのがめちゃくちゃ難しいのよ >まず要素の型が実体とポインタ両方に対してうまく動くようにするのは至難の業 STLで何か問題でも?
678 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 23:13:27.00 ID:FMewW6Qw.net] そりゃSTLで満足してる間はそれでいいだろ アロケーターを指定したことないだろ?
679 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 23:28:00.45 ID:M3SMKrV5.net] むかしはSTLがない環境も多かったからね windows環境ではクソ遅かったせいか 完全にないものと扱う奴さえいた
680 名前:デフォルトの名無しさん [2023/11/23(木) 23:30:28.39 ID:0De2U7us.net] >>654 ,655 じゃ今の
681 名前:STLは問題ないで良いのかな? [] [ここ壊れてます]
682 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 23:37:07.63 ID:u/H26W0M.net] >>652 そこに加えてRustはスタック領域も扱えるからさらにヒープ使用を減らせるところ
683 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 23:37:56.70 ID:09UkZirn.net] 問題ないと問われればあるだろうね ただよく訓練されたC++使いは気に入らないと文句を垂れても仕方ない事もよく理解してるから その環境で可能な別の手段を用いるだけだよ
684 名前:デフォルトの名無しさん [2023/11/23(木) 23:39:53.17 ID:0De2U7us.net] >>658 曖昧なことしか書かんのだな 問題あるならどのような問題かを短いサンプルコードで具体化してよ
685 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 23:48:05.78 ID:09UkZirn.net] どのような問題かなんて別の手段で解決した後に覚えてるわけないじゃん 何でも欲しがりさんには判らないか
686 名前:デフォルトの名無しさん [2023/11/23(木) 23:58:49.29 ID:0De2U7us.net] >>660 示せないなら問題あるなんて言ってはいかんだろうよ?
687 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 00:21:55.00 ID:oZLKiYTi.net] C++はSTLを一応擁しているけど、各プロジェクトで、もうちょっと軽量で自分とこ向きのコンテナ持ってるとこが多い 異論は認める
688 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 00:29:35.14 ID:qKRvRsRu.net] >>662 でその自作コンテナを矛盾なく書くのがめちゃくちゃ難しいとな? 今のSTLは問題ないで良い?
689 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 00:31:58.77 ID:oZLKiYTi.net] 俺はSTLが重厚すぎて自分の手に負えないと思ってるので、なんとも。 STLにもバリエーションがあるのは承知していて、あんまり幅広く試せてないってのも。 ただし、依存(include)してるプロジェクトは当然あるし、試作には便利なので、ないのは困る。
690 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 07:39:29.33 ID:eRQLkcC1.net] >>652 要素の型が実体とポインタ両方に対してうまく動くようにする それはポインタを部分特殊化しろ、ということでは?
691 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 08:38:00.98 ID:4SGglGUV.net] >>663 同意を求めるなよw お前の用途ではSTLで十分ってだけ そうじゃない場合もある STLで足りるならboostもEASTLも存在してない
692 名前:デフォルトの名無しさん [2023/11/24(金) 11:26:41.73 ID:qKRvRsRu.net] >>666 >>652 >テンプレートはコンテナを矛盾なく書くのがめちゃくちゃ難しいのよ >まず要素の型が実体とポインタ両方に対してうまく動くようにするのは至難の業 これがいったい何のことを言っているのか分からんので STLで問題を指摘させれば共通の題材として議論できるからSLT取り上げた
693 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 11:31:35.71 ID:UKwUTpr8.net] 継承を使いこなせない者同士仲良くしろよなw
694 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 14:20:00.82 ID:v63PRHPl.net] 嫌儲にまでスレ立てることないだろw
695 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 14:23:40.25 ID:9RAaBgN9.net] 全然伸びてなくて草 こんな過疎スレで敗走したからって嫌儲民おらに力を分けてくれーーってやろうとしたけど そこでも無視されてる 情けない奴だ だからゴミクズなんだよ
696 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 14:29:03.78 ID:rK2EDUzF.net] Why I think C++ is still a desirable coding platform compared to Rust https://lucisqr.substack.com/p/why-i-think-c-is-still-a-very-attractive
697 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 14:36:54.58 ID:eHJQmp62.net] >>671 そもそも前半の話いる?w 的外れ過ぎて意味のない指摘だよ
698 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 16:11:19.50 ID:UVQLfV0S.net] >>671 これは酷いw
699 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 16:25:00.95 ID:tvJVQF3W.net] いくらめんどくさくても安全のお守りがほしいんすわ C++製システムがクラッシュしてうなだれたあの日の鬱憤が安全を求めるんすわ
700 名前:デフォルトの名無しさん [2023/11/24(金) 16:34:40.23 ID:6OrpRj0R.net] >>671 何故この手のやからって、 自分は今まで大丈夫だったから他の人(今度の新卒社員とか)も
701 名前:蜿苺vに違いないと思えるんだろうか。 いつも一人で仕事してるのかな。 [] [ここ壊れてます]
702 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 16:45:30.90 ID:Oe/LAESW.net] >>671 その人はRustを知らなすぎるな C++はインラインアセンブリがある云々もRustにもあるし 算術ラッピング演算の件もRustはラッピングの有無両方が用意されてるのを知らずに書いていたり
703 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 16:52:45.75 ID:KbRqc6TK.net] フルボッコで草
704 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 16:55:26.04 ID:rK2EDUzF.net] めっちゃ感想来てるw 俺は読まずに貼った、おもしろそうだったから [Roast Me] って付いてたので、異論は認める系の日記かなって思ってた 仕事終わったら俺も読む 気にしないから感想はご自由に
705 名前:デフォルトの名無しさん [2023/11/24(金) 19:51:30.59 ID:FR/8T+5m.net] >>674 わかる。他人の書いたC++ライブラリがめっちゃメモリリークする時とかそう思うわ
706 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 19:53:16.58 ID:Pf2BWo+V.net] 元記事に英語でコメント付けに行くことはしい内弁慶たちであった
707 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 20:53:52.01 ID:HwIqF0Eo.net] >>652 要約: バカには無理
708 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 22:58:47.93 ID:cJ52o0CU.net] 使うなと言ってもバカはクラス継承をどうしても使いたがって質を下げるため モダンなプログラミング言語は一斉にクラスごと言語から排除した
709 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 23:09:27.03 ID:UpLQZeUm.net] そうそうバカはclassやextendを無くせば実装継承が無くなったと勘違いするからバカに気づかれないようにカモフラージュして実装してバカが無節操に使わないようにしてるんだよなぁ
710 名前:デフォルトの名無しさん [2023/11/24(金) 23:40:23.66 ID:qKRvRsRu.net] そうしてマイナー言語マニアの思い出の一つとして 長く記憶に留まる言語となるであろう
711 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 00:57:31.51 ID:xDUppX6s.net] >>683 実装継承の定義教えてくれ
712 名前:デフォルトの名無しさん [2023/11/25(土) 09:02:19.65 ID:rKTwm3uz.net] >他人の書いたC++ライブラリがめっちゃメモリリークする 某OSのAPIのことですね判ります
713 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 09:47:04.81 ID:9BsUE7B+.net] >>685 サブタイピング時に 上位の型が持つ実装コードの一部が 下位の型と共有されること
714 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 21:29:31.59 ID:1Ohowu9E.net] 嘘オジと複オジは撃沈されたようだな
715 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 15:19:59.23 ID:06WEnIxy.net] OSにバグがあって後処理をしてもOSがリソースを掴みっぱなしになるといった経験はないだろうか。 そういった場合そのリソースを使う箇所だけ子プロセスとして隔離し、使い終わったらそのプロセスを終了する事でリソースを完全に開放させることが可能だ。 このプロセスの隔離はかなり万能な解決方法で、納期が短くて怪しいと思っても修正が困難なケースにも応用可能だ。 まあ要するにリークを疑われる場合一旦別プロセスにすれば必ず開放されるからリークは必ずしも怖くないよって話。
716 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 15:30:13.25 ID:qv9H5y0z.net] と、御社の現お取引先ホームページにありますね。 弊社はRust採用実績十分、リークは原則としてありません
717 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 16:02:44.80 ID:GTIMQwMH.net] >>687 いい定義だな
718 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 16:21:23.35 ID:8OjiBh4l.net] Rustはモダンな言語の一つなので その定義でもRustは実装継承を持たずきちんと排除している
719 名前:デフォルトの名無しさん [2023/11/26(日) 18:06:50.18 ID:6qvbnksS.net] 結局、c++が最狂ってことでいいな?
720 名前:デフォルトの名無しさん [2023/11/26(日) 18:08:00.70 ID:Dq1p+inG.net] >>618 c++が最凶最悪
721 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 18:37:35.88 ID:4YJKEDWv.net] >>689 OSの
722 名前:バグならアプリのプロセスを落としたところでリソースが解放されるとは限らない プロセス落とすのはどちらかと言うとアプリのバグに対処するため [] [ここ壊れてます]
723 名前:デフォルトの名無しさん [2023/11/26(日) 18:49:55.09 ID:o8qwwCxG.net] >一旦別プロセスにすれば必ず開放される doubt
724 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 19:14:33.38 ID:6NRjjzPt.net] すくなくともWindowsは長期間起動し続けると空きメモリが減っていく OSが意図的に開放せずにキャッシュしてるのかリークなのかは分からないが
725 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 19:39:37.59 ID:AfiVlC9p.net] >>689 それ本当にOSのバグ?w
726 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 19:41:06.05 ID:Lbe7PiAw.net] >>689 子プロレス切り離しが大仕事だろ そこで別のバグが大量に入り込む 全然簡単な話じゃない お前言うだけでやったことないだろ
727 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 19:44:09.20 ID:EBR4w0d/.net] >>689 きっしょ
728 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 22:37:51.44 ID:06WEnIxy.net] 俺が遭遇したのは2件で、どちらもOSの不具合という結論だよ MSのナレッジに残ってるかもしれないがどっちもプロセスを終了するしか解決策が示されなかった >>699 こういう理不尽に遭遇して回避策が示されたなら大仕事でもやらざるを得ないと思うけどね 別に難しいって程でもないし
729 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 22:48:32.77 ID:06WEnIxy.net] そういや別件でOSが設定しているタイムアウト値を待てない場合も別プロセスにして回避した事がある この板って年寄りばかりだろうしWindowsのプログラミング長年やってれば何度かそういう事に遭遇するんじゃないの
730 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 23:01:37.86 ID:iMOX0Yuj.net] あのね、年寄りが真面目に答えてやるとOSの観点から言うと windowsとLinuxじゃプロセスの考え方が結構違ってて Linuxの場合、バックグラウンドプロセスっていうのは普通に使われまくってるの いわゆるプロセスのクローンだから扱いが楽 シェルから作れるし 一方windowsではexeなんでクソ重い上に扱いが面倒 データ共有やプロセス間通信も一苦労だ だからwindowsではLinuxっぽいバックグラウンド処理はスレッドを使う windowsにおいてスレッドの方が軽い 一方Linuxではスレッドもプロセスも本質的に同じ (カーネルの構造体thread_structはプロセス生成の時も使う) よってプログラミングモデルがだいぶ違うため どうすべきか?はかなり違う 以上がwindowsでもLinuxでも並行処理を書いてきた俺の感想
731 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 23:12:09.99 ID:dlQxZ4PC.net] Windowsはプロセスもスレッドも、互換性チェックみたいのが重厚らしく超高コスト さらに、セキュリティソフトが走ってるのが当たり前の世界なので、ファイルハンドルも高コスト なんでもWSL2でやったほうが軽い? らしい てことで、コルーチンはいいぞw
732 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 23:30:18.11 ID:EFSUb3PR.net] Rustの東京を使えばデフォルトでCPUのコアスレッド数をフル活用してコルーチンを何万も同時に動かせますものね
733 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 00:37:45.36 ID:ggQuSpTQ.net] Elixir は、10万もの小プロセスを起動できる Go の並行処理も、mattn の本に書いてあるけど、 C で、100スレッドを起動したら、 CPU 使用率が高く、12秒も掛かったが、 Goで100 goroutine を起動したら、 6スレッドしか起動せず、9秒で済んだ Goの方が、CPUコアを効率的に使える
734 名前:706 mailto:sage [2023/11/27(月) 00:48:36.74 ID:ggQuSpTQ.net] とにかく、スレッドを起動したらダメ! CPU コアや時間の大半が、起動処理に使われるから
735 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 00:59:58.17 ID:zZXu+dmb.net] とはいえコルーチンって使い所が難しいのよ 流行りそうで流行らないのがその理由 結局「本当の並列性が必要ないようなすぐ終わる処理を大量にする」ユースケースにしか使えないから こういう処理ってあまりないことに気がつく まず真の並列性が必要となる数値計算では使えない 処理の中でブロックするとダメなのでその判断も難しい よって普通の言語では使うのが難しい
736 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 01:36:12.87 ID:O2rw1r7K.net] >>706 使いたければc/c++にはむっかしからコルーチンにファイバーがあるから native言語なんだからosの資源使う上で不利になるはずない
737 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 01:38:37.07 ID:AHLzaHDv.net] >>706 >Goの方が、CPUコアを効率的に使える そう主張したかったら根拠を示さないとね 例えば逆の根拠として Go各のgoroutineは別々の各々のスタック領域を必要とするけど Rustはスタックレスなコルーチンだから必要とせずその分だけ効率的だね
738 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 01:45:48.38 ID:zZXu+dmb.net] >>707 普通はスレッドプール使うやろ
739 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 06:31:05.54 ID:klBkI3Ol.net] おれの作成したソフトは起動時に64個のスレッドを立ち上げているが常にサクサクだ
740 名前:デフォルトの名無しさん [2023/11/27(月) 07:50:36.80 ID:h6EdzCL7.net] >>712 言語は何?
741 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 07:54:36.67 ID:klBkI3Ol.net] cppは光速
742 名前:デフォルトの名無しさん [2023/11/27(月) 09:19:45.20 ID:7/k6/GSg.net] >>701 それどころかプロセスを完全に終了させても解放されないリソースが残ることがある OSを再起動してやっと治る こんなもんOSのバグとしか言いようがない
743 名前:デフォルトの名無しさん [2023/11/27(月) 09:21:22.84 ID:7/k6/GSg.net] >>702 あるね >>699 こそやったこと無い香具師だと感じる
744 名前:デフォルトの名無しさん [2023/11/27(月) 09:24:14.02 ID:7/k6/GSg.net] >>703 Windowsにforkがあれば良かったと思うことは何度かある
745 名前:デフォルトの名無しさん [2023/11/27(月) 09:26:12.71 ID:7/k6/GSg.net] ああでも >>703 >一方windowsではexeなんでクソ重い上に扱いが面倒 >データ共有やプロセス間通信も一苦労だ >だからwindowsではLinuxっぽいバックグラウンド処理はスレッドを使う ここは完全に間違ってるよ
746 名前:デフォルトの名無しさん [2023/11/27(月) 09:30:39.99 ID:7/k6/GSg.net] >>706 >C で、100スレッドを起動したら、 >CPU 使用率が高く、12秒も掛かったが、 > >Goで100 goroutine を起動したら、 >6スレッドしか起動せず、9秒で済んだ 可笑しな理屈だな スレッド数で比較するならgoでも100スレッド使って比較するか Cの方でスレッド数増やさないCで描いたコルーチンで比較するべきだろ
747 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 10:19:10.91 ID:bfNyVWtl.net] プロセスを分けて独立したメモリ空間の単位で障害を切り離して耐障害性を高めるのは昔からよく使われる方法だけどこれはスレッドやコルーチンでは代用できない 並行性を高める目的ならコルーチン+スレッドプールが最も効率が良い C++やRustはまだまだ使いにくいけどGoやC#やSwiftのように使いやすいAPIが用意されれば誰もが当たり前のように使うようになる
748 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 13:17:02.15 ID:y1vsdTcE.net] >>717 ある程度時間がかかる処理を並行で動かすという面でこれほど楽で使いやすいものはないしね windowsへの移植性を上げるためにはforkを捨てなきゃならんのはかなり厳しい
749 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 13:22:19.90 ID:y1vsdTcE.net] windowsくんェ https://draftcode.github.io/2011/12/29/145918.html
750 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 13:27:11.60 ID:UqO8a829.net] fork移植されてると思うけどそういう話ではなく?
751 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 13:40:29.77 ID:y1vsdTcE.net] >>723 pythonじゃ使えないぞ
752 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 14:04:14.09 ID:l+s92lQ4.net] 遅くともcygwinとかで、なんちゃってforkは実装されてるけど、コレジャナイ感は付きまとうんだよな(個人の感想です
753 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 14:10:54.29 ID:O2rw1r7K.net] execなしのforkなんて時代錯誤もいいところ いまだに使ってるやついんのか? さっさと引退するのが世のために
754 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 14:17:35.21 ID:zZXu+dmb.net] RubyもNotImplementedError Perlはエミュレーションしてるがすでに非推奨レベル
755 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 14:21:41.56 ID:+D1aTXqp.net] こんどはforkを取り囲んでフェルマータするターンか
756 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 15:12:24.83 ID:qB4qrVrI.net] forkは同じページを(書き換えるまで)共有できるのが売りだと思うけどwin版は最初からコピーするのか そんな実装でfork爆弾作れるの?
757 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 15:12:35.28 ID:l+s92lQ4.net] ま、雑談だからな おもしろければどうでもおっけー
758 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 15:37:56.10 ID:+D1aTXqp.net] オジジジジジw https://medaka.5ch.net/test/read.cgi/prog/1619943288/667 667: 仕様書無しさん 2023/11/24(金) 01:57:39.09 >>665 C++のスマポは機能が弱すぎてできないことが多すぎる 例えばヒープ領域しか指せないから (L1キャッシュ効果と領域確保解放コスト無しで高速な)スタック領域の活用がスマポではできない
759 名前:デフォルトの名無しさん [2023/11/27(月) 15:50:29.33 ID:UqO8a829.net] スタック領域をスマートポインタで指す必要はあるの?
760 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 15:57:04.75 ID:l+s92lQ4.net] 先々で、うっかりfreeするような書き方してしまったときにコンパイルエラーで止まってほしい 実体としては生ポだけど、チェック用の何かにラップされてる…そういうスマポ
761 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 17:16:07.46 ID:FscsMJtl.net] いつものように誰かが書いてた受け売りで中身は理解してないんだろ 少し突っ込まれたら表面的なことを繰り返す壊れたレコードになる
762 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 17:19:29.35 ID:ZLucLoet.net] www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf
763 名前:デフォルトの名無しさん [2023/11/27(月) 19:00:17.85 ID:UqO8a829.net] >>733 実装すれば良いのでは?
764 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 19:12:23.49 ID:MloD+hDC.net] >>731 スタック領域は勝手に解放されますが
765 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 19:23:48.42 ID:VTBvXWTh.net] Rustはヒープ領域だけでなくスタック領域にまで所有権やムーブや参照の概念を拡張したことから C++よりスタック領域の活用で効率的になってる話ではないか
766 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 19:41:50.12 ID:4LX/kS4x.net] >>738 コードで示してよ C++の
767 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 19:55:41.13 ID:XLFtaca7.net] >>738 単に「何でもスタックに積む」というだけでは? ヒープはVec Box使わないと確保できないんじゃなかったっけ。
768 名前:デフォルトの名無しさん [2023/11/27(月) 19:57:13.46 ID:ceTrdy2T.net] C++は書くのがしんどい Rustもしんどいけど、生成AIに書かせたコードもコンパイルとテスト通ればメモリリークの心配なく使えるので気持ちは楽
769 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 03:07:58.34 ID:iuwbNdCf.net] Boxってヒープのメモリどうやって管理してんの?スコープ?
770 名前:デフォルトの名無しさん [2023/11/28(火) 06:19:45.83 ID:fb4KLmhh.net] >>734 ほんそれ 同じ香具師なんだろうバレバレ
771 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 07:21:41.08 ID:p7m/jx+j.net] >>742 unique ptrみたいな感じじゃない?
772 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 07:38:03.63 ID:OE19BKGq.net] >>736 自分なりには考えてみてるんだけどね ベーシックな車輪くらい、削り出せなきゃいけない ダサいので試してるってのは他言はしないけどね ここくらいだ
773 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 08:32:49.65 ID:t7+ip2Xg.net] >>738 また嘘言ってる Rustはヒープ領域だけでなくスタック領域にまで所有権やムーブや参照の概念を拡張したことから C++よりスタック領域の活用で非効率的になってる >>741 お前は死んだ方が良い
774 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 08:34:53.09 ID:4GFkN+H+.net] スタック使うってカーネルで使えるん?
775 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 09:04:02.54 ID:uB2ZO1/C.net] Rustの所有権チェックって、(コンパイル時にコストを寄せてるから)実行時はゼロコストじゃないん へたくそに書いたら効率が下がる(たいてい実装効率が上がった犠牲)のは、C/C++も同じ
776 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 10:10:56.04 ID:pC50QOa+.net] 技術的選択というのは最終的には必ずトレードオフになるので ある選択のプラス面だけしか見ない/考えない/認識できないやつは何やらせてもダメ
777 名前:デフォルトの名無しさん [2023/11/28(火) 12:14:38.37 ID:0HFLSmnD.net] 新人やお前らの前任の調子いいだけの奴がコンパイル通したコードで、rustとc++のどっちが安心できるかってことよ。
778 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 12:37:00.84 ID:zgX3htu8.net] c++に自動変数専用参照とかあるといいんだけどなぁ。 自動変数にあるスマートポインタは参照渡ししたい。
779 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 14:34:16.09 ID:5v5wYsOr.net] 今更だけどNonNullクソ便利だな
780 名前:デフォルトの名無しさん [2023/11/28(火) 14:49:32.02 ID:tbacT9e+.net] >>751 イマイチ分からんのだがコードで書ける?
781 名前:デフォルトの名無しさん [2023/11/28(火) 15:14:43.92 ID:zjrE05Ar.net] >>632 と暇人が申しております
782 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 15:30:47.32 ID:PhTWlmVC.net] >>753 void foo(shared_ptr<T>&&& p) でshared_ptr&&&が自動変数専用参照だとすると、 void main() { shared_ptr<T> ptr; foo(ptr); //スタックにあると合法 shared_ptr<shared_ptr<T>> pptr; foo(*pptr); //ヒープにあるとエラー shared_ptr<T>&&& pp = ptr; foo(*pptr); //次のスタックフレームに渡すのも合法 }
783 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 15:32:05.10 ID:PhTWlmVC.net] >>755 あ、最後は foo(pptr); だわ。
784 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 20:15:20.15 ID:QlCOA+Xa.net] メモリがスタックにあるかヒープにあるかはリンカのアドレスマップと連携すればわかる つまり欲しいなら自作すればいいのでは
785 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 21:08:43.42 ID:zgX3htu8.net] >>757 え?リンクでこねこにすればshared_ptrのカウンタを増減させなくて済むようになるんかね? そういう最適化しているリンカとかあるの?
786 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 21:40:34.18 ID:2tolr/zk.net] さっぱり意味が分からんのだけど もしかしてshared_ptr&&&なる存在に参照されたshared_ptr<T>だけはスタック上にTを保持する何者かに化けろと要求している??
787 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 21:52:40.46 ID:5v5wYsOr.net] 何がやりたいのかさっぱりわからん
788 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 23:17:43.17 ID:Y2Vu8rdK.net] クラスは必ずnewしないといけないと思いこんでいた昔のワイみたいな勘違いしてそう
789 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 23:30:04.45 ID:p7m/jx+j.net] >>759 全然違う。 shared_ptr&&&なる存在には自動変数にあるshared_ptrだけしか代入できなくて、左辺値とかヒープにあるインスタンスを代入しようとするとコンパイル時にエラーになるだけだよ。 >>760 呼び出し元の方にあるスタックフレームに保存されている自動変数は、スタックフレームのLIFOを破壊しない限り存在を保証できる。そういう自動変数を呼び出し先から安全に参照したいだけだよ。
790 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 23:38:15.09 ID:2tolr/zk.net] >>762 自動変数にあるshared_ptrは左辺値だが
791 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 23:41:06.97 ID:2tolr/zk.net] そもそも参照に対して行えるのは代入ではなく初期化だし
792 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 23:43:48.38 ID:QlCOA+Xa.net] 無知ばっかりでここまで話が通じないと思わなんだ スタックやヒープの開始アドレスがどこから始まるとか気にしたことないの? rustの悪いとこ透けて見えたわ
793 名前:デフォルトの名無しさん mailto:sage [2023/11/28(火) 23:55:41.04 ID:xnaKz8pj.net] Rustならそんな複雑なことする必要もなく Rustの方が優れている ライフタイムさえ満たせば参照
794 名前:先がヒープかスタックか関係なく同一コードでその参照を安全に返す関数などを書くことができる [] [ここ壊れてます]
795 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 00:18:45.75 ID:UMPQWy8o.net] 言い訳ばかり達者で見苦しいスレだこと
796 名前:デフォルトの名無しさん [2023/11/29(水) 01:18:06.77 ID:w45cg+MW.net] >>765 >>751 や >>755 と話繋がってないけど。 スタックやヒープの始まりは >>755 のコードでも >>751 の要件でもわからんやん。
797 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 02:07:48.15 ID:0GsI2ATG.net] どっかで身に覚えがある流れだなと思った たぶん要件定義の時点でなんかおかしいよ https://mevius.5ch.net/test/read.cgi/tech/1542002113/504-523
798 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 03:16:09.69 ID:0jw/VZcC.net] いまいちメリットがわからない ヒープのオブジェクトなら渡す前に呼び出し側でチェックすべきなのではないのか
799 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 03:26:29.12 ID:nEUPDdEn.net] バカ強制矯正共生強請言語Rust
800 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 03:32:20.62 ID:I6OxsG4L.net] >>757 どのOSも汎用的に判別できる方法はない (組み込みは除く)
801 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 06:13:09.34 ID:n75oaT1g.net] Rust推してる香具師はスタックとヒープの違いも判ってないのか
802 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 06:15:55.34 ID:n75oaT1g.net] >>768 ←これはひどい
803 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 07:33:14.16 ID:Oshr4ESo.net] 関数の定義で、shared ptr の参照を安全に受け付ける仮引数の定義方法とかあるの? 効率化のためにインスタンスのコピーは無しの方向で。
804 名前:デフォルトの名無しさん [2023/11/29(水) 08:59:38.65 ID:w45cg+MW.net] >>773 スタックの頭知りたかったらコマンドライン引数のアドレス取れば?ヒープの頭知りたかったら最初にsbrk(0)すれば?
805 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 09:22:10.12 ID:cEfAMy5j.net] >>765 それでコンパイル時にエラーにできるのかい?
806 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 09:24:24.67 ID:cEfAMy5j.net] >>775 「安全に受け付ける」の定義は? 特に何をもって「安全」と言ってるのか
807 名前:デフォルトの名無しさん [2023/11/29(水) 09:29:15.22 ID:w45cg+MW.net] >>776 これだと実行時だわ、コンパイル時にはわからんわスマン。 ってか何でコンパイル時にスタックやヒープの先頭アドレス知りたいのかわからん。 リンクしないでなんてわかりようも無いし。
808 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 10:51:01.40 ID:I6OxsG4L.net] rustはヒープとスタックを言語的に区別してライフタイムをトラックしてるだろ それが欲しいならrust使えで終わり c++では汎用的には無理 そういう要望は昔からある
809 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 11:14:58.09 ID:wOoUvEHR.net] >>778 そりゃ、関数を実行している間は参照先が無効にならないことですな。
810 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 11:26:21.99 ID:JCtBk62y.net] そもそもスタックに参照カウンタ必要か? 関数に対するスタックはプロセスに対するグローバル領域とライフタイムの考え方は同じ。 関数を抜けるまではスタックは有効だし、その関数以降に呼んだ関数が呼出元の関数を抜けた後も握り続ける状況は発生しえない (別スレッドに共有したりヒープにCopy/Moveしない限りは)からshared_ptrにする必要がないと思うが。 つまり、 T x; // スタック shared_ptr<T> x; // ヒープ で型が異なるから、強引にCopy/Moveしなけりゃコンパイルエラーで検出できるし問題は起きない。
811 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 11:39:18.60 ID:I6OxsG4L.net] >>755 はいまいちよくわからんが、ポインタを受け取る関数側でスタックかヒープを判別したいんだろ かつてそれを解決するため手法としてregion based memory managementが開発された rustのライフタイム管理の源流
812 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 11:46:11.39 ID:wioHB1Dg.net] >>773 Rustでsafeにヒープが使われるのはBoxとVecおよびそれらが組み込まれた型のみなのでヒープかスタックか明確に区別がつく >>780 参照になった時点でヒープかスタックかの区別なくライフタイムのみで安全に扱えるところがRustの勝因かな スタック領域を指す参照についても関数から返してよい参照と返してはいけない参照の区別がライフタイムでなされる
813 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 12:57:35.03 ID:/iUfnYRG.net] 例が微妙だな。直しておくか。 void foo(shared_ptr<T>&&& p) でshared_ptr&&&が自動変数専用参照だとすると、 shared_ptr<T> bar() void main() { shared_ptr<T> ptr; foo(ptr); //自動変数だと合法 foo(bar()); //自動変数でないとエラー } void foo(shared_ptr<T>&&& p) { baz(p); //次のスタックフレームに渡すのも合法 }
814 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 13:05:45.44 ID:I6OxsG4L.net] >>785 shared_ptr<T>を使うから意味が不明なんだよ Tが置かれる場所がスタックかヒープかなんだろ?
815 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 13:32:40.14 ID:SVBOdyHv.net] void foo(T& p){} void foo(shared_ptr<T>& p){static_assert}
816 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 13:33:08.54 ID:pBsavzeJ.net] >>768 なんやこれ 頭がおかしくなりそう
817 名前:デフォルトの名無しさん [2023/11/29(水) 13:37:19.41 ID:qKmTtpoR.net] >>773 スタックとヒープの違いが分かってなくても使えるなんて、なんて素晴らしい言語なんだ
818 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 13:52:43.41 ID:pBsavzeJ.net] もういいよ 議論するレベルになってない 引っ掻き回したいだけだろ この話題終わり ゴミだから
819 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 14:48:01.22 ID:wOoUvEHR.net] >>786 違う。 「shared ptr」の置かれている場所がスタックかヒープか。この場合だとTはヒープ。 >>785 はとりあえず「shared ptrが」自動変数にある場合だけエラーにならないのを想定。
820 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 15:04:52.17 ID:0jw/VZcC.net] はい終わり終わり
821 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 15:22:50.48 ID:I6OxsG4L.net] >>791 shared_ptrの参照カウントの操作を省きたいならshared_ptrの参照渡すか生ポインタ渡せばいいだろ それかrustにしろ
822 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 15:29:56.33 ID:0GsI2ATG.net] 「lvalueよりさらに限定された値カテゴリを作って、それだけを指せる参照を導入したい」という欲求 もしかして: ライフタイム
823 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 15:56:42.98 ID:8C/SUjDF.net] ヒープを排除したいのは参照してる間にfree/deleteされるのを気にしてるからかな Rustだとライフタイムというよりborrow checkで解決してる問題
824 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 16:40:54.30 ID:wioHB1Dg.net] >>795 そこでborrow checkerが具体的にしていることがライフタイムの妥当性(やミュータビリティの妥当性など)
825 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 18:22:15.98 ID:g4z1paMZ.net] >>781 ポイントしてる先がどうなってるかは関係なくてshared_ptr自体がスタック上で生きていれば「shared_ptrへの参照」は無効にならないということを「安全」だと言ってるという理解でいい?
826 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 20:22:08.97 ID:/iUfnYRG.net] >795 >797 そういう話。 RustだとRc<T>の参照をbollow checkerで(たしか)安全に管理できたけど、c++はshared ptr の参照なんて気にもしないで破棄するから、せめて自動変数に置くことを強制しできればちょっとだけ安全に効率化できるのにな、ぐらいの話。
827 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 20:54:47.61 ID:8C/SUjDF.net] RustのRcもC++のshared_ptrも参照でやり取りするより Rc本体をclone(C++なら値渡しでコピー)した方が使いやすいと思う 中身じゃなく本体を参照渡しするなら参照カウンタ増えないしRc(shared_ptr)使う意味がなさそう shared_ptrは元データが破棄されてもコピーが生き残ることに意味があるわけで この例でshared_ptrを使われると話がややこしくなる
828 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 22:26:34.34 ID:gjeaJk+d.net] >>798 なるほどそういうことならAST的なものに対してカスタムルールを定義できる静的解析ツールみたいなもので頑張ればチェックはできそう ただポイント先が途中で変化しても安全と言えるかどうか微妙 Arc/Rcはownerが複数いる場合はポイント先が変更されないことも保証されてる
829 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 12:27:38.75 ID:MXha9GzH.net] ライフタイムチェックが今のRustと同じレベルになるのは早くてもC++32以降なので過度に期待せず気長にお待ち下さい。
830 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 13:55:26.66 ID:7CM8sx7O.net] >>791 その理屈だと >>784 も頓珍漢なこと言ってる
831 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 13:57:58.44 ID:7CM8sx7O.net] 要するに >>782 で話は終わってる
832 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 14:51:08.28 ID:JOtYuMwa.net] 的はずれなことを書いてる自覚がないとはな 複オジ(>>784 )のほうが多少自覚してるだけマシかもしれんぞ
833 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 15:21:08.01 ID:D7FKv4Y4.net] >>800 自作でやるならかなり大変で、自作言語作るのと工数変わらないかも。 それならRust使ったほうが楽かね。
834 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 16:35:34.05 ID:5k4SwxyG.net] いや服おじは論外
835 名前:デフォルトの名無しさん mailto:sage [2023/12/01(金) 20:56:33.56 ID:2VykkaiV.net] >>801 サポートするとC++ではなくなってしまう 別言語を同居させたようになり混乱が増す
836 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 00:20:14.03 ID:qhhzthLD.net] C++はもうテンプレートで道を一度踏み外してる外道だから今更だよ
837 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 21:13:09.29 ID:Lt6EdYBh.net] Javaからプログラム始めたからC++の静的ポリモーフィズムやるconceptの制約がわかりにくすぎて使いこなせん C++20のconceptを使いこなせてる猛者さん、果たしてスレにおるのかね
838 名前:デフォルトの名無しさん [2023/12/02(土) 21:29:52.21 ID:ojltmATj.net] C++で継承をやろうとするのが間違いなんだよね😇 テンプレートはゴミ! ゴミなんです!
839 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 22:01:16.75 ID:PDmr7t8h.net] C++使ってるけど継承もテンプレートも使ってないな
840 名前:デフォルトの名無しさん [2023/12/03(日) 11:30:00.35 ID:QTewqrs7.net] つ ま ん ね
841 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 13:55:04.97 ID:vkjAQods.net] 最近新プロジェクトでC++書かなきゃいけなくてRust使いたがったが 外部システムやライブラリとの絡みで仕方なくC++を使うことになったのだけど std::shared_ptr std::weak_ptr std::move ムーブ代入演算子 ムーブコンストラクタ enum class constexpr(主に設定値のテーブル初期化などに使う) 新しい要素だとマジでこれだけしか使ってなかったよ 継承なしテンプレートなし 外部ライブラリとしてonetbbとminimalloc使ってるだけ これだけでもそこそこモダンなプログラミングができる あと足りないのはライフタイムだけかな C++にそれがきたらRustはいらないけど果たしていつになるのか
842 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 14:26:32.44 ID:KItL/kTG.net] shared_ptr使ったならテンプレートなしは言いすぎかな 自作テンプレートなしってところか テンプレートはライブラリとか裏方向けの要素だからアプリ開発ではあまり使わないかも
843 名前:デフォルトの名無しさん [2023/12/03(日) 14:31:19.88 ID:Xy0LqFPl.net] は?
844 名前:デフォルトの名無しさん [2023/12/03(日) 16:51:09.16 ID:455UU+Ox.net] >>813 STLって何の略だか知ってる?
845 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 17:00:48.99 ID:qGjodFlK.net] >>815 は?
846 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 17:02:40.23 ID:POEAPkcj.net] 自作テンプレートって意味だろ 文脈理解できないんだな 全部書かなきゃ理解できないタイプ?
847 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 17:43:27.43 ID:wvh0Q/xj.net] >>818 はww
848 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 17:57:09.24 ID:st4Oydl2.net] このスレはワッチョイ必要だねえ 次スレの1の本文先頭に以下を追加しといてね !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 (新スレ立ての際上記コマンドを2行書き込んでください)
849 名前:デフォルトの名無しさん [2023/12/03(日) 18:05:13.75 ID:7+5J7jul.net] >>818 はww
850 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 19:07:22.56 ID:hEqJHVGR.net] わかる 裏方向けっていうか、裏方モードのときだね アプリ開発してる最中に、ややこしいクラスライブラリを内製してる…ばっかりでもない
851 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 19:10:50.45 ID:hEqJHVGR.net] 人殴ったりはしないけど、アホなこと書いたりはしちゃうんだよねえ(無知を晒す自爆型) 1日経ったらチャラになってくれたほうが気は楽
852 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 19:13:42.60 ID:Y6w6S9dN.net] 次スレ自体いらんが
853 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 19:55:23.02 ID:hEqJHVGR.net] 絶対必要なモノなんてない 俺すら不要物
854 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 20:29:50.68 ID:2KUtTHRr.net] 俺スラ? は? www
855 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 20:33:01.48 ID:PuZI2f4X.net] >>819 効いてる効いてるw
856 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 21:02:12.27 ID:o7sDI4zZ.net] じゃあベアメタルではヒープとスタックはどうなるの?
857 名前:デフォルトの名無しさん [2023/12/03(日) 22:33:53.82 ID:K2dbitVB.net] まだいたのかベアメタル
858 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 22:41:05.20 ID:hEqJHVGR.net] マイコンいろいろ買ってみたけど、結局デスクトップばかりいじってる俺、なんとも言えずw
859 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 22:55:35.48 ID:idvLkFW9.net] RVOにより呼び出し元でスタック領域を確保できつつ Rustのようにスタック領域に対しても自動的にライフタイム管理ができていれば コストの高いヒープ領域利用を可能な限り減らしつつ スタック領域を指す参照(ポインタ)を返したり他へ埋め込んだりしていても安全に使える というシンプルな話
860 名前:デフォルトの名無しさん [2023/12/03(日) 23:01:41.36 ID:hT/LokGW.net] C++もRustもベアメタルという土俵で真価を問われると思うよ 小型軽量ガジェットでAIを高速に処理出る言語に需要があると思ってる。
861 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 23:04:45.84 ID:8f6BMxsw.net] ねーわw ガジェットww
862 名前:デフォルトの名無しさん [2023/12/03(日) 23:06:04.65 ID:JMjzgwiz.net] ガジェットじゃなくて組み込みデバイスと言え
863 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 23:16:00.90 ID:KItL/kTG.net] Rust使ってるとヒープ領域はスタック上のどこかの変数の運命共同体って感覚になるから ヒープだからコストが高いって言われると何か違和感がある Box(ヒープ配置)にするかしないかでたまに迷うけど 【スタック領域】 ・サイズが固定 ・確保、解放のオーバーヘッドがない ・スタック上で頻繁にコピーされるからでかいと不利 【ヒープ領域】 ・サイズが自由 ・確保、解放のオーバーヘッドがある ・基本的に移動しないからでかいときに有利 みたいなイメージで使い分けてる スタック/ヒープだから安全/危険とかは特にないな
864 名前:デフォルトの名無しさん [2023/12/03(日) 23:16:28.96 ID:hT/LokGW.net] 明日仕事がいやでストレスためてそうやなw
865 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 23:38:17.10 ID:4Lj+S9P7.net] >>835 >>・スタック上で頻繁にコピーされるからでかいと不利 意図的に移動しない限りコピーはされない ヒープと同じで基本的に移動の必要はない 唯一コピーが起きそうに見える関数返しによる初期化はRVOによりコピーされない ヒープと同じで確保後はそこへの参照のみ扱うため移動コピーは起きない
866 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 00:12:41.83 ID:ista3uD6.net] Result型とかOk(T)とErr(E)のTとEが同じ場所に置かれそうだけどRVO機能するのかな 真面目に調べたことないけどあまり当てにしてない 最適化で適用されたらラッキーくらいの感覚
867 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 01:36:48.81 ID:DD5cHxD/.net] >>835 スタックは常にキャッシュにのってる
868 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 02:21:32.80 ID:7y9dHiQE.net] まあRustはこのまま死ぬんだからどうでもよくね?
869 名前:デフォルトの名無しさん [2023/12/04(月) 03:52:22.51 ID:ukOfFF9P.net] >>840 おまえのレスよりは重要だろ?
870 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 04:29:02.89 ID:IuiYb6LZ.net] >>840 お前自身がどうでもいい
871 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 05:55:52.64 ID:9MFLJqwq.net] >>833-834 ハンドヘルドとはいえ、64bitレジスタ当然、メモリもギガバイト当然、ってそんなの組み込みっていうんかw // てなことだと思う
872 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 10:07:12.79 ID:vGycO/bS.net] >>835 NGワードかもしれんが stackのメリットは基本的にGCのこと気にしなくて良くなる感覚
873 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 11:26:40.76 ID:t4TeK/vS.net] たまにバカでかいオブジェクトをスタックに置くやつが現れるが スタックは一度伸びたらするスレッド死ぬまで開放されないからメモリ無駄遣いになる 組み込みやコンソールゲーム作ってるとこだとスタックに置けるオブジェクトのサイズの制限決めてるとこあると思うけどチェックがムズいよな 昔仕事でライブラリ開発したときは最大スタック消費量が仕様で決まってた バグフィクスでもその上限超えてはならない
874 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 12:05:08.64 ID:EKSqu5ND.net] >>813 そりゃ、テンプレートとかは基本ライブラリアン向けの機能で、コーダーから複雑性を隠蔽ながら高度な機能を使わせるためのものだからな。 コーダーが自作テンプレートを使わなくてはならない状況になったら、何か設計が間違っていないか注意する必要がある。 まぁc++だとそういう状況もあるから辛いけど。
875 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 12:20:54.27 ID:EwsyjZMT.net] >>837 >意図的に移動しない限りコピーはされない これは微妙すぎる 「意図的」も「移動」も恣意的過ぎるから後出し無敵じゃんけんにしかならない コピーされないこともあるがコピーされる可能性を前提として最初から考えておくべき
876 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 12:32:02.91 ID:5v4NXSIj.net] Rustのmonomorphization使った静的ポリモーフィズムと同じようなことしたければC++はテンプレート必須だから ハイレベルのコードしか書かないアプリケーションプログラマーでも普通に使う必要があるでしょ
877 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 13:13:30.82 ID:TyudsW/I.net] >>845 そういやスタックは一度伸びたら伸びっぱなしだったな これ傍から見たらメモリリークにも見えるし 何でもスタックはあかんのじゃないか
878 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 13:29:26.93 ID:+6ZMbPCa.net] 誰からも指摘されずにどんどん明後日の方向に向かって行っているのは見てる分には面白い どうか第2の毛の壁と化しませんように 南無阿弥陀仏
879 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 13:38:09.73 ID:EKSqu5ND.net] >>849 スタックの取扱いを調整すればよろし。 コールスタックとデータスタックを分けてデータスタックをメモリブロックにするとか、大きいのはマネージドヒープに置くようにするとか。 だんだんヒープに近くなるからスタックのメリットは無くなるけど。
880 名前:デフォルトの名無しさん [2023/12/04(月) 19:31:46.91 ID:Vux7QnQs.net] コードをよりコンパクトな短文にしようと追求したらテンプレートを使うようになるのはごく当たり前だよ
881 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 19:42:38.90 ID:BRBvRtzF.net] >>835 モダンなC++もそれだぞ class Hoge { private: std::shared_ptr<HogeInternal> hoge; }; Hogeは常にスタックに割り当てる 実際のオブジェクトはHogeInternalで実装する こうしておけばめちゃくちゃ安全になる
882 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 19:56:42.31 ID:S3L8tG/0.net] なんで馬鹿はshared_ptr使いたがるんだろう 生ポでいいだろ
883 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 20:13:20.11 ID:ista3uD6.net] 3/5/0則を知らないもっと馬鹿なやつがdelete用のデストラクタだけ実装して 事故が多
884 名前:発したからでは [] [ここ壊れてます]
885 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 20:18:13.44 ID:61k0lpUm.net] >>853 それはHogeInternalがヒープ領域に置かれてしまいスタック領域の利用ではない さらに参照カウントのオーバーヘッドもある
886 名前:デフォルトの名無しさん [2023/12/04(月) 20:23:01.45 ID:lyR6TlPF.net] C++、雰囲気で書いたらすぐに壊れるくせに文法がどんどん増えていくのついていけねえわ どんだけの勉強コストを一つの言語に払わせる気だよ C++に人生捧げて他のこと何も出来ない無能だけが扱える言語となりつつある
887 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 20:27:01.58 ID:648vwdUw.net] 3/5/0則みたいな言語の欠陥に疑問を持たなくなったらもう終わり
888 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 20:31:26.59 ID:KZyfgQnR.net] >>856 いだから置くんだよ 伝わってないみたいだから説明するとHogeに直接実装しないってことを言ってる 間接参照を一段挟むのよ こうすることでコピーしまくっても問題ないヒープに確保されたオブジェクトができる 多少オーバーヘッドは生まれるがめちゃくちゃ安全性は上がるんよ
889 名前:デフォルトの名無しさん [2023/12/04(月) 20:32:20.03 ID:oiJ5wZfJ.net] そそ、難解な概念使いこなせるのはすごいけど、会社でマウントとれるだけ 世の中が求めてるのはそこじゃない。
890 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 20:59:36.17 ID:H6ggqIOp.net] >>859 Rustを使えばヒープではなくスタック領域に確保してそこへの参照をオーバーヘッドなしで安全に使えるよ その点がRustとC++の差
891 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:10:50.41 ID:61k0lpUm.net] >>859 ヒープを使うというオーバーヘッドに加えて 参照カウントを使うというオーバーヘッドまで加わる もちろん各々が不可欠な場合や両方が不可欠な場合もあるがその前提や吟味をせずに まともなプログラマーがとる選択肢ではない
892 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:14:53.25 ID:KZyfgQnR.net] >>862 嫌だから共有が必要な場合って書いてあるだろ 日本語読める? 共有じゃないならstd::unique_ptrでもいいよ
893 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:15:11.88 ID:KZyfgQnR.net] Hogeに実装しないことでコピー時のオーバーヘッドを防ぐ さらに個別にコピーのことを考える必要性がなくなる HogeInternalのコピーコストだけで済むため高速 shared_ptrは安全にコピー可能 データは共有できメモリ管理も自動で行われる ヒープにとらなきゃいけなくて共有する可能性があるオブジェクトはこのパターンで実装してください マジで何も考えなくていいから
894 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:18:26.98 ID:KZyfgQnR.net] >>861 C++で極力Rustっぽく書くにはどうすべきかを突き詰めたらこうなった 褒めてくれ
895 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:25:29.71 ID:H6ggqIOp.net] >>863 Rustなら参照の共有はヒープを使わずスタックに置いてあるものに対しても安全に可能です もちろん参照カウンタは必要ありません ちなみにRustでC++のshared_ptrに相当するRc/Arcを必要とするのはもっと限定された状況で所有の共有が必要となる時のみです
896 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:32:42.16 ID:KZyfgQnR.net] 新たな間接参照でラップすることであたかも普通の変数を作るかのようにヒープに値を置ける このパターンめちゃくちゃ有用なんだがなぜあらゆる本で紹介されてないんだ?
897 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:35:03.72 ID:KZyfgQnR.net] コロンブスの卵だわ 誰もが思いつきそうで思いつかなかった
898 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:39:30.12 ID:KZyfgQnR.net] >>866 まあその辺はさすがRust
899 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 21:41:03.87 ID:ista3uD6.net] 本気でRustに寄せるならunique_ptrの方がいいな コンパイラが助けてくれないから死にそうだけど とりあえず循環参照だけは気を付けてくれ >>867 目的はちょっと違うけどPimplってイディオムがある
900 名前:デフォルトの名無しさん [2023/12/04(月) 21:54:58.33 ID:85Eugi9n.net] 継承じゃ無くて、包含して各メソッドをバトン渡しすれば良くね?
901 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 22:45:48.75 ID:t1H4jiv7.net] >>867 他のやつも書いてるけどpimplな 20年前から知られている ひたすらdelegate関数を書くのがだるい 使う側がshared_ptrで包むというルールのほうが楽
902 名前:デフォルトの名無しさん [2023/12/04(月) 23:15:56.57 ID:o6jCQk0t.net] >>872 >ひたすらdelegate関数を書くのがだるい 書かねば良いのでは?
903 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 23:53:40.38 ID:xybHpH7g.net] >>867 間接参照でいいならわざわざクラスでラップしなくてもshared_ptrそのものでいいように思うんだが shared_ptr<HogeInternal>で扱うより ラップしたHogeで扱ったほうがいいメリットって何?
904 名前:デフォルトの名無しさん [2023/12/05(火) 00:09:25.25 ID:NEqb8LdH.net] mallocでメモリ確保するの気持ちイィ🥴
905 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 00:55:04.31 ID:gtr9NjJz.net] >>872 20年前にこの概念が存在していたのか 当時はauto_ptrとかオレオレメモリ管理モジュールだったとは思うけど
906 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 00:58:42.15 ID:gtr9NjJz.net] >>872 ライブラリとして定期したい場合はshared_ptrで常に包むルールを強制するのも難しいとかかな
907 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 04:45:21.81 ID:55rynLOP.net] delegate指定子欲しいよな。 クラスor変数でまとめて指定できればなお良し。
908 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 05:43:53.62 ID:DR8rm2oC.net] それってRustのDeref?
909 名前:デフォルトの名無しさん [2023/12/05(火) 08:01:23.94 ID:HiCWBikd.net] std::byteを使ってみた結果 危険な計算ができるのがC/C++を使う理由という結論になった
910 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 08:50:09.72 ID:iiJ5Z2H1.net] 一人で何役やってるの?
911 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 09:49:41.30 ID:Akhn3hwz.net] >>881 数えてみろよ
912 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 10:22:23.63 ID:0dgzhl7w.net] >>877 Factoryメソッド経由でしかインスタンス化できないようにするとかして常にshared_ptrやunique_ptrで返すようにすればいいのでは?
913 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 10:50:40.33 ID:cS2yZHjP.net] >>879 delegateに欲しいのはあくまでAdaptorの実装を簡単にする機能。 参照外しとかして型を変えるのはNG。
914 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 11:56:35.63 ID:pNurA5HJ.net] Rustのdelegate!のようなことがC++ではまだ出来ないということか 汚いマクロ書けばできそうだけど綺麗に書くにはReflection待ちなのかな
915 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 13:26:22.00 ID:iiJ5Z2H1.net] >>882 こういうキチガイ対策にワッチョイ必要かもな
916 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 13:34:36.87 ID:gtr9NjJz.net] >>882 きっしょw
917 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 14:18:15.60 ID:DR8rm2oC.net] >>884 スマートポインタなのだから Derefにより自動的に参照できれば十分だろ
918 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 14:23:46.88 ID:4UYj/sQ8.net] ワッチョイ立てたってところで結局また次世代言語スレと同じ流れになってRustスレに帰ってくるんだろ
919 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 14:24:46.44 ID:4UYj/sQ8.net] ×立てたってところで ○立てたところで
920 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 14:31:18.82 ID:1iJo44eg.net] Adaptorにだけ執拗にこだわるオジもアレだか Adaptorも知らずにDerefを勧めるオジは論外
921 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 14:58:30.60 ID:gtr9NjJz.net] >>883 ユーザーに返す型では流石に気持ち悪いと思うなあ C++難し過ぎるだろ 選択肢が多過ぎる かといって安全でもない もうRust使わせてくれ
922 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 15:21:39.57 ID:MywljXTh.net] >>892 別の理由でfactory使うときはどのみちshard_ptrかunique_ptrにせざるを得ない (生ポインタはありえない) だからそこを気持ち悪いと言っても仕方ない
923 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 15:51:48.29 ID:Nvodex4n.net] >>892 Rustでもそこは同じだと思うよ ライブラリからBoxやArcが返されるものもあればそれらをラップした型が返されるものもある
924 名前:Vンプルなケースなら前者の方が圧倒的に使いやすい 内包する型のネストが深い場合などで便利メソッドを提供するなら後者ってイメージ 要はラップするだけの付加価値があるかどうか [] [ここ壊れてます]
925 名前:デフォルトの名無しさん [2023/12/05(火) 15:52:25.13 ID:QJai9ytv.net] >>854 馬鹿は平気で二重に解放したりする 全然気にしないから馬鹿なんだけどね
926 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 16:00:15.02 ID:8v2tQb+c.net] >>854 いやいやいやいやw
927 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 16:26:52.90 ID:sq6EbAl6.net] リファレンスカウンタ方式のGCを基本にするんならGC言語でいいんじゃねってならない?
928 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 16:45:36.42 ID:iiJ5Z2H1.net] >>889 えー
929 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 16:47:29.78 ID:MywljXTh.net] ならない リアルタイム系アプリでGCは困る
930 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 17:17:38.64 ID:CoP1YuvK.net] 循環参照で発生するリークを検出するか放置するか あるいは循環参照を回避するか それが問題だ
931 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 17:29:27.24 ID:W0r7TCUZ.net] >>899 マークスウィープの話をしてないぞ リファレンスカウンタ方式のGCすら使えないというならshared_ptrも同様に使えないということになる
932 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 17:59:20.81 ID:ugZXhcp8.net] 手動メモリ管理のできないGC言語は高コストをかけて循環参照を回収せざるをえない 手動メモリ管理のできるC++/Rustは循環参照を避けることができて低コスト その話とは別にshared_ptrやRc/Arcは参照カウンタによるコストがかかる そのため複数所有者を使わざるを得ない場合に限定して用いる
933 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 18:13:07.15 ID:Ppu4uIXE.net] >>902 Weak Reference等を使って循環参照を手動で避ける方法が用意されてるかどうかは手動メモリ管理かどうかとは全く関係ないよ
934 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 18:43:14.63 ID:gtr9NjJz.net] >>894 気持ち的にはラップしたいかなあ
935 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 19:04:48.69 ID:gtr9NjJz.net] 全銀システム障害「詳細設計書見落とし」でオーバーフローの痛恨、再発防止なるか https://xtech.nikkei.com/atcl/nxt/column/18/00001/08680/ Rustを使えばいいじゃない
936 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 19:13:25.15 ID:gquaqYbt.net] IBMだったらJavaだったのに
937 名前:デフォルトの名無しさん [2023/12/05(火) 19:18:25.05 ID:800y2Su3.net] 積極的にC++を使いたがる人ってC++のどこに魅力を感じているんだ
938 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 19:24:31.25 ID:GrTJwyK/.net] Cとの互換性
939 名前:デフォルトの名無しさん [2023/12/05(火) 19:32:43.32 ID:4rw/VL0P.net] >>897 問題はGC言語は *常に* GC機能ありなところ。
940 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 19:40:36.09 ID:iiJ5Z2H1.net] >>907 オブジェクト指向w
941 名前:デフォルトの名無しさん [2023/12/05(火) 20:04:51.38 ID:3vhS3QGH.net] リファレンスカウンター気にするくらい速度を求めるなら、RAIIすら嫌だとはならんのかな mallocはプログラムの最初に一回呼ぶ以外は許されない
942 名前:デフォルトの名無しさん [2023/12/05(火) 20:31:30.51 ID:GM9Glwep.net] >>907 組み込み系でオブジェクトやりたい人 あと意図的に悪意あるコードを仕込む人とか。
943 名前:デフォルトの名無しさん [2023/12/05(火) 21:15:38.20 ID:HiCWBikd.net] やりたいことが出来るのが一番の理由 アンリミテッドが魅力
944 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 21:36:14.43 ID:9fH1d+k3.net] 参照カウントて結構コストあったよな……と探したら解説見つけた。 yamasa.hatenablog.jp/entry/2021/01/29/012525 昔は並列処理と相性悪いと言われていたけど、今はどうかね?
945 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 21:36:19.50 ID:ckmQfDX3.net] ++C Unsafety Unlimited C++
946 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 21:43:08.45 ID:tZxAn7Rl.net] >>909 GC言語でもunsafeで手動
947 名前:管理とかできるよ Rustと同じで基本がsafeだからC++をsafeにしていくよりもずっと簡単で問題が起きにくいアプローチ [] [ここ壊れてます]
948 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 21:59:57.96 ID:puqODfvy.net] >>902 >そのため複数所有者を使わざるを得ない場合に限定して用いる 複数所有者を使わざるを得ない状況かどうかを確実に見分けるのはそれなりに難しい Rustの場合はコンパイル通らないから無駄にRc/Arcを違うことはあっても逆はないので安全 C++は逆もある >>853 が「めちゃくちゃ安全になる」と言ってる理由もその辺にあるのでは
949 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 22:10:46.45 ID:vNAfxFS3.net] >>911 RAII自体はコストゼロ RAIIで解放されるスタック上の値の型にデストラクタがある時にその実行コストがかかる そしてヒープ領域を所有していればヒープ解放コストがかかる 何度もヒープ確保解放を繰り返すよりはなるべく最初に確保するのはもちろん正しい スタック領域で済ませられるならさらに望ましい
950 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 22:57:00.41 ID:iiJ5Z2H1.net] 全部独り言だったりしてw
951 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 01:20:30.01 ID:N0N71GtG.net] メモリに展開するのにオーバーフローしてもエラーを通知しないの? https://japan.zdnet.com/article/35212258/ 言語はCらしいけどどういうプログラムなんだろう まじでmallocしてそこにmemcpyしてるだけなんじゃないか 対策はRustで書き直せ
952 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 01:23:15.09 ID:N0N71GtG.net] たとえクソレガシーだったとしても書き込むアドレスの範囲が想定してるものかのチェックは入れるべきだろう どうせオフセットも手計算だろうし
953 名前:デフォルトの名無しさん [2023/12/06(水) 01:40:45.31 ID:MT5mgeUa.net] >>916 >>>909 >GC言語でもunsafeで手動管理とかできるよ どの言語?具体名あげてくれ。
954 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 01:58:21.86 ID:+XLnMsko.net] [gc unsafe] [🔍]
955 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 09:15:07.04 ID:oM0gjrfW.net] >>867-868 循環参照は?
956 名前:デフォルトの名無しさん [2023/12/06(水) 09:17:14.31 ID:oM0gjrfW.net] >>867 >あらゆる本で紹介されてない a)全ての本で紹介されていない b)紹介された本がひとつもない どっちの意味?念のため確認
957 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 09:18:07.12 ID:oM0gjrfW.net] >925 補足 a)全ての本で紹介されていない (紹介されてる本は少なくとも一つ以上ある)
958 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 09:20:39.56 ID:oM0gjrfW.net] >>868 思い付いている人は大勢居る >>865 >C++で極力Rustっぽく書く いやいや Rust 以前から Rust 無関係に C++ で普通に C++ っぽく描いた結果でしょ きみ承認欲求強過ぎるね
959 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 10:53:51.94 ID:CNnXy5JV.net] >>922 メジャーなとこで言えばC#とかSwiftとか
960 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 11:45:54.12 ID:oM0gjrfW.net] >>905 やっぱりNATテーブル不良で再起動したら治るルーターじゃん
961 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 12:09:32.50 ID:4VSkBLs6.net] >>929 頭大丈夫か?
962 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 12:31:44.18 ID:3kI3ay52.net] 型推論の是非を問いたい 書くのは楽かもしれないが読みにくくね? 型の重複記述は省きたいがまったく型がわからなくなると理解が難しくなる 読みやすさを優先すべきだと思うがどうだろう IDEやエディタのサポートでカバーされるという考え方もあるが、カーソル合わせないとわからないしな
963 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 12:44:38.03 ID:lEEu+DT0.net] >>931 ややこしい型の手書きとか効率悪化の元だから駄目。 せいぜいIDEに型のコメントを自動生成させるくらいまでだな。手動は更新されなくなってバグの温床になる。
964 名前:デフォルトの名無しさん [2023/12/06(水) 12:46:06.06 ID:MT5mgeUa.net] >>931 けっこう同意。 変数初期化ではリテラルでの場合だけ型推論利用して、そうでなければ型書いちゃうことも多い。
965 名前:デフォルトの名無しさん [2023/12/06(水) 12:51:11.58 ID:MT5mgeUa.net] >>932 >手動は更新されなくなってバグの温床になる。 型変わったらコンパイル通らないし、型明示がバグの温床になるってのは無い。 修正の手間が増えるってのはわかる。
966 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 12:54:09.75 ID:B4jpx9xe.net] 複雑な型名を知る必要がない場合も多い 例えばRustなら関数の引数型も返り型でも具体的な型名を書かずに impl Trait名 と使う機能のトレイト名だけを指定したり
967 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 12:56:26.38 ID:lEEu+DT0.net] >>934 c++はスライシングあるからエラーにならない例外もある。 レアケースだけど。
968 名前:デフォルトの名無しさん [2023/12/06(水) 13:09:40.96 ID:6EzLMFr7.net] 同じ情報を二重に書くのはプログラマなら普通疑問に思う
969 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:12:47.35 ID:N0N71GtG.net] >>924 コピー時はweak_refで渡すので良いかと思うのだが
970 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:14:02.81 ID:N0N71GtG.net] >>925 普通に考えてaじゃないの? なんで紹介とか出てくるんだ?
971 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:17:03.16 ID:3kI3ay52.net] >>937 ある程度の重複さによってミスを早期発見できる効果があるから一概にそうはいえないぞ
972 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:31:08.88 ID:UHi6Tpqq.net] 俺のプログラムにバグがあるのは 俺がまだ本気出してないだけだから
973 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:38:13.20 ID:+XLnMsko.net] どれだけスレが進行しても客観的な基準が示されず 主観バトルを発生させ続け 留まるところを知らない概念 可読性
974 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:40:26.85 ID:uGBP6FLN.net] >>938 いやそれだとshared_ptrの意味ないから shared_ptr使う限りは本質的には解決は難しい それは生でshared_ptr使う場合も同じ get_weakというメソッドでweak_refでラップして返すメソッドを提供するとかだろう
975 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 13:44:37.37 ID:uGBP6FLN.net] 全銀のシステムこの規模で低レイヤーのメモリ操作しまくるのにC使ってるのマジで狂気としか思えないな コードレベルのユニットテストもないのだろうし 絶対こういうこと起きるやん
976 名前:デフォルトの名無しさん [2023/12/06(水) 13:55:39.00 ID:6EzLMFr7.net] >>940 保守できなくなるから必ず避けるべき
977 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:04:56.53 ID:3kI3ay52.net] >>945 プログラミング言語自体、ある程度の冗長性があるようにデザインされている たからこそコンパイルエラーという現象が起こる そもそもテストを書くという行為が重複した作業なのだけどやるだろ? 仕様変更したら書き直しなのは仕方ない
978 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:06:40.52 ID:ts/cnrJA.net] Cであることは関係なくね? データ形式の共有に失敗すればどこでも起こりそう 記事だけだとよく分からんけどAAABBBをABABABって誤認した感じでしょ
979 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:10:35.44 ID:4S+GIU/C.net] ABAP
980 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:11:26.67 ID:6EzLMFr7.net] >>946 >プログラミング言語自体、ある程度の冗長性があるようにデザインされている それは妥協の産物で悪だよ >たからこそコンパイルエラーという現象が起こる 冗長性がない言語があったとしてコンパイルエラーは起こるし意味がある >そもそもテストを書くという行為が重複した作業なのだけどやるだろ? >仕様変更したら書き直しなのは仕方ない 最初に型名が正しいと確認されたら型推論に任せるべきです
981 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:17:11.63 ID:N0N71GtG.net] >>947 どこを読んだらそうなるんだ?
982 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:41:23.05 ID:oM0gjrfW.net] >>945 >保守できなくなるから必ず避けるべき 保守する気がなくなるから必ず避けるべき ならわかる
983 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:44
] [ここ壊れてます]
984 名前::32.97 ID:uGBP6FLN.net mailto: >>947 なんも分かってなくて草 あの記事だけで普通は全部理解できるぞ [] [ここ壊れてます]
985 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 14:52:19.97 ID:3kI3ay52.net] >>949 > 最初に型名が正しいと確認されたら型推論に任せるべきです その最初の確認ってどうすんのさ? まったく字面では現れない場合があるよね もともとはその場合の話
986 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 15:01:15.76 ID:ts/cnrJA.net] >>952 記事から全部理解できたならたぶん別の記事だと思う
987 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 15:07:10.91 ID:N0N71GtG.net] >>954 正確にはスライド 普通にわかる
988 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 15:12:14.26 ID:6EzLMFr7.net] >>953 まぁそうだね >>932 で私の言いたいことは書かれてたや
989 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 15:22:00.69 ID:aoO2XCof.net] 全銀のやつは記事に書いてることはわかるがめちゃくそ疑問だらけ なんで生成時にサイズチェックしないのか なんで生成されたテーブルをチェックしてないのか なんで生成されたテーブル使った試験をしてないのか 一般企業でもなかなかお目にかかれないひどい内容だがそれを金融系のしかも全銀がやっちゃうってのが信じられないわ
990 名前:デフォルトの名無しさん [2023/12/06(水) 15:26:41.21 ID:MT5mgeUa.net] >>944 同感
991 名前:デフォルトの名無しさん [2023/12/06(水) 15:33:52.57 ID:MT5mgeUa.net] 型推論よりインテリセンスとか補完がうざい。 こっちの入力リズムに合わないとイラっと来ることある。
992 名前:デフォルトの名無しさん [2023/12/06(水) 16:16:19.10 ID:oM0gjrfW.net] >>957 同感
993 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 16:17:28.30 ID:oM0gjrfW.net] >>959 判る 入力enterで違う単語になってたら殺意を覚える
994 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:22:40.40 ID:SQhb0To1.net] Pimplが説明してるある本がないか立ち読みしたのだがあった 最近出たC++ソフトウェア設計という本にモロに書いてあった こんな本いつの間に出てたんだ? モロに俺がドヤ顔したパターンじゃねえか... この本内容もめちゃくちゃ良いぞ
995 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:31:32.46 ID:6EzLMFr7.net] pimplってGoFになかったっけ?
996 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:37:31.41 ID:+XLnMsko.net] ヘッダファイルの変更のせいで再コンパイルされるC++特有の問題に対処するのが主目的のpimplがなんでGoFにあると思ったんですか?
997 名前:デフォルトの名無しさん [2023/12/06(水) 18:54:10.35 ID:MT5mgeUa.net] >>962 pimpl、10年前の本「C++のためのAPIデザイン」(2012年)にも載ってるぞ。
998 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 18:55:40.21 ID:SQhb0To1.net] まあPimplの主張はコンパイルサイズを固定するとか 内部を隠蔽することが主目的っぽいね この本ではImplにunique_ptrを使ってコピー時にmoveする実装になってる
999 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 19:05:32.22 ID:ts/cnrJA.net] 知ってると役に立つけどC++使う気が失せる技法のひとつだな
1000 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 19:09:45.42 ID:+XLnMsko.net] >>966 >unique_ptrを使ってコピー時にmoveする 恐怖!auto_ptr再発明男!
1001 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 19:24:48.89 ID:lBgUAnRO.net] >>965 紙本は絶版っぽい kindleがあるから買うか悩むなあ クソ高いし
1002 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 19:26:54.33 ID:lBgUAnRO.net] 確かに不毛過ぎる気はする 本質的じゃない部分ですげー頭使わなきゃならんし 面白い部分でもない 素直にrust使うべきだわ
1003 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 19:48:07.27 ID:Pw3WwC1e.net] 銀行はやったこと無いけどSIerの下請けで お役所のシステム移行の 仕事したときにライブラリ一つに数万個のテストケースが 用意されてあらゆる仕様適合をチェックしていたので 実装でアホなことしててもテストで叩き落とせばよいという 思想なのかも
1004 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 20:02:44.32 ID:Knh+cYx8.net] >>964 GoFのBridgeパターン
1005 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 20:16:14.69 ID:3kI3ay52.net] ヘッダーに実装書きまくるのが今のクソc++だからpimplにしたところでというのはある
1006 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 20:37:00.46 ID:MnzvwPfi.net] 実装を書かざるを得なくなってヘッダーと呼ぶのが不適切になったから.hの拡張子がなくなった
1007 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 20:57:06.52 ID:N0N71GtG.net] Pimplの良い説明を見つけた この中のstd::shared_ptrの場合が今議論されている項目のようだ www17.plala.or.jp/KodamaDeveloped/LetsProgramming/details_pimpl_idiom.html
1008 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 22:01:15.11 ID:rDPAp/5U.net] IT大手がRustへ舵を切るわけだな
1009 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 22:38:24.64 ID:UoD976YL.net] pimplはScott MeyersのEffective Modern C++が詳しい(Effective C++にもある程度書いてある) shared_ptrじゃなくunique_ptrを使えと書いてる https://en.cppreference.com/w/cpp/language/pimpl https://herbsutter.com/gotw/_100/
1010 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 22:38:53.88 ID:UoD976YL.net] >>972 構造が似てるだけで全然別のもの
1011 名前:デフォルトの名無しさん [2023/12/07(木) 00:06:56.11 ID:3PWWuEZS.net] デザインパターンとは構造について述べたもの pimplはBridgeパターンの一適用例 別のものではない
1012 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 00:37:25.72 ID:mM7hpDu4.net] >>979 >デザインパターンとは構造について述べたもの 全然違うよ GoFにもそういう考えを明確に否定する内容が書いてある
1013 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 00:41:10.07 ID:katRzGi9.net] C++オブジェクト設計という本にはbridgeパターンの一種で継承や多態性が必要がない場合の単純な例としてPimplの説明があった
1014 名前:デフォルトの名無しさん [2023/12/07(木) 00:52:49.01 ID:3PWWuEZS.net] >>980 議論をしたければ GoFに書いてあるそういう考えを明確に否定する内容 を述べ給え
1015 名前:デフォルトの名無しさん [2023/12/07(木) 00:55:08.82 ID:3PWWuEZS.net] >>981 一見して分かりそうなもんだけどね
1016 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 01:04:03.35 ID:Avn/NPEq.net] C++の不完全型とJavaのインターフェースが同じに見える人には同じに見えるんだろう
1017 名前:デフォルトの名無しさん [2023/12/07(木) 02:06:38.63 ID:Sudvf4UZ.net] >>980 そんなこと書いてねーぞ
1018 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 09:57:06.17 ID:XOE4A360.net] RustでGUIのアプリがつくりたいです
1019 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 11:16:21.90 ID:Gb/m/afO.net] egui
1020 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 13:36:44.52 ID:XOE4A360.net] >>987 ありがとう これはおもしろそうでごす
1021 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 23:09:48.18 ID:wfAAUjY+.net] えぐい
1022 名前:デフォルトの名無しさん [2023/12/08(金) 09:55:56.32 ID:k3Bpg+TD.net] 踏んどくか
1023 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 09:58:29.65 ID:k3Bpg+TD.net] 結局C++とRustってどっちが良いの? 9traits https://mevius.5ch.net/test/read.cgi/tech/1701997063/
1024 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:01:41.64 ID:dTkbwwL5.net] unsafe { 次スレいらんわボケ }
1025 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:15:03.32 ID:k3Bpg+TD.net] ・めとくか
1026 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:27:55.85 ID:gyEpWkla.net] Cで書かれたプログラムがある Rustに移植せよ https://uguisu.skr.jp/othello/7gyou.html https://ideone.com/0xz2SJ
1027 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:38:32.80 ID:DJ4GSkDO.net] こんな短く書けるんだ!
1028 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:39:02.81 ID:k3Bpg+TD.net] RustはCとの相性は良いがC++との相性は最悪
1029 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:39:54.69 ID:k3Bpg+TD.net] どうしてもC++を捨てられない人は RustよりNim使った方が救われる
1030 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:40:47.47 ID:k3Bpg+TD.net] >>994 このスレの腕自慢建ちなら一瞬で移植してくれるだろう
1031 名前:デフォルトの名無しさん mailto:sage [2023/12/08(金) 10:41:18.48 ID:k3Bpg+TD.net] 間違えた x 建ち o 達
1032 名前:デフォルトの名無しさん mailto:さげ [2023/12/08(金) 10:41:47.84 ID:k3Bpg+TD.net] 次 https://mevius.5ch.net/test/read.cgi/tech/1701997063/
1033 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 40日 20時間 56分 48秒
1034 名前:過去ログ ★ [[過去ログ]]
1035 名前:。 このスレッドは過去ログ倉庫に格納されています [] [ここ壊れてます]