!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
スレタイ(順番はRedMonk準拠)以外の言語もok
前スレ
次世代言語26 TypeScript Swift Go Kotlin Nim
https://mevius.5ch.net/test/read.cgi/tech/1655771266/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
次世代言語27 Nim Zig Pony Carbon Gleam
1デフォルトの名無しさん (ワッチョイ c35f-St8y)
2022/08/05(金) 09:40:50.22ID:/hLfNpmA02デフォルトの名無しさん (テテンテンテン MMee-Jv5Y)
2022/08/05(金) 12:18:02.18ID:X0qTPiXKM 乙
3デフォルトの名無しさん (ワッチョイ ba7c-t4GX)
2022/08/05(金) 20:57:32.27ID:IaHwMjJC0 本スレ
4デフォルトの名無しさん (ワッチョイ 9a4b-Xfpw)
2022/08/05(金) 23:22:06.64ID:mIb2aBTZ0 ただし Rust言語ネタは禁止します
5デフォルトの名無しさん (アウアウウー Sa55-9Xv3)
2022/08/06(土) 15:25:50.11ID:eSBCWCwIa >>1
O2
O2
6デフォルトの名無しさん (ワッチョイ 895f-UFof)
2022/08/07(日) 04:00:41.01ID:40aW3DD80 久々にHaxeのプロジェクトページを訪ねてみたらサポートターゲットにHashLinkなるVMが追加されていた
Nekoの後継?
Nekoの後継?
7デフォルトの名無しさん (ワッチョイ 1907-Z5J/)
2022/08/07(日) 13:37:10.92ID:Dd35QVWO0 過疎やん
8デフォルトの名無しさん (スッップ Sd33-agxP)
2022/08/07(日) 15:10:39.88ID:G9vPq40Zd >>6
haxeまだあったのか。
昔ちょろっと見てけっこう良さそうな印象持ったけど流行らなかったな。
nimもトランスレーター系だし、同じ将来にはならないで欲しい。
結局はバックにGAFAMがつくかどうかによるのかねぇ。
それでいうとpythonは運・タイミングが良かったのか。
haxeまだあったのか。
昔ちょろっと見てけっこう良さそうな印象持ったけど流行らなかったな。
nimもトランスレーター系だし、同じ将来にはならないで欲しい。
結局はバックにGAFAMがつくかどうかによるのかねぇ。
それでいうとpythonは運・タイミングが良かったのか。
9デフォルトの名無しさん (ササクッテロ Sp5d-RXyn)
2022/08/07(日) 15:41:37.32ID:SSq6cfdBp nimとかD言語みたいなちょっと良くした程度の言語だと流行らないんだろうなあ
RubyでいうRailsみたいな超人気フレームワークが登場すると話が変わってくるんだろうけも
RubyでいうRailsみたいな超人気フレームワークが登場すると話が変わってくるんだろうけも
10デフォルトの名無しさん (ワッチョイ 1b8c-lJ3c)
2022/08/08(月) 01:27:47.98ID:mO/LiGB2011デフォルトの名無しさん (ワッチョイ 132c-D0FT)
2022/08/08(月) 15:07:53.58ID:XhYLtnJ40 >>10
nimpyやnimporterが公式になるってどういうこと?
標準ライブラリになることを期待してるのかもしれないが、標準ライブラリになったとしても使いやすくなるとは限らないよ。
C/C++のライブラリだったらc2nimやfutharkというツールがC/C++のコードを読んで自動的にバインディングを生成してくれるらしい。
futharkはlibclangを使ってコードをパースするらしい。
nimpyやnimporterが公式になるってどういうこと?
標準ライブラリになることを期待してるのかもしれないが、標準ライブラリになったとしても使いやすくなるとは限らないよ。
C/C++のライブラリだったらc2nimやfutharkというツールがC/C++のコードを読んで自動的にバインディングを生成してくれるらしい。
futharkはlibclangを使ってコードをパースするらしい。
12デフォルトの名無しさん (ワッチョイ 13a5-s6Hz)
2022/08/11(木) 04:05:29.11ID:Bpvt7Gu80 CarbonってC++のABI問題の拗れが引き金となって生まれたものなんだろうけど
わざわざ文法から作り直すことないのにな
実用的なレベルになるまで相当かかりそう
わざわざ文法から作り直すことないのにな
実用的なレベルになるまで相当かかりそう
13デフォルトの名無しさん (スッップ Sd33-JIap)
2022/08/11(木) 08:03:21.25ID:6LydNS9Hd GoogleでC++の糞の山のメンテばっかりさせられて嫌気が差したんだろ
所詮数あるホビー言語の一つに過ぎないんだから好きにさせてやれよ
所詮数あるホビー言語の一つに過ぎないんだから好きにさせてやれよ
14デフォルトの名無しさん (テテンテンテン MM8b-lJ3c)
2022/08/12(金) 13:09:15.20ID:0xlDyyucM15デフォルトの名無しさん (ワッチョイ 937c-agxP)
2022/08/12(金) 15:40:56.79ID:bDQmrk+50 nimのアンダースコアを無視する仕様は好きじゃない。
16デフォルトの名無しさん (ワッチョイ 132c-D0FT)
2022/08/12(金) 18:28:24.07ID:D0nb2yzy017デフォルトの名無しさん (ワッチョイ 468c-Waa7)
2022/08/13(土) 22:42:00.05ID:6wAoLN5t0 Rustを見てて疑問に思うところがあるんだけど、
「コールスタック専用変数」「ヒープ用変数」といった
使い分けをする言語はあるのかしらん?
現状の言語で近いのは
C:変数はコールスタック専用。ヒープのインスタンスはポインタで管理
Rust:変数はコールスタック専用。ヒープ用変数はBox、Vec、Rcとかで模倣
ぐらいか。
コールスタックにあるインスタンスはスコープに連動するRAIIとかの便利な特性があるから、
他の言語でもコールスタック専用変数があってもいいと思うんだけど。
例えばJavaにコールスタック用変数があればfinalizeメソッドももっと使いやすくなりそう。
コールスタック用変数専用クラスとかあってもいいし。
「コールスタック専用変数」「ヒープ用変数」といった
使い分けをする言語はあるのかしらん?
現状の言語で近いのは
C:変数はコールスタック専用。ヒープのインスタンスはポインタで管理
Rust:変数はコールスタック専用。ヒープ用変数はBox、Vec、Rcとかで模倣
ぐらいか。
コールスタックにあるインスタンスはスコープに連動するRAIIとかの便利な特性があるから、
他の言語でもコールスタック専用変数があってもいいと思うんだけど。
例えばJavaにコールスタック用変数があればfinalizeメソッドももっと使いやすくなりそう。
コールスタック用変数専用クラスとかあってもいいし。
18デフォルトの名無しさん (スッップ Sd62-Rl2g)
2022/08/13(土) 23:29:46.92ID:601ao6Evd スタックとヒープの使い分けができるという意味ならGoとかC#とか
19デフォルトの名無しさん (ワッチョイ 422c-GRcq)
2022/08/14(日) 01:50:30.53ID:H+Dty+yM0 >>17
Nimでもスタックとヒープを使いわけられるよ。
refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。
それ以外のローカル変数はスタックに確保。
C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。
だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの?
Nimでもスタックとヒープを使いわけられるよ。
refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。
それ以外のローカル変数はスタックに確保。
C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。
だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの?
20デフォルトの名無しさん (ワッチョイ 422c-GRcq)
2022/08/14(日) 01:50:48.23ID:H+Dty+yM0 >>17
Nimでもスタックとヒープを使いわけられるよ。
refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。
それ以外のローカル変数はスタックに確保。
C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。
だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの?
Nimでもスタックとヒープを使いわけられるよ。
refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。
それ以外のローカル変数はスタックに確保。
C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。
だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの?
21デフォルトの名無しさん (ワッチョイ 468c-8lLW)
2022/08/14(日) 01:53:56.93ID:XCwSZ99k0 >>18
変数のエスケープ解析して自動でヒープとスタックを使い分けるんじゃなくて、その変数をスコープからエスケープするような使い方をしたときにコンパイルエラーにするようなのを想定しています。
スタックフレーム制約付き変数ですな。
変数のエスケープ解析して自動でヒープとスタックを使い分けるんじゃなくて、その変数をスコープからエスケープするような使い方をしたときにコンパイルエラーにするようなのを想定しています。
スタックフレーム制約付き変数ですな。
22デフォルトの名無しさん (ワッチョイ 468c-8lLW)
2022/08/14(日) 02:03:29.71ID:XCwSZ99k0 >>20
確か、Nimもスタックフレームにインスタンスを置くことを強制できなかったかと思うけど、どうだったっけ?
確か、Nimもスタックフレームにインスタンスを置くことを強制できなかったかと思うけど、どうだったっけ?
23デフォルトの名無しさん (ワッチョイ 422c-GRcq)
2022/08/14(日) 02:10:20.77ID:H+Dty+yM0 >>17
Nimでもスタックとヒープを使いわけられるよ。
refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。
それ以外のローカル変数はスタックに確保。
C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。
だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの?
Nimでもスタックとヒープを使いわけられるよ。
refのついた型とクロージャの環境とstring, seqの中身はヒープに確保される。
それ以外のローカル変数はスタックに確保。
C言語のグローバル変数とstatic変数はstatic storageというスタックとは別の所に置かれるよ。
だいたいのシステムプログラミング言語ならヒープとスタックを使い分けられるんじゃないの?
24デフォルトの名無しさん (ワッチョイ 422c-GRcq)
2022/08/14(日) 02:20:35.55ID:H+Dty+yM0 間違えて連続投稿してすいませんでした。
>>22
type
SomeObj = object
x: int
proc foo =
var x = SomeObj(x: 10) #スタックに確保
var y = new(SomeObj) #ヒープに確保
foo()
>>22
type
SomeObj = object
x: int
proc foo =
var x = SomeObj(x: 10) #スタックに確保
var y = new(SomeObj) #ヒープに確保
foo()
25デフォルトの名無しさん (スプッッ Sd62-IWzR)
2022/08/14(日) 09:07:22.22ID:5kZWLu5Dd ここの系列で出たことあるのか知らないし、ちょっと毛色違うんだけど設定ファイル言語でDhallってあるんだね
方向性は凄く好みなんだけど最新バージョンの規格をそのまま食えるのが現状Haskell(とPureScript?)だけらしくて君らそういうところやぞ……ってなってる
yamlやjsonに変換してから食わせることはできるらしいけどやっぱそのまま食えるのと手間と複雑さは無駄に嵩張るし、この手のDSLはどれだけ広い環境で使えるかが重要よねって
方向性は凄く好みなんだけど最新バージョンの規格をそのまま食えるのが現状Haskell(とPureScript?)だけらしくて君らそういうところやぞ……ってなってる
yamlやjsonに変換してから食わせることはできるらしいけどやっぱそのまま食えるのと手間と複雑さは無駄に嵩張るし、この手のDSLはどれだけ広い環境で使えるかが重要よねって
26デフォルトの名無しさん (スッップ Sd62-Rl2g)
2022/08/14(日) 09:18:07.39ID:E6D9Byfed >>21
C#はスタック変数のエスケープは不可で、その参照を返すようなことはできない
クロージャでキャプチャされたり非同期メソッドの場合にヒープに昇格する例外はあるが、文脈から明らかであり、いわゆるエスケープ解析とは異なるものだ
更に、構造体を ref struct として定義することで上記のような昇格も不可となり、完全にスタック専用になる
C#はスタック変数のエスケープは不可で、その参照を返すようなことはできない
クロージャでキャプチャされたり非同期メソッドの場合にヒープに昇格する例外はあるが、文脈から明らかであり、いわゆるエスケープ解析とは異なるものだ
更に、構造体を ref struct として定義することで上記のような昇格も不可となり、完全にスタック専用になる
27デフォルトの名無しさん (ワッチョイ 4201-8lLW)
2022/08/14(日) 10:18:19.35ID:osAuRY7C0 >>25
ちょっとぐぐってみたけど俺はできると思ってる子がなんかこれあったら便利やんって言うのを色々詰め込んだイメージ
本当にでかい設定ファイルなら嬉しいのかも知れないけど大多数の設定ファイルにはオーバースペック過ぎて流行らないと思う
ちょっとぐぐってみたけど俺はできると思ってる子がなんかこれあったら便利やんって言うのを色々詰め込んだイメージ
本当にでかい設定ファイルなら嬉しいのかも知れないけど大多数の設定ファイルにはオーバースペック過ぎて流行らないと思う
28デフォルトの名無しさん (ワッチョイ adda-TI6p)
2022/08/14(日) 10:55:58.43ID:lDco67Nc0 オーバースペックさで言うとyamlも相当だしそれだけでは判断できないのでは
29デフォルトの名無しさん (ワッチョイ 79f0-mhOm)
2022/08/14(日) 19:14:39.32ID:1Y4ysm770 スタックとかヒープとか基本的に実装依存じゃないの
言語レベルで規格として策定されてるのある?
言語レベルで規格として策定されてるのある?
30デフォルトの名無しさん (ワッチョイ 027c-5Ix7)
2022/08/14(日) 19:23:27.68ID:TMCPzdUa0 CやC++はmallocやらnewなどでメモリ確保しない限りは全てスタックではないの?
今時のコンパイラはどうやってるのか知らんけど昔は少なくともそうだった
今時のコンパイラはどうやってるのか知らんけど昔は少なくともそうだった
31デフォルトの名無しさん (ワッチョイ 422c-GRcq)
2022/08/14(日) 19:43:04.36ID:H+Dty+yM0 可変長配列とか文字列型などの必要なメモリ量が実行時に決まるものや
関数やブロックのスコープと変数の寿命が対応しないもの(GCで管理されるオブジェクト)などはヒープ使うしかないでしょ。
けどローカル変数などをヒープに置くと効率悪いし。
関数やブロックのスコープと変数の寿命が対応しないもの(GCで管理されるオブジェクト)などはヒープ使うしかないでしょ。
けどローカル変数などをヒープに置くと効率悪いし。
32デフォルトの名無しさん (ワッチョイ 4201-8lLW)
2022/08/14(日) 19:55:23.52ID:osAuRY7C0 >>29
ハードウェアスタックがないマシン(汎用機とか)もあるから実装依存なのは確かだけどそういうマシンでもソフトウェアでスタック作ってるので実装としてはたいして変わらん
ハードウェアスタックがないマシン(汎用機とか)もあるから実装依存なのは確かだけどそういうマシンでもソフトウェアでスタック作ってるので実装としてはたいして変わらん
33デフォルトの名無しさん (ワッチョイ 422c-GRcq)
2022/08/14(日) 19:58:39.91ID:H+Dty+yM0 >>30
関数の外にある変数やstatic変数はstatic storageというプロセスが生まれてから死ぬまで存在し続ける領域に置かれるよ。
詳しくはdata segmentとかbssとかで検索してね。
static変数は値を保持し続けないといけないからスタックに置けないし、
関数の外にある変数は複数の関数から共有されるのでコンパイル時かリンク時にアドレスが決まってないといけないと思うのでおそらくスタックに置けない。
関数の外にある変数やstatic変数はstatic storageというプロセスが生まれてから死ぬまで存在し続ける領域に置かれるよ。
詳しくはdata segmentとかbssとかで検索してね。
static変数は値を保持し続けないといけないからスタックに置けないし、
関数の外にある変数は複数の関数から共有されるのでコンパイル時かリンク時にアドレスが決まってないといけないと思うのでおそらくスタックに置けない。
34デフォルトの名無しさん (アウアウウー Saa5-xzlL)
2022/08/14(日) 20:34:35.63ID:d/RE/iMKa C++の定石としてオブジェクトはスタックに置くのが基本だよ
デストラクタを動かしたいからね
ヒープにデータを割り当てたい時は構造体やクラスでラップするのが基本
デストラクタを動かしたいからね
ヒープにデータを割り当てたい時は構造体やクラスでラップするのが基本
35デフォルトの名無しさん (ワッチョイ adda-TI6p)
2022/08/14(日) 20:39:54.05ID:lDco67Nc036デフォルトの名無しさん (スプッッ Sd62-IWzR)
2022/08/14(日) 20:50:39.49ID:/dHI52Jsd 可変長配列に限って言えばCは一応VLAがある
11からオプションだけど
11からオプションだけど
37デフォルトの名無しさん (ブーイモ MMb6-Rl2g)
2022/08/15(月) 08:38:26.95ID:qDRL1WTlM >>34
スマポ使えばいいだけだからそれはない
スマポ使えばいいだけだからそれはない
38デフォルトの名無しさん (アウアウウー Saa5-xzlL)
2022/08/15(月) 13:39:10.26ID:SFJl5V0da39デフォルトの名無しさん (ワッチョイ 027c-5Ix7)
2022/08/15(月) 15:41:07.32ID:qHbAfBQi0 スマートポインタwって正直使う必要殆ど無いのに
全てのインスタンス生成で使うバカがいるよねw
全てのインスタンス生成で使うバカがいるよねw
40デフォルトの名無しさん (ワッチョイ 4201-8lLW)
2022/08/15(月) 16:32:14.78ID:zxOEKBbO0 今時生ポインタでイキルバカが出てくるとはw
41デフォルトの名無しさん (ワッチョイ e9e6-xzlL)
2022/08/16(火) 18:56:36.29ID:1oXHhIiq0 スタックに確保されるのがポインタなのかクラスや構造体の実態なのかをちゃんと理解してない人が多すぎるね
コンパイラとかコンピュータアーキテクチャの勉強すべき
そこを避けてたら絶対に使いこなせない
コンパイラとかコンピュータアーキテクチャの勉強すべき
そこを避けてたら絶対に使いこなせない
42デフォルトの名無しさん (ワッチョイ 027c-5Ix7)
2022/08/16(火) 19:04:37.29ID:JSsOGCvC0 そもそもスタックやらヒープやらちゃんと意味が分かっている奴って
アセンブラレベルで組んだことがあるとかじゃないと
知らなくても仕方ない気がするなぁ
アセンブラレベルで組んだことがあるとかじゃないと
知らなくても仕方ない気がするなぁ
43デフォルトの名無しさん (ワッチョイ 460f-U+eq)
2022/08/16(火) 19:50:02.47ID:RYKZv1s10 使いこなす必要は無くて、理解が足りなくてもやりたい事が出来れば、それで良いと思うよ。
44デフォルトの名無しさん (アウアウウー Saa5-xzlL)
2022/08/17(水) 15:25:42.74ID:DfCxGnRFa 理解してなくてやりたいことができるってそれはたまたま動いてるか
その機能が必要ないことをやってるだけ
壁が来た時ぶち当たって手遅れになる
最近スクリプト言語系のエンジニアがRustとかのモダン言語で苦しんでるのを見ると
何が理解できてないのか?を理解することってのはすごく大事
その機能が必要ないことをやってるだけ
壁が来た時ぶち当たって手遅れになる
最近スクリプト言語系のエンジニアがRustとかのモダン言語で苦しんでるのを見ると
何が理解できてないのか?を理解することってのはすごく大事
45デフォルトの名無しさん (ワッチョイ 3104-GRcq)
2022/08/17(水) 16:47:04.91ID:hcUDPGl30 Compiler explorerとかでコードがどんな風に最適化されてアセンブリ言語になるか読んでみるといいかもね。
スタックに割り当てられたローカル変数はレジスタに割り当てられる場合はあるけどグローバル変数やヒープにある変数はかならずメモリ上におかれるから毎回メモリからレジスタにロードして値を計算してからメモリにストアされる。
スタックに割り当てられたローカル変数はレジスタに割り当てられる場合はあるけどグローバル変数やヒープにある変数はかならずメモリ上におかれるから毎回メモリからレジスタにロードして値を計算してからメモリにストアされる。
46デフォルトの名無しさん (ワッチョイ ed7c-n+Ky)
2022/08/17(水) 17:41:05.70ID:J/baCQNr0 最適化でキャッシュの考慮や制御までするんだから
volatileないと実際どうなるかはわからんとちゃうかな
volatileないと実際どうなるかはわからんとちゃうかな
47デフォルトの名無しさん (ワッチョイ 9901-5Ix7)
2022/08/17(水) 17:53:10.26ID:cnWCAZlk0 Rustやるなら当然アセンブラが理解できないとってことだね
メモリ安心安全のためには必要なコストだよね
メモリ安心安全のためには必要なコストだよね
48デフォルトの名無しさん (ワッチョイ 9901-U+eq)
2022/08/17(水) 20:56:42.47ID:9RiCNb2+0 プログラム書くのが本業の人なら、どうやってプログラムが動くのか知らなきゃっていうのは分かるけれど、プログラムば手段であって、コピペでも何でも良いから欲しい結果が得られるなら良いって人もいるから。
それで、Rustがそんな人に合わせる必要はないし、そんなのはPython辺りに任せて、Rustはプロフェッショナルの道具でいいんじゃないの?
それで、Rustがそんな人に合わせる必要はないし、そんなのはPython辺りに任せて、Rustはプロフェッショナルの道具でいいんじゃないの?
49デフォルトの名無しさん (ワッチョイ dd5f-FS65)
2022/08/17(水) 21:08:17.88ID:3noakHYk0 それでいいよ
あっちのスレの空気持ち込まないでくれ
あっちのスレの空気持ち込まないでくれ
50デフォルトの名無しさん (ワッチョイ adda-TI6p)
2022/08/17(水) 22:39:10.52ID:SgLVBpM30 >>47
アセンブリ知ってて損することはないけど、必須な知識ではないよ
スタックやヒープの区別について分かっていればよくて、理解のための手段のひとつとしてアセンブリが提案されているだけ
他の手段で理解できるならそれで良い
Cを使いこなすのにアセンブリの知識が必須ではないのと同じ
アセンブリ知ってて損することはないけど、必須な知識ではないよ
スタックやヒープの区別について分かっていればよくて、理解のための手段のひとつとしてアセンブリが提案されているだけ
他の手段で理解できるならそれで良い
Cを使いこなすのにアセンブリの知識が必須ではないのと同じ
51デフォルトの名無しさん (ワッチョイ 79f0-mhOm)
2022/08/17(水) 23:44:30.76ID:C+o8slGL0 書いたコードがどんな機械語になってるか、確認してない層が一定数存在するって事?
周りに居たら嫌だなぁ
周りに居たら嫌だなぁ
52デフォルトの名無しさん (ワッチョイ a5a4-n+Ky)
2022/08/18(木) 00:15:49.61ID:uPozsGij0 どんなバイナリになるかイメージはするけど確認なんてしないだろ
最適化ビルドするとまるで想像通りじゃなくてびびったりはする
最適化ビルドするとまるで想像通りじゃなくてびびったりはする
53デフォルトの名無しさん (ワッチョイ 827c-Z8r5)
2022/08/18(木) 00:23:55.46ID:K1uqUAUE0 >>52
だよね。
だよね。
54デフォルトの名無しさん (ワッチョイ e9e6-xzlL)
2022/08/18(木) 01:11:39.51ID:yLDzsouG055デフォルトの名無しさん (アウアウウー Saa5-oUG4)
2022/08/18(木) 11:25:09.48ID:p/limWqpa https://www.kinokuniya.co.jp/f/dsg-01-9784797337952
ISBN 4797337958
ISBN 4797337958
56デフォルトの名無しさん (ワッチョイ e9e6-xzlL)
2022/08/18(木) 12:21:45.00ID:yLDzsouG0 >>55
これはまあまあおすすめ
ただ32bitCPU時代に書かれた本なのでそこが微妙なのと
理論的なものがほとんどなく構文解析もJavaCC使ってるし
コード生成も毎回演算結果をスタックにpushするようなことをやってた気がする
allocaも自前で実装するし
ただCのような言語をアセンブリ言語へコンパイルするための勉強としては悪くない
これはまあまあおすすめ
ただ32bitCPU時代に書かれた本なのでそこが微妙なのと
理論的なものがほとんどなく構文解析もJavaCC使ってるし
コード生成も毎回演算結果をスタックにpushするようなことをやってた気がする
allocaも自前で実装するし
ただCのような言語をアセンブリ言語へコンパイルするための勉強としては悪くない
57デフォルトの名無しさん (アウアウウー Saa5-oUG4)
2022/08/18(木) 14:58:14.10ID:qt1eMpHHa 著者はruby厨
racc使う予定だったらしい
racc使う予定だったらしい
58デフォルトの名無しさん (ワッチョイ e936-4eON)
2022/08/18(木) 21:22:03.04ID:1X5HVpNn0 intel ISAのドキュメントがオレオレ用語多くて意味わからん
59デフォルトの名無しさん (ドコグロ MM4f-06yp)
2022/09/05(月) 00:54:15.45ID:cFc+MJ1wM あげ
60デフォルトの名無しさん (ワッチョイ 5f7c-eJ3+)
2022/09/05(月) 01:08:51.55ID:9iTWKe040 nimも早くnull安全にしてくれないかね。
61デフォルトの名無しさん (ワッチョイ 0701-Jj1I)
2022/09/05(月) 01:34:04.91ID:ARttffD10 ドラゴンブックを見て一つ一つ実装していくのが良いですよ。
誤植が猛烈に多いのも練習問題のような気がしてきますよ。
誤植が猛烈に多いのも練習問題のような気がしてきますよ。
62デフォルトの名無しさん (テテンテンテン MM8f-jyuF)
2022/09/05(月) 08:15:38.43ID:HWNfM8e/M63デフォルトの名無しさん (ワッチョイ 5f4b-Iguz)
2022/09/05(月) 22:33:29.07ID:1hFtemgL064デフォルトの名無しさん (ワッチョイ 4704-Ka/N)
2022/09/06(火) 04:20:51.68ID:6xx96XME0 Not nil annotationはversion2.xで使えるようになるらしいよ。
https://github.com/nim-lang/RFCs/issues/437
https://github.com/nim-lang/RFCs/issues/437
65デフォルトの名無しさん (テテンテンテン MMff-jyuF)
2022/09/06(火) 08:29:06.48ID:AHhd6ypaM >>64
not nil がデフォルトになるとあるね。
not nil がデフォルトになるとあるね。
66デフォルトの名無しさん (ワッチョイ 5f4b-Iguz)
2022/09/06(火) 13:26:12.50ID:3wQQbwTr067デフォルトの名無しさん (テテンテンテン MM8f-jyuF)
2022/09/08(木) 12:38:55.89ID:H4D+Re2GM スタックフレームて大抵の実行環境で使用されているのに、スタックフレームに特化した言語て無いよね。
なんでなんだろう?
なんでなんだろう?
68デフォルトの名無しさん (ワッチョイ 4704-Ka/N)
2022/09/08(木) 17:28:20.37ID:cKTVDYCV0 世の中のほとんどのプログラムにはヒープメモリが必要だからでしょ。
実行時じゃないとサイズがわからないことがあるし、スタック上に動的にメモリ領域を確保できるようにするとかなり大きめにスタックを確保しなくてはならくなるだろうし。
実行時じゃないとサイズがわからないことがあるし、スタック上に動的にメモリ領域を確保できるようにするとかなり大きめにスタックを確保しなくてはならくなるだろうし。
69デフォルトの名無しさん (ワッチョイ e7da-ZIhe)
2022/09/08(木) 18:05:59.15ID:U6/gufpm0 スタックフレームに特化した言語ってどういうものを想定してるの?
Forthみたいなスタック指向の言語とは違うよね
Forthみたいなスタック指向の言語とは違うよね
70デフォルトの名無しさん (ワッチョイ 5fe0-InTp)
2022/09/08(木) 18:22:30.25ID:ydRaiFc90 実CPUのスタック操作なんて仕様にいれたら足枷だしね
関数のABIとは別に仮想的なローカルスタックを扱えるかんじ?
関数のABIとは別に仮想的なローカルスタックを扱えるかんじ?
71デフォルトの名無しさん (ブーイモ MM8f-W2iS)
2022/09/08(木) 18:50:48.63ID:11l7kxGRM >>69
COBOL++でしょ
COBOL++でしょ
72デフォルトの名無しさん (テテンテンテン MM8f-jyuF)
2022/09/08(木) 19:36:15.16ID:gDKj2SJwM >>69
スタックフレームならではの特性をコードに明記できる、といったイメージ。
例えばスタックにあるインスタンスしか受け付けない(参照)引数とかあれば、shared ptrとかunique ptrの参照渡しも安全に使える。
Rustがそこそこいい感じなんだけど、なんか中途半端。
スタックフレームならではの特性をコードに明記できる、といったイメージ。
例えばスタックにあるインスタンスしか受け付けない(参照)引数とかあれば、shared ptrとかunique ptrの参照渡しも安全に使える。
Rustがそこそこいい感じなんだけど、なんか中途半端。
73デフォルトの名無しさん (ブーイモ MM8f-W2iS)
2022/09/08(木) 21:06:39.94ID:g68A8C0LM >>72
Rustなら実用上はCopyで十分
Rustなら実用上はCopyで十分
74デフォルトの名無しさん (ワッチョイ 0701-Iguz)
2022/09/08(木) 22:22:15.01ID:D8Erj63H0 >>73
rustの話は向こうのスレでお願い
rustの話は向こうのスレでお願い
75デフォルトの名無しさん (ワッチョイ bf8c-jyuF)
2022/09/09(金) 07:32:44.98ID:v1OYGNdb0 >>73
そういうのが中途半端だと言っている。日本語も読めないのかよ。
そういうのが中途半端だと言っている。日本語も読めないのかよ。
76デフォルトの名無しさん (ワッチョイ a95f-Yvh5)
2022/09/16(金) 11:26:01.87ID:eTFy07in0 800 デフォルトの名無しさん sage 2022/09/15(木) 23:09:10.28 ID:KFRYW2wo
次スレはこれらの言語を入れてください
Zig
https://ziglang.org/ja/
Jakt
https://github.com/SerenityOS/jakt
次スレはこれらの言語を入れてください
Zig
https://ziglang.org/ja/
Jakt
https://github.com/SerenityOS/jakt
77デフォルトの名無しさん (ワッチョイ a563-jxjI)
2022/09/16(金) 11:34:21.79ID:CoCetj5m0 Jaktは知らないな
どんな処理系かな
どんな処理系かな
78デフォルトの名無しさん (ワッチョイ a563-FZWc)
2022/09/16(金) 11:58:16.96ID:CoCetj5m0 パッと見の構文はRustソックリ
borrow checkerはなく、代わりにARCを使って実行時にメモリ管理しようとしてるっぽい
なんでRustやZig使わないんだろうと気になったけど、自作したSerenityOSのためのエコシステムはできるだけすべて自作したい、くらいの動機みたい
参考: https://awesomekling.github.io/Memory-safety-for-SerenityOS/
まあZig未満のドマイナー言語にとどまりそう
borrow checkerはなく、代わりにARCを使って実行時にメモリ管理しようとしてるっぽい
なんでRustやZig使わないんだろうと気になったけど、自作したSerenityOSのためのエコシステムはできるだけすべて自作したい、くらいの動機みたい
参考: https://awesomekling.github.io/Memory-safety-for-SerenityOS/
まあZig未満のドマイナー言語にとどまりそう
79デフォルトの名無しさん (ワッチョイ a563-FZWc)
2022/09/16(金) 12:01:00.82ID:CoCetj5m0 書き忘れた
jaktはC++へのトランスパイラ、ってのも特徴
SerenityOSはC++で作ってたから、C++トランスパイラにすれば移行しやすかったってことだろう
jaktはC++へのトランスパイラ、ってのも特徴
SerenityOSはC++で作ってたから、C++トランスパイラにすれば移行しやすかったってことだろう
80デフォルトの名無しさん (アウアウウー Sa5b-8eP5)
2022/09/18(日) 13:44:05.76ID:KpBP36NGa トンズラパイラに観えた
81デフォルトの名無しさん (ワッチョイ 1e66-JEMU)
2022/09/28(水) 19:48:23.69ID:Tun9Z/EC0 Nim追加
Language x10 x100 x200 x400 Memory Comment
--------------------------------------------------------------
Zig 0.118 1.073 2.113 4.203 3.2MB (std.HashMap, caller-hash by Context(Fnv1a_64))
Nim(clang) 0.211 1.171 2.245 4.372 4.2MB (CustomCountTable,LTO,ARC,caller-hash) New
C(gcc) 0.136 1.146 2.271 4.531 2.0MB (optimized.c,binary IO,jemalloc,O4,LTO)
C(clang/LLVM) 0.137 1.147 2.280 4.544 2.0MB (optimized.c,binary IO,jemalloc,O3,LTO)
Go 0.152 1.233 2.428 4.832 3.9MB (caller hash,better loop)
Go 0.164 1.346 2.654 5.279 3.8MB (caller hash)
Rust(LLVM) 0.154 1.425 2.838 5.674 2.6MB (optimized-customhashmap,O3,LTO,caller-hash)
以下、caller-hashではない
Go 0.085 0.366 0.693 1.319 61.9MB (parallel.go,reserve 65536/2)<--マルチスレッド
Nim(clang) 0.218 1.255 2.401 4.691 4.2MB (CustomCountTable,LTO,ARC) New
Zig 0.162 1.493 2.970 5.935 4.6MB (std.StringHashMap)
Go 0.182 1.563 3.063 6.097 3.8MB (customhash.go,reserve 65536)
Rust(LLVM) 0.214 1.725 3.396 6.715 3.5MB (optimized,fxhash,O3,LTO)
Nim(clang) 0.316 2.241 4.371 8.633 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC,FNV) New
Nim(clang) 0.332 2.387 4.652 9.152 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC) New
zig 0.10.0-dev/gcc 12.2.0/clang 15.0.0/Nim 1.6.8/go go1.19.1/rust 1.64.0
CPU Zen3@boost~4.75GHz
https://github.com/benhoyt/countwords
https://mevius.5ch.net/test/read.cgi/tech/1663409149/529,450,461,478
今回の検証では、「C」は定点観測用として固定。
Nim/CustomCountTableはinc呼び出しの引数string copyを抑制。
Nimが想像より遥かに速くて「Cと同程度」以上の結果が出た。
Language x10 x100 x200 x400 Memory Comment
--------------------------------------------------------------
Zig 0.118 1.073 2.113 4.203 3.2MB (std.HashMap, caller-hash by Context(Fnv1a_64))
Nim(clang) 0.211 1.171 2.245 4.372 4.2MB (CustomCountTable,LTO,ARC,caller-hash) New
C(gcc) 0.136 1.146 2.271 4.531 2.0MB (optimized.c,binary IO,jemalloc,O4,LTO)
C(clang/LLVM) 0.137 1.147 2.280 4.544 2.0MB (optimized.c,binary IO,jemalloc,O3,LTO)
Go 0.152 1.233 2.428 4.832 3.9MB (caller hash,better loop)
Go 0.164 1.346 2.654 5.279 3.8MB (caller hash)
Rust(LLVM) 0.154 1.425 2.838 5.674 2.6MB (optimized-customhashmap,O3,LTO,caller-hash)
以下、caller-hashではない
Go 0.085 0.366 0.693 1.319 61.9MB (parallel.go,reserve 65536/2)<--マルチスレッド
Nim(clang) 0.218 1.255 2.401 4.691 4.2MB (CustomCountTable,LTO,ARC) New
Zig 0.162 1.493 2.970 5.935 4.6MB (std.StringHashMap)
Go 0.182 1.563 3.063 6.097 3.8MB (customhash.go,reserve 65536)
Rust(LLVM) 0.214 1.725 3.396 6.715 3.5MB (optimized,fxhash,O3,LTO)
Nim(clang) 0.316 2.241 4.371 8.633 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC,FNV) New
Nim(clang) 0.332 2.387 4.652 9.152 4.2MB (optimized.nim,std/CountTable,65536,LTO,ARC) New
zig 0.10.0-dev/gcc 12.2.0/clang 15.0.0/Nim 1.6.8/go go1.19.1/rust 1.64.0
CPU Zen3@boost~4.75GHz
https://github.com/benhoyt/countwords
https://mevius.5ch.net/test/read.cgi/tech/1663409149/529,450,461,478
今回の検証では、「C」は定点観測用として固定。
Nim/CustomCountTableはinc呼び出しの引数string copyを抑制。
Nimが想像より遥かに速くて「Cと同程度」以上の結果が出た。
82デフォルトの名無しさん (ワッチョイ 6bf0-rqSc)
2022/10/09(日) 07:33:11.55ID:alq59Sy20 検証 https://blog.fascode.net/2021/10/24/try_julia/
Language 10^5 10^6 Comment
----------------------------------
C++(clang) 0.032 1.029 (O3,LTO,vector,fastmod)
Nim(clang) 0.033 1.031 (O3,LTO,Seq,fastmod)
Nim(gcc) 0.041 1.339 (O4,Seq,fastmod)
C++(gcc) 0.042 1.502 (O4,vector,fastmod)
以下、fastmodではない
Odin(LLVM) 0.073 3.784 (o:speed,[dynamic]int)
Nim(clang) 0.074 3.784 (O3,LTO,Seq)
C++(clang) 0.074 3.785 (O3,vector)
Cython(clang) 0.089 3.797 (O3,libcpp.vector)
Nim(gcc) 0.083 4.410 (O4,Seq)
C++(gcc) 0.085 4.412 (O4,vector)
Zig(LLVM) 0.083 4.410 (OReleaseFast,ArrayList)
Julia(LLVM) 0.254 4.583 (JIT,O3,Int[])
Python(Numba) 0.602 5.236 (JIT,list[int])
PyPy 0.162 7.046 (JIT,list[int])
Cython(clang) 0.696 39.603 (O3,list[int])
Python 1.187 75.740 (list[int])
https://odin-lang.org/
https://github.com/lemire/fastmod
zig 0.10.0-dev/gcc 12.2.0/clang 15.0.2/Nim 1.6.8/Odin dev-2022-10-nightly/
julia 1.8.2/Python 3.10.7/PyPy 7.3.9/Cython 0.29.32/numba 0.56.2
CPU Zen3@boost~4.75GHz
Language 10^5 10^6 Comment
----------------------------------
C++(clang) 0.032 1.029 (O3,LTO,vector,fastmod)
Nim(clang) 0.033 1.031 (O3,LTO,Seq,fastmod)
Nim(gcc) 0.041 1.339 (O4,Seq,fastmod)
C++(gcc) 0.042 1.502 (O4,vector,fastmod)
以下、fastmodではない
Odin(LLVM) 0.073 3.784 (o:speed,[dynamic]int)
Nim(clang) 0.074 3.784 (O3,LTO,Seq)
C++(clang) 0.074 3.785 (O3,vector)
Cython(clang) 0.089 3.797 (O3,libcpp.vector)
Nim(gcc) 0.083 4.410 (O4,Seq)
C++(gcc) 0.085 4.412 (O4,vector)
Zig(LLVM) 0.083 4.410 (OReleaseFast,ArrayList)
Julia(LLVM) 0.254 4.583 (JIT,O3,Int[])
Python(Numba) 0.602 5.236 (JIT,list[int])
PyPy 0.162 7.046 (JIT,list[int])
Cython(clang) 0.696 39.603 (O3,list[int])
Python 1.187 75.740 (list[int])
https://odin-lang.org/
https://github.com/lemire/fastmod
zig 0.10.0-dev/gcc 12.2.0/clang 15.0.2/Nim 1.6.8/Odin dev-2022-10-nightly/
julia 1.8.2/Python 3.10.7/PyPy 7.3.9/Cython 0.29.32/numba 0.56.2
CPU Zen3@boost~4.75GHz
83デフォルトの名無しさん (ワッチョイ 6bf0-rqSc)
2022/10/09(日) 07:34:33.26ID:alq59Sy20 感想:
Juliaは確かに速いが、他との比較は最適化オプションしだい。
動的配列/リストのベンチになるかと思ったが、やってみたらgccが振るわない。
原因はmodulo計算の最適化の違い? https://godbolt.org/z/T7bKK14fr
ZigはLLVMのmodulo最適化をトリガー出来なかったか。
OdinはLLVM AOTコンパイラとしての性能を引き出せている(今回は)
まだ言語機能の特徴をつかんでいないが、映画、ゲームグラフィックス分野で使う様な
ライブラリが最初から入っているのが売り?
Nimは殴り書きとか、書き捨てとか、簡潔に書けて、gcc/clangの速い方を選べて、
fastmodの様なC++「header only」のライブラリを手軽に利用できるのが良い。
Cythonも慣れたらNimと同じように出来るのだろうか。
Juliaは確かに速いが、他との比較は最適化オプションしだい。
動的配列/リストのベンチになるかと思ったが、やってみたらgccが振るわない。
原因はmodulo計算の最適化の違い? https://godbolt.org/z/T7bKK14fr
ZigはLLVMのmodulo最適化をトリガー出来なかったか。
OdinはLLVM AOTコンパイラとしての性能を引き出せている(今回は)
まだ言語機能の特徴をつかんでいないが、映画、ゲームグラフィックス分野で使う様な
ライブラリが最初から入っているのが売り?
Nimは殴り書きとか、書き捨てとか、簡潔に書けて、gcc/clangの速い方を選べて、
fastmodの様なC++「header only」のライブラリを手軽に利用できるのが良い。
Cythonも慣れたらNimと同じように出来るのだろうか。
84デフォルトの名無しさん (ワッチョイ 074b-kHT+)
2022/10/09(日) 11:10:02.48ID:hHOnLIUR0 並べるときは速度の早い順で書いて下さい
85デフォルトの名無しさん (ワッチョイ d9f0-ofdD)
2022/10/31(月) 12:29:04.61ID:RFzpfvk70 「Python 3.11」がリリース、4年で5倍の高速化を目指す「Faster Cpython」計画が始動
https://forest.watch.impress.co.jp/docs/news/1451751.html
200万ドル程度と見積もられる資金はMicrosoftが協力
参考
Faster-Cpython Microsoft
Pyjion Microsoft
Cinder Instagram/Facebook/Meta
GraalPy Oracle
Pyston Dropbox->pyston-lite
Ruby3 3倍速->rya
https://forest.watch.impress.co.jp/docs/news/1451751.html
200万ドル程度と見積もられる資金はMicrosoftが協力
参考
Faster-Cpython Microsoft
Pyjion Microsoft
Cinder Instagram/Facebook/Meta
GraalPy Oracle
Pyston Dropbox->pyston-lite
Ruby3 3倍速->rya
86デフォルトの名無しさん (ワッチョイ 8901-HLP5)
2022/10/31(月) 13:03:53.85ID:4lYEr6WH0 Rust「…」
87デフォルトの名無しさん (ワッチョイ e5f0-FFna)
2022/11/13(日) 10:14:16.92ID:lA0JSaU/088デフォルトの名無しさん (ワッチョイ 234b-H0Ic)
2022/11/13(日) 17:19:42.67ID:vYboHCwy089デフォルトの名無しさん (アウアウウー Saa9-FFna)
2022/11/14(月) 11:28:56.72ID:EWF0SvAna >Nimが想像より遥かに速くて「Cと同程度」以上の結果
Nimが速いのはトランスパイラだからな
Nimが速いのはトランスパイラだからな
90デフォルトの名無しさん (ワッチョイ c34b-TaOI)
2022/11/19(土) 20:53:35.05ID:7QNjN12J0 Nimの実行速度はGCCと同等と思って良い
91デフォルトの名無しさん (アウアウウー Sa5b-tkFl)
2022/11/28(月) 15:07:09.33ID:6X8/W5dUa 他人が比較したやつを載せるんじゃなくてお前が比較したやつ載せろよ
92デフォルトの名無しさん (JP 0Hcf-RPwI)
2022/11/28(月) 17:49:52.29ID:SIJnWXGqH なら >>91 が 比較しろ
93デフォルトの名無しさん (アウアウウー Sa5b-tkFl)
2022/11/28(月) 18:00:59.49ID:6X8/W5dUa 何でやねん
94デフォルトの名無しさん (ワッチョイ ffcf-ykd8)
2022/11/28(月) 18:40:44.25ID:LDNjf6uN0 今更だけど、スレタイが前スレとは違う言語だらけで
マイナーなのをウォッチする別スレかと思ってたわ
マイナーなのをウォッチする別スレかと思ってたわ
95デフォルトの名無しさん (ワッチョイ b7a4-O5Hl)
2022/11/29(火) 00:59:42.07ID:QobrmxBH0 TypeScript、Go、Swift、Kotlinって次世代でも何でもなく普及しきってる現役言語で、それぞれ言語別のスレが伸びてるし、
ここはこのスレタイで良いと思うわ
ここはこのスレタイで良いと思うわ
96デフォルトの名無しさん (ワッチョイ b74e-WfGi)
2022/11/29(火) 12:05:03.27ID:zwTDTYOm0 Gleamだけ知らんのだがどんな言語?
97デフォルトの名無しさん (ワッチョイ 97f0-hCdI)
2022/11/29(火) 15:23:09.06ID:Vcr0dhdC098デフォルトの名無しさん (ササクッテロ Sp1b-8//E)
2022/12/12(月) 11:40:34.09ID:X5LmWbdvp 新言語Verse
https://simon.peytonjones.org/assets/pdfs/haskell-exchange-22.pdf
関数型でUnreal Engineに組み込むらしい
https://simon.peytonjones.org/assets/pdfs/haskell-exchange-22.pdf
関数型でUnreal Engineに組み込むらしい
99デフォルトの名無しさん (ワッチョイ dbf0-TXpN)
2022/12/18(日) 01:37:12.14ID:xkWav1uF0 Nested Choice面白いな
レスを投稿する
ニュース
- 【子ども・子育て支援金】来年4月から徴収、月収50万円なら月600円程度…健保連試算 [蚤の市★]
- 【札幌】「アニメのキャラのまねをするためだった」上半身はダウンジャケット・下半身はスッポンポン…43歳無職の男を逮捕 [nita★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★4 [ぐれ★]
- 【芸能】篠田麻里子「水戸黄門」のオフショット公開!「くの一姿が可愛い」「うっひゃー」「スケさんカクさんが羨ましい!」 [湛然★]
- 日本の旅客機、定時に飛べず 羽田空港発着の半数が15分超遅延 [蚤の市★]
- 【🐼】パンダ、日本で会えなくなる? 中国との関係悪化で不安の声 ★2 [ぐれ★]
