公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part17
https://mevius.5ch.net/test/read.cgi/tech/1665063793/
探検
Rust part18
■ このスレッドは過去ログ倉庫に格納されています
2022/12/10(土) 18:17:02.61ID:XSNoXTPt
798デフォルトの名無しさん
2023/01/08(日) 14:01:25.73ID:tWJ5hYnn799デフォルトの名無しさん
2023/01/08(日) 14:08:03.69ID:OlteebrS >>796
それは言語としての魅力があればの話。
それは言語としての魅力があればの話。
800デフォルトの名無しさん
2023/01/08(日) 15:57:06.75ID:LmL7tvTF >>797
安心安全だなあ
安心安全だなあ
801デフォルトの名無しさん
2023/01/08(日) 16:08:08.46ID:vMQQXEk1 >>797
unsafeの絵面ヤバくて草
unsafeの絵面ヤバくて草
802デフォルトの名無しさん
2023/01/08(日) 16:09:10.68ID:VztT2gmz unsafeで書いたほうがコンパイル速度速くて好き
803デフォルトの名無しさん
2023/01/08(日) 16:30:50.12ID:9eCFH/Xi せめてunsafeの間くらいは起こしてやれよ
804デフォルトの名無しさん
2023/01/08(日) 19:26:34.22ID:2yRrU7ur Rustで多量のファイルを高速に読み込みたい場合ってどうすればいいの?
std::fs::readはVec<u8>を返す=メモリアロケータが動く=遅い
十分なサイズのVecを事前に確保してreadなりReadFileなりを叩けば
任意のアドレスに読み込んでくれるけどほかに方法はないのかな
std::fs::readはVec<u8>を返す=メモリアロケータが動く=遅い
十分なサイズのVecを事前に確保してreadなりReadFileなりを叩けば
任意のアドレスに読み込んでくれるけどほかに方法はないのかな
805デフォルトの名無しさん
2023/01/08(日) 20:32:01.24ID:9eCFH/Xi Rustに限らずreadで遅いと感じるレベルならOS依存のmmap(memmap)くらいしか思いつかない
速さ目的で使ったことないから本当に速くなるか分からないけど
速さ目的で使ったことないから本当に速くなるか分からないけど
806デフォルトの名無しさん
2023/01/08(日) 21:00:35.09ID:gNhHKSa0 The Book を進めていくと Box<trait> でエラーになって Box<dyn trait> に変えろって言われるんだけど、dyn ってなんですか?
807デフォルトの名無しさん
2023/01/08(日) 21:02:45.41ID:lAEXMGQ2 動的 ダイナミック
実行時に決まる的な
実行時に決まる的な
808デフォルトの名無しさん
2023/01/08(日) 21:06:58.13ID:gNhHKSa0809デフォルトの名無しさん
2023/01/08(日) 21:11:02.19ID:rBa/PYaz >>805
1MB/1000個くらいのファイルをstd::fs::readで読みながらVec[u8]に
extend_from_sliceで追加していくコードを書いてみたら数秒かかった
さすがに遅すぎ
せめてVec<u8>→Vec<u8>(の任意のインデックス)みたいなmemcpy的な
コピー手段はないのなか。どのくらい早くなるかわからんが
1MB/1000個くらいのファイルをstd::fs::readで読みながらVec[u8]に
extend_from_sliceで追加していくコードを書いてみたら数秒かかった
さすがに遅すぎ
せめてVec<u8>→Vec<u8>(の任意のインデックス)みたいなmemcpy的な
コピー手段はないのなか。どのくらい早くなるかわからんが
810デフォルトの名無しさん
2023/01/08(日) 21:31:03.29ID:LKKCPrwt >>809
>1MB/1000個くらいのファイル
これはどういう意味?
/ は、割る、または、OR(または) の意味で用いる。
もしかして、
一個当り 1MB のファイルが 1000 個、合計サイズ 1GB の
ファイルのことを言っている?
>1MB/1000個くらいのファイル
これはどういう意味?
/ は、割る、または、OR(または) の意味で用いる。
もしかして、
一個当り 1MB のファイルが 1000 個、合計サイズ 1GB の
ファイルのことを言っている?
811デフォルトの名無しさん
2023/01/08(日) 21:32:08.52ID:LKKCPrwt812デフォルトの名無しさん
2023/01/08(日) 21:37:22.02ID:Ot3XQ+MC >>810
わかりにくくてすまん。ファイル総数1000程度、合計サイズ1MB程度
わかりにくくてすまん。ファイル総数1000程度、合計サイズ1MB程度
813デフォルトの名無しさん
2023/01/08(日) 21:51:35.12ID:iCNAe1YS >>809
リリースビルドでその速度?
リリースビルドでその速度?
814デフォルトの名無しさん
2023/01/08(日) 21:52:13.93ID:lAEXMGQ2 >>808
間違えてるかもしれんが俺の理解だと
>>traitは動的
traitは静的だけど、trait実装してる型が静的/動的に決まるかで
動的→dyn Trait 静的→ジェネリクスやimpl Trait を使い分ける
よくある例では
Vec<T>はT1つ確定して他の型は一切受け付けないけど
Vec<Box<dyn Trait>>はTraitを実装してる型なら何でも入る
間違えてるかもしれんが俺の理解だと
>>traitは動的
traitは静的だけど、trait実装してる型が静的/動的に決まるかで
動的→dyn Trait 静的→ジェネリクスやimpl Trait を使い分ける
よくある例では
Vec<T>はT1つ確定して他の型は一切受け付けないけど
Vec<Box<dyn Trait>>はTraitを実装してる型なら何でも入る
815デフォルトの名無しさん
2023/01/08(日) 22:01:47.30ID:gNhHKSa0816デフォルトの名無しさん
2023/01/08(日) 22:13:49.41ID:V1l2P4XZ817デフォルトの名無しさん
2023/01/08(日) 22:45:09.72ID:HTBsXmSw818デフォルトの名無しさん
2023/01/08(日) 22:48:55.19ID:9eCFH/Xi >>809
memcpyと同じことしたいならstd::ptrにcopyとかcopy_nonoverlappingが用意されてる
ただ引数はポインタだからunsafe
copy_nonoverlappingのExamplesがやりたいことに近いと思う
この例はコピー元のVecを空にしてるけどu8みたいなCopy型に限定すればコピー元のVecをそのままにしても一応安全
memcpyと同じことしたいならstd::ptrにcopyとかcopy_nonoverlappingが用意されてる
ただ引数はポインタだからunsafe
copy_nonoverlappingのExamplesがやりたいことに近いと思う
この例はコピー元のVecを空にしてるけどu8みたいなCopy型に限定すればコピー元のVecをそのままにしても一応安全
819デフォルトの名無しさん
2023/01/08(日) 22:52:59.71ID:9eCFH/Xi 818追記
コピー元が空になっても構わないならVec::appendで同じことができる
コピー元が空になっても構わないならVec::appendで同じことができる
820デフォルトの名無しさん
2023/01/08(日) 23:03:17.84ID:OD5QAUK5821デフォルトの名無しさん
2023/01/09(月) 00:21:25.60ID:L9fsJfRH >>812
1000個のファイルで1秒だと、もともとOSの速度がその程度の場合も有り得そう。
1ファイル当り1(ms)ということになるから。
もともとファイルはそこまで一度に沢山の個数をopen, closeすることは
想定されて無いので。
それもRustの安全機構が遅さに影響を与えているかも。
1000個のファイルで1秒だと、もともとOSの速度がその程度の場合も有り得そう。
1ファイル当り1(ms)ということになるから。
もともとファイルはそこまで一度に沢山の個数をopen, closeすることは
想定されて無いので。
それもRustの安全機構が遅さに影響を与えているかも。
822デフォルトの名無しさん
2023/01/09(月) 00:26:23.50ID:L9fsJfRH >>821
ファイルって、例えばファイラーでコピーする場合でも、合計が同じ容量でも、
細かいファイルが多数有る場合の方がずっと遅くなる。
一個の1MBのファイルをコピーすると一瞬なのに、1KBの1000個のファイルをコピー
すると1秒くらい掛かるかも。
ファイルって、例えばファイラーでコピーする場合でも、合計が同じ容量でも、
細かいファイルが多数有る場合の方がずっと遅くなる。
一個の1MBのファイルをコピーすると一瞬なのに、1KBの1000個のファイルをコピー
すると1秒くらい掛かるかも。
823デフォルトの名無しさん
2023/01/09(月) 01:18:38.59ID:1jv8LwEE profilingしてsyscallがボトルネックになってれば非同期や並列化で高速化するしかない
824デフォルトの名無しさん
2023/01/09(月) 10:40:30.18ID:qWwsdzcu たとえどんなにメモリ確保が遅くともディスクIOよりも遅いってことはないだろう
体感の遅さが何秒とかじゃなくてドライブのベンチマークと比べて判断しよう
体感の遅さが何秒とかじゃなくてドライブのベンチマークと比べて判断しよう
825デフォルトの名無しさん
2023/01/09(月) 10:58:52.04ID:SSufLxQW >>820
エクスプローラーってことはWindows?
そもそもWindowsはファイルシステムのsyscallが結構重いから
メモリコピーとか関係なくそんなものの可能性はあるかと
思い込みで試行錯誤してないでちゃんとプロファイル取ったほうがいいよ
エクスプローラーってことはWindows?
そもそもWindowsはファイルシステムのsyscallが結構重いから
メモリコピーとか関係なくそんなものの可能性はあるかと
思い込みで試行錯誤してないでちゃんとプロファイル取ったほうがいいよ
826デフォルトの名無しさん
2023/01/09(月) 15:14:46.56ID:eWb8PeTD cargo testでドキュメントテストが実行されないんだけどお前らも同じ?
ドキュメントに書いてある通りに実行してるけど実行されない
ドキュメントに書いてある通りに実行してるけど実行されない
827デフォルトの名無しさん
2023/01/09(月) 15:29:11.68ID:Tw59sECy828デフォルトの名無しさん
2023/01/09(月) 15:35:17.32ID:eWb8PeTD >>827
ああ、すみません。解決しました。
どうもバイナリだと実行されないみたいです。
cargo new myprog
で作成したバイナリだと駄目で
cargo new doclib --lib
で作成したライブラリではちゃんと実行されました。
ああ、すみません。解決しました。
どうもバイナリだと実行されないみたいです。
cargo new myprog
で作成したバイナリだと駄目で
cargo new doclib --lib
で作成したライブラリではちゃんと実行されました。
829デフォルトの名無しさん
2023/01/09(月) 15:52:28.38ID:Tw59sECy >>828
おお、本当ですね... なんでこういう動きなんだろう、分かる人いないかな?
おお、本当ですね... なんでこういう動きなんだろう、分かる人いないかな?
830デフォルトの名無しさん
2023/01/09(月) 17:51:48.91ID:ytPnwm3y Rust固有の話でもないんだけどUnicode対応のアーカイブフォーマットってどんなのがあるんだろ
比較的新しい7zipはUnicodeファイル名をサポートしているけどライブラリやクレートが豊富とはいいがたい
かといってレガシーなzipやtarだとファイル名のコーディングは実装依存にみえる
実装依存の場合Unicodeファイル名をサポートしているライブラリやクレートがあるのかという問題も出てくるし
比較的新しい7zipはUnicodeファイル名をサポートしているけどライブラリやクレートが豊富とはいいがたい
かといってレガシーなzipやtarだとファイル名のコーディングは実装依存にみえる
実装依存の場合Unicodeファイル名をサポートしているライブラリやクレートがあるのかという問題も出てくるし
831デフォルトの名無しさん
2023/01/09(月) 19:37:23.02ID:ytPnwm3y tarで実験していたら詰んだw
let mut v:Vec<u8> = Vec::new();
let mut c = std::io::Cursor::new(v);
let mut t = tar::Builder::new(c);
t.append_path("foo.txt");
std::fs::write("foo.tar", &v); // borrow of moved value: `v`
どうしろと・・・
let mut v:Vec<u8> = Vec::new();
let mut c = std::io::Cursor::new(v);
let mut t = tar::Builder::new(c);
t.append_path("foo.txt");
std::fs::write("foo.tar", &v); // borrow of moved value: `v`
どうしろと・・・
832はちみつ餃子 ◆8X2XSCHEME
2023/01/09(月) 19:48:59.36ID:qp/cfIgC >>830
zip も特定のビットを立てていればファイル名が UTF-8 ということになる。
https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.10.TXT
項目 4.4.4 で説明されている Bit 11 を見て。
zip も特定のビットを立てていればファイル名が UTF-8 ということになる。
https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.10.TXT
項目 4.4.4 で説明されている Bit 11 を見て。
833デフォルトの名無しさん
2023/01/09(月) 19:50:26.02ID:FCxfWiS9 >>831
なにがしたいんこれ
なにがしたいんこれ
834デフォルトの名無しさん
2023/01/09(月) 20:12:49.13ID:NBV9jC+W mut大好きそう
835デフォルトの名無しさん
2023/01/09(月) 20:21:20.61ID:ytPnwm3y >>833
オンメモリでtarを作って出来上がったものをファイルに保存したい
オンメモリでtarを作って出来上がったものをファイルに保存したい
836デフォルトの名無しさん
2023/01/09(月) 20:46:41.39ID:vdwHQqNl tar使ったことないけどt.get_ref().get_ref()で&Vec<u8>取り出せるのかな
先にt.finish()呼ぶべきかもしれないしget_refよりinto_innerの方がいいかもしれない
get_refは詰み回避の頻出手筋
先にt.finish()呼ぶべきかもしれないしget_refよりinto_innerの方がいいかもしれない
get_refは詰み回避の頻出手筋
837デフォルトの名無しさん
2023/01/09(月) 21:28:27.40ID:ytPnwm3y >>836
let a = t.get_ref().get_ref();
std::fs::write("foo.tar", a);
これは一応それっぽいファイルが作られた
let mut a = t.into_inner().unwrap();
let mut f = std::fs::File::create("foo.tar").unwrap();
std::io::copy(&mut a, &mut f);
こっちは空っぽだった
ttps://crates.io/crates/tar
こんなサンプルしかないしCursorを使用する例なんて見当たらないし
どうやるのが妥当なのか全くわからん
let a = t.get_ref().get_ref();
std::fs::write("foo.tar", a);
これは一応それっぽいファイルが作られた
let mut a = t.into_inner().unwrap();
let mut f = std::fs::File::create("foo.tar").unwrap();
std::io::copy(&mut a, &mut f);
こっちは空っぽだった
ttps://crates.io/crates/tar
こんなサンプルしかないしCursorを使用する例なんて見当たらないし
どうやるのが妥当なのか全くわからん
838デフォルトの名無しさん
2023/01/09(月) 22:00:04.05ID:ytPnwm3y ttps://docs.rs/tar/latest/tar/struct.Builder.html#method.append_path
>pub fn append_path<P: AsRef<Path>>(&mut self, path: P) -> Result<()>
>~
>Also note that after all files have been written to an archive the finish function needs to be called to finish writing the archive.
らしいが
>pub fn finish(&mut self) -> Result<()>
>~
>In most situations the into_inner method should be preferred.
どっちなんだよw
ここに載っているサンプルだってinto_innerもfinishも呼んでいないのがあるし
>pub fn append_path<P: AsRef<Path>>(&mut self, path: P) -> Result<()>
>~
>Also note that after all files have been written to an archive the finish function needs to be called to finish writing the archive.
らしいが
>pub fn finish(&mut self) -> Result<()>
>~
>In most situations the into_inner method should be preferred.
どっちなんだよw
ここに載っているサンプルだってinto_innerもfinishも呼んでいないのがあるし
839デフォルトの名無しさん
2023/01/09(月) 23:33:14.26ID:2xcnkP4M840デフォルトの名無しさん
2023/01/10(火) 00:39:55.01ID:j3UGlM4K841デフォルトの名無しさん
2023/01/10(火) 00:49:25.83ID:j3UGlM4K t.append_pathしたタイミングでcursor.position進んでたわ
そりゃそうか
そりゃそうか
842デフォルトの名無しさん
2023/01/10(火) 01:07:25.76ID:LMu5FpAe let mut v = Vec::new();
let c = std::io::Cursor::new(&mut v);
let mut t = tar::Builder::new(c);
t.append_path("foo.txt");
t.finish();
drop(t);
std::fs::write("foo.tar", &v);
let c = std::io::Cursor::new(&mut v);
let mut t = tar::Builder::new(c);
t.append_path("foo.txt");
t.finish();
drop(t);
std::fs::write("foo.tar", &v);
843デフォルトの名無しさん
2023/01/10(火) 01:15:57.75ID:MfXPDJ7e get_mutでCursorにすればReaderとして使える
844デフォルトの名無しさん
2023/01/10(火) 02:21:46.49ID:UwgiY8HJ そのコードでCursor使う意味が分からん
let mut tar = tar::Builder::new(Vec::new());
tar.append_path("foo.txt").unwrap();
let body = tar.into_inner().unwrap();
std::fs::write("foo.tar", body).unwrap();
let mut tar = tar::Builder::new(Vec::new());
tar.append_path("foo.txt").unwrap();
let body = tar.into_inner().unwrap();
std::fs::write("foo.tar", body).unwrap();
845デフォルトの名無しさん
2023/01/10(火) 03:54:21.65ID:jTn98fgX 昨日のファイル1000個の続きなんじゃね
メモリに全部読読み込んでから処理しようとする理由は謎
メモリに全部読読み込んでから処理しようとする理由は謎
846デフォルトの名無しさん
2023/01/10(火) 11:07:15.73ID:UY3YN64G The Bookをやり終えたあとってどうするのがいい?
次に読むべきおすすめの書籍があるか知りたいです!
次に読むべきおすすめの書籍があるか知りたいです!
847デフォルトの名無しさん
2023/01/10(火) 13:00:32.37ID:wZlueyRK >>846
次の書籍を読む前にThe Bookの復習がてら簡単なCLIツールを3~5個くらい書いて自分の理解を確かめたほうがいいよ
次の書籍を読む前にThe Bookの復習がてら簡単なCLIツールを3~5個くらい書いて自分の理解を確かめたほうがいいよ
848デフォルトの名無しさん
2023/01/10(火) 16:48:39.24ID:UY3YN64G849デフォルトの名無しさん
2023/01/10(火) 17:29:32.58ID:0JcDinm0 コマンドラインに渡した(1000個の)ファイルを
指定した名前のtarファイルに書き出すツールとか
指定した名前のtarファイルに書き出すツールとか
850デフォルトの名無しさん
2023/01/10(火) 18:47:02.53ID:jt9UZCSx851デフォルトの名無しさん
2023/01/10(火) 19:01:05.30ID:ICakwhma 何使ってんのかな
mallocかな
mallocかな
852デフォルトの名無しさん
2023/01/10(火) 21:06:19.40ID:doG42uyJ 10回程度の小さい容量のアロケートなんてI/Oに比べれば微々たるものでしょ
853デフォルトの名無しさん
2023/01/11(水) 14:35:14.84ID:PmiCGwmF Vecのcapacityって再確保のたびに倍々に増えていくんじゃなかったっけ
ならpushの回数を増やしても再確保回数は大した数字にならないだろう
ならpushの回数を増やしても再確保回数は大した数字にならないだろう
854デフォルトの名無しさん
2023/01/11(水) 19:26:52.32ID:STTwcLZn ドライブレターを割り当ててあるネットワークドライブのパスを
dunce::canonicalizeに食わせるとUNCパスが返ってくる
そりゃねーぜ・・・
dunce::canonicalizeに食わせるとUNCパスが返ってくる
そりゃねーぜ・・・
855デフォルトの名無しさん
2023/01/11(水) 21:38:38.39ID:+7dhpYN+ こういう瑣末な問題を自分で解決する力のない人はまだRustを使うべき時期じゃないよね
856デフォルトの名無しさん
2023/01/11(水) 23:08:05.53ID:STTwcLZn というかLinuxのProtonだとネットワークドライブへのアクセスでも
ドライブレタースタートのパスが返ってくるのな
結果、Windowsだと動かないけどLinuxなら動くという珍事になってるw
ドライブレタースタートのパスが返ってくるのな
結果、Windowsだと動かないけどLinuxなら動くという珍事になってるw
857デフォルトの名無しさん
2023/01/12(木) 09:12:37.07ID:KDs8BtvS ファイル属性の取得はファイル読み込みよりは圧倒的に速いので
・ファイル名とファイルサイズの取得
・合計サイズのチェックと領域の確保
の順でやればマシかもね
ファイル読み込みに比べたら微々たる違いだとは思うが
・ファイル名とファイルサイズの取得
・合計サイズのチェックと領域の確保
の順でやればマシかもね
ファイル読み込みに比べたら微々たる違いだとは思うが
858デフォルトの名無しさん
2023/01/12(木) 10:55:41.76ID:YWq2QOJT ファイルの数だけ二重にsyscallを呼び出すことになるからサイズのデカい数ファイルを処理するときならともかく1000ファイルで合計1MBという今回のケースだと悪化するんじゃね?
859デフォルトの名無しさん
2023/01/12(木) 11:13:05.66ID:CILc6G1+ ripgrepの実装でも見た方が早そう
860デフォルトの名無しさん
2023/01/12(木) 11:37:44.42ID:Iq4TKL6o >>858
そもそもトータル1MB程度って分かってるなら余裕みて2MB程度確保しとけば良いような気がするが...
そもそもトータル1MB程度って分かってるなら余裕みて2MB程度確保しとけば良いような気がするが...
861デフォルトの名無しさん
2023/01/12(木) 12:26:48.24ID:lE5eokgZ862デフォルトの名無しさん
2023/01/12(木) 13:42:55.06ID:xHtWNAJz は?頭悪いの?
863デフォルトの名無しさん
2023/01/12(木) 13:53:22.90ID:Iq4TKL6o865デフォルトの名無しさん
2023/01/12(木) 15:31:26.43ID:Iq4TKL6o 的外れないことって何?w
866デフォルトの名無しさん
2023/01/12(木) 21:08:10.25ID:3O2sN+zP dunce::canonicalizeはダメっぽいのでGetFullPathNameWを使うことにした
ちょうどいいシステムコールが用意されているなら安易に野良クレートを使うより確実な気がしてきた
ちょうどいいシステムコールが用意されているなら安易に野良クレートを使うより確実な気がしてきた
867デフォルトの名無しさん
2023/01/12(木) 22:10:25.12ID:FSx5+7HP やっぱC言語の方が良くね?
868デフォルトの名無しさん
2023/01/12(木) 22:53:08.57ID:SDdlQMcb というと ?
869デフォルトの名無しさん
2023/01/12(木) 22:57:40.51ID:lSbfdb++ いや、知らんけどw
870デフォルトの名無しさん
2023/01/13(金) 20:32:09.46ID:GI5Uh2G8 知らないなら言うなよ
871デフォルトの名無しさん
2023/01/13(金) 21:11:06.84ID:DJL02dxD >>844
のコード見るだけでも、Rustは書き味の悪い言語だと思う。
のコード見るだけでも、Rustは書き味の悪い言語だと思う。
872デフォルトの名無しさん
2023/01/13(金) 21:13:37.70ID:pWxhpTTY >>871
悪い見本だもの
悪い見本だもの
873デフォルトの名無しさん
2023/01/13(金) 21:16:19.91ID:DJL02dxD >>872
Rust関連の本を何冊か読んだが良いコードは余り無い。
Rust関連の本を何冊か読んだが良いコードは余り無い。
874デフォルトの名無しさん
2023/01/13(金) 21:19:33.92ID:pWxhpTTY 悪い見本だと判別できない時点でろくな本を読んでないことが分かる
875デフォルトの名無しさん
2023/01/13(金) 21:21:43.63ID:URQHLbI7 みんなの参考になるように読んだ本を列挙してみてはどうだ?
876デフォルトの名無しさん
2023/01/13(金) 21:26:26.06ID:DJL02dxD はっきり言ってやろう。Rustは根本的に書き味が悪いんだよ。
877デフォルトの名無しさん
2023/01/13(金) 21:29:15.41ID:3E7mF/VV Rustは苦痛を感じるためのドM言語ってこと、忘れてないか?
878デフォルトの名無しさん
2023/01/13(金) 21:29:53.28ID:AezcW3Li >>876
じゃ君が思う根本的に書き味が良い言語は何なの?
じゃ君が思う根本的に書き味が良い言語は何なの?
879デフォルトの名無しさん
2023/01/13(金) 21:35:01.32ID:SIYbgDna >>878
c
c
880デフォルトの名無しさん
2023/01/13(金) 21:47:38.65ID:fPZtp8ym ワイはJava
881デフォルトの名無しさん
2023/01/13(金) 21:48:28.21ID:fPZtp8ym Kotlin、C#も好き
882デフォルトの名無しさん
2023/01/13(金) 22:05:13.48ID:CrbXPD60 ラクダケース派か
PythonとかRustみたいに型と変数でラクダとヘビ使い分けるパターンって名前あるのかな
PythonとかRustみたいに型と変数でラクダとヘビ使い分けるパターンって名前あるのかな
883デフォルトの名無しさん
2023/01/13(金) 22:18:14.76ID:3Mpi9pMF C#はたしかに何やるのも楽だ
884デフォルトの名無しさん
2023/01/13(金) 22:45:44.13ID:JAZ1vLLw Rustってそもそもコンパイル速度が遅くてダメだわ
885デフォルトの名無しさん
2023/01/13(金) 22:48:50.23ID:KppyFlUz Goはコンパイル最速だからデオキシスのスピードフォルムだな
Rustはディフィンス、Java/C#はノーマルフォルムだな
アタックフォルムは知らん
Rustはディフィンス、Java/C#はノーマルフォルムだな
アタックフォルムは知らん
886デフォルトの名無しさん
2023/01/13(金) 23:27:46.90ID:15Xqxl1r >>878
C, C++, C#, JS, Ruby, Java は、Rustよりは書き味がいい。
C, C++, C#, JS, Ruby, Java は、Rustよりは書き味がいい。
887デフォルトの名無しさん
2023/01/14(土) 00:10:54.25ID:+bIIgMNd 自分はスネーク派だからJavaとC#は苦手(根本的に書き味が悪い)
Python使用歴が長かったからだと思う
CとC++は何でもありだからどうでもいいけど
TypeScript(JS)も油断するとスネークで書いてたりする
Python使用歴が長かったからだと思う
CとC++は何でもありだからどうでもいいけど
TypeScript(JS)も油断するとスネークで書いてたりする
888デフォルトの名無しさん
2023/01/14(土) 00:20:05.26ID:7IKvLHvE スネークとは関係なく、Rustは書き味が悪い。
他のどんな言語にも無い書きにくさ。
Kotlinも書き味が悪いから没落中。
他のどんな言語にも無い書きにくさ。
Kotlinも書き味が悪いから没落中。
889デフォルトの名無しさん
2023/01/14(土) 02:25:09.71ID:aWsdCtiV 汚コード量産言語
890デフォルトの名無しさん
2023/01/14(土) 06:19:32.45ID:si/5TbUH 書き味で言うならNimが一番良い。
特にメソッド呼出し構文はNimが一番洗練されていると思う。UFCSとかもっと色々な言語で採用されてほしい。
特にメソッド呼出し構文はNimが一番洗練されていると思う。UFCSとかもっと色々な言語で採用されてほしい。
891デフォルトの名無しさん
2023/01/14(土) 10:19:28.23ID:gaUC4cev でもnimって流行ってないじゃん?
892デフォルトの名無しさん
2023/01/14(土) 10:29:27.36ID:qzxpLg1U nimの構文とか好きな人は好きだろうと思うけど自分は嫌いだし
嫌いな構文をわざわざ使うほどの他の魅力がないんだよなぁ
嫌いな構文をわざわざ使うほどの他の魅力がないんだよなぁ
893デフォルトの名無しさん
2023/01/14(土) 11:26:06.77ID:P3G4Bbh6 書き味悪いとか言ってRust使う気全くないのにわざわざRustスレに書き込もうとするのが一番意味不明
894デフォルトの名無しさん
2023/01/14(土) 11:58:15.30ID:2TykacFm895デフォルトの名無しさん
2023/01/14(土) 12:05:24.38ID:mqrlOfYW わざわざ文句いいに来るおじさんって大抵構ってちゃん
896デフォルトの名無しさん
2023/01/14(土) 13:50:07.41ID:E6EWdIax 「書き味」の良さ悪さの原因を自分なりに考察して言語化してれば多少は議論になるんだけどな
慣れと好みの次元でしか語れないならお爺ちゃんの自分語りでしかないから相手しても無駄
慣れと好みの次元でしか語れないならお爺ちゃんの自分語りでしかないから相手しても無駄
897デフォルトの名無しさん
2023/01/14(土) 14:08:44.00ID:CzVWhO4J そもそもRustはいろいろ我慢して使う言語だし
みんな上に言われて仕方なく使ってる
みんな上に言われて仕方なく使ってる
■ このスレッドは過去ログ倉庫に格納されています
