次世代言語22 Go Nim Rust Swift Kotlin TypeScript

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/08/22(日) 08:59:03.31ID:QorwbXcj
スレタイ以外の言語もok

前スレ
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1587276362/
2021/11/17(水) 20:21:26.12ID:fpCU2YNN
>>825
メモリ解放を自動化しているならそれはGCでは?
逆にGCはそれ以外何の仕事をすると?
2021/11/17(水) 20:26:26.17ID:MZt3q0rg
>>831
例えばunque_ptrもメモリ解放を自動化していますがGCとは呼ばれませんよね
つまりメモリ解放の自動化とGCは別のことです
2021/11/17(水) 20:30:25.82ID:LATxpwY3
セガサターン言語!
2021/11/17(水) 20:34:46.44ID:C+g/MvKJ
RAIIで無駄なくやりくりするのがC++の思想なんだろうね
スマートポインタもRAIIがもたらすリソース解除実行の一例で
ヒープメモリをデストラクタでdeleteしてるだけだから
2021/11/17(水) 21:40:20.88ID:MiIYKiV6
>>831
>>832は(今までのやり取りにもある通り)悪意を持って情報を隠すから気をつけろ。

>>684以降、誰も異論を挟んでいないWikipediaの解説
ガベージコレクションとは、コンピュータプログラムが動的に確保したメモリ領域のうち、
『不要になった』領域を自動的に解放する機能である。
にある通り、『不要になった』かどうかを自動的に判断するのがポイント。

自動で判断しないc++のunique_ptrはGCの機能とは言わんが、(仕様に従う限り)自動で判断するshared_ptrはGCの機能と言える。
2021/11/17(水) 22:09:03.50ID:eNp19Ga9
>>835
またゴールポストを移動させたの?
その「自動的に判断」「自動に判断」などは今までこのスレに一度も出て来ておらず誰も主張してきていない初登場の言葉
そしてその意味の定義がなされていないから解釈次第になる
837デフォルトの名無しさん
垢版 |
2021/11/17(水) 22:12:01.05ID:SsdWlmrh
Rust 2021 Edition
2021/11/17(水) 22:12:58.72ID:45MpLEpa
だぜぇwww
2021/11/17(水) 22:14:09.96ID:7Zsf8uTz
ちゃんと必要十分条件を考えてください
2021/11/17(水) 22:57:46.68ID:bNLdqk4Y
こいつらがプログラム作るの勘弁してほしいんだが
841デフォルトの名無しさん
垢版 |
2021/11/17(水) 23:08:50.98ID:iuNg9UQr
法律で禁止するべきと?
2021/11/17(水) 23:14:03.88ID:QI1gBPox
まだWikipediaとか不毛なことやってたのか
もうちょっとまともな文献を挙げてみると
リチャード・ジョーンズ「ガベージコレクション」
では参照カウント方式GCの具体例としてBoostのshared_ptrを取り上げて、トレーシングGCとの比較が行われている
著者はメモリ管理についての国際会議(ISMM)の創設者なので、少なくとも学会レベルではshared_ptrはGCの一形態として認識されていると考えていい
もちろん学会が世の中の全てではないから「俺の常識ではGCではない」と主張するのは自由だけど
2021/11/17(水) 23:16:21.20ID:Wt07eo3Q
激おこなの?
2021/11/17(水) 23:42:21.78ID:iywzxd5E
>>825
やっぱり何言っても無駄だったか

「自動だけどそれは手動の範囲内」ww
2021/11/17(水) 23:49:51.44ID:C+g/MvKJ
GCはGCまかせのタイミングでいつかきっとメモリを解放できる
RAIIはRAIIオブジェクト破棄のタイミングで※1リソース※2を解放できる

※1 shared_ptrの場合は参照カウンタを見て
※2 shared_ptrの場合はメモリを
846デフォルトの名無しさん
垢版 |
2021/11/17(水) 23:55:15.10ID:SsdWlmrh
shared_ptrがGCかそうでないかはどうでもいいからさ、
GCの動作有無をアプリ開発層のプログラマから制御できる次世代言語はどれよ?
2021/11/17(水) 23:56:56.28ID:/Jn+6Ag0
真実は>>660
それ以上でもそれ以下でもない
2021/11/18(木) 00:02:29.34ID:1J6GnuLp
【結論】紅しょうがは無料だけど良心の範囲内!
2021/11/18(木) 00:30:08.00ID:xv2SjNGH
>>846
D
2021/11/18(木) 07:15:04.87ID:5A0vzciY
99%のプログラマーはこんなアスペルガーの領域のことまで考えてプログラミングやってないと思う
2021/11/18(木) 08:11:30.53ID:Q5lW897P
>>836
ゴールポストは>>684から変えてないし、まともな異論も出てない。「手動メモリ管理」とかも>684を否定しているわけではないだろ。それとも>684はデタラメと主張するのかね?
嘘ばかりの歴史改竄主義者だな。

