【超高速】C/C++に代わる低級言語を開発したい 8

2017/08/25(金) 11:22:12.03ID:KodDhcxm
最近のC++は何を勘違いしたか高級言語気取っててウザイ。
2017/08/25(金) 21:39:31.76ID:BZOsNf+t
高級っぽく見える言語だな
2017/08/26(土) 11:55:56.79ID:lejZryYl
トンキンではC++関係者は不審者に見えるらしいw
280デフォルトの名無しさん
垢版 |
2018/03/25(日) 14:11:56.44
>>3
>◆新言語でのリソース管理方針◆
>
>・確保したリソースを明示的に後始末しなくても問題が発生しない
>・何らかのメリットのために確保したリソースを明示的に後始末してもよい

こういう魔法みたいなことってどうやったらできるんだろうね

もちろん効率重視なのは言うまでもない前提条件として
数十〜数百マイクロ秒単位で使用元・使用先スレッドがガチャガチャ入れ替わる環境で
281デフォルトの名無しさん
垢版 |
2018/05/23(水) 20:03:50.70ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

BTGPU
282デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:37:35.74ID:RfoszcD2
DKB
283デフォルトの名無しさん
垢版 |
2018/10/20(土) 20:00:04.70ID:YPDT0Cqq
Cは8進10進16進数が扱えるのに、何で2進数が扱えないんだろう。
ちょっとの工夫でどうとでもなるけど、やっぱ標準であると嬉しいなあ。
2018/10/21(日) 14:55:24.25ID:YTn6F4Fk
16進数の方が分かりやすいからじゃないの
1010000とか書かれても1の位置がどこかすぐに分からないし
0x50なら一目で分かるけど
2018/10/21(日) 17:25:58.13ID:3rYBWp0g
gccはじめメジャーなコンパイラなら大抵は2進数リテラルは扱えるから
よく使う処理系基準でいいでしょ
2018/10/21(日) 20:17:45.60ID:IbAoaMml
C++では0bが使えるようになったけど、Cはまだなのか
つか素直にC++使おう
2018/10/21(日) 21:24:49.94ID:y1FMkoBF
最近のc++は糞化拡張が止まらないから。
あくまでアセンブラの代替として使いたいのであって、ハード寄りのコードを書きたいのであって、
速度重視、メモリ効率重視が根底にあるのに、c++の仕様拡張してる奴らはただの言語オタクでうざい。
288デフォルトの名無しさん
垢版 |
2019/05/25(土) 11:08:30.63ID:jbgB9jQg
Rustが正解に近い。

メジャー化してエコシステムが充実すればいける。
2019/06/03(月) 11:49:30.62ID:561P/qAZ
armcc, armclang, Linaro GCC

ARMR コンパイラ armcc ユーザガイド
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472jj/index.html
armcc は、標準 C および標準 C++ のソースコードを ARM アーキテクチャベースプロセッサのマシンコードにコンパイルする、最適化 C および C++ コンパイラです。
2901
垢版 |
2019/08/13(火) 23:00:51.64ID:oTlgbS6H
Rustが正解であることが確認されました。

10年弱に渡りお付き合いいただきありがとうございました。
2019/08/21(水) 20:28:24.91ID:6xsUkfpB
言語が
理解習得し易い
誤認間違い難い
というのもお願いしたい
292デフォルトの名無しさん
垢版 |
2019/08/31(土) 17:50:09.35ID:54Etlgy2
MIT「えっまた俺なんかやっちゃいました?」

julia、軌道に乗る
2019/08/31(土) 22:20:26.54ID:XxwPKKvU
>>277
大本の思想がランタイム速度落とさずにできるかぎり高級機能入れてこう
ってなところがあるんで自然といえば自然。
ある種の人体実験場みたいなところがc++の意義って気もする。
2019/09/01(日) 01:01:46.09ID:JdN5NInb
>>288
バスト占い思い出した
2019/09/01(日) 13:35:22.25ID:gzRpR9B4
c++が示したことってのは結局
ランタイム速度
高級機能を追加
の2点だけ追求すれば馬鹿プログラマは寄ってくるってことなんだわ。
2019/09/14(土) 20:38:11.35ID:IbeHy12P
どうみても今はコード書かない言語オタクが好き勝手に拡張してる。

