次世代言語27 Nim Zig Pony Carbon Gleam (308レス)
次世代言語27 Nim Zig Pony Carbon Gleam http://mevius.5ch.net/test/read.cgi/tech/1659660050/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
23: デフォルトの名無しさん (ワッチョイ 422c-GRcq) [sage] 2022/08/14(日) 02:10:20.77 ID:H+Dty+yM0 >>17 Nimでもスタックとヒープを使いわけられるよ。 refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。 それ以外のローカル変数はスタックに確保。 C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。 だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの? http://mevius.5ch.net/test/read.cgi/tech/1659660050/23
24: デフォルトの名無しさん (ワッチョイ 422c-GRcq) [sage] 2022/08/14(日) 02:20:35.55 ID:H+Dty+yM0 間違えて連続投稿してすいませんでした。 >>22 type SomeObj = object x: int proc foo = var x = SomeObj(x: 10) #スタックに確保 var y = new(SomeObj) #ヒープに確保 foo() http://mevius.5ch.net/test/read.cgi/tech/1659660050/24
25: デフォルトの名無しさん (スプッッ Sd62-IWzR) [sage] 2022/08/14(日) 09:07:22.22 ID:5kZWLu5Dd ここの系列で出たことあるのか知らないし、ちょっと毛色違うんだけど設定ファイル言語でDhallってあるんだね 方向性は凄く好みなんだけど最新バージョンの規格をそのまま食えるのが現状Haskell(とPureScript?)だけらしくて君らそういうところやぞ……ってなってる yamlやjsonに変換してから食わせることはできるらしいけどやっぱそのまま食えるのと手間と複雑さは無駄に嵩張るし、この手のDSLはどれだけ広い環境で使えるかが重要よねって http://mevius.5ch.net/test/read.cgi/tech/1659660050/25
26: デフォルトの名無しさん (スッップ Sd62-Rl2g) [sage] 2022/08/14(日) 09:18:07.39 ID:E6D9Byfed >>21 C#はスタック変数のエスケープは不可で、その参照を返すようなことはできない クロージャでキャプチャされたり非同期メソッドの場合にヒープに昇格する例外はあるが、文脈から明らかであり、いわゆるエスケープ解析とは異なるものだ 更に、構造体を ref struct として定義することで上記のような昇格も不可となり、完全にスタック専用になる http://mevius.5ch.net/test/read.cgi/tech/1659660050/26
27: デフォルトの名無しさん (ワッチョイ 4201-8lLW) [sage] 2022/08/14(日) 10:18:19.35 ID:osAuRY7C0 >>25 ちょっとぐぐってみたけど俺はできると思ってる子がなんかこれあったら便利やんって言うのを色々詰め込んだイメージ 本当にでかい設定ファイルなら嬉しいのかも知れないけど大多数の設定ファイルにはオーバースペック過ぎて流行らないと思う http://mevius.5ch.net/test/read.cgi/tech/1659660050/27
28: デフォルトの名無しさん (ワッチョイ adda-TI6p) [sage] 2022/08/14(日) 10:55:58.43 ID:lDco67Nc0 オーバースペックさで言うとyamlも相当だしそれだけでは判断できないのでは http://mevius.5ch.net/test/read.cgi/tech/1659660050/28
29: デフォルトの名無しさん (ワッチョイ 79f0-mhOm) [sage] 2022/08/14(日) 19:14:39.32 ID:1Y4ysm770 スタックとかヒープとか基本的に実装依存じゃないの 言語レベルで規格として策定されてるのある? http://mevius.5ch.net/test/read.cgi/tech/1659660050/29
30: デフォルトの名無しさん (ワッチョイ 027c-5Ix7) [sage] 2022/08/14(日) 19:23:27.68 ID:TMCPzdUa0 CやC++はmallocやらnewなどでメモリ確保しない限りは全てスタックではないの? 今時のコンパイラはどうやってるのか知らんけど昔は少なくともそうだった http://mevius.5ch.net/test/read.cgi/tech/1659660050/30
31: デフォルトの名無しさん (ワッチョイ 422c-GRcq) [sage] 2022/08/14(日) 19:43:04.36 ID:H+Dty+yM0 可変長配列とか文字列型などの必要なメモリ量が実行時に決まるものや 関数やブロックのスコープと変数の寿命が対応しないもの(GCで管理されるオブジェクト)などはヒープ使うしかないでしょ。 けどローカル変数などをヒープに置くと効率悪いし。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/31
32: デフォルトの名無しさん (ワッチョイ 4201-8lLW) [sage] 2022/08/14(日) 19:55:23.52 ID:osAuRY7C0 >>29 ハードウェアスタックがないマシン(汎用機とか)もあるから実装依存なのは確かだけどそういうマシンでもソフトウェアでスタック作ってるので実装としてはたいして変わらん http://mevius.5ch.net/test/read.cgi/tech/1659660050/32
33: デフォルトの名無しさん (ワッチョイ 422c-GRcq) [sage] 2022/08/14(日) 19:58:39.91 ID:H+Dty+yM0 >>30 関数の外にある変数やstatic変数はstatic storageというプロセスが生まれてから死ぬまで存在し続ける領域に置かれるよ。 詳しくはdata segmentとかbssとかで検索してね。 static変数は値を保持し続けないといけないからスタックに置けないし、 関数の外にある変数は複数の関数から共有されるのでコンパイル時かリンク時にアドレスが決まってないといけないと思うのでおそらくスタックに置けない。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/33
34: デフォルトの名無しさん (アウアウウー Saa5-xzlL) [sage] 2022/08/14(日) 20:34:35.63 ID:d/RE/iMKa C++の定石としてオブジェクトはスタックに置くのが基本だよ デストラクタを動かしたいからね ヒープにデータを割り当てたい時は構造体やクラスでラップするのが基本 http://mevius.5ch.net/test/read.cgi/tech/1659660050/34
35: デフォルトの名無しさん (ワッチョイ adda-TI6p) [sage] 2022/08/14(日) 20:39:54.05 ID:lDco67Nc0 >>29 最適化の余地残すために規格では振る舞いしか記述しないのが基本だと思う レジスタだけ使うとかあるしね http://mevius.5ch.net/test/read.cgi/tech/1659660050/35
36: デフォルトの名無しさん (スプッッ Sd62-IWzR) [sage] 2022/08/14(日) 20:50:39.49 ID:/dHI52Jsd 可変長配列に限って言えばCは一応VLAがある 11からオプションだけど http://mevius.5ch.net/test/read.cgi/tech/1659660050/36
37: デフォルトの名無しさん (ブーイモ MMb6-Rl2g) [sage] 2022/08/15(月) 08:38:26.95 ID:qDRL1WTlM >>34 スマポ使えばいいだけだからそれはない http://mevius.5ch.net/test/read.cgi/tech/1659660050/37
38: デフォルトの名無しさん (アウアウウー Saa5-xzlL) [sage] 2022/08/15(月) 13:39:10.26 ID:SFJl5V0da >>37 スマポがまさに>>34のパターン使ってるんだけど http://mevius.5ch.net/test/read.cgi/tech/1659660050/38
39: デフォルトの名無しさん (ワッチョイ 027c-5Ix7) [sage] 2022/08/15(月) 15:41:07.32 ID:qHbAfBQi0 スマートポインタwって正直使う必要殆ど無いのに 全てのインスタンス生成で使うバカがいるよねw http://mevius.5ch.net/test/read.cgi/tech/1659660050/39
40: デフォルトの名無しさん (ワッチョイ 4201-8lLW) [sage] 2022/08/15(月) 16:32:14.78 ID:zxOEKBbO0 今時生ポインタでイキルバカが出てくるとはw http://mevius.5ch.net/test/read.cgi/tech/1659660050/40
41: デフォルトの名無しさん (ワッチョイ e9e6-xzlL) [sage] 2022/08/16(火) 18:56:36.29 ID:1oXHhIiq0 スタックに確保されるのがポインタなのかクラスや構造体の実態なのかをちゃんと理解してない人が多すぎるね コンパイラとかコンピュータアーキテクチャの勉強すべき そこを避けてたら絶対に使いこなせない http://mevius.5ch.net/test/read.cgi/tech/1659660050/41
42: デフォルトの名無しさん (ワッチョイ 027c-5Ix7) [sage] 2022/08/16(火) 19:04:37.29 ID:JSsOGCvC0 そもそもスタックやらヒープやらちゃんと意味が分かっている奴って アセンブラレベルで組んだことがあるとかじゃないと 知らなくても仕方ない気がするなぁ http://mevius.5ch.net/test/read.cgi/tech/1659660050/42
43: デフォルトの名無しさん (ワッチョイ 460f-U+eq) [sage] 2022/08/16(火) 19:50:02.47 ID:RYKZv1s10 使いこなす必要は無くて、理解が足りなくてもやりたい事が出来れば、それで良いと思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/43
44: デフォルトの名無しさん (アウアウウー Saa5-xzlL) [sage] 2022/08/17(水) 15:25:42.74 ID:DfCxGnRFa 理解してなくてやりたいことができるってそれはたまたま動いてるか その機能が必要ないことをやってるだけ 壁が来た時ぶち当たって手遅れになる 最近スクリプト言語系のエンジニアがRustとかのモダン言語で苦しんでるのを見ると 何が理解できてないのか?を理解することってのはすごく大事 http://mevius.5ch.net/test/read.cgi/tech/1659660050/44
45: デフォルトの名無しさん (ワッチョイ 3104-GRcq) [sage] 2022/08/17(水) 16:47:04.91 ID:hcUDPGl30 Compiler explorerとかでコードがどんな風に最適化されてアセンブリ言語になるか読んでみるといいかもね。 スタックに割り当てられたローカル変数はレジスタに割り当てられる場合はあるけどグローバル変数やヒープにある変数はかならずメモリ上におかれるから毎回メモリからレジスタにロードして値を計算してからメモリにストアされる。 http://mevius.5ch.net/test/read.cgi/tech/1659660050/45
46: デフォルトの名無しさん (ワッチョイ ed7c-n+Ky) [sage] 2022/08/17(水) 17:41:05.70 ID:J/baCQNr0 最適化でキャッシュの考慮や制御までするんだから volatileないと実際どうなるかはわからんとちゃうかな http://mevius.5ch.net/test/read.cgi/tech/1659660050/46
47: デフォルトの名無しさん (ワッチョイ 9901-5Ix7) [sage] 2022/08/17(水) 17:53:10.26 ID:cnWCAZlk0 Rustやるなら当然アセンブラが理解できないとってことだね メモリ安心安全のためには必要なコストだよね http://mevius.5ch.net/test/read.cgi/tech/1659660050/47
48: デフォルトの名無しさん (ワッチョイ 9901-U+eq) [sage] 2022/08/17(水) 20:56:42.47 ID:9RiCNb2+0 プログラム書くのが本業の人なら、どうやってプログラムが動くのか知らなきゃっていうのは分かるけれど、プログラムば手段であって、コピペでも何でも良いから欲しい結果が得られるなら良いって人もいるから。 それで、Rustがそんな人に合わせる必要はないし、そんなのはPython辺りに任せて、Rustはプロフェッショナルの道具でいいんじゃないの? http://mevius.5ch.net/test/read.cgi/tech/1659660050/48
49: デフォルトの名無しさん (ワッチョイ dd5f-FS65) [sage] 2022/08/17(水) 21:08:17.88 ID:3noakHYk0 それでいいよ あっちのスレの空気持ち込まないでくれ http://mevius.5ch.net/test/read.cgi/tech/1659660050/49
50: デフォルトの名無しさん (ワッチョイ adda-TI6p) [sage] 2022/08/17(水) 22:39:10.52 ID:SgLVBpM30 >>47 アセンブリ知ってて損することはないけど、必須な知識ではないよ スタックやヒープの区別について分かっていればよくて、理解のための手段のひとつとしてアセンブリが提案されているだけ 他の手段で理解できるならそれで良い Cを使いこなすのにアセンブリの知識が必須ではないのと同じ http://mevius.5ch.net/test/read.cgi/tech/1659660050/50
51: デフォルトの名無しさん (ワッチョイ 79f0-mhOm) [sage] 2022/08/17(水) 23:44:30.76 ID:C+o8slGL0 書いたコードがどんな機械語になってるか、確認してない層が一定数存在するって事? 周りに居たら嫌だなぁ http://mevius.5ch.net/test/read.cgi/tech/1659660050/51
52: デフォルトの名無しさん (ワッチョイ a5a4-n+Ky) [sage] 2022/08/18(木) 00:15:49.61 ID:uPozsGij0 どんなバイナリになるかイメージはするけど確認なんてしないだろ 最適化ビルドするとまるで想像通りじゃなくてびびったりはする http://mevius.5ch.net/test/read.cgi/tech/1659660050/52
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 256 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.100s