次世代言語27 Nim Zig Pony Carbon Gleam (308レス)
1-

24: (ワッチョイ 422c-GRcq) 2022/08/14(日)02:20 ID:H+Dty+yM0(4/6) AAS
間違えて連続投稿してすいませんでした。
>>22
type
 SomeObj = object
  x: int

proc foo =
 var x = SomeObj(x: 10) #スタックに確保
 var y = new(SomeObj) #ヒープに確保

foo()
25
(1): (スプッッ Sd62-IWzR) 2022/08/14(日)09:07 ID:5kZWLu5Dd(1) AAS
ここの系列で出たことあるのか知らないし、ちょっと毛色違うんだけど設定ファイル言語でDhallってあるんだね
方向性は凄く好みなんだけど最新バージョンの規格をそのまま食えるのが現状Haskell(とPureScript?)だけらしくて君らそういうところやぞ……ってなってる

yamlやjsonに変換してから食わせることはできるらしいけどやっぱそのまま食えるのと手間と複雑さは無駄に嵩張るし、この手のDSLはどれだけ広い環境で使えるかが重要よねって
26: (スッップ Sd62-Rl2g) 2022/08/14(日)09:18 ID:E6D9Byfed(1) AAS
>>21
C#はスタック変数のエスケープは不可で、その参照を返すようなことはできない
クロージャでキャプチャされたり非同期メソッドの場合にヒープに昇格する例外はあるが、文脈から明らかであり、いわゆるエスケープ解析とは異なるものだ
更に、構造体を ref struct として定義することで上記のような昇格も不可となり、完全にスタック専用になる
27: (ワッチョイ 4201-8lLW) 2022/08/14(日)10:18 ID:osAuRY7C0(1/2) AAS
>>25
ちょっとぐぐってみたけど俺はできると思ってる子がなんかこれあったら便利やんって言うのを色々詰め込んだイメージ
本当にでかい設定ファイルなら嬉しいのかも知れないけど大多数の設定ファイルにはオーバースペック過ぎて流行らないと思う
28: (ワッチョイ adda-TI6p) 2022/08/14(日)10:55 ID:lDco67Nc0(1/2) AAS
オーバースペックさで言うとyamlも相当だしそれだけでは判断できないのでは
29
(2): (ワッチョイ 79f0-mhOm) 2022/08/14(日)19:14 ID:1Y4ysm770(1) AAS
スタックとかヒープとか基本的に実装依存じゃないの
言語レベルで規格として策定されてるのある?
30
(1): (ワッチョイ 027c-5Ix7) 2022/08/14(日)19:23 ID:TMCPzdUa0(1) AAS
CやC++はmallocやらnewなどでメモリ確保しない限りは全てスタックではないの?
今時のコンパイラはどうやってるのか知らんけど昔は少なくともそうだった
31: (ワッチョイ 422c-GRcq) 2022/08/14(日)19:43 ID:H+Dty+yM0(5/6) AAS
可変長配列とか文字列型などの必要なメモリ量が実行時に決まるものや
関数やブロックのスコープと変数の寿命が対応しないもの(GCで管理されるオブジェクト)などはヒープ使うしかないでしょ。
けどローカル変数などをヒープに置くと効率悪いし。
32: (ワッチョイ 4201-8lLW) 2022/08/14(日)19:55 ID:osAuRY7C0(2/2) AAS
>>29
ハードウェアスタックがないマシン(汎用機とか)もあるから実装依存なのは確かだけどそういうマシンでもソフトウェアでスタック作ってるので実装としてはたいして変わらん
33: (ワッチョイ 422c-GRcq) 2022/08/14(日)19:58 ID:H+Dty+yM0(6/6) AAS
>>30
関数の外にある変数やstatic変数はstatic storageというプロセスが生まれてから死ぬまで存在し続ける領域に置かれるよ。
詳しくはdata segmentとかbssとかで検索してね。
static変数は値を保持し続けないといけないからスタックに置けないし、
関数の外にある変数は複数の関数から共有されるのでコンパイル時かリンク時にアドレスが決まってないといけないと思うのでおそらくスタックに置けない。
34
(2): (アウアウウー Saa5-xzlL) 2022/08/14(日)20:34 ID:d/RE/iMKa(1) AAS
C++の定石としてオブジェクトはスタックに置くのが基本だよ
デストラクタを動かしたいからね
ヒープにデータを割り当てたい時は構造体やクラスでラップするのが基本
35: (ワッチョイ adda-TI6p) 2022/08/14(日)20:39 ID:lDco67Nc0(2/2) AAS
>>29
最適化の余地残すために規格では振る舞いしか記述しないのが基本だと思う
レジスタだけ使うとかあるしね
36: (スプッッ Sd62-IWzR) 2022/08/14(日)20:50 ID:/dHI52Jsd(1) AAS
可変長配列に限って言えばCは一応VLAがある
11からオプションだけど
37
(1): (ブーイモ MMb6-Rl2g) 2022/08/15(月)08:38 ID:qDRL1WTlM(1) AAS
>>34
スマポ使えばいいだけだからそれはない
38: (アウアウウー Saa5-xzlL) 2022/08/15(月)13:39 ID:SFJl5V0da(1) AAS
>>37
スマポがまさに>>34のパターン使ってるんだけど
39: (ワッチョイ 027c-5Ix7) 2022/08/15(月)15:41 ID:qHbAfBQi0(1) AAS
スマートポインタwって正直使う必要殆ど無いのに
全てのインスタンス生成で使うバカがいるよねw
40: (ワッチョイ 4201-8lLW) 2022/08/15(月)16:32 ID:zxOEKBbO0(1) AAS
今時生ポインタでイキルバカが出てくるとはw
41: (ワッチョイ e9e6-xzlL) 2022/08/16(火)18:56 ID:1oXHhIiq0(1) AAS
スタックに確保されるのがポインタなのかクラスや構造体の実態なのかをちゃんと理解してない人が多すぎるね
コンパイラとかコンピュータアーキテクチャの勉強すべき
そこを避けてたら絶対に使いこなせない
42
(1): (ワッチョイ 027c-5Ix7) 2022/08/16(火)19:04 ID:JSsOGCvC0(1) AAS
そもそもスタックやらヒープやらちゃんと意味が分かっている奴って
アセンブラレベルで組んだことがあるとかじゃないと
知らなくても仕方ない気がするなぁ
43: (ワッチョイ 460f-U+eq) 2022/08/16(火)19:50 ID:RYKZv1s10(1) AAS
使いこなす必要は無くて、理解が足りなくてもやりたい事が出来れば、それで良いと思うよ。
44: (アウアウウー Saa5-xzlL) 2022/08/17(水)15:25 ID:DfCxGnRFa(1) AAS
理解してなくてやりたいことができるってそれはたまたま動いてるか
その機能が必要ないことをやってるだけ
壁が来た時ぶち当たって手遅れになる
最近スクリプト言語系のエンジニアがRustとかのモダン言語で苦しんでるのを見ると
何が理解できてないのか?を理解することってのはすごく大事
45: (ワッチョイ 3104-GRcq) 2022/08/17(水)16:47 ID:hcUDPGl30(1) AAS
Compiler explorerとかでコードがどんな風に最適化されてアセンブリ言語になるか読んでみるといいかもね。
スタックに割り当てられたローカル変数はレジスタに割り当てられる場合はあるけどグローバル変数やヒープにある変数はかならずメモリ上におかれるから毎回メモリからレジスタにロードして値を計算してからメモリにストアされる。
46: (ワッチョイ ed7c-n+Ky) 2022/08/17(水)17:41 ID:J/baCQNr0(1) AAS
最適化でキャッシュの考慮や制御までするんだから
volatileないと実際どうなるかはわからんとちゃうかな
47
(1): (ワッチョイ 9901-5Ix7) 2022/08/17(水)17:53 ID:cnWCAZlk0(1) AAS
Rustやるなら当然アセンブラが理解できないとってことだね
メモリ安心安全のためには必要なコストだよね
48: (ワッチョイ 9901-U+eq) 2022/08/17(水)20:56 ID:9RiCNb2+0(1) AAS
プログラム書くのが本業の人なら、どうやってプログラムが動くのか知らなきゃっていうのは分かるけれど、プログラムば手段であって、コピペでも何でも良いから欲しい結果が得られるなら良いって人もいるから。