C++にくだらん機能追加したいなら名前変えろよ。
C++系言語で普及した言語はJavaやC#などいっぱいある。
2020/02/17(月) 23:02:27.37ID:R0DiDWe7
Low* (Low star)という言語は型システムがすごいのでぜひ取り入れていくべき
2021/10/27(水) 10:06:43.69ID:XE3bmMwX
演算子オーバーロードって難読化だよね
2021/10/28(木) 12:18:05.54ID:VQB5DVZJ
まあ、もともとCは最適化はあまりやらなくて、プログラマの意思をなるべく素直に伝えるという思想だしな。だから、a=a+1;とa++;は演算後の値は同じでもプログラマの意図は違う。前者は加算命令、後者はインクリメント命令に落ちてほしい。

コンパイラのエラーチェックも最小限で、チェックはlint使えって感じだし。

Rust屋の主張するメモリ安全なんかも「うっせえわ!黙って言う通りにやれ!」って感じ。

あぁ、キャリー/ボローフラグが使えたら良いなあって時はあるかな。
2021/10/30(土) 16:29:48.11ID:nIglmucm
>>299
>キャリー/ボローフラグが使えたら良いなあ
ですよね、ローテート/シフトのときは特に
301デフォルトの名無しさん
垢版 |
2021/11/06(土) 14:48:01.13ID:b1XdA94q
int と size_t がいつも混在して面倒になる
2021/11/26(金) 11:52:34.78ID:ARqZ/fb1
勝手な整数拡張をやめてくれるある意味cより低級なcが欲しい
パフォーマンス的にワード長で扱うのが良いというのもわかるが
あえてintより小さい型で計算したい時というのはそれなりの理由があるからやるわけで
その型内でオーバーフローしたら切り詰めずに素直に落ちろ
2022/04/19(火) 01:58:13.78ID:TThcYTpA
しかしそこまで低級なところに降りていくとマクロアセンブラみたいなのが使いやすい感じになっちゃうんだよね。
言語上の表現がどういう機械語に対応付くのか意識するともう直接書いた方がええわ……となる。
2022/04/19(火) 14:30:56.58ID:1/h8QBeL
呼び出し前後のレジスタ退避と回復だけやってくれれば意外とアセンブラはほぼforthだよね
2022/04/21(木) 17:35:30.02ID:+ZjRtsOn
forthは言語とマクロ用言語が同一言語なアセンブラだな
gforthみたいなリッチ実装はコンパイル済の定義を参照するとx86の標準文法を曝け出しちゃってなんだかなぁ、と思う
2022/04/21(木) 20:15:20.64ID:O4XEE7U4
>>304
forthは呼び出し規約の抽象化じゃなくて、型と引数という概念を捨てて自由になった
マシン依存性を排除するためにレジスタを抽象化した汎用dスタックに全ての命令が型と個数の解釈をモラルを守って作用することで成り立ってる
(暗黙の)引数渡しに関してはオーバーヘッドは大きくないので普通はマシンの最大スカラー型
floatはさすがにfスタックがあるけど

dスタックだけで複雑なデータ操作は厳しいから、最大スカラー型である事が保証されてるrスタック(生ハードウェアスタック)が一時領域に便利なのが闇

制御構造も戻りアドレスや添字を積むだけだから、うっかり積み残しがあると戻りアドレスやデータが添字代わりにインクリメントされ続けたり不可解な事に

あとは拡張性が売りの癖に制御構造のポータブルな拡張が難しいのがな…
もちろん制御構造と整合性のある単純な命令くらいは添えられてるのであくまで例だけど
指定回数ループをbreakするには最低で添字と戻りアドレスをpopする必要があるけど、たいてい実装拡張として積まれてるデータは不定、何回popしたらセグフォるか試すことになる

規格の制御構造には不備があるから(これは本当)うちの拡張を推奨ってのが普通の世界
制御構造すら定番がなくて、同じ言語といえるのかという疑問すら湧く
2022/04/21(木) 21:15:26.12ID:O4XEE7U4
>>305
コメント無くなってたり、埋め込んだ定義が等価な表現に置き換わってたりするから、seeは既存のコードを参照してるのでなくて、ブロブからforthコードへのディスアセンブラ(再構築)

ワードを渡せば' でそのワードの指すアドレスは取れるけど、そこから何バイト読むかのオフセット指定をseeは取らない、かなりヒューリスティックだと思う

