スレタイ以外の言語もok
前スレ
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1587276362/
探検
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
2021/08/22(日) 08:59:03.31ID:QorwbXcj
707デフォルトの名無しさん
2021/11/16(火) 08:37:19.90ID:mhJuEb25 「GC機能」とやらはどこで定義されてるん?
708デフォルトの名無しさん
2021/11/16(火) 08:42:24.55ID:KQuNI5Eh709デフォルトの名無しさん
2021/11/16(火) 08:47:56.56ID:cHZw5Yem 以下いずれもやっていること・行われることは全て同じ
抽象化と省力化が進んだのみ
C「free()で解放」
↓抽象化+付加機能
C++「deleteでデストラクタを呼んで解放」
↓自動化+所有概念(専有vs.共有)
現C++「スマートポインタ利用でdeleteを自動行使」
↓全般化+静的完全性チェックbyコンパイラ
Rust「全てがスマートポインタ相当扱い」
これらとGC言語の違いは「プログラマーがメモリ管理をしていること」
つまり一見すると自動解放されるためメモリ管理していないように見えるが
プログラマーは所有権を管理することでメモリ管理をしている
GCの定義を「利用者がメモリ管理をせずとも自動的にメモリが解放される」とすることで皆が納得できる
抽象化と省力化が進んだのみ
C「free()で解放」
↓抽象化+付加機能
C++「deleteでデストラクタを呼んで解放」
↓自動化+所有概念(専有vs.共有)
現C++「スマートポインタ利用でdeleteを自動行使」
↓全般化+静的完全性チェックbyコンパイラ
Rust「全てがスマートポインタ相当扱い」
これらとGC言語の違いは「プログラマーがメモリ管理をしていること」
つまり一見すると自動解放されるためメモリ管理していないように見えるが
プログラマーは所有権を管理することでメモリ管理をしている
GCの定義を「利用者がメモリ管理をせずとも自動的にメモリが解放される」とすることで皆が納得できる
710デフォルトの名無しさん
2021/11/16(火) 08:59:05.41ID:2/DPJM9H >>706
Arc/Rcのことじゃないよ
動的に確保したメモリ領域を指してる所有権のある変数が
ムーブされずにスコープを抜ければ解放されるようコンパイラがよろしくやってくれる
これも参照カウント方式?
Arc/Rcのことじゃないよ
動的に確保したメモリ領域を指してる所有権のある変数が
ムーブされずにスコープを抜ければ解放されるようコンパイラがよろしくやってくれる
これも参照カウント方式?
711デフォルトの名無しさん
2021/11/16(火) 09:08:46.14ID:mhJuEb25 >>708
ソースはWikipediaなの?
ちなにみ英語版では
> In computer science, garbage collection (GC) is a form of automatic memory management.
となってて機能というより形式って感じかな? どうでもいいけど
あと
https://en.wikipedia.org/wiki/Manual_memory_management
のページのRAIIの段には
> This can also be used with deterministic reference counting.
> In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework,
> use of the shared_ptr template in the language's standard library to perform memory management is a common paradigm.
こういうのがでてきてるね
automate memory deallocation ね
ソースはWikipediaなの?
ちなにみ英語版では
> In computer science, garbage collection (GC) is a form of automatic memory management.
となってて機能というより形式って感じかな? どうでもいいけど
あと
https://en.wikipedia.org/wiki/Manual_memory_management
のページのRAIIの段には
> This can also be used with deterministic reference counting.
> In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework,
> use of the shared_ptr template in the language's standard library to perform memory management is a common paradigm.
こういうのがでてきてるね
automate memory deallocation ね
712デフォルトの名無しさん
2021/11/16(火) 11:32:23.17ID:O0etR+7l RustやC++にGCがないという言及でGCが意味するところはガベージコレクタというランタイム処理ののことで
ガベージコレクションの仕組みがないとは言っていないという理解をしている
ガベージコレクションの仕組みがないとは言っていないという理解をしている
713デフォルトの名無しさん
2021/11/16(火) 11:59:42.80ID:cHZw5Yem714デフォルトの名無しさん
2021/11/16(火) 12:16:23.63ID:/J0mEe48 いつまでやるんだよこの話
GCスレでも作ってそっちでやれ
GCスレでも作ってそっちでやれ
715デフォルトの名無しさん
2021/11/16(火) 13:00:34.21ID:KQuNI5Eh716デフォルトの名無しさん
2021/11/16(火) 13:01:16.80ID:pnSrHZZq ぼくのかんがえたさいきょうのGC言語の定義なんぞ
プログラム作成になんの役にも立たんから
好きにしてくれ
プログラム作成になんの役にも立たんから
好きにしてくれ
717デフォルトの名無しさん
2021/11/16(火) 13:24:00.95ID:cHZw5Yem718デフォルトの名無しさん
2021/11/16(火) 14:12:09.47ID:2/DPJM9H >>712
その場合はガベージコレクタとは何か?
ランタイム処理とは何か?って定義がないと境界線が曖昧なまま
ガベージコレクションを行う主体(行為者)をガベージコレクタ、
コンパイル時じゃなく実行時に解放タイミングを決定する意味でランタイム処理と言ってるなら
RustのRcやC++shared_ptrはGCの意味するところに当てはまる
ランタイム処理がGoやObjective-Cのようなruntime libraryによって行われる処理って意味で言ってるならあてはまらない
その場合はガベージコレクタとは何か?
ランタイム処理とは何か?って定義がないと境界線が曖昧なまま
ガベージコレクションを行う主体(行為者)をガベージコレクタ、
コンパイル時じゃなく実行時に解放タイミングを決定する意味でランタイム処理と言ってるなら
RustのRcやC++shared_ptrはGCの意味するところに当てはまる
ランタイム処理がGoやObjective-Cのようなruntime libraryによって行われる処理って意味で言ってるならあてはまらない
719デフォルトの名無しさん
2021/11/16(火) 14:12:38.51ID:vHF3kJ9c wikipedia含め自然言語の定義など絶対的なものじゃないよ
その言葉を使った文脈で意味が正しく伝わればいいだけ
その言葉を使った文脈で意味が正しく伝わればいいだけ
720デフォルトの名無しさん
2021/11/16(火) 14:16:08.22ID:x6Dvmgzi >>714
Rust狂信者がGC無いということにして布教したくて、大暴れして嫌われてる真っ最中。完全頭がイカれてる
個々人の見方によればどうでも良い事なんだが、狂信者の"信仰が揺らぐ"ので納得しない。
Rust狂信者がGC無いということにして布教したくて、大暴れして嫌われてる真っ最中。完全頭がイカれてる
個々人の見方によればどうでも良い事なんだが、狂信者の"信仰が揺らぐ"ので納得しない。
721デフォルトの名無しさん
2021/11/16(火) 14:24:20.34ID:JxdD+I2A 科学技術と科学技術が対立するのはよくある現実
対立するのは科学と宗教だと思ってるのは現実逃避
対立するのは科学と宗教だと思ってるのは現実逃避
722デフォルトの名無しさん
2021/11/16(火) 14:25:50.64ID:SlziVE7V723デフォルトの名無しさん
2021/11/16(火) 14:26:44.88ID:2/DPJM9H >>715
参照カウントじゃないとしてGCの定義にしたがった場合にRustのやり方は何らかの方式のGCなのかどうか?
あとSafe Rustなら他が参照してればコンパイルエラーじゃないかな
unsafeなら参照側を長生きさせるバグを埋め込むことは可能
参照カウントじゃないとしてGCの定義にしたがった場合にRustのやり方は何らかの方式のGCなのかどうか?
あとSafe Rustなら他が参照してればコンパイルエラーじゃないかな
unsafeなら参照側を長生きさせるバグを埋め込むことは可能
724デフォルトの名無しさん
2021/11/16(火) 14:28:43.97ID:QRdL5Qqy 参照カウントは、GCか、GCじゃないのか
クソどうでもいい
まあGCだけどね
クソどうでもいい
まあGCだけどね
725デフォルトの名無しさん
2021/11/16(火) 14:28:57.30ID:hZl5lwq3726デフォルトの名無しさん
2021/11/16(火) 14:31:25.51ID:x6Dvmgzi Rust寄りの話をすればGCの有無という定義より、現時点のコンパイラの方法は、Rustがメモリー回収の
コスト(CPU消費)が他に比べて小さいだけの話。参照カウントやBoxのようなスコープで解放と確保を
繰り返す事を「GCの有無に関せず」コストを話している人にも定義の有無の話にレイヤーが違うなどと
言いつつ巻き込んでくる。マジもんの狂信者には言葉は通じない
コスト(CPU消費)が他に比べて小さいだけの話。参照カウントやBoxのようなスコープで解放と確保を
繰り返す事を「GCの有無に関せず」コストを話している人にも定義の有無の話にレイヤーが違うなどと
言いつつ巻き込んでくる。マジもんの狂信者には言葉は通じない
727デフォルトの名無しさん
2021/11/16(火) 14:34:03.96ID:SlziVE7V >>725
Arcはマルチスレッドで共有する時にRcに対してアトミック操作が必要な時にRcの代わりに用いる
シングルスレッド共有: Rc
マルチスレッド共有: Arc shared_ptr
もちろん後者の方がコストが高い
Arcはマルチスレッドで共有する時にRcに対してアトミック操作が必要な時にRcの代わりに用いる
シングルスレッド共有: Rc
マルチスレッド共有: Arc shared_ptr
もちろん後者の方がコストが高い
728デフォルトの名無しさん
2021/11/16(火) 14:40:58.65ID:x6Dvmgzi SwiftやObjective Cなんかはさらに進んでいて、ARCだけだとカウントがボトルネックになる場合があるから
特定のデータ構造についてはGCみたいのを自作する。狂信者は聖典に書いてあることが真理。
レイヤーはネ申が決めた侵さざるべき領域、なんじネ申の言葉たるRustを喋れ、邪教たる他言語を駆逐せよ
特定のデータ構造についてはGCみたいのを自作する。狂信者は聖典に書いてあることが真理。
レイヤーはネ申が決めた侵さざるべき領域、なんじネ申の言葉たるRustを喋れ、邪教たる他言語を駆逐せよ
729デフォルトの名無しさん
2021/11/16(火) 14:42:11.98ID:SlziVE7V >>725
そしてもちろんshared_ptrもArcもRcも所有権を管理するために用いる
所有者が複数可能
一方でunique_ptrやRustの一般は所有者が1人のみなので所有権は維持するか譲渡するかになる
そしてもちろんshared_ptrもArcもRcも所有権を管理するために用いる
所有者が複数可能
一方でunique_ptrやRustの一般は所有者が1人のみなので所有権は維持するか譲渡するかになる
730デフォルトの名無しさん
2021/11/16(火) 14:57:58.41ID:bbFwgKot >>727
ARCってこれのことでは?std::sync::Arcじゃなくてさ
https://en.m.wikipedia.org/wiki/Automatic_Reference_Counting
ARCってこれのことでは?std::sync::Arcじゃなくてさ
https://en.m.wikipedia.org/wiki/Automatic_Reference_Counting
731デフォルトの名無しさん
2021/11/16(火) 15:08:54.50ID:SlziVE7V732デフォルトの名無しさん
2021/11/16(火) 15:26:54.21ID:mhJuEb25 https://doc.rust-lang.org/std/rc/struct.Rc.html
> A single-threaded reference-counting pointer. ‘Rc’ stands for ‘Reference Counted’.
https://doc.rust-lang.org/std/sync/struct.Arc.html
> A thread-safe reference-counting pointer. ‘Arc’ stands for ‘Atomically Reference Counted’.
https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
> In computer science, garbage collection (GC) is a form of automatic memory management.
GCを自動メモリ管理の一形態と定義するなら
RCもARCも手動メモリ管理側に属するやろね
したがってGCではない
https://en.wikipedia.org/wiki/Manual_memory_management
> In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework
> C ++では、この機能(訳注:RAII)をさらに活用して、手動のフレームワーク内でメモリの割り当て解除を自動化します。
> A single-threaded reference-counting pointer. ‘Rc’ stands for ‘Reference Counted’.
https://doc.rust-lang.org/std/sync/struct.Arc.html
> A thread-safe reference-counting pointer. ‘Arc’ stands for ‘Atomically Reference Counted’.
https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
> In computer science, garbage collection (GC) is a form of automatic memory management.
GCを自動メモリ管理の一形態と定義するなら
RCもARCも手動メモリ管理側に属するやろね
したがってGCではない
https://en.wikipedia.org/wiki/Manual_memory_management
> In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework
> C ++では、この機能(訳注:RAII)をさらに活用して、手動のフレームワーク内でメモリの割り当て解除を自動化します。
733デフォルトの名無しさん
2021/11/16(火) 15:32:41.58ID:hFtCxoVx 嫌われ者の屁理屈大会
734デフォルトの名無しさん
2021/11/16(火) 15:45:11.75ID:SlziVE7V735デフォルトの名無しさん
2021/11/16(火) 16:05:00.39ID:hZl5lwq3736デフォルトの名無しさん
2021/11/16(火) 16:07:51.68ID:wMIJ1Zq8 GC言語でもどの変数がどのオブジェクトの所有者か意識してコードを書けばそれは手動管理しているからGCじゃないってことになるの?
C++やRust使ってても所有者を気にせずに全部shared_ptrかRcにするようなコードの書き方をすればGCになっちゃうの?
C++やRust使ってても所有者を気にせずに全部shared_ptrかRcにするようなコードの書き方をすればGCになっちゃうの?
737デフォルトの名無しさん
2021/11/16(火) 16:09:38.42ID:QRdL5Qqy Perlでメモリリークしがちな参照カウント方式でもGCとみなしてくれるなら許す
738デフォルトの名無しさん
2021/11/16(火) 16:21:49.03ID:SlziVE7V739デフォルトの名無しさん
2021/11/16(火) 16:39:25.01ID:mhJuEb25 https://en.cppreference.com/w/cpp/memory/shared_ptr
ここにもズラズラ並んでるけどいろんな手動管理をさせてくれるよね
reset, swap, get, use_countなどなど
そもそも
https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr
コンストラクタの時点で豊富にプログラマに選択肢を与えてる
アロケータやデリータも指定できて自由自在
このように、色々やることあるねプログラマ側は
ここにもズラズラ並んでるけどいろんな手動管理をさせてくれるよね
reset, swap, get, use_countなどなど
そもそも
https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr
コンストラクタの時点で豊富にプログラマに選択肢を与えてる
アロケータやデリータも指定できて自由自在
このように、色々やることあるねプログラマ側は
740デフォルトの名無しさん
2021/11/16(火) 16:42:40.84ID:mhJuEb25 あ、ズラズラというならRcのほうを引用したほうがさらにズラズラだったか…
741デフォルトの名無しさん
2021/11/16(火) 16:49:31.73ID:XOoLtgC/ ちなみにshared_ptr/RcがGCじゃない派の人って
C++のBoehmGCはどっち判定なの?
使い方的にはshared_ptrと同じくプログラマが明示的にBoehmGCからメモリ割り当てないといけないから
GCじゃないって扱いになるわけ?
C++のBoehmGCはどっち判定なの?
使い方的にはshared_ptrと同じくプログラマが明示的にBoehmGCからメモリ割り当てないといけないから
GCじゃないって扱いになるわけ?
742デフォルトの名無しさん
2021/11/16(火) 17:11:12.20ID:SlziVE7V743デフォルトの名無しさん
2021/11/16(火) 17:15:07.88ID:7dBj/34m 屁理屈大将
744デフォルトの名無しさん
2021/11/16(火) 17:18:12.78ID:4mjXbMzz >>741
「手動メモリ管理はGCじゃない」んだからBohemGCもGCじゃないんだろ、そいつらの中では。
「手動メモリ管理はGCじゃない」んだからBohemGCもGCじゃないんだろ、そいつらの中では。
745デフォルトの名無しさん
2021/11/16(火) 17:23:12.05ID:SlziVE7V >>744
BoehmGCはプログラマーが何も管理しないので自動メモリ管理ですよ
BoehmGCはプログラマーが何も管理しないので自動メモリ管理ですよ
746デフォルトの名無しさん
2021/11/16(火) 17:29:26.94ID:R8o6+SB5 GC_MALLOC(100000); // なにも管理しないぞ!mallocじゃないけどな!必死に自分の考えを押し付けようと1日張り付いてるニート
747デフォルトの名無しさん
2021/11/16(火) 17:35:28.45ID:4mjXbMzz748デフォルトの名無しさん
2021/11/16(火) 17:37:18.20ID:R8o6+SB5 vec![ 0; 100000 ]; // 何も管理しないぞ!GCじゃねえったらGCじゃねーんだ!黙れ小僧!Rustの宣伝を受け入れろ!
749デフォルトの名無しさん
2021/11/16(火) 18:01:15.45ID:SlziVE7V >>747
本気で言ってますか?
スマートポインタではプログラマーが所有権の管理をしているからこそ
毎回プログラマーはここで使うべきはunique_ptrでいいのかshared_ptrにすべきかあるいは既存スマートポインタの参照にすべきかもしくは譲渡すべきか等を管理しながらプログラミングしているのです
これを使い間違えるとメモリ管理ミスとなる多重解放や解放忘れや解放済み領域参照などが起きてしまうのです
Rustでもほぼ同様ですが使い間違えているとコンパイルが通らない点だけ異なります
C++とRustどちらもプログラマーが上述の手動メモリ管理をしながらプログラミングする点で同じです
一方でBoehmGCでは上述の手動メモリ管理をせずに使えます
自動メモリ管理方式となっています
本気で言ってますか?
スマートポインタではプログラマーが所有権の管理をしているからこそ
毎回プログラマーはここで使うべきはunique_ptrでいいのかshared_ptrにすべきかあるいは既存スマートポインタの参照にすべきかもしくは譲渡すべきか等を管理しながらプログラミングしているのです
これを使い間違えるとメモリ管理ミスとなる多重解放や解放忘れや解放済み領域参照などが起きてしまうのです
Rustでもほぼ同様ですが使い間違えているとコンパイルが通らない点だけ異なります
C++とRustどちらもプログラマーが上述の手動メモリ管理をしながらプログラミングする点で同じです
一方でBoehmGCでは上述の手動メモリ管理をせずに使えます
自動メモリ管理方式となっています
750デフォルトの名無しさん
2021/11/16(火) 18:41:22.00ID:c2zT3/Zj Rustも使い方を間違えると循環参照ができてコンパイルは通ります。Boehmでもnew (GC) char[size]で
class Foo: public gc{}しなければ回収されません。
その他ではディストラクタの回収ではなく不定期改修ではnew (GC)で、gc_cleanupから派生させる必要が
あります。とてもではないですが、「手動」「自動メモリ管理方式」などと、屁理屈を捏ねて言い負かそうと
必死こいてる哀れな狂信者は言葉は通じないです。
class Foo: public gc{}しなければ回収されません。
その他ではディストラクタの回収ではなく不定期改修ではnew (GC)で、gc_cleanupから派生させる必要が
あります。とてもではないですが、「手動」「自動メモリ管理方式」などと、屁理屈を捏ねて言い負かそうと
必死こいてる哀れな狂信者は言葉は通じないです。
751デフォルトの名無しさん
2021/11/16(火) 19:14:07.66ID:cHZw5Yem >>750
BoehmGCは言語の機能ではなくライブラリなのだから呼ばなければGCが始まらないのは当たり前
自動メモリ管理と手動メモリ管理の区別はそんな表層的などうでもいいことではない
それを理解できない人がいるとは驚いた
C++スマートポインタとRustでは手動メモリ管理のため
使い方を間違えるとメモリ管理が破綻して深刻なバグが生じたりコンパイルが通らなかったりする
これを解決するにはプログラマーがメモリ管理を常に考えてどこにどんなスマートポインタを用いたり所有権は渡さずに参照にするのか譲渡するのかコピーするのかなど毎回各所で全て考えて手動メモリ管理を行なう
一方でGC言語やBoehmGCなどは自動メモリ管理なのでプログラマーは上述のようなことを考えなくてもよい
言語システムやGCライブラリにお任せとなる
BoehmGCは言語の機能ではなくライブラリなのだから呼ばなければGCが始まらないのは当たり前
自動メモリ管理と手動メモリ管理の区別はそんな表層的などうでもいいことではない
それを理解できない人がいるとは驚いた
C++スマートポインタとRustでは手動メモリ管理のため
使い方を間違えるとメモリ管理が破綻して深刻なバグが生じたりコンパイルが通らなかったりする
これを解決するにはプログラマーがメモリ管理を常に考えてどこにどんなスマートポインタを用いたり所有権は渡さずに参照にするのか譲渡するのかコピーするのかなど毎回各所で全て考えて手動メモリ管理を行なう
一方でGC言語やBoehmGCなどは自動メモリ管理なのでプログラマーは上述のようなことを考えなくてもよい
言語システムやGCライブラリにお任せとなる
752デフォルトの名無しさん
2021/11/16(火) 19:27:51.29ID:4mjXbMzz >>749
プログラマが
「unique_ptrでいいのかshared_ptrにすべきかあるいは既存スマートポインタの参照にすべきかもしくは譲渡すべきか等を管理しながら」
プログラムしているからGCじゃないという主張か。
なら、すべてshared_ptrに統一して所有権の管理なんてしなければいい。実際、既存コードとの互換性問題やプログラムの性能問題が無ければ推奨されるshared_ptrの使い方だしな。
そうすれば>>749の主張する「自動メモリ管理方式」とやらも実現できるからBoehmGCみたいなものだ。
あと、>>751の主張をするなら、まず初めに「自動メモリ管理方式」「手動メモリ管理方式」の定義と差分を明確にしなくては話にならない。
「使い方を間違えると」とか、曖昧な話でごまかすなよ。「それを理解できない人がいるとは驚いた」みたいな人格攻撃する暇あったら、グウの音も出なくなるぐらい堅牢な議論をしてみろよ。
プログラマが
「unique_ptrでいいのかshared_ptrにすべきかあるいは既存スマートポインタの参照にすべきかもしくは譲渡すべきか等を管理しながら」
プログラムしているからGCじゃないという主張か。
なら、すべてshared_ptrに統一して所有権の管理なんてしなければいい。実際、既存コードとの互換性問題やプログラムの性能問題が無ければ推奨されるshared_ptrの使い方だしな。
そうすれば>>749の主張する「自動メモリ管理方式」とやらも実現できるからBoehmGCみたいなものだ。
あと、>>751の主張をするなら、まず初めに「自動メモリ管理方式」「手動メモリ管理方式」の定義と差分を明確にしなくては話にならない。
「使い方を間違えると」とか、曖昧な話でごまかすなよ。「それを理解できない人がいるとは驚いた」みたいな人格攻撃する暇あったら、グウの音も出なくなるぐらい堅牢な議論をしてみろよ。
753デフォルトの名無しさん
2021/11/16(火) 19:27:54.43ID:mhJuEb25 BohemGCは昔から気になってるけど
結局一度も触ったことが無いな
https://www.hboehm.info/gc/
> The Boehm-Demers-Weiser conservative garbage collector
> can be used as a garbage collecting replacement for C malloc or C++ new.
> Boehm-Demers-Weiserの保守的なガベージコレクターは、
> C mallocまたはC++ newのガベージコレクションの代替として使用できます。
作者(?)が言ってるようにこの場合は garbage collector なんよね
しかもガベージコレクションの代替として使用できるとのこと
なんか知らんけど色々プログラマ側から触れるようになってるんだとしたら
結局は手動メモリ管理って感じもするけど(よく知らない状態での想像)
結局一度も触ったことが無いな
https://www.hboehm.info/gc/
> The Boehm-Demers-Weiser conservative garbage collector
> can be used as a garbage collecting replacement for C malloc or C++ new.
> Boehm-Demers-Weiserの保守的なガベージコレクターは、
> C mallocまたはC++ newのガベージコレクションの代替として使用できます。
作者(?)が言ってるようにこの場合は garbage collector なんよね
しかもガベージコレクションの代替として使用できるとのこと
なんか知らんけど色々プログラマ側から触れるようになってるんだとしたら
結局は手動メモリ管理って感じもするけど(よく知らない状態での想像)
754デフォルトの名無しさん
2021/11/16(火) 19:28:00.82ID:ayQ3yI+l Rustの不都合なことを言われて、知りもしないのに墓穴を掘る狂信者w
さっきはRustならコンパイルが通らない点だけ異なりますと言っていたのに、今度は深刻なバグが生じたりと言い出す。
手動自動なんていう浅はかな考えを押し通そうとしているから、知らない事を突かれる。
まあRustの肩をもつなら、Rustは独立したスレッドのサイクルコレクターが無い点が「フルスペックのGC」では無いといえるかもしれんが
狂信者の話には1つも出てこない。あんたのその理論というにはお粗末な考えで全員が黙ったとしても、ここに顔出す人以外は
GC的なアルゴリズムだろ?と言われてまたワンワン噛みつくのか?めっちゃ迷惑だと思うがw
さっきはRustならコンパイルが通らない点だけ異なりますと言っていたのに、今度は深刻なバグが生じたりと言い出す。
手動自動なんていう浅はかな考えを押し通そうとしているから、知らない事を突かれる。
まあRustの肩をもつなら、Rustは独立したスレッドのサイクルコレクターが無い点が「フルスペックのGC」では無いといえるかもしれんが
狂信者の話には1つも出てこない。あんたのその理論というにはお粗末な考えで全員が黙ったとしても、ここに顔出す人以外は
GC的なアルゴリズムだろ?と言われてまたワンワン噛みつくのか?めっちゃ迷惑だと思うがw
755デフォルトの名無しさん
2021/11/16(火) 19:52:23.46ID:O0etR+7l 言語の分類に関して言うなら性能特性に着目して分類するのが有用
malloc/freeグループといわゆるGCグループに分けられて、スマートポインタは前者になる
>>718
後者の意図
プログラムの実行とは切り離された別のコンテキストで回収処理が行われる場合に
その行為者をガベージコレクタと呼んでいた
コンテキストという言葉は適切じゃないかもしれないが、別スレッドとか別タスクとか、そういう意味で使っている
malloc/freeグループといわゆるGCグループに分けられて、スマートポインタは前者になる
>>718
後者の意図
プログラムの実行とは切り離された別のコンテキストで回収処理が行われる場合に
その行為者をガベージコレクタと呼んでいた
コンテキストという言葉は適切じゃないかもしれないが、別スレッドとか別タスクとか、そういう意味で使っている
756デフォルトの名無しさん
2021/11/16(火) 19:55:08.32ID:GLAM0io0 いつの世も狂信者というのは害がないうちは、公式のご本尊や、偉い人から見逃されるけど
害を及ぼすような事をやり出したら破門されんねん、ほんま迷惑
害を及ぼすような事をやり出したら破門されんねん、ほんま迷惑
757デフォルトの名無しさん
2021/11/16(火) 19:58:48.30ID:O0etR+7l プログラマが解放処理の呼び出しを書く必要があるのが手動メモリ管理
書かなくても(典型的なケースで)自動的に解放処理が呼び出されるのが自動メモリ管理
malloc/freeは手動メモリ管理
GCやスマートポインタは自動メモリ管理
というかスマートポインタという名前自体プログラマが介在しなくてもよしなにやってくれる賢いポインタという意味なので
これを手動メモリ管理と呼んでしまうのは違和感しかない
書かなくても(典型的なケースで)自動的に解放処理が呼び出されるのが自動メモリ管理
malloc/freeは手動メモリ管理
GCやスマートポインタは自動メモリ管理
というかスマートポインタという名前自体プログラマが介在しなくてもよしなにやってくれる賢いポインタという意味なので
これを手動メモリ管理と呼んでしまうのは違和感しかない
758デフォルトの名無しさん
2021/11/16(火) 20:03:07.86ID:O0etR+7l プログラマがshared_ptrとunique_ptrを選択しないといけないから手動メモリ管理との主張だが
仮にshared_ptrしかない言語が存在したとしたらそれは自動メモリ管理になるのか?
仮にshared_ptrしかない言語が存在したとしたらそれは自動メモリ管理になるのか?
759デフォルトの名無しさん
2021/11/16(火) 20:12:14.40ID:SlziVE7V >>754
Rustでは手動メモリ管理を間違えても深刻な事態は起きないよ
並行時と並列時も含めてメモリ競合も問題が起きないように設計されていてコンパイラが静的に検出してくれる
メモリ関連で静的に検出できないのは循環参照くらいだよね
原理的に無理なのだからこれは仕方ない
>>752
> なら、すべてshared_ptrに統一して所有権の管理なんてしなければいい。
それだとプログラマーが管理すべきことが消えて自動メモリ管理すなわちGCになってしまうよ
もちろんshared_ptrはコストが高く遅すぎてそんなことをするプログラマーはいないね
あと一時参照やunique_ptrを駆使すれば済むところを全てshared_ptrにすると循環参照の生じる機会が激増しちゃう
だからshared_ptrの使用は最小限に抑えて他を用いる
最小限のshared_ptr使用でも循環参照の起きうるところがあるならばweak_ptrを用いて循環参照を回避する
これらもプログラマーの手による手動メモリ管理
>>757
このようにスマートポインタは手動メモリ管理です
Rustでは手動メモリ管理を間違えても深刻な事態は起きないよ
並行時と並列時も含めてメモリ競合も問題が起きないように設計されていてコンパイラが静的に検出してくれる
メモリ関連で静的に検出できないのは循環参照くらいだよね
原理的に無理なのだからこれは仕方ない
>>752
> なら、すべてshared_ptrに統一して所有権の管理なんてしなければいい。
それだとプログラマーが管理すべきことが消えて自動メモリ管理すなわちGCになってしまうよ
もちろんshared_ptrはコストが高く遅すぎてそんなことをするプログラマーはいないね
あと一時参照やunique_ptrを駆使すれば済むところを全てshared_ptrにすると循環参照の生じる機会が激増しちゃう
だからshared_ptrの使用は最小限に抑えて他を用いる
最小限のshared_ptr使用でも循環参照の起きうるところがあるならばweak_ptrを用いて循環参照を回避する
これらもプログラマーの手による手動メモリ管理
>>757
このようにスマートポインタは手動メモリ管理です
760デフォルトの名無しさん
2021/11/16(火) 20:20:02.11ID:/J0mEe48 >>755の説明が一番しっくりくるな
これならRustもGC言語じゃないって言えるしこの辺で手を打ちませんか?
これならRustもGC言語じゃないって言えるしこの辺で手を打ちませんか?
761デフォルトの名無しさん
2021/11/16(火) 20:38:12.95ID:UQ2IYGru 見たくない真実はガン無視する手動自動マンw
”サイクルコレクターが無い点が「フルスペックのGC」では無いといえるかもしれん”をガン無視して
世紀の難解手動自動相対性理論に取り組む、いまだに答えは出ないが何やら信念があるらしい。知りたくもないw
”サイクルコレクターが無い点が「フルスペックのGC」では無いといえるかもしれん”をガン無視して
世紀の難解手動自動相対性理論に取り組む、いまだに答えは出ないが何やら信念があるらしい。知りたくもないw
762デフォルトの名無しさん
2021/11/16(火) 20:42:55.59ID:g0Tjvy/G そもそもキッチリ区別できるようなGCの定義なんて元々ないでしょ
数学みたいな厳密性などはもちろんなく、ただの処理系や実装上の戦略のようなもんみたいだし、
どっちつかずな処理系もありそう
数学みたいな厳密性などはもちろんなく、ただの処理系や実装上の戦略のようなもんみたいだし、
どっちつかずな処理系もありそう
763デフォルトの名無しさん
2021/11/16(火) 20:46:35.71ID:qWBIGGWe 「全部shared_ptrにしたらGCになる」ってすごいな
使い方によってなったりならなかったりするのか
その調子だとJavaにJNI経由でC由来のポインタ持ち込んだら手動管理になってGCじゃなくなりそう
使い方によってなったりならなかったりするのか
その調子だとJavaにJNI経由でC由来のポインタ持ち込んだら手動管理になってGCじゃなくなりそう
764デフォルトの名無しさん
2021/11/16(火) 20:47:19.95ID:LUYvY2UY765デフォルトの名無しさん
2021/11/16(火) 20:55:04.64ID:7RJdn/T9 >>762
ええ意見。手動自動マンのいうとおりならSwiftはRustでいうRc,Arcなんてものは無く、弱参照はあるものの
自動でARCが動くんだけど、彼の高等理論ならどっちに分類されるんだろ…?w
まあ彼・彼女?個人的な見方は否定しないけど、どうあっても他人を全否定したいみたいだけどGCの話より
どういう人なのか少し気になるw
ええ意見。手動自動マンのいうとおりならSwiftはRustでいうRc,Arcなんてものは無く、弱参照はあるものの
自動でARCが動くんだけど、彼の高等理論ならどっちに分類されるんだろ…?w
まあ彼・彼女?個人的な見方は否定しないけど、どうあっても他人を全否定したいみたいだけどGCの話より
どういう人なのか少し気になるw
766デフォルトの名無しさん
2021/11/16(火) 21:08:21.89ID:cHZw5Yem >>763 >>764
ホントに理解できていないのか理解できていないフリをしての冷やかしなのか分からなくて悩む
仕方ないので補足説明する
【以前の手動メモリ管理】
malloc等に対して直接freeをどこでどのタイミングで行うかで手動メモリ管理していた
【スマートポインタ時代の手動メモリ管理】
各種スマートポインタの使用・譲渡・コピー等および各種参照形態を
どのように使い分けてどのように組み合わせて用いるかという形で手動メモリ管理をしている
だからその使い分け組み合わせパーツの一つにすぎないshared_ptrというポインタに対してそれはGCだ!との主張は意味がないことが明らかで
もし理解出来ていない人がいるならばここで躓いている
ホントに理解できていないのか理解できていないフリをしての冷やかしなのか分からなくて悩む
仕方ないので補足説明する
【以前の手動メモリ管理】
malloc等に対して直接freeをどこでどのタイミングで行うかで手動メモリ管理していた
【スマートポインタ時代の手動メモリ管理】
各種スマートポインタの使用・譲渡・コピー等および各種参照形態を
どのように使い分けてどのように組み合わせて用いるかという形で手動メモリ管理をしている
だからその使い分け組み合わせパーツの一つにすぎないshared_ptrというポインタに対してそれはGCだ!との主張は意味がないことが明らかで
もし理解出来ていない人がいるならばここで躓いている
767デフォルトの名無しさん
2021/11/16(火) 21:34:08.28ID:LUYvY2UY >>766
ちゃんと定義して、それぞれの違いを明確化するまで「手動メモリ管理」「自動メモリ管理」は使用禁止な。
エスパーじゃないんだから、>>766の心の中にある想像上の「手動メモリ管理」なんて理解できるわけ無いだろ。
この分じゃ>>766も「手動メモリ管理」「自動メモリ管理」の差分すら明確化できていないだろ。
> だからその使い分け組み合わせパーツの一つにすぎないshared_ptrというポインタに
> 対してそれはGCだ!との主張は意味がないことが明らかで
おいおい、>>759で「shared_ptrで統一すればGCになる」と発言しているだろうが。
何で「GCだ!との主張は意味がないことが明らかで」なんだよ。
>>759は意味のない主張をするようなデタラメなやつだと言いたいのか?
ちゃんと定義して、それぞれの違いを明確化するまで「手動メモリ管理」「自動メモリ管理」は使用禁止な。
エスパーじゃないんだから、>>766の心の中にある想像上の「手動メモリ管理」なんて理解できるわけ無いだろ。
この分じゃ>>766も「手動メモリ管理」「自動メモリ管理」の差分すら明確化できていないだろ。
> だからその使い分け組み合わせパーツの一つにすぎないshared_ptrというポインタに
> 対してそれはGCだ!との主張は意味がないことが明らかで
おいおい、>>759で「shared_ptrで統一すればGCになる」と発言しているだろうが。
何で「GCだ!との主張は意味がないことが明らかで」なんだよ。
>>759は意味のない主張をするようなデタラメなやつだと言いたいのか?
768デフォルトの名無しさん
2021/11/16(火) 22:10:19.07ID:vHF3kJ9c 言葉の定義がどうのというバカが現れると必ずこうなるよな
769デフォルトの名無しさん
2021/11/16(火) 22:30:38.03ID:SlziVE7V >>767
wikipediaに明確な定義がありますね
『ガベージコレクション (Garbage Collection)』
https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
> In computer science, garbage collection (GC) is a form of automatic memory management.
ガベージコレクション(GC)とは、自動メモリ管理です。
『手動メモリ管理 (Manual Memory Management)』
https://en.wikipedia.org/wiki/Manual_memory_management
> In computer science, manual memory management refers to the usage of manual instructions by the programmer to identify and deallocate unused objects, or garbage.
手動メモリ管理とは、使われていないガベージを解放するためにプログラマが手動で命令を書くことです。
> Manual memory management has one correctness advantage, which is that it allows automatic resource management via the Resource Acquisition Is Initialization (RAII) paradigm.
手動メモリ管理にはその正しさの利点があり、RAIIを介した自動リソース管理を可能にします。
> This can also be used with deterministic reference counting. In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework,
これは参照カウントとともに使用することもでき、C++ではshared_ptrにより手動のフレームワーク内でメモリ解放を自動化しています。
> use of the shared_ptr template in the language's standard library to perform memory management is a common paradigm.
つまり上記のwikipediaにおける定義をまとめると
・自動メモリ管理 ←GCはここ
・手動メモリ管理 ←shared_ptrはここ
wikipediaに明確な定義がありますね
『ガベージコレクション (Garbage Collection)』
https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
> In computer science, garbage collection (GC) is a form of automatic memory management.
ガベージコレクション(GC)とは、自動メモリ管理です。
『手動メモリ管理 (Manual Memory Management)』
https://en.wikipedia.org/wiki/Manual_memory_management
> In computer science, manual memory management refers to the usage of manual instructions by the programmer to identify and deallocate unused objects, or garbage.
手動メモリ管理とは、使われていないガベージを解放するためにプログラマが手動で命令を書くことです。
> Manual memory management has one correctness advantage, which is that it allows automatic resource management via the Resource Acquisition Is Initialization (RAII) paradigm.
手動メモリ管理にはその正しさの利点があり、RAIIを介した自動リソース管理を可能にします。
> This can also be used with deterministic reference counting. In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework,
これは参照カウントとともに使用することもでき、C++ではshared_ptrにより手動のフレームワーク内でメモリ解放を自動化しています。
> use of the shared_ptr template in the language's standard library to perform memory management is a common paradigm.
つまり上記のwikipediaにおける定義をまとめると
・自動メモリ管理 ←GCはここ
・手動メモリ管理 ←shared_ptrはここ
770デフォルトの名無しさん
2021/11/16(火) 23:08:56.24ID:hZl5lwq3 >>769
いやそれshared_ptr自体は自動メモリ管理であり、手動管理と組み合わせて使用できるって言ってるじゃん
いやそれshared_ptr自体は自動メモリ管理であり、手動管理と組み合わせて使用できるって言ってるじゃん
771デフォルトの名無しさん
2021/11/16(火) 23:11:50.79ID:SlziVE7V772デフォルトの名無しさん
2021/11/16(火) 23:49:36.51ID:8BenLMiv ウンコが都合の悪いことが書かれると、デカいの張り付けて手動自動理論に持っていくwww
愛してるはずのRustにすら害を及ぼす腐った狂信者ウンコ。残ったのは自尊心のみ。「ここ」は便所の落書き
愛してるはずのRustにすら害を及ぼす腐った狂信者ウンコ。残ったのは自尊心のみ。「ここ」は便所の落書き
773デフォルトの名無しさん
2021/11/16(火) 23:59:32.22ID:cHZw5Yem774デフォルトの名無しさん
2021/11/17(水) 00:04:50.96ID:SsdWlmrh >>709
これが一番納得
これが一番納得
775デフォルトの名無しさん
2021/11/17(水) 00:07:56.38ID:bZI3gHq3 じゃあSwiftは自動で管理してるからARCだけどGCなんだな?どんどんRustが嫌いになっていく…
776デフォルトの名無しさん
2021/11/17(水) 00:43:47.98ID:YCf/hpfl 言語機能にどういうラベルを貼り付けるかの議論でよくもまあここまで盛り上がれるな
別に言語がGC含むとされようがされなかろうが
実態は変わらないだろうに
別に言語がGC含むとされようがされなかろうが
実態は変わらないだろうに
777デフォルトの名無しさん
2021/11/17(水) 00:59:15.40ID:eNp19Ga9778デフォルトの名無しさん
2021/11/17(水) 01:32:43.67ID:fpCU2YNN まず決着を付ける目的はなんなの?
今更で申し訳無いが
今更で申し訳無いが
779デフォルトの名無しさん
2021/11/17(水) 02:15:20.38ID:iywzxd5E780デフォルトの名無しさん
2021/11/17(水) 02:19:34.31ID:+JwFzM8R 当たり前の話なのに
びっくりしてるとしたら
そっちのが恥ずかしい
びっくりしてるとしたら
そっちのが恥ずかしい
781デフォルトの名無しさん
2021/11/17(水) 03:01:08.49ID:eNp19Ga9782デフォルトの名無しさん
2021/11/17(水) 04:04:22.02ID:7Zsf8uTz ようやくこのスレも役目を果たし終えたな
783デフォルトの名無しさん
2021/11/17(水) 08:38:44.32ID:m4/STksY >>769
なんで
手動メモリ管理 ←shared_ptrはここ
という結論になると判断しているのか全然わからん。
手動メモリ管理とは、使われていないガベージを解放するためにプログラマが【手動で命令を書くこと】です。
C++ではshared_ptrにより手動のフレームワーク内で【メモリ解放を自動化して】います。
で、shared_ptrは【メモリ解放を自動化して】なので【手動で命令を書くこと】を満足していないから、手動メモリ管理ではないという結論にしかならんが。
なんで
手動メモリ管理 ←shared_ptrはここ
という結論になると判断しているのか全然わからん。
手動メモリ管理とは、使われていないガベージを解放するためにプログラマが【手動で命令を書くこと】です。
C++ではshared_ptrにより手動のフレームワーク内で【メモリ解放を自動化して】います。
で、shared_ptrは【メモリ解放を自動化して】なので【手動で命令を書くこと】を満足していないから、手動メモリ管理ではないという結論にしかならんが。
784デフォルトの名無しさん
2021/11/17(水) 08:49:09.28ID:zCczxc5o785デフォルトの名無しさん
2021/11/17(水) 09:00:58.02ID:MZt3q0rg786デフォルトの名無しさん
2021/11/17(水) 09:09:38.98ID:C+w8kxrc >>783の解釈で正しいよ
そもそも出典の記載もなく俺が書いたかもしれないwikipediaの記事にどれだけ意味があるのかは知らんが
そもそも出典の記載もなく俺が書いたかもしれないwikipediaの記事にどれだけ意味があるのかは知らんが
787デフォルトの名無しさん
2021/11/17(水) 09:27:03.70ID:MZt3q0rg788デフォルトの名無しさん
2021/11/17(水) 09:28:38.23ID:fpCU2YNN でもC++/CLIってGC言語だけどshared_ptr使えるじゃん
789デフォルトの名無しさん
2021/11/17(水) 09:32:57.00ID:C+g/MvKJ weak_ptrの存在もあれだよな
必要だったらコレ使ってなんとかしろよ?という
循環参照も自動で解放できるんならコレいらないしな
必要だったらコレ使ってなんとかしろよ?という
循環参照も自動で解放できるんならコレいらないしな
790デフォルトの名無しさん
2021/11/17(水) 09:35:09.37ID:fpCU2YNN 定義定義ってうるさいよ
何を目的としてその定義があるのかという視点から考えないからこういうコーナーケースで無用な論争に発展する
何を目的としてその定義があるのかという視点から考えないからこういうコーナーケースで無用な論争に発展する
791デフォルトの名無しさん
2021/11/17(水) 10:04:21.19ID:/Jn+6Ag0 自演の荒らしだと思う
792デフォルトの名無しさん
2021/11/17(水) 10:05:52.29ID:TggxfUz+ 〇〇かGCか否かという議論に決着がつくと
プログラム書く上で何か役に立つんですかねえ
あるいは学術的な発展でもするんですかねえ
プログラム書く上で何か役に立つんですかねえ
あるいは学術的な発展でもするんですかねえ
793デフォルトの名無しさん
2021/11/17(水) 10:22:36.39ID:C+g/MvKJ じゃあ次はお前らの大好きなNimの話でもする?
Efficient, expressive, elegant
どこがエレガントなのかどうぞ
Efficient, expressive, elegant
どこがエレガントなのかどうぞ
794デフォルトの名無しさん
2021/11/17(水) 10:29:14.01ID:sX0XtunN795デフォルトの名無しさん
2021/11/17(水) 10:43:46.53ID:wlAtkNPK auto変数はすべてGC(キリっ)
796デフォルトの名無しさん
2021/11/17(水) 10:45:44.25ID:wlAtkNPK allocaはGC(キリっ)
797デフォルトの名無しさん
2021/11/17(水) 10:51:30.59ID:ZQ/D1zVP Garbage Collectionを持つ言語
Garbage Collectorがある言語
Garbage Collectが行える言語
Garbage Collectorがある言語
Garbage Collectが行える言語
798デフォルトの名無しさん
2021/11/17(水) 11:35:29.78ID:Vki78NxX799デフォルトの名無しさん
2021/11/17(水) 11:45:13.07ID:vmbAdT3A スレの半分はこいつでできています
http://hissi.org/read.php/tech/20211116/U2x6aVZFN1Y.html
http://hissi.org/read.php/tech/20211116/U2x6aVZFN1Y.html
800デフォルトの名無しさん
2021/11/17(水) 11:50:46.89ID:MZt3q0rg >>798
そこにもあるように
あくまでも手動メモリ管理の範囲内でのメモリ解放の自動化
とはっきり書かれている
しかも手動メモリ管理のアドバンテージの説明として書かれているわけだから
shared_ptrは手動メモリ管理であってしかもそのアドバンテージ
そこにもあるように
あくまでも手動メモリ管理の範囲内でのメモリ解放の自動化
とはっきり書かれている
しかも手動メモリ管理のアドバンテージの説明として書かれているわけだから
shared_ptrは手動メモリ管理であってしかもそのアドバンテージ
801デフォルトの名無しさん
2021/11/17(水) 11:57:20.20ID:YG2/9hEL 不毛とハゲの違いってなんだよ?
英文持ってきて貼り付けて一仕事終えるじゃなく、自分の言葉で説明しろよ!
アドバンテージ!
英文持ってきて貼り付けて一仕事終えるじゃなく、自分の言葉で説明しろよ!
アドバンテージ!
802デフォルトの名無しさん
2021/11/17(水) 12:04:02.33ID:C+g/MvKJ RAIIで解放タイミングを把握できるのはメリットだね
GC標準装備言語だとそうはいかないもん
C#だとusingとIDisposableを使ってまで同じようなことをしたがるけど
using (StreamReader r = new("foo.txt")) {/*処理*/}
GC標準装備言語だとそうはいかないもん
C#だとusingとIDisposableを使ってまで同じようなことをしたがるけど
using (StreamReader r = new("foo.txt")) {/*処理*/}
803デフォルトの名無しさん
2021/11/17(水) 12:13:29.09ID:iywzxd5E >>781
>手動メモリ管理のよってRAIIを介したshared_ptr等の自動リソース管理を可能にしていると
おいおい・・・
無駄かもしれんが一応書いておく
まず大前提として1行目に
「In computer science, manual memory management refers to the usage of manual instructions by the programmer to identify and deallocate unused objects, or garbage. (手動メモリ管理というのは使われなくなったオブジェクト(ガベージ)を識別してメモリを解放するのにプログラマーが手動命令を使用することを指す)」と書いてある
つまりはここで言う手動メモリ管理はどのオブジェクトを解放すべきかを判断するコードやメモリを解放するコード(freeやdelete)をプログラマーが直接書くことを意味してる
でもってRAIIの説明箇所にある「This can also be used with deterministic reference counting.(RAIIは決定的参照カウント方式と一緒に使うこともできます)」は”手動メモリ管理だけでなく参照カウント方式とも一緒に使える”と言ってるわけ
「In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework」(C++ではこの機能を、その他の点では手動のフレームワークにおいて、メモリの解放を自動化するのに活用している)
otherwise-manual frameworkと書いてることからわかるようににC++が活用してる内容は”自動”の範疇に含まれると記事の書いた人間は考えてる
>手動メモリ管理のよってRAIIを介したshared_ptr等の自動リソース管理を可能にしていると
おいおい・・・
無駄かもしれんが一応書いておく
まず大前提として1行目に
「In computer science, manual memory management refers to the usage of manual instructions by the programmer to identify and deallocate unused objects, or garbage. (手動メモリ管理というのは使われなくなったオブジェクト(ガベージ)を識別してメモリを解放するのにプログラマーが手動命令を使用することを指す)」と書いてある
つまりはここで言う手動メモリ管理はどのオブジェクトを解放すべきかを判断するコードやメモリを解放するコード(freeやdelete)をプログラマーが直接書くことを意味してる
でもってRAIIの説明箇所にある「This can also be used with deterministic reference counting.(RAIIは決定的参照カウント方式と一緒に使うこともできます)」は”手動メモリ管理だけでなく参照カウント方式とも一緒に使える”と言ってるわけ
「In C++, this ability is put to further use to automate memory deallocation within an otherwise-manual framework」(C++ではこの機能を、その他の点では手動のフレームワークにおいて、メモリの解放を自動化するのに活用している)
otherwise-manual frameworkと書いてることからわかるようににC++が活用してる内容は”自動”の範疇に含まれると記事の書いた人間は考えてる
804デフォルトの名無しさん
2021/11/17(水) 12:14:43.77ID:iywzxd5E805デフォルトの名無しさん
2021/11/17(水) 12:18:06.70ID:iP5L/cQW 外部DLLに渡すヒープデータなんて普通にコントロールするのが当たり前、GC”非標準装備”言語だってそう
じゃなければDLLを起点にクラッシュする。おまえほんとはなにもしらねーんじゃねえの(笑)w
C#だって当然そういう事を考えるだろう、アホ信者言語と同じことをしたいんじゃない
じゃなければDLLを起点にクラッシュする。おまえほんとはなにもしらねーんじゃねえの(笑)w
C#だって当然そういう事を考えるだろう、アホ信者言語と同じことをしたいんじゃない
806デフォルトの名無しさん
2021/11/17(水) 12:18:07.56ID:eNp19Ga9 >>802
だな
C++やRustなどは即座に解放のためデストラクタでファイルcloseやlock解放を自動化できてプログラマーは気にしなくて済むもんな
GC言語はこれをするのに各言語で苦労しているのと対照的
だな
C++やRustなどは即座に解放のためデストラクタでファイルcloseやlock解放を自動化できてプログラマーは気にしなくて済むもんな
GC言語はこれをするのに各言語で苦労しているのと対照的
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★2 [蚤の市★]
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 今のレス…まさか全力か?
- 不登校だけど今日の夜食はサッポロ一番の…
- 【朗報】かつやが明日から4日間感謝祭開催で200円引き!
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- 千晴って働いてるの?
