公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
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 part21
https://mevius.5ch.net/test/read.cgi/tech/1692105879/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.2ch.net/test/read.cgi/tech/1514107621/
探検
Rust part22
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2024/01/20(土) 23:21:40.08ID:wyzQTwgG2024/01/20(土) 23:30:24.59ID:YXP1l1jf
Rust The Book (日本語版)
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
https://doc.rust-jp.rs/book-ja/
Rust edition guide (日本語版)
https://doc.rust-jp.rs/edition-guide/
Rust by example (日本語版)
https://doc.rust-jp.rs/rust-by-example-ja/
Rust cookbook (日本語版)
https://uma0317.github.io/rust-cookbook-ja/
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
Rust nomicon book (日本語版)
https://doc.rust-jp.rs/rust-nomicon-ja/
Rust async book (日本語版)
https://async-book-ja.netlify.app/
Rust WASM book (日本語版)
https://moshg.github.io/rustwasm-book-ja/
Rust embeded book (日本語版)
https://tomoyuki-nakabayashi.github.io/book/
Rust enbeded discovery (日本語版)
https://tomoyuki-nakabayashi.github.io/discovery/
Rust Design Patterns (日本語版)
https://qiita.com/Yappii_111/items/4ccc3a8461cdd4035651
https://qiita.com/Yappii_111/items/654717e6a6a980722189
Rust API guideline (日本語版)
https://sinkuu.github.io/api-guidelines/
2024/01/20(土) 23:30:59.71ID:YXP1l1jf
Rust Reference Book
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust serde Book
https://serde.rs/
https://doc.rust-lang.org/reference/
Rust Standard Library
https://doc.rust-lang.org/std/
Rust rustc Book
https://doc.rust-lang.org/rustc/
Rust rustdoc Book
https://doc.rust-lang.org/rustdoc/
Rust rustup Book
https://rust-lang.github.io/rustup/
Rust Cargo Book
https://doc.rust-lang.org/cargo/
Rust unstable Book
https://doc.rust-lang.org/nightly/unstable-book/
Rust macro Book
https://danielkeep.github.io/tlborm/book/
Rust CLI (Command Line Interface) apps Book
https://rust-cli.github.io/book/
Rust Future Book
https://cfsamson.github.io/books-futures-explained/
Rust async-std Book
https://book.async.rs/
Rust tokio Book
https://tokio.rs/tokio/tutorial
Rust serde Book
https://serde.rs/
2024/01/21(日) 19:52:38.28ID:/dcZ0aWP
Rustを理解していく順序 (文法以外)
ownership
↓
lifetime (これ以前でも参照を持ち越さない範囲で可)
↓
trait (これ以前でもライブラリ既存traitメソッド使用は可)
generic (これ以前でもライブラリ既存genericメソッド使用は可)
↓
macro (これ以前でも既存macro使用は可)
async (これ以前でも同期で使用可)
↓
unsafe (ほとんどのことはunsafeを使わずに可能)
もしunsafeを使わないと効率よく実装できない安全なパターンを見つけて、
かつ、それが既存ライブラリに存在しない新たなパターンならば、
それは大発見だから皆のためにそのcrateを公開すべし
ownership
↓
lifetime (これ以前でも参照を持ち越さない範囲で可)
↓
trait (これ以前でもライブラリ既存traitメソッド使用は可)
generic (これ以前でもライブラリ既存genericメソッド使用は可)
↓
macro (これ以前でも既存macro使用は可)
async (これ以前でも同期で使用可)
↓
unsafe (ほとんどのことはunsafeを使わずに可能)
もしunsafeを使わないと効率よく実装できない安全なパターンを見つけて、
かつ、それが既存ライブラリに存在しない新たなパターンならば、
それは大発見だから皆のためにそのcrateを公開すべし
2024/01/21(日) 20:27:09.29ID:D3jVm/Ct
今、refと&で混乱してるとこ!
6デフォルトの名無しさん
2024/01/21(日) 20:58:34.51ID:RjmgKxew オーナーシップとかAIにやらせればOK
意識して時間割く必要なし
意識して時間割く必要なし
2024/01/21(日) 21:23:48.87ID:/dcZ0aWP
>>5
パターンマッチングはCopy実装型はcopyされてそれ以外はmoveされる
copyやmoveを避けるには
マッチング対象を参照にすれば
全て参照として受け取れる
しかしある部分はcopyである部分は参照で受け取りたいことがよくある
(例えば数値とStringで構成されてる場合)
その時は参照で受け取りたい部分のみrefを付けるとそこは参照で受け取れる
パターンマッチングはCopy実装型はcopyされてそれ以外はmoveされる
copyやmoveを避けるには
マッチング対象を参照にすれば
全て参照として受け取れる
しかしある部分はcopyである部分は参照で受け取りたいことがよくある
(例えば数値とStringで構成されてる場合)
その時は参照で受け取りたい部分のみrefを付けるとそこは参照で受け取れる
8デフォルトの名無しさん
2024/01/21(日) 21:33:08.24ID:LhOQKlqN >>5
refはbind by reference
左辺(相当)でのみ使う(binding生成時のみ)
右辺で&を使うのと同じだけど右辺で&を指定できない場面で使う
&を左辺で使うとパターンマッチでデリファレンス
右辺で*を使うのと基本同じ
refはbind by reference
左辺(相当)でのみ使う(binding生成時のみ)
右辺で&を使うのと同じだけど右辺で&を指定できない場面で使う
&を左辺で使うとパターンマッチでデリファレンス
右辺で*を使うのと基本同じ
2024/01/21(日) 22:36:05.82ID:/n8yifEU
>>https://mevius.5ch.net/test/read.cgi/tech/1692105879/990
一応知らない人のために書いておくけど
「Rustがunsafeコード一切なしでメモリアンセーフ」な事が判明してから半年近く経ってる
特定の機能導入のタイミングでコードが発見されたけど、
「Rustの仕様バグ」だと認識されていて直せない
>>4
そんな事並べて理解したつもりでも、分からないと言っている人の側の主張が正当なんだよ
最近はここでも保証って言われなくなっただろ、当たり前だよRustの仕様に健全性が無いのだから
たぶん知っていて話を逸らしているのか、過去スレでスルーしたかで、この指摘も無理やり矮小化してくるからな
(githubの議論でも矮小化して放置)
気を付けろよ
https://github.com/rust-lang/rust/issues/114936
一応知らない人のために書いておくけど
「Rustがunsafeコード一切なしでメモリアンセーフ」な事が判明してから半年近く経ってる
特定の機能導入のタイミングでコードが発見されたけど、
「Rustの仕様バグ」だと認識されていて直せない
>>4
そんな事並べて理解したつもりでも、分からないと言っている人の側の主張が正当なんだよ
最近はここでも保証って言われなくなっただろ、当たり前だよRustの仕様に健全性が無いのだから
たぶん知っていて話を逸らしているのか、過去スレでスルーしたかで、この指摘も無理やり矮小化してくるからな
(githubの議論でも矮小化して放置)
気を付けろよ
https://github.com/rust-lang/rust/issues/114936
2024/01/21(日) 22:51:42.90ID:w4jDa8WO
>>9
無意味な揚げ足取りをしてRustを叩きたい人はアンチスレへ
棲み分けしてください
Rustアンチスレ
https://mevius.5ch.net/test/read.cgi/tech/1509028624/
無意味な揚げ足取りをしてRustを叩きたい人はアンチスレへ
棲み分けしてください
Rustアンチスレ
https://mevius.5ch.net/test/read.cgi/tech/1509028624/
2024/01/22(月) 00:47:14.54ID:jqH5vdYX
仕様バグだから直せないじゃなくて
厳密なチェックをする実装は0から作ったほうが早いから
今使ってる確率的(笑)な実装は変更しないんだよね?
厳密なチェックをする実装は0から作ったほうが早いから
今使ってる確率的(笑)な実装は変更しないんだよね?
12デフォルトの名無しさん
2024/01/22(月) 03:17:34.54ID:laN06gwL これマジ? どれくらいの確率で踏むんけ? コンパイルのバクはケアしたくないなあ
2024/01/22(月) 04:28:43.80ID:DrvqbiCd
2024/01/22(月) 09:21:43.10ID:k43UrEGh
>>9
こんなコンパイラの脆弱性を突くようなコードを普通なら書かない定期
こんなコンパイラの脆弱性を突くようなコードを普通なら書かない定期
2024/01/22(月) 21:22:44.12ID:m6FRVxec
>>9は9年前の2015年から既知の有名なパターン
意味のあるプログラミングで絶対に踏むことはないため害はない
その特殊ケースに対応するデメリットの方が大きいため対策されていない
それらを踏まえたうえでIT大手が揃ってRustを採用しRust Foundationも設立された
意味のあるプログラミングで絶対に踏むことはないため害はない
その特殊ケースに対応するデメリットの方が大きいため対策されていない
それらを踏まえたうえでIT大手が揃ってRustを採用しRust Foundationも設立された
2024/01/22(月) 21:31:04.02ID:l2He84BH
9のコードの意味が理解できないんだが何が問題なのか説明してくれ
2024/01/22(月) 22:53:37.35ID:6ImN7JeY
c++のテンプレートはチューリングマシンだから
無限ループを起こせるのは仕様の欠陥がどうか聞きたい
無限ループを起こせるのは仕様の欠陥がどうか聞きたい
18デフォルトの名無しさん
2024/01/22(月) 23:05:33.08ID:YajFhzWL f: impl for<'s> FnOnce(&'s str) -> (&'static str, [&'static &'s (); 0]) の説明だけ。
ライフタイム 's の str を引数にして、&'static str 型と、[&'static &'s (); 0] 型のタプルを返すクロージャが f ということ。
[&'static &'s (); 0] は &'static &'s () 型の長さ 0 の配列。
&'static &'s () は、ユニット型() のライフタイム 's の参照のライフタイム 'static の参照。
この &'static &'s () の部分で変なことが起きてそうと言っとるな。
ライフタイム 's の str を引数にして、&'static str 型と、[&'static &'s (); 0] 型のタプルを返すクロージャが f ということ。
[&'static &'s (); 0] は &'static &'s () 型の長さ 0 の配列。
&'static &'s () は、ユニット型() のライフタイム 's の参照のライフタイム 'static の参照。
この &'static &'s () の部分で変なことが起きてそうと言っとるな。
2024/01/22(月) 23:14:04.77ID:T1sqP3ZB
2024/01/22(月) 23:41:39.76ID:NA4FP1NO
2024/01/23(火) 00:35:34.27ID:AizsfBYE
>>18
文脈無視してその引用だけで言えそうなことは
&'static &'s T 型が存在するならば 's も 'static でなければならない
このルールに反しない限り &'s str を &'static str に変換してよい
文脈無視してその引用だけで言えそうなことは
&'static &'s T 型が存在するならば 's も 'static でなければならない
このルールに反しない限り &'s str を &'static str に変換してよい
2024/01/25(木) 23:09:32.35ID:iPN7/qe+
安全にこれで&'staticへ変換できる
fn to_static_str(s: &str) -> &'static str {
s.to_owned().leak()
}
fn to_static_str(s: &str) -> &'static str {
s.to_owned().leak()
}
2024/01/26(金) 23:31:43.19ID:ZBdWgzp4
最後までずっと使うものやあるいは
あるメモリ限度内に収まる使い方ならば
リークさせて扱いが楽になるメリット享受を選ぶのもありかもな
あるメモリ限度内に収まる使い方ならば
リークさせて扱いが楽になるメリット享受を選ぶのもありかもな
2024/01/27(土) 23:34:17.17ID:kvD8ZR3g
>>22
それ&'static strではなく&'static mut strを返してもええねんで
それ&'static strではなく&'static mut strを返してもええねんで
2024/01/28(日) 02:18:12.19ID:tZGISO28
>>22
leakって安全なの?
leakって安全なの?
2024/01/28(日) 04:27:59.88ID:2343IlJN
leakは安全
そのプログラム終了まではその部分のメモリを解放しないだけ
そのプログラム終了まではその部分のメモリを解放しないだけ
2024/01/28(日) 08:32:52.16ID:hRRbWEE/
>>25
Rust の定義ではメモリリークは安全性を損なわないことになってる。
言語の機能として積極的に阻止しなければならないような動作ではないが、
だからといってむやみにリークさせていいわけでもないのは当然なので
そこらへんはロジック上の必要性を鑑みて「正しく」運用するのはプログラマの責任だよ。
Rust の定義ではメモリリークは安全性を損なわないことになってる。
言語の機能として積極的に阻止しなければならないような動作ではないが、
だからといってむやみにリークさせていいわけでもないのは当然なので
そこらへんはロジック上の必要性を鑑みて「正しく」運用するのはプログラマの責任だよ。
2024/01/28(日) 12:34:08.20ID:tZGISO28
leakは参照を削除するとメモリリークになると書いてあった(機械翻訳)けど参照って削除できるの
29デフォルトの名無しさん
2024/01/28(日) 13:17:17.43ID:lA5rY1V0 >>28
原文は何て書いてるのさ
原文は何て書いてるのさ
2024/01/28(日) 14:30:03.90ID:WlHw4mUK
期待した通りの結果になるのは危険ではないという知見は合理的だ
期待や願望よりも地獄のような厳しい現実にこだわるバイアスがかかってない
期待や願望よりも地獄のような厳しい現実にこだわるバイアスがかかってない
2024/01/28(日) 15:17:37.40ID:2343IlJN
>>28
leak()は所有者がいなくなるだけ
つまりそのメモリ領域が解放されなくなるだけで安全な行為
そこを指す参照だけになる
一般的に参照は指しているだけ
その参照を表す変数もしくは一時的な値が消えればその参照は消えたことになる
参照が消えても実体には何ら影響なく解放なども生じない
leak()は所有者がいなくなるだけ
つまりそのメモリ領域が解放されなくなるだけで安全な行為
そこを指す参照だけになる
一般的に参照は指しているだけ
その参照を表す変数もしくは一時的な値が消えればその参照は消えたことになる
参照が消えても実体には何ら影響なく解放なども生じない
2024/01/28(日) 18:26:28.82ID:WlHw4mUK
メモリリークにならない=参照がデストラクタを呼び出せる
ではなく
参照はデストラクタを呼べないが、参照が永久に残ればメモリリークにならない
ではなく
参照はデストラクタを呼べないが、参照が永久に残ればメモリリークにならない
2024/01/29(月) 23:08:47.69ID:GnLHDaEQ
メモリリークは多義なので
GC言語でも、今後は使わないオブジェクト等をどこが参照しているため解放されない、これもメモリリークと言う
つまり参照が残っているからメモリリークじゃないとは言えない
逆にRustの場合は、leak()を適用した時点でそこは永久に解放されないのだから、既にメモリリークとも言える
もちろんそれで困らない時に意図的にリークを可能とするものなので、その機能や行為自体に問題はなく、そのプログラムの性質や環境や方針次第
GC言語でも、今後は使わないオブジェクト等をどこが参照しているため解放されない、これもメモリリークと言う
つまり参照が残っているからメモリリークじゃないとは言えない
逆にRustの場合は、leak()を適用した時点でそこは永久に解放されないのだから、既にメモリリークとも言える
もちろんそれで困らない時に意図的にリークを可能とするものなので、その機能や行為自体に問題はなく、そのプログラムの性質や環境や方針次第
2024/01/30(火) 02:10:08.22ID:gYzmItMj
多義である事実に人間が従うのではなく、定義を変えたいので変えまくった人間に事実が従う
利己主義の結果を予想するのではなく結果を予想できる範囲内で利己的になる
利己主義の結果を予想するのではなく結果を予想できる範囲内で利己的になる
2024/01/30(火) 06:01:38.95ID:lXERqUpG
きちんとメモリ確保・解放する
ただそれだけのことだけどうまく行かないものだね
ただそれだけのことだけどうまく行かないものだね
2024/01/30(火) 07:11:49.27ID:g++Pj77W
>>35
Rustならそれができるし保証される
ただしその基本に加えて融通を利かせることもできる
意図的にリークさせる(解放しない)こともできるしそれを使わないこともできる
意図的に循環参照を作ってリークさせることもできるしそれを避けるための手段も用意している
Rustならそれができるし保証される
ただしその基本に加えて融通を利かせることもできる
意図的にリークさせる(解放しない)こともできるしそれを使わないこともできる
意図的に循環参照を作ってリークさせることもできるしそれを避けるための手段も用意している
2024/01/30(火) 11:19:29.95ID:LgX6lgq1
それくらいできてくれないと習得に対して割に合わない
2024/01/30(火) 23:08:46.90ID:shd55QRp
2024/01/31(水) 05:41:08.45ID:XSmS7DeM
Rustでは意図的にリークもしくは意図的に循環参照作成の場合を除いて必ず解放される
2024/01/31(水) 22:24:17.87ID:rU+aRD+l
スポーツでも五輪だけが目的のプロがいたら割に合わないが
なんか目的をあやふやにすれば五輪に出ても破産しないよね
なんか目的をあやふやにすれば五輪に出ても破産しないよね
41デフォルトの名無しさん
2024/02/01(木) 16:48:45.42ID:ernnY6oF Microsoft seeks Rust developers to rewrite core C# code
https://www.theregister.com/2024/01/31/microsoft_seeks_rust_developers/
でかいところのバックエンドRust化が増えてきたな
https://www.theregister.com/2024/01/31/microsoft_seeks_rust_developers/
でかいところのバックエンドRust化が増えてきたな
42デフォルトの名無しさん
2024/02/01(木) 17:28:29.31ID:xcOmoIH1 しかしRust流行らんな
2024/02/01(木) 19:27:48.94ID:6WtKOSai
Pythonやkotlinみたいな手軽さで堅牢で高いパフォーマンスが出れば最高なんだけどなかなかね
2024/02/01(木) 20:38:04.52ID:XOfXRWXD
from C to Rust へのマイグレーションは時間がかかるからしゃあない
2024/02/01(木) 21:16:53.56ID:E1I2Gvr8
>>43
Pythonはスクリプトを書く程度ならいいけどプログラミングには不向き
Pythonはスクリプトを書く程度ならいいけどプログラミングには不向き
2024/02/01(木) 21:44:37.29ID:Nzd8TkB/
きちんとガベコレしてるのに見下されてるなあPythonは
きちんとしても割に合わない
きちんとしても割に合わない
2024/02/01(木) 21:53:27.11ID:7aZ9tAiW
動的型は堅牢とかきちんとやるみたいなのと相反するんだよな
書き捨てならいいけど長期的にメンテするやつには向いてない
書き捨てならいいけど長期的にメンテするやつには向いてない
48デフォルトの名無しさん
2024/02/01(木) 21:55:25.71ID:9CL84hYM Rust、言うほどPythonと比べて手軽でないか?
2024/02/01(木) 22:17:59.13ID:B5mxz6YT
プログラマの意図を書かないと、意図を表せる言語じゃないと「正しい」かどうかは検証しようがない。
だから意図の表現方法として型やライフタイム注釈やらの形を確立したのであって、お手軽に柔軟に動かす言語では実行時に不都合があれば止まるという形にならざるを得ない。
静的型があれば全部が解決ってわけではないけどごく基本的な整合性検査すらせずに実行するまでわからんというのはメンタル的にきつい。動的型はきつい。
自分で把握できる程度の小さな規模なら動的型のほうが楽ってこともあるといえばあるけど、人類は駄目なのでちゃんと把握できる規模は自分で思っているよりだいぶん小さい。
だから意図の表現方法として型やライフタイム注釈やらの形を確立したのであって、お手軽に柔軟に動かす言語では実行時に不都合があれば止まるという形にならざるを得ない。
静的型があれば全部が解決ってわけではないけどごく基本的な整合性検査すらせずに実行するまでわからんというのはメンタル的にきつい。動的型はきつい。
自分で把握できる程度の小さな規模なら動的型のほうが楽ってこともあるといえばあるけど、人類は駄目なのでちゃんと把握できる規模は自分で思っているよりだいぶん小さい。
50デフォルトの名無しさん
2024/02/01(木) 22:29:20.68ID:wp2DoW25 Pythonはやっぱり行列を扱うのに長けてる気がするな
ただ静的には何の変数を見ても(Variable)xxx: Anyみたいな型推定しかされていなくて、自分の書いたコードですら訳がわからなくなる
他人の書いたライブラリを使うときはまるで魔法を使ってるかのようだ
ただ静的には何の変数を見ても(Variable)xxx: Anyみたいな型推定しかされていなくて、自分の書いたコードですら訳がわからなくなる
他人の書いたライブラリを使うときはまるで魔法を使ってるかのようだ
2024/02/01(木) 22:40:37.81ID:Nzd8TkB/
Pythonというかインタプリタは部分的にCを使うことを認めざるをえない
それを大多数に納得させるコストが激安
それを大多数に納得させるコストが激安
2024/02/01(木) 22:42:10.75ID:tu2Yd+rZ
>Pythonはやっぱり行列を扱うのに長けてる気がするな
pythonのどこが?numpyがあるだけじゃね。
pythonのどこが?numpyがあるだけじゃね。
2024/02/01(木) 22:45:58.52ID:E1I2Gvr8
PythonはC/C++/Rustで書いたライブラリを呼び出すスクリプト言語として使っている限りは問題ない
プログラミング言語としては不向きで使うべきではない
プログラミング言語としては不向きで使うべきではない
2024/02/01(木) 22:54:05.96ID:Nzd8TkB/
OSのカーネルにはPythonは不向きだからクソどうでもいい生存競争をしなくてすむ
55デフォルトの名無しさん
2024/02/01(木) 23:06:17.91ID:0Yigz0zQ 使い分けが出来ない人はスキルが低いだけ
言語に限らずどの技術でも同じこと
言語に限らずどの技術でも同じこと
2024/02/01(木) 23:13:02.07ID:iVey9ypb
各種カーネルのRust移植に時間かかってるけどC/C++からRustへの書き直しってそんなに大変なの?
2024/02/01(木) 23:14:24.05ID:h0D2/F6d
Pythonもプログラミング言語だしシェルスクリプトも立派なプログラミング言語だよ
2024/02/01(木) 23:23:51.23ID:itS/z8tN
プログラミング言語はそれに付随するフレームワークの質で需要が変わってくるけど、
C/C++/Rust/アセンブラなど低水準言語はガべコレのランタイムが不要というアドバンテージがある
だからカーネル用途での需要が高い
C/C++/Rust/アセンブラなど低水準言語はガべコレのランタイムが不要というアドバンテージがある
だからカーネル用途での需要が高い
2024/02/01(木) 23:26:15.91ID:B5mxz6YT
Ruby もだいぶん長いことバイトコード化すらせずに木を辿るクソ遅い設計だったんだぞ。
でもなあ、使い分けといってもやっぱり慣れたらもうちょっと他の場所でも使いたくなるし、速度の要求も静的検証の要求も出てくる。
今の Ruby は Jit で速くなったし型チェックのサポートも本格的になった。
使い分けは要るがせずにすむならそれに越したこともないんよ。
でもなあ、使い分けといってもやっぱり慣れたらもうちょっと他の場所でも使いたくなるし、速度の要求も静的検証の要求も出てくる。
今の Ruby は Jit で速くなったし型チェックのサポートも本格的になった。
使い分けは要るがせずにすむならそれに越したこともないんよ。
2024/02/01(木) 23:26:33.20ID:8nChHaP8
2024/02/01(木) 23:33:40.62ID:B5mxz6YT
C の世界の文字列はゼロ終端やんか。
カーネルのインターフェイスにもその規約がそのまま現れてる。
内部的な設計は Rust 的にしつつも外向きのインターフェイスは変えないように置き換えるなら微妙な変換があらゆるところに出てくるよ。
まあそのへんは適当な専用フレームワークを確立させればたいしたことでもないが、そういう地味なことの積み重ねがいっぱい要るよ。
カーネルのインターフェイスにもその規約がそのまま現れてる。
内部的な設計は Rust 的にしつつも外向きのインターフェイスは変えないように置き換えるなら微妙な変換があらゆるところに出てくるよ。
まあそのへんは適当な専用フレームワークを確立させればたいしたことでもないが、そういう地味なことの積み重ねがいっぱい要るよ。
2024/02/02(金) 00:29:39.63ID:wYh3cvfE
C/C++からJavaってのはすげー移植しやすかったのよ
その利点はほとんどないと多くの人が気がつくのに20年もかかってしまったけど
その利点はほとんどないと多くの人が気がつくのに20年もかかってしまったけど
2024/02/02(金) 00:36:47.62ID:iO9F+zBT
2024/02/02(金) 01:16:00.31ID:fEMhv+T7
コード移植なんてつまらなくて言語差で面倒なだけ
守るべき仕様さえはっきりしてるならゼロから書いたほうが結果的に早くて質も良くて楽しい
守るべき仕様さえはっきりしてるならゼロから書いたほうが結果的に早くて質も良くて楽しい
2024/02/02(金) 01:28:41.76ID:iO9F+zBT
仕様とか契約とか目的とかは未来を予測する根拠としてはイマイチ科学的でない
2024/02/02(金) 01:38:03.89ID:ZFQgO+dm
Linux だとバイナリ互換性もかなり大事にしてる。
(Windows ほどじゃないが。)
仕様として明文化してない挙動に依存するアプリケーションであっても今まで動いていたものが動かなくなるのは良くないという方針。
「守るべき仕様がはっきりしていれば」という前提がなりたたないから困るんだよ。
そしてそれはよくあること。
(Windows ほどじゃないが。)
仕様として明文化してない挙動に依存するアプリケーションであっても今まで動いていたものが動かなくなるのは良くないという方針。
「守るべき仕様がはっきりしていれば」という前提がなりたたないから困るんだよ。
そしてそれはよくあること。
2024/02/02(金) 01:40:32.02ID:fEMhv+T7
ときどき仕様も要件定義もはっきりせず発注者が把握できていないものの言語移植ケースがあるがその仕事を引き受けないほうがいい
バグらしきもの含めて現存コードと同じ動作をするよう求めてくるためムダな面倒に精神力が奪われる
バグらしきもの含めて現存コードと同じ動作をするよう求めてくるためムダな面倒に精神力が奪われる
2024/02/02(金) 11:04:47.16ID:VI0tbigR
仕様さえ守っていればいいみたいな考えに従うと最近はお役所系でもちらほら見るクローム以外を
排除する極右Webサイトが出来上がったりするんだろうな。発注側でも受注側でもね
排除する極右Webサイトが出来上がったりするんだろうな。発注側でも受注側でもね
2024/02/02(金) 11:10:52.47ID:BQKaaqcl
ちゃんと充分な調査費用も出るならやらんでもないけどな。
大きなシステムの一部をリライトする場合には一から作る場合より数倍のコストがかかっても
全体をやり直すよりはマシだから「同じもの」を求めるのはそれなりに合理性がある。
全部をリプレイスするのに前と同じという要求するやつがいたら、
前と同じがいいならそのまま使っとけやという気持ちになる。
大きなシステムの一部をリライトする場合には一から作る場合より数倍のコストがかかっても
全体をやり直すよりはマシだから「同じもの」を求めるのはそれなりに合理性がある。
全部をリプレイスするのに前と同じという要求するやつがいたら、
前と同じがいいならそのまま使っとけやという気持ちになる。
2024/02/02(金) 11:38:15.79ID:cSpiCBqt
C/C++→Rust 安全化とそのデバッグ開発効率化
C/C++以外→Rust 高速化と省メモリ化
これらの恩恵があるため
安全でないことによるバグ発生で困っているならC/C++→Rustを
CPUメモリリソース削減が求められてあるならC/C++以外→Rustを
たとえ同じ仕様のままでもやる意味が生じる
C/C++以外→Rust 高速化と省メモリ化
これらの恩恵があるため
安全でないことによるバグ発生で困っているならC/C++→Rustを
CPUメモリリソース削減が求められてあるならC/C++以外→Rustを
たとえ同じ仕様のままでもやる意味が生じる
2024/02/02(金) 12:27:55.82ID:ndCfDt6c
2024/02/02(金) 13:20:50.14ID:ujySZ5KU
Webアプリ用途でもAxumやActixがフレームワークとして十分使いやすいから、もっとRustは普及していい
73デフォルトの名無しさん
2024/02/02(金) 13:32:21.68ID:gukHO/4I c++ から rust に移すなら、その前に c++ コードのリファクタリングとしてmove使用コードに直すだろうし、
それやったらもうそれで良くね?ってなると思うわな。
それやったらもうそれで良くね?ってなると思うわな。
2024/02/02(金) 15:02:39.89ID:SOk2CQ22
言語移植はそのうちAIがなんとかしてくれるんじゃなかろうか
2024/02/02(金) 17:43:40.65ID:wsXMOW5f
所有権があるから GC 言語からの移行でも安全になる恩恵はあるんだよなぁ。
ほんとエポックメイキングな言語だよ。
ほんとエポックメイキングな言語だよ。
76デフォルトの名無しさん
2024/02/02(金) 19:12:44.91ID:6TGLHO8E rustの最大のメリットは、絶対では無いけどコンパイルさえ通ってれば他人のクソコードに悩まされずに済む点じゃないかね。
77デフォルトの名無しさん
2024/02/02(金) 21:11:58.02ID:K0BmHg5g >>76
なんで悩まされないの?
なんで悩まされないの?
2024/02/02(金) 21:33:43.48ID:ya0nDY0I
Rustでも糞コード見かける
たとえば非常に単純な例でいうと元の部分strを返せば済むのにString作っちゃうなど無駄にヒープ使ってしまうケース
でも見抜きやすく手直しもしやすい
たとえば非常に単純な例でいうと元の部分strを返せば済むのにString作っちゃうなど無駄にヒープ使ってしまうケース
でも見抜きやすく手直しもしやすい
2024/02/02(金) 21:34:56.76ID:ya0nDY0I
Rust以外でよく見かけるのはど
こで書き換わっているかわかりにくく副作用や競合が心配なケース
Rustではデータ競合が起きないしグローバル変数も制限があるためこの手の類には悩まされない
こで書き換わっているかわかりにくく副作用や競合が心配なケース
Rustではデータ競合が起きないしグローバル変数も制限があるためこの手の類には悩まされない
2024/02/02(金) 22:24:30.77ID:BZlEVlBD
メリットが欲しいと思ったことはないな
新しいジャンルで唯一の選択肢なのでメリットの大きさを比較する必要がない
異なるジャンルでは比較する意味がわからない
新しいジャンルで唯一の選択肢なのでメリットの大きさを比較する必要がない
異なるジャンルでは比較する意味がわからない
2024/02/02(金) 22:27:27.20ID:ASeaHMD6
>>78
1周回ってString返したほうが良くなる状況もあるからそんなに単純じゃないよ
1周回ってString返したほうが良くなる状況もあるからそんなに単純じゃないよ
2024/02/02(金) 22:29:00.17ID:ASeaHMD6
>メリットが欲しいと思ったことはないな
誰もメリットが欲しいかどうかについては話してないよw
誰もメリットが欲しいかどうかについては話してないよw
2024/02/02(金) 22:34:00.04ID:ya0nDY0I
2024/02/02(金) 22:36:34.16ID:BZlEVlBD
欲しくないものを供給している可能性を誰も想定していないのか
2024/02/02(金) 22:47:15.09ID:P1ceRtbI
わかりやすいのがstr.trim()かな
前後のスペースを取り除く関数だけど当然Stringではなくstrの一部分を返す
Stringがほしい人はstr.trim().to_string()
前後のスペースを取り除く関数だけど当然Stringではなくstrの一部分を返す
Stringがほしい人はstr.trim().to_string()
2024/02/02(金) 22:52:35.98ID:SRUTe3RO
>>85
欲しい人にもそうでない人にも対応できるように&strがベストとは思わんか?
欲しい人にもそうでない人にも対応できるように&strがベストとは思わんか?
2024/02/02(金) 22:55:20.18ID:P1ceRtbI
2024/02/02(金) 23:19:45.92ID:BZlEVlBD
上書きされる前に別の場所にコピーした方が比較的安全というメリットが消えた
Rustが消した
Rustが消した
2024/02/02(金) 23:26:54.37ID:ya0nDY0I
>>88
Rust以外ではいつ書き換えられたりor解放されたりするかわからないから
安全なプログラミングということで(無駄になる恐れもあるけど)コピーしておく安全策をとることがあった
Rustでは知らぬ間に書き換えられたりor解放されたりすることはないので
安全策を保ったままで無駄なコピーが不要となった
Rust以外ではいつ書き換えられたりor解放されたりするかわからないから
安全なプログラミングということで(無駄になる恐れもあるけど)コピーしておく安全策をとることがあった
Rustでは知らぬ間に書き換えられたりor解放されたりすることはないので
安全策を保ったままで無駄なコピーが不要となった
2024/02/02(金) 23:26:59.82ID:9Dc3A0qD
Stringを使うことで無駄に専有されるヒープメモリはそこまで悪に感じないわ
カーネル作ってるわけでも競技やってるわけでもないんだったらね
可読性のために型を統一させるほうを優先する
カーネル作ってるわけでも競技やってるわけでもないんだったらね
可読性のために型を統一させるほうを優先する
2024/02/02(金) 23:34:55.21ID:v5+jJWMk
2024/02/03(土) 00:06:15.17ID:zqTPQxFe
>>90
そのためにムダにto_string()やそのclone()をするのは間違い
他の言語やスクリプト言語ですらそんな酷いことは行われずにコピーオンライトやインターン化でムダを防いでいる
Rustではまずは&strで行ける範囲は&strで行き次にCow併用そして同じ中身のStringが複数できるならstring_cacheなどでインターン化など
そのためにムダにto_string()やそのclone()をするのは間違い
他の言語やスクリプト言語ですらそんな酷いことは行われずにコピーオンライトやインターン化でムダを防いでいる
Rustではまずは&strで行ける範囲は&strで行き次にCow併用そして同じ中身のStringが複数できるならstring_cacheなどでインターン化など
2024/02/03(土) 00:06:54.99ID:26gTKyDM
C++でもstring_viewとstringは使い分けるぞ
2024/02/03(土) 00:39:47.95ID:x4y7pcy2
&strでいいなら&strで返すのが基本だけどプログラム全体を見たときにStringで返したほうがものすごくコードを単純にできる場合がある
アロケーションコストが全く問題にならない状況であれば&strに固執する必要はない
無駄なヒープアロケーションは増えるけど違う観点の無駄を削減してる
トレードオフだよ
型を統一するって話はよくわからんけど
アロケーションコストが全く問題にならない状況であれば&strに固執する必要はない
無駄なヒープアロケーションは増えるけど違う観点の無駄を削減してる
トレードオフだよ
型を統一するって話はよくわからんけど
2024/02/03(土) 00:41:39.18ID:26gTKyDM
そこ気にしないなら普通にスクリプト言語でも使っとけば良いと思うよ
2024/02/03(土) 00:44:03.79ID:zqTPQxFe
2024/02/03(土) 05:44:40.82ID:/t14gmUC
>>96
そりゃベストはそうだろうけどさ…
c++で言うchar型で良いところをわざわざstdのStringを使うなって話でしょ?
動的メモリ確保になってようがその程度の誤差くらい動けばどっちでもいいわ…
そりゃベストはそうだろうけどさ…
c++で言うchar型で良いところをわざわざstdのStringを使うなって話でしょ?
動的メモリ確保になってようがその程度の誤差くらい動けばどっちでもいいわ…
2024/02/03(土) 06:03:57.16ID:HSW3HPjS
2024/02/03(土) 06:28:46.54ID:zqTPQxFe
100デフォルトの名無しさん
2024/02/03(土) 06:58:55.64ID:SxNvW1DJ こだわりの強い人がおるなあ
101デフォルトの名無しさん
2024/02/03(土) 07:31:56.62ID:0zMBHAmc sliceやstrですむのにVecやStringを使ってしまう人はlifetime parameterを習得できていなくて使えこなせないからだと思うよ
structやfnでlifetime parameterを付けたことのない初心者に多いね
structやfnでlifetime parameterを付けたことのない初心者に多いね
102デフォルトの名無しさん
2024/02/03(土) 07:36:46.05ID:Sa0HPxlU こういうふうに面倒くさい人がRust使いには多いから普及しないんだろうなあ
アルゴリズムとデータ構造の分野からみてもクッソどうでもいい議論だよ
アルゴリズムとデータ構造の分野からみてもクッソどうでもいい議論だよ
103デフォルトの名無しさん
2024/02/03(土) 07:41:20.05ID:0zMBHAmc >>102
アルゴリズムとデータ構造の一番の基本が無駄なコピーをしないこと
アルゴリズムとデータ構造の一番の基本が無駄なコピーをしないこと
104デフォルトの名無しさん
2024/02/03(土) 09:16:17.07ID:EvhZrc0+ strで返せるがあえてStringで返すと良い具体例を出せばいいのではと思った。
105デフォルトの名無しさん
2024/02/03(土) 11:13:51.22ID:26gTKyDM 富豪的プログラミングしたいならrustは向いてないよ
普通にpythonで十分
普通にpythonで十分
106デフォルトの名無しさん
2024/02/03(土) 11:17:22.51ID:3G/0wdmC でもPythonのDjangoは遅くてゴミじゃん
省メモリ最速のWebアプリ作るならRust一択だわ
省メモリ最速のWebアプリ作るならRust一択だわ
107デフォルトの名無しさん
2024/02/03(土) 11:17:53.18ID:JbxU5Bja 例えばsplitみたいなのはstrで返せるけど、それを大量に呼んで受け側でto_stringをつける場合、
コードがto_stringだらけで見づらくなるとかはあるかな
そういう時にsplit_to_stringみたいな名前でString返すようにしたりはするけど
自分の場合、どっちかっていうとパフォーマンス云々より関数名から内部でアロケーションが連想されるかどうかを重視してる気はする
コードがto_stringだらけで見づらくなるとかはあるかな
そういう時にsplit_to_stringみたいな名前でString返すようにしたりはするけど
自分の場合、どっちかっていうとパフォーマンス云々より関数名から内部でアロケーションが連想されるかどうかを重視してる気はする
108デフォルトの名無しさん
2024/02/03(土) 11:24:32.59ID:e0i4PPZm rustでwebアプリなんてコストかかりすぎでは?ふつーにgoかjava/kotlinかc#で作ればいいじゃん
109デフォルトの名無しさん
2024/02/03(土) 11:28:03.29ID:26gTKyDM >>104
ないでしょ
少なくともその関数側で判断できるものではない
帰ってきた文字列をどうするかは使う側が決める
これはrustに限った話ではなくプログラミングのお作法の話
文字列を変更したいという意図で所有権を持った文字列を作りたいならto_ownedすべきだし
そうでないならライフタイムを意識してそのまま使えばよろしい
C/C++でも全く同じ話よ
C++ならstring_viewを返す
そこであえてstringを返す意味はライブラリ提供者側にはない
例えば10000回のループの中でそのような関数が呼ばれたらどうなるか?
恐ろしいことになる
C/C++だと常にそういうことを考えてる
pythonとかだと全部stringだから意識してないのだろうけどさ
本来は意味のないアロケーションであることが多い
ないでしょ
少なくともその関数側で判断できるものではない
帰ってきた文字列をどうするかは使う側が決める
これはrustに限った話ではなくプログラミングのお作法の話
文字列を変更したいという意図で所有権を持った文字列を作りたいならto_ownedすべきだし
そうでないならライフタイムを意識してそのまま使えばよろしい
C/C++でも全く同じ話よ
C++ならstring_viewを返す
そこであえてstringを返す意味はライブラリ提供者側にはない
例えば10000回のループの中でそのような関数が呼ばれたらどうなるか?
恐ろしいことになる
C/C++だと常にそういうことを考えてる
pythonとかだと全部stringだから意識してないのだろうけどさ
本来は意味のないアロケーションであることが多い
110デフォルトの名無しさん
2024/02/03(土) 11:32:33.77ID:XsYnyWq4 >>107
大量であっても&strのままでよいものはString化しない
String化が避けられない場合でも大量ならばイテレータで処理してるはずなので.into()の数は少ないはず
いずれの場合でも関数は&strを返せばすむ
大量であっても&strのままでよいものはString化しない
String化が避けられない場合でも大量ならばイテレータで処理してるはずなので.into()の数は少ないはず
いずれの場合でも関数は&strを返せばすむ
111デフォルトの名無しさん
2024/02/03(土) 11:33:55.72ID:AHA4uyfa 正しいことが必ずしも正義とはならない、とだけ言っとくわ
112デフォルトの名無しさん
2024/02/03(土) 11:36:04.38ID:XsYnyWq4113デフォルトの名無しさん
2024/02/03(土) 11:47:22.41ID:TZcb9n30 rustあんま使ってない人だけど、strはImmutableでstringはMutableなんでしょ?
文字列配列を柔軟に扱いたいときだけstringで色々して、データを受け渡しするときは当然strを使うのがモラルってもんでしょ
immutable_stringはよく知らん
文字列配列を柔軟に扱いたいときだけstringで色々して、データを受け渡しするときは当然strを使うのがモラルってもんでしょ
immutable_stringはよく知らん
114デフォルトの名無しさん
2024/02/03(土) 11:50:08.77ID:3gDommQf 今現在Rustが実際に多く使われてる分野って、スクリプト言語の下まわり、ライブラリ高速化だよね
だからそれはWeb用だと言われたらまぁそう
だからそれはWeb用だと言われたらまぁそう
115デフォルトの名無しさん
2024/02/03(土) 11:51:38.36ID:gN1hlXLs116デフォルトの名無しさん
2024/02/03(土) 11:53:33.66ID:gN1hlXLs 単なるWebサイトの演算処理の補助用途とWebアプリ用途を一緒にしてほしくない
全然違うねん
全然違うねん
117デフォルトの名無しさん
2024/02/03(土) 12:03:32.16ID:XsYnyWq4 >>114>>115
Rustの利用で最も多いのは
Webサーバーサイド・バックエンド・クラウド
https://gihyo.jp/assets/images/article/2022/09/rust-monthly-topics/in_what_technology_domain_is_Rust_used_at_your_company.png
>>116
Webアプリのサーバーサイドとして使われています
Rustの利用で最も多いのは
Webサーバーサイド・バックエンド・クラウド
https://gihyo.jp/assets/images/article/2022/09/rust-monthly-topics/in_what_technology_domain_is_Rust_used_at_your_company.png
>>116
Webアプリのサーバーサイドとして使われています
118デフォルトの名無しさん
2024/02/03(土) 12:09:03.48ID:3gDommQf119デフォルトの名無しさん
2024/02/03(土) 12:13:31.67ID:KLdOqrmk120デフォルトの名無しさん
2024/02/03(土) 12:17:34.02ID:XsYnyWq4 >>118
Rustで何を開発しているか?だからそれら別言語の人は関係ない
PythonやJavaScriptなどのライブラリが最近はRustで書かれることが増えたが
その開発者たちもRust利用者全体から見れば少数
一番多いのはWebのサーバーサイド・バックエンド・クラウド
Rustで何を開発しているか?だからそれら別言語の人は関係ない
PythonやJavaScriptなどのライブラリが最近はRustで書かれることが増えたが
その開発者たちもRust利用者全体から見れば少数
一番多いのはWebのサーバーサイド・バックエンド・クラウド
121デフォルトの名無しさん
2024/02/03(土) 12:35:09.79ID:VMbwu+xF WASMはRustに限らずそんなに大っぴらに普及しないと思う
ゲームエンジンかエンコーダーデコーダーくらいにしか需要がない
GUIとしてのWASMはDOM操作を直接できない時点でゲーム操作用途にしか使えないゴミ、終わっとる
ゲームエンジンかエンコーダーデコーダーくらいにしか需要がない
GUIとしてのWASMはDOM操作を直接できない時点でゲーム操作用途にしか使えないゴミ、終わっとる
122デフォルトの名無しさん
2024/02/03(土) 12:55:06.68ID:S1lIKTmM wasmは触ってみりゃ分かるけどjavascriptの演算処理を単にrustで書いてコンパイルしてみると、rustのstdがバイナリに同梱されるせいで移植前のスクリプト状態よりファイルサイズが増加するんだよね
wasmテキスト形式で書くかstdレスなrustで書かなくちゃ本末転倒になる
まあファイルサイズが増加してでも演算処理を高速化したいならいいんだろうけど俺は吐いた
wasmテキスト形式で書くかstdレスなrustで書かなくちゃ本末転倒になる
まあファイルサイズが増加してでも演算処理を高速化したいならいいんだろうけど俺は吐いた
123デフォルトの名無しさん
2024/02/03(土) 13:12:09.54ID:py1fYTT7124デフォルトの名無しさん
2024/02/03(土) 13:17:12.24ID:5inMqUOs125デフォルトの名無しさん
2024/02/03(土) 13:45:54.96ID:KLdOqrmk WASIはモバイルOSあるいはデスクトップOS業界がどう動くかだね
wasmerみたいなWASIランタイムをOSが標準装備してくれるなら、WASIの注目度が上がるし、OSに依らないアプリを手軽に作れる
特にモバイルOSではランタイム同梱によるアプリの肥大化を阻止できる
WASIは今のままではJVMのようにマルチプラットフォームなランタイムの上で動くアプリでしかないから、どっかの有名なプラットフォームが積極的に土台として採用しないと忘れ去られる
UnityでもAndroidでもどこでもいい
wasmerみたいなWASIランタイムをOSが標準装備してくれるなら、WASIの注目度が上がるし、OSに依らないアプリを手軽に作れる
特にモバイルOSではランタイム同梱によるアプリの肥大化を阻止できる
WASIは今のままではJVMのようにマルチプラットフォームなランタイムの上で動くアプリでしかないから、どっかの有名なプラットフォームが積極的に土台として採用しないと忘れ去られる
UnityでもAndroidでもどこでもいい
126デフォルトの名無しさん
2024/02/03(土) 14:00:52.18ID:KLdOqrmk まあ数日前にWASI 0.2.0の仕様が確定したばっかだから時期尚早と言われればそのとおりなんだが
WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現
https://www.publickey1.jp/blog/24/webassemblywasi_preview_2os.html
WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現
https://www.publickey1.jp/blog/24/webassemblywasi_preview_2os.html
127デフォルトの名無しさん
2024/02/03(土) 14:54:43.97ID:Xm89AN74 wasm,wasiはコンテナ界隈とかも期待はしてるようだけど確かにまだ早い。
128デフォルトの名無しさん
2024/02/03(土) 15:14:19.35ID:nibYeb0/ あ、俺みたいに用意されたものを使う的な人間の場合ね。
129デフォルトの名無しさん
2024/02/03(土) 15:32:51.57ID:8/wI1v6d 重さが気になるほどの人気サイト作ってから言えよな。。クソしょーもねーわ。
130デフォルトの名無しさん
2024/02/03(土) 18:14:49.92ID:X6BgdPzu wasmはブラウザでffmpeg動かすときに使ったことある
131デフォルトの名無しさん
2024/02/03(土) 20:39:34.60ID:em0HMTKL rustはもっとC#みたいなクラスの書き方が出来れば最高なのになー
132デフォルトの名無しさん
2024/02/03(土) 20:58:14.42ID:JrVgBiwL >>131
クラスはプログラミング言語の歴史では大失敗作と言われていて
モダンな新言語(Rust, Go, Zig, Nim, etc.)ではいずれもクラスを排除している
既存のクラスのある言語でもカプセル化以外のクラスの機能は使わずにインターフェース等を使うことが推奨されている
Rustのtraitはその中でも最も優れたものなのでRustで困ることはないよ
クラスはプログラミング言語の歴史では大失敗作と言われていて
モダンな新言語(Rust, Go, Zig, Nim, etc.)ではいずれもクラスを排除している
既存のクラスのある言語でもカプセル化以外のクラスの機能は使わずにインターフェース等を使うことが推奨されている
Rustのtraitはその中でも最も優れたものなのでRustで困ることはないよ
133デフォルトの名無しさん
2024/02/03(土) 21:06:51.84ID:93RdYvh2 Rustはtraitのドキュメント見た時に
とっ散らかって見えるんだよなぁ
とっ散らかって見えるんだよなぁ
134デフォルトの名無しさん
2024/02/03(土) 21:20:55.82ID:Uoo5j+2b 何事もタダでは手に入らない
良い面だけしか見ない人はいつまで経っても素人
良い面だけしか見ない人はいつまで経っても素人
135デフォルトの名無しさん
2024/02/03(土) 21:29:31.74ID:W4j87Z5e 本当にいいの?僕は…黒人だよ?
136デフォルトの名無しさん
2024/02/03(土) 22:04:08.76ID:OoEMTWx+ クラス排除はJavaの生みの親ですら主張しているほどプログラミング言語界での共通認識
>以前Javaのユーザグループミーティングに出席した際、James Gosling(Javaの生みの親)がメインの講演者として招かれていました。
>すばらしいQ&Aセッションの途中に、こんな質問が出ました。
>「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」
>答えは「クラスを除外するでしょうね」というものでした。
>笑いが静まった後、彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。
>インターフェースによる継承(implementsの関係)のほうが望ましいのです。
>できる限り実装継承は避けたほうがよいでしょう。
>以前Javaのユーザグループミーティングに出席した際、James Gosling(Javaの生みの親)がメインの講演者として招かれていました。
>すばらしいQ&Aセッションの途中に、こんな質問が出ました。
>「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」
>答えは「クラスを除外するでしょうね」というものでした。
>笑いが静まった後、彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。
>インターフェースによる継承(implementsの関係)のほうが望ましいのです。
>できる限り実装継承は避けたほうがよいでしょう。
137デフォルトの名無しさん
2024/02/03(土) 23:17:23.21ID:g7D12qls クラスを排除した代わりにRustでは実装継承の実現に4種類もの異なる方法が導入されている
もちろんGoでもNimでもクラスとは違う形で実装継承が実現されている
にもかかわらず物事の表面しか見ない人はそれに気づけないし今でも実装継承が絶対悪だと信じて疑わない
これが所謂バカの壁
もちろんGoでもNimでもクラスとは違う形で実装継承が実現されている
にもかかわらず物事の表面しか見ない人はそれに気づけないし今でも実装継承が絶対悪だと信じて疑わない
これが所謂バカの壁
138デフォルトの名無しさん
2024/02/03(土) 23:26:38.80ID:9NPgrYKr139デフォルトの名無しさん
2024/02/03(土) 23:35:45.23ID:EvhZrc0+ クラスが悪いのか継承とかの機能が悪いのか
140デフォルトの名無しさん
2024/02/03(土) 23:45:39.46ID:1FnNRIIs 大雑把に クラス=カプセル化+実装継承
よくないのは実装継承
カプセル化だけなら構造体の範囲内
つまり実装継承を伴うクラス自体が要らないというのがモダン言語
よくないのは実装継承
カプセル化だけなら構造体の範囲内
つまり実装継承を伴うクラス自体が要らないというのがモダン言語
141デフォルトの名無しさん
2024/02/04(日) 00:25:24.84ID:gRgK5+vi Kotlinのsealed interfaceはマジで超使いやすい
142デフォルトの名無しさん
2024/02/04(日) 00:27:54.98ID:woXOEkq4 Rocketってフレームワーク試してみたんだけどこれホストを127.0.0.1以外にできないんかな
なんかハードコーディングでlocalhost指定になってる気がしないでもない
なんかハードコーディングでlocalhost指定になってる気がしないでもない
143デフォルトの名無しさん
2024/02/04(日) 00:33:31.21ID:iIxOCdCp そのRocketというフレームワークは使ったことないが、GitHubレポジトリで「127.0.0.1」で検索したら、
https://github.com/search?q=repo%3Arwf2%2FRocket%20127.0.0.1&type=code
exampleでなんか設定ファイルでadressを指定してるけどこれは違うの?
https://github.com/rwf2/Rocket/blob/master/examples/config/Rocket.toml
繰り返すがRocketというフレームワークは使ったことないので悪しからず
https://github.com/search?q=repo%3Arwf2%2FRocket%20127.0.0.1&type=code
exampleでなんか設定ファイルでadressを指定してるけどこれは違うの?
https://github.com/rwf2/Rocket/blob/master/examples/config/Rocket.toml
繰り返すがRocketというフレームワークは使ったことないので悪しからず
144デフォルトの名無しさん
2024/02/04(日) 00:59:56.12ID:woXOEkq4 その辺grep置換で全部置き換えたけどダメだった
core\lib\src\listener\endpoint.rs にある
Endpoint::Tcp(TcpAddr::new(Ipv4Addr::LOCALHOST.into(), 8000))
がそれっぽくはあるけどどう書き換えたもんか
core\lib\src\listener\endpoint.rs にある
Endpoint::Tcp(TcpAddr::new(Ipv4Addr::LOCALHOST.into(), 8000))
がそれっぽくはあるけどどう書き換えたもんか
145デフォルトの名無しさん
2024/02/04(日) 02:04:25.32ID:1c78Jpm9 https://rocket.rs/v0.5/guide/configuration/
読んだ感じだとRocket.tomlって設定ファイルで指定するのが簡単みたい
下の方にプログラムで設定する方法も書いてあるけど
こういうフレームワーク系はプロキシサーバーの裏側で動かすのが理想かもしれない
読んだ感じだとRocket.tomlって設定ファイルで指定するのが簡単みたい
下の方にプログラムで設定する方法も書いてあるけど
こういうフレームワーク系はプロキシサーバーの裏側で動かすのが理想かもしれない
146デフォルトの名無しさん
2024/02/04(日) 03:52:57.49ID:58NiwoAK Rustを書けるようになると、C/C++でも行儀よく実装できるようになるから
するとドキュメントの充実しているC/ C++でいいかとなりそう
するとドキュメントの充実しているC/ C++でいいかとなりそう
147デフォルトの名無しさん
2024/02/04(日) 05:28:12.54ID:Qwt1SmMN >>105
Python信者か? 富豪プログラミングでもRustの方が書きやすいが
Python信者か? 富豪プログラミングでもRustの方が書きやすいが
148デフォルトの名無しさん
2024/02/04(日) 07:20:12.68ID:IOFBpciC 動的型付けのPythonは論外でプログラミングには向いておらずスクリプトを書く程度に使う言語
静的型付けの言語の中では過去の様々な問題点を踏まえて洗練された設計となっているRustがプログラミングに最適
>>146
それはない
例えば今では必須な非同期プログラミングでもC++は出遅れていて使いにくいだけでなくRustのtokioに相当する基盤もない
静的型付けの言語の中では過去の様々な問題点を踏まえて洗練された設計となっているRustがプログラミングに最適
>>146
それはない
例えば今では必須な非同期プログラミングでもC++は出遅れていて使いにくいだけでなくRustのtokioに相当する基盤もない
149デフォルトの名無しさん
2024/02/04(日) 08:23:06.79ID:Iky4lKs4 >>146
ドキュメントの数は多いけど、自動生成もない時代のが多くてソースコードと乖離してたり
古いLinuxディストリ前提だったりして役に立たない率がめちゃ高いんだよな
ドキュメンテーションテストとかdocs.rsとかそういう仕組がちゃんとしてるのに慣れると
わざわざ古代の遺物的なのを発掘しに行く気にはなれない
ドキュメントの数は多いけど、自動生成もない時代のが多くてソースコードと乖離してたり
古いLinuxディストリ前提だったりして役に立たない率がめちゃ高いんだよな
ドキュメンテーションテストとかdocs.rsとかそういう仕組がちゃんとしてるのに慣れると
わざわざ古代の遺物的なのを発掘しに行く気にはなれない
150デフォルトの名無しさん
2024/02/04(日) 08:29:53.11ID:qR3d7cra Cは構わないけど、C++はあり得ない
絶対に二度と触りたくないし、積極的に見たくもない
絶対に二度と触りたくないし、積極的に見たくもない
151デフォルトの名無しさん
2024/02/04(日) 08:46:56.47ID:gRgK5+vi Cにdeferが来たら、もうC++を触らなくてよくなるんだ🥰
…C23でのdeferの実装、見送られたけどね
…C23でのdeferの実装、見送られたけどね
152デフォルトの名無しさん
2024/02/04(日) 09:04:42.24ID:gRgK5+vi ああ、zigを本番環境で使いたいなあ
153デフォルトの名無しさん
2024/02/04(日) 10:02:40.29ID:woXOEkq4154デフォルトの名無しさん
2024/02/04(日) 10:56:28.64ID:Iky4lKs4 >>153
これでなんの問題もなく動いたけど…
#[launch]
fn rocket() -> _ {
let config = rocket::Config {
port: 7777,
address: std::net::Ipv4Addr::new(0, 0, 0, 0).into(),
..rocket::Config::default()
};
rocket::custom(&config).mount("/", routes![index])
}
これでなんの問題もなく動いたけど…
#[launch]
fn rocket() -> _ {
let config = rocket::Config {
port: 7777,
address: std::net::Ipv4Addr::new(0, 0, 0, 0).into(),
..rocket::Config::default()
};
rocket::custom(&config).mount("/", routes![index])
}
155デフォルトの名無しさん
2024/02/04(日) 11:21:21.48ID:lyxub88e156デフォルトの名無しさん
2024/02/04(日) 11:36:41.94ID:BT7dzCU3 >>153
rocketを使う理由が特にあるわけではないならば
一番ダウンロード数も多くRustで本流のaxumを使うといいよ
https://github.com/tokio-rs/axum
このURLを見てもわかるようにtokio開発チームが直接手掛けているWebアプリフレームワーク
rocketを使う理由が特にあるわけではないならば
一番ダウンロード数も多くRustで本流のaxumを使うといいよ
https://github.com/tokio-rs/axum
このURLを見てもわかるようにtokio開発チームが直接手掛けているWebアプリフレームワーク
157デフォルトの名無しさん
2024/02/04(日) 12:24:56.19ID:RfkvOVf2158デフォルトの名無しさん
2024/02/04(日) 12:55:23.59ID:twXVw8X/ >>157
前にも書いたけど例えばPythonのDjangoは遅い
PythonがRustに勝ってる点はローコストでコーディングできる、それのみ
学習コスト、開発時間などを投資できるならRustのようなlow-levelな言語を用いた製品のほうがコンピュータに優しいのは既知の事実
前にも書いたけど例えばPythonのDjangoは遅い
PythonがRustに勝ってる点はローコストでコーディングできる、それのみ
学習コスト、開発時間などを投資できるならRustのようなlow-levelな言語を用いた製品のほうがコンピュータに優しいのは既知の事実
159デフォルトの名無しさん
2024/02/04(日) 13:07:03.82ID:BT7dzCU3 >>157
Pythonでプログラミングを実際にすればわかるけど
ある程度の大きさのものを作るには開発デバッグ効率が非常に悪いね
数ある諸言語と比べてもPythonのメリットは普及していること以外には何も無いかと
Pythonでプログラミングを実際にすればわかるけど
ある程度の大きさのものを作るには開発デバッグ効率が非常に悪いね
数ある諸言語と比べてもPythonのメリットは普及していること以外には何も無いかと
160デフォルトの名無しさん
2024/02/04(日) 13:22:50.87ID:RfkvOVf2161デフォルトの名無しさん
2024/02/04(日) 13:45:38.68ID:gf/EWl58 インタプリタ言語はプログラミングに値しないってか?流石に言いすぎだぞ
うちの小学生の子どもにScratchをプログラミング学習として遊ばせてるけど、そのScratchもれっきとしたプログラミング言語だし
うちの小学生の子どもにScratchをプログラミング学習として遊ばせてるけど、そのScratchもれっきとしたプログラミング言語だし
162デフォルトの名無しさん
2024/02/04(日) 13:54:00.15ID:qLwuX6da >>147
メモリ管理をランタイムに任せることを富豪的プログラミングというのでは?書き易さなんて単に個人の言語の習得度の差でしかない
メモリ管理をランタイムに任せることを富豪的プログラミングというのでは?書き易さなんて単に個人の言語の習得度の差でしかない
163デフォルトの名無しさん
2024/02/04(日) 14:07:26.71ID:vIcGZtFX お前のDjangoは遅い?ならサーバーのスペックを10倍にしろやゴラァ
ってのが富豪的プログラミングの理念ね
ってのが富豪的プログラミングの理念ね
164デフォルトの名無しさん
2024/02/04(日) 16:31:03.43ID:ZDSbtwdo Rustと比べるとPythonはプログラミングに向いていない
スクリプト程度ではなく普通にある程度の規模があるプログラムを対象とする
スクリプト程度ではなく普通にある程度の規模があるプログラムを対象とする
165デフォルトの名無しさん
2024/02/04(日) 16:54:18.26ID:lyxub88e 特定領域の話と一般論をごっちゃにしてるやつ多いな。
166デフォルトの名無しさん
2024/02/04(日) 16:54:55.07ID:RSs6aSR/ 実際にPythonで書くと実行時デバッグがどうしても多くなるね
後から機能追加したりリファクタリングしたりする時も再び実行時デバッグに陥りやすいね
その点Rustは静的型付けであるだけでなくデータ競合もコンパイル時点で防いでくれるから優れているね
後から機能追加したりリファクタリングしたりする時も再び実行時デバッグに陥りやすいね
その点Rustは静的型付けであるだけでなくデータ競合もコンパイル時点で防いでくれるから優れているね
167デフォルトの名無しさん
2024/02/04(日) 16:55:36.99ID:3vZBpwTn >>162
文脈的に文字列を無駄にヒープに置いただけで富豪扱いなんだよな
あと習熟度に依存するのはそれはそうなんだけど、Pythonに習熟した人間ほどRustの方が書きやすいという傾向がある気がする
少なくとも俺の身の回りではそう
文脈的に文字列を無駄にヒープに置いただけで富豪扱いなんだよな
あと習熟度に依存するのはそれはそうなんだけど、Pythonに習熟した人間ほどRustの方が書きやすいという傾向がある気がする
少なくとも俺の身の回りではそう
168デフォルトの名無しさん
2024/02/04(日) 17:00:11.71ID:p+8ZNFQ1 書きやすかろうが何だろうがユーザ数が全てやろ
Rustは流行ってない それだけは確か
Rustは流行ってない それだけは確か
169デフォルトの名無しさん
2024/02/04(日) 17:01:42.98ID:3vZBpwTn ユーザー数が全てはまあそれはそう
170デフォルトの名無しさん
2024/02/04(日) 17:06:47.57ID:ktccjMxJ そこは単純な話だろう
PythonとRustの両方をそこそこ使いこなせる人たちに
どちらの言語でも開発可能な領域の案件をどちらで開発したいか尋ねる
100%の人たちがRustで開発したいと答える
つまりPythonは劣った言語
PythonとRustの両方をそこそこ使いこなせる人たちに
どちらの言語でも開発可能な領域の案件をどちらで開発したいか尋ねる
100%の人たちがRustで開発したいと答える
つまりPythonは劣った言語
171デフォルトの名無しさん
2024/02/04(日) 17:07:47.85ID:3vZBpwTn Pythonにも確かに良い所があって、Qiitaの記事が多いから入門が簡単
172デフォルトの名無しさん
2024/02/04(日) 17:11:51.24ID:p+8ZNFQ1 そもそもお前らの勘違いはpythonを取り上げてること
寧ろ比較するというかライバルはJavaScriptだぞ
バックグラウンドや速度求められる所でも使われてる
実際にJavaScriptは以外とは失礼かもだけど高速だしな
寧ろ比較するというかライバルはJavaScriptだぞ
バックグラウンドや速度求められる所でも使われてる
実際にJavaScriptは以外とは失礼かもだけど高速だしな
173デフォルトの名無しさん
2024/02/04(日) 17:14:25.77ID:RfkvOVf2 >>172
ライバルがJavaScript()
ライバルがJavaScript()
174デフォルトの名無しさん
2024/02/04(日) 17:15:47.77ID:p+8ZNFQ1 >>170
何でワザと複雑化させるの?
ユーザ数って言う最もシンプルなので良い
いざ開発で人集めたらRust出来る人が居ませんでした
居ても単価がバカ高い人でした
pythonならこちらが選び放題で報酬も安く済みます
どう考えてもpython優位だよね
言語が劣ってるとか優秀とか関係無い
目的のシステムが短期間で安く作れるかどうか
でもってそれが出来るのが優秀な言語
何でワザと複雑化させるの?
ユーザ数って言う最もシンプルなので良い
いざ開発で人集めたらRust出来る人が居ませんでした
居ても単価がバカ高い人でした
pythonならこちらが選び放題で報酬も安く済みます
どう考えてもpython優位だよね
言語が劣ってるとか優秀とか関係無い
目的のシステムが短期間で安く作れるかどうか
でもってそれが出来るのが優秀な言語
175デフォルトの名無しさん
2024/02/04(日) 17:20:38.23ID:ktccjMxJ >>172
バックエンドではJavaScriptは遅い
フロントエンドのDOMアクセスはJavaScriptでしかできないため使わざるをえない
DOMアクセスを頻繁に伴わない処理ならばWasmが圧倒的に速くJavaScriptは遅い
バックエンドではJavaScriptは遅い
フロントエンドのDOMアクセスはJavaScriptでしかできないため使わざるをえない
DOMアクセスを頻繁に伴わない処理ならばWasmが圧倒的に速くJavaScriptは遅い
176デフォルトの名無しさん
2024/02/04(日) 17:26:06.18ID:ZDSbtwdo177デフォルトの名無しさん
2024/02/04(日) 17:32:07.47ID:3vZBpwTn 単価の話し始めたらまだPythonよりJavaの方が優位そう
178デフォルトの名無しさん
2024/02/04(日) 17:33:28.37ID:p+8ZNFQ1 >>176
両方というかRustのユーザ数が少ないから人が集まらないって話してるのにバカなのかなw
両方というかRustのユーザ数が少ないから人が集まらないって話してるのにバカなのかなw
179デフォルトの名無しさん
2024/02/04(日) 17:35:51.36ID:3vZBpwTn 目的の設定からコーティングまで自分でやらないといけない局面があって、そういう時に良いんだよな。Rust。
仕事が定型化されていたり、専門知識が要らなかったりして外注出来るならJavaで良さそう
仕事が定型化されていたり、専門知識が要らなかったりして外注出来るならJavaで良さそう
180デフォルトの名無しさん
2024/02/04(日) 17:44:55.37ID:kqDQxPDl 開発保守効率の良さ Rust>Python
実行速度や省メモリ Rust>Python
この状況でPythonの方が優れてると主張してるやつはスレ荒らししたいだけだろうからここから出ていきなさい
専用スレへどうぞ
Rustアンチスレ
https://mevius.5ch.net/test/read.cgi/tech/1509028624/
実行速度や省メモリ Rust>Python
この状況でPythonの方が優れてると主張してるやつはスレ荒らししたいだけだろうからここから出ていきなさい
専用スレへどうぞ
Rustアンチスレ
https://mevius.5ch.net/test/read.cgi/tech/1509028624/
181デフォルトの名無しさん
2024/02/04(日) 18:05:48.16ID:gRgK5+vi ユーザー数が全てと言うならJavaが最強って話をしたくなってくる
182デフォルトの名無しさん
2024/02/04(日) 18:27:51.72ID:p+8ZNFQ1 そういう話じゃ無いんだよなぁ
Rust使いたいなら流行らせてユーザ数増やすしか無い
他の言語と比較して云々を語る暇があるならライブラリ作って充実させて流行らせる努力すれば良い
Rust使いたいなら流行らせてユーザ数増やすしか無い
他の言語と比較して云々を語る暇があるならライブラリ作って充実させて流行らせる努力すれば良い
183デフォルトの名無しさん
2024/02/04(日) 18:38:38.86ID:JoIfCUOf >>180
分野によって変わるし一概にそうとは言えんよ
例えば機械学習の分野でRustを使うメリットはゼロ
開発保守性に関しても速度的にも利便性的にもツールチェインの連携にしても
今や汎用言語は以前に比べると遥かに有用性は低くなってる
だからrustが流行り切らないのだと分析してる
一昔前なら一斉に移ってたと思うよ
分野によって変わるし一概にそうとは言えんよ
例えば機械学習の分野でRustを使うメリットはゼロ
開発保守性に関しても速度的にも利便性的にもツールチェインの連携にしても
今や汎用言語は以前に比べると遥かに有用性は低くなってる
だからrustが流行り切らないのだと分析してる
一昔前なら一斉に移ってたと思うよ
184デフォルトの名無しさん
2024/02/04(日) 18:55:04.87ID:h39TGQDK185デフォルトの名無しさん
2024/02/04(日) 18:55:55.93ID:gRgK5+vi186デフォルトの名無しさん
2024/02/04(日) 18:59:22.83ID:gRgK5+vi libtorchとかてんさーふろーの実装の話ならオープンソースを見ればわかるがC/C++やで
演算処理がメイン機能なんだから当たり前だよね
演算処理がメイン機能なんだから当たり前だよね
187デフォルトの名無しさん
2024/02/04(日) 19:01:58.80ID:gRgK5+vi Rustはサーバー系、組み込み系が用途なのに、
Pythonのが優秀だのなんだの言うのいい加減に鬱陶しいぞ
Pythonのが優秀だのなんだの言うのいい加減に鬱陶しいぞ
188デフォルトの名無しさん
2024/02/04(日) 19:04:22.03ID:woXOEkq4 Pythonとか他の言語が分かれば数時間の勉強であとか感覚で読み書きできる言語だけど
Rustはそうはいかんと思うし
優れた言語と手軽に習得できる言語って比べても仕方ないと思う
Rustはそうはいかんと思うし
優れた言語と手軽に習得できる言語って比べても仕方ないと思う
189デフォルトの名無しさん
2024/02/04(日) 19:13:30.94ID:gRgK5+vi 言い方が悪かったかな
Pythonはさ、演算結果を得るために使うものであって、サーバーや組み込みのような常時駆動するようなものには向かないんですよ
考えてみなよ、お手軽さを求めるときは大抵は結果を求めたいときだろ?
numpyの行列計算がお手軽で便利~ってのと一緒だろ?
Pythonはさ、演算結果を得るために使うものであって、サーバーや組み込みのような常時駆動するようなものには向かないんですよ
考えてみなよ、お手軽さを求めるときは大抵は結果を求めたいときだろ?
numpyの行列計算がお手軽で便利~ってのと一緒だろ?
190デフォルトの名無しさん
2024/02/04(日) 19:17:47.24ID:JoIfCUOf >>184
それを言えばpytorchのラッパーがrustにあるから同じ存在だよ
それを言えばpytorchのラッパーがrustにあるから同じ存在だよ
191デフォルトの名無しさん
2024/02/04(日) 19:18:07.74ID:VbPJH2i6 Pythonにキレててクカ
192デフォルトの名無しさん
2024/02/04(日) 19:18:31.47ID:JoIfCUOf >>189
じゃあrustじゃなくCで良いって話になるけど
じゃあrustじゃなくCで良いって話になるけど
193デフォルトの名無しさん
2024/02/04(日) 19:24:46.98ID:gRgK5+vi >>192
俺、1度目もRustじゃないとダメだとか言ったか?
俺の意見はちゃんとサーバー、組み込みに適した言語、Java、Kotlin(大好き)、C#、Go、C、C++(きらい)、Rust、Zig(流行ってほしい)を使えってこと
PythonやRubyをサーバーや組み込みに使ってほしくない
俺、1度目もRustじゃないとダメだとか言ったか?
俺の意見はちゃんとサーバー、組み込みに適した言語、Java、Kotlin(大好き)、C#、Go、C、C++(きらい)、Rust、Zig(流行ってほしい)を使えってこと
PythonやRubyをサーバーや組み込みに使ってほしくない
194デフォルトの名無しさん
2024/02/04(日) 19:30:56.06ID:gRgK5+vi あと機械学習の話が出てきたから追加で言うけど、演算処理するなら、極力オーバーヘッドを減らしたいわけで、ガべコレなんていう敵はいないほうがいいわけだから、C/C++/Rustを実装言語に使う
俺ら末端ユーザーが演算処理装置の実装なんてする機会がないからどうでもいい話だけど
俺ら末端ユーザーが演算処理装置の実装なんてする機会がないからどうでもいい話だけど
195デフォルトの名無しさん
2024/02/04(日) 19:37:05.95ID:3vZBpwTn 機械学習でガベコレが気になるってかなりアプリケーションよりっぽい感じがするな
実装コストとかより推論速度が重要という人間が出てきたのを見ると、機械学習もここまで来たんだなあって感慨深くなる
実装コストとかより推論速度が重要という人間が出てきたのを見ると、機械学習もここまで来たんだなあって感慨深くなる
196デフォルトの名無しさん
2024/02/04(日) 19:42:57.90ID:ccceg+j6 pythonの使われ方は1番にデータサイエンスとして、2番にプログラミング学習のお手本言語として、3番にシェルスクリプトの代替として。
実装言語としては使われてないよ。
実装言語としては使われてないよ。
197デフォルトの名無しさん
2024/02/04(日) 19:46:45.59ID:gRgK5+vi >>195
逆に聞きたいんだけど、ただ単に線形代数の計算がしたいだけなのに、ガべコレいるの?
逆に聞きたいんだけど、ただ単に線形代数の計算がしたいだけなのに、ガべコレいるの?
198デフォルトの名無しさん
2024/02/04(日) 19:49:37.34ID:gRgK5+vi 昔からあるeigen使っても機械学習できるし
199デフォルトの名無しさん
2024/02/04(日) 19:53:25.16ID:woXOEkq4 言語として普及させるならやっぱ母数的にはまずWebのバックエンドだろうけど
それならそれでフルスタックフレームワーク欲しいところなんだよなあ
MoonZoonってのがヒットするけどあんまドキュメントが充実してないな
それならそれでフルスタックフレームワーク欲しいところなんだよなあ
MoonZoonってのがヒットするけどあんまドキュメントが充実してないな
200デフォルトの名無しさん
2024/02/04(日) 19:54:33.10ID:3vZBpwTn >>197
いるかいらないかで言えばいらないけど、実行時間のほとんどは線形代数演算だからガベコレの時間は誤差だし、高速化したいならモデルをチューニングする方がはるかに効果が大きいので誰もガベコレなんか気にしていないという時代が長かった印象
いるかいらないかで言えばいらないけど、実行時間のほとんどは線形代数演算だからガベコレの時間は誤差だし、高速化したいならモデルをチューニングする方がはるかに効果が大きいので誰もガベコレなんか気にしていないという時代が長かった印象
201デフォルトの名無しさん
2024/02/04(日) 19:55:05.28ID:JoIfCUOf いつのまにか実装言語の話に流れてるけど
そういう議論はしてないからな
そういう議論はしてないからな
202デフォルトの名無しさん
2024/02/04(日) 19:55:34.23ID:yS+PPAz5 ここはRustのスレです
開発プログラミング言語として劣っているPythonの話題は他所でしてください
開発プログラミング言語として劣っているPythonの話題は他所でしてください
203デフォルトの名無しさん
2024/02/04(日) 19:56:07.95ID:JoIfCUOf 機械学習で得たモデルを組み込みデバイスで使いたいってことなんじゃない?
それもう機械学習を終えて、ただのアプリの設計と実装な気がするけど笑
それもう機械学習を終えて、ただのアプリの設計と実装な気がするけど笑
204デフォルトの名無しさん
2024/02/04(日) 19:59:28.23ID:JoIfCUOf どれもダメ
pythonに勝てる理由にはなってない
実装言語の話をしたいならC/C++で良いし現状そうなってる事実は覆らない
速度だけ欲しいならrustはいらない
pythonに勝てる理由にはなってない
実装言語の話をしたいならC/C++で良いし現状そうなってる事実は覆らない
速度だけ欲しいならrustはいらない
205デフォルトの名無しさん
2024/02/04(日) 20:00:34.78ID:gRgK5+vi206デフォルトの名無しさん
2024/02/04(日) 20:02:02.46ID:gRgK5+vi207デフォルトの名無しさん
2024/02/04(日) 20:03:49.73ID:woXOEkq4 MoonZoonってfront/backを一括で開発するBlazorみたいな感じか
https://github.com/MoonZoon/MoonZoon
https://zenn.dev/etoal83/articles/2de0fcde17cc01
https://github.com/MoonZoon/MoonZoon
https://zenn.dev/etoal83/articles/2de0fcde17cc01
208デフォルトの名無しさん
2024/02/04(日) 20:06:59.78ID:uCVo+TKx >>206
じゃあこういう視点から聞くが下回りがrustの機械学習ライブラリはありますか?
じゃあこういう視点から聞くが下回りがrustの機械学習ライブラリはありますか?
209デフォルトの名無しさん
2024/02/04(日) 20:11:29.25ID:gRgK5+vi >>204
Rustを組み込み業界が推してる理由はセキュリティ、メモリ安全の観点でRustがC/C++より優秀っていう理由
実際にカーネルはRustにマイグレーションされはじめてるでしょ
Rustがサーバー用途で使われだしてるのはtokio等のRustライブラリ、Webフレームワークが優秀なおかげでJavaのSpringBootのような有名どころに機能面でそこまで劣らず使えて、省メモリ高速に使えるから
Rustを組み込み業界が推してる理由はセキュリティ、メモリ安全の観点でRustがC/C++より優秀っていう理由
実際にカーネルはRustにマイグレーションされはじめてるでしょ
Rustがサーバー用途で使われだしてるのはtokio等のRustライブラリ、Webフレームワークが優秀なおかげでJavaのSpringBootのような有名どころに機能面でそこまで劣らず使えて、省メモリ高速に使えるから
210デフォルトの名無しさん
2024/02/04(日) 20:16:35.93ID:woXOEkq4 >>209
そういやJVM使うから同じゲーム動かすにしてもAndroidはiPhoneよりメモリとかのハード要件上がるとか言われてたな
そういやJVM使うから同じゲーム動かすにしてもAndroidはiPhoneよりメモリとかのハード要件上がるとか言われてたな
211デフォルトの名無しさん
2024/02/04(日) 20:16:54.38ID:JoIfCUOf >>209
少なくとも下回り使う分にはそのような要求は必要ないと思うが
rustであってもunsafeだらけになるよ
非同期ライブラリに関してはpythonもasyncioというtokioに勝るとも劣らないつよつよライブラリがある
よってその点でも不足はない
Webフレームワークに関しては言わずもがな
少なくとも下回り使う分にはそのような要求は必要ないと思うが
rustであってもunsafeだらけになるよ
非同期ライブラリに関してはpythonもasyncioというtokioに勝るとも劣らないつよつよライブラリがある
よってその点でも不足はない
Webフレームワークに関しては言わずもがな
212デフォルトの名無しさん
2024/02/04(日) 20:17:19.77ID:gRgK5+vi >>208
だからなんでそんなにデータサイエンスの話をしたがるの?
ライブラリ?libtorchのrustラッパーでコード書いてコンパイルすりゃいいだけやんか頭悪すぎでは?
機械学習は演算処理して類似度を求める作業なんだからコンパイルなんて手間かけずにスクリプト言語でやったほうが手軽だろうが
長時間動作させたいサーバーや組み込みとはわけが違う
インタプリタ言語とコンパイル言語の使い分けもできないの?
だからなんでそんなにデータサイエンスの話をしたがるの?
ライブラリ?libtorchのrustラッパーでコード書いてコンパイルすりゃいいだけやんか頭悪すぎでは?
機械学習は演算処理して類似度を求める作業なんだからコンパイルなんて手間かけずにスクリプト言語でやったほうが手軽だろうが
長時間動作させたいサーバーや組み込みとはわけが違う
インタプリタ言語とコンパイル言語の使い分けもできないの?
213デフォルトの名無しさん
2024/02/04(日) 20:22:45.50ID:woXOEkq4 負けず嫌いが多いのか知らんが相手にするから居付くんやで
214デフォルトの名無しさん
2024/02/04(日) 20:24:07.63ID:gRgK5+vi215デフォルトの名無しさん
2024/02/04(日) 20:24:27.23ID:JoIfCUOf >>212
いやそもそもの議論の出発点が「機械学習においてはpythonがrustより優れている」というところだからでしょ
いやそもそもの議論の出発点が「機械学習においてはpythonがrustより優れている」というところだからでしょ
216デフォルトの名無しさん
2024/02/04(日) 20:28:31.70ID:gRgK5+vi >>215
機械学習はプログラミングじゃないとは言わないがデータサイエンスの分野だよ(2回目)
だから「機械学習においてPythonがRustより優れてる」がそもそもおかしい
Rustはデータサイエンスをやる言語ではない
機械学習はプログラミングじゃないとは言わないがデータサイエンスの分野だよ(2回目)
だから「機械学習においてPythonがRustより優れてる」がそもそもおかしい
Rustはデータサイエンスをやる言語ではない
217デフォルトの名無しさん
2024/02/04(日) 20:28:47.77ID:tlFdYVQb >>208
【機械学習 by Rust】
・autumnai/leaf — Open Machine Intelligence framework.. Abandoned project. The most updated fork is spearow/juice.
・burn - A Flexible and Comprehensive Deep Learning Framework in Rust.
・coreylowman/dfdx — CUDA accelearted machine learning framework that leverages many of Rust's unique features. Crates.io
・huggingface/candle - a minimalist ML framework with a focus on easiness of use and on performance (including GPU support)
・huggingface/tokenizers - Hugging Face's tokenizers for modern NLP pipelines written in Rust (original implementation) with bindings for Python. Build Status
・LaurentMazare/tch-rs — Rust language bindings for PyTorch.
・maciejkula/rustlearn — Machine learning crate for Rust. Circle CI
・rust-ml/linfa — Machine learning framework.
・smartcorelib/smartcore — Machine Learning Library In Rust Build Status
・tensorflow/rust — Rust language bindings for TensorFlow.
【機械学習 by Rust】
・autumnai/leaf — Open Machine Intelligence framework.. Abandoned project. The most updated fork is spearow/juice.
・burn - A Flexible and Comprehensive Deep Learning Framework in Rust.
・coreylowman/dfdx — CUDA accelearted machine learning framework that leverages many of Rust's unique features. Crates.io
・huggingface/candle - a minimalist ML framework with a focus on easiness of use and on performance (including GPU support)
・huggingface/tokenizers - Hugging Face's tokenizers for modern NLP pipelines written in Rust (original implementation) with bindings for Python. Build Status
・LaurentMazare/tch-rs — Rust language bindings for PyTorch.
・maciejkula/rustlearn — Machine learning crate for Rust. Circle CI
・rust-ml/linfa — Machine learning framework.
・smartcorelib/smartcore — Machine Learning Library In Rust Build Status
・tensorflow/rust — Rust language bindings for TensorFlow.
218デフォルトの名無しさん
2024/02/04(日) 20:31:39.88ID:JoIfCUOf219デフォルトの名無しさん
2024/02/04(日) 20:32:36.67ID:JoIfCUOf220デフォルトの名無しさん
2024/02/04(日) 20:33:09.36ID:gRgK5+vi >>219
違います、数学です
違います、数学です
221デフォルトの名無しさん
2024/02/04(日) 20:34:08.77ID:woXOEkq4 データサイエンスやるならPythonよりJuliaの方がいいな
222デフォルトの名無しさん
2024/02/04(日) 20:34:15.03ID:JoIfCUOf 結局論破できないんか
じゃあ絡んでくるなよ
機械学習においてはpythonに負けていますでいいだろ
そしてそれはrustがダメということにはならん
何と戦ってるのか
じゃあ絡んでくるなよ
機械学習においてはpythonに負けていますでいいだろ
そしてそれはrustがダメということにはならん
何と戦ってるのか
223デフォルトの名無しさん
2024/02/04(日) 20:36:35.51ID:gRgK5+vi >>222
機械学習の論文読んだことある?プログラミングなんてどうでもいいことは「~のPCスペックでPytorchを用いて実装しました」くらいしか書かれないぞ
機械学習の論文読んだことある?プログラミングなんてどうでもいいことは「~のPCスペックでPytorchを用いて実装しました」くらいしか書かれないぞ
224デフォルトの名無しさん
2024/02/04(日) 20:36:58.01ID:tlFdYVQb225デフォルトの名無しさん
2024/02/04(日) 20:37:34.97ID:JoIfCUOf >>223
いやそれは今関係ないでしょ
いやそれは今関係ないでしょ
226デフォルトの名無しさん
2024/02/04(日) 20:39:06.92ID:gRgK5+vi >>225
機械学習は理論が大事ということを語る上で関係大アリなんだが…
機械学習は理論が大事ということを語る上で関係大アリなんだが…
227デフォルトの名無しさん
2024/02/04(日) 20:41:07.00ID:wL3YnJ62 元々学生の勉強用としてPythonが利用されてて、
その学生が勉強の一環で機械学習したことで機械学習用のライブラリが増えた
その過去の資産(遺産?)の上に乗っかって今のAIブームがあるだけ
言語的な優位なんてものはPythonになくて
ただライブラリが充実してるだけの話
その学生が勉強の一環で機械学習したことで機械学習用のライブラリが増えた
その過去の資産(遺産?)の上に乗っかって今のAIブームがあるだけ
言語的な優位なんてものはPythonになくて
ただライブラリが充実してるだけの話
228デフォルトの名無しさん
2024/02/04(日) 20:46:55.32ID:7/eIVGRy 機械学習なら†darknet†だよね
229デフォルトの名無しさん
2024/02/04(日) 20:48:06.01ID:tlFdYVQb Rustで機械学習はRustだけで完結できるアドバンテージもありあります
新たに出て来て必要となる実装ライブラリもRustだけ習得すれば作れます
新たに出て来て必要となる実装ライブラリもRustだけ習得すれば作れます
230デフォルトの名無しさん
2024/02/04(日) 20:56:21.39ID:gRgK5+vi うーん、機械学習する上で必須となる行列演算ライブラリの実装の話こそRustでやるかやらないかで盛り上がるところなのに、なぜ頑なに機械学習自体を取り上げて話をしてきたのか
理解不能だ
理解不能だ
231デフォルトの名無しさん
2024/02/04(日) 21:15:10.60ID:woXOEkq4 そういやJuliaだと行列演算言語単位でサポートしてたな
232デフォルトの名無しさん
2024/02/04(日) 21:22:05.81ID:wL3YnJ62 そもそもの話になるけども
なんでPythonが教育目的で使われたのかって話になる
Pythonはキレイに書くことを強制されるってのもあるけど
電池内蔵とか言われるぐらい標準ライブラリが充実していた
だから学習に利用されやすかった
行列計算も然り
結局ライブラリが充実してたって話に帰結するよ
尤もライブラリの大半はCで書かれてるがね
なんでPythonが教育目的で使われたのかって話になる
Pythonはキレイに書くことを強制されるってのもあるけど
電池内蔵とか言われるぐらい標準ライブラリが充実していた
だから学習に利用されやすかった
行列計算も然り
結局ライブラリが充実してたって話に帰結するよ
尤もライブラリの大半はCで書かれてるがね
233デフォルトの名無しさん
2024/02/04(日) 21:24:14.42ID:wL3YnJ62 ちなみにnumpyの開発者も大学生だったんじゃないかな
とにかく欧米の学生はPythonで勉強してたから
Pythonのライブラリは大学生が作ったものが多いよ
とにかく欧米の学生はPythonで勉強してたから
Pythonのライブラリは大学生が作ったものが多いよ
234デフォルトの名無しさん
2024/02/04(日) 21:33:51.15ID:7hkEeikC その昔は perl もライブラリが豊富といわれていたんだがな
perl, ruby, python の中ではオフサイドルールがある分だけ
python の方がプログラムがごちゃごちゃになりにくい
もっとも今となっては自動フォーマッターがあるので
どれで書いてもあまり変わらないが
perl, ruby, python の中ではオフサイドルールがある分だけ
python の方がプログラムがごちゃごちゃになりにくい
もっとも今となっては自動フォーマッターがあるので
どれで書いてもあまり変わらないが
235デフォルトの名無しさん
2024/02/04(日) 21:44:00.36ID:MUvkIiW8236デフォルトの名無しさん
2024/02/04(日) 22:16:24.24ID:3vZBpwTn Rustはプログラム言語の王なのでRustスレではどの言語の話をしても良い
237デフォルトの名無しさん
2024/02/04(日) 22:24:24.75ID:gRgK5+vi 他の言語を知ることでRustの良し悪しが分かる、他の言語を学ぶことは巡り回ってRustの勉強になるって寸法よ
もちろんRustの文法やフレームワークの話題や議論があればそちらを優先すべきね
もちろんRustの文法やフレームワークの話題や議論があればそちらを優先すべきね
238デフォルトの名無しさん
2024/02/04(日) 23:02:06.01ID:FrLSpZU4 Rustが『いま』流行ってなくても、Rustの協賛企業らが『無理やり』流行らすから5-10年後には日本でもサーバーサイドにRustを使う企業が増えている
20年後にはLinuxカーネルのRust化がほぼ完了してるだろうよ
20年後にはLinuxカーネルのRust化がほぼ完了してるだろうよ
239デフォルトの名無しさん
2024/02/04(日) 23:16:12.06ID:woXOEkq4 結局相手にするヤツがいるから居付くわけで
240デフォルトの名無しさん
2024/02/04(日) 23:21:49.89ID:MUvkIiW8241デフォルトの名無しさん
2024/02/04(日) 23:24:52.22ID:X8VPJ+Rl rustとpythonではなく、tomlとpythonを比較すればいい
スクリプトを追放するたんびにマークアップ言語が増える歴史が繰り返される
スクリプトを追放するたんびにマークアップ言語が増える歴史が繰り返される
242デフォルトの名無しさん
2024/02/04(日) 23:32:42.46ID:srfzNHU5 >>239
相手にしなかったら自演して自分に安価つけ始めるけどな
相手にしなかったら自演して自分に安価つけ始めるけどな
243デフォルトの名無しさん
2024/02/04(日) 23:55:39.05ID:gRgK5+vi >>241
tomlはマークアップ言語じゃなくてデータ記述言語
スクリプトうんぬんは知らんが、シリアライズ効率のより良いデータ記述言語を求めるのはいい事だよ
自分のところはjson+gzipで落ち着いてるけど、goでよく使われるprotobufにいずれ移行できればなって考えてる
tomlはマークアップ言語じゃなくてデータ記述言語
スクリプトうんぬんは知らんが、シリアライズ効率のより良いデータ記述言語を求めるのはいい事だよ
自分のところはjson+gzipで落ち着いてるけど、goでよく使われるprotobufにいずれ移行できればなって考えてる
244デフォルトの名無しさん
2024/02/05(月) 00:06:05.32ID:xY09uWcV >>230
数値演算ライブラリはC言語で十分な気がする。理由を言語化するのは難しいけど
数値演算ライブラリはC言語で十分な気がする。理由を言語化するのは難しいけど
245デフォルトの名無しさん
2024/02/05(月) 00:06:28.07ID:8h9X84j9 オッやっとるな
246デフォルトの名無しさん
2024/02/05(月) 00:06:30.26ID:8h9X84j9 オッやっとるな
247デフォルトの名無しさん
2024/02/05(月) 00:11:45.07ID:qpTlAoHG 一番向いてるのはミドルウェアとか少数のガチ勢が作ったらいいような部分なんだよな。
だから普及はしない。
だから普及はしない。
248デフォルトの名無しさん
2024/02/05(月) 00:14:26.70ID:Uc3vGql0 >>244
並列処理まわりの仕様をよく検討した上でRustかCかC++のどれを選択するべきとは思うな
並列処理まわりの仕様をよく検討した上でRustかCかC++のどれを選択するべきとは思うな
249デフォルトの名無しさん
2024/02/05(月) 00:18:35.26ID:qpTlAoHG アルゴリズム周りなんて共有のオンパレードなのにrustが向いてると思ってるのはちょっと素人感がすごいね。
250デフォルトの名無しさん
2024/02/05(月) 00:25:50.11ID:Uc3vGql0 日本語おかしくなった
並列処理まわりの仕様をよく検討した上でRust、C、C++のうちどれを使うか選ぶべき
個人的には並列処理の安全性の面でRustを使うべきだと思う
並列処理まわりの仕様をよく検討した上でRust、C、C++のうちどれを使うか選ぶべき
個人的には並列処理の安全性の面でRustを使うべきだと思う
251デフォルトの名無しさん
2024/02/05(月) 00:31:12.78ID:Uc3vGql0 まあ実情は演算処理にCUDAを使うだろうからC++で全部設計したほうが都合がいいのかな
難しい
難しい
252デフォルトの名無しさん
2024/02/05(月) 00:39:33.82ID:xSwz3MFP 並列処理?tokioの出番だな
253デフォルトの名無しさん
2024/02/05(月) 00:52:01.28ID:i8NFM5TB 機械学習はPython?Rust?いやいや争わずに両方使えばいいじゃん。
Rustを使って機械学習アルゴリズムを実装しPythonから呼び出す: k-meansクラスタリング
https://zenn.dev/skwbc/articles/rust_python_kmeans
Rustを使って機械学習アルゴリズムを実装しPythonから呼び出す: k-meansクラスタリング
https://zenn.dev/skwbc/articles/rust_python_kmeans
254デフォルトの名無しさん
2024/02/05(月) 00:57:54.10ID:Ml8drJRq 機械学習だの演算処理だの、いつまでそんなつまらない話をしてるの?
rustはゴミってことで結論が出てるんだけど
rustはゴミってことで結論が出てるんだけど
255デフォルトの名無しさん
2024/02/05(月) 01:03:32.12ID:l3kMSpNc 荒らしに構うキチガイを追い出したいね
ID:gRgK5+vi → ID:Uc3vGql0 (違ったらごめんね)
ID:gRgK5+vi → ID:Uc3vGql0 (違ったらごめんね)
256デフォルトの名無しさん
2024/02/05(月) 01:04:43.04ID:4uXpM/Ax >>253
わざわざ生でunsafeなコードを書かなくてもPyO3とか使えば楽にできるよ
わざわざ生でunsafeなコードを書かなくてもPyO3とか使えば楽にできるよ
257デフォルトの名無しさん
2024/02/05(月) 03:14:48.13ID:6VJ4TLXv >>243
Protocol Buffers古いし、MessagePack(古い)やCBORのほうがいいんじゃない? 使ったことないけど。
Protocol Buffers古いし、MessagePack(古い)やCBORのほうがいいんじゃない? 使ったことないけど。
258デフォルトの名無しさん
2024/02/05(月) 03:40:05.05ID:d3c/QlU3 Protocol buffersは仕様変更に強いしフォーマットを別ファイルに定義出来るという特徴があるから、msgpackやcbor とは使うべきケースが違いそう
259デフォルトの名無しさん
2024/02/05(月) 06:01:25.37ID:ip7v+BR3 >>247
もちろん少人数ガチ勢による開発もRustが向いてるのはおっしゃる通りだけど
大人数による開発もRust向いてるでしょう
特にC++で次から次に穴の発生が尽きない各大規模プロジェクトたちは作り直しや新規ならRust一択だね
もちろん少人数ガチ勢による開発もRustが向いてるのはおっしゃる通りだけど
大人数による開発もRust向いてるでしょう
特にC++で次から次に穴の発生が尽きない各大規模プロジェクトたちは作り直しや新規ならRust一択だね
260デフォルトの名無しさん
2024/02/05(月) 06:45:17.21ID:bXI/bbyn261デフォルトの名無しさん
2024/02/05(月) 06:55:14.99ID:qjaRN2nq >>253
どうでもいいがこの記事では非同期処理ライブラリにtokioじゃなくてrayonを使ってるんだな
気になってぐぐったら「rayonのスレッド プールは、CPU を集中的に使用する作業、つまり大規模なデータ セットの大規模な並列処理向けに設計されています。」らしい
https://www.reddit.com/r/rust/comments/xec77k/rayon_or_tokio_for_heavy_filesystem_io_workloads/
どうでもいいがこの記事では非同期処理ライブラリにtokioじゃなくてrayonを使ってるんだな
気になってぐぐったら「rayonのスレッド プールは、CPU を集中的に使用する作業、つまり大規模なデータ セットの大規模な並列処理向けに設計されています。」らしい
https://www.reddit.com/r/rust/comments/xec77k/rayon_or_tokio_for_heavy_filesystem_io_workloads/
262デフォルトの名無しさん
2024/02/05(月) 07:04:12.02ID:ip7v+BR3263デフォルトの名無しさん
2024/02/05(月) 08:21:40.19ID:kahA1Glb >>227
なら言語的に優れていてPythonライブラリを使えるNim最強だな。
なら言語的に優れていてPythonライブラリを使えるNim最強だな。
264デフォルトの名無しさん
2024/02/05(月) 08:36:20.41ID:ip7v+BR3 Rust⇔PythonはPyO3で相互に呼び出せるのでRustだけあれば十分
265デフォルトの名無しさん
2024/02/05(月) 09:57:56.35ID:3fgxGQeI 他の言語スレに乗り込んできて居座るとかやってる事ルビガイジとなんら変わらんっていう
266デフォルトの名無しさん
2024/02/05(月) 12:16:47.03ID:Uc3vGql0 >>263
Nimは速いしCへのトランスパイルも賛否あれど個人的には好き
Nimは速いしCへのトランスパイルも賛否あれど個人的には好き
267デフォルトの名無しさん
2024/02/05(月) 12:56:18.45ID:WdhGREbJ268デフォルトの名無しさん
2024/02/05(月) 13:02:02.94ID:WdhGREbJ >>266
同意
同意
269デフォルトの名無しさん
2024/02/05(月) 22:28:07.58ID:UHwE0rib >>259
もう5年くらいこんなこと言ってる人いるけど一向に普及してないよね。
もう5年くらいこんなこと言ってる人いるけど一向に普及してないよね。
270デフォルトの名無しさん
2024/02/05(月) 22:40:04.70ID:5g9amV19 >>269
カーネルのRustへのマイグレーションの成果が各所で出てるの知らない?
カーネルのRustへのマイグレーションの成果が各所で出てるの知らない?
271デフォルトの名無しさん
2024/02/05(月) 22:49:23.20ID:dxOzlQzX >>269
AWS SDKにRustが正式登場して、色んなところがRustを触りだしてるぞ
AWS SDKにRustが正式登場して、色んなところがRustを触りだしてるぞ
272デフォルトの名無しさん
2024/02/05(月) 23:29:16.62ID:bm3rzOD2 AWSやCloudflareが大規模に使ってるからインターネットのトラフィックの結構な分量をRustが捌いてるはず
この5年でこういう人目には触れないけど基礎的な部分にずいぶん普及したよ
この5年でこういう人目には触れないけど基礎的な部分にずいぶん普及したよ
273デフォルトの名無しさん
2024/02/06(火) 00:09:13.25ID:gR/xoQQt Rust のユーザ規模はもはや小さくはないが仮に小さかったとしても、それが無用のものということを意味するわけではない。
Cobol や Fortran だって一般には化石のような印象を持たれつつも近年にも規格改定などの発展はあるし、それが求められる程度の利用シーンはある。
Lisp がインフラの中に潜んでいたりするし、Caml で書かれたプログラムがあなたがたのパソコンにインストールされていたりするのもそれなりに高い確率でありうる。
普及するっていうのはそれを不必要なところにまで押し付けたいわけじゃないだろう。
Cobol や Fortran だって一般には化石のような印象を持たれつつも近年にも規格改定などの発展はあるし、それが求められる程度の利用シーンはある。
Lisp がインフラの中に潜んでいたりするし、Caml で書かれたプログラムがあなたがたのパソコンにインストールされていたりするのもそれなりに高い確率でありうる。
普及するっていうのはそれを不必要なところにまで押し付けたいわけじゃないだろう。
274デフォルトの名無しさん
2024/02/06(火) 00:25:40.67ID:oam+zbbU 物を作ってから普及するまでの時間で評価されれば
まだ作ってない物を売るようになったり、評価を信じなくなったりする
まだ作ってない物を売るようになったり、評価を信じなくなったりする
275デフォルトの名無しさん
2024/02/06(火) 00:35:44.14ID:QhlaBKsr276デフォルトの名無しさん
2024/02/06(火) 00:39:31.81ID:OWeq/GHS277デフォルトの名無しさん
2024/02/06(火) 01:36:56.00ID:bbDh9Fvv278デフォルトの名無しさん
2024/02/06(火) 08:02:11.78ID:TiTcC6K4 >>275
javascriptでただの同期functionだったものが非同期のasync awaitに変わった経緯がある
同期functionだとブラウザから呼び出した時に待ち状態がフリーズみたいになって不便だった
javascriptでただの同期functionだったものが非同期のasync awaitに変わった経緯がある
同期functionだとブラウザから呼び出した時に待ち状態がフリーズみたいになって不便だった
279デフォルトの名無しさん
2024/02/06(火) 08:41:24.69ID:Lhg6cl8R >>275
それはキミの非同期処理に関する知識が欠如してるだけ
それはキミの非同期処理に関する知識が欠如してるだけ
280デフォルトの名無しさん
2024/02/06(火) 10:42:58.91ID:rmP9tpon まあわざわざライブラリ側で非同期にしなくても、必要ならユーザーが勝手に非同期にすればいいってのはあるかもな
281デフォルトの名無しさん
2024/02/06(火) 11:02:01.98ID:viYUZILO お前らはawait禁止縛りでもしてるの?
282デフォルトの名無しさん
2024/02/06(火) 11:12:37.31ID:tyBWuvJT tokioの非同期って
async fn、spawn、async、await
を最低限使えればなんも不自由なくね?
同期じゃないといけない理由あんの?
async fn、spawn、async、await
を最低限使えればなんも不自由なくね?
同期じゃないといけない理由あんの?
283デフォルトの名無しさん
2024/02/06(火) 11:17:49.52ID:gR/xoQQt 同期的に使うだけの場合でも tokio をリンクするってのが気分よくないというのはわかる。
284デフォルトの名無しさん
2024/02/06(火) 11:19:55.73ID:g9hJ5hPW285デフォルトの名無しさん
2024/02/06(火) 11:23:28.54ID:YZW9kbIH AWS SDKを同期的に使いたいってそれAWS CLIじゃだめなん?w
286デフォルトの名無しさん
2024/02/06(火) 11:25:05.20ID:BOUvQi0K >>280
そこの今まで独自にそれぞれが用意してた部分を async await 等のAPIとして整理されたことに意義があるんと思う。
そこの今まで独自にそれぞれが用意してた部分を async await 等のAPIとして整理されたことに意義があるんと思う。
287デフォルトの名無しさん
2024/02/06(火) 11:26:18.87ID:J68o5uRN AWS CLIはcargo installで入ってこないから……
288デフォルトの名無しさん
2024/02/06(火) 11:28:28.70ID:DRX9b4l9 そもそもRustを使う意味がないよね
AWS SDK for Pythonがあるんだから
AWS SDK for Pythonがあるんだから
289デフォルトの名無しさん
2024/02/06(火) 11:28:33.03ID:J68o5uRN >>286
async awaitへの統合に意義があるのはわかるけど、tokioにまで限定されるのはダルイという気持ちがある
async awaitへの統合に意義があるのはわかるけど、tokioにまで限定されるのはダルイという気持ちがある
290デフォルトの名無しさん
2024/02/06(火) 11:33:54.88ID:GPQIFWbx291デフォルトの名無しさん
2024/02/06(火) 11:35:59.00ID:J68o5uRN >>290
説教的に支援って資金的な支援じゃなくてAWSがtokioの営業することだったのか……
説教的に支援って資金的な支援じゃなくてAWSがtokioの営業することだったのか……
292デフォルトの名無しさん
2024/02/06(火) 11:38:49.18ID:GPQIFWbx あ、AWSがtokioを運営してんのか
単なるスポンサーだと思ってた
単なるスポンサーだと思ってた
293デフォルトの名無しさん
2024/02/06(火) 11:40:13.71ID:J68o5uRN マジか
294デフォルトの名無しさん
2024/02/06(火) 11:42:17.61ID:4dmbx6OY 説教的な支援は5chの担当
295デフォルトの名無しさん
2024/02/06(火) 11:42:20.07ID:4dmbx6OY 説教的な支援は5chの担当
296デフォルトの名無しさん
2024/02/06(火) 11:53:48.52ID:9gL8Mjmo Rustで非同期やるライブラリって昔からたくさんあるけど最近はtokioしか使ってないや
すごく重い処理があるプロジェクトはtokioとrayonで使い分けてるけどそれでも両方のライブラリをプロジェクトで共存させてる
すごく重い処理があるプロジェクトはtokioとrayonで使い分けてるけどそれでも両方のライブラリをプロジェクトで共存させてる
297デフォルトの名無しさん
2024/02/06(火) 12:09:35.30ID:eJTRS9Cw 非同期と言いつつ出来てない奴って8割いるよね
298デフォルトの名無しさん
2024/02/06(火) 13:54:11.58ID:oam+zbbU 非同期のそのデメリットを消す方法は
まだ作ってないことにしよう
まだ作ってないことにしよう
299デフォルトの名無しさん
2024/02/06(火) 14:05:46.01ID:QhlaBKsr >>277
まずAWSのAPIってのは基本的にすぐ返ってるの
この辺はわかる?
例えばインスタンスを作るAPIってのはインスタンスを作り終わるまでブロックするんじゃなくてインスタンス生成命令を出してすぐに返ってくるわけ
実際にインスタンスが生成完了したかはインスタンスの状態取得APIを使って確認するわけ
だから常に同期的に呼び出しで問題ないの
pythonのboto3ってライブラリが1番使いやすい
まずAWSのAPIってのは基本的にすぐ返ってるの
この辺はわかる?
例えばインスタンスを作るAPIってのはインスタンスを作り終わるまでブロックするんじゃなくてインスタンス生成命令を出してすぐに返ってくるわけ
実際にインスタンスが生成完了したかはインスタンスの状態取得APIを使って確認するわけ
だから常に同期的に呼び出しで問題ないの
pythonのboto3ってライブラリが1番使いやすい
300デフォルトの名無しさん
2024/02/06(火) 14:08:10.63ID:9MgF8+tA Boto3、あんま補完されなくて馬鹿にはキツい
301デフォルトの名無しさん
2024/02/06(火) 14:39:52.97ID:HfVCyUAp >>299
AWSが鯖落ちしてたらどーすんの?
AWSが鯖落ちしてたらどーすんの?
302デフォルトの名無しさん
2024/02/06(火) 14:47:03.29ID:bbDh9Fvv303デフォルトの名無しさん
2024/02/06(火) 14:52:06.28ID:QhlaBKsr304デフォルトの名無しさん
2024/02/06(火) 14:59:31.38ID:bbDh9Fvv305デフォルトの名無しさん
2024/02/06(火) 15:05:27.46ID:eJTRS9Cw AWSのSDKは.NETのが1番だな
306デフォルトの名無しさん
2024/02/06(火) 16:38:39.75ID:m1uPeMIU307デフォルトの名無しさん
2024/02/06(火) 16:55:31.82ID:/Z6uowCt308デフォルトの名無しさん
2024/02/06(火) 17:04:11.45ID:/Z6uowCt >>306
どう書くか?はユーザーのユースケースによるからそうとも言えないよ
例えばAzureのCLIは--no-waitというオプションがあり
処理が成功するまで待つか待たないかを決められる
これこそユーザー視点の設計だよ
どう書くか?はユーザーのユースケースによるからそうとも言えないよ
例えばAzureのCLIは--no-waitというオプションがあり
処理が成功するまで待つか待たないかを決められる
これこそユーザー視点の設計だよ
309デフォルトの名無しさん
2024/02/06(火) 17:08:06.92ID:8tVnzyvy Google規模の会社が$1 million渡したくらいでわざわざアナウンスするなよな
タイトル詐欺じゃん
Improving Interoperability Between Rust and C++
https://security.googleblog.com/2024/02/improving-interoperability-between-rust-and-c.html
タイトル詐欺じゃん
Improving Interoperability Between Rust and C++
https://security.googleblog.com/2024/02/improving-interoperability-between-rust-and-c.html
310デフォルトの名無しさん
2024/02/06(火) 17:08:19.95ID:/Z6uowCt 非同期を押し付けることはユーザーのメリットにはならない
Rust SDKは作り直して欲しい
Rust SDKは作り直して欲しい
311デフォルトの名無しさん
2024/02/06(火) 17:21:49.29ID:HJO9dxnA prostもblocking版の関数ないのかよってびっくりした記憶があるわ
C#版もPython版もasyncとblockingの両方あるのにな
C#版もPython版もasyncとblockingの両方あるのにな
312デフォルトの名無しさん
2024/02/06(火) 17:23:58.68ID:pGyPKkef >>299
>>まずAWSのAPIってのは基本的にすぐ返ってるの
>>この辺はわかる?
初心者でもそんなウソはつかないぞ
AWSに限らず任意のサービスに言えるが通信時間がかかる
さらに各サービス内で状態取得だけであっても実行時間がかかる
>>だから常に同期的に呼び出しで問題ないの
本気で言ってる?
通信時間と向こうでの実行時間の間こちらはずっと何もせずに待つわけ?
非同期プログラミングの意味すら理解できていてないのか?
>>まずAWSのAPIってのは基本的にすぐ返ってるの
>>この辺はわかる?
初心者でもそんなウソはつかないぞ
AWSに限らず任意のサービスに言えるが通信時間がかかる
さらに各サービス内で状態取得だけであっても実行時間がかかる
>>だから常に同期的に呼び出しで問題ないの
本気で言ってる?
通信時間と向こうでの実行時間の間こちらはずっと何もせずに待つわけ?
非同期プログラミングの意味すら理解できていてないのか?
313デフォルトの名無しさん
2024/02/06(火) 17:27:07.44ID:eJTRS9Cw >>312
コンピューターにとって1秒待つって事がどれだけ長いかを理解してないんだろ
コンピューターにとって1秒待つって事がどれだけ長いかを理解してないんだろ
314デフォルトの名無しさん
2024/02/06(火) 17:28:50.84ID:2AaBK8OM 非同期の方が良いことが多いのは同意するが、非同期を押し付けられると「こんなプログラムのためにTokio入れるのかよ」って思ってしまうケースは存在する
315デフォルトの名無しさん
2024/02/06(火) 17:48:41.35ID:Izyc/wZS API が非同期で設計されてるのに、それを呼び出す側もさらに非同期でハンドリングするのは正直無駄じゃない?
ってのはわりと自然な感想だと思うけどな。
AWS の API なんてクライアント側で並列に呼び出したいユースケースも無いだろ。
バカスカ叩いてもスロットリングされるだけだし。
ってのはわりと自然な感想だと思うけどな。
AWS の API なんてクライアント側で並列に呼び出したいユースケースも無いだろ。
バカスカ叩いてもスロットリングされるだけだし。
316デフォルトの名無しさん
2024/02/06(火) 18:00:53.30ID:eyCZAgqI317デフォルトの名無しさん
2024/02/06(火) 18:18:54.67ID:w99V6zNl それな
無関係ではないけど分けて考えないと
無関係ではないけど分けて考えないと
318デフォルトの名無しさん
2024/02/06(火) 18:33:39.13ID:nmitk2Uo >>308
非同期APIが提供されてれば同期化は簡単にできるから必要ないんだよ
非同期APIが提供されてれば同期化は簡単にできるから必要ないんだよ
319デフォルトの名無しさん
2024/02/06(火) 18:36:16.19ID:2AaBK8OM 同期化ってasyncでない関数から呼べるようにするって解釈で合ってるだろうか
もしそうだとしたらasyncでない関数の中でtokioランタイム作ってawsよんでruntime終わらせるみたいな処理になっちゃわないか
もしそうだとしたらasyncでない関数の中でtokioランタイム作ってawsよんでruntime終わらせるみたいな処理になっちゃわないか
320デフォルトの名無しさん
2024/02/06(火) 19:56:13.91ID:kbEH5D0U AWSの同期的APIの機能リクエストあるのね
https://github.com/awslabs/aws-sdk-rust/issues/505
https://github.com/awslabs/aws-sdk-rust/issues/505
321デフォルトの名無しさん
2024/02/06(火) 20:03:24.75ID:Dpp0fICO AWSのAPIの呼び出しが非同期になるのはAPIの内部で効率化のために非同期処理をやってるからでしょ?
322デフォルトの名無しさん
2024/02/06(火) 20:17:12.09ID:7oKTbIPT うちはAWS SDK RustはAxumベースのWebアプリでDynamoDB接続に使ってるけど、みんなはなににAWS SDK使ってるん?
323デフォルトの名無しさん
2024/02/06(火) 20:38:04.56ID:NQvIuvVx324デフォルトの名無しさん
2024/02/06(火) 20:44:38.46ID:NQvIuvVx AWS APIを生のRESTで実装してみろよ
すぐわかるぞ
すぐわかるぞ
325デフォルトの名無しさん
2024/02/06(火) 20:45:53.99ID:NQvIuvVx 言っておくが俺は一般論として非同期がダメと言ってるわけじゃないぞ
もちろんその用途としての方が便利なことは多い
あくまでAWS SDKのRust版については不満があるということよ
もちろんその用途としての方が便利なことは多い
あくまでAWS SDKのRust版については不満があるということよ
326デフォルトの名無しさん
2024/02/06(火) 20:50:46.76ID:dKDdJveN327デフォルトの名無しさん
2024/02/06(火) 20:50:52.38ID:2AaBK8OM このスレにはRust関連の悪い所の指摘を見ると自分が全否定されたように怒り出す人間がいるっぽいので
328デフォルトの名無しさん
2024/02/06(火) 20:57:52.50ID:NQvIuvVx tokioが素晴らしいのは間違いない
しかし今回のREST APIの呼び出しで程度で必要かな?と思う
非同期が必要ならtokio::process::commandでCLIを非同期で呼ぶ方が良くないか?とか色々考えてしまう
しかし今回のREST APIの呼び出しで程度で必要かな?と思う
非同期が必要ならtokio::process::commandでCLIを非同期で呼ぶ方が良くないか?とか色々考えてしまう
329デフォルトの名無しさん
2024/02/06(火) 21:04:51.51ID:pGyPKkef330デフォルトの名無しさん
2024/02/06(火) 21:08:56.44ID:rmP9tpon Web通信ですぐ返ってくることなんかあるのか? と思ったけど、AWSのAIPの中身知らんから何とも言えんくなってしまった
そういえばファイルIOはすぐ返ってくるって言って良いんだろうか
そういえばファイルIOはすぐ返ってくるって言って良いんだろうか
331デフォルトの名無しさん
2024/02/06(火) 21:12:11.34ID:NQvIuvVx >>330
サイズが小さいファイルに対して非同期呼び出しをするか?という話
サイズが小さいファイルに対して非同期呼び出しをするか?という話
332デフォルトの名無しさん
2024/02/06(火) 21:14:41.84ID:rmP9tpon >>331
まあ「ファイルIOにTokioが必要です」って言われたらちょっと嫌な気分になるな
まあ「ファイルIOにTokioが必要です」って言われたらちょっと嫌な気分になるな
333デフォルトの名無しさん
2024/02/06(火) 21:15:39.21ID:pGyPKkef334デフォルトの名無しさん
2024/02/06(火) 21:56:45.71ID:Z39zy7L3335デフォルトの名無しさん
2024/02/06(火) 22:05:59.23ID:wkt5OFgc336デフォルトの名無しさん
2024/02/06(火) 22:13:28.77ID:IqTcjswh 他のSDKのようにv3くらいになれば使いやすくなってるかもね
337デフォルトの名無しさん
2024/02/06(火) 22:16:42.98ID:GPQIFWbx aws sdk for rust ってwebフレームワークでサーバーサイドやってる人向けだから当然のようにみんなtokioを既に組み込んでるもんじゃないの?なにがそんなに気に入らないのか理解ができない
まあtokio以外の非同期ランタイムを使わせろって人はドンマイだけど
まあtokio以外の非同期ランタイムを使わせろって人はドンマイだけど
338デフォルトの名無しさん
2024/02/06(火) 22:17:52.75ID:GPQIFWbx 「rustのwebフレームワーク」が抜けてた
339デフォルトの名無しさん
2024/02/06(火) 22:21:16.54ID:1nslx8NY >>337
そういう話じゃないけど
そういう話じゃないけど
340デフォルトの名無しさん
2024/02/06(火) 22:24:12.00ID:DARHuXMe341デフォルトの名無しさん
2024/02/06(火) 22:24:15.12ID:UMLcFsAo いくらすぐ返ってくるっていってもネットワーク通信なんだから
不通だったりレイテンシが長くなることはありうるし、
タイムアウトやリトライをtokioのエコシステムに乗っかってやれるメリットはあると思うけどな
そりゃ軽量な同期版があるに越したことはないけど、優先順位は落ちるだろう
不通だったりレイテンシが長くなることはありうるし、
タイムアウトやリトライをtokioのエコシステムに乗っかってやれるメリットはあると思うけどな
そりゃ軽量な同期版があるに越したことはないけど、優先順位は落ちるだろう
342デフォルトの名無しさん
2024/02/06(火) 22:27:24.19ID:QhlaBKsr JavaScript SDKも内部は非同期だけど使いやすいよ
単なるコールバックで同期的に書けるし
単なるコールバックで同期的に書けるし
343デフォルトの名無しさん
2024/02/06(火) 22:33:38.08ID:QhlaBKsr どうも最近tokioがでしゃばってきて気持ちが悪い
ここまできたらもうコアをtokioに入れてWeb用の専用言語としてフォークしたほうがよいのでは?
ここまできたらもうコアをtokioに入れてWeb用の専用言語としてフォークしたほうがよいのでは?
344デフォルトの名無しさん
2024/02/06(火) 22:35:03.21ID:GPQIFWbx >>340
はぁ?そんなに同期でやりたいなら同期のある言語のSDKを使うかAWS CLIでコマンド実行しててくれよ
同期同期言ってるやつはRustでAWS触るアプリ作ってねえだろ
こちとらつい先日ようやく待ちに詫びたAWS SDK for Rustが正式版になって、ようやく、ようやくこれを本番投入できるって喜んだのによ
はぁ?そんなに同期でやりたいなら同期のある言語のSDKを使うかAWS CLIでコマンド実行しててくれよ
同期同期言ってるやつはRustでAWS触るアプリ作ってねえだろ
こちとらつい先日ようやく待ちに詫びたAWS SDK for Rustが正式版になって、ようやく、ようやくこれを本番投入できるって喜んだのによ
345デフォルトの名無しさん
2024/02/06(火) 22:36:26.88ID:QhlaBKsr まあ俺はCLI使ってるw
ぶっちゃけコードで書くメリットがわからない
ぶっちゃけコードで書くメリットがわからない
346デフォルトの名無しさん
2024/02/06(火) 22:36:30.11ID:UMLcFsAo というか同期版もランタイム切り替えも別にissueとしては却下されてるわけじゃないんだし
欲しい人は実装してPR出せばいいんだよ
それがされてないってことは結局需要がないんでは?
欲しい人は実装してPR出せばいいんだよ
それがされてないってことは結局需要がないんでは?
347デフォルトの名無しさん
2024/02/06(火) 22:38:18.90ID:YgjIpfMr348デフォルトの名無しさん
2024/02/06(火) 22:40:20.30ID:QhlaBKsr349デフォルトの名無しさん
2024/02/06(火) 22:44:11.89ID:oodj9UUv 「そんなに××したいなら○○使えば良いんじゃないの? 」→をはい○○使っています」っていう流れ、最強言語たるRustのスレの流れとしてはあまりにも敗北感がある
350デフォルトの名無しさん
2024/02/06(火) 22:50:36.48ID:QhlaBKsr まとめると
tokio使わない同期API作れ
非同期版はランタイム切り替えできるようにしろ
ってことでオッケー?
tokio使わない同期API作れ
非同期版はランタイム切り替えできるようにしろ
ってことでオッケー?
351デフォルトの名無しさん
2024/02/06(火) 22:53:13.82ID:j3cHqQGJ >>340
コンマ1秒~1秒の頻度でデータベースクエリするWebアプリとかだったら非同期のが次々に処理できると思うけど
コンマ1秒~1秒の頻度でデータベースクエリするWebアプリとかだったら非同期のが次々に処理できると思うけど
352デフォルトの名無しさん
2024/02/06(火) 22:56:34.96ID:LdUhtiaW353デフォルトの名無しさん
2024/02/06(火) 22:57:34.03ID:MUGS3GDn354デフォルトの名無しさん
2024/02/06(火) 22:58:56.15ID:QhlaBKsr >>352
それくらいの頻度で呼び出す可能性があるのってGAFAMクラスの会社ぐらいじゃね?w
それくらいの頻度で呼び出す可能性があるのってGAFAMクラスの会社ぐらいじゃね?w
355デフォルトの名無しさん
2024/02/06(火) 23:04:22.29ID:JKYjZJJo >>351
ゲームサーバーとかかな?
ゲームサーバーとかかな?
356デフォルトの名無しさん
2024/02/06(火) 23:06:26.14ID:6KaTvZBM357デフォルトの名無しさん
2024/02/06(火) 23:08:14.09ID:IqTcjswh 使ってる用途が違うから噛み合わないんだな
CLIで十分な用途とAPIが必要な用途くらいは区別しようぜ
CLIで十分な用途とAPIが必要な用途くらいは区別しようぜ
358デフォルトの名無しさん
2024/02/06(火) 23:08:21.31ID:1CYgky+r あ、もしかしてガーファ勤めなんかな笑笑?
なわけねえだろ笑笑
なわけねえだろ笑笑
359デフォルトの名無しさん
2024/02/06(火) 23:09:19.34ID:nVMpMpiW ガーファ最強笑笑
360デフォルトの名無しさん
2024/02/06(火) 23:10:22.99ID:fZ7dPHD5 >>351はバカです
361デフォルトの名無しさん
2024/02/06(火) 23:12:04.80ID:N6+r1oq4 >>355
ゲームサーバーってなに?マインクラフトでもやってるの?ガキんちょか?
ゲームサーバーってなに?マインクラフトでもやってるの?ガキんちょか?
362デフォルトの名無しさん
2024/02/06(火) 23:15:06.92ID:aJWngw7a363デフォルトの名無しさん
2024/02/06(火) 23:16:25.72ID:QhlaBKsr >>351
GAFAM社員age
GAFAM社員age
364デフォルトの名無しさん
2024/02/06(火) 23:26:25.88ID:qbDsNmRG 自分用のツールなら一々tokioとかめんどくさいとか
わからんでもないけどそういう人をターゲットに
してないからなあ
わからんでもないけどそういう人をターゲットに
してないからなあ
365デフォルトの名無しさん
2024/02/06(火) 23:26:55.98ID:IqTcjswh GAFAMの規模を舐めすぎだろ
10リクエスト/秒程度なら中堅企業の社内向けシステムでも普通にあるレベル
10リクエスト/秒程度なら中堅企業の社内向けシステムでも普通にあるレベル
366デフォルトの名無しさん
2024/02/06(火) 23:35:03.14ID:O9rpVDxS 実際ゲームサーバーって大変そうよね
最近話題になったパルワールドってやつもサーバー要素があるけど、ゲームデータをどこかしらのクラウドサービスをレンタルしてやってるわけで、>>351よりもすごいレベルで行われてそう
パルワールドのサーバーはどの言語のWebフレームワークでやってるのか知らんがJavaとかC#、GoあたりならRustのが高速、省メモリでサーバー代を節約できただろうな
最近話題になったパルワールドってやつもサーバー要素があるけど、ゲームデータをどこかしらのクラウドサービスをレンタルしてやってるわけで、>>351よりもすごいレベルで行われてそう
パルワールドのサーバーはどの言語のWebフレームワークでやってるのか知らんがJavaとかC#、GoあたりならRustのが高速、省メモリでサーバー代を節約できただろうな
367デフォルトの名無しさん
2024/02/06(火) 23:43:25.52ID:ZEorkRES ゲームサーバーってプログラミング関係あるの?サーバーを借りてるだけなんじゃないの?
368デフォルトの名無しさん
2024/02/06(火) 23:56:44.33ID:7jT2HGcX 無知は恥ってよくわかるね
369デフォルトの名無しさん
2024/02/07(水) 00:00:36.36ID:/3r7f4vo >>366
人気ゲームだと桁が3つ4つ違う
人気ゲームだと桁が3つ4つ違う
370デフォルトの名無しさん
2024/02/07(水) 00:02:07.90ID:HSCt9mfq >>368
無知自体は何も恥じることではない
無知自体は何も恥じることではない
371デフォルトの名無しさん
2024/02/07(水) 00:25:18.71ID:ZYweHa7T まさかゲームサーバーがなんなのかわからない人がこのスレにいるとは
372デフォルトの名無しさん
2024/02/07(水) 00:29:20.89ID:HhW4UiiT AWSはCLIでいい、非同期はゴミって結論出たね
373デフォルトの名無しさん
2024/02/07(水) 00:41:54.53ID:O61WTlOm 通信時間+向こうでの処理時間はCPUにとって莫大な待ち時間
async/awaitによる非同期プログラミングをすれば同期と同じようにプログラムを組めつつその莫大な待ち時間を有効活用できる
これは特定のプログラミング言語に関係なく対応しているすべての言語で成り立つ話
もちろんRustでも同じ
async/awaitによる非同期プログラミングをすれば同期と同じようにプログラムを組めつつその莫大な待ち時間を有効活用できる
これは特定のプログラミング言語に関係なく対応しているすべての言語で成り立つ話
もちろんRustでも同じ
374デフォルトの名無しさん
2024/02/07(水) 00:51:24.66ID:EnTbeTL9 AWS Lambdaだと同時実行数の制限があるから、同期処理をするのは犯罪的。
375デフォルトの名無しさん
2024/02/07(水) 00:58:32.65ID:p1o31ALH 現状のasync/awaitの使いやすさは
Swift > C# > JavaScript >>> Rust
Swift > C# > JavaScript >>> Rust
376デフォルトの名無しさん
2024/02/07(水) 00:59:45.05ID:p1o31ALH KotlinやF#は使ったこと無いのでわからない
377デフォルトの名無しさん
2024/02/07(水) 01:07:53.33ID:p1o31ALH378デフォルトの名無しさん
2024/02/07(水) 01:10:26.42ID:O61WTlOm >>375
Rustが最もきめ細かく扱えて便利
Rustが最もきめ細かく扱えて便利
379デフォルトの名無しさん
2024/02/07(水) 01:13:21.82ID:O61WTlOm もちろん性能面でもRustが最も有利
だからインフラに至るまで採用されている
だからインフラに至るまで採用されている
380デフォルトの名無しさん
2024/02/07(水) 01:20:07.41ID:R4SwjTOT >>377
c++は?
c++は?
381デフォルトの名無しさん
2024/02/07(水) 02:44:08.20ID:7skGlnTk >>377
swiftってそんなに書きやすいんか?
swiftってそんなに書きやすいんか?
382デフォルトの名無しさん
2024/02/07(水) 04:57:14.90ID:uDrK2oQi >>375
asyncもRxもC#が発祥だけどこの言語だけ異常だよな
asyncもRxもC#が発祥だけどこの言語だけ異常だよな
383デフォルトの名無しさん
2024/02/07(水) 06:30:56.86ID:EnTbeTL9 Pythonはスレッドが擬似的なので並行処理の性能が低い。
384デフォルトの名無しさん
2024/02/07(水) 06:35:55.67ID:5V24VW//385デフォルトの名無しさん
2024/02/07(水) 06:52:43.34ID:r0kpHnB4 Rustを叩きたいだけのアンチさんだから無茶苦茶や
386デフォルトの名無しさん
2024/02/07(水) 07:15:51.00ID:Z0+c6VxI387デフォルトの名無しさん
2024/02/07(水) 07:16:35.05ID:0B0Tt2Zv 非同期はC#GoKotlinRustのどれも同等に使いやすいと感じる
JavaはSpringありき、Swiftはつかったことない、C/C++は考えたくない
JavaはSpringありき、Swiftはつかったことない、C/C++は考えたくない
388デフォルトの名無しさん
2024/02/07(水) 07:25:44.75ID:qmafesNd swiftやdartはモバイルアプリ開発以外で全く使われてない
389デフォルトの名無しさん
2024/02/07(水) 07:30:51.78ID:KVAhvvz+ SwiftはApple製ってだけで使う価値なし
開発環境の依存があまりに高すぎる
開発環境の依存があまりに高すぎる
390デフォルトの名無しさん
2024/02/07(水) 07:38:16.28ID:2LChEtDL 出来ればJVMも使わずに済みたい
なんとなく
なんとなく
391デフォルトの名無しさん
2024/02/07(水) 07:40:43.27ID:lxo2szIV392デフォルトの名無しさん
2024/02/07(水) 07:53:07.34ID:q5vZGjA+ Rustはフロントエンドも取り込むのでRustスレはフロントエンド屋も書き込んで良い
393デフォルトの名無しさん
2024/02/07(水) 08:12:27.93ID:gKkOyEKn まぁRustの非同期の良いところはランタイムを言語から切り離したので
Webでも組み込みベアメタルでも非同期が使えるところなんだけど
使い勝手としてWebのユースケースに特化した他言語に負けるのはしょうがない
これは時間がたっても根本的には改善されないから
不満があるなら早く他言語に移ったほうがいいよ
Webでも組み込みベアメタルでも非同期が使えるところなんだけど
使い勝手としてWebのユースケースに特化した他言語に負けるのはしょうがない
これは時間がたっても根本的には改善されないから
不満があるなら早く他言語に移ったほうがいいよ
394デフォルトの名無しさん
2024/02/07(水) 08:15:11.44ID:0B0Tt2Zv >>390
ならGoかC#のASP.NETでいんじゃね?
さまざまな導入コストを払えるなら事実上クラウドネイティブ言語のRust一択
それとJVMがダメという理由が、Oracle JVMのLTSサポート期間が短縮されJVMのイメージが悪化したってことに依るものなら、
Kotlin/JVMだとJDK8をベースに、どのJDKバージョンでも動くようにサポートされ続けられるから、JDK8から最新のJDK21までのLTSバージョンで難なく動く
https://kotlinlang.org/docs/faq.html#which-versions-of-jvm-does-kotlin-target
OracleのJavaは終わってるがJetBrainsのKotlinは無限に始まってる
ならGoかC#のASP.NETでいんじゃね?
さまざまな導入コストを払えるなら事実上クラウドネイティブ言語のRust一択
それとJVMがダメという理由が、Oracle JVMのLTSサポート期間が短縮されJVMのイメージが悪化したってことに依るものなら、
Kotlin/JVMだとJDK8をベースに、どのJDKバージョンでも動くようにサポートされ続けられるから、JDK8から最新のJDK21までのLTSバージョンで難なく動く
https://kotlinlang.org/docs/faq.html#which-versions-of-jvm-does-kotlin-target
OracleのJavaは終わってるがJetBrainsのKotlinは無限に始まってる
395デフォルトの名無しさん
2024/02/07(水) 09:03:48.96ID:7skGlnTk 静的言語ではkotlinが個人的には1番かな
コルーチンスコープを作れるから既存の処理の中に非同期を唐突に入れられる
これが理想
ただしクラスありきなのが微妙なところ
クラスなしでkotlinのような使い心地がある言語が欲しい
コルーチンスコープを作れるから既存の処理の中に非同期を唐突に入れられる
これが理想
ただしクラスありきなのが微妙なところ
クラスなしでkotlinのような使い心地がある言語が欲しい
396デフォルトの名無しさん
2024/02/07(水) 09:09:08.81ID:oJ2HGwP7 >>373
その時間有効に使えるのかって話なんだよ。
例えばRDSを休止したい場合に、休止するAPIを呼んで、状態を確認するAPIで休止を確認してすると思うけど、
そういう処理を自動化する時に非同期でハンドリングする意味あるかっていう。
DynamoDB のデータ操作とか業務トランザクション扱う系は非同期あっていいとは思うけどね。
その時間有効に使えるのかって話なんだよ。
例えばRDSを休止したい場合に、休止するAPIを呼んで、状態を確認するAPIで休止を確認してすると思うけど、
そういう処理を自動化する時に非同期でハンドリングする意味あるかっていう。
DynamoDB のデータ操作とか業務トランザクション扱う系は非同期あっていいとは思うけどね。
397デフォルトの名無しさん
2024/02/07(水) 09:21:27.90ID:+r3v4OXU 既存の処理の中に非同期を唐突に入れられるのってランタイムがグローバルで一意じゃないと出来なそう
ランタイムいくらでも作れるし複数種類存在しうるRustでは無理そうね
ランタイムいくらでも作れるし複数種類存在しうるRustでは無理そうね
398デフォルトの名無しさん
2024/02/07(水) 09:33:38.70ID:3p2K3Rhv399デフォルトの名無しさん
2024/02/07(水) 09:42:26.35ID:x+YpU8Xz async{}.await
400デフォルトの名無しさん
2024/02/07(水) 09:45:13.70ID:kuiQPbhX >>380
C++ はその性質上、システムとの連携が必要な標準ライブラリは薄い。
幅広いシステムで実現可能なように配慮するから。
必要ならサードパーティライブラリでやれというスタンス。
ただそこで強力な誰もが認めるサードパーティライブラリが結局は現れなかったというのが C++ のあかんかったところなんやわ。
個人的には C++/WinRT の非同期処理は好きなんだがね。
C++ はその性質上、システムとの連携が必要な標準ライブラリは薄い。
幅広いシステムで実現可能なように配慮するから。
必要ならサードパーティライブラリでやれというスタンス。
ただそこで強力な誰もが認めるサードパーティライブラリが結局は現れなかったというのが C++ のあかんかったところなんやわ。
個人的には C++/WinRT の非同期処理は好きなんだがね。
401デフォルトの名無しさん
2024/02/07(水) 10:36:03.38ID:0B0Tt2Zv >>395
KotlinはデフォルトでclassがJavaでいうfinal classで定義されてて
・クラス継承禁止
・やってることはCの構造体と同じ
だから、自分はclassであるデメリットを感じてないかな
Kotlinでクラス継承するにはご存知の通りclassをopen classやabstract classと書くから見て分かるのがヨシ
KotlinはデフォルトでclassがJavaでいうfinal classで定義されてて
・クラス継承禁止
・やってることはCの構造体と同じ
だから、自分はclassであるデメリットを感じてないかな
Kotlinでクラス継承するにはご存知の通りclassをopen classやabstract classと書くから見て分かるのがヨシ
402デフォルトの名無しさん
2024/02/07(水) 10:46:44.24ID:rJGaKMx5 >>396
>その時間有効に使えるのかって話なんだよ。
非同期にすることでawsに関係なく別の処理を同じリソースで走らせられる
もしその時間を有効に使えないような用途なら省リソース高性能とは無縁だからわざわざRustを選ぶ必要ない
>その時間有効に使えるのかって話なんだよ。
非同期にすることでawsに関係なく別の処理を同じリソースで走らせられる
もしその時間を有効に使えないような用途なら省リソース高性能とは無縁だからわざわざRustを選ぶ必要ない
403デフォルトの名無しさん
2024/02/07(水) 10:52:51.94ID:ndvPWcVf なんかプログラミング言語総合スレみたいになってんな
いやちゃんと説明してくれて勉強になるから別にいいんだけど
いやちゃんと説明してくれて勉強になるから別にいいんだけど
404デフォルトの名無しさん
2024/02/07(水) 11:05:20.92ID:tO9J4ky9 >>402
Rustはプログラム言語の王だから理由がなくてもRustを使って良い
Rustはプログラム言語の王だから理由がなくてもRustを使って良い
405デフォルトの名無しさん
2024/02/07(水) 11:12:27.12ID:dhCR1KyQ406デフォルトの名無しさん
2024/02/07(水) 11:34:03.35ID:A5F8kPnc >>405
tokioに依存してない非同期関数ならクレートの依存もなく自分でFuture::pollを呼べばいい
例えばpollsterってクレートはそれ専用で、block_onだけ呼べる最小限の実装になってるよ
tokioに依存してない非同期関数ならクレートの依存もなく自分でFuture::pollを呼べばいい
例えばpollsterってクレートはそれ専用で、block_onだけ呼べる最小限の実装になってるよ
407デフォルトの名無しさん
2024/02/07(水) 11:48:56.31ID:EgwSQeAh 自分でFuture::poll呼ぶとか罰ゲームすぎるやろ
408デフォルトの名無しさん
2024/02/07(水) 12:13:10.25ID:DO0hQq6L >>361
ゲームサーバーはユーザーの操作ログを逐一集めてるよ。
ゲームサーバーはユーザーの操作ログを逐一集めてるよ。
409デフォルトの名無しさん
2024/02/07(水) 12:15:26.39ID:DO0hQq6L410デフォルトの名無しさん
2024/02/07(水) 12:39:51.49ID:3p2K3Rhv411デフォルトの名無しさん
2024/02/07(水) 13:49:24.53ID:hXp0LcUB pollを自分で呼ぶコードは悪手とかなんとか主張する人間と
そのコードに警告もしないコンパイラを
比較できるのがRustの楽しいところで
リソースを節約する話などは人間と人間の論争でありRustに責任はない
そのコードに警告もしないコンパイラを
比較できるのがRustの楽しいところで
リソースを節約する話などは人間と人間の論争でありRustに責任はない
412デフォルトの名無しさん
2024/02/07(水) 19:07:50.52ID:tO9J4ky9 C++に安全の責任はない
Pythonに動作速度の責任はない
Brainfuckにリソース節約の責任はない
Rustにリソース節約の責任はない
Pythonに動作速度の責任はない
Brainfuckにリソース節約の責任はない
Rustにリソース節約の責任はない
413デフォルトの名無しさん
2024/02/07(水) 19:08:11.49ID:tO9J4ky9 うーん
414デフォルトの名無しさん
2024/02/07(水) 19:08:14.90ID:e4qAQ6ae >>366
ゲームのミドルウェアがUE4だから、サーバー側もC++で書いてるんじゃないかな。
ゲームのミドルウェアがUE4だから、サーバー側もC++で書いてるんじゃないかな。
415デフォルトの名無しさん
2024/02/07(水) 19:15:08.54ID:p3QVKrD0416デフォルトの名無しさん
2024/02/07(水) 19:30:42.71ID:DWMhsuR7 >>412
何の面白味もないな
何の面白味もないな
418デフォルトの名無しさん
2024/02/07(水) 20:05:00.19ID:oFnccM2b そもそもRustとそのエコシステムを同一視してるんじゃないか。もちろん不可分なところはあるにせよ、分けて考えないとね。
419デフォルトの名無しさん
2024/02/07(水) 23:23:34.90ID:BkEIpOIl 言語の形式的なルールと実利を同一視するのは
ルールを守れば必ず報われるべきってことじゃないか
でもルールを守ることと勝つことは難易度が全然違う
ルールを守れば必ず報われるべきってことじゃないか
でもルールを守ることと勝つことは難易度が全然違う
420デフォルトの名無しさん
2024/02/07(水) 23:47:29.64ID:Y7NjV+uy Rustの駄目なところ
コンパイルが遅い
コンパイル時間を含めたらPythonのが圧倒的に速い
コンパイルが遅い
コンパイル時間を含めたらPythonのが圧倒的に速い
421デフォルトの名無しさん
2024/02/08(木) 00:07:22.21ID:5/bJ8Q79 >>420
すごいでちゅねー
すごいでちゅねー
422デフォルトの名無しさん
2024/02/08(木) 01:41:05.03ID:2eX+Xi95 Googleがプログラミング言語「Rust」に100万米ドルを助成、「C++」との併存・置き換えを図る
https://forest.watch.impress.co.jp/docs/news/1566662.html
https://forest.watch.impress.co.jp/docs/news/1566662.html
423デフォルトの名無しさん
2024/02/08(木) 04:23:52.18ID:vwr7y0Aq >>420
みっともないからルビガイジみたいなレス乞食やめろよ
みっともないからルビガイジみたいなレス乞食やめろよ
424デフォルトの名無しさん
2024/02/08(木) 04:49:47.24ID:TVrzLD8V ルビガイジって何?
425デフォルトの名無しさん
2024/02/08(木) 07:47:36.74ID:guCqNZzs 何にでもruby推してくる変な人の事じゃね?
426デフォルトの名無しさん
2024/02/08(木) 10:03:29.26ID:5zPu7Sf5 >>414
フロントとサーバーは間にネットワーク通信が挟まるんだから言語をフロントとサーバーで統一するメリットなし
フロントとサーバーは間にネットワーク通信が挟まるんだから言語をフロントとサーバーで統一するメリットなし
427デフォルトの名無しさん
2024/02/08(木) 10:24:35.32ID:TVrzLD8V >>426
直接に通信するあたりは言語を統一しておくと共通のライブラリを使えたりするので便利。
少人数で運用しているシステムだとクライアントとサーバーがある程度に
共通のスキルセットで構築できたほうがいいってこともある。
それがデメリットを上回るほどのメリットかどうかは状況によるけど。
直接に通信するあたりは言語を統一しておくと共通のライブラリを使えたりするので便利。
少人数で運用しているシステムだとクライアントとサーバーがある程度に
共通のスキルセットで構築できたほうがいいってこともある。
それがデメリットを上回るほどのメリットかどうかは状況によるけど。
428デフォルトの名無しさん
2024/02/08(木) 12:09:04.39ID:ug5u5xxX gRPCやRESTなら主要言語のほぼ全てで対応されてるんだから別に同じ言語に囚われる必要無いと思うけどなあ
429デフォルトの名無しさん
2024/02/08(木) 12:31:37.22ID:LLz4mv+z シリアライズフォーマットの話とプロトコルの話も区別できないのかぁ
430デフォルトの名無しさん
2024/02/08(木) 12:39:36.57ID:+yfo15bd スキルセットが一番発揮されるのはコード実装前の設計段階だよ
アルゴリズムとデータ構造、各種言語の各種フレームワークの知見を活かして設計してるだろ?
実装段階に入ったらあとは作業
フロント担当サーバー担当それぞれが実装する
フロントとサーバーはお互いに入出力のAPIだけ知ってればいい
言語の書き方そのものに対するスキルセットは納入期間の短縮にでも活かしてくれ
アルゴリズムとデータ構造、各種言語の各種フレームワークの知見を活かして設計してるだろ?
実装段階に入ったらあとは作業
フロント担当サーバー担当それぞれが実装する
フロントとサーバーはお互いに入出力のAPIだけ知ってればいい
言語の書き方そのものに対するスキルセットは納入期間の短縮にでも活かしてくれ
431デフォルトの名無しさん
2024/02/08(木) 12:43:32.12ID:ug5u5xxX432デフォルトの名無しさん
2024/02/08(木) 12:47:52.48ID:ug5u5xxX あっごめんzstdかgzipのどっちでデータ圧縮するかの話もしたほうがいいの?
433デフォルトの名無しさん
2024/02/08(木) 12:58:22.52ID:L2e7Z7sZ それら全て些細な問題でどうでもいい
通信でもファイルでも何でも
APIやフォーマットさえ決められていればよい
どの言語かどのフレームワークやライブラリかなんて一切関係なく自由
通信でもファイルでも何でも
APIやフォーマットさえ決められていればよい
どの言語かどのフレームワークやライブラリかなんて一切関係なく自由
434デフォルトの名無しさん
2024/02/08(木) 13:08:16.93ID:aB2xl6fL435デフォルトの名無しさん
2024/02/08(木) 13:14:50.58ID:ug5u5xxX 自社規格のデータをシリアライズ、デシリアライズするのに自社ライブラリを使うのと、サーバーやフロントをどの言語で実装するかは全くの別問題でしょ
>>414が言ってる、サーバーをC++で実装するだなんて効率の悪いことはするもんじゃない
>>414が言ってる、サーバーをC++で実装するだなんて効率の悪いことはするもんじゃない
436デフォルトの名無しさん
2024/02/08(木) 13:16:12.56ID:L2e7Z7sZ もちろんサーバとクライアントで同じ言語を利用すると有利な場合もある
もっと複雑なデータを別な形のデータに変換する同じ動作(コード)がサーバでもクライアントでも求められる場合がそれにそれに相当する
具体例としてはサーバサイドレンダリングをしつつフロントエンドでもシングルページのためレンダリングをする場合
従来はサーバサイドをNode.jsにすることで両側JavaScriptにしてコード共有が行われてきたが両側Rustでの動きもある
もっと複雑なデータを別な形のデータに変換する同じ動作(コード)がサーバでもクライアントでも求められる場合がそれにそれに相当する
具体例としてはサーバサイドレンダリングをしつつフロントエンドでもシングルページのためレンダリングをする場合
従来はサーバサイドをNode.jsにすることで両側JavaScriptにしてコード共有が行われてきたが両側Rustでの動きもある
437デフォルトの名無しさん
2024/02/08(木) 13:27:14.44ID:21XfFHH6 人によっては使用言語を統一したほうが数多なるデメリットを単一のメリットが上回ることもある
このご時世、簡略化されたプログラミング言語で溢れたなかで、単一言語しかできないというのは珍しいとは思うが、誰しもがバイリンガルプログラマというわけではない
このご時世、簡略化されたプログラミング言語で溢れたなかで、単一言語しかできないというのは珍しいとは思うが、誰しもがバイリンガルプログラマというわけではない
438デフォルトの名無しさん
2024/02/08(木) 13:39:56.20ID:557abryP unreal engineってフレームワークでサーバーアプリも作れるけど、自前でAPI組んでサーバーやったほうが圧倒的に軽量なんだよね
439デフォルトの名無しさん
2024/02/08(木) 13:40:27.02ID:wg4U7wDf バイリンガルでないプログラマ、Javaしか書けなそう
440デフォルトの名無しさん
2024/02/08(木) 14:05:04.22ID:u09hDjq1 Java界隈では未だにXMLが現役なのかな
一時期は全てがXMLだったけど最近触れる機会がない
一時期は全てがXMLだったけど最近触れる機会がない
441デフォルトの名無しさん
2024/02/08(木) 14:06:53.53ID:0U3NNgcj jsonの後にxml使うとデータの無駄が気になる
443デフォルトの名無しさん
2024/02/08(木) 14:22:34.49ID:TVrzLD8V ウェブまわりはいろんな規格が入れ子状態だから名前空間で分離する仕組みも要るところでは要る。
XML の万能さは他には代えられない便利さはある。
ただ、それが要らないところでは負担がデカいのも本当だし、多くの場合には要らんかったわという気づきがあったんだよ。
XML もスキーマがあれば大幅に情報を短縮できるバイナリXMLの規格も出てるんで、
そういうのを活用すればそれほど過剰に冗長なわけではない。
XML の万能さは他には代えられない便利さはある。
ただ、それが要らないところでは負担がデカいのも本当だし、多くの場合には要らんかったわという気づきがあったんだよ。
XML もスキーマがあれば大幅に情報を短縮できるバイナリXMLの規格も出てるんで、
そういうのを活用すればそれほど過剰に冗長なわけではない。
444デフォルトの名無しさん
2024/02/08(木) 14:33:58.18ID:d7zFncjn >>436
例えがフロントエンドって急にレベル下がってワロタ
例えがフロントエンドって急にレベル下がってワロタ
445デフォルトの名無しさん
2024/02/08(木) 14:44:36.25ID:K+TPHqwf >>431
ゲームサーバーでも性能を極限まで高めることが要求されるような場合はprotobufやJSONはあまり使われない
↓ここでいうRaw Struct的なものが今でも使われてる
https://flatbuffers.dev/md__benchmarks.html
言語ニュートラルじゃないしサーバーとクライアントと同時アップデートしないといけないとかいろいろ制約あるけど性能が必要ならそれらの手間を惜しまない
ゲームサーバーでも性能を極限まで高めることが要求されるような場合はprotobufやJSONはあまり使われない
↓ここでいうRaw Struct的なものが今でも使われてる
https://flatbuffers.dev/md__benchmarks.html
言語ニュートラルじゃないしサーバーとクライアントと同時アップデートしないといけないとかいろいろ制約あるけど性能が必要ならそれらの手間を惜しまない
446デフォルトの名無しさん
2024/02/08(木) 14:50:39.80ID:L2e7Z7sZ447デフォルトの名無しさん
2024/02/08(木) 14:52:06.22ID:ZTHDKZhp >>440
早くxmlは滅んで欲しい。
早くxmlは滅んで欲しい。
448デフォルトの名無しさん
2024/02/08(木) 14:52:54.34ID:TVrzLD8V シリアライズやパースのコストは小さくはないけど、
メモリコピーのコストが多くを占めているという発見から
なるべくコピーを減らしたシリアライズの規格として message pack が
実行性能と可搬性を (ある程度に) 両立したものとして人気がある。
まあ要するにそれぞれに利点があるんでこれが決定版とはなかなか言えないんだよな。
ある程度の収斂はしたにしても両立不可能なトレードオフってものはある。
メモリコピーのコストが多くを占めているという発見から
なるべくコピーを減らしたシリアライズの規格として message pack が
実行性能と可搬性を (ある程度に) 両立したものとして人気がある。
まあ要するにそれぞれに利点があるんでこれが決定版とはなかなか言えないんだよな。
ある程度の収斂はしたにしても両立不可能なトレードオフってものはある。
449デフォルトの名無しさん
2024/02/08(木) 14:58:14.76ID:ug5u5xxX >>445
まあゲームだとデータの規格のバージョン互換性を考えなくていいし独自規格で暗号化も兼ねたシリアライズをしたほうが悪意あるデータの改ざん防止のための対策にもなりそう
てかデータ記述言語の話なんざクソほどどうでもいいんだが
まあゲームだとデータの規格のバージョン互換性を考えなくていいし独自規格で暗号化も兼ねたシリアライズをしたほうが悪意あるデータの改ざん防止のための対策にもなりそう
てかデータ記述言語の話なんざクソほどどうでもいいんだが
450デフォルトの名無しさん
2024/02/08(木) 15:04:17.46ID:2EtcR70r xmlだろうがjsonだろうがrest通すときはgzipするからどっちでもいいわ
451デフォルトの名無しさん
2024/02/08(木) 15:04:23.12ID:d7zFncjn452デフォルトの名無しさん
2024/02/08(木) 15:14:54.75ID:ug5u5xxX453デフォルトの名無しさん
2024/02/08(木) 15:16:59.91ID:ZTHDKZhp クライアントとサーバーで同じ "プログラミング言語" 使うことの話が、いつのにかプロトコルとデータシリアライズの話にすり変わってるし。
発端は >>426 あたりかな。
発端は >>426 あたりかな。
454デフォルトの名無しさん
2024/02/08(木) 15:26:56.26ID:L2e7Z7sZ >>451
分散オブジェクトの話とは状況が全く異なる
ウェブのサーバーサイドとクライアントサイドでのコード共通化は現在使われている最新技術
これを片側でしか行なわないと速度面すなわちブラウザを使う人間の体感面で不利となってしまう
両側ともにJavaScriptにするのが主流だがサーバーリソースコスト面で不利なため両側Rust化
分散オブジェクトの話とは状況が全く異なる
ウェブのサーバーサイドとクライアントサイドでのコード共通化は現在使われている最新技術
これを片側でしか行なわないと速度面すなわちブラウザを使う人間の体感面で不利となってしまう
両側ともにJavaScriptにするのが主流だがサーバーリソースコスト面で不利なため両側Rust化
455デフォルトの名無しさん
2024/02/08(木) 15:32:31.05ID:d7zFncjn >>454
別にお前のお気持ちは聞いてないよ
別にお前のお気持ちは聞いてないよ
456デフォルトの名無しさん
2024/02/08(木) 15:34:25.91ID:L2e7Z7sZ457デフォルトの名無しさん
2024/02/08(木) 15:39:43.48ID:lShPsUxC >>454
それwasmってやつ?ファイルサイズがjavascriptより大きくならない?
それwasmってやつ?ファイルサイズがjavascriptより大きくならない?
458デフォルトの名無しさん
2024/02/08(木) 15:46:12.86ID:rcfTmCHH フロントエンドってAPI受け取ってReactで画面描いてAPI送りつけるだけじゃん、これのどこがサーバーサイドとコード共通にすなるん??
459デフォルトの名無しさん
2024/02/08(木) 15:52:25.19ID:VkQAw5RB javascriptでサーバーサイドって言ってる時点で頭がおかしいからスルーでおけ
460デフォルトの名無しさん
2024/02/08(木) 15:57:01.04ID:z3sGsuBj nodejsで済むサーバーって自宅サーバーか何かか?
461デフォルトの名無しさん
2024/02/08(木) 16:06:02.61ID:34mhb8ps462デフォルトの名無しさん
2024/02/08(木) 16:07:53.03ID:d7zFncjn463デフォルトの名無しさん
2024/02/08(木) 16:08:25.23ID:34mhb8ps464デフォルトの名無しさん
2024/02/08(木) 16:43:53.73ID:ug5u5xxX WASMはあまりにアセンブリ言語すぎる
watで直接WASMを書いてコンパイルするのが一番バイナリのファイルサイズを抑えられるけど大変
watじゃなくて他の言語で書くにしてもstd使うとファイルサイズが爆増する
既存のライブラリをWASM化するならともかく、既存のJavaScriptコードをstd有りで書き直すのは、ファイルサイズがJavaScriptのときと比較して増えて本末転倒だからJavaScriptのままでいい
watやRust with no-stdでWASMを頑張る人は頑張って
watで直接WASMを書いてコンパイルするのが一番バイナリのファイルサイズを抑えられるけど大変
watじゃなくて他の言語で書くにしてもstd使うとファイルサイズが爆増する
既存のライブラリをWASM化するならともかく、既存のJavaScriptコードをstd有りで書き直すのは、ファイルサイズがJavaScriptのときと比較して増えて本末転倒だからJavaScriptのままでいい
watやRust with no-stdでWASMを頑張る人は頑張って
465デフォルトの名無しさん
2024/02/08(木) 16:54:49.99ID:GUaqsUfs466デフォルトの名無しさん
2024/02/08(木) 17:10:13.67ID:ug5u5xxX だめだ、WASM specを見直してるけど相変わらず何書いてあるのかわからん
467デフォルトの名無しさん
2024/02/08(木) 17:15:11.69ID:TVrzLD8V >>464
規模がデカいアプリケーションは std の大きさなんてどうでもよくなるくらいにデカい。
大規模化するウェブアプリケーションが想定されているから
JavaScript のほうが軽量であるときは JavaScript を使えばいいよ。
そうじゃないときがあるって話なんだよ。
規模がデカいアプリケーションは std の大きさなんてどうでもよくなるくらいにデカい。
大規模化するウェブアプリケーションが想定されているから
JavaScript のほうが軽量であるときは JavaScript を使えばいいよ。
そうじゃないときがあるって話なんだよ。
468デフォルトの名無しさん
2024/02/08(木) 17:20:27.37ID:K+TPHqwf 1コアで毎秒数万リクエスト処理するようなゲームサーバー的なものの話をしてると思ってたらSSRとかReactとか全く違うユースケースの話をしてる人達がいたのか
そりゃ話が噛み合わないわなぁ
そりゃ話が噛み合わないわなぁ
469デフォルトの名無しさん
2024/02/08(木) 17:26:24.69ID:Z/Y0D/hR 話を合わせようとしたら負け
駄文乱文を量産し続けて最後まで圧倒したやつの勝ち
駄文乱文を量産し続けて最後まで圧倒したやつの勝ち
470デフォルトの名無しさん
2024/02/08(木) 17:26:27.02ID:Z/Y0D/hR 話を合わせようとしたら負け
駄文乱文を量産し続けて最後まで圧倒したやつの勝ち
駄文乱文を量産し続けて最後まで圧倒したやつの勝ち
471デフォルトの名無しさん
2024/02/08(木) 17:33:18.45ID:wPAPAJoC >>467
その規模のデカいアプリケーションとやらがffmpegとかゲームとかをやるwasmならファイルサイズが大きくなる以上のメリットがあるからいいが、きれいなUIを表現するためにjavascriptよりファイルサイズの大きくなったwasmを使うのはアホとだけ言っておくわ
その規模のデカいアプリケーションとやらがffmpegとかゲームとかをやるwasmならファイルサイズが大きくなる以上のメリットがあるからいいが、きれいなUIを表現するためにjavascriptよりファイルサイズの大きくなったwasmを使うのはアホとだけ言っておくわ
472デフォルトの名無しさん
2024/02/08(木) 17:42:32.82ID:EBOg13nx >>464
Wasmではfsなど必要ないのだから
no_stdで全く問題なくプログラミングできます
Rustの基本はほとんどcoreに入っています
allocを使えばVecやStringも使えます
あと欲しくなるのはHashMapあたりでしょうがこれもhashbrownで使えます
一度no_stdでプログラミングしてみることをオススメします
Wasmではfsなど必要ないのだから
no_stdで全く問題なくプログラミングできます
Rustの基本はほとんどcoreに入っています
allocを使えばVecやStringも使えます
あと欲しくなるのはHashMapあたりでしょうがこれもhashbrownで使えます
一度no_stdでプログラミングしてみることをオススメします
473デフォルトの名無しさん
2024/02/08(木) 17:44:09.24ID:EBOg13nx474デフォルトの名無しさん
2024/02/08(木) 17:55:44.80ID:TVrzLD8V Rust で簡易アセンブラっぽいものを作ったことがあった (特に std を避けるとかしてない) ので
wasm で出力してみたけどだいたい 140kb くらいな感じ。
たぶん JavaScript で書いて最適化もすればもっと小さくは出来そうな感触はあるが
だからといって Rust でやって深刻に巨大すぎるということはない。
小さいプログラムのときでも Wasm は使い物になる。
いや、もちろん比較したら JavaScript で書いたほうがよいことも多いのだろうけど、
全くのアンチパターンってことはない。
wasm で出力してみたけどだいたい 140kb くらいな感じ。
たぶん JavaScript で書いて最適化もすればもっと小さくは出来そうな感触はあるが
だからといって Rust でやって深刻に巨大すぎるということはない。
小さいプログラムのときでも Wasm は使い物になる。
いや、もちろん比較したら JavaScript で書いたほうがよいことも多いのだろうけど、
全くのアンチパターンってことはない。
475デフォルトの名無しさん
2024/02/08(木) 17:56:24.51ID:ug5u5xxX >>472
いやー、watでいいかな
いやー、watでいいかな
476デフォルトの名無しさん
2024/02/08(木) 18:26:36.73ID:d7zFncjn Figmaはecmascripten使ってるそうだよ
C++で書いてWebGL用にコンパイル
おそらく世界最大のwasmコードだろう
https://www.figma.com/ja/blog/webassembly-cut-figmas-load-time-by-3x/
C++で書いてWebGL用にコンパイル
おそらく世界最大のwasmコードだろう
https://www.figma.com/ja/blog/webassembly-cut-figmas-load-time-by-3x/
477デフォルトの名無しさん
2024/02/08(木) 18:29:10.38ID:d7zFncjn 今のところrustよりはecmascriptenの方が既存コードを活かせる
478デフォルトの名無しさん
2024/02/08(木) 18:37:22.37ID://05Mhwl479デフォルトの名無しさん
2024/02/08(木) 18:41:39.17ID:d7zFncjn >>478
next.jsはUI部分だけでバックエンドはRustだから特に必要性は感じないね
next.jsはUI部分だけでバックエンドはRustだから特に必要性は感じないね
480デフォルトの名無しさん
2024/02/08(木) 18:54:05.90ID://05Mhwl >>479
Next.jsでSSRなら毎回JavaScriptのコードが動くわけだけど
「バックエンドはRustだから」って?
外から受ける部分のサーバはRustでもそこからNext.jsを動かすためのNode.jsなどを呼び出すことになるよね
Next.jsでSSRなら毎回JavaScriptのコードが動くわけだけど
「バックエンドはRustだから」って?
外から受ける部分のサーバはRustでもそこからNext.jsを動かすためのNode.jsなどを呼び出すことになるよね
481デフォルトの名無しさん
2024/02/08(木) 19:25:31.03ID:QINBs586 単にNext.jsがデータをフェッチする先のAPIエンドポイントがRust製ってだけだろ。
LBやらWebサーバーのような低レイヤがRust製かどうかみたいなのはそんなにユーザーに近いWeb屋が気にかけて手をいれる場所でもない。
LBやらWebサーバーのような低レイヤがRust製かどうかみたいなのはそんなにユーザーに近いWeb屋が気にかけて手をいれる場所でもない。
482デフォルトの名無しさん
2024/02/08(木) 19:29:46.46ID:0U3NNgcj 途中にビルド嚙ませれば同じにできるけど一般的にはCommonJSとECMAScriptで違う方言のJSでやり取りする事になるけどね
TypeScriptは使ってないから知らん
TypeScriptは使ってないから知らん
483デフォルトの名無しさん
2024/02/08(木) 19:34:55.22ID:XA34Vq7w484デフォルトの名無しさん
2024/02/08(木) 19:38:03.57ID:XODN4PGj next.jsは普通に速いよ
ビルドがクソ遅いだけで
他のエコシステムはもっと高速なんだけどねえ
ビルドがクソ遅いだけで
他のエコシステムはもっと高速なんだけどねえ
485デフォルトの名無しさん
2024/02/08(木) 19:54:29.48ID:vWC2S6ww サーバーサイドは可能な限りリソースコスト(クラウド代/ハード代電気代)を下げたい
Next.jsに限らずJavaScriptを含めた遅い言語の実行は避けたい
すべてをRust化するのが最善案
Next.jsに限らずJavaScriptを含めた遅い言語の実行は避けたい
すべてをRust化するのが最善案
486デフォルトの名無しさん
2024/02/08(木) 20:01:51.28ID:ZqeEswjg Next.js(Nuxt.js)はどんなにクソだとしても使わざるをえないものなんだよね
Next.js以上のものはもはや作れんよ
Next.js以上のものはもはや作れんよ
487デフォルトの名無しさん
2024/02/08(木) 20:03:16.79ID:XODN4PGj それな
App Routerが神過ぎるんよ
これのおかげでサーバーサイドエンジニアが全てコントロールできるようになった
App Routerが神過ぎるんよ
これのおかげでサーバーサイドエンジニアが全てコントロールできるようになった
488デフォルトの名無しさん
2024/02/08(木) 20:29:26.04ID:ZTHDKZhp >>464
forthみたいで面白くない?
forthみたいで面白くない?
489デフォルトの名無しさん
2024/02/08(木) 21:09:57.90ID:iGefvq8R Next.jsがRailsの息の根を止めたわけだが、
React+Next.js+〇〇
このバックエンド部分の〇〇がRustが活かせるところ
React+Next.js+〇〇
このバックエンド部分の〇〇がRustが活かせるところ
490デフォルトの名無しさん
2024/02/08(木) 21:15:13.68ID:fAoXwANU491デフォルトの名無しさん
2024/02/08(木) 22:03:30.31ID:z3hLjd3o もう大きくは変わらないんじゃないか?
正直俺はPages Routerまでのnext.jsはゴミだと思ってたから使ってなかった
しかしApp Routerを見たときまさに俺の求めているものだと感じた
多分これが最高地点だよ
正直俺はPages Routerまでのnext.jsはゴミだと思ってたから使ってなかった
しかしApp Routerを見たときまさに俺の求めているものだと感じた
多分これが最高地点だよ
492デフォルトの名無しさん
2024/02/09(金) 00:17:38.71ID:tjbjc/kZ 今はRuby on Rails でも、React/Next.js, TypeScript が転職で必須。
少し前は、Vue.js だったけど、Vue 3 は流行らなかった
Rails 7 からは、Hotwire に変わった。
HotwireはHTML Over The Wireの略で、
SPAの開発において、JavaScriptのコーディングを極力必要としない。
脱node.js, webpack
JSONではなく、HTMLベース。
サーバーサイドでHTMLを生成し、WebSocketでWebブラウザへ送信する
これで、Reactに取られたシェアを回復する
少し前は、Vue.js だったけど、Vue 3 は流行らなかった
Rails 7 からは、Hotwire に変わった。
HotwireはHTML Over The Wireの略で、
SPAの開発において、JavaScriptのコーディングを極力必要としない。
脱node.js, webpack
JSONではなく、HTMLベース。
サーバーサイドでHTMLを生成し、WebSocketでWebブラウザへ送信する
これで、Reactに取られたシェアを回復する
493デフォルトの名無しさん
2024/02/09(金) 06:07:49.74ID:79P7yOqB >>492
javascript使ったほうがラクなのになんでわざわざhtml縛りするの?
javascript使ったほうがラクなのになんでわざわざhtml縛りするの?
494デフォルトの名無しさん
2024/02/09(金) 07:43:30.04ID:uUxbU3bY Ruby信者はズレてるから仕方ない
495デフォルトの名無しさん
2024/02/09(金) 07:53:26.10ID:cmMrL7Ws SSRのsvelteはWebオーサリングツールから実画面に持っていきやすい
WebページのスクリプトにRust使えるブラウザとRust実装のsvelteを作ってもらいたい
WebページのスクリプトにRust使えるブラウザとRust実装のsvelteを作ってもらいたい
496デフォルトの名無しさん
2024/02/09(金) 08:55:44.38ID:so08h4Qi SvelteもNext.jsもサーバーサイドでJavaScriptを動かすためエコじゃないのでいずれ新たなものに置き換えられるでしょう
497デフォルトの名無しさん
2024/02/09(金) 09:34:26.12ID:Kdv0HxUE std::any::type_name_of_val()は学習時にも良さそ
498デフォルトの名無しさん
2024/02/09(金) 09:59:55.75ID:so08h4Qi 昔から使えるよ
fn type_name_of_val<T: ?Sized>(_val: &T) -> &'static str {
std::any::type_name::<T>()
}
fn type_name_of_val<T: ?Sized>(_val: &T) -> &'static str {
std::any::type_name::<T>()
}
499デフォルトの名無しさん
2024/02/09(金) 10:27:55.96ID:C39eXNkM >>493
JS使った方が楽という感覚は理解できんわ
JS使った方が楽という感覚は理解できんわ
500デフォルトの名無しさん
2024/02/09(金) 13:19:22.70ID:YdTAf9YB >>496
next.jsのapp routerがサーバーサイドフレームワークになったの知らないの?
next.jsのapp routerがサーバーサイドフレームワークになったの知らないの?
501デフォルトの名無しさん
2024/02/09(金) 13:59:04.29ID:wfDAL7tm リソースコストがかかるスクリプト言語をサーバーサイドで動かしてる連中はいずれ消えるさ
502デフォルトの名無しさん
2024/02/09(金) 14:16:42.17ID:YdTAf9YB503デフォルトの名無しさん
2024/02/09(金) 15:05:02.67ID:7wM1u29W どんどんrustの話から離れていってんな
504デフォルトの名無しさん
2024/02/09(金) 15:19:56.77ID:d4LbU2O8 SSRやCSRがややこしいと感じる意味がわからん
Next.jsのPage Router時代の区別がややこしかったと感じてるだけとちゃう?
特定の実装とは関係のない概念としてのSSRやCSRは別にややこしくも何ともないでしょ
ReactのサーバーコンポーネントはNext..jsではサーバーサイドでレンダリング(HTML生成される)、つまりSSR
クライアントコンポーネントはクライアントサイドでレンダリングされる、つまりCSR
ついでに言うとHotwireみたいなのも仕組みとしての基本的な考え方は同じ
Next.jsのPage Router時代の区別がややこしかったと感じてるだけとちゃう?
特定の実装とは関係のない概念としてのSSRやCSRは別にややこしくも何ともないでしょ
ReactのサーバーコンポーネントはNext..jsではサーバーサイドでレンダリング(HTML生成される)、つまりSSR
クライアントコンポーネントはクライアントサイドでレンダリングされる、つまりCSR
ついでに言うとHotwireみたいなのも仕組みとしての基本的な考え方は同じ
505デフォルトの名無しさん
2024/02/09(金) 15:26:09.73ID:wyTCEkUp Rustで引数の数を可変にしたいと思っただけでマクロが必要になるの、どういう思想なんだ
506デフォルトの名無しさん
2024/02/09(金) 15:36:06.60ID:gZOHhCrR >>505
型システムとの兼ね合い。
型システムとの兼ね合い。
507デフォルトの名無しさん
2024/02/09(金) 15:38:36.69ID:ixshWTAh >>505
オプショナル引数 → 数が少ないならOption多いならbuilder
可変長の引数 → スライス
マクロを使うのは個々の引数の扱いがそれぞれ異なりそれぞれをコンパイル時に型をチェックしたい場合などに使う
オプショナル引数 → 数が少ないならOption多いならbuilder
可変長の引数 → スライス
マクロを使うのは個々の引数の扱いがそれぞれ異なりそれぞれをコンパイル時に型をチェックしたい場合などに使う
508デフォルトの名無しさん
2024/02/09(金) 15:52:26.69ID:IKpgt5UR next.jsはRustフレンドリーなフレームワークだから実質Rustなんだよね
509デフォルトの名無しさん
2024/02/09(金) 16:25:40.87ID:YdTAf9YB >>504
その発想だとサーバーアクションは説明できないよ
その発想だとサーバーアクションは説明できないよ
510デフォルトの名無しさん
2024/02/09(金) 16:28:31.07ID:YdTAf9YB >>508
俺は将来的にnext.jsは全部rustで書きなおされると思ってる
俺は将来的にnext.jsは全部rustで書きなおされると思ってる
511デフォルトの名無しさん
2024/02/09(金) 16:37:49.82ID:DOCRBofH512デフォルトの名無しさん
2024/02/09(金) 17:13:49.98ID:wfDAL7tm >>510
同感
同感
513デフォルトの名無しさん
2024/02/09(金) 18:59:39.30ID:wyTCEkUp C++であれば関数のオーバーロードで実現していたようなことをRustでは全部封じてしまった結果、ライブラリは至る所マクロだらけ
これはRustの目指したいところなのか?
これはRustの目指したいところなのか?
514デフォルトの名無しさん
2024/02/09(金) 19:22:48.34ID:6IeD8Xf6 実行時の分岐ではなくコンパイル時のコード生成に置き換わるんだから
ゼロコスト抽象化という観点ではC++のほうがそちらを目指さなければいけなかったんじゃないでしょうか。
ゼロコスト抽象化という観点ではC++のほうがそちらを目指さなければいけなかったんじゃないでしょうか。
515デフォルトの名無しさん
2024/02/09(金) 19:24:12.28ID:6IeD8Xf6 あ、可変長引数の話とオーバーロードの話を混同してしまっていた。
516デフォルトの名無しさん
2024/02/09(金) 19:32:53.51ID:RpHX5dqz https://qiita.com/buntafujikawa/items/1bd808f5f55eb63df7c4
こういうの知ってたら
オーバーロードもデフォルト引数もいらね〜
どうしてもほしけりゃ別名の関数作るわ
ってならん?
こういうの知ってたら
オーバーロードもデフォルト引数もいらね〜
どうしてもほしけりゃ別名の関数作るわ
ってならん?
517デフォルトの名無しさん
2024/02/09(金) 19:45:04.86ID:qkcXaSLH 別名の関数を作りたくなるのはわからんでもないけど、実際crates.ioはそうならずにマクロだらけなので
518デフォルトの名無しさん
2024/02/09(金) 20:35:29.36ID:gZOHhCrR 田舎者は十年間使わない道具でも納屋にしまいっぱなしってことがまあまああるけど都会だとどんどん捨てるじゃん。
都会では物より空間のほうが高くつくから。
何が大事か、何を大事ということにするかで判断が変わる。
名前を考えるってのは人にとって思ったより負荷が高いということに対する解がオーバーロードなんだよ。
でもまあオーバーロードにもデメリットは当然ながらあるので結局は何を重視するかの問題。
都会では物より空間のほうが高くつくから。
何が大事か、何を大事ということにするかで判断が変わる。
名前を考えるってのは人にとって思ったより負荷が高いということに対する解がオーバーロードなんだよ。
でもまあオーバーロードにもデメリットは当然ながらあるので結局は何を重視するかの問題。
519デフォルトの名無しさん
2024/02/09(金) 23:53:50.41ID:qm1w3dJY オーバーロードは無くてもいいけどキーワード引数は欲しいかな
520デフォルトの名無しさん
2024/02/09(金) 23:59:48.02ID:D/1cks9J521デフォルトの名無しさん
2024/02/10(土) 02:54:22.21ID:rfU+NtYa >>520
いちいちstructを定義しなくてもいいようにするためにキーワード引数って存在してるんだよ
いちいちstructを定義しなくてもいいようにするためにキーワード引数って存在してるんだよ
522デフォルトの名無しさん
2024/02/10(土) 09:13:20.91ID:KcmgHb9l523デフォルトの名無しさん
2024/02/10(土) 09:40:29.45ID:d2BF2Jtb Rustでなぜデフォルト引数がサポートされてないのかはここでよろしく
https://www.reddit.com/r/rust/comments/fi6nov/why_does_rust_not_support_default_arguments/
https://www.reddit.com/r/rust/comments/fi6nov/why_does_rust_not_support_default_arguments/
524デフォルトの名無しさん
2024/02/10(土) 09:50:58.48ID:lXB6J68A 構造体を使うかビルダーパターンで困ることはないからね
もし技術的に矛盾のない他の良い方法があれば提案してみるべきだけど既出だと思うよ
もし技術的に矛盾のない他の良い方法があれば提案してみるべきだけど既出だと思うよ
525デフォルトの名無しさん
2024/02/10(土) 09:54:14.05ID:Lf9bQLCg ビルダーパターンは自分で書くならめんどい
526デフォルトの名無しさん
2024/02/10(土) 10:07:03.72ID:iJNhxzEm527デフォルトの名無しさん
2024/02/10(土) 10:08:52.95ID:QvZInASK ADAってどう?
528デフォルトの名無しさん
2024/02/10(土) 10:22:50.56ID:iJNhxzEm Adaってなんだと思って調べたら米国国防総省が主導のもとで開発されたプログラミング言語なんだね
後に開発されたC++やJavaに影響を与えたんだって
後に開発されたC++やJavaに影響を与えたんだって
529デフォルトの名無しさん
2024/02/10(土) 10:33:01.11ID:VP+Iax6j530デフォルトの名無しさん
2024/02/10(土) 10:33:37.95ID:2jz47bNZ パターンとかきしょすぎ
Javaみてえな文化
Javaみてえな文化
531デフォルトの名無しさん
2024/02/10(土) 10:36:17.39ID:VP+Iax6j532デフォルトの名無しさん
2024/02/10(土) 11:15:35.75ID:6T66/lvp533デフォルトの名無しさん
2024/02/10(土) 11:20:28.46ID:iJNhxzEm534デフォルトの名無しさん
2024/02/10(土) 11:21:55.77ID:xcSAMi5J キーワード引数のような劣った方法より構造体あるいはビルダーパターンが絶対にいいぞ
デフォルト値はまとめてDefault実装でがっちりコードも書けるしな
デフォルト値はまとめてDefault実装でがっちりコードも書けるしな
535デフォルトの名無しさん
2024/02/10(土) 11:24:20.16ID:iJNhxzEm キーワード引数は>>523に書いてあるように、いまだ有用な実装が挙がってないから無い
数年後には有用な実装が提言されてるかもしれないから待て
数年後には有用な実装が提言されてるかもしれないから待て
536デフォルトの名無しさん
2024/02/10(土) 11:32:26.22ID:iJNhxzEm パターンにアンチ的な考えを持つのはお門違い
Webアプリにしてもコア部分のライブラリにしても、一般的なデザインパターンに基づいて設計されていればあとから雇った技術者に引き継がせるのが楽ちん
デザインパターンのうちのひとつ、ビルダーパターンだって可読性、保守性に優れてるから使われているんだ
Webアプリにしてもコア部分のライブラリにしても、一般的なデザインパターンに基づいて設計されていればあとから雇った技術者に引き継がせるのが楽ちん
デザインパターンのうちのひとつ、ビルダーパターンだって可読性、保守性に優れてるから使われているんだ
537デフォルトの名無しさん
2024/02/10(土) 11:53:44.03ID:H5a70urg538デフォルトの名無しさん
2024/02/10(土) 11:54:44.92ID:H5a70urg 可読性・保守性のために追加のパターンの勉強が必要だなんて信じられない
まるでJavaみたいだ
まるでJavaみたいだ
539デフォルトの名無しさん
2024/02/10(土) 11:57:02.97ID:iJNhxzEm >>537
だってPythonはデザインパターンを意識しないと保守が面倒になるような複雑に設計すること自体がアンチパターンじゃんか
だってPythonはデザインパターンを意識しないと保守が面倒になるような複雑に設計すること自体がアンチパターンじゃんか
540デフォルトの名無しさん
2024/02/10(土) 12:00:29.93ID:iJNhxzEm >>539 アンチパターンは言い過ぎか、Pythonにだってデザインパターンの基本的な原則はあるんだから
541デフォルトの名無しさん
2024/02/10(土) 12:04:27.79ID:09Czk/ru >>537
Pythonは欠陥プログラミング言語として知られているように酷い状況だよ
特に酷いと言われてるのはPythonにはinterface機能がないこと
抽象クラスで無理に実現しても劣りコードも汚い
Pythonはプログラミングはせずにあくまでもスクリプトとして用いる範囲内で使うのがよい
Pythonは欠陥プログラミング言語として知られているように酷い状況だよ
特に酷いと言われてるのはPythonにはinterface機能がないこと
抽象クラスで無理に実現しても劣りコードも汚い
Pythonはプログラミングはせずにあくまでもスクリプトとして用いる範囲内で使うのがよい
542デフォルトの名無しさん
2024/02/10(土) 12:09:31.06ID:H5a70urg まあでも言われて考えてみればbuilder patternなんてせいぜい「Pythonらしいコード」とかの範疇か
543デフォルトの名無しさん
2024/02/10(土) 12:12:05.42ID:X5MB5Dp7 >>541
pythonにインターフェースがないのは、インターフェースが必要になるような製品にpythonで設計するなってことだぞ
pythonにインターフェースがないのは、インターフェースが必要になるような製品にpythonで設計するなってことだぞ
544デフォルトの名無しさん
2024/02/10(土) 12:13:49.11ID:H5a70urg Pythonで抽象クラス使うくらいならProtocolでも使うかな
まあtrait使う方が良いのはそうかも
まあtrait使う方が良いのはそうかも
545デフォルトの名無しさん
2024/02/10(土) 12:18:46.21ID:Gv6WNLHY デザインパターンとかいうオブシコ要素をRustに持ち込むの迷惑だからやめろ
546デフォルトの名無しさん
2024/02/10(土) 12:30:54.19ID:iJNhxzEm パターンアンチが多いのか知らんけど、デザインパターンのうちクリーンアーキテクチャの考えは最低限習得しとくべきよ
フレームワークやライブラリと疎結合に実装しておけば保守性はばっちり
フレームワーク入れ替えのリファクタリングだって容易にできる
フレームワークやライブラリと疎結合に実装しておけば保守性はばっちり
フレームワーク入れ替えのリファクタリングだって容易にできる
547デフォルトの名無しさん
2024/02/10(土) 12:33:11.47ID:lBFnzKPs いわゆる従来のデザインパターンと呼ばれているものは前提としてクラスやクラス継承を前提としているものが多い
そのためRustに持ち込んでも意味がないものやRustに持ち込む必要がそもそもないことが多い
Rustを理解していない人がRustを批判しようとして逆に失敗する一因にもなっている
そのためRustに持ち込んでも意味がないものやRustに持ち込む必要がそもそもないことが多い
Rustを理解していない人がRustを批判しようとして逆に失敗する一因にもなっている
548デフォルトの名無しさん
2024/02/10(土) 13:01:44.04ID:YTHRY4oL549デフォルトの名無しさん
2024/02/10(土) 13:16:33.29ID:8ut+BFv7 Rustスレにオブシコアンチの居場所はないぞ
Rustはオブシコの主要機能の2/3を取り入れてるんだから
Rustはオブシコの主要機能の2/3を取り入れてるんだから
550デフォルトの名無しさん
2024/02/10(土) 13:20:09.17ID:LlCsSE+Z551デフォルトの名無しさん
2024/02/10(土) 13:24:24.95ID:RZD3J/dp >>547
>いわゆる従来のデザインパターンと呼ばれているものは前提としてクラスやクラス継承を前提としているものが多い
この考えが間違ってるんだよなぁ
デザインパターンの特定の実装しか理解してない人とデザインパターンの実装例から導き出される原則まで理解してる人では見えてる景色が正反対になってしまう例だね
>いわゆる従来のデザインパターンと呼ばれているものは前提としてクラスやクラス継承を前提としているものが多い
この考えが間違ってるんだよなぁ
デザインパターンの特定の実装しか理解してない人とデザインパターンの実装例から導き出される原則まで理解してる人では見えてる景色が正反対になってしまう例だね
552デフォルトの名無しさん
2024/02/10(土) 13:42:15.57ID:bXBK2+hH553デフォルトの名無しさん
2024/02/10(土) 13:57:43.35ID:UK9hi/1i >>552
それは全く違う
C++とRustにキーワード引数がないのは
リソース管理の問題があるためだ
つまり引数部分で色々やると
リソース獲得問題と解放問題などが生じてしまう
だからキーワード引数ではなぬ分離したほうが好ましい
それは全く違う
C++とRustにキーワード引数がないのは
リソース管理の問題があるためだ
つまり引数部分で色々やると
リソース獲得問題と解放問題などが生じてしまう
だからキーワード引数ではなぬ分離したほうが好ましい
554デフォルトの名無しさん
2024/02/10(土) 13:58:54.16ID:iJNhxzEm >>548
クリーンアーキテクチャはアーキテクチャパターンの中でもすごくシンプルだと思うぞ
とにかく関心の分離にこだわる、この考えに尽きる
まあ、これこそオブシコの中のオブシコの考えだからアンチは大嫌いなんだろうけど
クリーンアーキテクチャはアーキテクチャパターンの中でもすごくシンプルだと思うぞ
とにかく関心の分離にこだわる、この考えに尽きる
まあ、これこそオブシコの中のオブシコの考えだからアンチは大嫌いなんだろうけど
555デフォルトの名無しさん
2024/02/10(土) 14:03:55.89ID:lW9Vkr52556デフォルトの名無しさん
2024/02/10(土) 14:05:28.57ID:iJNhxzEm デザインパターンといえばGoFは流石に古くないか??
557デフォルトの名無しさん
2024/02/10(土) 14:05:43.92ID:AU1t0rvZ デザインパターンという言葉はGoFに汚染されているからな
デザインパターンという言葉を使うこと自体がアンチパターン
デザインパターンという言葉を使うこと自体がアンチパターン
558デフォルトの名無しさん
2024/02/10(土) 14:08:00.40ID:iJNhxzEm デザインパターンが広義的すぎるのは分かる
デザインパターンではなくアーキテクチャパターンと表すべきだというのなら、まさにごもっともでございます
デザインパターンではなくアーキテクチャパターンと表すべきだというのなら、まさにごもっともでございます
559デフォルトの名無しさん
2024/02/10(土) 14:23:27.48ID:Aed3I3PZ 話がそれてるけどデフォルト引数(キーワード引数)がRustに無いのは現時点での仕様
デフォルト引数を使える点はPythonの勝ちだねおめでとう、じゃあPythonくんはブラウザバックしようか
デフォルト引数を使える点はPythonの勝ちだねおめでとう、じゃあPythonくんはブラウザバックしようか
560デフォルトの名無しさん
2024/02/10(土) 14:40:14.16ID:XEL9SE6k 出来ることが多いほどいいってわけじゃないからなぁ。
「構造化は好きな場所にジャンプできないから欠陥のあるパラダイム!」とは言わんでしょ。
そんでそういうのは他の言語機能との連携とか諸事情を考えて決めるべきことだから
Rust でキーワード引数がないのは「今のところは」よいバランスの仕様が思いつかないでいるってだけ。
これから良いアイデアが出るかもしれないし出ないかもしれない。
「構造化は好きな場所にジャンプできないから欠陥のあるパラダイム!」とは言わんでしょ。
そんでそういうのは他の言語機能との連携とか諸事情を考えて決めるべきことだから
Rust でキーワード引数がないのは「今のところは」よいバランスの仕様が思いつかないでいるってだけ。
これから良いアイデアが出るかもしれないし出ないかもしれない。
561デフォルトの名無しさん
2024/02/10(土) 14:40:53.07ID:b8HpDXca >>559
いつからブラウザで見ていると勘違いしていた
いつからブラウザで見ていると勘違いしていた
562デフォルトの名無しさん
2024/02/10(土) 14:42:22.10ID:YTHRY4oL >>551
その導き出される原則がデザインパターンなんだが何か勘違いしてない?
その導き出される原則がデザインパターンなんだが何か勘違いしてない?
563デフォルトの名無しさん
2024/02/10(土) 14:46:24.04ID:VP+Iax6j Javarが考えた設計は根本的に汚い
564デフォルトの名無しさん
2024/02/10(土) 14:49:44.24ID:WFGhMJhr オブジェクト指向におけるリスコフの置換原則もクラス継承を前提にしているように
一時期のオブジェクト指向はクラス継承を使うことが前提の狭い話が多かった
元々のオブジェクト指向はオブジェクトに値がカプセル化されてメソッドが公開されてればいい
クラスやクラス継承はオブジェクト指向に必須ではなく害悪のほうが大きい
そのためRustやGoなど多くのモダン言語がクラスを排除している
一時期のオブジェクト指向はクラス継承を使うことが前提の狭い話が多かった
元々のオブジェクト指向はオブジェクトに値がカプセル化されてメソッドが公開されてればいい
クラスやクラス継承はオブジェクト指向に必須ではなく害悪のほうが大きい
そのためRustやGoなど多くのモダン言語がクラスを排除している
565デフォルトの名無しさん
2024/02/10(土) 14:56:46.66ID:iJNhxzEm566デフォルトの名無しさん
2024/02/10(土) 14:58:45.32ID:VP+Iax6j いや、デザインパターンとかいうワードを声高に主張してたのって昔から大体Javarだったって話
567デフォルトの名無しさん
2024/02/10(土) 14:59:40.15ID:iJNhxzEm ついJavaという言葉に反応しちゃったけどよく見たらJavarだった…
568デフォルトの名無しさん
2024/02/10(土) 15:00:30.74ID:iJNhxzEm569デフォルトの名無しさん
2024/02/10(土) 15:16:47.93ID:+PSgdWvA ・コンストラクタと関数を区別するのが面倒臭い
・関数とオブジェクトを区別するのが面倒臭い
・引数リストと普通のリストを区別するのが面倒臭い
デザパタの原則を導き出せばまあこうなる
・関数とオブジェクトを区別するのが面倒臭い
・引数リストと普通のリストを区別するのが面倒臭い
デザパタの原則を導き出せばまあこうなる
570デフォルトの名無しさん
2024/02/10(土) 16:24:25.37ID:YTHRY4oL 今こそ新しいソフトウェア設計の本が必要かもな
オブジェクト指向でも関数型でもない「ふつうのソフトウェア設計入門」みたいな
オブジェクト指向でも関数型でもない「ふつうのソフトウェア設計入門」みたいな
571デフォルトの名無しさん
2024/02/10(土) 16:37:42.00ID:LPOrO1iz 継承抜きオブシコで十分っす
572デフォルトの名無しさん
2024/02/10(土) 16:45:54.10ID:8zmdFTlm なんでrustスレで他言語の雑談始まってしもたん
573デフォルトの名無しさん
2024/02/10(土) 16:58:53.57ID:WFGhMJhr574デフォルトの名無しさん
2024/02/10(土) 17:00:23.08ID:9OXXn/no 継承なんざインターフェースでいくらでも代用できるやん
応用力ないん?
応用力ないん?
575デフォルトの名無しさん
2024/02/10(土) 17:09:17.38ID:qHcm0B3l 従来は継承を使ってカプセル化とポリモーフィズムを実現してたけど、最近は継承を使わずにカプセル化とポリモーフィズムやるのが主流よね
継承をサポートしないならクラスいらないし
継承をサポートしないならクラスいらないし
576デフォルトの名無しさん
2024/02/10(土) 17:37:53.51ID:lWs+b/Tw Rustの型クラスは最強
577デフォルトの名無しさん
2024/02/10(土) 17:45:44.24ID:cODs5/To rustのデザインパターン本こそ現代のソフトウェア開発に必要なものだ
誰か出してくれ
誰か出してくれ
578デフォルトの名無しさん
2024/02/10(土) 17:48:42.70ID:7r8QxWN2579デフォルトの名無しさん
2024/02/10(土) 18:00:46.16ID:5OwpQQMY >>578
デザイン(設計)のパターンの中のひとつにGoFデザインパターンがあるのでは?
デザイン(設計)のパターンの中のひとつにGoFデザインパターンがあるのでは?
580デフォルトの名無しさん
2024/02/10(土) 18:18:59.99ID:cODs5/To >>578
クリーンアーキテクチャとかもろにオブジェクト指向だろ
クリーンアーキテクチャとかもろにオブジェクト指向だろ
581デフォルトの名無しさん
2024/02/10(土) 18:20:18.08ID:iJNhxzEm582デフォルトの名無しさん
2024/02/10(土) 18:22:04.19ID:/ZC4Oa+s 只の道具なんで、向いていれば適応するし、向いてなければ使わない。
宗教的な正しさなんてどうでも良いんですよ。
おまいらは政治将校か?
宗教的な正しさなんてどうでも良いんですよ。
おまいらは政治将校か?
583デフォルトの名無しさん
2024/02/10(土) 18:23:43.39ID:7r8QxWN2 実装パターン < デザインパターン < アーキテクチャパターン
すべてデザイン(設計)のパターンではあるけど対象とする粒度の違いで呼び名が違う
すべてデザイン(設計)のパターンではあるけど対象とする粒度の違いで呼び名が違う
584デフォルトの名無しさん
2024/02/10(土) 18:25:26.70ID:iJNhxzEm Rustでよく使われてるパターンは
レイヤードアーキテクチャ
DDD
クリーンアーキテクチャ
なのかな?他にある?
レイヤードアーキテクチャ
DDD
クリーンアーキテクチャ
なのかな?他にある?
585デフォルトの名無しさん
2024/02/10(土) 18:26:30.51ID:iJNhxzEm >>583
勉強になる👍
勉強になる👍
586デフォルトの名無しさん
2024/02/10(土) 18:27:23.64ID:7r8QxWN2587デフォルトの名無しさん
2024/02/10(土) 18:29:37.58ID:+PSgdWvA588デフォルトの名無しさん
2024/02/10(土) 18:50:48.17ID:cODs5/To589デフォルトの名無しさん
2024/02/10(土) 19:06:04.16ID:kzqqrU6F オブジェクト指向、スタック指向、手続き型しか知らないんだけど他になにがあるの?勉強したいから教えてくれ
590デフォルトの名無しさん
2024/02/10(土) 19:08:51.93ID:kzqqrU6F あと関数型と手続き型の区別がつかない
591デフォルトの名無しさん
2024/02/10(土) 19:19:34.87ID:IjP+HezS 関数型はオブジェクト指向において部分的に使うもの
高階関数とかラムダ式とかはそんなに難しくない
高階関数とかラムダ式とかはそんなに難しくない
592デフォルトの名無しさん
2024/02/10(土) 19:31:34.99ID:76r5Dddg >>590
一緒だよ
一緒だよ
593デフォルトの名無しさん
2024/02/10(土) 19:44:00.53ID:6ZZO7tOM 高階関数は「人間にとって」わかりにくくなるので使うなと
言われているね
あと論理型というのがあったなあ
言われているね
あと論理型というのがあったなあ
594デフォルトの名無しさん
2024/02/10(土) 19:47:12.54ID:IoMlesHJ595デフォルトの名無しさん
2024/02/10(土) 19:50:32.36ID:H74b4wDc オブジェクト指向信者の人達、その時々の優れたものをオブジェクト指向認定してるイメージがある
あるいはオブジェクト指向とはオブジェクト指向を名乗った言語の良いところどりおよびそれと重なる全てと定義していそう
オブジェクト指向信者もJavaは嫌いそう
あるいはオブジェクト指向とはオブジェクト指向を名乗った言語の良いところどりおよびそれと重なる全てと定義していそう
オブジェクト指向信者もJavaは嫌いそう
596デフォルトの名無しさん
2024/02/10(土) 19:52:30.82ID:IoMlesHJ それはそうと継承の省かれたオブジェクト指向はオブジェクト指向と名乗るべきではないと思うんだが、新しい名前は無いの?
597デフォルトの名無しさん
2024/02/10(土) 19:57:03.35ID:iu2BL++f むしろ継承を省かれたぐらいでオブジェクト指向を名乗れなくなる方が意味不明なんだが。
598デフォルトの名無しさん
2024/02/10(土) 20:00:09.44ID:lgwlEc8K オブジェクト指向は単なる理論であって言語がどう実装するかは言語の勝手
599デフォルトの名無しさん
2024/02/10(土) 20:03:05.61ID:6ZZO7tOM 狭義のオブジェクト指向言語は
データと操作を一つにまとめて型として使えるよ
ということだけ
カプセル化、継承、多態性をオブジェクト指向に入れるかどうかは
昔から諸説ある
データと操作を一つにまとめて型として使えるよ
ということだけ
カプセル化、継承、多態性をオブジェクト指向に入れるかどうかは
昔から諸説ある
600デフォルトの名無しさん
2024/02/10(土) 20:03:30.97ID:WFGhMJhr601デフォルトの名無しさん
2024/02/10(土) 20:05:33.42ID:2iG7gUv6 なんかオブジェクト指向といいデザインパターンといい一般的な意味とは違うふうに捉えてる人が多いね
602デフォルトの名無しさん
2024/02/10(土) 20:10:54.41ID:VlV2WaeL オブジェクト指向かどうかはどうでもよくてどういうアーキテクチャで設計して実装するかが重要なんだけど
603デフォルトの名無しさん
2024/02/10(土) 20:13:45.74ID:o2x+aGn+ 関数型プログラミングがどこで使われてるのか調べてみたけどコンピューターサイエンス分野しか見つからない
604デフォルトの名無しさん
2024/02/10(土) 20:22:15.34ID:6cZfMrU8 >>603
関数型プログラミングはただの手続き型プログラミングなんだから当たり前だろ
関数型プログラミングはただの手続き型プログラミングなんだから当たり前だろ
605デフォルトの名無しさん
2024/02/10(土) 20:30:09.19ID:xWWw0qe+ フロントエンド屋か単にスクリプト組むくらいしかやらない人はオブジェクト指向に触れない
実装屋は逆にオブジェクト指向をベースにしたものばっかりやる
オブジェクト指向アンチの正体が分かっちゃうね
実装屋は逆にオブジェクト指向をベースにしたものばっかりやる
オブジェクト指向アンチの正体が分かっちゃうね
606デフォルトの名無しさん
2024/02/10(土) 20:39:26.86ID:U5vUZCjE 手続き型を文芸的にしたのがオブジェクト指向で、数学的にしたのが関数型
607デフォルトの名無しさん
2024/02/10(土) 20:46:30.71ID:lnD8LNvj オブジェクト指向も関数型も確固たる定義がないバズワードだからな
話題にするだけ無駄
話題にするだけ無駄
608デフォルトの名無しさん
2024/02/10(土) 20:54:14.59ID:XEL9SE6k グラデーション的だわな。
常識的な分類として「かなりこっち寄り」くらいに言えるものはあるけど。
文句なく関数型といえる汎用プログラミング言語は Haskell くらいか。
常識的な分類として「かなりこっち寄り」くらいに言えるものはあるけど。
文句なく関数型といえる汎用プログラミング言語は Haskell くらいか。
609デフォルトの名無しさん
2024/02/10(土) 21:00:12.52ID:2fVxDtyX オブシコアンチってなんでアンチやってるの?オブシコへのただならぬ恨みを感じるけど
610デフォルトの名無しさん
2024/02/10(土) 21:04:41.79ID:hNXhuidE 勉強になるような知識どんどん書き込んでくれ
611デフォルトの名無しさん
2024/02/10(土) 21:20:25.37ID:wHWIBAUz オブジェクトを指向指向したら汚いコードがいっぱい出た
612デフォルトの名無しさん
2024/02/10(土) 21:34:14.43ID:t6h0tc+k オブジェクト指向自体には問題はなにもない
問題とされているのはオブジェクト指向ではなくクラス継承
これは実装継承となるアンチパターンなので使ってはいけない
問題とされているのはオブジェクト指向ではなくクラス継承
これは実装継承となるアンチパターンなので使ってはいけない
613デフォルトの名無しさん
2024/02/10(土) 22:00:16.03ID:EoWeXpbc >>612
ここはRustスレで継承問題はクラス機能ごと排除することでとうに解決されているんだがなんで継承問題を擦ってるんです?
ここはRustスレで継承問題はクラス機能ごと排除することでとうに解決されているんだがなんで継承問題を擦ってるんです?
614デフォルトの名無しさん
2024/02/10(土) 22:03:08.49ID:TERvB2uZ みんながRustを使えば解決だね
615デフォルトの名無しさん
2024/02/10(土) 22:07:13.96ID:a08tomEu 一部のRust信者の布教活動がひどかったせいで他スレ住人からさんざんヘイトを買い
普通のRust使いもクソどうでもいいこだわりを押し付けられるばっかりで
有益な情報が集まらないと判断しここを見限った
結果、ここが雑談部屋になることを止めようという勢力はRust信者だけになってしまった
普通のRust使いもクソどうでもいいこだわりを押し付けられるばっかりで
有益な情報が集まらないと判断しここを見限った
結果、ここが雑談部屋になることを止めようという勢力はRust信者だけになってしまった
616デフォルトの名無しさん
2024/02/10(土) 22:12:14.65ID:Bpk68K+1 今どきRustだけしか使えない実装屋なんているわけなくて他の言語の雑談がちゃんと通じるからなにも問題ない
バイリンガルプログラマな姿こそ実装屋が目指すべきところ
バイリンガルプログラマな姿こそ実装屋が目指すべきところ
617デフォルトの名無しさん
2024/02/10(土) 22:14:50.40ID:XEL9SE6k べつに実装継承でもそれ自体が問題ってわけではない。
実装継承が依存を強める (密結合) といったって実際に依存があるものが依存するのは当たり前だし仕方がない。
ただ問題なのは事前に適切な設計をすることもまた出来ないという現実があるってことだ。
プログラムを書き進めたら思ってのと違うかったというときに強固な依存があると軌道修正がしんどい。
実装継承が依存を強める (密結合) といったって実際に依存があるものが依存するのは当たり前だし仕方がない。
ただ問題なのは事前に適切な設計をすることもまた出来ないという現実があるってことだ。
プログラムを書き進めたら思ってのと違うかったというときに強固な依存があると軌道修正がしんどい。
618デフォルトの名無しさん
2024/02/10(土) 22:26:31.80ID:ewSY5W0Q 継承は廃れた技術だから議論する意味がない
関心の分離を意識したプログラミングをしていこう
関心の分離を意識したプログラミングをしていこう
619デフォルトの名無しさん
2024/02/10(土) 22:29:03.46ID:Lf9bQLCg620デフォルトの名無しさん
2024/02/10(土) 22:30:28.98ID:HLmY2iS7621デフォルトの名無しさん
2024/02/10(土) 22:42:16.36ID:+PSgdWvA622デフォルトの名無しさん
2024/02/10(土) 22:56:15.78ID:XEL9SE6k 関数型言語が言う関数ってのは数学用語の関数のことで、
引数と評価結果の関係で表現される。
C とか Rust とかがいう関数のことではないよ。
関数とは呼ばれていても値を返すサブルーチンであって関数ではない。
引数と評価結果の関係で表現される。
C とか Rust とかがいう関数のことではないよ。
関数とは呼ばれていても値を返すサブルーチンであって関数ではない。
623デフォルトの名無しさん
2024/02/10(土) 22:57:32.43ID:YTHRY4oL いやマジレスすなw
624デフォルトの名無しさん
2024/02/10(土) 23:01:02.32ID:2CpL/1KO Deref使った継承もどきは委譲と変わらんよ
継承が敬遠されるのは変数、関数単位でfinalとかsealedで修飾したりprivate/protectedを使い分けないと
基底クラスで満たすべき不変条件を継承クラスでぶっ壊されてしんどいって話だから
基底クラスをブラックボックスで抱えて公開機能だけをそのまま公開する形なら全部委譲してるのと同じ
継承が敬遠されるのは変数、関数単位でfinalとかsealedで修飾したりprivate/protectedを使い分けないと
基底クラスで満たすべき不変条件を継承クラスでぶっ壊されてしんどいって話だから
基底クラスをブラックボックスで抱えて公開機能だけをそのまま公開する形なら全部委譲してるのと同じ
625デフォルトの名無しさん
2024/02/10(土) 23:23:00.37ID:+PSgdWvA 正しい責任転嫁と悪い責任転嫁を区別するのが面倒臭いと思えば全部委譲でいい
正当化が必要と感じる人には継承が必要なのだろう
正当化が必要と感じる人には継承が必要なのだろう
626デフォルトの名無しさん
2024/02/11(日) 08:17:40.00ID:Jcf8p7/N 委譲やるよりインターフェースで共通項をもたせてポリモーフィズムできるほうがスッキリ実装できる
627デフォルトの名無しさん
2024/02/11(日) 08:28:38.26ID:8+WjthrU インターフェースでやるときこそ委譲の使いどころでは?
データレイヤーでのインターフェースRepositoryのImplからDataSourceの各メゾットを呼び出すのはまさしく委譲の考え
データレイヤーでのインターフェースRepositoryのImplからDataSourceの各メゾットを呼び出すのはまさしく委譲の考え
628デフォルトの名無しさん
2024/02/11(日) 09:33:37.86ID:QXc2iF2X オブシコ=オブジェクト指向
で使ってるとやっとわかった。「あたしこ」の「しこ」かと勘違いして訳がわからなかったよ。
で使ってるとやっとわかった。「あたしこ」の「しこ」かと勘違いして訳がわからなかったよ。
629デフォルトの名無しさん
2024/02/11(日) 09:47:23.19ID:mQVY2wVN >>627
レポジトリはドメインレイヤーがやるところでしょ
レポジトリはドメインレイヤーがやるところでしょ
630デフォルトの名無しさん
2024/02/11(日) 12:10:09.20ID:xzgPE83s >>627
delegationとforwardingの区別が付いてないね
delegationとforwardingの区別が付いてないね
631デフォルトの名無しさん
2024/02/11(日) 12:18:42.79ID:eNn3abAv ここで数学用語ではなく、学校では評価されない用語を使うのがオブジェクト指向
632デフォルトの名無しさん
2024/02/11(日) 13:10:55.53ID:5cbdJqGT オブジェクト指向の良い所は真に賢い人は真面目に勉強しないしょうもなさと多彩な用語の数にある
だからオブジェクト指向言語を勉強した人間は真に賢い人間と競合することなくマウントを取ることが出来るようになる
だからオブジェクト指向言語を勉強した人間は真に賢い人間と競合することなくマウントを取ることが出来るようになる
633デフォルトの名無しさん
2024/02/11(日) 13:30:06.52ID:UTHxd4xs634デフォルトの名無しさん
2024/02/11(日) 14:12:49.22ID:tvA72CFJ 自分の使っている用語の定義に無頓着な人が賢いwとか有り得ない
635デフォルトの名無しさん
2024/02/11(日) 14:28:55.59ID:FmT3HYkV636デフォルトの名無しさん
2024/02/11(日) 14:35:31.96ID:eNn3abAv 定義を後出しすることに罪悪感がない人はたぶんもっとリアルな悪を見慣れている
637デフォルトの名無しさん
2024/02/11(日) 15:00:23.67ID:p0mJmxcL Rustにはインターフェースは無くて型クラスはある
型クラスを推してけ
型クラスを推してけ
638デフォルトの名無しさん
2024/02/11(日) 15:56:01.57ID:EVWrf4kv639デフォルトの名無しさん
2024/02/11(日) 16:06:16.13ID:nNzLNGzY オブシコ用語って掛け算順序界隈の主張する「等分除と包含除」とかの仲間だよね
640デフォルトの名無しさん
2024/02/11(日) 16:16:18.76ID:+E66gntj >>639
(^_^)ノ
(^_^)ノ
641デフォルトの名無しさん
2024/02/11(日) 16:21:31.17ID:cP74y9AE 時代はオブシコではなく関数型プログラミング
オブシコは時代遅れ
例えば機械学習は関数型プログラミングやってる
オブシコは時代遅れ
例えば機械学習は関数型プログラミングやってる
642デフォルトの名無しさん
2024/02/11(日) 16:24:12.02ID:aCOYKxUA >>637
型理論においてはどちらも同じ
型理論においてはどちらも同じ
643デフォルトの名無しさん
2024/02/11(日) 16:30:25.25ID:O/MMVA2r なんかみんな単発だからレスバできないなあ
644デフォルトの名無しさん
2024/02/11(日) 20:46:34.90ID:XOn8R4o/ RustがJSを滅ぼしてくれるのはいつになるかいのう……
645デフォルトの名無しさん
2024/02/11(日) 21:26:37.41ID:M/VumamL まず先にDOMを滅ぼしてくれないとRustがウェブを乗っ取れない
DOMがJS依存すぎる
DOMがJS依存すぎる
646デフォルトの名無しさん
2024/02/11(日) 21:51:44.10ID:XOPhWcHA DOMはJSに依存しないしいろんな言語のインターフェースがあるが。
647デフォルトの名無しさん
2024/02/11(日) 22:42:14.41ID:575tRfGH >>646
肝心のWasmにDOM操作を許可しないんじゃ意味ない
肝心のWasmにDOM操作を許可しないんじゃ意味ない
648デフォルトの名無しさん
2024/02/11(日) 22:47:25.71ID:YLWTi6Ka649デフォルトの名無しさん
2024/02/11(日) 22:56:40.04ID:Ij1X5KaV >>648
Wasmから直接DOM操作は不可能
JavaScriptにやってもらうしかない
つまりJavaScriptしかできない
そのため単純なDOM操作だとJavaScriptが有利だが
Wasmで何らかの処理をしつつのDOM操作だとWasmが勝つことが増えていく
Wasmから直接DOM操作は不可能
JavaScriptにやってもらうしかない
つまりJavaScriptしかできない
そのため単純なDOM操作だとJavaScriptが有利だが
Wasmで何らかの処理をしつつのDOM操作だとWasmが勝つことが増えていく
650デフォルトの名無しさん
2024/02/11(日) 23:09:37.71ID:bi52uRem 自演ええて
651デフォルトの名無しさん
2024/02/11(日) 23:36:32.19ID:BuG8Esm8652デフォルトの名無しさん
2024/02/12(月) 00:40:57.30ID:cVfqqlnc tree構造以外である程度の汎用性あるデータ構造なんてないわ。
653デフォルトの名無しさん
2024/02/12(月) 01:04:43.36ID:tgn3NuIP DOMに文句言ったところで何かが変わるわけじゃないからな
どうでもいい話
どうでもいい話
654デフォルトの名無しさん
2024/02/12(月) 10:19:02.60ID:Autq7Dxb >>651
現状JSからしか使えないってのとDOMに欠陥があるかどうかってのは全然別の話だと思うが。
現状JSからしか使えないってのとDOMに欠陥があるかどうかってのは全然別の話だと思うが。
655デフォルトの名無しさん
2024/02/12(月) 10:33:25.13ID:QcKWCRm/ >>654
DOMには安全性のためにJavaScriptでしか触れないのは、DOMの出た当初は良かったが、JavaScript以外の言語も幅広く使われるようになった今ではその設計が古くなって欠陥品になってるのは事実
DOMには安全性のためにJavaScriptでしか触れないのは、DOMの出た当初は良かったが、JavaScript以外の言語も幅広く使われるようになった今ではその設計が古くなって欠陥品になってるのは事実
656デフォルトの名無しさん
2024/02/12(月) 10:41:33.86ID:Autq7Dxb DOMの設計と全然関係ない話。
657デフォルトの名無しさん
2024/02/12(月) 10:51:22.86ID:dpV2oNnW658デフォルトの名無しさん
2024/02/12(月) 11:07:16.48ID:UiVeSAOt domなしでのナビゲーションの方法があってもいいとは思う
659デフォルトの名無しさん
2024/02/12(月) 11:08:30.75ID:CTu12wXT いい加減にDOMはXMLをやめようぜ
無駄な構文が莫大な通信ロスを生んでる
無駄な構文が莫大な通信ロスを生んでる
660デフォルトの名無しさん
2024/02/12(月) 11:23:28.89ID:u1N968/b661デフォルトの名無しさん
2024/02/12(月) 11:28:30.41ID:e3JrcLqa >>655
昔DOMは他の言語からでも直接触れたがほぼ全て淘汰されてJSだけが生き残った
昔DOMは他の言語からでも直接触れたがほぼ全て淘汰されてJSだけが生き残った
662デフォルトの名無しさん
2024/02/12(月) 11:38:53.51ID:nlvJBCEb DOMをゴミと言うのはWindowsをゴミと言ってるのと同等で無駄なこと
663デフォルトの名無しさん
2024/02/12(月) 11:41:30.45ID:dpV2oNnW やりたいことを先に固定してからそれに合わせて物事をコントロール可能にするという順序は逆にしたい
664デフォルトの名無しさん
2024/02/12(月) 13:30:26.12ID:UkU83gVN DOMの代替の候補って存在するのかな
665デフォルトの名無しさん
2024/02/12(月) 13:49:21.10ID:3NLsFenn >>662
Windowsはゴミだから個人も仕事からも排除した
しかしネットがWebベースのこの時代にWebブラウザは排除できない
DOMは取り扱わざるを得ない
とはいえRustによるWasmからの取り扱いは以前よりかなり状況が良くなってきている
まずReference Types の導入によりJavaScriptのオブジェクトをそのまま透過的にだがRust(Wasm)側でも持ったり返したりできるようになった
これはJavaScriptグルーコードの削減をもたらしている
さらにGC対応もメモリ管理のうちJavaScript側依存のものの扱いを任せられるようになりRustでも取り扱いが楽になる
Rust側の内部に閉じたデータのみメモリ管理すればよくなるからだ
Windowsはゴミだから個人も仕事からも排除した
しかしネットがWebベースのこの時代にWebブラウザは排除できない
DOMは取り扱わざるを得ない
とはいえRustによるWasmからの取り扱いは以前よりかなり状況が良くなってきている
まずReference Types の導入によりJavaScriptのオブジェクトをそのまま透過的にだがRust(Wasm)側でも持ったり返したりできるようになった
これはJavaScriptグルーコードの削減をもたらしている
さらにGC対応もメモリ管理のうちJavaScript側依存のものの扱いを任せられるようになりRustでも取り扱いが楽になる
Rust側の内部に閉じたデータのみメモリ管理すればよくなるからだ
666デフォルトの名無しさん
2024/02/12(月) 15:41:26.64ID:QicyHe7E デザインパターンはあくまで定石集なんだから、Rust用のデザインパターン作ればいいだけの話。
「Rustならこんなに簡単にできる」と自慢できるから、信者にとってもいいことかと。
あと、Rustでダックタイピングできたっけ? 事前にTraitで定義しなきゃいけないんだったら面倒だなぁ。
「Rustならこんなに簡単にできる」と自慢できるから、信者にとってもいいことかと。
あと、Rustでダックタイピングできたっけ? 事前にTraitで定義しなきゃいけないんだったら面倒だなぁ。
667デフォルトの名無しさん
2024/02/12(月) 15:46:26.73ID:FSKnAMMD デザインパターンって簡単に実装できるとか
自慢するたぐいのものだっけ?
自慢するたぐいのものだっけ?
668デフォルトの名無しさん
2024/02/12(月) 15:55:33.33ID:Jqge1vnq 単発NG推奨
669デフォルトの名無しさん
2024/02/12(月) 15:56:29.31ID:9yTkyF6j ドメインまわりをフレームワークと分離させる設計ならなんでもいいや
今後リファクタリングすることを考えた設計が大事
今後リファクタリングすることを考えた設計が大事
670デフォルトの名無しさん
2024/02/12(月) 15:56:34.13ID:Jqge1vnq ここはRustスレです消えてください
671デフォルトの名無しさん
2024/02/12(月) 16:00:10.23ID:nHDMmyKy >>666
ダックタイピングは動的型付け言語のためのオモチャであり
デメリットも多いためまともな言語はダックタイピングを排除して別の形を取っている
ダックタイピングは規律のない無政府状態であり可読性も下げデバッグもしにくくなり最悪となる
もちろん実行時の動的型付けの問題もはらんでおり自然の静的なチェックができない
ダックタイピングは動的型付け言語のためのオモチャであり
デメリットも多いためまともな言語はダックタイピングを排除して別の形を取っている
ダックタイピングは規律のない無政府状態であり可読性も下げデバッグもしにくくなり最悪となる
もちろん実行時の動的型付けの問題もはらんでおり自然の静的なチェックができない
672デフォルトの名無しさん
2024/02/12(月) 16:11:47.85ID:KZYjz35/ ダックタイピングというゴミのような方法に対して
Rustはダックタイピングを採用せずに代わりに完璧な方法を用意した
それがtraitのrequired methodsとtrait boundsである
この二つにより全てを解決している
Rustはダックタイピングを採用せずに代わりに完璧な方法を用意した
それがtraitのrequired methodsとtrait boundsである
この二つにより全てを解決している
673デフォルトの名無しさん
2024/02/12(月) 16:12:19.21ID:9yTkyF6j ダックタイピングなんて荒業ではなく、ポリモーフィズムをやりましょ
674デフォルトの名無しさん
2024/02/12(月) 16:23:13.06ID:cVfqqlnc675デフォルトの名無しさん
2024/02/12(月) 18:20:41.31ID:g0MzjlGR676デフォルトの名無しさん
2024/02/12(月) 18:37:22.53ID:NJ55srXB677デフォルトの名無しさん
2024/02/12(月) 18:47:33.19ID:0RqNbR5g Goは実行時にランタイムが動的にvtableを生成してメソッドlookupするわけだから
静的ではないでしょ?
そんなことはC++やRustでは許されない行為だよ
静的ではないでしょ?
そんなことはC++やRustでは許されない行為だよ
678デフォルトの名無しさん
2024/02/12(月) 19:22:42.84ID:QavMz5Qe >>676
TSはanyで型が消えてるときの話じゃないの?
TSはanyで型が消えてるときの話じゃないの?
679デフォルトの名無しさん
2024/02/12(月) 20:01:03.19ID:uYjIYqfU 誰も定義の擦り合わせをしないのでどんどん意思疎通が困難になっていく
680デフォルトの名無しさん
2024/02/12(月) 20:07:14.69ID:uYjIYqfU 一言居士の群れ
681デフォルトの名無しさん
2024/02/12(月) 20:21:22.17ID:oZv/D2wt ダックタイピングは一見するとお手軽に見えるけどプログラミング開発の足を引っ張る悪
Rustは排除しているので大丈夫
そしてRustではトレイト境界により確実に使えるものだけを呼び出せることを静的に保証しつつ用いる
Rustは排除しているので大丈夫
そしてRustではトレイト境界により確実に使えるものだけを呼び出せることを静的に保証しつつ用いる
682デフォルトの名無しさん
2024/02/12(月) 20:24:19.09ID:H9LyWZwk 現代はデザインパターンで設計するんじゃなくフレームワークで作る時代だけどな
683デフォルトの名無しさん
2024/02/12(月) 20:44:24.28ID:5CWzyU2K >>682
そのフレームワークがデザインパターンで出来てるんだけど
そのフレームワークがデザインパターンで出来てるんだけど
684デフォルトの名無しさん
2024/02/12(月) 21:02:02.43ID:g0MzjlGR アルゴリズムはライブラリを一個作れば終わり
もう一個作ったら車輪の再発明
だがデザインのレベルではワンパターンが続いてもなぜか攻撃されない
もう一個作ったら車輪の再発明
だがデザインのレベルではワンパターンが続いてもなぜか攻撃されない
685デフォルトの名無しさん
2024/02/12(月) 21:59:54.43ID:QicyHe7E686デフォルトの名無しさん
2024/02/12(月) 22:09:04.93ID:h7gv4DVB >>685
C++の静的ポリモーフィズムはダックタイピングではない
ダックタイピングは実行時に動的に処理されるものだけを指す
例えばGoはinterfaceでダックタイピングするが実行時にランタイムが動的にitable (interface table)を生成して用いる
これは実行時に動的に処理されるためダックタイピングとなる
もちろん実行時に動的に処理するためダックタイピングはどの言語でも問題を孕んでいる
手軽さとの引き換えだ
C++の静的ポリモーフィズムはダックタイピングではない
ダックタイピングは実行時に動的に処理されるものだけを指す
例えばGoはinterfaceでダックタイピングするが実行時にランタイムが動的にitable (interface table)を生成して用いる
これは実行時に動的に処理されるためダックタイピングとなる
もちろん実行時に動的に処理するためダックタイピングはどの言語でも問題を孕んでいる
手軽さとの引き換えだ
687デフォルトの名無しさん
2024/02/12(月) 22:14:48.84ID:YxZv/CkW C++のtemplate(concepts無し)のダックタイピングが好きなら
genericsよりmacro_rules!の方がいいよ
genericsよりmacro_rules!の方がいいよ
688デフォルトの名無しさん
2024/02/12(月) 22:15:23.35ID:JpOX7sRf C++のtemplateで正しく関数を呼ぶの難しいよ……
689デフォルトの名無しさん
2024/02/12(月) 22:30:02.58ID:DrV/13x2690デフォルトの名無しさん
2024/02/12(月) 22:30:58.32ID:9yTkyF6j C++はちゃんとコンセプト使わないとだめだよ
黒魔術は禁止です
黒魔術は禁止です
691デフォルトの名無しさん
2024/02/12(月) 22:50:06.45ID:kWCXoXun C++のテンプレートは闇深すぎるよね
692デフォルトの名無しさん
2024/02/12(月) 22:50:36.74ID:4VueJhli >>686
C++ のテンプレートが受け入れる型は型同士の関係ではなくその性質に依存する。
一般的にもダッタイピングの典型例として挙げられることは多いし、静的か動的かで区別するという理屈を私が見たのはここがはじめてだ。
C++ のテンプレートが受け入れる型は型同士の関係ではなくその性質に依存する。
一般的にもダッタイピングの典型例として挙げられることは多いし、静的か動的かで区別するという理屈を私が見たのはここがはじめてだ。
693デフォルトの名無しさん
2024/02/12(月) 22:54:09.63ID:RSTU7X98 >>685
Rustのgenericsはtrait boundsにより完璧に静的に安全安心にチェックされ保証できる
Rustのgenericsはtrait boundsにより完璧に静的に安全安心にチェックされ保証できる
694デフォルトの名無しさん
2024/02/12(月) 23:33:02.01ID:g0MzjlGR695デフォルトの名無しさん
2024/02/12(月) 23:52:54.50ID:Dj37TM3K 委譲やダックタイピングを理解してないのもどうかと思ったけど
↓これらの区別ができてないのは致命的だと思うので勉強しようね
静的型付け/動的型付け
静的ポリモーフィズム/動的ポリモーフィズム
静的処理/動的処理
↓これらの区別ができてないのは致命的だと思うので勉強しようね
静的型付け/動的型付け
静的ポリモーフィズム/動的ポリモーフィズム
静的処理/動的処理
696デフォルトの名無しさん
2024/02/13(火) 00:30:00.87ID:xtMg5XLl 確固たる誰しもが認める定義のない言葉を勝手に定義してマウントとるのはやめよう?
697デフォルトの名無しさん
2024/02/13(火) 02:23:26.95ID:vbRTXFPD ファクトチェック界隈では事実かデマかが確固たる論点だよね
公式ルールか、ローカルルールか、という発想はそれ自体がマイノリティ
公式ルールか、ローカルルールか、という発想はそれ自体がマイノリティ
698デフォルトの名無しさん
2024/02/13(火) 03:26:01.95ID:s0kRtfrq オレオレ定義で擬似問題作るの止めろ。
ダックタイピングについてはWikipediaの解説でいいか。
ja.m.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
英語版が一番詳しいかね。
ダックタイピングについてはWikipediaの解説でいいか。
ja.m.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
英語版が一番詳しいかね。
699デフォルトの名無しさん
2024/02/13(火) 07:31:17.64ID:KlTxxkJG >>683
フレームワークがデザインパターンのセオリー通りにできてるかって言ったら意外とセオリーを破って新しいムーブを作ったりするのはよくある
結局パターン通りに作る云々が論じられるのはフレームワークを使う側
フレームワークがデザインパターンのセオリー通りにできてるかって言ったら意外とセオリーを破って新しいムーブを作ったりするのはよくある
結局パターン通りに作る云々が論じられるのはフレームワークを使う側
700デフォルトの名無しさん
2024/02/13(火) 08:18:01.41ID:EJGfS3Xj >>699
アンチパターンや亜種になるだけで全部パターンだぞ
アンチパターンや亜種になるだけで全部パターンだぞ
701デフォルトの名無しさん
2024/02/13(火) 08:30:13.65ID:eXWviQcC はじめにパターンありき、ではない
702デフォルトの名無しさん
2024/02/13(火) 09:29:40.48ID:d0oThnC1 ダックタイピングはお手軽さを上回るデメリットだらけの悪手法
問題もなく安全で高速なRustのトレイト方式が最善策
トレイト境界により安全に呼び出せる範囲を明確にしてる点が要所
問題もなく安全で高速なRustのトレイト方式が最善策
トレイト境界により安全に呼び出せる範囲を明確にしてる点が要所
703デフォルトの名無しさん
2024/02/13(火) 10:20:47.32ID:yeb3oliP うちの講師が全てにおいてPythonに劣った言語って言ってるけどマ?
704デフォルトの名無しさん
2024/02/13(火) 10:23:31.22ID:T85IlqBy >>703
そんなわけないでしょ
そんなわけないでしょ
705デフォルトの名無しさん
2024/02/13(火) 10:29:29.95ID:iVxwtbvh706デフォルトの名無しさん
2024/02/13(火) 10:30:11.10ID:ep9QvdZW >>703
その講師はメインでなにを教えてるん?データサイエンス?少なくともコンピュータ工学やメカトロニクスではなさそう
その講師はメインでなにを教えてるん?データサイエンス?少なくともコンピュータ工学やメカトロニクスではなさそう
707デフォルトの名無しさん
2024/02/13(火) 10:31:44.87ID:mnEJD8Sx >>703
その講師優秀やな
その講師優秀やな
708デフォルトの名無しさん
2024/02/13(火) 11:11:21.55ID:mXdLEMzy >>705
その講師も大概だがお前もデバッグをまともにやったことないだろ。
その講師も大概だがお前もデバッグをまともにやったことないだろ。
709デフォルトの名無しさん
2024/02/13(火) 11:16:14.81ID:iVxwtbvh >>708
Pythonは実行時に発覚するエラーが多すぎてプログラミング言語として辛いんよ
Pythonは実行時に発覚するエラーが多すぎてプログラミング言語として辛いんよ
710デフォルトの名無しさん
2024/02/13(火) 11:22:46.51ID:BKo58x30 ここまで俺の自演
711デフォルトの名無しさん
2024/02/13(火) 11:32:02.27ID:mXdLEMzy712デフォルトの名無しさん
2024/02/13(火) 11:43:25.76ID:bOFev+sF713デフォルトの名無しさん
2024/02/13(火) 11:46:14.62ID:bOFev+sF まあどうせ荒らしのたぐいだろうから安価つけても無視されて無駄なんだろうな
くだらねえほんと
くだらねえほんと
714デフォルトの名無しさん
2024/02/13(火) 11:53:02.08ID:rA+hqhZ3 荒らしに構った時点でお前らの負け
715デフォルトの名無しさん
2024/02/13(火) 11:57:48.21ID:qvC4XjeP >>703が荒らし判定されてて草ww
716デフォルトの名無しさん
2024/02/13(火) 12:05:17.83ID:n6Gkr1cM >>702
trait boundはgenerics と型パラメータの相互依存が重たい気が。
c++ template & conceptみたいに、templateから型パラメータへの一方向依存になるように(型パラメータに指定される型はtemplateから独立するように)できたっけ?
trait boundはgenerics と型パラメータの相互依存が重たい気が。
c++ template & conceptみたいに、templateから型パラメータへの一方向依存になるように(型パラメータに指定される型はtemplateから独立するように)できたっけ?
717デフォルトの名無しさん
2024/02/13(火) 12:09:09.09ID:IxuyFkNI わかる→ Pythonで簡単なスクリプトを書く
キチガイ→ Pythonでプログラミング開発する
キチガイ→ Pythonでプログラミング開発する
718デフォルトの名無しさん
2024/02/13(火) 12:12:34.52ID:KvZIg8uL Pythonでプログラム書くのもちゃんと型書いてlintしたら出来なくもないよ
719デフォルトの名無しさん
2024/02/13(火) 12:15:32.69ID:1UgkqCq+ よく分からんが画像生成系のフロントエンドでrubyベースのってあったっけ?
720デフォルトの名無しさん
2024/02/13(火) 13:03:33.72ID:X5Whr4lm 単発NG推奨
721デフォルトの名無しさん
2024/02/13(火) 13:04:48.12ID:X5Whr4lm 単発NG推奨
連鎖あぼーん推奨
連鎖あぼーん推奨
722デフォルトの名無しさん
2024/02/13(火) 13:49:44.45ID:BKo58x30 スレNG推奨では?
723デフォルトの名無しさん
2024/02/13(火) 14:10:44.85ID:q0xfm82v また境界知能が暴れてんのか
いい加減諦めろよ
いい加減諦めろよ
724デフォルトの名無しさん
2024/02/13(火) 15:09:27.64ID:j+0n3+gu C++20のコンセプトはゴミみたいなenable_if_tを使わなくてよくなって見やすくなったよね
まだまともに使う機会が来なくて慣れてないけど
まだまともに使う機会が来なくて慣れてないけど
725デフォルトの名無しさん
2024/02/13(火) 19:22:36.57ID:ui4ZrT7T XML大嫌い
726デフォルトの名無しさん
2024/02/13(火) 20:34:52.16ID:u8WS3GIa >>716
やりたいことがよく分からないけどtraitのassociation typeで解決しない?
I: Iteratorだと要素の型はI::Item(正確には<I as Iterator>::Item)になるみたいな
C++のconceptだとtypenameに相当するのかな
traitにgenericsの型パラメータ持たせるかassociation type使うかの判断は慣れるまで難しいけど
選択肢が複数あって外部から決められる ⇒ generics型パラメータ(例:AsRef<T>)
traitを実装するときに内部で自動的に決まる ⇒ association type(例:Deref::Target)
みたいに使い分けるといい
全部をgenericsの型パラメータでやろうとするとカオスになる
やりたいことがよく分からないけどtraitのassociation typeで解決しない?
I: Iteratorだと要素の型はI::Item(正確には<I as Iterator>::Item)になるみたいな
C++のconceptだとtypenameに相当するのかな
traitにgenericsの型パラメータ持たせるかassociation type使うかの判断は慣れるまで難しいけど
選択肢が複数あって外部から決められる ⇒ generics型パラメータ(例:AsRef<T>)
traitを実装するときに内部で自動的に決まる ⇒ association type(例:Deref::Target)
みたいに使い分けるといい
全部をgenericsの型パラメータでやろうとするとカオスになる
727デフォルトの名無しさん
2024/02/13(火) 21:06:36.86ID:4D6oEUgV >>716
できる
例えばこのように
https://docs.rs/hyper/latest/hyper/service/trait.Service.html
pub trait Service<Request> {
type Response;
type Error;
type Future: Future<Output = Result<Self::Response, Self::Error>>;
// Required method
fn call(&self, req: Request) -> Self::Future;
}
ここで型パラメタResponseとErrorはこのtraitを実装する各型に依存して決まり
型パラメタResponseは依存しない
>>726
その二種類の混合も可能
できる
例えばこのように
https://docs.rs/hyper/latest/hyper/service/trait.Service.html
pub trait Service<Request> {
type Response;
type Error;
type Future: Future<Output = Result<Self::Response, Self::Error>>;
// Required method
fn call(&self, req: Request) -> Self::Future;
}
ここで型パラメタResponseとErrorはこのtraitを実装する各型に依存して決まり
型パラメタResponseは依存しない
>>726
その二種類の混合も可能
728デフォルトの名無しさん
2024/02/13(火) 21:08:42.27ID:4D6oEUgV729デフォルトの名無しさん
2024/02/13(火) 22:37:37.84ID:s0kRtfrq ちょっと違うなぁ。
c++ template & conceptだと
wandbox.org/permlink/74j79ZQ3mbPb2cLO
みたいな感じでCircleはf()の影響を受けずに独立させることができる。
draw()メソッドというダックテストを満たせば他はどうでも良い。
Rustのgenericsだと
wandbox.org/permlink/CvepQKXOXaNTJoJm
みたいにCircleとf()の間にtrait Dという相互依存ができて、Circleを好き勝手に定義できなくなる。
f()が欲しいのはあくまでdraw()メソッドだけだから、双方にtrait Dが必要になるのは過剰な相互依存になる。
クラスの継承もそうだけど、余計な依存性は面倒だからできるだけ排除したいところ。
c++ template & conceptだと
wandbox.org/permlink/74j79ZQ3mbPb2cLO
みたいな感じでCircleはf()の影響を受けずに独立させることができる。
draw()メソッドというダックテストを満たせば他はどうでも良い。
Rustのgenericsだと
wandbox.org/permlink/CvepQKXOXaNTJoJm
みたいにCircleとf()の間にtrait Dという相互依存ができて、Circleを好き勝手に定義できなくなる。
f()が欲しいのはあくまでdraw()メソッドだけだから、双方にtrait Dが必要になるのは過剰な相互依存になる。
クラスの継承もそうだけど、余計な依存性は面倒だからできるだけ排除したいところ。
730デフォルトの名無しさん
2024/02/13(火) 23:17:32.55ID:RVgq5WHA それはgeneric constraintがnominalかstructuralかという違い
Rustはnominalのみでstructural generic constraintはサポートしてないよ
Rustはnominalのみでstructural generic constraintはサポートしてないよ
731デフォルトの名無しさん
2024/02/13(火) 23:20:56.53ID:KlTxxkJG Pythonは全てにおいてJuliaに劣った言語だな
732デフォルトの名無しさん
2024/02/13(火) 23:28:47.57ID:u8WS3GIa >>729
Circleを
fn f<T: Drawable>(t: &T) -> f64 { t.draw() }
に渡したいなら普通に
impl Drawable for Circle {
fn draw(&self) -> f64 { <Circle as D>::draw(self) }
}
を追加するな
コントラクトの明示を余計な依存関係だとは思わない
ちなみに
impl Circle {
fn draw() -> f64 {...}
}
みたいに本体のimplに定義するとCircleのself.draw()は全部こっちで解決されるから
impl Drawable for Circle {
fn draw(&self) -> f64 { self.draw() }
}
って書ける
1つの型に複数のtraitで同じ名前の関数を持たせるのはRustだとたまに見かける
impl Debugとimpl Displayはどっちもfn fmt()で別の実装するし
Circleを
fn f<T: Drawable>(t: &T) -> f64 { t.draw() }
に渡したいなら普通に
impl Drawable for Circle {
fn draw(&self) -> f64 { <Circle as D>::draw(self) }
}
を追加するな
コントラクトの明示を余計な依存関係だとは思わない
ちなみに
impl Circle {
fn draw() -> f64 {...}
}
みたいに本体のimplに定義するとCircleのself.draw()は全部こっちで解決されるから
impl Drawable for Circle {
fn draw(&self) -> f64 { self.draw() }
}
って書ける
1つの型に複数のtraitで同じ名前の関数を持たせるのはRustだとたまに見かける
impl Debugとimpl Displayはどっちもfn fmt()で別の実装するし
733デフォルトの名無しさん
2024/02/13(火) 23:28:48.94ID:RVgq5WHA >>726
>traitを実装するときに内部で自動的に決まる ⇒ association type(例:Deref::Target)
ある型に対するtrait実装をただ一つだけにしたいものや
自然と一つだけになるような性質のものはassciated typesを使う
使う側はassociated typesのほうが使いやすいので
悩んだらとりあえずassociated typesからはじめてみる
>traitを実装するときに内部で自動的に決まる ⇒ association type(例:Deref::Target)
ある型に対するtrait実装をただ一つだけにしたいものや
自然と一つだけになるような性質のものはassciated typesを使う
使う側はassociated typesのほうが使いやすいので
悩んだらとりあえずassociated typesからはじめてみる
734デフォルトの名無しさん
2024/02/13(火) 23:30:39.22ID:9eHJiOzP735デフォルトの名無しさん
2024/02/13(火) 23:32:24.97ID:RaqlAe+S traitとかいうつまらない機能にこだわってないでPython極めろよ
時代はAIだぞ
時代はAIだぞ
736デフォルトの名無しさん
2024/02/13(火) 23:35:00.89ID:8wj/C7pB >>735
Rustをただ貶したいだけのやつは黙っとけよ雑魚
Rustをただ貶したいだけのやつは黙っとけよ雑魚
737デフォルトの名無しさん
2024/02/14(水) 05:05:25.04ID:uLd8jazY Pythonはスクリプト言語のクセにメソッドチェーンもロクに使えないうんこだからなぁ。
比較で持ち出すならせめてNimにしろよ。
比較で持ち出すならせめてNimにしろよ。
738デフォルトの名無しさん
2024/02/14(水) 05:28:01.52ID:uLd8jazY >732 >734
Rustのtrait boundはあらかじめ型の方でtraitを準備しておかなきゃいけない。
これはRustが嫌っているクラスの継承みたいなもので、genericsやるごとに元の型/traitを弄くり回す必要が出てこない?
呼び出し元が真に必要なのは機能だけなんだから、同じ名前で互換性のある引数型・戻り値型ならそのまま利用できる方が良い。
まあ、ダックタイプみたいに手を抜かずにAdapter作れ、と言う方針でも良いけど、それならAdapter helperをもっと充実して欲しいところ。
AdapterパターンとかDecorator パターンて重要なのに言語側のサポート薄いよなぁ。
Rustのtrait boundはあらかじめ型の方でtraitを準備しておかなきゃいけない。
これはRustが嫌っているクラスの継承みたいなもので、genericsやるごとに元の型/traitを弄くり回す必要が出てこない?
呼び出し元が真に必要なのは機能だけなんだから、同じ名前で互換性のある引数型・戻り値型ならそのまま利用できる方が良い。
まあ、ダックタイプみたいに手を抜かずにAdapter作れ、と言う方針でも良いけど、それならAdapter helperをもっと充実して欲しいところ。
AdapterパターンとかDecorator パターンて重要なのに言語側のサポート薄いよなぁ。
739デフォルトの名無しさん
2024/02/14(水) 06:58:38.09ID:t2TEYrx/ >>738
>>これはRustが嫌っているクラスの継承みたいなもの
クラス継承は基底クラスの実装をそのまま継承する実装継承になっていることが問題点
一方でRustはトレイト境界となるトレイトに対して自分で実装を用意する
したがってRustでは実装継承とはならず問題が生じない
>>これはRustが嫌っているクラスの継承みたいなもの
クラス継承は基底クラスの実装をそのまま継承する実装継承になっていることが問題点
一方でRustはトレイト境界となるトレイトに対して自分で実装を用意する
したがってRustでは実装継承とはならず問題が生じない
740デフォルトの名無しさん
2024/02/14(水) 07:00:00.30ID:HWQ4xiFb 自演きもいなあ
741デフォルトの名無しさん
2024/02/14(水) 07:00:27.71ID:523CbVaw 実装継承はゴミ
742デフォルトの名無しさん
2024/02/14(水) 07:05:57.04ID:Uwd6Wtce743デフォルトの名無しさん
2024/02/14(水) 07:33:52.24ID:uLd8jazY744デフォルトの名無しさん
2024/02/14(水) 08:08:30.71ID:b46uhNiQ >>742
実運用はビルド済だから関係ないな。
実運用はビルド済だから関係ないな。
745デフォルトの名無しさん
2024/02/14(水) 08:09:58.02ID:t2TEYrx/746デフォルトの名無しさん
2024/02/14(水) 08:41:45.06ID:W3PM5KGQ >>745
早すぎる最適化が問題なんだから、トレイトもその問題を引き継いでるぞ
早すぎる最適化が問題なんだから、トレイトもその問題を引き継いでるぞ
747デフォルトの名無しさん
2024/02/14(水) 08:51:32.74ID:t2TEYrx/748デフォルトの名無しさん
2024/02/14(水) 08:55:57.66ID:b46uhNiQ749デフォルトの名無しさん
2024/02/14(水) 09:07:35.89ID:L7EuZktb 真面目に理解したいなら>>730が正解だからstructural typingとnominal typingの意味を調べてくればいいよ
750デフォルトの名無しさん
2024/02/14(水) 09:20:06.07ID:BSRmwKLd >>729
C++は酷いな
struct定義の時点でdraw()宣言を要求してしまうのか
Rustなら
struct定義の時点でdraw()宣言を要求せずに済む
後からdraw()という機能(=Drawableトレイト)が必要になった時点で
structに対してDrawableを実装すればいい
Rustの方が優れてるな
C++は酷いな
struct定義の時点でdraw()宣言を要求してしまうのか
Rustなら
struct定義の時点でdraw()宣言を要求せずに済む
後からdraw()という機能(=Drawableトレイト)が必要になった時点で
structに対してDrawableを実装すればいい
Rustの方が優れてるな
751デフォルトの名無しさん
2024/02/14(水) 09:36:07.02ID:48k6rT3Y752デフォルトの名無しさん
2024/02/14(水) 09:47:17.10ID:c6aYZ04m >>738
根本的な理解がおかしいので説明すると
Rustのtraitは機能を抽象化している
各型はその機能が必要になった時にそのtraitを実装(impl)すればよい
必要な分の各機能(trait)を実装することで結果的に各機能の合成となる
根本的な理解がおかしいので説明すると
Rustのtraitは機能を抽象化している
各型はその機能が必要になった時にそのtraitを実装(impl)すればよい
必要な分の各機能(trait)を実装することで結果的に各機能の合成となる
753デフォルトの名無しさん
2024/02/14(水) 09:59:07.19ID:YhuSf3ik 細かな実装上の違いはあるけど概念レベルでは Rustのトレイトも他言語のインターフェースも同じ
実装上の違いを見て異なる概念だと勘違いしてると本質を見失う
実装上の違いを見て異なる概念だと勘違いしてると本質を見失う
754デフォルトの名無しさん
2024/02/14(水) 10:10:46.95ID:Z6/Yikm0755デフォルトの名無しさん
2024/02/14(水) 10:17:10.59ID:naKe/3pl ダックタイピングという問題ありまくりのものを有り難がるのはバカだけ
756デフォルトの名無しさん
2024/02/14(水) 10:27:45.39ID:s2Ev9A6j >>738
言語側のサポートならマクロで十分でしょ
macro_rules! impl_drawable {
($type:ty) => {
impl $crate::path::to::Drawable for $type {
fn draw(&self) -> f64 { self.draw() }
}
}}
を定義すれば
impl_drawable!(Circle);
だけでimpl Drawable for Cirle {...}を生成できる
渡された型が同じ引数&戻り値のself.draw()をもってないとコンパイルできないから実質ダックタイピング
Drawableに関数を追加したらマクロにも追加すればいい
draw関数の有無だけで照合するのは別の意味のdrawも対象になるから危なっかしい
impl traitだとどのモジュールのDrawableを実装するかまで指定できるから混同の心配がなくなる
言語側のサポートならマクロで十分でしょ
macro_rules! impl_drawable {
($type:ty) => {
impl $crate::path::to::Drawable for $type {
fn draw(&self) -> f64 { self.draw() }
}
}}
を定義すれば
impl_drawable!(Circle);
だけでimpl Drawable for Cirle {...}を生成できる
渡された型が同じ引数&戻り値のself.draw()をもってないとコンパイルできないから実質ダックタイピング
Drawableに関数を追加したらマクロにも追加すればいい
draw関数の有無だけで照合するのは別の意味のdrawも対象になるから危なっかしい
impl traitだとどのモジュールのDrawableを実装するかまで指定できるから混同の心配がなくなる
757デフォルトの名無しさん
2024/02/14(水) 10:44:54.87ID:AzS2pw5X ダックタイピングは使う側が気をつければなにも問題ないんだよなあ
そこらへん理解してないあたり実装をやったことのないエアプなんだろうな
かわいそう
そこらへん理解してないあたり実装をやったことのないエアプなんだろうな
かわいそう
758デフォルトの名無しさん
2024/02/14(水) 10:53:25.15ID:naKe/3pl759デフォルトの名無しさん
2024/02/14(水) 11:07:38.32ID:RfRsJx+N 使う側が気をつけるならC++も問題ないからな
760デフォルトの名無しさん
2024/02/14(水) 11:17:22.43ID:NjTyhCIW761デフォルトの名無しさん
2024/02/14(水) 11:23:15.20ID:FEB+PUkj762デフォルトの名無しさん
2024/02/14(水) 11:28:02.15ID:naKe/3pl ダメ人間の思想「使う側が気をつければ問題ない」によって
今まで数多のなかなか見つからないバグやセキュリティホールを生じてきたのがプログラミング言語の黒歴史
今後はそのような言語を用いてはいけない
今まで数多のなかなか見つからないバグやセキュリティホールを生じてきたのがプログラミング言語の黒歴史
今後はそのような言語を用いてはいけない
763デフォルトの名無しさん
2024/02/14(水) 11:51:49.92ID:L7EuZktb ここで>>9-20の流れを振り返ってみましょう
764デフォルトの名無しさん
2024/02/14(水) 11:52:42.46ID:3OoaoCBc C の後置 ++ 演算子のようなことをする Rust の関数が標準で有ったりしますか?
リファレンスマニュアルをざっとみた感じでは見つけられないのですが……。
具体的に言えば
fn increment(dest: &mut u32) -> u32 {
let t = *dest;
*dest += 1;
t
}
みたいなことをしたくて、いかにもよくありそうなパターンなので標準内にあってもよさそうなもんだと思った次第です。
リファレンスマニュアルをざっとみた感じでは見つけられないのですが……。
具体的に言えば
fn increment(dest: &mut u32) -> u32 {
let t = *dest;
*dest += 1;
t
}
みたいなことをしたくて、いかにもよくありそうなパターンなので標準内にあってもよさそうなもんだと思った次第です。
765デフォルトの名無しさん
2024/02/14(水) 12:13:59.14ID:s2Ev9A6j766デフォルトの名無しさん
2024/02/14(水) 12:19:27.37ID:Cdw7DngV767デフォルトの名無しさん
2024/02/14(水) 12:25:13.12ID:b46uhNiQ768デフォルトの名無しさん
2024/02/14(水) 12:29:23.30ID:naKe/3pl769デフォルトの名無しさん
2024/02/14(水) 12:49:07.16ID:b46uhNiQ770デフォルトの名無しさん
2024/02/14(水) 12:52:16.39ID:KpCwABm3 欠点がない言語なんて無いから言い争ってもね。
771デフォルトの名無しさん
2024/02/14(水) 12:57:57.69ID:p6Tfi6cJ そもそも人間自体が欠陥なんだからその人間の作った言語に欠陥があるのは自明
772デフォルトの名無しさん
2024/02/14(水) 13:07:28.33ID:L7EuZktb たし🦀
773デフォルトの名無しさん
2024/02/14(水) 13:09:31.24ID:aR1xhX8a おれたちは欠陥と共存してよりよいプログラミングスタイルを目指すべき
774デフォルトの名無しさん
2024/02/14(水) 13:16:05.40ID:eD+V22zq drawという名前のメソッドを作ったらそれらが全部ダックタイピングとして使われうることを想定しないといけないのきつすぎる
適当な名前つけたら想定外の使われ方をすることをケアしないといけないわけだ
適当な名前つけたら想定外の使われ方をすることをケアしないといけないわけだ
775デフォルトの名無しさん
2024/02/14(水) 13:33:10.33ID:Q08aEmFz 境界知能が可視化されてる
776デフォルトの名無しさん
2024/02/14(水) 13:53:52.28ID:Z6/Yikm0777デフォルトの名無しさん
2024/02/14(水) 13:55:32.21ID:eD+V22zq778デフォルトの名無しさん
2024/02/14(水) 13:57:04.55ID:s22bd+Hs >>775
お前のこと?
お前のこと?
779デフォルトの名無しさん
2024/02/14(水) 14:31:04.48ID:h4S8S2sP >>777
これな
これな
780デフォルトの名無しさん
2024/02/14(水) 14:41:15.13ID:3OoaoCBc781デフォルトの名無しさん
2024/02/14(水) 15:12:12.70ID:s2Ev9A6j782デフォルトの名無しさん
2024/02/14(水) 15:36:36.14ID:S2bQYQek >>764
Rustで++は排除されている
理由はたくさんあるようだが
例えば今回のそのCコードは*dst++では動かず(*dst)++とする必要があるようにミスが増えるとか
前置と後置の間違いミスも多いことに加えて
生ポインタはsafe Rustから排除されたため*ptr++の形が出て来ないことや
move/copy問題もあったかな
Rustで++は排除されている
理由はたくさんあるようだが
例えば今回のそのCコードは*dst++では動かず(*dst)++とする必要があるようにミスが増えるとか
前置と後置の間違いミスも多いことに加えて
生ポインタはsafe Rustから排除されたため*ptr++の形が出て来ないことや
move/copy問題もあったかな
783デフォルトの名無しさん
2024/02/14(水) 16:02:27.29ID:3OoaoCBc784デフォルトの名無しさん
2024/02/14(水) 16:29:39.74ID:ona7PgM1 >>783
おまえ質問してる分際でキチガイなのか?
そういう態度を改めないなら二度と教えてやらんぞ
fn increment(dest: &mut u32) -> u32 {
std::mem::replace(dest, *dest + 1)
}
おまえ質問してる分際でキチガイなのか?
そういう態度を改めないなら二度と教えてやらんぞ
fn increment(dest: &mut u32) -> u32 {
std::mem::replace(dest, *dest + 1)
}
785デフォルトの名無しさん
2024/02/14(水) 16:36:51.93ID:b+wxXawK 質問している人間相手なら関係ないことを書いて良いわけではない
786デフォルトの名無しさん
2024/02/14(水) 16:42:22.39ID:3OoaoCBc >>784
結果的に役に立たないことがあってもしょうがないですが、関係ないことをアンカーで書くのは正当化できない迷惑行為です。
質問者 (特に初心者?) には迷惑をかけてよいと考えているのだとしたらそれは改めるべき悪です。
結果的に役に立たないことがあってもしょうがないですが、関係ないことをアンカーで書くのは正当化できない迷惑行為です。
質問者 (特に初心者?) には迷惑をかけてよいと考えているのだとしたらそれは改めるべき悪です。
787デフォルトの名無しさん
2024/02/14(水) 16:46:13.61ID:L7EuZktb ついに存在しないCコードの幻覚が見えるようになってしまった複製おじさん……
788デフォルトの名無しさん
2024/02/14(水) 16:46:26.67ID:b+wxXawK 一方、質問文を誤読して解答してしまった人間に対して強く当たって良いわけでもない
789デフォルトの名無しさん
2024/02/14(水) 16:51:03.66ID:3OoaoCBc790デフォルトの名無しさん
2024/02/14(水) 17:05:32.23ID:ZK4bCcm/ 人間の注意力読解力は実際この程度なので、人間にC++を扱うことは難しい
791デフォルトの名無しさん
2024/02/14(水) 17:06:20.11ID:Q08aEmFz だから境界知能なんでしょ
792デフォルトの名無しさん
2024/02/14(水) 17:19:45.82ID:qgmjNVo3 腹立てるのもわからなくはないがそんなにキレてレスするようなことではないだろ
気に入らなかったらスルーする程度には心に余裕を持っておこう
気に入らなかったらスルーする程度には心に余裕を持っておこう
793デフォルトの名無しさん
2024/02/14(水) 17:26:03.70ID:h4S8S2sP tmuxよりscreen派だよ。
794デフォルトの名無しさん
2024/02/14(水) 17:50:47.59ID:6CXfQ6Kw 個人的には後置インクリメントだけを関数化するのは微妙に感じる
fetch_addとかは必要性を理解できるけど単純なpost_addやpost_incrementは一段階上の処理を関数化するので十分でそのほうが見通しがいいように思う
fetch_addとかは必要性を理解できるけど単純なpost_addやpost_incrementは一段階上の処理を関数化するので十分でそのほうが見通しがいいように思う
795デフォルトの名無しさん
2024/02/14(水) 19:51:05.67ID:7rKeAYke >>762
こういう偉そうなこと散々言ってたhaskellがなぜ流行らなかったのかすら理解できてないというのが愚かだよね。
こういう偉そうなこと散々言ってたhaskellがなぜ流行らなかったのかすら理解できてないというのが愚かだよね。
796デフォルトの名無しさん
2024/02/14(水) 19:57:21.78ID:b46uhNiQ797デフォルトの名無しさん
2024/02/14(水) 20:14:14.28ID:yh2p7tDo >>796
C++では機能の異なる同名メソッドを区別できないから欠陥品
C++では機能の異なる同名メソッドを区別できないから欠陥品
798デフォルトの名無しさん
2024/02/14(水) 20:52:10.35ID:b46uhNiQ >>797
引数・戻り値で区別できるだろ。
引数・戻り値で区別できるだろ。
799デフォルトの名無しさん
2024/02/14(水) 21:01:37.45ID:yh2p7tDo >>798
それに依存してしまうのがC++の限界
それに依存してしまうのがC++の限界
800デフォルトの名無しさん
2024/02/14(水) 21:18:41.79ID:b46uhNiQ >>799
名前も引数も戻り値も区別できないんだったら、ダックタイピングで呼び出す側はそもそも区別する必要あるんですかねぇ。
名前も引数も戻り値も区別できないんだったら、ダックタイピングで呼び出す側はそもそも区別する必要あるんですかねぇ。
801デフォルトの名無しさん
2024/02/14(水) 21:58:58.38ID:H5X+9PTs802デフォルトの名無しさん
2024/02/14(水) 22:13:29.10ID:uLd8jazY803デフォルトの名無しさん
2024/02/14(水) 22:26:20.82ID:8gvFvpJ5 traitのprovided methodのdefault実装で呼び出せるのはrequired methodと
trait境界がある場合はそのtraitのmethod
そしてそれらで構成された他のprovided methodのみ
って制限をC++でどうするんだろ
trait境界がある場合はそのtraitのmethod
そしてそれらで構成された他のprovided methodのみ
って制限をC++でどうするんだろ
804デフォルトの名無しさん
2024/02/14(水) 23:19:42.33ID:3OoaoCBc >>803
コンセプト。
コンセプト。
805デフォルトの名無しさん
2024/02/14(水) 23:20:56.22ID:3OoaoCBc >>792
毎度毎度のことで余裕を削られた最後だったんだよ。
毎度毎度のことで余裕を削られた最後だったんだよ。
806デフォルトの名無しさん
2024/02/15(木) 00:20:11.01ID:AyUC+mx+ 毎度毎度のことという認識を持っていながらなぜここに書き込むのか
807デフォルトの名無しさん
2024/02/15(木) 00:23:07.31ID:x2y7hFPc808デフォルトの名無しさん
2024/02/15(木) 07:06:08.60ID:13EQhuxe809デフォルトの名無しさん
2024/02/15(木) 07:43:10.62ID:j4EJcuA3 >>808
洗練されすぎてて「早すぎる最適化」がバンバン起きるけどな。
枯れた既存プログラムの置き換え用途が無難なところかと。
コード破棄前提のプロトタイピングはコスト的にキツイか。問題領域の知識がほとんど無い開発初期で使えるのは未来を予測できる天才ぐらいだろ。
洗練されすぎてて「早すぎる最適化」がバンバン起きるけどな。
枯れた既存プログラムの置き換え用途が無難なところかと。
コード破棄前提のプロトタイピングはコスト的にキツイか。問題領域の知識がほとんど無い開発初期で使えるのは未来を予測できる天才ぐらいだろ。
810デフォルトの名無しさん
2024/02/15(木) 07:55:56.64ID:hKdVOM0D811デフォルトの名無しさん
2024/02/15(木) 08:11:38.37ID:j4EJcuA3812デフォルトの名無しさん
2024/02/15(木) 08:17:50.82ID:Me0Wd39H [Why I Use Golang In 2024](https://www.youtube.com/watch?v=6gwF8mG3UUY)
813デフォルトの名無しさん
2024/02/15(木) 08:19:40.94ID:j4EJcuA3814デフォルトの名無しさん
2024/02/15(木) 08:48:36.69ID:UeUfm3Ct >>812
見た
ほとんどの話がプログラミング言語の比較よりももっと抽象的な話で中身が薄い
そして批判されてるのはなぜかTypeScrpt
Goについてはシンプルなのが好きでジェネリックが導入されてワクワク
Rustはifに括弧がないのたスネークケースが嫌いだけどGoもifに括弧がないよ
Rustの型システムはとても素晴らしいけど、
見た
ほとんどの話がプログラミング言語の比較よりももっと抽象的な話で中身が薄い
そして批判されてるのはなぜかTypeScrpt
Goについてはシンプルなのが好きでジェネリックが導入されてワクワク
Rustはifに括弧がないのたスネークケースが嫌いだけどGoもifに括弧がないよ
Rustの型システムはとても素晴らしいけど、
815デフォルトの名無しさん
2024/02/15(木) 09:52:51.93ID:x2y7hFPc >>808
過去のコードと矛盾しない形での後付けだからな。
C++ を根本から変えるような大革新なのに (ほとんど) 互換性を損なわないように出来ているという意味ではかなり気が利いた設計ではある。
簡単に互換性を切り捨てていると資産が蓄積されないし、かといって変わらないままでもいられないのは宿命というもんだよ。
Rust だって歴史が積み重なればいずれそうなる。
「綺麗なのは使われないもの」という格言を聞いたことないか?
Rust は C++ の歴史のグダグダから学んだ反省としてエディションという概念を導入したが、これがどれくらい上手く機能するかは現時点では未知数だ。
規格策定・処理系保守のリソースは無限なわけではないしな。
過去のコードと矛盾しない形での後付けだからな。
C++ を根本から変えるような大革新なのに (ほとんど) 互換性を損なわないように出来ているという意味ではかなり気が利いた設計ではある。
簡単に互換性を切り捨てていると資産が蓄積されないし、かといって変わらないままでもいられないのは宿命というもんだよ。
Rust だって歴史が積み重なればいずれそうなる。
「綺麗なのは使われないもの」という格言を聞いたことないか?
Rust は C++ の歴史のグダグダから学んだ反省としてエディションという概念を導入したが、これがどれくらい上手く機能するかは現時点では未知数だ。
規格策定・処理系保守のリソースは無限なわけではないしな。
816デフォルトの名無しさん
2024/02/15(木) 09:55:25.99ID:LYiZEs3M エディションはすでに複数あるけど
あっても無理とか問題起きるとか
実例あるの?
あっても無理とか問題起きるとか
実例あるの?
817デフォルトの名無しさん
2024/02/15(木) 10:07:56.04ID:x2y7hFPc >>816
問題が抑えられているのは問題がないように保守されているからで、
その体制を「ずっと」続けられるものかどうかはずっと続けてみないとわからない。
今問題があるとかそういう話じゃないから未知数と述べてる。
問題が抑えられているのは問題がないように保守されているからで、
その体制を「ずっと」続けられるものかどうかはずっと続けてみないとわからない。
今問題があるとかそういう話じゃないから未知数と述べてる。
818デフォルトの名無しさん
2024/02/15(木) 10:11:47.35ID:9MXGquuv C++は貧弱な家を土台に増築工事をしまくって部屋数は多いが使われていない部屋だらけ
C++プログラマーの多くが知らない部屋、見たことない部屋、たどり着けない部屋が多数あるまま、さらに増築工事が進んでいる
C++プログラマーの多くが知らない部屋、見たことない部屋、たどり着けない部屋が多数あるまま、さらに増築工事が進んでいる
819デフォルトの名無しさん
2024/02/15(木) 10:21:13.40ID:qaCOVcST まあいうてもRustも将来的には増築されたバケモノになるか途中で破壊的変更的なものを入れるかするかの選択になるのでは
Cから呼べてCを呼べる限りはどの言語を使っても良いとする立場であれば今一番使いたい言語はRustではある
Cから呼べてCを呼べる限りはどの言語を使っても良いとする立場であれば今一番使いたい言語はRustではある
820デフォルトの名無しさん
2024/02/15(木) 10:32:36.57ID:LYiZEs3M821デフォルトの名無しさん
2024/02/15(木) 10:37:24.02ID:x2y7hFPc 「出来る」ということを大前提として確信できて、
その上で「上手く出来る」ならより良いってのが産業的な考え方だ。
おおよその場合に上手く出来ても
ちょっとした想定外に直面したときに破綻するようでは使い物にならない。
現実の問題ってのは想定してないところから出てくるものだから
そういうことも乗り越えられることを証明するには
実績 (歴史) を重ねるしかしょうがないんだ。
C++ は上手くやったとは言えなくても、汚くても打てる手が有る道具として信頼を得た。
Rust は今の時点では実に使いやすいように見えるが、
本当の意味で現実の使用に耐えうるものなのかは現実に使い倒してみるまでわからない。
その上で「上手く出来る」ならより良いってのが産業的な考え方だ。
おおよその場合に上手く出来ても
ちょっとした想定外に直面したときに破綻するようでは使い物にならない。
現実の問題ってのは想定してないところから出てくるものだから
そういうことも乗り越えられることを証明するには
実績 (歴史) を重ねるしかしょうがないんだ。
C++ は上手くやったとは言えなくても、汚くても打てる手が有る道具として信頼を得た。
Rust は今の時点では実に使いやすいように見えるが、
本当の意味で現実の使用に耐えうるものなのかは現実に使い倒してみるまでわからない。
822デフォルトの名無しさん
2024/02/15(木) 10:38:37.60ID:TrooctNX 今の時点で使いやすければなんでもいいんだYO
823デフォルトの名無しさん
2024/02/15(木) 10:45:22.07ID:9MXGquuv C++コンパイラが諸問題を指摘してコンパイルエラーにしてくれる状況は来そうにない
これだけ増築工事を重ねてもまだ見込みが立たないまま
これだけ増築工事を重ねてもまだ見込みが立たないまま
824デフォルトの名無しさん
2024/02/15(木) 11:47:28.36ID:olqTmpaN C++の知識は大いに再利用されているので現実世界の変化は小さい
想定外かもしれないのは変化の大きさではなく
現実世界を定義できないことだ
定義できるのは理論だけ
想定外かもしれないのは変化の大きさではなく
現実世界を定義できないことだ
定義できるのは理論だけ
825デフォルトの名無しさん
2024/02/15(木) 12:02:34.79ID:oxTsPXaA826デフォルトの名無しさん
2024/02/15(木) 14:40:35.94ID:wvzNp0zm そりゃWeb系だとGoのほうが使いやすいに決まってるでしょ
パフォーマンスもスクリプト言語よりはめちゃくちゃ速いから十分
パフォーマンスもスクリプト言語よりはめちゃくちゃ速いから十分
827デフォルトの名無しさん
2024/02/15(木) 14:47:01.34ID:z+RD4XEG サーバーサイドは群雄割拠時代よね
Rust、Go、Java/Kotlin、C#いっぱいある
Rust、Go、Java/Kotlin、C#いっぱいある
828デフォルトの名無しさん
2024/02/15(木) 16:20:13.71ID:x2y7hFPc829デフォルトの名無しさん
2024/02/15(木) 16:46:19.25ID:606b12LT830デフォルトの名無しさん
2024/02/15(木) 16:50:52.01ID:olqTmpaN すべてを疑っても産業だけは疑いようがないって話なら
想定内と想定外の境界がどの辺にあるのかはなんとなくわかる
想定内と想定外の境界がどの辺にあるのかはなんとなくわかる
831デフォルトの名無しさん
2024/02/15(木) 17:21:54.77ID:SzbBTI0k832デフォルトの名無しさん
2024/02/15(木) 17:26:25.25ID:BHoNDVf7 Rustは非同期処理がC++より扱いやすいおかげでサーバー方面に進出したのは良い
さすがにフロントでRustは微妙そうだけど、このままどんどん多方面に普及してほしい
さすがにフロントでRustは微妙そうだけど、このままどんどん多方面に普及してほしい
833デフォルトの名無しさん
2024/02/15(木) 17:31:26.55ID:dtRRoOMy Ruby は、Go/Rust/Elixir の3大言語を超えた!
Rust の上昇は止まったか?
Stack Overflow 米国年収。2022 -> 2023
Ruby : 9.3 -> 9.9 万ドル
Elixir : 9.3 -> 9.6
Go : 8.9 -> 9.3
Rust : 8.7 -> 8.7
多くの言語 : 6.5〜7 -> 7.3〜7.8
PHP : 5 -> 5.9
Dart : 4.4 -> 5.6
Rust の上昇は止まったか?
Stack Overflow 米国年収。2022 -> 2023
Ruby : 9.3 -> 9.9 万ドル
Elixir : 9.3 -> 9.6
Go : 8.9 -> 9.3
Rust : 8.7 -> 8.7
多くの言語 : 6.5〜7 -> 7.3〜7.8
PHP : 5 -> 5.9
Dart : 4.4 -> 5.6
834デフォルトの名無しさん
2024/02/15(木) 17:35:21.87ID:eOw5Ad1t835デフォルトの名無しさん
2024/02/15(木) 17:41:41.98ID:wvzNp0zm >>812
流し聞きしたけど複雑だとかしょーもない構文の好き嫌いみたいな話しかしてなくて草
流し聞きしたけど複雑だとかしょーもない構文の好き嫌いみたいな話しかしてなくて草
836デフォルトの名無しさん
2024/02/15(木) 17:53:07.04ID:8jpdfcc8 >>835
Rustインフルエンサーの成れの果てですなw
Rustインフルエンサーの成れの果てですなw
837デフォルトの名無しさん
2024/02/15(木) 18:08:05.70ID:uSGIT3N+838デフォルトの名無しさん
2024/02/15(木) 18:08:23.00ID:giVh/goG Goは2年も続けられるだろうか
大分前に少し使ってみたけど例外投げずにResult(タプル)で返す言語設計を採用しながら
返されたResultを無視してもコンパイラが警告出さないからやめた
Cで戻り値のエラーをスルーする事案が多発したから後発言語で例外が作られたのに
↓を見て気持ち悪さを感じる人には向かない
file, err = os.Open(path) // ← fileと一緒にエラーの受け取りを強要される
os.Chdir(path) // ←エラーしか返さないから戻り値を無視して処理を継続できる
大分前に少し使ってみたけど例外投げずにResult(タプル)で返す言語設計を採用しながら
返されたResultを無視してもコンパイラが警告出さないからやめた
Cで戻り値のエラーをスルーする事案が多発したから後発言語で例外が作られたのに
↓を見て気持ち悪さを感じる人には向かない
file, err = os.Open(path) // ← fileと一緒にエラーの受け取りを強要される
os.Chdir(path) // ←エラーしか返さないから戻り値を無視して処理を継続できる
839デフォルトの名無しさん
2024/02/15(木) 18:11:15.85ID:x2y7hFPc >>829
情報が充分じゃない (から議論を始めることさえできない) ことが
リスクだという話をしているつもりなんだが、伝わってないのか?
どんな問題が起こるのか事前にわかれば苦労しないよ。
起きたことに対処し続けるしか仕方がないが
可能なら自分が対処する当事者にはなりたくない。
情報が充分じゃない (から議論を始めることさえできない) ことが
リスクだという話をしているつもりなんだが、伝わってないのか?
どんな問題が起こるのか事前にわかれば苦労しないよ。
起きたことに対処し続けるしか仕方がないが
可能なら自分が対処する当事者にはなりたくない。
840デフォルトの名無しさん
2024/02/15(木) 18:19:47.46ID:SZiIKMeC841デフォルトの名無しさん
2024/02/15(木) 18:24:55.60ID:x2y7hFPc >>838
悪いほうがよい (Worse is Better) 原則というものも知られている。
正しさと単純さを天秤にかけてどちらが良いかという点で Rust とは異なる重みづけをしたのが Go だと思う。
問題をコンパイラが検出できる設計はもちろんありがたいが、そのために持ち込む構造は人間が把握しやすいものだろうか。
正直言って Go が良いとは全然思わないが一貫した理念に基づく判断であって、不備でそうなってるわけではない。
悪いほうがよい (Worse is Better) 原則というものも知られている。
正しさと単純さを天秤にかけてどちらが良いかという点で Rust とは異なる重みづけをしたのが Go だと思う。
問題をコンパイラが検出できる設計はもちろんありがたいが、そのために持ち込む構造は人間が把握しやすいものだろうか。
正直言って Go が良いとは全然思わないが一貫した理念に基づく判断であって、不備でそうなってるわけではない。
842デフォルトの名無しさん
2024/02/15(木) 18:31:33.80ID:j4EJcuA3843デフォルトの名無しさん
2024/02/15(木) 18:34:16.56ID:3rKktGL8 >>817
これはごもっともな意見
50年後にRust 2072エディションがある状況で最新コンパイラが2015エディションをサポートし続けてるとは思えないからどこかでは切ることになる
それでもRustのモデルとC++のモデルとどちらのほうが相対的によさそうかという選択の問題
これはごもっともな意見
50年後にRust 2072エディションがある状況で最新コンパイラが2015エディションをサポートし続けてるとは思えないからどこかでは切ることになる
それでもRustのモデルとC++のモデルとどちらのほうが相対的によさそうかという選択の問題
844デフォルトの名無しさん
2024/02/15(木) 19:40:03.38ID:TrooctNX 50年後にC++23はサポートされているのだろうか
というかC++は50年後もアップデートしているのだろうか
というかC++は50年後もアップデートしているのだろうか
845デフォルトの名無しさん
2024/02/15(木) 19:52:43.98ID:flxKbqvK846デフォルトの名無しさん
2024/02/15(木) 20:00:49.77ID:nijJOd3e >>844
既にC++17とC++20で以前導入の機能の削除が大量に行われている
既にC++17とC++20で以前導入の機能の削除が大量に行われている
847デフォルトの名無しさん
2024/02/15(木) 20:11:12.94ID:Zy70aZMD じゃあもうRustで良いじゃん
848デフォルトの名無しさん
2024/02/15(木) 20:27:48.49ID:Y7OgkdHD CになかったC++の機能は削除してもチューリング完全が保証される
逆に、削除したらチューリング完全ではない保証をするならミニマリズムがベター
逆に、削除したらチューリング完全ではない保証をするならミニマリズムがベター
849デフォルトの名無しさん
2024/02/15(木) 22:27:00.96ID:MX4y8Eg+850デフォルトの名無しさん
2024/02/15(木) 22:56:46.83ID:x2y7hFPc C++ は欠陥報告という制度で過去の規格に遡って修正が加えられることがある。
たとえば C++11 発行当時の C++11 と今の C++11 は内容が異なるわけ。
基本的には過去の仕様に新機能を追加したりはしないが微妙な挙動の変なところを直すような保守は続いている。
実質的には Rust のエディションみたいなことにはなってるんだよなあ。
たとえば C++11 発行当時の C++11 と今の C++11 は内容が異なるわけ。
基本的には過去の仕様に新機能を追加したりはしないが微妙な挙動の変なところを直すような保守は続いている。
実質的には Rust のエディションみたいなことにはなってるんだよなあ。
851デフォルトの名無しさん
2024/02/15(木) 23:13:05.86ID:17JkefKn llvmも実装はc++だし。
852デフォルトの名無しさん
2024/02/15(木) 23:33:02.83ID:CqGYBNeH >>850
Rustは必ずeditionを明示しないといけないから
あるソースコードがどのeditionなら確実に動くのか明確にわかる
そしてそのeditionを指定してコンパイルも通り実行もできる
しかしC++は当初のC++11に従いコンパイルできて動いていたものが
今はC++11の機能のいくつかは削除されてしまっているために
Rustは必ずeditionを明示しないといけないから
あるソースコードがどのeditionなら確実に動くのか明確にわかる
そしてそのeditionを指定してコンパイルも通り実行もできる
しかしC++は当初のC++11に従いコンパイルできて動いていたものが
今はC++11の機能のいくつかは削除されてしまっているために
853デフォルトの名無しさん
2024/02/15(木) 23:44:16.83ID:x2y7hFPc >>852
C++11 は C++11 として存在し続けているので問題になってないという話をしてるんだが
C++11 は C++11 として存在し続けているので問題になってないという話をしてるんだが
854デフォルトの名無しさん
2024/02/15(木) 23:57:58.06ID:m2l7AKkd 一般人と同等の読解力を複オジに期待しないこと
855デフォルトの名無しさん
2024/02/16(金) 01:17:00.51ID:2uzjzXJf cppreference.comの下のほうにちょろっと書いてあるdefect reportってそういうことだったんだ
勉強になるわ〜
勉強になるわ〜
856デフォルトの名無しさん
2024/02/16(金) 02:58:58.82ID:T31Boec7 >>853
名前が同じならなんでも良い…… ってこと!?
名前が同じならなんでも良い…… ってこと!?
857デフォルトの名無しさん
2024/02/16(金) 05:29:44.45ID:VnZfCvN7858デフォルトの名無しさん
2024/02/16(金) 06:06:29.14ID:VMcEA5aE RustのEdition方式が優秀すぎる
新たな機能の規格で分けるのではなく
各Editionは後方互換性の変化で分けているため
過去に書かれたコードも必ず動く
新たな機能の規格で分けるのではなく
各Editionは後方互換性の変化で分けているため
過去に書かれたコードも必ず動く
859デフォルトの名無しさん
2024/02/16(金) 08:50:06.12ID:T31Boec7 >>857
規格が同じといいつつ機能消してんだから同じなのは規格の名前だけじゃん
規格が同じといいつつ機能消してんだから同じなのは規格の名前だけじゃん
860デフォルトの名無しさん
2024/02/16(金) 08:50:57.44ID:T31Boec7 規格から機能ごと消えるんならよう
861デフォルトの名無しさん
2024/02/16(金) 08:57:09.07ID:MpEo3rxP >>859
消してないけど何いってんの?
消してないけど何いってんの?
862デフォルトの名無しさん
2024/02/17(土) 07:36:35.11ID:pKHDV/cx ID:T31Boec7
流石にこいつ日本語能力なさすぎだろ
ガイジかな?
流石にこいつ日本語能力なさすぎだろ
ガイジかな?
863デフォルトの名無しさん
2024/02/17(土) 07:58:38.87ID:y2U3e6uM mojo vs rustでmojo公式とnetflix天才とRust本著者で盛り上がっている
https://www.youtube.com/watch?v=MDblUyz0PtQ
>>814,835
早口なので大変だろうけどちょとした言葉の節々に情報があるからリスニングがんばれ
https://www.youtube.com/watch?v=MDblUyz0PtQ
>>814,835
早口なので大変だろうけどちょとした言葉の節々に情報があるからリスニングがんばれ
864デフォルトの名無しさん
2024/02/17(土) 08:38:43.36ID:P+bU7/QC >>863
copilotで要約して貰うのが時間も短縮できるのに無能だなw
copilotで要約して貰うのが時間も短縮できるのに無能だなw
865デフォルトの名無しさん
2024/02/17(土) 11:31:52.42ID:/wuPDCL7 >>864
この天才同士のディスカッションを楽しめないなんて損してんね🥲
この天才同士のディスカッションを楽しめないなんて損してんね🥲
866デフォルトの名無しさん
2024/02/17(土) 11:55:10.10ID:wfN7KjH7 Netflixの天才とかいうのが胡散臭くて信頼性がないんだけどどういう人なのよ。
867デフォルトの名無しさん
2024/02/17(土) 12:54:06.77ID:p6Fewl3N868デフォルトの名無しさん
2024/02/17(土) 12:58:21.47ID:p6Fewl3N869デフォルトの名無しさん
2024/02/17(土) 17:40:44.30ID:SxaDWram870デフォルトの名無しさん
2024/02/17(土) 18:56:01.48ID:bc7xcSj4 Netflixの天才がいかがでしたかブログレベルの動画を出すとは
871デフォルトの名無しさん
2024/02/17(土) 19:01:49.62ID:hd6B0gbf872デフォルトの名無しさん
2024/02/17(土) 19:07:25.89ID:1+LtKHMi 以前からMojoがCより何倍も速い!とかやってるけど
ベンチ方法や条件などが何かおかしい
ベンチ方法や条件などが何かおかしい
873デフォルトの名無しさん
2024/02/17(土) 20:11:15.92ID:lHr0QJnq SIMDが効くような恣意的なベンチだしな
874デフォルトの名無しさん
2024/02/17(土) 21:00:37.77ID:QWthdRCX でもデータを見てから断罪するのは俗っぽいから
データを見ないでロジハラするのがベター
データを見ないでロジハラするのがベター
875デフォルトの名無しさん
2024/02/17(土) 21:16:16.12ID:lHr0QJnq DynamicVectorは最適化でSIMD使うように最適化されるってだけだろ
あと末尾最適化する
くだらなすぎる
あと末尾最適化する
くだらなすぎる
876デフォルトの名無しさん
2024/02/17(土) 21:40:36.38ID:WeOJL5ES え? Rustって末尾最適化できんの?
877デフォルトの名無しさん
2024/02/17(土) 23:56:23.75ID:uU5eCENW Rust Reserved keywords
KW_ABSTRACT : abstract
KW_BECOME : become
KW_BOX : box
KW_DO : do
KW_FINAL : final
KW_MACRO : macro
KW_OVERRIDE : override
KW_PRIV : priv
KW_TRY : try
KW_TYPEOF : typeof
KW_UNSIZED : unsized
KW_VIRTUAL : virtual
KW_YIELD : yield
KW_ABSTRACT : abstract
KW_BECOME : become
KW_BOX : box
KW_DO : do
KW_FINAL : final
KW_MACRO : macro
KW_OVERRIDE : override
KW_PRIV : priv
KW_TRY : try
KW_TYPEOF : typeof
KW_UNSIZED : unsized
KW_VIRTUAL : virtual
KW_YIELD : yield
878デフォルトの名無しさん
2024/02/18(日) 09:43:13.97ID:2fU6EVDD879デフォルトの名無しさん
2024/02/18(日) 10:23:17.76ID:8VIVYK48 あれを見て本当にRustが遅いと思っちゃう層の人にRustは向いてない
880デフォルトの名無しさん
2024/02/18(日) 10:24:13.10ID:8VIVYK48 ちなみにSIMD云々は本質じゃないよ
881デフォルトの名無しさん
2024/02/18(日) 10:33:07.03ID:diN1NxZN >>879が3倍速いRustコードを出すってよ
882デフォルトの名無しさん
2024/02/18(日) 10:46:23.01ID:fnRzA2e2 これはGoの方が速いんじゃないか?
883デフォルトの名無しさん
2024/02/18(日) 11:13:09.56ID:NoFg1fuK GoはGCを伴う言語だから論外
MojoはC/C++/Rustより3倍速い
MojoはC/C++/Rustより3倍速い
884デフォルトの名無しさん
2024/02/18(日) 11:27:28.89ID:YdXgtYKq885デフォルトの名無しさん
2024/02/18(日) 11:36:55.83ID:a/PaZk8n そういえば昔Delphiがコンパイルの速さを売りにしてたの思い出した
なんか懐かしい
なんか懐かしい
886デフォルトの名無しさん
2024/02/18(日) 12:18:39.29ID:Wi99yBdV 20年後にRustを懐かしむスレはここですか?
887デフォルトの名無しさん
2024/02/18(日) 14:55:22.54ID:LhS8zjp4 20年後には流石にもっと良い言語が登場して流行っていることを期待している
888デフォルトの名無しさん
2024/02/18(日) 15:22:23.80ID:L2mk1x1a889デフォルトの名無しさん
2024/02/18(日) 15:34:23.48ID:CKqOMEmo >>888
MAUIくん!病室に戻るんだ!
MAUIくん!病室に戻るんだ!
890デフォルトの名無しさん
2024/02/19(月) 09:27:30.10ID:JlpPRp2V891デフォルトの名無しさん
2024/02/19(月) 10:19:49.07ID:j7eyydGe 普通の人が実務で使うような汎用プログラミング言語は
とびぬけた画期的なパラダイムで構成しても使い難いし、
ひとつひとつはどうということはない要素を上手く組み合わせる
バランス感覚が重要って感じはあるね。
天才的な閃きでどうにかするようなものではない。
とびぬけた画期的なパラダイムで構成しても使い難いし、
ひとつひとつはどうということはない要素を上手く組み合わせる
バランス感覚が重要って感じはあるね。
天才的な閃きでどうにかするようなものではない。
892デフォルトの名無しさん
2024/02/19(月) 11:58:45.15ID:r1DaNm3S 既存のものをうまく組み合わせたりリーダーシップをとったりするのに天賦の才があったという意味なら天才かな
893デフォルトの名無しさん
2024/02/19(月) 12:07:19.13ID:BnjhEPJH 自分は何も出来ない無才なのによく言うわw
894デフォルトの名無しさん
2024/02/19(月) 14:11:02.99ID:JlpPRp2V C#→Javaのビミョーなところを直す
Delphi→Pascalのビミョーなところを直す
TypeScript→JSに型付け
Delphi→Pascalのビミョーなところを直す
TypeScript→JSに型付け
895デフォルトの名無しさん
2024/02/19(月) 14:41:59.29ID:FfoO1n86 Rustのビミョーなところを直して欲しい
896デフォルトの名無しさん
2024/02/19(月) 15:33:58.75ID:BnjhEPJH R#だすかー
897デフォルトの名無しさん
2024/02/19(月) 16:37:49.01ID:pyxz0P7h Turbo PascalやDelphiやVisual J++は彼か作ったと言えるがTypeScriptはHejlsbergが作ったわけじゃないからな
広報+コントリビューター+社外との政治的調整役
広報+コントリビューター+社外との政治的調整役
898デフォルトの名無しさん
2024/02/19(月) 18:10:38.68ID:VthC7yJG R#とか絶対統計処理用の言語じゃん
899デフォルトの名無しさん
2024/02/19(月) 18:20:06.89ID:BnjhEPJH そうだな
じゃあRustyNailって名前にするか
じゃあRustyNailって名前にするか
900デフォルトの名無しさん
2024/02/19(月) 18:38:07.38ID:j7eyydGe ビミョーなところをどうにかしたってどうせ別のビミョーなところが出てくるに決まってるんだよ。
だましだまし発展させて行き詰まったあたりでまた新しい何かが登場するのが世の中のサイクルというもんだ。
だましだまし発展させて行き詰まったあたりでまた新しい何かが登場するのが世の中のサイクルというもんだ。
901デフォルトの名無しさん
2024/02/19(月) 18:50:17.05ID:JlpPRp2V 割とマジでヘルスバーグ動きますの可能性はある
Carbon、Go→Google
Rust→Mozilla
?→Microsoft
この流れは確かにある
Carbon、Go→Google
Rust→Mozilla
?→Microsoft
この流れは確かにある
902デフォルトの名無しさん
2024/02/19(月) 20:05:38.11ID:gidehIA9 GoogleもMicrosoftもRust支持で
Carbonの公式FAQにはRustが使えるならRustが良いと明記されている
Carbonの公式FAQにはRustが使えるならRustが良いと明記されている
903デフォルトの名無しさん
2024/02/19(月) 20:34:12.24ID:VthC7yJG Rust支持というより、現状最良の選択肢がRustであると認めているだけでは
なのでもっと良い選択肢を作ることが出来たら嬉々として打ち出してくる可能性はあると思う
なのでもっと良い選択肢を作ることが出来たら嬉々として打ち出してくる可能性はあると思う
904デフォルトの名無しさん
2024/02/19(月) 20:55:09.09ID:WSW9DaUh 代替の芽が今ないから早くて十数年以上先
MojoはPythonベースで関心が数値計算に向いていて違う
MojoはPythonベースで関心が数値計算に向いていて違う
905デフォルトの名無しさん
2024/02/19(月) 20:57:44.38ID:34j+4tJw Netflixの天才は2年かけて右端の住人になったのか
https://pbs.twimg.com/media/GDa2G6iWIAAsyh3.jpg:orig
これからは目立った実績が無いのにRust歴が長いと
型〇ナニーで時間溶かしてると認定される
https://pbs.twimg.com/media/GDa2G6iWIAAsyh3.jpg:orig
これからは目立った実績が無いのにRust歴が長いと
型〇ナニーで時間溶かしてると認定される
906デフォルトの名無しさん
2024/02/19(月) 21:23:20.71ID:MW9zngaI907デフォルトの名無しさん
2024/02/19(月) 21:38:55.37ID:BnjhEPJH >>906
結局さ一周回ってAdaで良いんじゃ?
結局さ一周回ってAdaで良いんじゃ?
908デフォルトの名無しさん
2024/02/19(月) 21:46:39.06ID:VDl5KQ6V オーガスタちゃんが平伏せと命令する言語?
909デフォルトの名無しさん
2024/02/19(月) 22:19:23.32ID:hvnIqBoW Web用途だとRustはtokioと関連ライブラリが必須だからGoよりランタイム大きくなるけどね
910デフォルトの名無しさん
2024/02/19(月) 22:41:42.37ID:+OQMy10I911デフォルトの名無しさん
2024/02/19(月) 23:17:36.45ID:aeOZND98 サーバーエンドでバイナリサイズなんてどうでもいいけど専有メモリ量がJavaやGoより小さいのはよい
912デフォルトの名無しさん
2024/02/20(火) 03:09:16.36ID:sgoVzbhC Rustってcargo buildとかやると通信量結構えげつない
913デフォルトの名無しさん
2024/02/20(火) 08:39:03.07ID:VuVDzPkr 依存関係があるライブラリをダウンロードすれば Rust に限らず
それなりにたいくさんひっついてくるのはよくあること。
それなりにたいくさんひっついてくるのはよくあること。
914デフォルトの名無しさん
2024/02/20(火) 08:51:21.95ID:HobPlk1l C++でビルドする前にapt-getしてね、ってのも同じことだしな
915デフォルトの名無しさん
2024/02/20(火) 09:54:42.94ID:avQkuhyK Rustだと依存ライブラリの数が桁違いに多くなるのが原因
916デフォルトの名無しさん
2024/02/20(火) 10:20:25.82ID:VuVDzPkr お前それ、 JavaScript の前でも同じこと言えるの?
917デフォルトの名無しさん
2024/02/20(火) 10:20:33.45ID:kmanQ674918デフォルトの名無しさん
2024/02/20(火) 13:00:59.06ID:MPPpoDC+ >>907
ブロックが波カッコだったらなぁと思ったことある。
ブロックが波カッコだったらなぁと思ったことある。
919デフォルトの名無しさん
2024/02/20(火) 13:46:52.53ID:sgoVzbhC 一回DLしたパッケージOSにキャッシュしてくれればいいんだけど
そうじゃないから学習でやってると無尽蔵に取りにいくのはなんとかならんのか
そうじゃないから学習でやってると無尽蔵に取りにいくのはなんとかならんのか
920デフォルトの名無しさん
2024/02/20(火) 14:05:25.22ID:VuVDzPkr >>919
えっ、普通にキャッシュしますが……。
えっ、普通にキャッシュしますが……。
921デフォルトの名無しさん
2024/02/20(火) 14:18:44.11ID:YaBXE8T+922デフォルトの名無しさん
2024/02/20(火) 14:47:39.06ID:NZma60kC それよりディスク使いすぎだろ
ビルドの中間生成物が簡単にギガ単位になる
ビルドの中間生成物が簡単にギガ単位になる
923デフォルトの名無しさん
2024/02/20(火) 15:44:30.40ID:s70xdtq8924デフォルトの名無しさん
2024/02/20(火) 15:54:29.36ID:VuVDzPkr 大きなライブラリは動的リンクすることにしてもいいけど、
そしたら実行環境の管理と開発環境の管理を分離しづらくて面倒くさくなる。
どうやったってどこかに負担はかかるならストレージさえあれば
だいたい解決ってほうがいいという戦略なんだろ。
そしたら実行環境の管理と開発環境の管理を分離しづらくて面倒くさくなる。
どうやったってどこかに負担はかかるならストレージさえあれば
だいたい解決ってほうがいいという戦略なんだろ。
925デフォルトの名無しさん
2024/02/20(火) 18:32:02.94ID:NZma60kC Rustほどディスク使う言語他にあるの?
桁違いに多いと思うんだが
桁違いに多いと思うんだが
926デフォルトの名無しさん
2024/02/20(火) 18:32:44.23ID:pzacWR0B ディスクはまあTB行かなければ何をやっても良いわ
927デフォルトの名無しさん
2024/02/20(火) 18:46:34.01ID:2x98KEBQ ビルドキャッシュの一部を何もしなくてもプロジェクト跨いで共有してくれればまだいいんだけどね
用途的に外部ストレージやNASに置くようなものじゃないというのが困るところ
用途的に外部ストレージやNASに置くようなものじゃないというのが困るところ
928デフォルトの名無しさん
2024/02/20(火) 18:56:04.80ID:qhUDP5tY Rust (cargo)のソースダウンロードしてすべて同一マシンでビルドする前提の設計はいいと思う。
soとかdllとかjarみたいなの、あまり信頼したくないというか。
soとかdllとかjarみたいなの、あまり信頼したくないというか。
929デフォルトの名無しさん
2024/02/20(火) 19:01:23.73ID:aUCxPGU2 Crates.ioを信頼してどうせ落ちてきたもの毎回ソース全行確認したりはしないんだから、落ちてくるものがバイナリになっても別に良いかな
930デフォルトの名無しさん
2024/02/20(火) 19:12:55.50ID:HobPlk1l so使ってsymbol not foundとかよくあるしな
基本的にC++ソフトのビルドは作者が使ってるディストリでしか再現しないと思ったほうがいいくらい
しょうがないからDockerでビルド環境作ったりするけど面倒だしディスクも食うし
結局ディスクキャッシュが多少多いくらいで済んでるRustが一番マシな気がする
基本的にC++ソフトのビルドは作者が使ってるディストリでしか再現しないと思ったほうがいいくらい
しょうがないからDockerでビルド環境作ったりするけど面倒だしディスクも食うし
結局ディスクキャッシュが多少多いくらいで済んでるRustが一番マシな気がする
931デフォルトの名無しさん
2024/02/20(火) 19:56:43.04ID:hRyg00SZ soが悪いのではなくまともなパッケージマネージャーもまともな依存解決ツールもないのが悪い
932デフォルトの名無しさん
2024/02/20(火) 20:07:01.59ID:+of8n4/M 確かにOS非依存のC++標準パッケージマネージャと中央レジストリがあれば良かったかもね
ただその場合でもABIが不安定なのはどうしょうもないから
Rustと同じく手元で全部コンパイルする方式になったと思うけど
ただその場合でもABIが不安定なのはどうしょうもないから
Rustと同じく手元で全部コンパイルする方式になったと思うけど
933デフォルトの名無しさん
2024/02/20(火) 20:11:30.03ID:VuVDzPkr Cargo 風の管理をする C++ 用パッケージマネージャはある。
最初からそのパッケージマネージャ用に構成してくれてないと
なかなか素直にはビルドできないことに変わりないんだけど。
パッケージマネージャが優秀でも C++ 世界では
「統一されていない」ことが面倒くささになってる。
最初からそのパッケージマネージャ用に構成してくれてないと
なかなか素直にはビルドできないことに変わりないんだけど。
パッケージマネージャが優秀でも C++ 世界では
「統一されていない」ことが面倒くささになってる。
934デフォルトの名無しさん
2024/02/20(火) 21:39:15.46ID:1smOJz8O そう考えると中間言語形式で配布できてAOTコンパイルもできる.NETがさいつよって話?
935デフォルトの名無しさん
2024/02/20(火) 21:43:07.30ID:BYbBGAeA NuGetが使いやすいと感じた事がないし、充実していると感じたこともない
936デフォルトの名無しさん
2024/02/20(火) 21:59:58.18ID:VuVDzPkr >>934
dotNET は事前コンパイルしてもランタイムサポートの分厚さ (にかかる実行コスト) は避けられないので
コンピュータの性能を絞りきるようなつよつよ最適化は無理じゃないかなぁ。
いろんな方式の良いところを上手く取り入れて総合的には良いものに仕上がってるとは思うけど
それが最強かというと状況によるんじゃないの。
dotNET は事前コンパイルしてもランタイムサポートの分厚さ (にかかる実行コスト) は避けられないので
コンピュータの性能を絞りきるようなつよつよ最適化は無理じゃないかなぁ。
いろんな方式の良いところを上手く取り入れて総合的には良いものに仕上がってるとは思うけど
それが最強かというと状況によるんじゃないの。
937デフォルトの名無しさん
2024/02/20(火) 22:14:04.42ID:sgoVzbhC >>921
チャプターサンプル毎にプロジェクト作ったら毎回DLしてるように見えるけど
チャプターサンプル毎にプロジェクト作ったら毎回DLしてるように見えるけど
938デフォルトの名無しさん
2024/02/20(火) 22:16:27.29ID:FbkkUU+G パッケージの使い勝手という意味ではdocs.rsの存在も大きい気がするな
どんな野良ライブラリでも決まった場所に決まったフォーマットのAPI一覧が確実に存在するというのはかなり便利
どんな野良ライブラリでも決まった場所に決まったフォーマットのAPI一覧が確実に存在するというのはかなり便利
939デフォルトの名無しさん
2024/02/20(火) 22:30:04.17ID:VuVDzPkr ドキュメントを全く書かなくても少なくとも公開されている一覧はわかるってのは強い。
最悪の場合でもコードへのリンクもあるし。
Haskell のリポジトリがこういう感じだったので他の言語でもこれくらいやればいいのにと思ってたから
Rust で取り入れてくれたのはかなり嬉しい。
最悪の場合でもコードへのリンクもあるし。
Haskell のリポジトリがこういう感じだったので他の言語でもこれくらいやればいいのにと思ってたから
Rust で取り入れてくれたのはかなり嬉しい。
940デフォルトの名無しさん
2024/02/20(火) 22:37:39.60ID:NZma60kC >>926
いや、スマホでセルフ開発する時に困るだろ?
いや、スマホでセルフ開発する時に困るだろ?
941デフォルトの名無しさん
2024/02/20(火) 22:45:53.34ID:VuVDzPkr >>940
そんなやつはおらんで〜〜
そんなやつはおらんで〜〜
942デフォルトの名無しさん
2024/02/20(火) 22:47:07.61ID:1CgxDriU ス、スマホ?
943デフォルトの名無しさん
2024/02/20(火) 23:05:21.55ID:YDnp1LJs procマクロとかコンパイル環境で展開したいものを除くとtarget指定した環境に依存するだけだから手元でコンパイルする必要性は全くない
いずれにしろどこでビルドするかと中間生成物のサイズが異常にデカくなる話とは別の話だよね
いずれにしろどこでビルドするかと中間生成物のサイズが異常にデカくなる話とは別の話だよね
944デフォルトの名無しさん
2024/02/20(火) 23:07:55.15ID:VuVDzPkr もしスマホで開発する人がいたとしても
レンタルサーバに接続して表面上の操作にスマホを使うだけで、
実質的なストレージ・計算リソースはサーバのものを使う形にするのが普通。
スマホ内で完結させようとしたらツールチェインをセットアップするだけでもクソ面倒くさい話になるぞ。
レンタルサーバに接続して表面上の操作にスマホを使うだけで、
実質的なストレージ・計算リソースはサーバのものを使う形にするのが普通。
スマホ内で完結させようとしたらツールチェインをセットアップするだけでもクソ面倒くさい話になるぞ。
945デフォルトの名無しさん
2024/02/21(水) 00:35:56.53ID:ax8uXPdD 働いてないとスマホで開発するとかいう前代未聞の人間がいるんだな
946デフォルトの名無しさん
2024/02/21(水) 01:44:30.82ID:q3i686zw スマホで開発はむしろ最先端
947デフォルトの名無しさん
2024/02/21(水) 05:17:16.65ID:cGlapTzK iPhoneが出たばかりの頃から、脱獄して開発環境を入れてObjective-Cでプログラミングしてる人は一定数居ただろ。
最近では、どのプログラミング言語でも使えてLinux(Android)と遜色ないよ。
今のスマホは、外部モニターも外部SSDも繋げるし、外部グラボのGPUでLLM開発だってできる。ほぼほぼRaspberryPi5と変わらないよ。
だからこそ組み込みにも強いRustが注目されてるんジャマイカ
最近では、どのプログラミング言語でも使えてLinux(Android)と遜色ないよ。
今のスマホは、外部モニターも外部SSDも繋げるし、外部グラボのGPUでLLM開発だってできる。ほぼほぼRaspberryPi5と変わらないよ。
だからこそ組み込みにも強いRustが注目されてるんジャマイカ
948デフォルトの名無しさん
2024/02/21(水) 05:44:41.84ID:cGlapTzK スマホでRustformersからLLM開発する場合、ローカルにOllama入れとくか、サーバにGPT-4やLlama2を入れとくかぐらいの違いしかない。
Google Coralもスマホでも使える前提の製品で、このチップは発熱量が減ればスマホに内蔵されるだろう。
実際、Vision Transformerのような技術を応用しているApple Vision Proが製品化されたから、スマホからこういった機器に移行するのかもしれない。
今後数年間、これらの技術動向から目が離せない状況が続くんだろう。
Google Coralもスマホでも使える前提の製品で、このチップは発熱量が減ればスマホに内蔵されるだろう。
実際、Vision Transformerのような技術を応用しているApple Vision Proが製品化されたから、スマホからこういった機器に移行するのかもしれない。
今後数年間、これらの技術動向から目が離せない状況が続くんだろう。
949デフォルトの名無しさん
2024/02/21(水) 08:28:43.22ID:/iiJfWDN ダウンロードしたクレートキャッシュの自動削除はもうすぐ来そう
ビルドキャッシュの自動削除はその後実装予定っぽい
https://blog.rust-lang.org/2023/12/11/cargo-cache-cleaning.html
ビルドキャッシュの自動削除はその後実装予定っぽい
https://blog.rust-lang.org/2023/12/11/cargo-cache-cleaning.html
950デフォルトの名無しさん
2024/02/21(水) 08:31:36.21ID:/iiJfWDN グローバルなビルドキャッシュ共有の話も予定には挙がってるね
951デフォルトの名無しさん
2024/02/21(水) 09:05:07.84ID:33Eh81yS >>934
何を基準でさいつよかの定義による
デスクトップ
Web
バックエンド
iOS/Android
ゲーム
とC#だけで全部作れる
各分野でベストな選択肢では無いけど平均点以上のベターではある
とりあえずC#使えれば何でも作れるという意味ではさいつよ
何を基準でさいつよかの定義による
デスクトップ
Web
バックエンド
iOS/Android
ゲーム
とC#だけで全部作れる
各分野でベストな選択肢では無いけど平均点以上のベターではある
とりあえずC#使えれば何でも作れるという意味ではさいつよ
952デフォルトの名無しさん
2024/02/21(水) 09:19:16.71ID:VUY6mIOu >>951
.netの毎年の長文blog最適化レポートを見ると2年後くらいでNativeAOT最適化がC/C++に肉薄すると思う
.netの毎年の長文blog最適化レポートを見ると2年後くらいでNativeAOT最適化がC/C++に肉薄すると思う
953デフォルトの名無しさん
2024/02/21(水) 10:25:34.81ID:ygn/feiE デスクトップ
Web
バックエンド
iOS/Android
ゲーム
とC言語だけで全部作れる
各分野でベストな選択肢では無いけど平均点以上のベターではある
とりあえずC言語使えれば何でも作れるという意味ではさいつよ
チューリング完全なので
Web
バックエンド
iOS/Android
ゲーム
とC言語だけで全部作れる
各分野でベストな選択肢では無いけど平均点以上のベターではある
とりあえずC言語使えれば何でも作れるという意味ではさいつよ
チューリング完全なので
954デフォルトの名無しさん
2024/02/21(水) 10:33:55.14ID:3B94ePzU 無能なやつほどゴールデンハンマー症候群に罹患しやすい
955デフォルトの名無しさん
2024/02/21(水) 10:37:42.60ID:33Eh81yS >>953
嘘ばっかりだなw
嘘ばっかりだなw
956デフォルトの名無しさん
2024/02/21(水) 12:23:52.50ID:FRHKNAr+957デフォルトの名無しさん
2024/02/21(水) 12:50:43.67ID:ax8uXPdD マジでスマホしか持ってないの?
クソワロタ
クソワロタ
958デフォルトの名無しさん
2024/02/21(水) 13:41:48.13ID:s/93fWsg ウェアラブル系の機器には失望した。
どこへでも持っていけるよりどこへも往く必要のないインフラこそ目指すべき未来だろ。
どこへでも持っていけるよりどこへも往く必要のないインフラこそ目指すべき未来だろ。
959デフォルトの名無しさん
2024/02/21(水) 14:32:00.13ID:T2E+AzfY >>954
同意
同意
960デフォルトの名無しさん
2024/02/21(水) 15:10:22.61ID:KvtS9dqN >>958
背もたれ付きベッド
背もたれ付きベッド
961デフォルトの名無しさん
2024/02/21(水) 15:11:12.28ID:KvtS9dqN >>953
Rustはチューリング安全だぞ
Rustはチューリング安全だぞ
962デフォルトの名無しさん
2024/02/21(水) 16:06:34.40ID:RjxZ1GsP >>957
働いてないと「スマホで開発==スマホしか持ってない」という発想になるんだなww
働いてないと「スマホで開発==スマホしか持ってない」という発想になるんだなww
963デフォルトの名無しさん
2024/02/21(水) 16:15:10.41ID:cGlapTzK >>960
ベッドといえばフランスベッドが取り扱ってるAI 視覚支援機器『オーカム マイアイ2』(OrCam MyEye 2)は、
イスラエルのオーカムテクノロジーズ(OrCam Technologies Ltd)の製品だったな。
これは活字の読み上げみたいだけど、寝具メーカーは、どこへも往く必要のない未来インフラをAI使って目指してるんだろう。
ウェアラブル系が狩猟型・動物型とすれば、寝具系は農耕型・植物型なんだろうな。人間は生活の約3割は寝てるんだから当然だけど。
ベッドといえばフランスベッドが取り扱ってるAI 視覚支援機器『オーカム マイアイ2』(OrCam MyEye 2)は、
イスラエルのオーカムテクノロジーズ(OrCam Technologies Ltd)の製品だったな。
これは活字の読み上げみたいだけど、寝具メーカーは、どこへも往く必要のない未来インフラをAI使って目指してるんだろう。
ウェアラブル系が狩猟型・動物型とすれば、寝具系は農耕型・植物型なんだろうな。人間は生活の約3割は寝てるんだから当然だけど。
964デフォルトの名無しさん
2024/02/21(水) 16:30:25.40ID:vYwp44u6 表向きはどうであれたぶん寝たきり用だから話を膨らませるのはそのくらいにしとけ
965デフォルトの名無しさん
2024/02/21(水) 16:47:28.48ID:OHlXXLmE いくらなんでもスマホでコーデングはせんやろ
966デフォルトの名無しさん
2024/02/21(水) 16:49:23.05ID:1mshJDzd 寝たきりで親指しか動かないとかならスマホでコーディングするかもしれん
967デフォルトの名無しさん
2024/02/21(水) 16:54:05.86ID:s/93fWsg 性能がどうこうよりもシンプルに画面が狭いのはすごくつらい。
無理。
無理。
968デフォルトの名無しさん
2024/02/21(水) 18:17:59.27ID:ax8uXPdD969デフォルトの名無しさん
2024/02/21(水) 21:37:40.46ID:4F0o6gVI はちみつ餃子氏最近見ないからRust関連は触れないことにしたのかと思ったらコテ外して書き込みに来ててわろた
970デフォルトの名無しさん
2024/02/22(木) 16:00:18.09ID:o0M/RgFs >>969
新スレ立ったときに名前欄に入力するのを忘れてたままやな
新スレ立ったときに名前欄に入力するのを忘れてたままやな
971デフォルトの名無しさん
2024/02/22(木) 23:42:55.14ID:1e40BABA >>949
毎晩ならその機能もう使えるのか
毎晩ならその機能もう使えるのか
972デフォルトの名無しさん
2024/02/23(金) 12:05:46.18ID:vPqrWVzU 今のスマホって値段はPC並みなんだから、スマホでの開発環境出てこいと思わなくも無い。
もちろんその場合は外付けのディスプレイとキーボードつけるだろうが。
もちろんその場合は外付けのディスプレイとキーボードつけるだろうが。
973デフォルトの名無しさん
2024/02/23(金) 12:05:51.79ID:vPqrWVzU 今のスマホって値段はPC並みなんだから、スマホでの開発環境出てこいと思わなくも無い。
もちろんその場合は外付けのディスプレイとキーボードつけるだろうけど。
もちろんその場合は外付けのディスプレイとキーボードつけるだろうけど。
974デフォルトの名無しさん
2024/02/23(金) 15:12:44.34ID:z6SHyxko iPadでXcode使えるからそれで遊んでみれば
975デフォルトの名無しさん
2024/02/23(金) 15:20:09.67ID:CheDQupm Rustが使えないとな
976デフォルトの名無しさん
2024/02/23(金) 15:21:05.22ID:jTrUecQ5 クソスレまで立てちゃってw
素直に中古のノートPCでも買えよ
素直に中古のノートPCでも買えよ
977デフォルトの名無しさん
2024/02/23(金) 16:04:17.89ID:02Kw336h traitの種類多すぎて把握しきれん
使い分けもようわからんし
使い分けもようわからんし
978デフォルトの名無しさん
2024/02/23(金) 16:18:25.67ID:NJWNbZ5N Pythonのpep20みたいなってRustにもあるの?
979デフォルトの名無しさん
2024/02/23(金) 16:32:06.33ID:eHVJk53E スマホやタブレットなどのモバイルOS上に開発環境用意するのは主に2つユースケースがある
1つはモバイルOS上で実行させる小さなユーティリティを作るため
だいたいlinux emulatorみたいなアプリ内環境で稼働させる
もう一つは出先の空いた時間や障害対応等の緊急時にノートPCを持ち歩かなくても簡易的な作業なら対応できるようにしておくため
前者はスマホだけで作るやつもいるにはいるが少数派
なので今のところはメイン開発環境は別に用意してるのが大半
1つはモバイルOS上で実行させる小さなユーティリティを作るため
だいたいlinux emulatorみたいなアプリ内環境で稼働させる
もう一つは出先の空いた時間や障害対応等の緊急時にノートPCを持ち歩かなくても簡易的な作業なら対応できるようにしておくため
前者はスマホだけで作るやつもいるにはいるが少数派
なので今のところはメイン開発環境は別に用意してるのが大半
980デフォルトの名無しさん
2024/02/23(金) 17:15:31.94ID:kgcjkDLJ PEP20って何だよと思ったらあのウンコポエムだった
981デフォルトの名無しさん
2024/02/23(金) 17:26:44.63ID:kgcjkDLJ 次スレタイトル間違えてしまったのですまんが誰か立て直してくれ
規制食らってもう立てられなくなった
規制食らってもう立てられなくなった
982デフォルトの名無しさん
2024/02/23(金) 17:35:21.56ID:CheDQupm >>977
traitとは機能を抽象化した抽象型だから使いたい機能のtraitを選ぶか作ればよい
structなどの具象型は各々必要な各機能(trait)を実装しているもしくは実装すればよい
そして抽象型(trait)を用いてプログラミングすることでその機能を実装する全ての具象型を対象とした共通コードにできる
traitとは機能を抽象化した抽象型だから使いたい機能のtraitを選ぶか作ればよい
structなどの具象型は各々必要な各機能(trait)を実装しているもしくは実装すればよい
そして抽象型(trait)を用いてプログラミングすることでその機能を実装する全ての具象型を対象とした共通コードにできる
983デフォルトの名無しさん
2024/02/23(金) 17:38:39.47ID:CheDQupm984デフォルトの名無しさん
2024/02/23(金) 17:45:54.27ID:kgcjkDLJ >>983
ありがとう
ありがとう
985デフォルトの名無しさん
2024/02/23(金) 17:51:32.20ID:jYYzpIEX986デフォルトの名無しさん
2024/02/23(金) 20:10:18.94ID:1IK2X2kO >>982
FromとかAsRefとかDerefとかの時点でもうようわからんぜ
FromとかAsRefとかDerefとかの時点でもうようわからんぜ
987デフォルトの名無しさん
2024/02/23(金) 22:42:10.08ID:oukljDwS Fromは汎用的な変換だよ
変換に失敗する可能性を含む時はTryFromを使う
AsRefは参照から(別型の)参照への読み替え変換
コストがかからない場合が対象
コストがかかるものはFromを使う
Derefは変換ではなく演算子
変換は複数の型への変換を実装できるけど
演算子なので各型で決められた一つの型へderefできる
&T→T
Box<T>→T
Rc<T>→T
Vec<T>→[T]
String→str
PathBuf→Path
など
変換に失敗する可能性を含む時はTryFromを使う
AsRefは参照から(別型の)参照への読み替え変換
コストがかからない場合が対象
コストがかかるものはFromを使う
Derefは変換ではなく演算子
変換は複数の型への変換を実装できるけど
演算子なので各型で決められた一つの型へderefできる
&T→T
Box<T>→T
Rc<T>→T
Vec<T>→[T]
String→str
PathBuf→Path
など
988デフォルトの名無しさん
2024/02/23(金) 23:50:59.87ID:1IK2X2kO あー。それぞれの比較はまあそうなのかもしれないんだけど、そもそもどういうtraitがあってどういう時に使うべきなのかを全て把握できてないせいで実際にコード書く時にどれを使うとRustらしいコードになるのかわからなくなるってのがしんどいんだよね
989デフォルトの名無しさん
2024/02/23(金) 23:59:41.76ID:hX/YHnPg >>988
どの分野のどんな話でも基本パターンの学習による慣れ
問題
match std::env::args().XXXXX {
Some("yes") => ...,
Some("no") => ...,
_ => ..., // エラー
}
どの分野のどんな話でも基本パターンの学習による慣れ
問題
match std::env::args().XXXXX {
Some("yes") => ...,
Some("no") => ...,
_ => ..., // エラー
}
990デフォルトの名無しさん
2024/02/24(土) 02:12:39.95ID:YQ3M0cmx 梅
991デフォルトの名無しさん
2024/02/24(土) 04:00:00.27ID:felFEjYK 「当然こういうのが標準ライブラリにあって然るべきだろう」みたいな感覚ができるから結局は慣れ。
常識的に考えてあるだろうと思ったら nightly だったみたいなこともよく経験するから俺が欲しいようなものはみんな欲しいんだなと思う。
実質的に言語の一部みたいなくらいのやつは嫌でも避けられないから何度もドキュメントを読み返すはめになるし、そのうち自然に使えるようになる。
常識的に考えてあるだろうと思ったら nightly だったみたいなこともよく経験するから俺が欲しいようなものはみんな欲しいんだなと思う。
実質的に言語の一部みたいなくらいのやつは嫌でも避けられないから何度もドキュメントを読み返すはめになるし、そのうち自然に使えるようになる。
992デフォルトの名無しさん
2024/02/24(土) 12:21:57.67ID:lhpjpr9r993デフォルトの名無しさん
2024/02/24(土) 12:57:43.72ID:Sbx59RJL AsRefとBorrowは未だにわからんなあ
調べてもHashMapがBorrow要求するならそこだけBorrow使っておけばいいか……で思考停止してる
調べてもHashMapがBorrow要求するならそこだけBorrow使っておけばいいか……で思考停止してる
994デフォルトの名無しさん
2024/02/24(土) 13:58:08.04ID:Q2pRspv0 埋
995デフォルトの名無しさん
2024/02/24(土) 13:58:23.94ID:Q2pRspv0 生め
996デフォルトの名無しさん
2024/02/24(土) 13:58:40.99ID:Q2pRspv0 、埋め
997デフォルトの名無しさん
2024/02/24(土) 13:58:46.56ID:Q2pRspv0 !埋め
998デフォルトの名無しさん
2024/02/24(土) 13:58:52.17ID:Q2pRspv0 ?埋め
999デフォルトの名無しさん
2024/02/24(土) 13:59:00.55ID:Q2pRspv0 ○埋め
1000デフォルトの名無しさん
2024/02/24(土) 13:59:07.65ID:Q2pRspv0 〜埋め
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 34日 14時間 37分 28秒
新しいスレッドを立ててください。
life time: 34日 14時間 37分 28秒
10021002
Over 1000Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 「稼ぐのよ!」高市総理が電話ガチャ切りで伝えたこと 鈴木憲和農林水産大臣が国政報告会に出席 自身が目指す農政の方針語る [煮卵★]
- 【悲報】台湾「中国にパンダ返還した馬鹿な国があるらしい🤭」 [616817505]
- 【高市悲報】片山さつき、円安進行を受けコメント「為替の変動を緊張感を持って見極める」 [888298477]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 自民「高市の一言でこれまで積み上げてきた関係が駄目になる。言葉の重みを分かっていない。自分でまいた種は自分で刈り取ってもらう」 [256556981]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