それで、Rustがそんな人に合わせる必要はないし、そんなのはPython辺りに任せて、Rustはプロフェッショナルの道具でいいんじゃないの?
49: (ワッチョイ dd5f-FS65) 2022/08/17(水)21:08 ID:3noakHYk0(1) AAS
それでいいよ
あっちのスレの空気持ち込まないでくれ
50: (ワッチョイ adda-TI6p) 2022/08/17(水)22:39 ID:SgLVBpM30(1) AAS
>>47
アセンブリ知ってて損することはないけど、必須な知識ではないよ
スタックやヒープの区別について分かっていればよくて、理解のための手段のひとつとしてアセンブリが提案されているだけ
他の手段で理解できるならそれで良い
Cを使いこなすのにアセンブリの知識が必須ではないのと同じ
51: (ワッチョイ 79f0-mhOm) 2022/08/17(水)23:44 ID:C+o8slGL0(1) AAS
書いたコードがどんな機械語になってるか、確認してない層が一定数存在するって事?
周りに居たら嫌だなぁ
52
(1): (ワッチョイ a5a4-n+Ky) 2022/08/18(木)00:15 ID:uPozsGij0(1) AAS
どんなバイナリになるかイメージはするけど確認なんてしないだろ
最適化ビルドするとまるで想像通りじゃなくてびびったりはする
53: (ワッチョイ 827c-Z8r5) 2022/08/18(木)00:23 ID:K1uqUAUE0(1) AAS
>>52
だよね。
1-
あと 255 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s