- 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/
- 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 名前:。 このスレッドは過去ログ倉庫に格納されています
[]- [ここ壊れてます]
|

|