世間一般の認識は>>842みたいだから、>836の心の中のGCについては勝手にすれば? 歴史改竄しないかぎりだけど。
2021/11/18(木) 08:57:24.74ID:5v/hszDl
キミはおそらく誰からも相手されとらんだけではw
2021/11/18(木) 09:07:54.56ID:Ip1KYC/r
お前らが大好きなWikipediaの文言だぞ

https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)

Reference counting
Main article: Reference counting

Reference counting garbage collection is where each object has a count of the number of references to it. Garbage is identified by having a reference count of zero. An object's reference count is incremented when a reference to it is created, and decremented when a reference is destroyed. When the count reaches zero, the object's memory is reclaimed.

As with manual memory management, and unlike tracing garbage collection, reference counting guarantees that objects are destroyed as soon as their last reference is destroyed, and usually only accesses memory which is either in CPU caches, in objects to be freed, or directly pointed to by those, and thus tends to not have significant negative side effects on CPU cache and virtual memory operation.

There are a number of disadvantages to reference counting; this can generally be solved or mitigated by more sophisticated algorithms

https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3

スマートポインタ

なお、C言語で参照カウント方式のガベージコレクションを利用する場合、通常煩雑なコーディングを必要とするが、C++では以下のようなRAIIを活用したスマートポインタを利用することで緩和できる。

・Boost C++ライブラリのboost::shared_ptrおよびboost::shared_array。
・参照カウントの増減処理をカスタマイズできるboost::intrusive_ptrもある。
・C++11以降のstd::shared_ptr
・Active Template LibraryのATL::CComPtr - COMオブジェクトのスマートポインタ。
・Windows Runtime LibraryのMicrosoft::WRL::ComPtr - Windowsランタイムオブジェクトのスマートポインタ。COMオブジェクトにも使用可能。
854デフォルトの名無しさん
垢版 |
2021/11/18(木) 11:21:14.46ID:/He/baLS
>>823
否定はしないが賛成もしない
new を出来るだけ避ける様に心がければ delete の心配が無くなるのは当たり前
2021/11/18(木) 11:30:02.24ID:/He/baLS
>>846
node.js
2021/11/18(木) 13:20:13.82ID:5Kqa+JGe
>>823
newを使わない要らないとはヒープを一切使わないという意味ですか?
それともC言語のように自分でmalloc等を用いてヒープメモリ管理を行うべきという意味ですか?
前者はそれら挙げている物のプログラミングが不可能だから後者の何十年も前に戻っただけですか?
2021/11/18(木) 13:51:24.01ID:+0r8+Axf
>>856
C++の標準ライブラリにあるstd::string、コンテナクラス、unique_ptr、shared_ptrなどを使っていればnewを書かずにヒープメモリを使うことができるし、shared_ptr以外はスコープを抜けたときに自動的にデストラクタを呼んでヒープを解放してくれる。
ちゃんとC++を使えばほとんどの場合手動でメモリ解放せずに済むよ。
2021/11/18(木) 14:53:32.65ID:/He/baLS
>>856
それはRAIIを判ってない発言だからたぶん恥ずかしい
2021/11/18(木) 14:56:26.80ID:/He/baLS
>>857
コンテナの中身がポインタだったら?
2021/11/18(木) 14:57:53.21ID:+tJnStuG
本人も認めてるけどRAIIってネーミングセンスがないよな
2021/11/18(木) 15:10:40.66ID:+tJnStuG
>>856
この辺見るといいと思う
https://www.youtube.com/watch?v=86xWVb4XIyE&;t=1790s