seeで標準される開始-終了アドレスに、読みすぎてそうなら適当に足すか、途中で切れてるようなコードなら適当に足してaddr nbyte discloseと呼べば大体復元できると思う
dis、+disとかも入ってたっけ

まあ、具体的なレジスタやメモリの名前が分かるだけでforthコードとそんな変わらないという悲しさはあるが
308デフォルトの名無しさん
垢版 |
2022/07/30(土) 16:21:32.91ID:paa5jUiA
Nim++
2022/08/03(水) 08:36:38.78ID:G37dUWbH
低級言語ならx64特化して構造化アセンブラみたいな感じで
ちょっとオシャレだけどやってる事はほぼむき出しのレジスタ操作みたいな?
2022/08/03(水) 11:55:01.67ID:GLMdE3Py
masm64でinvokeしまくれば
2022/08/04(木) 05:27:08.29ID:Xs8BUVRi
例えばループが多重化してループカウンタが複数必要な場合
作法としてRCXを使うけど、処理系が最適化で空いてるレジスタを割り当てたり
退避復帰をしつつRCXを使うとか
固定領域を確保してカウントに使用するとか自動でやってくれるみたいな
プログラムコードは雰囲気コーディングだけど最終出力は忖度された何かみたいな感じ
312デフォルトの名無しさん
垢版 |
2022/08/04(木) 18:25:34.25ID:+TMVVsOn
アセンブリ並みの変態低級言語作る?
313デフォルトの名無しさん
垢版 |
2022/08/06(土) 14:07:02.72ID:eSBCWCwI
Nim++
2023/09/21(木) 12:59:48.22ID:7twnyTUv
もうそろそろ、おしで祭りや
315デフォルトの名無しさん
垢版 |
2023/11/01(水) 03:29:10.04ID:5z6NYMjm
Nim#
316デフォルトの名無しさん
垢版 |
2023/11/05(日) 10:42:59.68ID:ol9bMVcc
Rust++
2023/11/05(日) 16:32:02.05ID:M+aCXIKU
最近のCPUのアセンブラはほとんどCと変わらないようだけど
2023/11/06(月) 06:07:34.02ID:bdWb9xgB
昔のCはアセンブラとほとんど変わらなかったから
差は縮まっていない
なにも変わってない
2023/11/06(月) 16:20:14.87ID:cmjYyIPB
最近はむしろC標準が直接サポートしてない命令が増えてるからな
ローテイトなんていまだにないし
320デフォルトの名無しさん
垢版 |
2023/11/11(土) 12:31:46.21ID:fuGMacjx
>>319
良いのが入荷
https://www.youtube.com/watch?v=P6KRbjoFdwY
321デフォルトの名無しさん
垢版 |
2024/02/11(日) 03:12:32.56ID:morq3qnL
>>294
Aカップが好きなアセンブラ君、食わず嫌いはいけません高級言語は恐くありませーん
Bカップが好きなBASIC君、少しは毛が生えたけどまだまだ修行が足りません関数に興味はないのですか
Cカップが好きな君は正解に限りなく近い。有象無象の言語はたくさん出てきたけれど結局Cが手ごろサイズで限りなく正解に近いです
Jカップが好きな君は煩悩に振り回されっぱなしです。たまには太陽だけでなく月にも興味を持ちなさい
322デフォルトの名無しさん
垢版 |
2024/04/19(金) 10:13:34.89ID:uD5nyH4z
>>1
仮想アセンブラを作ることになるが、かえって誤ったハードウェアと勘違いしそうw
323デフォルトの名無しさん
垢版 |
2024/04/19(金) 10:14:46.38ID:uD5nyH4z
>>317
アセンブラがわからないのに語る変なやつw
324デフォルトの名無しさん
垢版 |
2024/05/02(木) 01:06:39.68ID:f54xPIPf
>>321
どうでもいい話だけど、J が Java のことを言ってるようにも見えるので
実際には J 言語てのがあるんだけどね
J はJava や JS とは全く関係ない、APL (という言語) の派生言語で
APL と違って特殊キャラクタを使用せず ASCII のみで記述可能にしたもの
2024/12/11(水) 21:59:47.09ID:bqdEzJrv
>>1
そうして生まれたのがRust
Cと同じことが出来つつCの諸問題を解決した
インラインアセンブラも備えているのでCを置き換えられるようになった
326デフォルトの名無しさん
垢版 |
2025/03/24(月) 12:24:27.59ID:tWxitKr9
>>325
let bits = vec![false; 32];
これでbitsのサイズが4バイトになってくれるような仕組みはRustにありますか?
2025/03/24(月) 13:15:17.83ID:a0wY9RFf
>>326
https://docs.rs/bit-vec/ がいいかな

