Rustとか言うダブスタ言語 (173レス)
Rustとか言うダブスタ言語 http://medaka.5ch.net/test/read.cgi/prog/1729120072/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: 仕様書無しさん [sage] 2024/10/17(木) 08:07:52.57 値型と参照型で振る舞い変えるダブスタ言語だけど使ってるやついる? http://medaka.5ch.net/test/read.cgi/prog/1729120072/1
154: 仕様書無しさん [sage] 2024/10/22(火) 14:08:17.06 ダブスタっていうなら、それこそC++の 「ムーブするかコピーするかを決めるのはコンパイラ様だ! 人ごときがstd::moveとか書こうが無視してコピーしてやる!エラーも警告も出さねえぜ!」 ってやつのことだよな。あれがクソっていうなら同意。 http://medaka.5ch.net/test/read.cgi/prog/1729120072/154
155: 仕様書無しさん [sage] 2024/10/22(火) 17:54:16.14 >>150 Rustでは明示的に指定しない限りコストの高いヒープ領域メモリを使用しない スタック領域メモリが使われるわけだが関数やブロック内で既に使い終わっている変数があればそれが使っていた領域を安全に再利用するので最小限のサイズしかスタックを消費しない さらにレジスタがある環境ならばレジスタを使用すれば済む分はスタックを消費しない そしてスタック領域メモリの解放とは関数の呼び出し元に戻る時にスタックポインタなどを元の位置に戻すことのみしかコストはかからない http://medaka.5ch.net/test/read.cgi/prog/1729120072/155
156: 警備員[Lv.4][新芽] [sage] 2024/10/22(火) 19:31:32.76 >>153 だとしても再度使えるようにするのは意味わからんだろ 開放しろって話 >>155 だからコストかからないとかどうとかじゃなくてコードから把握できないから全て渡したら解放にしろよって話なんだわ 解放しない場合は.mcopyだの後ろにつけとけばいいだろ なんでお前ら人の話聞かないの? http://medaka.5ch.net/test/read.cgi/prog/1729120072/156
157: 仕様書無しさん [sage] 2024/10/22(火) 19:48:23.93 >>156 いやヒープも使ってない変数を解放出来るプログラム言語存在しないだろ? 解放しないんじゃなくて出来ないのよ? 何もしない空関数呼ぶの? それこそ馬鹿でしょ。 何基準に合わせろと言うのよ? ムーブの時だけmove付けろならまだ話になるが。 そうしない理由はc++からの教訓って話しもしてる。 http://medaka.5ch.net/test/read.cgi/prog/1729120072/157
158: 仕様書無しさん [sage] 2024/10/22(火) 20:10:09.50 // MCopyトレイトを定義 pub trait MCopy { fn mcopy(&self) -> Self; } // プリミティブ型に対して一括実装 macro_rules! impl_mcopy { ($($t:ty),*) => { $( impl MCopy for $t { fn mcopy(&self) -> Self { *self } } )* } } // 全てのプリミティブ型に実装 impl_mcopy!( u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize, f32, f64, bool, char ); はい、もう何がしたいのか分からないけどプリミティブ型にmcopy実装したから好きにして。 これで読みやすくなる? http://medaka.5ch.net/test/read.cgi/prog/1729120072/158
159: 仕様書無しさん [] 2024/10/22(火) 21:17:13.30 >ブロック終了までメモリ確保してる スタックとヒープの違いが本当に分からないんだな 「構文上のルール統一のために変数を使えなくする」は可不可でいえばできるけど、それで何かしらリソースが解放されたりパフォーマンス上のメリットがあるわけでもない パフォーマンスやリソース管理などの理由があるケースでのみムーブされるだけなんだし http://medaka.5ch.net/test/read.cgi/prog/1729120072/159
160: 仕様書無しさん [] 2024/10/22(火) 21:29:02.86 型によって管理が変わるって他の言語でもあるだろ C#で { var a = new Foo(); } という書き方が問題ないかは Foo の実装に依存する なんでGCに任せられない型があるの?ダブスタを解消するために「全ての型で明示的なDisposeの呼び出しが必要」にしたりしないの? とか言わないだろ http://medaka.5ch.net/test/read.cgi/prog/1729120072/160
161: 仕様書無しさん [sage] 2024/10/22(火) 21:37:15.18 >>156 何を解放しろと主張しているの? その整数値は例えばレジスタに即値ロードされるか あるいは他の関数からレジスタに入って返り値として返ってくるんだよ もし何の用途にも使われなければ最適化でそのレジスタの使用すらなくなるし もし他の関数に渡すなら別のレジスタにコピーされて引数として渡される そしてレジスタは次々と別の用途に使われていく いったい何を解放しろと主張しているの? http://medaka.5ch.net/test/read.cgi/prog/1729120072/161
162: 仕様書無しさん [sage] 2024/10/23(水) 00:10:06.06 ダブスタだ解放だとゴネてるから意味不明だけど 1が言いたいのって、Haskell見た初心者が「記号だらけで意味不明でクソ。英単語で構文を作れ」 って言うレベルの難癖なんじゃねえの? http://medaka.5ch.net/test/read.cgi/prog/1729120072/162
163: 仕様書無しさん [sage] 2024/10/23(水) 06:33:50.46 >>6 参照型&TはCopyトレイトを実装しているのでコピーされて何度でも使えるよ >>7 &strも&Stringどちらも参照型だよ strは可変長なのでそのまま扱わずに参照型&strとして用いるよ Stringもそのまま扱うのは生成する時だけで読み取りは&strとして扱うよ 書き換えの時は可変参照型&mut Stringとして扱うよ http://medaka.5ch.net/test/read.cgi/prog/1729120072/163
164: 警備員[Lv.6][新芽] [sage] 2024/10/23(水) 07:22:58.28 >>157 メモリ解放すればいいだろ http://medaka.5ch.net/test/read.cgi/prog/1729120072/164
165: 警備員[Lv.6][新芽] [sage] 2024/10/23(水) 07:24:25.49 >>162 pragmaまみれの構文書いてるやつは言うことが違うね http://medaka.5ch.net/test/read.cgi/prog/1729120072/165
166: 警備員[Lv.6][新芽] [sage] 2024/10/23(水) 07:26:57.62 >>160 Dispose()を呼ばなければならないのは例外だから プリミティヴ型は基本型のなの通り基本なんだよ? http://medaka.5ch.net/test/read.cgi/prog/1729120072/166
167: 仕様書無しさん [sage] 2024/10/23(水) 07:40:07.56 >>164 このスレでメモリの仕組み理解してないのあなた1人だけよ。ありもしない幻想に囚われてる。 rustどころか他の言語も危ういから無理せずもっと簡単なのから試したほうがいいよ。 一応望みの物は >>158 に置いてあるのでちゃんと使ってよね。 http://medaka.5ch.net/test/read.cgi/prog/1729120072/167
168: 仕様書無しさん [sage] 2024/10/23(水) 17:11:17.22 >>49 >>122 プリミティブ型とは何かを勘違いしているのではないか Rustではヒープメモリを前提とせずに使える基本パーツの型を指す この公式ページに一覧が挙げられている https://doc.rust-lang.org/std/#primitives このようにarrayやsliceやstrなども当然プリミティブ型である http://medaka.5ch.net/test/read.cgi/prog/1729120072/168
169: 仕様書無しさん [sage] 2024/10/24(木) 16:02:01.63 ムーブが基本でtrait Copyを実装しているCopy型だけ特別にコピーだね プリミティブ型の中にもCopy型と!Copy型の両方あるね http://medaka.5ch.net/test/read.cgi/prog/1729120072/169
170: 仕様書無しさん [sage] 2024/10/25(金) 12:56:54.88 結局1は俺が何言ってるか理解できない日本語すらわからんバカ共と話すことはないって 自分の中では大勝利して満足したんだろうか http://medaka.5ch.net/test/read.cgi/prog/1729120072/170
171: 仕様書無しさん [sage] 2024/10/25(金) 19:17:54.04 >>158 Rustはトレイト境界の指定によりジェネリックで簡潔&安全にこのように書けるよ trait MCopy { fn mcopy(&self) -> Self; } impl<T: Copy> MCopy for T { fn mcopy(&self) -> Self { *self } } fn main() { let x = 123.45; let y = x.mcopy(); assert_eq!(x, y); let x = "abc.de"; let y = x.mcopy(); assert_eq!(x, y); } strはCopy実装型ではないけど &TがジェネリックにCopy実装型なので &strの文字列も上記のように動作 http://medaka.5ch.net/test/read.cgi/prog/1729120072/171
172: 仕様書無しさん [sage] 2024/10/27(日) 14:31:17.99 multiple readers XOR single writerなので 可変がなければ参照はいくつでもコピーできるね 対照的に可変参照は独占的オンリーワンになる http://medaka.5ch.net/test/read.cgi/prog/1729120072/172
173: 仕様書無しさん [] 2025/01/31(金) 08:58:53.87 【結婚難】違反SEの代償【孤独死】 ☆大損害だから稼働減らして収入増やせ☆ 金稼ぎ妨害! 共働き妨害! 時間外労働違反 ↓ 偽装委託多重派遣 ↓ 低技術 ↓ 低収入 ↓ 結婚難 ↓ 孤独死 反社会な孤独死の現場 https://i.imgur.com/pALCFXJ.jpg http://medaka.5ch.net/test/read.cgi/prog/1729120072/173
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.655s*