shared_ptrがGCの一種って話も出てくる
2021/11/18(木) 15:13:07.47ID:5Kqa+JGe
>>857
しかし元の方は>>821でdeleteを使わないだけでなくshared_ptrも使わないとおっしゃっているのです
つまり解放をどうするのか問題が残ります
あとコンテナ自体の解放に加えて要素が値だけで構成されずポインタを含む場合はその先の解放も必要ですよね
2021/11/18(木) 16:00:24.60ID:5Kqa+JGe
>>858
ある程度の構造を持ったデータを扱う場合
RAIIではそのクラスのデストラクタでdeleteが発生しますよね?
>>823はdeleteも要らないと書いていますがそこはどうするのでしょう?
2021/11/18(木) 16:21:52.26ID:BzFs1LlE
new/deleteを明記しないってだけやろ
2021/11/18(木) 16:36:40.14ID:f69aBKlz
golangなんかだとbenchでB/opやallocs/opが取れるけど、他の言語はあまりメモリー量は重要視してないのかな?
最終的にはエネルギー毎のjoule/opとか出してほしいけど、IntelとAMDそしてARMで全然違うのはCOP21とかは
何も考えてない偽善だろう
2021/11/18(木) 17:16:59.79ID:x5F/kwMZ
>>862
所有権について言及してるしunique_ptrを使うのでしょう
867デフォルトの名無しさん
垢版 |
2021/11/18(木) 18:07:16.31ID:dthIgn7Y
流れを踏まえると
C#はせっかくGCがあるのに
自分でいちいち手動のDisposeを描かされる