use bit_vec::BitVec;

fn main() {
 // 32bit全てfalseで作成
 let mut bv = BitVec::from_elem(32, false);
 // 7bitおきにtrueセット
 for index in (0..32).step_by(7) {
  bv.set(index, true);
 }
 // 0, 7, 14 , 21, 28番目のbitがtrueになった
 assert_eq!(bv.get(0), Some(true));
 assert_eq!(bv.get(1), Some(false));
 assert_eq!(bv.get(7), Some(true));
 assert_eq!(bv.get(28), Some(true));
 // イテレータでtrueになってる位置のリスト
 let v = bv.iter().enumerate().filter_map(|(i, bit)| bit.then_some(i)).collect::<Vec<_>>();
 assert_eq!(v, [0, 7, 14, 21, 28]);
 
 // 内部構造は標準でVec<u32>を使っているのでu32が1つ分
 assert_eq!(bv.storage(), [0b_10000001000000100000010000001]);
 // バイト列にすると4バイト
 assert_eq!(bv.to_bytes().len(), 4);
 assert_eq!(bv.to_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001000]);
}
2025/03/24(月) 13:30:34.57ID:S5TsEiko
CはPDP-11のアセンブラの高級言語化でしたっけ?
消えたアーキテクチャとは言え未だ有用ではありますが、現役アーキテクチャの8086-64やARMのソレとかの命令セットはどうなっているんでしょ?
多分基本命令そのものは大差ないと思うけど、マルチメディア拡張? MMXみたいな専用命令はCで直接記述出来ないですよね。
他にも、最近のナウいアーキテクチャは文字列をそのまま扱えるとか聞いて想像の範疇超えてます。
高級言語も楽で良いけど、そういうのは楽なアセンブラの上に構築出来ればそれで良いなあ。
2025/03/24(月) 19:01:49.54ID:/lNBwDBZ
25年位前のレスのコピペかよω
2025/03/25(火) 03:40:11.48ID:ztarSHRB
>>327
なんか左右逆で気持ち悪い(bigendian/littleendianともちょっと違う)
bv.set(31, true);
bv.set(32, true);
assert_eq!(bv.to_bytes(), [
0b_10000001, // 0-
0b_00000010,
0b_00000100,
0b_00001001,
0b_10000000]); // 32-
assert_eq!(bv.storage(), [
0b_10010000001000000100000010000001,
0b_1]);
2025/03/25(火) 08:18:52.12ID:viWlYIzm
>>329
すまない、オッサン通り越してお爺さんだから思想も古いんだ。
2025/03/25(火) 08:41:39.56ID:ztarSHRB
>>327
ありがとう。参考になりました。

多倍長整数の論理演算でbit立てる方法があったので、
それを使ったら簡単で速度もそこそこ出たので満足しました。
>>327 さんのものは不採用です。
2025/03/25(火) 09:02:37.24ID:4yBAp1pH
>>330
ビットはそういうものだよ
普通にビット演算すればわかる

let mut bits: u32 = 0;
for n in [0, 7, 14, 21, 28, 31] {
  bits |= 1 << n;
}
// u32に詰めているからこうなる
assert_eq!(bits, 0b_10010000_00100000_01000000_10000001);

// bit順(index=0..)にバイトで得る
assert_eq!(bits.reverse_bits().to_be_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001001]);
2025/03/25(火) 12:13:35.71ID:2SmtLJ6z
assert_eq!(bits.storage(), [0b_10010000_00100000_01000000_10000001]);
の結果から想像するに
assert_eq!(bits.reverse_bits().to_be_bytes(), [0b_10000001, 0b_00000010, 0b_00000100, 0b_00001001]);
ではなく
assert_eq!(bits.to_be_bytes(), [0b_10000001, 0b_01000000, 0b_00100000, 0b_10010000]);
の方を期待するのは可笑しいのかなー
正直びっくりエンディアンですわ
2025/03/25(火) 19:08:05.91ID:d+t8RnIb
byteやword単位のリトルエンディアンじゃなくて
1bit単位のリトルエンディアンだと思えば自然
2025/03/27(木) 07:21:00.91ID:vU3T1Sq/
Rustのオペレーターオーバーロードについて質問です
とりあえずtraitを使って
let a: X = X::new();
let b: X = X::new();
let c = a + b;
は出来たのですが
let a = &X::new();
let b = &X::new();
let c = a + b;
だと定義が無いと言われるのでtraitに&のバージョンを追加したら出来ました
ところが
let a = &mut X::new();
let b = &mut X::new();
let c = a + b;
だとまた出来ないのでtraitに&mutバージョンを追加したら出来ました
ところが
let a = &X::new();
let b = &mut X::new();
let c = a + b;

