スレタイ以外の言語もok
前スレ
次世代言語27 TypeScript Swift Go Kotlin Rust Nim
https://mevius.5ch.net/test/read.cgi/tech/1659655598/
探検
次世代言語28 TypeScript Swift Go Kotlin Rust Nim
■ このスレッドは過去ログ倉庫に格納されています
2022/08/29(月) 11:22:16.48ID:5dAad4gs
370デフォルトの名無しさん
2022/09/06(火) 22:53:17.60ID:2HxKYUoj 可変参照を渡すか可変じゃない参照を渡すかの区別がない言語もある
区別がある言語でもさらに2種類に分かれて
呼び出される関数でその参照が可変かどうか区別するだけの言語と
呼び出し側でも渡す参照が可変かどうか区別できる言語に分かれる
それら3種類のうち最後のタイプの言語が最も安全にプログラミングできる
区別がある言語でもさらに2種類に分かれて
呼び出される関数でその参照が可変かどうか区別するだけの言語と
呼び出し側でも渡す参照が可変かどうか区別できる言語に分かれる
それら3種類のうち最後のタイプの言語が最も安全にプログラミングできる
371デフォルトの名無しさん
2022/09/06(火) 22:58:14.58ID:ZgGRtw1t 野放しは危険やで NGワードでtag付けする?
>>NNN複オジ
>>NNN複オジ
372デフォルトの名無しさん
2022/09/06(火) 23:04:31.77ID:V53xvAGb &Tを渡すか&mut Tを渡すかを渡す側で区別できない言語だと書き換えられちゃうのか分からない点で困るね
その場合でも呼び出す関数の引数宣言を見に行けばいいけど、そこにも可変かどうか宣言できない言語もあって絶望的なことも
その場合でも呼び出す関数の引数宣言を見に行けばいいけど、そこにも可変かどうか宣言できない言語もあって絶望的なことも
373デフォルトの名無しさん
2022/09/06(火) 23:10:15.88ID:ZgGRtw1t374デフォルトの名無しさん
2022/09/06(火) 23:12:00.01ID:p3/oNdmv その点もRustが一番考えられてる仕様のような
色んな言語の中で一番ちゃんときちんと区別してくれていてプログラミングする上で安心感もあるなあ
色んな言語の中で一番ちゃんときちんと区別してくれていてプログラミングする上で安心感もあるなあ
375デフォルトの名無しさん
2022/09/06(火) 23:18:07.56ID:ZgGRtw1t376デフォルトの名無しさん
2022/09/06(火) 23:23:59.02ID:MV3crhGe ponyなら書き込みどころか読み込みまで制限できるぜ
参照の持ち方だけで6つもあるのやばいだろと思ったが減らせる見込みもないぜ
参照の持ち方だけで6つもあるのやばいだろと思ったが減らせる見込みもないぜ
377デフォルトの名無しさん
2022/09/06(火) 23:27:00.72ID:ZgGRtw1t >>376いいねこのスレにふさわしい
378デフォルトの名無しさん
2022/09/06(火) 23:29:15.38ID:ItiT2cL1 Nim好きなんだけど何で売れんかね
pythonからの乗り換えに最適なんだが
pythonからの乗り換えに最適なんだが
379デフォルトの名無しさん
2022/09/06(火) 23:30:19.86ID:ZgGRtw1t よく考えたらこれも組織票野党が投票率下がった方が有利なように、スレ乗っ取りの下地作り?
>>369複?オジ?
>>369複?オジ?
380デフォルトの名無しさん
2022/09/06(火) 23:30:47.03ID:3jr2SH77 ponyとか真面目な話がしたいならワッチョイスレ行ったほうがいいよ
複おじをいじって遊びたいならここでいいけど
複おじをいじって遊びたいならここでいいけど
381デフォルトの名無しさん
2022/09/06(火) 23:34:47.24ID:V53xvAGb 昔は変数もmutableとimmutableの区別をしないのが多数派だった時代もあったそうだから
新しく作られた言語のほうが色々と新たな進化ができて有利なのかもね
新しく作られた言語のほうが色々と新たな進化ができて有利なのかもね
382デフォルトの名無しさん
2022/09/06(火) 23:36:47.66ID:ZgGRtw1t >>378いいね ちょっと動かせるデモサイトで乗り換え例のようなものはあるの?
383デフォルトの名無しさん
2022/09/06(火) 23:39:56.37ID:W/Xh3l1r384デフォルトの名無しさん
2022/09/06(火) 23:42:44.75ID:ZgGRtw1t >>380いや このスレが乗っ取られないことが重要 tag付けhelp me pls
385デフォルトの名無しさん
2022/09/06(火) 23:50:57.29ID:ZgGRtw1t386デフォルトの名無しさん
2022/09/06(火) 23:55:28.57ID:k32oXi62 Ponyで参照はsingle writer xor multiple readersが課されているためwriterがいる時は読み込みができない
つまりRustと同じ
つまりRustと同じ
387デフォルトの名無しさん
2022/09/07(水) 00:17:09.26ID:ordz3g2+388デフォルトの名無しさん
2022/09/07(水) 00:39:18.74ID:8j1OJp6D ほとんどの言語はオブジェクトとかヒープで確保したものとか参照のみサポートが多いよね
参照を作らせなかったらどうやってアクセスするのだろう
移動しかないか
参照を作らせなかったらどうやってアクセスするのだろう
移動しかないか
389デフォルトの名無しさん
2022/09/07(水) 01:29:02.34ID:zcaR9K+x390デフォルトの名無しさん
2022/09/07(水) 02:20:15.23ID:NRm/XQ9U Rustなら&selfメソッドを作らずにselfメソッドだけを用意すれば
その型は参照に対して全く働かずに移動に対してのみ使える型にすることはできるな
もちろんそのままだと移動で消費してしまい消えるのでそれを避けたい時Selfで再び自分を返すことになる
不便だが参照を全く使わずともその範囲で色々やれるようだ
その型は参照に対して全く働かずに移動に対してのみ使える型にすることはできるな
もちろんそのままだと移動で消費してしまい消えるのでそれを避けたい時Selfで再び自分を返すことになる
不便だが参照を全く使わずともその範囲で色々やれるようだ
391デフォルトの名無しさん
2022/09/07(水) 02:31:29.39ID:nvFpxuri 移動も聞いてないぞ
392デフォルトの名無しさん
2022/09/07(水) 03:01:09.81ID:NRm/XQ9U393デフォルトの名無しさん
2022/09/07(水) 03:02:32.55ID:ossJLtb4394デフォルトの名無しさん
2022/09/07(水) 03:08:26.53ID:FVgAnmdd ははぁーん
聞かれたことに答えない
息をはくように話をそらす
それた話を修正しない
そもそも何を聞かれたかわかっていない
これって?
もしかして国語で苦労した?
tag付けて欲しい?
聞かれたことに答えない
息をはくように話をそらす
それた話を修正しない
そもそも何を聞かれたかわかっていない
これって?
もしかして国語で苦労した?
tag付けて欲しい?
395デフォルトの名無しさん
2022/09/07(水) 03:19:36.97ID:2H+EvabS Ponyでもconsumeにより参照を使わず移動になるよ
396デフォルトの名無しさん
2022/09/07(水) 03:25:07.36ID:Lg2r352+ それた話を修正しない
Goスレで論破されて敗走してきたんだ
でここに居つくために育成ゲームだとホザキ始めた
Goスレで論破されて敗走してきたんだ
でここに居つくために育成ゲームだとホザキ始めた
397デフォルトの名無しさん
2022/09/07(水) 04:13:08.28ID:2H+EvabS なんのことやら
参照を全く使わないのは無理だけど
単独参照となり読み書き自由に専有できるのならあるよー
Ponyならiso
Rustなら&mut
参照を全く使わないのは無理だけど
単独参照となり読み書き自由に専有できるのならあるよー
Ponyならiso
Rustなら&mut
398デフォルトの名無しさん
2022/09/07(水) 04:15:54.48ID:GNmKbNsR そらした話は修正しない
そもそも何を聞かれたかわかっていないフリ
Flutterスレ盛り上げてこいよ
そもそも何を聞かれたかわかっていないフリ
Flutterスレ盛り上げてこいよ
399デフォルトの名無しさん
2022/09/07(水) 05:49:18.66ID:a/SEXojX 誰にも参照されてないのにGCされない現象を実現したいわけではなさそう
ということは「参照を作らせない」とはいえ参照は作れるんだよね
ということは「参照を作らせない」とはいえ参照は作れるんだよね
400デフォルトの名無しさん
2022/09/07(水) 05:54:23.55ID:OvNIIrS4 そらした話は修正しない
すり替えた土俵ではRustと〜は同等
そもそも何を聞かれたかなんて知らない。無意味 気持ち悪い
参照とかGCの事は実はよく知らない。育成してくれ
Flutterスレ盛り上げてこいよ
すり替えた土俵ではRustと〜は同等
そもそも何を聞かれたかなんて知らない。無意味 気持ち悪い
参照とかGCの事は実はよく知らない。育成してくれ
Flutterスレ盛り上げてこいよ
401デフォルトの名無しさん
2022/09/07(水) 06:26:49.06ID:t2gi/CWf402デフォルトの名無しさん
2022/09/07(水) 06:52:15.00ID:ordz3g2+403デフォルトの名無しさん
2022/09/07(水) 06:53:00.83ID:nA6d9voX どうしても速さが必要なところだけRustにするとしても
それ以外はPythonで十分な気がする
それ以外はPythonで十分な気がする
404デフォルトの名無しさん
2022/09/07(水) 07:00:12.32ID:7SEt3XdA405デフォルトの名無しさん
2022/09/07(水) 07:13:06.99ID:+WGAm7/P406デフォルトの名無しさん
2022/09/07(水) 07:16:05.47ID:hRBB26Yn >>402
弱くなる方向は何も問題無いでしょう
しかもRustは参照のライフタイムもコンパイラが管理把握できているため大丈夫でしょう
Ponyはその分をプログラマーが細かく指定して更にrecoverなど変化させていくことで補うわけです
弱くなる方向は何も問題無いでしょう
しかもRustは参照のライフタイムもコンパイラが管理把握できているため大丈夫でしょう
Ponyはその分をプログラマーが細かく指定して更にrecoverなど変化させていくことで補うわけです
407デフォルトの名無しさん
2022/09/07(水) 07:18:00.16ID:ordz3g2+408デフォルトの名無しさん
2022/09/07(水) 07:21:36.81ID:6xyGFf7w409デフォルトの名無しさん
2022/09/07(水) 07:23:19.72ID:8x7iT+wj ponyは面倒すぎて萎える
こんな参照の管理くらいコンパイラが自動的にやるべきで人間に押し付けるのは悪手
こんな参照の管理くらいコンパイラが自動的にやるべきで人間に押し付けるのは悪手
410デフォルトの名無しさん
2022/09/07(水) 07:30:00.20ID:ANYrsupz411デフォルトの名無しさん
2022/09/07(水) 07:42:15.35ID:ordz3g2+412デフォルトの名無しさん
2022/09/07(水) 07:45:25.38ID:+d3zlyKh 参照とかスタックとかヒープ、移動、元の発言なんて実はよく知らない。
所有権の複製こそ最善手
永遠に分からなくてもコンパイラが保証してくれるRustすごい、俺すごい。成長した
だがいつでも育成を要求する扉は開いている
Flutterスレ盛り上げてこいよ
所有権の複製こそ最善手
永遠に分からなくてもコンパイラが保証してくれるRustすごい、俺すごい。成長した
だがいつでも育成を要求する扉は開いている
Flutterスレ盛り上げてこいよ
413デフォルトの名無しさん
2022/09/07(水) 07:57:54.75ID:eUEKoWnI >>412
すみません、所有権の複製ってなんですか...?
clone()とかでオブジェクトをコピーすると、複製後のオブジェクトに対して、別の新しい所有権がただ一つ代入先の変数に束縛されるという認識だったのですが...
すみません、所有権の複製ってなんですか...?
clone()とかでオブジェクトをコピーすると、複製後のオブジェクトに対して、別の新しい所有権がただ一つ代入先の変数に束縛されるという認識だったのですが...
414デフォルトの名無しさん
2022/09/07(水) 08:06:19.67ID:gZR3Yo8R415デフォルトの名無しさん
2022/09/07(水) 08:09:45.92ID:41cUJGIp >>387
>読み書きしないけど値の存在だけは確認したいときってどうすんの?
Null安全な言語では値が存在しないことを表すNullなどを普通の型には代入できないことでNull安全性を実現している
そのためNullを代入できるNullableな型が用意されておりNullかどうかは値自体の読み書きとは別に可能な言語が多い
RustならばOption<T>がNullableな型でNullはNoneと表記する
Option<T>のメソッドis_some()かis_none()によって値自体の読み書きをせずに値の存在だけを確認できる
>読み書きしないけど値の存在だけは確認したいときってどうすんの?
Null安全な言語では値が存在しないことを表すNullなどを普通の型には代入できないことでNull安全性を実現している
そのためNullを代入できるNullableな型が用意されておりNullかどうかは値自体の読み書きとは別に可能な言語が多い
RustならばOption<T>がNullableな型でNullはNoneと表記する
Option<T>のメソッドis_some()かis_none()によって値自体の読み書きをせずに値の存在だけを確認できる
416デフォルトの名無しさん
2022/09/07(水) 08:19:14.45ID:C9aPpQqG417デフォルトの名無しさん
2022/09/07(水) 08:23:50.75ID:E0QYSaMt Rustは低レベルの対応も必要だから、mutable必要なんだろうけれど、理想はImmutableだけじゃないの?
418デフォルトの名無しさん
2022/09/07(水) 08:26:20.07ID:AY0Q59m9 >>417
イミュータブルを使わないと再帰が増えてハードル上がるから
イミュータブルを使わないと再帰が増えてハードル上がるから
419デフォルトの名無しさん
2022/09/07(水) 08:34:10.43ID:ASjGwh81 同じforループでも
for (i = 0; i < 10; i++)
これは見るからにmutableだけど
for i in 0..10
これは毎回別のimmutableがやってくる感じ
for (i = 0; i < 10; i++)
これは見るからにmutableだけど
for i in 0..10
これは毎回別のimmutableがやってくる感じ
420デフォルトの名無しさん
2022/09/07(水) 08:39:03.96ID:SuR+St8r いいかげん 俺ウザいだろ
tagが自然発生したぞ
どうだ怖いか
Flutterスレ盛り上げてこいよ
tagが自然発生したぞ
どうだ怖いか
Flutterスレ盛り上げてこいよ
421デフォルトの名無しさん
2022/09/07(水) 09:44:51.32ID:XqqYtKGz イミュータブルはzero overhead abstractionとは対極だからな
特にRustの場合は関数型みたいにオブジェクトの一部を書き換える度に新しいオブジェクト作るとかやってたら細切れに解放が必要になってコンパイルも実行もクソ効率悪そう
特にRustの場合は関数型みたいにオブジェクトの一部を書き換える度に新しいオブジェクト作るとかやってたら細切れに解放が必要になってコンパイルも実行もクソ効率悪そう
422デフォルトの名無しさん
2022/09/07(水) 10:24:02.90ID:aeiTHGZS >>241
必要性もないコピーを部分可変にするアンパックは例が悪すぎる。let t = (0, 1, 2);として
let (a, mut b, c) = foo; こんな風に書くより
println!("{} {} {}", t.0, t.1+100, t.2);アンパックせず、このように書くか
let (a, b, c) = t;
println!("{} {} {}", a, b+100, c);アンパックしても即値計算ならわざわざmutは必要ないですよね
あるいはもっと複雑な算術する必要があるなら、単独でlet mut で、let mut b= t.1+100;
どっちにしてもlet (a, mut b, c) = foo; なんてほとんど使わないのではないか、なにより見た目が気持ち悪い。
これが最高だという人もいるけど、個人的にはなんかしっくりこないな
ほかの言語の多値戻り値のように()カッコさえなければ良いのに・・・・
必要性もないコピーを部分可変にするアンパックは例が悪すぎる。let t = (0, 1, 2);として
let (a, mut b, c) = foo; こんな風に書くより
println!("{} {} {}", t.0, t.1+100, t.2);アンパックせず、このように書くか
let (a, b, c) = t;
println!("{} {} {}", a, b+100, c);アンパックしても即値計算ならわざわざmutは必要ないですよね
あるいはもっと複雑な算術する必要があるなら、単独でlet mut で、let mut b= t.1+100;
どっちにしてもlet (a, mut b, c) = foo; なんてほとんど使わないのではないか、なにより見た目が気持ち悪い。
これが最高だという人もいるけど、個人的にはなんかしっくりこないな
ほかの言語の多値戻り値のように()カッコさえなければ良いのに・・・・
423デフォルトの名無しさん
2022/09/07(水) 11:56:35.70ID:a104GDG0424デフォルトの名無しさん
2022/09/07(水) 13:08:54.29ID:ossJLtb4 >>401
俺仕事でNLPやってるけどトークナイザの実装がクソ遅いんだよ
英語だとRustで実装されたfastバージョンがあるんだけど
日本語対応のやつはゼロ
作らしてくれーと言ってるけど許可降りない
俺仕事でNLPやってるけどトークナイザの実装がクソ遅いんだよ
英語だとRustで実装されたfastバージョンがあるんだけど
日本語対応のやつはゼロ
作らしてくれーと言ってるけど許可降りない
425デフォルトの名無しさん
2022/09/07(水) 13:44:11.23ID:AY0Q59m9426デフォルトの名無しさん
2022/09/07(水) 14:05:06.57ID:ossJLtb4427デフォルトの名無しさん
2022/09/07(水) 14:09:08.42ID:AY0Q59m9428デフォルトの名無しさん
2022/09/07(水) 18:37:19.13ID:eUEKoWnI >>421
オブジェクト作るって、ヒープのアロケーションを想定してる?
オブジェクト作るって、ヒープのアロケーションを想定してる?
429デフォルトの名無しさん
2022/09/07(水) 19:13:42.89ID:ge/fWvoV いるよな、知りもしない癖に口出してくるやつ。
430デフォルトの名無しさん
2022/09/07(水) 19:20:29.73ID:OCYL1nNS >>428
所有権の複製こそ最善手
所有権の複製こそ最善手
431デフォルトの名無しさん
2022/09/07(水) 20:04:27.92ID:t2gi/CWf >>429
論破されて自演はみっともないぞw
論破されて自演はみっともないぞw
432デフォルトの名無しさん
2022/09/07(水) 20:06:49.94ID:/qhkAnst 今夜のAAPLの発表まで暇つぶし
早いもので2年か、改めて見る
Scalaが日本で衰退し始めている理由を説明します
https://www.yout
ube.com/watch?v=kFzLia7YZQU
早いもので2年か、改めて見る
Scalaが日本で衰退し始めている理由を説明します
https://www.yout
ube.com/watch?v=kFzLia7YZQU
433デフォルトの名無しさん
2022/09/07(水) 20:17:13.33ID:dqzrycJl434デフォルトの名無しさん
2022/09/07(水) 20:18:37.12ID:dqzrycJl C++は3年ごとに改定されるので、歴史ある言語でありながら、次世代言語でもあるんだよね。
素晴らしいことだと思います。
素晴らしいことだと思います。
435デフォルトの名無しさん
2022/09/07(水) 20:21:49.10ID:F4QYab6d 3年ごとに改定って道路工事かよ
おいしい
おいしい
436デフォルトの名無しさん
2022/09/07(水) 20:31:13.48ID:g9jqSBBW SDGs的に完成は最悪手
発注側も分かってる
Scalaは完成しちゃったの?
発注側も分かってる
Scalaは完成しちゃったの?
437デフォルトの名無しさん
2022/09/07(水) 20:40:06.02ID:HmyZhEv1 Haskellも完成
Goはver2いつ出すんだレベル
Goはver2いつ出すんだレベル
438デフォルトの名無しさん
2022/09/07(水) 20:42:19.72ID:HmyZhEv1 いい意味で
言葉足らずでした
言葉足らずでした
439デフォルトの名無しさん
2022/09/07(水) 20:47:36.68ID:g+neltEd >>422
プログラミングをしたことがないからそんな発想になる
関数からタプルなどが返ってきて別々に使うなど日常茶飯事
例
let (tx, mut rx) = mpsc::channel(10);
個別にmut指定する仕様は尊い
プログラミングをしたことがないからそんな発想になる
関数からタプルなどが返ってきて別々に使うなど日常茶飯事
例
let (tx, mut rx) = mpsc::channel(10);
個別にmut指定する仕様は尊い
440デフォルトの名無しさん
2022/09/07(水) 20:52:51.19ID:nXW6tumg >>439
Goスレでpromise/channelの育成を要求して成長した
Goスレでpromise/channelの育成を要求して成長した
441デフォルトの名無しさん
2022/09/07(水) 20:58:01.38ID:g+neltEd442デフォルトの名無しさん
2022/09/07(水) 21:00:46.44ID:mFj19fp9443デフォルトの名無しさん
2022/09/07(水) 21:14:05.84ID:g+neltEd444デフォルトの名無しさん
2022/09/07(水) 21:28:44.94ID:hfhFNamj 機能追加はcrate/macroで起こってる だがcoreは封鎖した
Go動向を追う最善手はGoスレ見に行くことである
知らんけど
Go動向を追う最善手はGoスレ見に行くことである
知らんけど
445デフォルトの名無しさん
2022/09/07(水) 21:36:37.03ID:LgczABzT そろそろ風呂に入ってくる
だが隙あらばスタックとヒープ mpscとスレッド安全の育成を要求する扉はまだ開いている 乗り遅れるな
だが隙あらばスタックとヒープ mpscとスレッド安全の育成を要求する扉はまだ開いている 乗り遅れるな
446デフォルトの名無しさん
2022/09/07(水) 21:44:22.20ID:g+neltEd >>444
外部crateの話は一切していなくて
Rust言語が日々進化しているとは
Rustコンパイラによる機能追加と改善
および標準ライブラリの機能追加を指す
もちろんcoreライブラリ部分にも追加やstable化などがある
外部crateの話は一切していなくて
Rust言語が日々進化しているとは
Rustコンパイラによる機能追加と改善
および標準ライブラリの機能追加を指す
もちろんcoreライブラリ部分にも追加やstable化などがある
447デフォルトの名無しさん
2022/09/07(水) 21:53:02.05ID:En8I5Kb5448デフォルトの名無しさん
2022/09/07(水) 22:26:11.82ID:bnLUEQYt449デフォルトの名無しさん
2022/09/07(水) 22:36:50.03ID:g+neltEd ヒープ利用は確保と解放操作が必要だから必ず遅い
スタック利用はスタックポインタの増減を関数の最初と最後でまとめてするだけで速い
さらに最適化でレジスタ利用になりうるから超速い
スタック利用はスタックポインタの増減を関数の最初と最後でまとめてするだけで速い
さらに最適化でレジスタ利用になりうるから超速い
450デフォルトの名無しさん
2022/09/07(水) 22:37:48.00ID:SiZHOEm5451デフォルトの名無しさん
2022/09/07(水) 22:41:11.76ID:fqrBDyte >>449
隙をみて恥をかき捨てた事でたった今 1mm成長した。俺すごい
隙をみて恥をかき捨てた事でたった今 1mm成長した。俺すごい
452デフォルトの名無しさん
2022/09/07(水) 22:54:26.21ID:5lmH+vKI >>449
重箱の隅だけど malloc/freeは最適化で消えることがあるから "必ず遅い" は言い過ぎ
ヒープ利用でもレジスタが使われることもある
https://godbolt.org/z/crxTse4vG
重箱の隅だけど malloc/freeは最適化で消えることがあるから "必ず遅い" は言い過ぎ
ヒープ利用でもレジスタが使われることもある
https://godbolt.org/z/crxTse4vG
453デフォルトの名無しさん
2022/09/07(水) 23:04:02.99ID:JYc4oRyX454デフォルトの名無しさん
2022/09/07(水) 23:18:52.05ID:MCKgMvZG455デフォルトの名無しさん
2022/09/07(水) 23:25:44.51ID:4U49yzDh456デフォルトの名無しさん
2022/09/07(水) 23:27:02.51ID:g+neltEd457デフォルトの名無しさん
2022/09/07(水) 23:39:50.25ID:LgsdK3r3 >>456その謝り方リアルでやっちゃだめだぞ
458デフォルトの名無しさん
2022/09/07(水) 23:41:58.89ID:En8I5Kb5 >>452
その例は現実的ではないよね
実際の使われ方だと新規オブジェクト生成は通常は別関数だから
それをinline指定でもしない限りは別関数にあるmallocは消えないです
ヒープ確保は常に行われてしまいます
一方でRustでは新規オブジェクト生成が同様に別関数でinlineでなくても
オブジェクトを「値返し」するので大丈夫です
オブジェクト生成する別関数でも呼び出す側でもヒープの利用はありません
その例は現実的ではないよね
実際の使われ方だと新規オブジェクト生成は通常は別関数だから
それをinline指定でもしない限りは別関数にあるmallocは消えないです
ヒープ確保は常に行われてしまいます
一方でRustでは新規オブジェクト生成が同様に別関数でinlineでなくても
オブジェクトを「値返し」するので大丈夫です
オブジェクト生成する別関数でも呼び出す側でもヒープの利用はありません
459デフォルトの名無しさん
2022/09/07(水) 23:58:53.34ID:a/h0B3rR RustよりもCが遅いケースが生じる一因だな
460デフォルトの名無しさん
2022/09/08(木) 00:52:54.26ID:8UoQH6yi ヒープを使ってしまったら、>>452のような重箱の隅をつつくレアケースを除くと、最適化で消えないので不利
Rustのようにオブジェクトの生成すらスタック上で行なう方が有利
Rustはオブジェクトを値返しする点がそれを可能としている
オブジェクトをレジスタ群に格納して返せるときは最も速くなり、
その大きさを超えても、呼び出し元のスタック領域に確保された場所へ直接書き込んで渡すためこれも速い
Rustのようにオブジェクトの生成すらスタック上で行なう方が有利
Rustはオブジェクトを値返しする点がそれを可能としている
オブジェクトをレジスタ群に格納して返せるときは最も速くなり、
その大きさを超えても、呼び出し元のスタック領域に確保された場所へ直接書き込んで渡すためこれも速い
461デフォルトの名無しさん
2022/09/08(木) 01:00:14.34ID:U6/gufpm462デフォルトの名無しさん
2022/09/08(木) 01:01:41.29ID:U6/gufpm 必ず○○とか必要以上に強い言葉を使うから重箱の隅をつつきたくなってしまうわけで、
ほとんどの場合○○とか適切な言葉遣いをしてくれれば良いのに
ほとんどの場合○○とか適切な言葉遣いをしてくれれば良いのに
463デフォルトの名無しさん
2022/09/08(木) 01:21:29.31ID:bfKvyn62 >>461
inline化だけの話ならそうだね
でも今回はmalloc部分が消えるかどうかで単純なパターンだとinline化されて消えるときもある話じゃないかな
オブジェクト生成関数のmallocが常に消えたら大問題なのでそれは特殊なケースでしか起きないと思うよ
inline化だけの話ならそうだね
でも今回はmalloc部分が消えるかどうかで単純なパターンだとinline化されて消えるときもある話じゃないかな
オブジェクト生成関数のmallocが常に消えたら大問題なのでそれは特殊なケースでしか起きないと思うよ
464デフォルトの名無しさん
2022/09/08(木) 01:24:09.17ID:4nByTxu8 Vecとかヒープ使ってないと思ってそう
465デフォルトの名無しさん
2022/09/08(木) 01:25:35.66ID:N4CSjuGd 値返しおじさん
466デフォルトの名無しさん
2022/09/08(木) 01:50:13.51ID:bfKvyn62 >>464
RustではVec(オブジェクト)生成new()でヒープは使わないよ
サイズ1以上になって遅延して初めてヒープ確保
SmallVecを使えば指定サイズ以上になって遅延して初めてヒープ確保
それまではスタック上のみを使う
ArrayVecはヒープを一切使わない
スタック上の指定サイズの中でのみで使う
だから「上限サイズがなく、かつ、想定サイズを超えた」時でなければヒープを使わずに済むようになっているよ
RustではVec(オブジェクト)生成new()でヒープは使わないよ
サイズ1以上になって遅延して初めてヒープ確保
SmallVecを使えば指定サイズ以上になって遅延して初めてヒープ確保
それまではスタック上のみを使う
ArrayVecはヒープを一切使わない
スタック上の指定サイズの中でのみで使う
だから「上限サイズがなく、かつ、想定サイズを超えた」時でなければヒープを使わずに済むようになっているよ
467デフォルトの名無しさん
2022/09/08(木) 01:51:32.30ID:M4A7wjs7 TS以外だと実際どれやればいいん?
理由添えて教えてほしい
理由添えて教えてほしい
468デフォルトの名無しさん
2022/09/08(木) 02:21:09.08ID:KnWQjklo >>467
TypeScriptやっている人ならRustかな
まずウェブブラウザのフロントエンドで少し処理することが出てくるとWebAssemblyを使うがそこでの使用言語シェア1位はRust
次にブラウザではなくデスクトップ上などで作るときもJS/TSとRustを使った安全に高速なフレームワークTauriがある
もちろんサーバーサイドでもRustを使って安全に高速な構築ができてサーバーやクラウドコストも他言語より有利になる
TypeScriptやっている人ならRustかな
まずウェブブラウザのフロントエンドで少し処理することが出てくるとWebAssemblyを使うがそこでの使用言語シェア1位はRust
次にブラウザではなくデスクトップ上などで作るときもJS/TSとRustを使った安全に高速なフレームワークTauriがある
もちろんサーバーサイドでもRustを使って安全に高速な構築ができてサーバーやクラウドコストも他言語より有利になる
469デフォルトの名無しさん
2022/09/08(木) 02:43:12.05ID:M4A7wjs7 >>468
めっちゃ丁寧な解説ありがとう
汎用系のCOBOL3年から未経験でWEB系に最近転職したんだ
自主学習でReactやったんでとりあえずフロントエンドで採用されたけど
今後サーバーサイドやその他の技術を習得
しようとしたとき何をやろうか?と悩んでたんだ
参考にしてみます。本当にありがとう。
めっちゃ丁寧な解説ありがとう
汎用系のCOBOL3年から未経験でWEB系に最近転職したんだ
自主学習でReactやったんでとりあえずフロントエンドで採用されたけど
今後サーバーサイドやその他の技術を習得
しようとしたとき何をやろうか?と悩んでたんだ
参考にしてみます。本当にありがとう。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 一律現金給付も消費減税もなし 高市内閣の経済対策に割れる世論 [蚤の市★]
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 津波警報の発表中にグーグル検索、AIが「すべて解除」と誤情報 [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 中国大使さん、麻生太郎を『この政治屋』と名指しし正論長文を投稿。 [271912485]
- 【実況】博衣こよりのえちえち朝活🧪 2
- 【実況】博衣こよりのえちえち朝活🧪
- 中国「もはや高市の謝罪や撤回で済まされるフェーズは過ぎ去った。辞任以外の選択肢ない」 [271912485]
- 【高市悲報】日本人のTikTokアカウントが続々収益化剥奪中!!乞食どもざまああああああああwwwwwww [394917828]
- 残クレマイホーム爆誕 [715715613]