残念な言語(キリっ

と言わざるを得ない
2021/11/18(木) 18:10:14.42ID:z3VijVy2
GoやJavaなんかだとGCがあるからやばい、って思えるほどシビアなプロジェクトの開発をしてみたいもんだ
869デフォルトの名無しさん
垢版 |
2021/11/18(木) 18:13:29.70ID:P63H+fUW
>>863-864
デストラクタ内のdeleteは勘定に入れなくて良いルールなんだろう
2021/11/18(木) 18:20:18.80ID:MFoti6qx
>>867
というより可能な限りGCを動かさないように
値型を多用してコレクションも
System.Collectionsじゃなくて
System.Collections.Genericのほうを使うとかして
ヒープ側を使わないようにする悲しい頑張りが必要
2021/11/18(木) 18:21:21.59ID:Hn1JS7XJ
まあ、ネイティブコンパイラが必須なケースが少ないからこそ
JavaScriptインタプリタのようなものをC++やRustで書いて使ってるんだよな
2021/11/18(木) 18:27:54.82ID:+6yu0rNA
>>870
C#ならガベージの生成を避けるようなケースでもC++なら気にせずヒープ使いまくれるってことか?
そうでないならそれはGCの問題ではないことになるぞ
2021/11/18(木) 18:28:22.88ID:7LzjmfPa
まだgcの定義の話してんのかよ
文脈依存用語を絶対的な意味で決めつけようとする意味あんの?
2021/11/18(木) 18:37:38.93ID:EV0O2NnK
Railsの高速化に貢献する新たなJITコンパイラを搭載したRuby 3.1プレビュー1が公開
2021/11/18(木) 18:44:25.05ID:+6yu0rNA
>>874
すまないがもはや汎用言語でない言語はスレ違い
2021/11/18(木) 18:47:30.80ID:BzFs1LlE
>>869
newしないんだったらdeleteだって書く必要ないでしょデストラクタであっても
2021/11/18(木) 19:27:50.79ID:z3VijVy2
「汎用言語」と呼ばれるにはミドルウェアを書くのにも適してる言語じゃないといけないの?
2021/11/18(木) 19:36:07.29ID:x5F/kwMZ
Rubyより採用実績の少ない言語は皆専用言語
2021/11/18(木) 19:51:50.15ID:rsuv1+NH
このスレといいフレームワーク系のスレといい、お気に入り以外を攻撃してワンワン噛みつく奴ばっかや…
ニュースリリースぐらい大目に見たれよ?Wikipediaを何行も張り付けるウンコの10倍は有用だぜ?
2021/11/18(木) 20:17:22.46ID:5Kqa+JGe
>>864
なるほど
クラス宣言側でdeleteを使っていても関数側でdeleteを明記しなければdeleteを使っていないことになるのですね

>>821
> deleteも使わない。

>>823
> deleteすら要らない。

ここまではっきりと書かれているので当然クラス宣言の中でもdeleteを使わない意味だと受け取っていました

ところでクラス宣言のデストラクタでdeleteを使う形はスマートポインタと完全に同じ形になっていますが
この自動的にメモリを解放する手法はGCに該当するのでしょうか?
2021/11/18(木) 20:28:31.75ID:Hn1JS7XJ
いちいち質問して答えを待ってると判断が遅いんだよね
自分のお気に入りの答えを自分で判断する方が圧倒的に早い
882デフォルトの名無しさん
垢版 |
2021/11/18(木) 21:25:37.77ID:PdOXvPCx
C++はJavaと違うって事では。
2021/11/18(木) 21:51:51.02ID:tNnQbC1E
早漏DTの意見でした
2021/11/18(木) 22:44:57.81ID:2INYRpvr
組み込みのmruby は、apache などのmiddleware も書ける。
C の文字列の代わりに、mruby の文字列を使うと簡単・安全

人工衛星、イザナギ・イザナミなどに使っている

mrubyの本も出た。
micro python, Lua の代わりに使う
2021/11/18(木) 22:59:55.28ID:QovEQeBY
>>880
自動的に開放しているからGCの一種
2021/11/19(金) 00:42:48.75ID:mxTjN9mz
>>880
クラス宣言ってshared_ptrの実装のこと言ってる?
2021/11/19(金) 05:13:09.95ID:DX593LKr
mrubyとか名前ダサくね?
信者になればかっこよく見えるの?
名前重要とかどこいった
2021/11/19(金) 10:31:20.07ID:eyeX0xyM
ruby.js
889デフォルトの名無しさん
垢版 |
2021/11/19(金) 12:27:45.87ID:fGKSbVlD
そんなこと言ってるとrustに別実装の処理系が出来た時にディスられるぞ
rustだからstainlessとか
2021/11/19(金) 12:47:40.77ID:mxTjN9mz
すでに別実装はあったような
2021/11/19(金) 13:41:02.55ID:rEwMjqRY
>>889
なんでもかんでもxxx.rsって付くのはダサいけど、xxx.jsと同じかな
2021/11/19(金) 13:55:37.85ID:XZPDRrte
GCある言語でもインスタンスの生成や参照切れで解放されることくらいは
知ってる必要があるんだが、それもまともにわかってなさげなやつで溢れてる。
893デフォルトの名無しさん
垢版 |
2021/11/19(金) 13:56:15.69ID:eyeX0xyM
ださい拡張子
.cs
.ts
.ps
.gs
894デフォルトの名無しさん
垢版 |
2021/11/19(金) 14:56:18.17ID:nTNvNEE2
>>892
誰一人まったく解放されないなんて言ってる奴いないと思うが、どこの世界線から来た人?
895デフォルトの名無しさん
垢版 |
2021/11/19(金) 18:18:36.72ID:cPtoFLsh
>>886

class foo
{
  ~foo()=delete; // このdeleteのことを言ってる。
};
2021/11/19(金) 19:21:02.67ID:p3l3yC+x
>>895
アスペか?
897デフォルトの名無しさん
垢版 |
2021/11/19(金) 19:55:35.05ID:cPtoFLsh
>>896
ID末尾をxにしてるのは、C++とC#の両方を表現してるのかい?
898デフォルトの名無しさん
垢版 |
2021/11/19(金) 19:57:08.72ID:cPtoFLsh
宣言のdeleteって言うから。
2021/11/19(金) 20:09:20.65ID:M2ROgxHD
>>898
流石にnew/deleteとdelete宣言は別物だろうなぁ。
同じ単語を使っているのはc++のケチ臭い用語の流用の結果だし。
900デフォルトの名無しさん
垢版 |
2021/11/19(金) 20:52:12.15ID:cPtoFLsh
デストラクタのdelete自体も嵐を呼ぶ話題だけど。
2021/11/19(金) 21:04:37.53ID:eorWY7YE
>>895
それならRAIIで本体をGCさせる時に連動GCさせる時の常套手段
902デフォルトの名無しさん
垢版 |
2021/11/19(金) 21:11:17.06ID:cPtoFLsh
たぶんJavaの人じゃないかと思うんだよね。
2021/11/19(金) 22:08:12.78ID:CstSAS10
>>901
本体もGCと呼ぶかは議論が分かれそうだが
付属部分を連動GCすることだけを目的に本体が実体を無くしたものがunique_ptrだよな
904デフォルトの名無しさん
垢版 |
2021/11/20(土) 00:19:22.26ID:OQv16NeR
自動変数もGCなのか?
2021/11/20(土) 02:24:49.30ID:V+twZ/1f
>>584
電気メーカーが糊口をしのぐための税金バラマキ国プロ
昔も今も変わらない
2021/11/20(土) 08:44:52.28ID:V7jlhcsx
1. 昔も今もどっちも変わらない
2. GCもスマポもどっちも変わらない
3. 1も2も3もどれでも変わらない
907デフォルトの名無しさん
垢版 |
2021/11/20(土) 11:42:49.09ID:NkWaDqk7
>>904
約一名にとってはそうみたい
2021/11/20(土) 11:51:59.21ID:/G7VwRdk
>>904
自動変数は参照あっても解放されるからGCにはならんね。
2021/11/20(土) 12:28:48.64ID:/C1S+OCl
君らはいつになったら回収されるん?
910デフォルトの名無しさん
垢版 |
2021/11/20(土) 16:24:03.02ID:lK9Ghq6L
Rustの悪口言ったやつ許さんから
2021/11/20(土) 16:27:17.15ID:pWBsNJLr
Rustの母ちゃんでべそ〜
2021/11/20(土) 16:42:56.01ID:H5f9Qsz8
RustがすごいんじゃなくてGCがクソ
913デフォルトの名無しさん
垢版 |
2021/11/20(土) 18:07:02.96ID:OQv16NeR
バグを無くすにはGCじゃなくテストですよ。
2021/11/21(日) 10:14:13.30ID:UyY2TlzJ
ソースを読まなくてもできるテストは
不正アクセスと同じではないが似ている
2021/11/22(月) 20:18:26.53ID:pPz4fu4C
抽象バカはテストが書けないので困る。
2021/11/25(木) 08:38:48.33ID:KcP0JmbS
rustは少なくともCである程度のプログラムを書いてハマった経験がないと
この機能何のためにあるの?ってのがわからない
2021/11/25(木) 10:28:07.08ID:dqP+a0eJ
Rustを最近学んでるだけど、すぐに学習曲線やばい言語だということを納得した
おれはC++のスマートポインタらへん知ってるから、かなりマシなほうだと思うけど、
たしかにC/C++やってない人にはそうとうにキツそうだね

やってない人にオススメできる気がしない
2021/11/25(木) 10:35:35.35ID:6PNOZvLH
>>917
それは逆
Rustに苦労している人たちはC++経験者かつ頭が固くてC++から離れて頭をゼロにして学習する能力がない人たちだと言われている
2021/11/25(木) 10:56:21.20ID:lTzmbhqT
>>918
そんな話どこで言われてるの?
2021/11/25(木) 10:58:35.45ID:iyas0vJe
まぁC++一筋十数年って人だと大変かもね
C++に加えてScalaとかHaskellあたりを履修済みだとだいぶ楽
2021/11/25(木) 11:45:21.45ID:lTzmbhqT
rustもC++もScalaもHaskellも分かるが、まるでそうは思わないw
2021/11/25(木) 11:45:21.46ID:lTzmbhqT
rustもC++もScalaもHaskellも分かるが、まるでそうは思わないw
2021/11/25(木) 12:14:40.21ID:OYLxCDo4
C++11以降の流れをある程度追えているなら問題なかろうよ
2021/11/25(木) 12:38:43.29ID:lTzmbhqT
03で止まってる人なら辛いかもね
2021/11/25(木) 14:54:39.16ID://sjBQgD
最新のC++の方向性見るとこれなら
最初からRustやればとは思わない?
2021/11/25(木) 15:14:28.01ID:lTzmbhqT
C++はCみたいな書き方も出来るが、rustは最初からrustでないといけないから難しいと思う
2021/11/25(木) 15:50:19.56ID:662tr9PH
今はc/c++の知識を階段として学んでいる人多いだろうけど、今後はrustしかわかりませんみたいなrustネイティブも出てくるのかな?
これってアセンブリ→cのときにも言われてた?
cを理解するにはアセンブリがわかってないと無理みたいな
2021/11/25(木) 16:03:54.47ID:dqP+a0eJ
よくしらんけど、学習曲線を緩和させるような取り組みもいちおう検討されてるんでしょ?
2021/11/25(木) 16:04:26.05ID:ypEo7i9g
>>926
Cみたいな書き方できるのをメリットと見るかデメリットと見るか?
2021/11/25(木) 16:59:45.85ID:lTzmbhqT
CはBASICほど遅くなくアセンブラ(機械語)が必要ない、当時俺にとっては奇跡の言語だった
C/C++/VB→Javaのときは実際にJavaしか分かりません、が大量に発生した
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況