let a = X::new();
let b = &mut X::new();
let c = a + b;

let a = &X::new();
let b = X::new();
let c = a + b;
が全部出来ません
こういうのはすべての組み合わせをtraitで作っておく必要があるのでしょうか?
それとも一つの表現で全部定義してくれる仕組みは?
2025/03/27(木) 09:14:29.90ID:vU3T1Sq/
これかな
https://stackoverflow.com/questions/57911001/how-to-combine-all-operator-overloading-combinations-into-a-single-trait-in-rust
2025/03/27(木) 09:22:10.62ID:UV4Rce1I
>>336 >>337
ここに回答があるよ
https://stackoverflow.com/questions/38811387/how-to-implement-idiomatic-operator-overloading-for-values-and-references-in-rus
2025/03/27(木) 09:56:58.93ID:vU3T1Sq/
ああこれinternalなのね
macro_rules! add_impl とか
macro_rules! forward_ref_binop
(unop とか op_assign とかもあるけど)
2025/03/27(木) 09:59:54.17ID:vU3T1Sq/
これでいいのかな
https://crates.io/crates/forward_ref_generic
2025/03/27(木) 10:02:25.16ID:vU3T1Sq/
ああこっちか
https://crates.io/crates/forward_ref

>>328
それは >>327 の中にリンクがあったので既視ですdd
2025/03/27(木) 11:15:21.43ID:vU3T1Sq/
よさげだったけど&mutのが出来なかったorz
2025/03/27(木) 11:35:25.37ID:vU3T1Sq/
結局自前でmacroコピペして&mutの定義も追加したらいけたわthx
344デフォルトの名無しさん
垢版 |
2025/03/27(木) 11:46:57.39ID:HDQeQZ5r
Copyトレイトは無闇に付けたくないな
2025/03/27(木) 11:59:13.89ID:JG6/gkrB
Trait爆発ですね判ります
2025/03/27(木) 12:14:45.69ID:UV4Rce1I
>>342
Addでは不変参照しか使わないから& mutは不要
& mutが必要となるのはAddAssignだがこれは& mut selfになる
2025/03/28(金) 09:26:28.67ID:VPiwRdmL
Rust使ってても暗黙のCopyとかに無関心だと【超高速】名乗れなくない?
2025/04/05(土) 10:41:53.71ID:wy4OM/NR
包丁も食材も上手く使えないと料理は不味い
2025/04/06(日) 07:52:19.40ID:IvdHyMZx
料理が上手なヤツはRustは使わない
2025/04/06(日) 23:21:04.80ID:p+WNSwb1
>>347
暗黙のコピーが発生しまくる諸言語とは異なり
RustではCopyトレイト実装型のみ暗黙のコピーが行われるので最もRustが好ましい

具体的にCopyトレイト実装型とは整数値やポインタおよび不変参照であり
それらを用いた複合型は明示的にCopyトレイト実装することもできる

ちなみに整数値などがなぜ暗黙のコピーが起きても構わないかというと
CPUにとってそれらをポインタ経由で間接的に扱う方が遅くなるからであり値をコピーして用いたほうが速いため
2025/04/07(月) 10:58:45.39ID:fwcAlCQF
はあ…
2025/04/07(月) 12:23:44.19ID:yN1PvO54
>>349
マにだって料理が得意な奴はいるだろ
2025/04/07(月) 14:31:02.06ID:w0rhHNCz
>>350
お前レベル低過ぎ
黙ってろ
2025/04/07(月) 14:50:26.71ID:k98JYePi
>>350で合ってるでしょ
コストの係るものは明示的に.clone()しないとコピーできないし
コストの係らないものはCopyトレイトのおかげで.clone()しなくてもコピーされるよ
2025/05/02(金) 09:39:27.39ID:k5bGwZZ0
Rustの最大の教訓は、どんな言語でも有名になればバカ(必ずしも頭が悪いわけではなく、本来その言語が想定しない用途に使おうとする奴も含む)が使うってことだろう
Rustの仕様はそれほど効率が重要でない分野でテキトーに使おうとすると無駄なコピーが増えたりしてかえって非効率になりがちな面がある
2025/05/02(金) 18:23:29.41ID:kIVCyVUc
>>355
Rustは明示的にclone()を呼んだりCopy実装しないとコピーされないから大丈夫だよ
暗黙にコピーされないから無駄なことをしていればコード見るとすぐバレちゃう
まともなコードは必要な極一部を除いてほとんど参照で渡されるね
ちなみに数値や不変参照(ポインタ)はCopy実装されてるため暗黙にコピーされるけどそれが一番速いから問題なし
2025/05/03(土) 12:05:28.26ID:ekVKJoF2
最適化されることを主張するなら証拠を示すべきなのは当然だが、
コピーの最適化を前提にするのなら例えば安易にCopy実装したりcloneしたりすんな、
みたいな意識高い言説は多くの場合無意味になっちゃうわけだけど、Rustおじはそれでいいのだろうか
2025/05/03(土) 13:36:23.13ID:BbjMJMxS
>>357
頭悪いから違いを理解できないのか?
まずCPUのMOVE命令は全てコピーだ
だから数値や参照(アドレス)がCopy実装されていても何のペナルティも存在しない
むしろ数値や参照を参照で扱う方が間接となり遅い
次にCPUのMOVE命令は全てコピーだがコピー元が使われてなければ純粋なムーブと見なすことができる
そのため最適化が可能で例えば2回のムーブは1回に減らすことができる
これはスタック上の変数を扱う場合も同様でレジスタへMOVEした後にレジスタ間の演算で終わるならスタック上の領域は不要で最適化できる
2025/05/03(土) 13:38:21.80ID:BbjMJMxS
RustやC++のムーブも同じで一次的にはコピーをして元を使わないため最適化できる場合が多い
一方でプログラマがコピーやクローンを明示的にした場合は元が生きていて全く異なる
そもそも元も後で使いたいからコピーしているわけだ
だからムーブとは異なり最適化でコピーが消えることはない
もちろん後で使いたい場合はコピーして渡すのではなく参照を渡すのが正解だ
2025/05/03(土) 13:39:26.21ID:BbjMJMxS
したがってプログラマはコピーを可能な限り避けるべきである
暗黙のコピーが行われるプログラミング言語では意識せずコピーしてしまう
プログラムを見ただけですぐにコピーしてあることがわかる方が望ましい
RustではCopyトレイト実装した型のみ暗黙のコピーが起きる
前述のように数値などはその方が有利なので最初からCopy実装されている
ヒープを用いない型ならばプログラマは自由にCopy実装できるがコード上でそれが明示され読む側は気付ける
サイズが大きく参照で扱った方がよい型をCopy実装していればおかしいことがわかる
一方でヒープを用いていればCopy実装はできないがClone実装はできる
これはコード上でfoo.clone()とコピーすることを明示的に記述する必要がある
したがって参照を使えばよいのに無駄なコピーをしていればすぐにわかる
2025/05/04(日) 11:58:45.22ID:RkNPiBO2
区別できないバカなのか?
ムーブの時などを含めて実態がコピーになるといってもコピー元は二度と使われないのだから最適化できる

一方でclone()などはコピー元をその後も使うためにコピーしている
コピー元を二度と使わないならclone()の必要がない
そしてコピー元をその後も使うから最適化の前提さえ成立しない
2025/05/05(月) 10:09:59.16ID:20YqVkB+
RustはC++より描き易いけどC++からの置き換えには不適
RustはCより面倒だけどCからの置き換えには最適
2025/05/06(火) 06:06:18.29ID:JTtajrxW
低レベル言語の開発だよね?
皆さんの会話が高級すぎて戸惑いを隠せない。
OS記述も十分に低レベルだけど、ハードウエア操作はもっと低レベルじゃないかな?
2025/05/06(火) 10:06:47.77ID:K1Pjz07i
Rustで低レベルするとunsafeだらけになる
(悪いとは言ってない面倒臭いとは思う)
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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