1 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 22:19:47.56 ID:avZQ9Wm7.net] 闘え ※前スレ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ C vs C++ vs Rust Part.2 https://mevius.5ch.net/test/read.cgi/tech/1639539350/
2 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 22:28:23.63 ID:4DQKoSsj.net] 前スレまでのあらすじ --- 987 デフォルトの名無しさん sage 2022/01/27(木) 17:14:15.89 ID:hWkHkx2k >>986 > だから専有機なら上限で用いる 「現在の主流」というのは、「専有機」での話? それとも一般的な話? 994 デフォルトの名無しさん sage 2022/01/27(木) 17:52:30.63 ID:LojT3k5n 自分が理解できないと相手が敵かつ全て同一人物に見える病気のパターンかねw 皆普通に同じことを指している 何が理解できないのか素直に言ってごらん 995 デフォルトの名無しさん sage 2022/01/27(木) 17:55:13.00 ID:hWkHkx2k >>994 >>987 の質問に答えてから続けてね
3 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 22:58:22.92 ID:37eem+FW.net] あらすじが全くわからんw
4 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 23:13:49.64 ID:cK3g3Gve.net] 彼はこの部分がわからなくて連投していたみたいだから横から補足説明しましょう > 大雑把にI/O観点で二つに分けると > 昔は同期I/Oでブロックされるからマルチスレッド > 今は非同期プログラミングでスレッド数はシングルからCPUコア数が上限 > RustのFutureタスク、GoのGoルーチン、JavaScriptの非同期Promiseやコールバック > いずれもプロセス内スケジューラがI/O多重化(select/epoll)やタイマーなど管理して非同期プログラミングを支えている 昔は自分でOSスレッドを立ち上げて使っていたのに対して 今は自分で立ち上げるのがOSスレッドではなくそれよりも粒度が細かく軽い非同期なタスクで OSスレッドを立ち上げる役割はそれらタスクの非同期なスケジューリングをするランタイムで そのスレッド立ち上げ個数は効率最大のためCPUコアスレッド総数と一致するのが望ましいため GoやRustなどではデフォルト値がそうなっていますよってことですよね もちろん個数を1個つまりシングルスレッドに設定しても動くところが決定的な違いですね OSがスケジューリングしてくれるけど重くて大きくリソースを喰うOSスレッドを今は直接使わずに > RustのFutureタスク、GoのGoルーチン、JavaScriptの非同期Promiseやコールバック これらのもっと軽くて小さなタスクを使うことで何万も同時に処理できるようになったという話ですね ちなみにRustでは昔と同じ状況にスレッドとタスクを1:1(=n:n)でも使えますし シングルスレッドにして1:nでも使えますし上述の状況は汎用的なm:nになりますね
5 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 23:14:48.99 ID:fMPJxSq8.net] 明らかに間違ってることを自信ありげに語るのはいつものこと その人達用の隔離スレだから >>1 乙
6 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 23:25:15.10 ID:iujD8pk9.net] 横から?w 本人だろ、お前w
7 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 23:31:40.86 ID:m/Awlcjw.net] 複製おじさんのいつもの自演です
8 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 23:34:30.76 ID:iujD8pk9.net] 次はgoogleで2件しかヒットしない、「プロセス内スケジューラ」については説明してくれw
9 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 23:49:40.45 ID:cK3g3Gve.net] 非同期タスク群のスケジューリングをするランタイム部分のことではないでしょうか 一般的にプロセスの中に1つだと各スレッドへタスクを割り振るコストが高くて 各スレッドの中に独立して1つずつだと暇なスレッドと多忙なスレッドが偏るデメリットがあり GoでもRustでもそれらのスケジューリング問題を改善するために 各スレッド内に独立キューを持って効率的に処理しつつもグローバルキューも備えることで解決しているようですね
10 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:05:15.17 ID:EpTP27or.net] 複製おじはGoでもRustでもまともに非同期プログラミングやったことないんだな
11 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:14:38.44 ID:9bCXgVDe.net] >>8 OSスレッドがOSによりスケジューリングされることに対する対比じゃね? タスクは各プロセスの中にスケジューラーがある Goは言語ランタイムの中だがRustは各自が好きなのを選んだり自作も可能
12 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 01:31:02.15 ID:DUuAybqk.net] どうせRustは普及しないんじゃないかな、知らんけど。
13 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 08:21:58.40 ID:OuJICsLX.net] rustはc++を食うことがあってもピュアcを食うことはなさそう
14 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 08:42:08.00 ID:3x0JFp6u.net] Cは誤解を恐れずに言えばアセンブリ言語みたいなもんだからな
15 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 13:14:51.22 ID:7T77Q24K.net] >>13 C++ 98以前は Cと似てるし、ライブラリも言語とは無関係に自由に作れたから大丈夫。C++11以後はダメ言語になった。
16 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 13:17:06.82 ID:7T77Q24K.net] そもそも、CやC++が普及したのはTurboCのおかげ。 TurboCはライブラリが分かり易かった。 C++11以後、言語もSTLも両方腐っていてTurboCとは全く違うようになり、 人気もがた落ちになった。
17 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:22:28.01 ID:ePoQjqFg.net] 何頓珍漢な事言ってんだこのバカ
18 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 18:58:54.57 ID:9bCXgVDe.net] >>8 OSによるプロセスやOSスレッドのスケジューラではなく プロセスの中で動くタスクのためのスケジューラ 各言語によって言語機能として備えている場合と外部ライブラリによる場合がある Rustではその中間の形態で言語機能としてはasync/awaitの枠組みのみ提供 さらに標準ライブラリとしてFutureやWakerなどの必要とする定義のみ提供 実際に動作するスケジューラは外部ライブラリで様々な提供がなされ自作もできる その他はこのスライドの前半の解説など参照 Rustのasync/awaitとスケジューラの話 https://speakerdeck.com/osuke/rust-async-await
19 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 21:04:45.07 ID:zI6nuxFY.net] 前スレ946の三つのサイトから数値を入手して和を求める例を練習のためにやってみたんだが httpのheader取得までとbody取得の2回awaitが入るのがなるほどと思った あと文字列を数値に変換parseも当然必要だったのでawait部分がちょっと長い #[async_std::main] async fn main() -> surf::Result<()> { let n1 = surf::get("https://httpbin.org/base64/MTEx"); // 111 let n2 = surf::get("https://httpbin.org/base64/MjIy"); // 222 let n3 = surf::get("https://httpbin.org/base64/MzMz"); // 333 let sum = n1.await?.body_string().await?.parse::<i32>()? + n2.await?.body_string().await?.parse::<i32>()? + n3.await?.body_string().await?.parse::<i32>()?; assert_eq!(666, sum); Ok(()) } 利用させてもらったテストサイトはURLで返す値など指定できるhttpbin.org これで動いて値取得もできて合計値assertも通ったのだが実は落とし穴があることに気付いた
20 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 21:49:38.11 ID:YDzvJ7+G.net] 元のJSのコードもだけど await連発すんなよw
21 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 22:11:12.59 ID:zI6nuxFY.net] そのテストサイトにhttp返答を遅延させるdelay機能があるので試した時に露見した 同時に指定値を返せないようなので数値化と足し算の意味はないが遅延時間を知りたかった let d1 = surf::get("https://httpbin.org/delay/4"); // 4秒 let d2 = surf::get("https://httpbin.org/delay/5"); // 5秒 let d3 = surf::get("https://httpbin.org/delay/3"); // 3秒 let sum = d1.await?.body_string().await?.parse::<i32>().unwrap_or(0) + d2.await?.body_string().await?.parse::<i32>().unwrap_or(0) + d3.await?.body_string().await?.parse::<i32>().unwrap_or(0); 結果は12秒かかってしまい期待と異なり直列に実行されていた 肝心なことを忘れていた
22 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 23:09:26.07 ID:zI6nuxFY.net] JavaScriptではPromiseを返す関数を3つ呼べばそれで3つ並行に実行される しかしRustでは並行に動くタスクを自分で明示的に起動しなければいけなかったのだ よく考えればGoでも自分で明示的にgoと前置指定することで別goルーチンを起動している Rustではそれがspawnでありgoと同じくそれによりスケジューラに登録されるようだ use async_std::task::spawn; let d1 = spawn(surf::get("https://httpbin.org/delay/4")); // 4秒 let d2 = spawn(surf::get("https://httpbin.org/delay/5")); // 5秒 let d3 = spawn(surf::get("https://httpbin.org/delay/3")); // 3秒 このようにspawnを付けて以降は同じ実行をすると全体で結果5秒となり並行に実行された 言語自体に魔法の仕組みはなく自分で明示的にスケジューラに登録指定するのはわかりやすくて安心した そのスケジューラも手作りできるらしく興味深い
23 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 23:23:01.28 ID:JUEBwV02.net] 自分でblock_on書かないとRustのasyncは身に付かない
24 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 23:49:49.26 ID:zI6nuxFY.net] >>23 use async_std::task::{block_on, spawn};の時 このblock_onを使った fn main() -> surf::Result<()> { block_on(async { let d1 = spawn(surf::get("https://httpbin.org/delay/4")); // 略 }) } の簡略版が>>19 で書いた #[async_std::main] async fn main() -> surf::Result<()> { let d1 = spawn(surf::get("https://httpbin.org/delay/4")); // 略 } ってことか つまりasync { ... } という非同期ブロックをblock_onによりスケジューラに実行させているわけだ 当たり前だがspawnする以前に最初からスケジューラの掌の上で踊っていたのであった じゃないと全体を並行に実行できないもんな
25 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 13:58:43.26 ID:AW7V4mOd.net] Rustのasync/awaitはコンパイルされると単純なステートマシンになる 例えばasyncブロック内にfuture1.awaitとfuture2.awaitが順に呼び出されるとする 最初はfuture1をpollする状態でpending中はpendingを返す そこでreadyになればfuture2をpollする状態へ遷移 そこでもreadyになれば全体としてreadyを返す状態へ遷移 結局スタックレスなコルーチンを実現しているだけなので非常に軽い
26 名前:デフォルトの名無しさん [2022/01/29(土) 22:23:27.99 ID:12259hRt.net] 起動も切替もスレッドより軽くてリソースも喰わないなら 非同期タスクの欠点は何だ?
27 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 23:26:45.54 ID:7irU+4ae.net] Rustの場合軽量タスクはプリエンプティブじゃないので、変なコーディングすると特定のタスクが実行され続けて、他のタスクがいつまでも実行されないことがある あとは、OSのスレッドじゃないからスレッドの属性や権限をタスク単位で異なる物にすることはできないとか
28 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 23:44:38.93 ID:AW7V4mOd.net] >>27 前者は間違えて同期ブロッキングする関数を呼んでブロックしてしまった場合 および長時間ずっと全く非同期関数を呼ばずに計算し続けるか暴走する場合 これらはバグならfixで解決 バグでないなら非同期タスク実行スレッドとは別に専用スレッドを用意して実行できるスケジューラもあるのでそれを利用
29 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 00:54:30.09 ID:zeCbxF6p.net] >>28 同じ処理でも入力内容次第で変わるからそんな簡単にいかないよ
30 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 01:16:02.14 ID:iWlFH2We.net] async-stdならgoみたいにタスクが一定時間経っても制御返してくれないときに勝手にスレッド起こしてくれるんじゃなかったっけ
31 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 18:58:15.77 ID:9ei8l7Ku.net] >>29 入出力が行なわれたらタスクのスイッチングが発生するので 意図的にブロッキングするものを呼んでブロックしているケースを除くと いつまでもタスクが切り替わらないのは演算のみを延々と続けるケースのみになる 対応策としては自分で定期的に手放すか以下の方法で回避 >>30 それは様々な問題点で中止 結局tokioもasync_stdもそのような特殊ケースはspawn()の代わりにspawn_blocking()することで タスクのスイッチングに影響が出ないように別スレッドで実行させる方針 その場合は結局スレッドを自分で起動して同期ブロッキングで使う昔からの方法と実質同じだが そのような特殊なケースも含めて統一的にタスクを扱える
32 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 20:50:10.05 ID:dly2JmLT.net] >>31 延々と演算を続ける意図はなかったのに結果としてそうなる場合があるということ それを最初から想定できてyieldを挟めるなら問題ないのだが現実はそうはなっていない https://tokio.rs/blog/2020-04-preemption
33 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 21:57:34.87 ID:C4ZQL08k.net] そのbudget方式は戻ってこないとペナルティ与えられないから本質的な解決になっていない yield相当をコンパイラが上手く挟むのも無理だからプログラマーが自らすればいい
34 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 22:13:02.89 ID:46YJeJfB.net] 歴史から学ばない人
35 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 00:52:40.26 ID:wgfsi16C.net] 歴史ってのがマルチタスクOSにおける cooperative vs preemptive の話だとするなら前提が違いすぎない? 任意のアプリケーションが動く可能性のあるOSと自身のプログラムのルーチンが実行されるアプリとではスケジューラに求められる制約条件は違って然るべきかと
36 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 07:30:22.38 ID:qlFEomu1.net] シングルスレッドかつcooperativeなJavaScriptがNode.jsを含めて成功しているように問題なく動作する 同期ブロッキングを完全排除してしまえばタスク切り替えが起きない場合すなわちスケジューラに戻らない場合は 入出力もなくループでメモリ上演算を繰り返している場合となる そのような場合でもループ内で自分で定期的にスケジューラへ制御を戻してやればよい そのためにRustではtask::yield_now()がある
37 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:15:42.24 ID:O/M0tTc6.net] イベントループがハングアップした時の対処とか考えたことないでしょ? バグだからfixすればいいじゃ能がない 歴史に学ぶといいよ
38 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:24:59.23 ID:qlFEomu1.net] >>37 GoやJavaScriptなどは言語内蔵だが問題が起きたことはない Rustは言語から切り離されているが同様 いずれもそれらのランタイムの製作者以外がその部分のコードを触ることはなくバグが発生しようがない
39 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:27:00.53 ID:/Hwves02.net] >>37 > イベントループがハングアップした時の対処とか考えたことないでしょ? そういうのは上位で対処(タイムアウトでプロセス再起動とか)することもあるからケースバイケースでしかない
40 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 10:46:15.49 ID:5QuAHu0k.net] イベントループがハングアップするってなに? epoll_waitをブロッキングで使う場合でもタイムアウト設定すればハングアップなんてしないでしょ?
41 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 11:35:28.84 ID:BNlzdeLS.net] タイムアウト設定忘れみたいなバグの話でしょ そんなに引っ張る話でもないと思う
42 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 12:52:34.54 ID:qlFEomu1.net] >>41 それは万が一あるとしても非同期スケジューラランタイム実装者の管轄 その利用者である一般プログラマーが引き起こすバグではないため関係ない
43 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:02:21.71 ID:dnOSCP4X.net] > epoll_waitをブロッキングで使う場合でもタイムアウト設定すればハングアップなんてしないでしょ? の話だぞ?
44 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:17:00.70 ID:wgfsi16C.net] 歴史って言葉持ち出してるんだしそんなしょうもない話じゃなくてもっと有名なエピソードなんじゃないの
45 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:24:49.76 ID:HGCqFbKg.net] 「Rustのタスクの欠点は?」 「プリエンプティブじゃないところ」 「プログラマーが注意すればいいだけだから問題ない」
46 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:35:30.64 ID:qlFEomu1.net] そりゃepollやselect相当を自分で使っていてミスをすればイベントループがハングアップするのは当たり前 しかし非同期タスクのイベントループは非同期スケジューラの中にあって自分でepollやselectを扱わなくてよくなった だから自分のミスでイベントループがハングアップすることはなくなった それ以前の歴史では色々あったが状況が変わった
47 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 13:51:12.77 ID:dnOSCP4X.net] はいはい、理想的な環境で羨ましいですね これでいいかな?w
48 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 14:52:14.32 ID:QZLkrRiL.net] メモリ開放忘れみたいなバグの話でしょ そんなに引っ張る話でもないと思う
49 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 14:57:56.44 ID:wgfsi16C.net] バグ耐性高めるためにタスクをプリエンプティブにしたいならすれば良いのでは プログラマーのスタンスに合わせて適切な物を選べるよう選択肢は用意されてると思うが 何について言い争ってるのかよくわからない
50 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 15:37:58.82 ID:UHXhumHV.net] GoやNode.jsが上手くいってる主因は非同期並行プログラミングのしやすさ 両者は方向性が真逆だけどそこが共通点で時代の要請 逆にC++が振るわないのは非同期並行プログラミングのしにくさ その状況でRustが登場して非同期並行プログラミングのしやすい環境も装備されたという流れ
51 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 18:03:53.30 ID:dLpRlGxR.net] >>49 タスクはプリエンプティブにはできないよ スレッド使えって言ってるの?
52 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 18:33:21.76 ID:fs07R1AL.net] >>51 そうじゃね?
53 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 18:56:25.41 ID:UHXhumHV.net] Node.jsもプリエンプティブではないけど困っていない タスクがプリエンプティブではないことを欠点だと主張する人は 欠点だという具体的な例を挙げてから主張すべき
54 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:02:29.41 ID:wgfsi16C.net] >>51 そうだよ ここで言うタスクはtokioやasync-stdの用語のタスクのことね spawn_blockingでタスク生成すれば専用スレッドが割り当てられるので特定のタスク選んでプリエンプティブにできる (OSにタスクスイッチの制御を委譲できる)
55 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:03:44.27 ID:wgfsi16C.net] >>53 spawn_blockingみたいなAPIが用意されてるのはプリエンプティブなタスクの需要はあるんじゃないの そこを否定する意味が分からない
56 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:28:57.02 ID:UHXhumHV.net] >>54 それはレイヤーが違う まずOSスレッドは何をしようが常にプリエンプティブ だからOSスレッド上で動いているタスクも途中で一時中断されたり再開されたりしうる だからといってタスクをプリエンプティブだと言わないのはタスクの階層で話をしているため タスクスケジューラに制御を戻さない限り他のタスクに切り替わらないため「プリエンプティブではない」と言われる 次にspawn_blockingで起動されるのもタスクの一つ だからタスクスケジューラが管理するスレッドの中で動く それがspawnだと一つのスレッドに対するキューに複数のタスクが割り当てられる 一方でspawn_blockingは一つのスレッドに対するキューにそのタスクのみが割り当てられる それだけの違いであり両者ともにタスクスケジューラの管理下にあるタスクである もちろん動作中も終了後もタスクとして同じ扱い つまりspawn_blockingはプリエンプティブにするものではない 同じタスクでありスタックレスなコルーチンであることも同じ >>55 その意見は成立していない
57 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:56:01.95 ID:wgfsi16C.net] >>56 確かにプリエンプティブという用語を使ったのは適切ではなかったかもね タスクがスレッドを占有するか他タスクと共有するか選択できると言い換えればよいかな
58 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 21:28:17.75 ID:L8OnQfxN.net] >>54 最初からspawn_blockingで呼ぶべきだと誰もがわかるような処理だけじゃないよ Goと同じでRustもそのうちプリエンプティブなスケジューラが作れるような機構を用意すると思うけどね
59 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 22:11:33.46 ID:qlFEomu1.net] >>58 preemptiveは必要ない シングルスレッドかつcooperativeなJavaScriptがNode.jsを含めて問題なく動作し成功している
60 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 22:59:08.63 ID:UPbAych9.net] Rustってデータ競合を許さない、ってあたりが並列処理とめちゃくちゃ相性良いように見えるけど、 まだそういうスケジューラとか非同期ランタイムらへんの仕組みがちっとも枯れてないんだね 将来のデファクトがどうなりそうか、ってのはある程度見えてきてるのかな?
61 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 23:10:00.73 ID:9ggC0jgK.net] >>59 tokioの開発者もasync-stdの開発者もそうは考えてない a major source of bugs and performance issues in concurrent programs: accidental blocking. https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/
62 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 23:16:15.33 ID:UHXhumHV.net] >>61 それはすぐに廃止された そして現在tokioもasync-stdもプリエンプティブを許すコードは存在しない
63 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 23:18:46.34 ID:9ggC0jgK.net] >>62 知ってるよ 問題認識の話をしてるんじゃん
64 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 23:21:44.46 ID:9ggC0jgK.net] Node.jsはタスク単位で高い信頼性が求められるシステムでは使われない イベントループがブロックしたら他のタスクを道連れにしてプロセス丸ごと再起動する以外に対処法がないから それもexecution managerできちんとモニタリングしてればの話 JSやNodeとRustとはポジショニングが違う
65 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 23:28:55.88 ID:qlFEomu1.net] >>64 イベントループがブロックすることはない 何を言いたいのか意味不明
66 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 23:47:16.39 ID:UHXhumHV.net] >>64 Node.jsまで否定し始めるとは発狂もほどほどに
67 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 01:18:54.05 ID:NlOJHFhB.net] >>58 rustでプリエンプティブなタスクって実装できるのかね goみたいなシグナルでスイッチする仕組みは使えない気がするが
68 名前:デフォルトの名無しさん [2022/02/01(火) 09:02:19.73 ID:YxH4csZd.net] 昔は標準で出来たのに「そういうのはライブラリでやればいい」って嘯きながら削除して、そのあと一生それが出来る標準ライブラリが登場しないいつものRust
69 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 14:23:13.43 ID:fJKShZ3h.net] >>67 Cで実装できることはRustでも実装できる もちろんRustにもプリエンプティブなスケジューラは存在する Rustで書かれたプリエンプティブなリアルタイムOSもある >>68 Rust標準にプリエンプティブなタスクであるグリーンスレッドがあったのは Rust 1.0が正式リリース(2015年)となる以前Rust 〜0.9 の試行している時代 しかし重厚となりベアメタルもターゲットとするRustでは不適なため放棄 例えばGoの方法だと巨大なランタイムや個別スタックが必要など そのためRust標準ではスタックレスで軽いタスクを提供 さらに加えてasync/awaitもサポートし現在の軽く便利な環境となった
70 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 15:14:51.45 ID:7ZSm+F9e.net] あと5年寝かせれば使えるようになるかな
71 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 15:26:14.30 ID:0bEAn4zq.net] 別に今でもasync-stdを使えばええんちゃうか?
72 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 15:54:32.70 ID:aP+3H5wQ.net] >>69 ユーザーランドでプリエンプティブなタスク実現するという話なんだけど 具体的にどのライブラリがサポートしてるの?
73 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 16:14:56.52 ID:fJKShZ3h.net] >>71 async_stdでのプリエンプティブな試みは軽さの方針等に合わず、組み込まれないままで終わった >>72 上記の後継がasync_stdから独立していてsmolscaleとなっている
74 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 17:44:48.05 ID:IGt6++7z.net] >>72 lunaticってのがWASM限定だけどプリエンプティブ実現してるらしいよ WASM以外はコンパイラのサポートがないと無理 >>73 async-stdがやろうとしてたのはプリエンプティブではないよ
75 名前:デフォルトの名無しさん [2022/02/01(火) 23:44:18.44 ID:rLXhSAw+.net] 話題になってる分野だとC++が惨敗すぎて Rustの話題一色になってしまってる感じ
76 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 00:32:45.41 ID:Bknypv+c.net] C++が落ち目なのはまっとうなエンジニアの間では共通認識だろ
77 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 02:30:31.45 ID:YscELMZC.net]
78 名前:変な拡張し杉てワケワカになってきてるよな [] [ここ壊れてます]
79 名前:デフォルトの名無しさん [2022/02/02(水) 11:27:34.63 ID:jvlsF+ng.net] 変な拡張を使わなければ良いだけでは? 使いこなせないのを使えなとは言わない。
80 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 14:23:10.98 ID:X76n4047.net] RustがGo位の位置にたどり着くのは、あと何年かかるかね
81 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 15:00:57.22 ID:O+j3A95O.net] GoはWebとかのアプリケーションでカジュアルに使われるようになってきたから、使う人数もかなり多くなってきたけど、 Rustはそういうポジションにつくことないだろうから、現在のGoほどの人気になることはないんじゃない? RustはC/C++のシェアを塗り替えていく程度だろうけど、そういう低レイヤーでは最強言語になりそう
82 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 15:03:25.91 ID:6tF6MeYL.net] RustがTIOBE Indexに出てくるのはいつなんだろう?w https://i.imgur.com/DNijd0h.jpg
83 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:30:37.00 ID:yDHN0aKU.net] 言語機能としてはC++が完敗だから 過去遺産しか誇るものがない
84 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:35:52.80 ID:/PkFuWcg.net] 何言ってんだこのバカ
85 名前:デフォルトの名無しさん mailto:sage [2022/02/02(水) 22:46:31.08 ID:J71gX0gE.net] シェアもユーザー数も過去遺産と言われてしまえばそうだが そんなことは興味がないのでC++での非同期並行プログラミングについても語って欲しい
86 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 16:11:01.01 ID:VWdjVpzZ.net] C++の非同期っていうとstd::asyncとか?
87 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 17:48:17.26 ID:rBa0lj+C.net] >>81 今26位で、Kotlin, Lua, Scalaとかより上なんだが
88 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 17:52:10.90 ID:6/rx3Wgr.net] >>86 COBOLより下なんかwwwww
89 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 18:30:47.00 ID:VWdjVpzZ.net] KotlinやScalaは結局流行らずJavaで十分だし Luaも一時期熱狂したけど記法や環境が多くの人の好みに合わずPerlのように嫌われてる RustもC/C++で十分という認識が強くて普及せずに一部の通好みに終わる可能性がある Rustは有力企業もプッシュしてるけど三つの言語の流行らない特徴を全て備えてる そうこうしてるうちにRustより優れた言語がぽっとでて席巻する未来だってある
90 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 18:38:00.04 ID:I6DodtQJ.net] 流行るの閾値高くない? 何位以上になったら満足なんだ
91 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 18:48:22.27 ID:Y+zgwr9T.net] 普通にTop10じゃね?
92 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 18:51:38.73 ID:OQgvAcI9.net] しかしTop10のVisualBasicやアセンブリが流行ってるとか言われてもあまり納得感はないな…
93 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 19:08:22.03 ID:Ajxf7YAY.net] TIOBEってトレンドを計測してるわけじゃなくて、あくまで検索エンジンで検索結果のヒット数が多かったランキングだからな CとかVBみたいに昔から一定の人気を保ち続けてるような言語がランキング高くなりやすいんじゃないかな
94 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 19:24:04.62 ID:I6DodtQJ.net] GitHub上の活動に基づいたランキングの方がプログラマ間の流行を知るには良いのかな https://madnight.github.io/githut/#/pull_requests/2021/4
95 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 19:40:42.80 ID:NxnOaIbO.net] せやな TIOBEはJavaScriptとアセンブラが隣の順位に並んでるとかおかしすぎるやろ
96 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 21:31:55.43 ID:8HqROgrm.net] >>88 Scalaも当時は熱狂的なファンがいたよなw
97 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 21:44:00.20 ID:OJ3iv254.net] ScalaはJVMベースだという点以外は特に悪いところは無いと思うんだが
98 名前:デフォルトの名無しさん mailto:sage [2022/02/03(木) 23:27:45.66 ID:VxNIdQ9k.net] コラッツ関数を上手く実装できないかな
99 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:31:37.55 ID:tMDf8XuC.net] >>93 githubはアマチュアプログラマも沢山混じってる。 日経の調査ではプロのプログラマで最も使われている言語はC/C++だとされている。 なお、githubでも、CとC++を合算すると、9.82%、Rustは 0.694%で、 14.1倍の差がある。
100 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:34:29.27 ID:uF1Qc9S6.net] >>98 C vs C++でもあるんだから足したらだめでしょ
101 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:35:47.48 ID:tMDf8XuC.net] >>91 VisualBasicは結構使われているのではなかろうか。Excelなどで。 アセンブリは、基礎的なライブラリを作る人や組み込み、OS、BIOS を作ったり、グラフィックや数値計算の高速化を行う場合に必要な場合がある。
102 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:36:35.60 ID:tMDf8XuC.net] >>99 Cにクラスを入れたものとしてC++を使っている人は多いはず。 MFCなどもそう。
103 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:44:19.25 ID:uF1Qc9S6.net] >>101 いやいや、スレタイ通りこのスレではCとC++は対立する物として区別すべき
104 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:45:03.38 ID:zhkygWhI.net] 今どき言語マウントするやつは メンタルも技術力もアマチュア
105 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 00:47:42.81 ID:tMDf8XuC.net] C++はCを基礎にしてるくせに、Cに歯向かって宿主を殺してしまう寄生虫みたいな ことになってるからな。
106 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 05:41:15.73 ID:3M0ClPfa.net] いまのc++の拡張がな autoとラムダとdecltypeくらいでやめときゃいいのにあとでボツになりそうな仕様までモリモリに盛りやがって下手したらobjective-cみたいになりそう なのにいまだにpropertyも実装されてないとか
107 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 06:48:54.05 ID:GRC0hKFU.net] conceptsは許せる
108 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 08:29:55.22 ID:rPvrWkyY.net] >>105 それほどへんなもの追加されてるか? 右辺値参照、constexpr、可変引数テンプレートは必要だしな
109 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 08:53:37.86 ID:O81zVfQh.net] 色々理解できない機能が増えて辛いんだろw
110 名前:デフォルトの名無しさん [2022/02/04(金) 09:58:17.78 ID:nTZc+xED.net] conceptはむしろ必須だろうよ
111 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 10:06:51.33 ID:xcjLhLWs.net] C++11移行では、変数定義で、 TYPE a = b; の形式が非推奨で、 TYPE a{b}; が推奨になった。 これは、C/C++の今までの伝統を全否定している。 C++11以後は、宿主を殺すウイルス的な存在に成り下がった一例。
112 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 11:28:12.62 ID:i2fLUlAL.net] hp.vector.co.jp/authors/VA000092/jokes/strup.html すこ
113 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 11:33:17.83 ID:O81zVfQh.net] >>110 みたいな爺さんは書き方変わるだけでアタフタw
114 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 12:53:41.07 ID:6YwPoRaj.net] >>110 TYPE a{b}; ↑これって何がうれしいの? c++よく知らんので教えてほしい
115 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 12:55:43.71 ID:m8EcUnam.net] コンパイラ都合じゃね?知らんけど
116 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 14:18:18.78 ID:vKz9Nbsj.net] >>113 オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を 決定することになるが、初期化子には次の4種類ある : T a{b}; T a={b}; T a = v; T a(v); ・このうち、あらゆる局面で利用できるのは、最初の T a{b}の形式のみ (なおこの形式はC++11で新しく導入された。)。 ・一番大きな理由はこの形式は「縮小変換を許さないから」とされる。 ただし、ややこしいのが、Tの部分を autoにした場合は、T a{b}の形式は 落とし穴がされるので使うべきではないとされている。 なぜなら: auto z1{99]; // z1は initializer_list<int>型になってしまう。 auto z2 = 99; // z2は、int型。 ところが、Tが具体的な型の場合には、T a{b} が推奨される: int x1{99}; // 推奨される書き方。 int x1 = 99; // 縮小変換があるので推奨されない書き方。 全く一貫性が無く、C++11が駄目な部分の一つ。
117 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 14:21:57.65 ID:vKz9Nbsj.net] >>115 [誤字訂正版] オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を 決定することになるが、初期化子には次の4種類ある : T a{b}; T a={b}; T a = b; T a(b); ・このうち、あらゆる局面で利用できるのは、最初の T a{b}の形式のみ (なおこの形式はC++11で新しく導入された。)。 ・一番大きな理由はこの形式は「縮小変換を許さないから」とされる。 ただし、ややこしいのが、Tの部分を autoにした場合は、T a{b}の形式は 落とし穴が有るので使うべきではないとされている。 なぜなら: auto z1{99]; // z1は initializer_list<int>型になってしまう。 auto z2 = 99; // z2は、int型。 ところが、Tが具体的な型の場合には、T a{b} が推奨される: int x1{99}; // 推奨される書き方。 int x1 = 99; // 縮小変換があるので推奨されない書き方。 全く一貫性が無く、C++11が駄目な部分の一つ。
118 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 14:40:30.04 ID:MGyBlJhW.net] ふーん、レガシー言語は大変だね
119 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 14:44:09.08 ID:vKz9Nbsj.net] Rustはもっと最悪に汚い。 C++の最大の欠点は、仕様が難しいことに有るが、 Rustはさらに仕様が難しい。 よって、RustはC++をさらに悪くしたと言えて、改良には全くなってない。
120 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 14:54:48.13 ID:WO7o5PWJ.net] ふーん、レガシー脳は大変だね
121 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 14:59:52.64 ID:vKz9Nbsj.net] >>119 馬鹿は黙ってろ。
122 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 15:11:33.72 ID:dFWqGnrm.net] つまり仕様が簡単な方が良いということ?
123 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 15:17:49.19 ID:wTfQ05na.net] >>119 ばーかw
124 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 16:13:01.17 ID:sAwXze1R.net] 効きすぎだろwww
125 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 16:23:37.19 ID:J8iEhnuL.net] c++は(ランタイム速度落とさなくても)できらぁ!ってなったらとりあえず入れるからな。 ある意味とてもガキくさいがそれはそれでありなポジションに到達してる気はする。
126 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 20:04:05.51 ID:JLdS+NWr.net] そんな凄いんだったらもっと普及してるよねRust でも現実はブビにもコボルにも負けてる泡沫言語
127 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 20:40:31.16 ID:b3SZZj/4.net] 単純に新しい言語だから累積となるユーザ数でまだ不利なだけ 2019年11月のasync導入で非同期プログラミングがまともに使えるようになってまだ2年余り Linux OSのようにC++を頑なに拒否していたプロジェクトでもRustは受け入れられたように C++に未来はないがRustには未来がある
128 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 20:44:24.76 ID:JLdS+NWr.net] 最後間違い C++に未来はないがRustも未来はない
129 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 20:49:40.24 ID:jGBmcDmC.net] 日本は先進国の技術トレンドから5年以上遅れてるからね
130 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 20:53:24.16 ID:rIsLZ1dN.net] C++erはレガシー脳が多いから いい意味でのレガシーね オリンピックレガシーみたいなw
131 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 20:54:41.42 ID:aq7ZCAbr.net] C++はあんなみすぼらしいラムダ式用意して哀れやわ 貧乏の家の子が自家製ボタモチもって突っ立ってるようやわ
132 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 21:01:52.67 ID:JLdS+NWr.net] Rustやってる奴は現状アーリーアダプターで普及するにしてもまだ年月掛かると思う んでその間にまた新しい言語が開発されみんなそっちに移って行くと
133 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 21:06:34.54 ID:3IKuZnie.net] 新しい言語はどんな問題解決してくれるんだろうな 動的型付けが復権するんだろうか
134 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 21:15:25.28 ID:V2NB9pIC.net] >>131 アーリーアダプターは数年前の時期 今は大手IT各社GAFAMがRustに本腰 プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設 https://j
135 名前:apan.zdnet.com/article/35166267/ Facebook(現Meta)が「Rust Foundation」に参加 https://japan.zdnet.com/article/35170192/ [] [ここ壊れてます]
136 名前:デフォルトの名無しさん mailto:sage [2022/02/04(金) 22:59:18.87 ID:ckxp+S+3.net] >>131 それならそれで無駄にはならない気がするが 考え方は継承されるだろうし
137 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 01:30:11.76 ID:6GVIsHGT.net] SNS見てる限り、若い人でも人気は Rust より C/C++ の圧勝。
138 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 02:39:36.18 ID:ye9/tceq.net] 大学の課題とかはまあC/C++よね
139 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 06:15:36.04 ID:LYyRCemg.net] >>133 RustはVisual studioでデフォルトで選択できるようになったら普及するだろうな
140 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 09:06:42.96 ID:E0droKIF.net] 北京五輪と東京五輪の開会式をプログラミングで例えるとどうなるやろ?
141 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 16:44:42.87 ID:bofW+oE9.net] そのまま普通に 東京五輪 Rust 北京五輪 C++
142 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 17:35:54.33 ID:O/WKZnIq.net] 東京五輪 FAMILY-BASIC
143 名前:138 mailto:sage [2022/02/06(日) 17:01:26.43 ID:LMR3oS4I.net] ちょっとセンシティブな話だったか 与太話と思ってスルーしてくれ すまんかった
144 名前:デフォルトの名無しさん [2022/02/10(木) 11:18:14.49 ID:sUV8whwi.net] >>139 Rustってそんな酷い言語だったんだ 手出さなくて良かったわ〜
145 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 11:25:47.65 ID:ylUFM8HS.net] Rust 拝金主義 C++ ハイキング
146 名前:デフォルトの名無しさん [2022/02/10(木) 20:10:06.55 ID:9RAaYAUg.net] RustはC,C++を駆逐すると思う。アレに拘泥する理由はない。
147 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 21:00:13.02 ID:ylUFM8HS.net] HighKingの至高の頂に座居するC++に勝てると本気で思っているのかね
148 名前:デフォルトの名無しさん [2022/02/10(木) 21:47:05.33 ID:o2ECnsWv.net] >>144 過去資産があるから駆逐まではいかないかな。 でももっと利用されるだろう。 けど非同期のやつとかの分断をどうにかして欲しい。
149 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 21:50:08.15 ID:dDg7TD3H.net] ジワジワと侵食して気が付いたらいつの間にか利用していたって広がり方するんだろうな
150 名前:デフォルトの名無しさん [2022/02/10(木) 21:51:34.38 ID:9RAaYAUg.net] >>116 これ見てクソ言語だなって思わないヤツいるのかね。
151 名前:デフォルトの名無しさん [2022/02/10(木) 21:53:35.73 ID:LnXBonLg.net] >>116 なんでこんな言語が使われるようになったんや?
152 名前:デフォルトの名無しさん [2022/02/10(木) 23:38:10.62 ID:o2ECnsWv.net] >>149 使われるようになったんじゃなく、既に使われてた言語を過去との互換性を崩さずに 変更しようとして/変更して そうなったんだよ。 その変化は今なお止まってないんよ。
153 名前:デフォルトの名無しさん mailto:sage [2022/02/10(木) 23:40:02.53 ID:TPkaON1O.net] >>149 はい hp.vector.co.jp/authors/VA000092/jokes/strup.html
154 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 01:30:20.07 ID:ieudecgp.net] >>149 C++が最初に使われ始めたころは、T a{b}のような記法はなく、 C++11で登場した。 使われ始めたころのC++はCの後継として丁度良いと思われるようなもので あって、>>116 のような変な仕様は入ってなかった。 最初は良かったが、後を突いていくと時々「え?」と思うような仕様が入り込み、 C++11で如実になった。 ・templateの仕様も「え?」と思うことが多いものだった。 Stroustrap氏によれば、高速化に重点を置いて導入されたものらしいから、 分かり易さは犠牲になっているようだが、それにしても分かりにくいことが多い。 ・C++にはライブラリが無かったので、C++11で導入されたが、それが 賛否の分かれるもので、恐らく6割くらいの人には質が悪く感じるものであった。
155 名前:デフォルトの名無しさん [2022/02/11(金) 07:42:26.56 ID:KbgZfaat.net] www.mercari.com/jp/search/?keyword=hr400p こういう安い中古チューナ買って、Coinyをスカパープレミアム放送のICカード化して、 スカパープレミアムのチャンネル全部見れるし、USB HDDに録画フリー。 【avoCADO】 Coiny card Part4【仮想通貨】 https://mevius.5ch.net/test/read.cgi/avi/1640762750/
156 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 11:09:11.39 ID:X1ujBpuJ.net] C++は必要な機能だけ使ってれば問題ないことが多いが、 コンパイルエラーメッセージがやばすぎる まともな言語とは言えない
157 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 11:36:27.12 ID:08JP5jFO.net] アレは読むんじゃない 詠むんだ
158 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 11:39:59.37 ID:MSfgatap.net] >>154 逆にRustのコンパイラのエラーメッセージは手厚く至れり尽くせりで感度もの
159 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 01:52:06.05 ID:ct0ZlJaB.net] >>154 C++は、学者がtemplateメタプログラミング関連などの理論的な正しさを 見せびらかしているだけの様な気がするよ。 「ほら、これでメタプログラミングができるだろ、俺の理論の正しさがわかったか」 みたいに。
160 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 01:53:21.86 ID:ct0ZlJaB.net] ただ、だからといってRustがその代わりになるということではない。 RustはRustでC++以上に問題を入れ込んでしまった。 これもまた机上の空論の様な言語。
161 名前:デフォルトの名無しさん [2022/02/12(土) 09:46:16.21 ID:nCAwro3+.net] >>158 机上の空論でない言語は何よ?
162 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 10:21:13.78 ID:ZjQpgox3.net] アセンブラとC言語 使わないけどFORTRANとCOBOLもそうかな
163 名前:デフォルトの名無しさん [2022/02/12(土) 10:44:19.07 ID:lHDa3hl7.net] >>160 ADAは?
164 名前:デフォルトの名無しさん [2022/02/12(土) 11:06:25.45 ID:4ZF6L5uh.net] >>159 横やけど 俺もC言語だと思ってる。
165 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 11:24:57.04 ID:ZjQpgox3.net] >>161 Ada は(少なくとも出た当時は)けっこう机上の空論ぽい機能てんこ盛りだった
166 名前:デフォルトの名無しさん [2022/02/12(土) 11:27:00.51 ID:nCAwro3+.net] Cは貧弱すぎだろう。いまさらmallocとか書く気もおきん。
167 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 12:03:28.21 ID:yRIrPLWC.net] >>158 C++の問題よりはマシだろ
168 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 12:07:09.85 ID:XghCcbPA.net] 前にこれをC++スレかどっかで発言したら結構叩かれたけど C++って結局はテンプレートが言語の真ん中にあるよな 他の言語色々やった上であらためてC++見ると俺にはそう見える 一応マルチパラダイム言語だからC++しかやったことない人は テンプレートだけをフォーカスされるのは不服っぽいけど
169 名前:デフォルトの名無しさん [2022/02/12(土) 12:08:32.56 ID:v8ccrYYP.net] テンプレートは強力だよな
170 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 12:12:41.52 ID:XghCcbPA.net] Cではちょっとしんどいです いろんなコンテナ使いたいです そんとき型をパラメータ化したいです ハゲ「テンプレートでみんな幸せ」 C++er「やったぜ」 C++規格の関係者「いろいろ仕様につっこんだぜ!」 C++er「あっはい」
171 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 12:42:37.24 ID:Wnw3K02J.net] >>166 概ね同意 テンプレートは便利だけど使いすぎてワケワカメってなりがち
172 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 13:44:38.22 ID:v8+/CWv5.net] Rustでバブルソート書いてみたがすげー書きやすいな 食わず嫌いだったかもしれん コンパイルエラーがめっちゃわかりやすい
173 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 13:57:38.37 ID:w2XePdCb.net] ほんとかよw
174 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 14:50:46.51 ID:wXyEGH3A.net] バブルソートw
175 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 15:04:29.49 ID:kx8mtXuQ.net] バブルソートw
176 名前:笑うとこかよ [] [ここ壊れてます]
177 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 15:45:26.65 ID:yRIrPLWC.net] 確かにエラーは笑っちゃうくらい親切だわな
178 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 16:16:36.29 ID:zOhO24og.net] rustのエラー報告は全てのプログラミング言語で最高の親切さだと思う 他の言語がサボりすぎなんだよな rust書くと他の言語かけなくなる
179 名前:デフォルトの名無しさん [2022/02/12(土) 16:54:42.98 ID:zd9UI5Og.net] そんなバブルソートバカにせんでもよかろうに 大学一年で最初の方に習うし、初めての言語触るにはまあまあ良い題材では
180 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 17:44:36.13 ID:91xKDv7O.net] 少しいじってcombソートにしたらクイックソートにもひけをとらないしな。
181 名前:デフォルトの名無しさん [2022/02/12(土) 17:55:38.68 ID:nCAwro3+.net] Rustで双方向リストをマージソートでソートするとかだとめんどくさいことになる気がする
182 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 18:09:42.02 ID:REfvKUVO.net] バブルソートがすげー書きやすいってどのへんが? 逆にそんなもん書きにくい言語なんてあるの? fn main() { let mut v = vec![8, 4, 3, 7, 6, 5, 2, 1]; let bsort = |v: &mut Vec<i32>| for i in 0..v.len() { for j in 1..v.len() - i { if v[j] < v[j - 1] { v.swap(j, j - 1) } } }; bsort(&mut v); println!("{:?}", &v); } ↑書いてみた 細かいところは日本語版wikipediaに準拠
183 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 18:12:12.77 ID:/iL1/Dd6.net] ソートの話はどうでもよくて要点はRustに対してのこの部分だと受け取ったが >>170 > 食わず嫌いだったかもしれん > コンパイルエラーがめっちゃわかりやすい
184 名前:デフォルトの名無しさん [2022/02/12(土) 18:34:19.97 ID:v8ccrYYP.net] >>180 同意
185 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 19:15:40.31 ID:1IxSArcj.net] バブルソートは理解が難しいわりに現実に使われんのがな。 それだったらクイックソートをだな。
186 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 19:50:02.51 ID:ZjQpgox3.net] >>182 > バブルソートは理解が難しい えっ?
187 名前:デフォルトの名無しさん [2022/02/12(土) 19:53:57.23 ID:772ADf0k.net] >>183 頭の良さは人それぞれなんだから馬鹿にしない
188 名前:デフォルトの名無しさん [2022/02/12(土) 21:02:43.90 ID:kBzBXJs5.net] ダブルアレイは原理が簡単にもかかわらず、十分バグが取れるまでずいぶん時間がかかった。
189 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 23:07:39.79 ID:wXyEGH3A.net] CPU時間をたらふく使うバブリーなソートだよな
190 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 23:55:25.98 ID:x20bdFcp.net] >>180 Rustはコンパイラが出すエラーメッセージが詳しすぎて解決案まで示唆してくれたり親切すぎる 他のコンパイラ言語だけでなくインタプリタ言語まで広げても一番親切なプログラミング言語システムだと断言できる
191 名前:デフォルトの名無しさん mailto:sage [2022/02/12(土) 23:56:38.45 ID:zNyDeBid.net] まあC++にテンプレートないならそこまで使わんわな
192 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 01:14:02.16 ID:z8C8/2EV.net] Stroustrup氏の脳内では、テンプレートの目標が高速化であるということなのが 問題の始まりの気がする。
193 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 01:20:30.65 ID:z8C8/2EV.net] マクロ=高速化用途で使われているもの という見方が如何にも実用プログラムを書いたことの少ない学者だと思う。
194 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 09:42:52.30 ID:LKJBNTq1.net] C++からテンプレート取ったらなにも残らない
195 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 09:51:25.60 ID:0Lo3ZZ1+.net] いや残るだろ
196 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 10:12:41.48 ID:jQxqAel+.net] STLなくなっちゃう
197 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 10:25:11.79 ID:yoBtg/nD.net] >>186 その代わりメモリーは使わないから貧乏な俺でも使える
198 名前:デフォルトの名無しさん mailto:sage [2022/02/14(月) 23:17:34.32 ID:T9mSH3bb.net] >>179 そういうことではなく おそらく>>170 が言いたいのはコンパイラが出すエラーがめっちゃ親切なことだろう こっちで書き換わってるからここにmutを付けなさいとか ここで所有権が移動したのに後で使用してるからここに&を付けなさいとか これをuse宣言するのを忘れてますよとか この変数は宣言されず使われていますがこの変数名のスペルミスではありませんかとか といった簡単なものから 複雑な借用関係をちゃんと登場人物たちをはっきりさせてあっちとそっちがこれこれでマズいのでこうしてみたらどうかなど こんなにきめ細かく親切なエラーを出すコンパイラ&インタプリタは他の言語と比べてもトップではないか
199 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 00:19:44.75 ID:kCmeQXW/.net] >>151 デマは辞めようね
200 名前:デフォルトの名無しさん [2022/02/15(火) 00:24:28.01 ID:tssMbTRA.net] >>195 同意
201 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 07:23:31.22 ID:A9ZkwK3T.net] >>195 そこは目から鱗だよな ここまでできるなら、他の言語も頑張れよと言いたくなる
202 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 07:51:21.06 ID:aaenmMxg.net] 言語として所有権の概念がないからその辺りの指摘はしないけどVS2022のC#も結構色々提案してくれるぞ
203 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 09:28:59.50 ID:CNcLOkDE.net] このながれでこれを言う意味なんてないけど わかるやつだけわかってくれたらいいんだけど Rustのコンパイラ昔は酷かったよな 無慈悲なボローチェッカと戦ってたよな(´;ω;`)
204 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 09:42:41.51 ID:qxt1mofg.net] まだメジャーバージョン1だしそりゃまあ
205 名前:デフォルトの名無しさん mailto:sage [2022/02/15(火) 11:48:06.88 ID:je481k6i.net] >>200 コンパイラというよりもnon lexical lifetimeが入る前の言語仕様の制約が厳しくて辛かったんじゃないかな >>201 コンパイラのバージョンがsemverにしたがってるうちはメジャーバージョンアップしないんじゃないかな 基本的に過去との互換性は崩さないし、必要ならエディションで非互換な変更もできるようにしているので、 メジャーバージョンアップしてまで互換性崩したい理由がなさそう
206 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 19:19:14.27 ID:lHwbgihf.net] どこかでPython 2 -> 3みたいなことが起こるかもよ
207 名前:デフォルトの名無しさん mailto:sage [2022/02/16(水) 20:18:02.36 ID:oWbPDf/g.net] >>203 Rustは後発言語なだけあって 今どきのプログラミング言語の成功部分を洗練して採り入れてる だから互換性のないバージョンアップをする時はRustより新しい言語が新たに成功してそれをRustも採り入れたくなったが互換性を維持したままでは出来ない時が来てから
208 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 03:10:03.97 ID:reqFguXW.net] RustとかNimは第何世代の言語なん?
209 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 11:44:19.88 ID:RuZDOzbq.net] >>205 第4世代の高水準言語の仲間じゃね?
210 名前:デフォルトの名無しさん mailto:sage [2022/02/17(木) 23:40:19.82 ID:W9idHeI8.net] >>202 そのnon lexical lifetimeが入る前の言語仕様の制約が厳しい件なのかどうか教えて このリンクリストの実装でpush_back()のコードがlifetimeでコンパイルエラーとなる話 https://qnighy.hat enablog.com/entry/2017/05/06/070000 今このコードをコンパイルすると問題なく通って実行もできてしまう Rustのコンパイラはどんどん賢くなって制約が無くなっていってるんだな
211 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:44:32.85 ID:yXo12zTr.net] Rustって普及するんすか
212 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:54:27.33 ID:WX40LAaF.net] >>195 エラーメッセージの親切さで言うとVC#がトップだと思ってるけどそれ以上? C++でハマったときの沼の深さは異常だからそんな親切なら乗り換えたくなってきたな
213 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 00:57:20.21 ID:Dn+7AFaS.net] rustのコンパイる中ってみんな何してんの?
214 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 01:32:33.29 ID:7ZNuwX6P.net] >>207 push_backの例はまさにNLLでコンパイル通るようになるコードだね
215 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 02:16:48.89 ID:0USC0+1K.net] C++のTMPのエラーメッセージとRustのジェネリックのエラーメッセージ C++のはもはや意味不明だがRustのはまだ人間が読める
216 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 15:09:52.72 ID:6v8ahY7t.net] あまりに親切すぎるメッセージなので、それならそういう風に変更したものをコンパイルしてみて、「こう変更したらコンパイルできました」となればいいなぁ とRebuildの宮川さんが言ってました
217 名前:デフォルトの名無しさん mailto:sage [2022/02/18(金) 15:36:44.00 ID:7ZNuwX6P.net] cargo check --fix である程度は勝手に修正してくれるんだっけ
218 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 08:57:52.80 ID:AlOKsuc0.net] >>209 C#も親切だけど、Rustはそれ以上だよ これらに比べると、C++のは情報が無いも同然
219 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 09:04:29.27 ID:59REwZPX.net] 何言ってんだこのバカ
220 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 09:05:12.66 ID:Wd6uYUeM.net] C++でハマるのはむしろコンパイル通ったあとだからw みんなそれはご存知だとは思うけどw
221 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 09:12:00.22 ID:l5YLFJyt.net] Rustはコンパイルが通ればメモリ問題や競合問題が起きず、プログラム自体に専念できるのがいいよな そしてコンパイラが出すエラーが親切に手取り足取りしてくれて、すぐ修整できてコンパイルも通しやすい
222 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 09:37:18.64 ID:AG6SdX6W.net] >>218 つくづく考えた奴は天才だとおもうわ 逆になんでいままででてこなかったんだろうとも思う Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
223 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 10:49:58.66 ID:lpo/y5Sw.net] >>219 書き直したとして、1日でビルドできたらいいね
224 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 11:06:51.15 ID:UkMRjGML.net] Rustの考え方の基になったCycloneが目指してたのがまさにそれだね
225 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 11:25:52.64 ID:x/upE6G9.net] >>219 > Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような GNUって言うかストールマンはその考えでしょ > linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう 言い出しっぺの法則ヨロ
226 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 11:45:04.32 ID:AG6SdX6W.net] >>222 いや、マジで俺がやってもいいぞ 誰もやってなかったら俺が次のLinusになれるってことか むしろお前らは絶対に真似しないでほしい
227 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:04:13.57 ID:ukdLXHKY.net] rustのコンパイルが遅いのは依存ライブラリやジェネリスクの実体化によりコード量が多くなっているからで コンパイラ自体は並列化とか頑張ってて高速という話を聞くけど実際のところCやC++と比較してどうなんだろうね ヘッダファイル周りの枷がある分CやC++が優位とも簡単には言えない気がする
228 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:21:08.88 ID:ZWczq9Ua.net] >>223 真似はしないから一つだけ聞いてみたい どこから書き直し始める?
229 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 12:59:28.88 ID:NbUDuEDT.net] コンパイラの並列化で 数十コアも効率良く使えるなら 実質的にコンパイル時間は無視できる
230 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:06:40.37 ID:AG6SdX6W.net] >>225 main()かな
231 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 13:33:27.92 ID:6TS2kFRN.net] >>227 無理無理w
232 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 14:08:34.48 ID:AG6SdX6W.net] >>228 まあそれは冗談でも「rust os 自作」でググるといろいろでてくるからそれを参考にやってみるわ rustでOS作ってる先達者が結構いるみたいだからそれを参考にLinuxカーネルの移植をがんばってみるわ
233 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 14:33:33.28 ID:ZWczq9Ua.net] >>227 >>229 まあそんなんだろうと思ってたけど、せめてリーナスがなぜLinuxを作ろうと思ったか、どんな哲学で設計したかぐらいは読んでみると良いと思う タダで読める情報はいくらでもある
234 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 14:47:00.85 ID:AG6SdX6W.net] >>230 「それがぼくには楽しかったから 全世界を巻き込んだリナックス革命の真実」は読んだけどそれじゃだめかな?
235 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 14:48:10.94 ID:xNWdpb+t.net] 現時点で2200万行もあるから、完全に移植しようとしたら毎日1万行のコードを移植し続けたとしても、6年はかかるね そんな爆速で順調に行くわけないし、よっぽどの天才でもなければ1人では生涯に終えるのは無理かな 省ける部分を省くとしたら、何万行になるのかな?
236 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 15:29:14.09 ID:AlOKsuc0.net] >>224 C/C++に比べたら速いよ でも、C#に比べたらC/C++と同列に遅い、という程度
237 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 15:51:49.27 ID:6TS2kFRN.net] rust触ったことないからわからないけどC/C++よりコンパイル速いわけないじゃん
238 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 16:17:48.81 ID:x/upE6G9.net] Rustのコンパイルが遅いようです。なぜですか? https://prev.rust-lang.org/ja-JP/faq.html#why-is-rustc-slow
239 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 16:25:04.60 ID:oF6CN3LV.net] >>233 CとC++を一緒にすんな
240 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 16:28:39.65 ID:lVeS0ElI.net] >>235 それ4〜5年前の古い情報 URLにprevとありそのトップページに2018年12月6日とあるように昔のページを残してある
241 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 16:53:58.55 ID:V3h8uUoV.net] >>237 で、これより新しい情報あるの?
242 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 18:57:21.37 ID:ukdLXHKY.net] フルビルドと差分ビルドで区別して議論しないと比較難しいね あと差分ビルドについてもバイナリ生成までするのかソースのチェックで十分なのかでまた変わってきそう
243 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 21:09:06.50 ID:tV1lc2OB.net] Rustって普及するんすか
244 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 21:24:23.44 ID:kSnJ/KwP.net] いいえ、あなたには必要ありません
245 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 22:54:34.42 ID:zY+XWPI2.net] 流行る言語は登場から10年くらいでウワーっと大流行するんだが、Rustにはそんな気配はないから 精々Goとかと同じような感じにしかならんやろなー。
246 名前:デフォルトの名無しさん mailto:sage [2022/02/19(土) 23:26:45.94 ID:lVeS0ElI.net] >>240 新規案件がC++ではなくRustになっていきつつあるように じわじわと着実に置き換わっていくのだろう 一方的にC/C++が喰われていくのが止まる理由も見つからん
247 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 02:10:18.88 ID:5KrZlkth.net] Rustの案件なんてないよ
248 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 02:51:48.98 ID:Q+YkyZIv.net] >>242 goレベルでも十分流行ってると言えると思うんだけど
249 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 06:11:08.95 ID:rMSJWNa2.net] >>240 VisualStudioの新規プロジェクトの作成でデフォルトで選べるようになれば普及するだろうね
250 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 09:55:15.25 ID:c+ifp9sQ.net] >>246 C++もVC++が出てから一気にCを喰い始めたしな なんだかんだWindowsの影響力はめちゃくちゃ大きい
251 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 11:25:19.25 ID:Q+YkyZIv.net] 当時と今とじゃデスクトップアプリの置かれてる状況が全然違うと思うけど
252 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:09:19.72 ID:28EWOJnb.net] 何をもって普及とするかといえば、まだにVB書いてるやつもおるし、組み込みではRustなんて考えられないし、フロントエンドは JS/TS/Nodeでほぼ不動。そうなるとJava/C#、Railsなどのビジネス系エンタープライズだが、メニーコア用のGoとかのほうが 敷居が低い分だけ人を確保しやすい。言語的な優劣では普及は進まない 当然、高スループットが求められる大企業のエリートでは使われるだろうけど、日本の中小企業で使われるとか想像ができない。 奇々怪々C++は食われていくだろうけど、マイクロコントローラなどでCが食われるなんて無い。データ分析はPythonとかJuliaとか ビックデータはHadoop・Spark(JavaやPython)だろう だが当然ながら*nix系は一歩先を進んでるRustだが、ちんまいコマンドラインのプログラムとか、デバイスドライバだとかそういう 分野でしか使えない(使われない)と思う。あとは自動運転なんかのプログラムならRustが使われてたりするが、そういう 技術者はPythonも使えるし、Juliaなんかもすぐ覚えられる。スマホアプリ系もRustなんてありえない あと残るのはデスクトップアプリケーションとか、これも今はElectron系とかがあるのでネイティブで書く意味があまりない
253 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:14:16.60 ID:RjCQdBpa.net] 普及なんてしなくていいんだよそもそも それを必要とするやつの手に届いたら十分なんだよ C++でやってた分野の一部でもRustで書き換わって それでメンテする連中がラクできることになって 一方でユーザ側にも恩恵はあるだろうしそういうのでいいんだよ ド素人のアマチュアプログラマに届く必要はないんだよ
254 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:26:24.06 ID:TEB+ikpz.net] 普及しなくていいし、してもらいたくない なぜならうちの会社が業界でトップを維持してる秘密だから 他社のウエブサービスより圧倒的に早くセキュアなのはずばりRustをつかってるから。 その前はLispを使ってた。 だから真似してもらいたくない。 まあ、真似できないたまろうけどw
255 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:34:20.56 ID:Q+YkyZIv.net] >>249 これrustに限らず、現状がそのまま続いて新たな言語で置き換わることはないだろうとしか言ってないよね
256 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:48:19.88 ID:RjCQdBpa.net] >>251 そういうことやね それを必要としてるやつはコッソリ一人で握り込んで それを優位に役立てていくだけのことだから
257 名前:デフォルトの名無しさん [2022/02/20(日) 12:53:50.15 ID:pLBa4/kQ.net] >>249 組み込みはrust向きなとこなんじゃないのかね。組み込み業界のことは一切知らんからアレだけど。
258 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 13:19:37.41 ID:5KrZlkth.net] Rustが組込向きかどうかはともかく、LinusはC++に対してはCの問題を何一つ解決せず、事態を悪化させるだけと言っていて、Rustについてはドライバを書けるようにするところまでは実際にやってきているらしいよ
259 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 13:40:02.09 ID:QnKhevyf.net] >>249 組み込み以外にミドルウェアらへんでも使われるようになると思う OS、RDBMS、Webサーバとか ミドルウェアよりも上位レイヤーのアプリケーションだけで見ると、GCがある言語でもだいたい十分そうだし、Rustは目立たなそう
260 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 13:49:36.22 ID:NF24OHT2.net] rustはc++よりbetter cしてるから徐々に市民権得るだろうな
261 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 14:01:22.11 ID:uUEkIMOM.net] >>251 > 他社のウエブサービスより圧倒的に早くセキュアなのはずばりRustをつかってるから。 おお、なるほど > その前はLispを使ってた。 ズコーッw 作り話はもっとうまく作れ
262 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 14:21:18.20 ID:xQDNRCh/.net] Rustってクロージャの再代入できない? null許容することになるから出来ないようにしてる?
263 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 14:31:26.55 ID:Q+YkyZIv.net] 型が同じなら再代入可能だけどクロージャはそれぞれ別の型を持つので単純には代入どきない Box<dyn Fn()>などに変換すればできる
264 名前:デフォルトの名無しさん [2022/02/20(日) 16:38:17.59 ID:xcGmkjoA.net] >>249 ゲーム系のWASMとか
265 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 18:49:49.78 ID:xQDNRCh/.net] >>260 ふーんそうなの Box調べてみるわ
266 名前:デフォルトの名無しさん [2022/02/20(日) 19:16:43.92 ID:eM0QoFz6.net] Lispってセキュアなコード書くのPythonより難しくないか
267 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 22:26:50.09 ID:uSEnVnLU.net] こちらのまわりではスクリプト言語で書かれていた物の高速化でRustへ移行が多いな レスポンスの意味での高速化もあればリソースとしてのCPUタイム激減もある 使用メモリも激減するためクラウドでもオンプレでも費用支出が激減し桁が変わる場合もある
268 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 08:03:12.70 ID:J/Dh0skf.net] >>255 さすがにc++03とかと比較されても……
269 名前:デフォルトの名無しさん [2022/02/21(月) 08:27:27.48 ID:JVbzDyQT.net] よく知らんのだけど、カーネル書くのに抽象化って必要なの? もしいらないんだとしたらC++がカーネル書くのになんのメリットもないと考える気持ちもわかる気がする Rustの場合は安全性がついてくるので抽象化がなくても使う価値がある
270 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 08:42:47.98 ID:OCv9XetQ.net] Rustのオブジェクトシステムって実際C++のそれと比べたら遥かにわかりやすいよな traitって概念ほんまありがてえわ
271 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 08:51:29.17 ID:NpsKB2au.net] >>265 元ネタはコレ https://developers.slashdot.org/story/21/04/17/009241/linus-torvalds-says-rust-closer-for-linux-kernel-development-calls-c-a-crap-language
272 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 08:57:14.48 ID:qHKOEqJY.net] >>266 パッと思い浮かぶのはファイルシステムと仮想ボリュームぐらいだけど、C++がメリットになるとは思えんな
273 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 12:01:24.19 ID:L89iNs1x.net] >>264 DiscordがGoで作られてたバックエンドの一部をRustで書き直したらめちゃくちゃコスト下がったってニュースあったな C++がRustに置き換わるってよりスクリプト言語やGC言語で作られたものが置き換わっていくのがまず先だろう
274 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 12:15:00.96 ID:NpsKB2au.net] どうでもいいけど、このスレ個人の思い込みと間違いだらけに見えるな
275 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 12:25:54.59 ID:R0Wvqlvm.net] >>270 それは今でも粛々と置き換わってるだろう Rustが使われるのは、スクリプトやGC言語ではパフォーマンスなどが得られない分野なんだろうと思う
276 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 12:29:39.29 ID:/1Q8PAGZ.net] DiscordがRustに移行した当時のGoは大分ウンコだったけど、今ではわりとマシになっちゃったよ
277 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 12:50:01.46 ID:hkBHJMBS.net] Goってもうジェネリック入った?
278 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 12:51:46.86 ID:Vy+crfrM.net] >>271 隔離スレに多くを求めすぎ
279 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 13:09:04.30 ID:NpsKB2au.net] なんでこうなっちゃったんだろうね。一部の馬鹿が日本をどんどんダメにしてる気がする。もっとちゃんと比較できるよう上手く使えばいいのに。
280 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 13:20:49.36 ID:/1Q8PAGZ.net] >>274 ああ、おれが言いたかったのはGCの停止時間がマシになったよ、ってことだけだよ 言語機能は大して変わってない でもGenericsは今月中のリリースが予定されてる1.18に載るはず
281 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 13:41:53.53 ID:Jx3FjySw.net] 昔マイコンBASICって雑誌があってだな
282 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 14:41:23.11 ID:RtL8dE4+.net] GCがある言語のパフォーマンスが悪いというのは思い込み
283 名前:デフォルトの名無しさん [2022/02/21(月) 15:52:49.19 ID:8WYOAA82.net] >>279 トータルのパフォーマンスが問題じゃないんだ、予期せず処理が詰まったり急に負荷があがったりするのが問題なんだ。 まぁ今時のGCはストップザワールドは起きないだろうけど。
284 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:02:58.71 ID:RtL8dE4+.net] >>280 GCが動いて困る場合は、現状でもC++かCなどで実装されているはず なので、パフォーマンスを向上させる目的でGCあり言語をRustで置き換えるというのは、あまりないと思われる
285 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:03:00.28 ID:dkDp5UUZ.net] >>278 俺はIO派。その前は月間マイコン。
286 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:06:01.87 ID:dkDp5UUZ.net] >>281 あるよ。いま、うちがやってる移植プロジェクトはその案件。 他社がそんな考えだから今の所引く手あまた。一社独占。大阪にもう1社あるってうわさだけど。。。 客が数十件待ってる状態。年収軽く3本いくわw
287 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:10:20.58 ID:RtL8dE4+.net] まぁ、GCの弊害がわからず採用して実稼働に入って困ったような技術要素選定バグの場合は、言語置き換え対象としてRustが選ばれるケースはあると思う
288 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:12:56.49 ID:RtL8dE4+.net] >>283 GCの問題じゃなくてパフォーマンスの問題でリプレースなの? 元言語何?
289 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:16:52.14 ID:RtL8dE4+.net] 年収3本って3000万ってことか? 内容から、フリーランスでRustへのリプレースを専門でやってる感じだが、個人特定されかねないぞw
290 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:17:29.45 ID:k9jZTatR.net] >>283 レアだから現在のcobolみたいなもんか
291 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:18:15.19 ID:Gf4lGfIx.net] 聞いてもない年収語るような奴の相手すんなよ…
292 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:46:13.57 ID:hWQuQvUr.net] Rustに置き換える理由はパフォーマンスより保守性とか堅牢性だと思う 開発者が少ない現状だと単純に保守性向上のためだけに外注するようなケースは少なそうだけど 今のシステムが不安定で改修もままならないからRustで作り直すってケースなら結構ありそう
293 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:56:15.16 ID:9wSZ8YP/.net] トヨタなんかの車載システムはCとRustで開発してるとか聞いたことあるが
294 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:58:36.91 ID:H7trbIGN.net] 車でストップザワールドはまずいわな
295 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:02:07.18 ID:LC1rF3os.net] >>281 今までGCありスクリプト言語をRustへ置き換えたり置き換えつつある GCの有無は条件ではないのだけど速さ省メモリに安全性と書きやすさ等でRustとなった
296 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:07:56.53 ID:NpsKB2au.net] 9割嘘
297 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:30:22.78 ID:Vy+crfrM.net] >>284 サービスの立ち上げ期にGC影響も見越してカリカリにチューニングするってのは早すぎる最適化なんじゃないのかね rustで他の言語と同じくらいの早さでサービス作れる人材がそろってるなら良いが
298 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:32:07.53 ID:kwaQcaho.net] スクリプトからの置き換えとして、VMを配布したくない(JVM/.NETが除外)、それなりに言語機能が欲しい(Goが除外)となるとRustくらいしか残らんのだよな 逆にそれらを許容できるなら別にRustじゃなくていいんだが
299 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:34:26.10 ID:shT+MRih.net] Firefoxがいまだに勝てないのに速さとか言われてもな、省メモリならEdgeだし、自分たちがしたいだけでしょ
300 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:43:26.39 ID:NpsKB2au.net] VMとかgoとかスレ違い なんでC/C++/RustでGCとか出てきてんだよ ム板ならGCの話をするならスレ立てて簡易実装くらい出して、有無の差異、モデルの差異、各言語の比較をしてほしい 前提の違う話を複数絡めて盛りすぎ ※明らかな嘘は論外
301 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 18:50:49.00 ID:lBTJyZA6.net] うちはNode.jsからの移
302 名前:行先がRustになった JavaScriptよりプログラミングしやすくなった [] [ここ壊れてます]
303 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 22:12:40.35 ID:TSmsigpa.net] C vs C++ vs RustなんてRust圧勝で勝負ついてるんだから話すことなくない?
304 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 22:17:05.24 ID:Gf4lGfIx.net] だったら黙ってれば?
305 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 00:25:06.07 ID:5VMYN97O.net] >>300 なんだよ偉そうに
306 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 07:36:54.62 ID:3cXa2TFM.net] >>299 言語機能としては圧勝なんだが、人やソフトなどの開発環境が惨敗だから困るんだよな
307 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 09:09:32.46 ID:5VMYN97O.net] >>302 今一人勝ちのJavaだってそうなるまでに20年かかったんだから今判断しても意味なくね?
308 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 10:17:05.86 ID:5VMYN97O.net] >>258 Lispとかいたらズコーってされたけど適材適所だと思うぞ ルンバがLispで書かれているのは知ってるよね? 強力なメタプログラミング機能とインタラクティブな開発が必要なら採用してみてもいいのでは?
309 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 10:34:56.38 ID:AiPUeoxY.net] >>304 セキュアなWebサービスはどうしたんだよw
310 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 11:24:36.79 ID:FcgRLtLU.net] rustに置き換えようとして担当が逃げ出したプロジェクトがかなりあるわ。。これからその地獄がはじまる。
311 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 11:47:19.90 ID:5VMYN97O.net] >>306 うちにもってきてよ。やってあげる。
312 名前:デフォルトの名無しさん [2022/02/22(火) 12:20:08.49 ID:kvixU8HR.net] どうしたらLispでセキュアなwebサービス作れるん
313 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 12:37:25.61 ID:5VMYN97O.net] >>308 作れないからRustにしたんだよ
314 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 12:41:08.18 ID:fFHtSmjB.net] Lispだろうと多言語だろうと新しめの通信とかSSLとかのライブラリを探すとこからスタートじゃない?
315 名前:デフォルトの名無しさん [2022/02/22(火) 13:10:26.52 ID:gqoJFVcX.net] Javaは言語登場から10年くらいで多くの人が利用してたし開発環境も続々でとような。
316 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:12:29.23 ID:G6nBeheJ.net] 明らかな嘘だけになったなw
317 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:38:49.42 ID:FcgRLtLU.net] >>307 好きなの、残らず持ってってええぞ ttps://jp.indeed.com/Rust%E9%96%A2%E9%80%A3%E3%81%AE%E6%B1%82%E4%BA%BA
318 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:22:01.94 ID:y2qiytj8.net] >>306 置き換え元のコードが酷かったんじゃね。C++のコードとかだいたい酷いし。
319 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:38:20.03 ID:Uj7UhjXB.net] 現役プロダクトのコードを別言語に置き換えるのってrustに限らず大変なのでは 全面的な置き換えはプロダクト全体の再開発に等しい 特定の担当に押しつけるのではなくチーム全体で徐々に新規部分から置き換えた方が成功率高そう
320 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:54:32.13 ID:B2H8wIkZ.net] >>314 > C++のコードとかだいたい酷いし。 ×だいたい酷い ○すべてが酷い ◎すべてがゲロ以下に酷い
321 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:55:58.40 ID:WirMN8li.net] 一般的にコードを『置き換える』という気構えだと失敗 少なくとも移植先の言語に合わせて何らかの内部設計のし直しからが最低限のスタート 目的が効率アップにあるなら並行や並列が設計として入ってくるだろうし 目的がGC無くしてメモリ省力化だけであってもデータ構造の見直しは必須など
322 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:33:06.33 ID:dVa/srT8.net] ねえねえ ベクタの特定のターゲットの添え字を返すfind(v, target)を作ったとして、 ターゲットが見つからなかった場合のエラー処理はどうするのが良いと思う? C/C++だと返り値を整数にして-1だったら見つからなかった、と言う感じが多いと思うんだけど Result<usize, &str>とかにしてエラー内容を表す文字列を返しちゃう?
323 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:36:39.92 ID:Uj7UhjXB.net] >>318 標準ライブラリの関数を使う
324 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 23:06:43.66 ID:WirMN8li.net] >>318 まずRustではそういうのはベクタに対して実装せずにスライスに対して実装する 次にRustではそういったものにはResultではなくOptionを返す 最後にそのような機能は標準ライブラリを使えば色んな意味で間違いがない
325 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 00:15:24.41 ID:3kJCLKpV.net] >>319 >>318 あ〜Optionなんてのがあるのね・・・
326 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 09:54:11.97 ID:vCUIsgzX.net] usize, &strってすでにRustだろ https://doc.rust-lang.org/std/string/struct.String.html#method.find https://cpprefjp.github.io/reference/string/basic_string/find.html どうでもいい
327 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 10:10:32.07 ID:kNrPH1ZT.net] >>98 しかしC言語技術者は求人市場では圧倒的に不足していると言われてる どこにいるんだか
328 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 12:37:36.24 ID:a0AIymqn.net] 「CやRustが他の言語よりもエネルギー効率に優れていることに驚きはない。衝撃的なのは、その違いの大きさだ。CとRustを広範に採用すれば、控えめに見積もってもコンピュートに使用されるエネルギーの量を50%削減できる可能性がある」とMiller氏は述べ、その根拠として、C、GoogleのGo、Lua、Python、Ruby、Fortranなどをはじめとする複数の言語のエネルギー効率を相対的に示した研究結果を紹介している。 https://news.yahoo.co.jp/articles/399e10841c9a9b776ac5ac3e8402f75da93d17ef
329 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 12:44:28.80 ID:vCUIsgzX.net] >>324 同記事の引用 『プログラムをRustで書き換えることで、サービスは10倍速くなり、レイテンシーも大幅に短縮された。サーバーの数を減らすことができたので、結果的にエネルギー消費量も減少した。 「エネルギー効率の高い言語はRustだけではなく、昔からあるC言語もエネルギー効率は高い。しかしRustは安全性を犠牲にすることなく、省エネ化を実現した初めてのメインストリームのプログラミング言語だ。CやC++で書かれたプログラムが抱える深刻なセキュリティ脆弱性の70%は、メモリー安全性の問題に起因している。それに対して、Rustは安全性の問題を抱えていると感じることなく、エネルギー効率を高められる」とMiller氏は言う。 しかし、Rustにも習得の難しさをはじめとする課題はある。 経験豊富なエンジニアでも、Rustを使いこなすまでには、この分野に詳しい専門家のサポートを受けながら、3〜6カ月の学習期間が必要だとMiller氏とLerche氏は言う。「Rustの習得を、野菜嫌いの克服に例えるエンジニアもいる。使いこなせるようになれば好きになる人が多いが、多くのエンジニアはそうなる前に見切りをつけたり、あきらめたりする。Rustは持続可能性とセキュリティに影響する可能性があるが、その力を発揮するためにはまず、ブロッコリーをブラウニーに変えなければならない』
330 名前:デフォルトの名無しさん [2022/02/23(水) 14:27:22.03 ID:1qABUjpC.net] コンピューターのエネルギー効率が高い代わりに人間の効率が下がるんですがそれは
331 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 14:41:11.80 ID:lP5I9oG+.net] コンパイル時にめっちゃエネルギー使ってる Tier 1のプラットフォームの最新数バージョンくらいはバイナリ配布する仕組みがcargoに必要
332 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 14:42:22.66 ID:0x8HcgAm.net] >>326 まぁ作ったあとの稼働と運用考えたら総じてプラスになるでしょ。ならない?
333 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 15:38:19.82 ID:5Q12euAa.net] >>326 一定規模超えたら一気に効率上がるぞ
334 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:55:23.95 ID:+3d31FNr.net] >>326 これよく言われるけど言語による生産性の差って定量的にデータ集められてるのかな
335 名前:デフォルトの名無しさん [2022/02/23(水) 17:27:51.83 ID:1qABUjpC.net] メンテナンスフェーズに入ったとしても、人件費より電気代の方が高くなるようなことってなかなかなくね? そんな大成功を納めたサービスってどれくらいあるんだろうな
336 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:29:51.77 ID:Q7pYnx45.net] >>329 そうそう。 昔はJavaでやろうとしても人材不足でリプレースできなかったけど今は余裕で集められるもんな
337 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:41:24.45 ID:lwKqHuPf.net] >>331 それはユーザー数によるとしか めちゃくちゃ大量のメッセージを捌きまくらないといけないサービスの場合はほんのちょっとしたパフォーマンス改善でも物凄くコスト下がったりするし
338 名前:デフォルトの名無しさん [2022/02/23(水) 17:45:28.95 ID:1qABUjpC.net] >>333 ユーザー数によることはわかってて、そんな事態がどれくらいあるのかと言ってるレスに対してユーザー数によることを指摘するのか……
339 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 18:24:51.09 ID:Gy4l851c.net] 世の中ウェブサービスだけじゃない 例えば携帯電話のベースバンドチップの消費電力が 半減とかできて表のニュースにはならないし
340 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 18:29:47.83 ID:kNrPH1ZT.net] >>328 ただ作った後の効率に対してプログラマーは報酬を貰えないからな 作った後の効率がいいから、作る費用が上がっても構わないという判断をしてくれるかどうか
341 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 18:46:55.85 ID:wKfqGXJ0.net] Ruby などは可読性が高いから、保守できる。 C/C++ は10年やっても、Ruby on Rails を1年勉強した人にも勝てない 経験は、10年とか時間じゃなく、内容。 例えば10年の内、ポインターに9年使ったとか、人生の無駄 Railsでは、初心者の1年の内容が、 Docker, Linux, データベースなど、ほぼシステムとサービス内容 例えば、Homebrew もRuby製。Cに置き換えるのに、10年掛かった。 SASS もRuby製。C++に置き換えるのに、数年掛かった。 最近では保守できずに、Dart製に変わった Rubyの女神・池澤あやかが、Ruby以外で開発者を募集しても集まらないから、 結局、Railsで作る事になったと言ってた 最近は、宇宙開発などの組み込み用でも、mruby を使う。 人工衛星イザナギ・イザナミで使っている。 Cで可読性が悪い、文字列処理の部分などを、mrubyで書く 本も出た Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11 宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。 Ubuntu 18.04, C99 対応
342 名前:デフォルトの名無しさん [2022/02/23(水) 18:51:10.94 ID:PMTzrERY.net] >>325 で明らかにサービスの話してるのに突然携帯のチップとか言い始める奴w
343 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 19:57:40.25 ID:5Q12euAa.net] Rubyしかやってないやつのコード読みにくすぎて震える
344 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 20:04:08.39 ID:Lu1aogHC.net] 言語を1つしかわからんやつなんてそもそも初心者しかいなくね
345 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:26:07.56 ID:vnuj+wMr.net] HomebrewがCに置き換わったってどこ情報?
346 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:30:43.83 ID:YI1xwHaU.net] ポインタに9年使うってどういうこと
347 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:40:29.46 ID:EqZ7VJsi.net] >>326 C C++ Rust全て経験しているとわかる Rustはプログラミングの生産性も優れている 人間にとっても効率が良い言語
348 名前:デフォルトの名無しさん [2022/02/23(水) 21:41:50.11 ID:dFCEAhYP.net] rustの改善のしどころは無いのか?
349 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:57:31.33 ID:hfe0Ou5T.net] Rustは保守性も良いね 例えば機能追加や改善などで変更時もコンパイルが通ると安全性が崩れていないと保証される点 これは開発時もそうだがそれらの実行時の無駄なデバッグが不要となった点
350 名前:337 mailto:sage [2022/02/23(水) 22:01:48.42 ID:wKfqGXJ0.net] >>341 Homebrew https://brew.sh/index_ja /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" install.sh だから、もうRuby スクリプトじゃない。 中を見ていないけど、C か何かのバイナリをインストールするのじゃないの? よく知らないけど
351 名前:デフォルトの名無しさん [2022/02/23(水) 22:19:18.74 ID:1qABUjpC.net] >>343 C C++と比べたら生産性高いのは同意するし、型まわりのお陰で言語仕様が生産性高くなりそうなのも同意するけど、やたらライブラリが充実しているスクリプト言語とかGoと比べるとまだ人間にとっての生産性では勝てなそう この辺りのライブラリ生産する人間をGoに吸われている感じがあるのでサービスにRust使うのが本格化する日は来るんだろうかって感じ
352 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 22:20:48.72 ID:vCUIsgzX.net] shellで書かれたインストールスクリプトも分からない男の人って・・・
353 名前:デフォルトの名無しさん [2022/02/23(水) 22:27:11.67 ID:PMTzrERY.net] >install.sh だから、もうRuby スクリプトじゃない。 >中を見ていないけど、C か何かのバイナリをインストールするのじゃないの? 一文も理解出来んかったんだが……
354 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 22:34:57.03 ID:ek+gncWL.net] >>346 そうなんだ、すごいね!
355 名前:337 mailto:sage [2022/02/23(水) 22:47:13.28 ID:wKfqGXJ0.net] よく覚えてないけど、 ちょっと前は、Ruby スクリプトを実行するような感じだった /bin/ruby -e "$(curl -fsSL URL〜/install.rb)"
356 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 22:56:55.36 ID:Lu1aogHC.net] >>351 昔のmacにはRubyが標準で入ってたけど、Rubyが同梱されなくなったから、RubyがなくてもインストールできるようにHomebrewのインストーラがBashで書き直されただけだよ いまでもHomebrewの本体はRubyで実装されてる
357 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:36:06.18 ID:vCUIsgzX.net] linuxも考慮されてるのかもね
358 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:54:17.80 ID:lP5I9oG+.net] >>352 今はまだ同梱されてるよ 次の12.3からpythonだけ削除 rubyとperlは残ってる
359 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:59:10.49 ID:hfe0Ou5T.net] >>347 Goには勝てる あとは時間の問題
360 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 00:02:46.01 ID:vba1sY9Z.net] >>354 ああ、ほんとだ、ごめん ちゃんと確認せずに記憶で書いてた 削除するよ、って警告はしつつも、まだRubyは削除されてないのね すでに削除されたのはphpぐらいか https://applech2.com/archives/python-2-7-18-in-macos-12-monterey.html
361 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 00:15:40.62 ID:cGpWV2sd.net] goは独習で1日と言われてて、Rustはメンター付けて3〜6ヶ月と言われてるけども・・・
362 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 00:45:28.23 ID:rseQo+7Q.net] CとC++は何ヶ月と言われてるの?
363 名前:ハノン mailto:sage [2022/02/24(木) 05:14:45.16 ID:SpBJKMB7.net] >>358 3年
364 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 05:32:35.31 ID:xAP0ZjRZ.net] C三年 C++十年
365 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 07:09:43.88 ID:4OzkyCyv.net] 柿八年
366 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 08:17:15.47 ID:h/ouWnem.net] >>324 関数型言語とかc++ templateとかで言われていたことそのまんまだな。 学習障壁の高さもそのまんまだから、もっと学習メソッド充実しないとそのままお無くなりになりそう。
367 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 08:39:04.35 ID:uhUEdxjZ.net] 習得は、主要YouTuberが配信し始めれば裾野の皆さんまで早くなるぞ dotinstallとかいまにゅさんとかが、Rust入門、応用動画作り始めれば一気に情勢は有利に動く
368 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 08:53:20.71 ID:9O+r6lMK.net] >>362 Rustは自分でメモリ解放しなくても自動でやってくれるし学習難易度も低い
369 名前:よ [] [ここ壊れてます]
370 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 11:27:39.62 ID:ODnFoKmA.net] templateって学習障壁高いの?
371 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 11:59:30.87 ID:7WoYZRJz.net] >>364 メモリ周りの管理にうんざりしたC/C++からすれば学習コストは低く感じるだろうよ
372 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:33:16.86 ID:cGpWV2sd.net] 動画よりも簡単な説明とplay gourndが付いてて、より正確なリファレンスへのリンクと演習問題がセットになった〇〇Tourみたいなのがいいと思う
373 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 12:46:50.62 ID:LF1YlWGK.net] >>364 >>366 関数型言語に似て学習コスト高いのは認めるんだな。 >>365 使い方による。 テンプレートで実装されたライブラリを使うのはそれほど難しくない。 テンプレートを使ってライブラリとかを実装するのは難しい。 全般的に難しいのがRust。
374 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 13:18:03.35 ID:QeQ2VGy/.net] >>368 やってみればわかるけどRustは簡単 関数型言語に似てはいるけど関数型言語ではない スクリプト言語たちと同じで関数型プログラミングを導入しているのみ なのでスクリプト言語と同じように簡単にプログラミングできる しかも速いためスクリプト言語から移行してきて今は快適
375 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 13:40:46.21 ID:2Gdh4nT0.net] >>368 C++とかテンプレートに渡したとたんundefined referenceエラーが起こるイメージしかないんだが Rustはそういうのは型システムレベルで防いでくれるけどC++なら実際にエラーになるかどうかは最悪リンク時まで待たないといけない
376 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 13:49:34.79 ID:8P+aIMjR.net] このへんのタイトルがでそろえば学習コストが下がるw間違いないw ・やさしい Rust ・13歳からはじめるゼロからのRustゲームプログラミング教室 入門編 ・Rustの絵本
377 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 14:08:22.05 ID:cGpWV2sd.net] C++のtemplateの学習コストはとても高い 使うだけなら簡単・便利だけど、作るとなるとエラーに悶絶すること請け合い C++の場合は、理解が完全かつ処理系の気持ちを察せられないと分からないエラーだからな
378 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 14:30:43.20 ID:7WoYZRJz.net] vector<int&>とかすると標準ライブラリ内からエラーが出る MSVCのエラーメッセージ見ると標準ライブラリが悪いかのようなエラー吐くからなぁ これはわかりやすいからまだいいが自作したtemplateでエラーが出たらライブラリが悪いのか使う側が悪いかが分からんくなる... C++20のconceptでマシにはなったが...なったのだが...
379 名前:デフォルトの名無しさん [2022/02/24(木) 14:37:14.35 ID:2Gdh4nT0.net] >>373 Rustはそういうのがないからいいよね これが型クラスの恩恵か
380 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 14:37:16.61 ID:rseQo+7Q.net] >>367 これかな https://tourofrust.com/
381 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 14:44:41.24 ID:cGpWV2sd.net] >>375 もちろんgoやrustのそれを想定して書いてるよ ただ、より正確なリファレンスへのリンクと演習問題がない 内容もやや不足かな
382 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 15:49:13.99 ID:xAP0ZjRZ.net] マシーンと会話できてこそ一流よ
383 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 15:52:51.86 ID:cGpWV2sd.net] $ こんにちは! こんにちは!: コマンドが見つかりません $
384 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 18:01:51.83 ID:rseQo+7Q.net] >>376 それならこっちの方がイメージ近いかな https://exercism.org/ 言語の説明はかなり控えめで演習中心だけど
385 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 19:03:29.20 ID:cGpWV2sd.net] 演習があるのはいいんだが微妙。。。元々知ってたらconceptはいいかもしれないけど、やはりシナリオは欲しい 説明すべき基礎事項をその学習資料の中だけで全て完結させた上で、サンプル付きのシナリオで読ませる形 ようは順番に読んでいけば一貫して不明点がほぼない状態で読ませられる資料になってないといけない
386 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 08:25:19.78 ID:eyAot+gd.net] >>380 暗いと不平を言うよりも、すすんであかりをつけましょう。
387 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 09:06:47.66 ID:fRC8OZTs.net] >>381 現状に不平や不満があるのではなく、動画よりいいと個人的に思う形態を示し、それならと提案を頂いたのでその感想を書いただけ
388 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 12:38:09.08 ID:UoLsFlPS.net] ゼロコスト抽象化のないらしいC++が Rustと同等以上に速いのは何故でしょうか?
389 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 12:51:08.94 ID:TvHITEo3.net] それはRustのゼロコスト抽象化が嘘だからです
390 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 13:02:32.51 ID:MT73K7Vw.net] https://blog.rust-lang.org/2015/05/11/traits.html "... Abstraction without overhead One of the mantras of C++, one of the qualities that make it a good fit for systems programming, is its principle of zero-cost abstraction: C++ implementations obey the zero-overhead principle: What you don't use, you don't pay for [Stroustrup, 1994]. And further: What you do use, you couldn't hand code any better. -- Stroustrup This mantra did not always apply to Rust, which for example used to have mandatory garbage collection. But over time Rust's ambitions have gotten ever lower-level, and zero-cost abstraction is now a core principle. ..."
391 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 15:08:52.35 ID:UoLsFlPS.net] 普通にあったんですね 失礼しました!
392 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 23:34:34.12 ID:cUOzOJ3p.net] Rustはasyncもゼロコスト抽象化に成功したことが大きいかな C++ではごちゃごちゃする上に安全に書くのが難しい 他の言語ではゼロコストじゃない
393 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 00:22:04.69 ID:p/EPNbqM.net] オメェがへたくそなコード書くからだろド素人
394 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 07:53:10.69 ID:H9StuZ+L.net] ゼロコスト抽象化ってなにがゼロコストなのかぶっちゃけよくわからん
395 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 08:03:27.50 ID:UQPkqsb3.net] >>389 定義もないバズワードだからな。
396 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 08:50:05.84 ID:Xi4FA93L.net] 抽象化ってのはpolymorphic class のことだと思ってたが全然違うやんけ
397 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 11:01:52.98 ID:uPKvDIET.net] https://boats.gitlab.io/blog/post/zero-cost-abstractions/
398 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 15:14:26.14 ID:1HqE5i/N.net] >>391 全然ちゃうわ
399 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 22:15:19.30 ID:mAysBGeY.net] >>389 少なくとも同じことやるならCと同じコードを吐くという意味だよ
400 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 01:42:23.15 ID:2lVDRIvt.net] >>394 その定義だとsliceのインデックスアクセスがゼロコストでなくなるが良いのか?
401 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 05:13:25.76 ID:XUQBJ/V1.net] >>395 スライスをCで実装したら速度的には同じコードを生成するってことだよ? 余計なランタイムのせいで遅くなることはないってこと
402 名前:デフォルトの名無しさん mailto:hage [2022/03/06(日) 12:55:30.33 ID:T+f/sNqE.net] トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備 https://japan.zdnet.com/article/35184296/ Rust信者の発言「こんなにも優れてる!おまえらの弄ってる言語はウンコ!CもRustに置き換わる!(=だから他スレ嵐ても良い)」 Rustメンテナ発言「すべて了解しました。Linus氏の言う通りに変更します、このようにしたいと思うのですがよろしいですか?ダメ?」
403 名前:デフォルトの名無しさん mailto:sage [2022/03/06(日) 13:01:03.89 ID:oRBcPyqI.net] >>397 https://mevius.5ch.net/test/read.cgi/tech/1638086359/542
404 名前:デフォルトの名無しさん mailto:sage [2022/03/06(日) 13:03:29.20 ID:oRBcPyqI.net] あとその記事は誰もRustがどうのとは言ってない
405 名前:デフォルトの名無しさん mailto:sage [2022/03/06(日) 19:59:13.15 ID:4x3ocuEl.net] C++に勝てると思ってた? 残念だったな
406 名前:デフォルトの名無しさん mailto:sage [2022/03/06(日) 22:50:40.67 ID:ABwQh1O6.net] C/C++やJavaなどからRustへ移行するパターンも多いけど こういう形でJavaScriptからRustへ移行する例も増えてきた https://publickey1.jp/blog/22/amazon_prime_videowebassemblywasm_vm.html Amazonはプロトタイプとして低レイヤのJavaScriptのコンポーネントのいくつかをRustのコードで書いてコンパイルし、WebAssemblyのバイナリにしたところ、JavaScriptのコードと比較して10倍から25倍も高速になったことを発見します。 これによりAmazon Prime VideoのアプリケーションにWebAssemblyを取り入れることを決定。 JavaScript VMの部分にWebAssembly VM(Wasm VM)をランタイムとして追加し、ユーザーのデバイス上へデプロイした上で、これまでJavaScriptで実現していたレンダラ、アニメーション、シーンとリソース管理の部分をRustコードから生成したWebAssemblyで置き換えました。
407 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 00:42:06.45 ID:2Lq6XwwP.net] >>401 https://mevius.5ch.net/test/read.cgi/tech/1638086359/578-579
408 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 01:25:14.31 ID:EdJ0K9yq.net] wasmにすれば多少の違いがあるにしても他の言語もほぼ同じ速度だと思うが?それ以前によほど速度がクリティカルじゃないと JS/TS書いてる人がRustなんて使おうと思わない、キモさ満点
409 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 01:48:50.91 ID:R2y3WlG0.net] >>403 GC言語でWasmを記述するメリットはゼロ だからWasm記述言語のシェアはRustが圧倒的に強くて次がC++ Rustの方が強いのは書きやすいため あとプログラミングの生産性の高さならばJS/TSよりRustが完全に上 そもそもなぜJSに対してTSが登場したのかと理由の根源は同じ 強力な静的型付け言語であるほどプログラムは書きやすく生産性が高い
410 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 02:26:33.61 ID:yxfxX1kD.net] rustが生産性高いなら、もうとっくに10年経過してる言語だから 今の10倍はユーザー居ないとおかしいよ。
411 名前:デフォルトの名無しさん [2022/03/11(金) 03:39:10.52 ID:KdADcOUe.net] JSより上はわかるけど、TSより上はなんでなん
412 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 04:15:58.39 ID:R2y3WlG0.net] >>405 え? Rust1.0は2015年 Rustの価値を上げたasync導入の2019年からまだ2年半弱 >>406 TypeScrpt使えばわかる 中途半端に型導入したJavaScriptにすぎない
413 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 06:24:04.29 ID:GmBPyzdt.net] wasmは基本的に外部世界とのやり取りをJS側に依存してるからな 言語仕様が大きい言語は入りにくいし、入れても使いにくくなる Rustをwasmにしても小さくとも数10MBくらいにはなる気がする ただJavaScriptより速いというのはケース・バイ・ケースっぽい
414 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 08:49:12.64 ID:yxfxX1kD.net] 1.0からでいいなら2009年頃のC#の使用者数や 取り巻く開発環境と互角くらいになってないと変やぞ。
415 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 09:19:45.43 ID:KfuNFJB0.net] 生産性と言語の難易度は独立だからなぁ JSは生産性低いと思うけど、昔ならプログラマ適正ないとされていた人でもなんとか書けて、人海戦術で生産性を確保しているように見える 結局C++やRustでコード書ける人は限られるし、生産性が高いから普及するなんてことはないと思う
416 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 11:07:32.97 ID:Slgk+hnM.net] C++でDOM操作出来ればどんなに楽な事か
417 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 12:33:26.46 ID:GmBPyzdt.net] なんで出来ないの???
418 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 12:46:45.10 ID:jl+r3f5I.net] 実行時にclass fieldの名前の情報がないから
419 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 13:04:09.65 ID:GmBPyzdt.net] それはreflectionであって、DocumentObjectModelではないよ どの言語でもそれをDOMとは呼ばない reflectionは登録する系か、静的に解析する系かならサードパーティ製ライブラリはなくもない C++標準ライブラリ仕様的にはそのうち入るかもって感じで検討されてる そして別にサードパーティ製ライブラリの使用はそんな面倒ではない 信用するかしないかは別だし、登録する系を自分で使うだけなら自分で実装しても出来るレベルだと思う 何に困るのか理解できない
420 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 11:24:43.30 ID:hAWsDuYe.net] ほとんど通信のコストでCPUバウンドなjavascriptなんてそんなあるわけねーだろ。。 頭おかしいんじゃねーの。
421 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 12:13:10.35 ID:aEfI8PjB.net] マルチメディアな処理とかをクライアント側でするんだよ 例えばお絵かきとか、例えばゲームとか 業務系ではあまりない(会議システムとかはある)けど、それは単に領域が違うだけの話
422 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:08:34.10 ID:4DPn029u.net] >>404 pythonはインタプリタ言語で型がないからプログラムは書きやすく生産性高い >>416 そのとおりだな
423 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:38:38.36 ID:aEfI8PjB.net] 生産性は単純に言語の制限の多さやそれに対する慣れみたいなのが効いてくるけど、その辺は利用者のスキルによる 一番効いてくるのはライブラリやフレームや開発環境などエコシステムの成熟具合 pythonはそういう意味だと生産性は高い方だと思う 規模が大きくなったときの品質は低くなるので、そこまで含めて生産性というと落ちるくらい 現状だとある程度以上の規模のプロジェクトでのパフォーマンス・安全性・品質・環境・習熟しやすさなど総合的な生産性なら、Java, C#あたりにやはり軍配が上がると思う 個人的には今のChr
424 名前:omeのJavaScriptパフォーマンスがnode.jsでも出るなら、TypeScriptとかはいい線行ってると思うし、エコシステムが成熟すればgoもいいと思う [] [ここ壊れてます]
425 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:52:15.48 ID:ARhhT+a7.net] >>417 WasmでPythonを動かそうとするやつはネタかキチガイだけだぞ あとPythonはまともな型がないから生産性が非常に低い
426 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:56:48.53 ID:ARhhT+a7.net] >>418 それは既存のものの利用組み合わせの話であって プログラミング自体の生産性が高いわけではない そこを区別できないのはヤバいぜ
427 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:03:06.54 ID:aEfI8PjB.net] web上でpython動かす!とかdebian動かす!とかそういうプロジェクトは結構あるよね 動いて満足して終わりな速度だけどw python昔調べたときはできないことも結構あるとか書いてあった気がする debianはまあデバイスがほとんどなかったので…w g++とかは遅いけど普通に動いて感動できるよ >>420 元来生産性というのはそういうものw 決められた要件に到達しうる時間でしか比較できないw
428 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:10:30.48 ID:ARhhT+a7.net] >>421 それはよほど小さなコードしか書いたことがないからだろ Pythonでちょっとでも複雑なコードを書くことになったら生産性の低さに愕然とするだろう 少なくとも静的な型付けが必須であることは全員が一致する常識となっており だからこそ例えばJavaScriptにわざわざ静的な型付けをしたTypeScriptが使われる
429 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:27:42.28 ID:aEfI8PjB.net] >>422 規模については>>418 で言及してるがw そしてそれは厳密には生産性が落ちるというより品質が落ちるだけw 結果的にある程度以上の品質を確保するまでの時間が長くなる 仮に一回こっきり雑な前提で動かしたいソフトで異常系不要、品質は本当に特定のケースだけ動けばいいという条件での生産性なら落ちないw ある程度以上の規模である程度以上の品質が必要なら型がないとねという話は語るまでもない > Pythonでちょっとでも複雑なコードを書くことになったら生産性の低さに愕然とするだろう 生産性が低いと思ったこともないし、愕然としたこともないけどな でも誰しも(アノテーションじゃない)型が欲しいと思うだろうねw
430 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:36:15.58 ID:olrB42jq.net] 単純に動けばいい程度のコードしか書いたことがないのか 引数/返り値型も1人で把握しきれる程度のコード量しか書いたことないんだろうな
431 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:37:51.91 ID:ARhhT+a7.net] >>423 ではその品質が低いプログラムを作っていればよい こちらでは保守性が低い言語は使わない
432 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:40:55.70 ID:aEfI8PjB.net] スクリプト言語でデカイのは俺だって書かないよw 書けと言われない限りねw
433 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 19:02:59.33 ID:aEfI8PjB.net] あとpythonも今はアノテーションがあるし、ない時代もドキュメントコメントがちゃんとあったから 仕事で使うならそういうの全部書いてたし、開発環境もちゃんと対応してた できないのはアノテーション同様強制だけで、問題はやや冗長になることw
434 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 01:09:57.73 ID:roEKlQ2p.net] 生産性はバッテリー初め標準ライブラリの大きさ、 デファクトスタンダードの浸透、 開発環境の強力さ、 クラウドやサーバー側の専用対応度合い で決まる。
435 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 10:16:49.90 ID:8whuKe+6.net] 一部の人に誤解されてそうだけれど、 Pythonは動的型付けではあるけれど、 型付けも強い方だよ。
436 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 14:24:56.50 ID:e39Fa4ck.net] それは分類上の話であって、話の中ではそう書いた方が誤解されるからああ書いた(型が欲しい)だけ
437 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 17:06:04.04 ID:Qy3XUFZg.net] C#、pythonなどはまともに言語仕様を理解してない・しようともしないヤツでも書けるが、rustは知らなければ書けない。 必然的に少なくとも言語仕様を理解しようとする比較的生産性の高い人員が利用することになるので、生産性は高くなる。
438 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 17:49:35.20 ID:e39Fa4ck.net] 残念ながらC++やRustの生産性がC#やpythonほど高くなることはないよw
439 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:12:40.03 ID:QeP4qKlI.net] 「必然的に少なくとも言語仕様を理解しようとする比較的生産性の高い人員が利用する」 ほんまか?Haskellを理解している生産性高い人員が利用、C++を完全理解してる生産性の、、うっ頭が、、、
440 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:28:30.10 ID:8lssQzCw.net] >>432 C#とRustは各々一長一短あるがほぼ同じ C++はメモリ管理が自動化されていないので辛いのはわかる Pythonは動的型付けで辛くて論外
441 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:48:27.86 ID:e39Fa4ck.net] C#とRustは全く違うw C# ... python/JavaScript/Javaなど比較的容易に習得できる言語を知ってればまずすぐに使えるようになるし、最初の言語としてもOK Rust ... C→C++→挫折→Rustが無難。最初の言語は絶対ムリw 全て習得してれば何を使っても困ることはないが、エコシステムの充実度で生産性が飛躍的に上がるので、Rustの生産性がC#より上がることは絶対ないw
442 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:52:44.10 ID:uIbezUFD.net] どう考えてもC#の方がRustよりも生産性高い どんだけゲーム開発で使われているかを見ればわかる
443 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:57:46.57 ID:bkBR9GT5.net] >>436 それはRustが15年遅れて登場したためです 生産性ならば明らかにRustの方が高いです
444 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:58:32.94 ID:SbmrJ+bY.net] GCがある言語はそれだけでだいぶRustよりサボれるよね どちらが良いかどうかはもちろんケースバイケース
445 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:01:42.87 ID:XOPL/QMW.net] 明らかに弱酸性が高いです!
446 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 22:08:33.05 ID:e39Fa4ck.net] Rustは早く言えば2006年、遅くとも2010年には登場してることになるのでもう余裕で10年選手だけどね インターネットが普及してる現代なら、Googleすらない頃に普及したJavaやC#と比べれば、人気出るのにかかる年月は圧倒的に短いはず 10年で発達したエコシステムが現状だとすると、その程度にしか人気がない残念な状態ということ
447 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 22:15:49.75 ID:E9xpRPLy.net] >>440 Rust 1.0が公開されたのは2015年
448 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 22:25:52.97 ID:e39Fa4ck.net] Javaなんて登場から1.0出るまでに半年だぞw その程度の人気ってだけw
449 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 23:18:30.60 ID:RoYQZH3A.net] >>440 C#出た時にはグーグルはとっくに検索エンジンのデファクトスタンダードだった
450 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 23:45:46.84 ID:e39Fa4ck.net] 2000年当時はまだ知る人ぞ知るだぞ インターネット検索つらー!って言ってる時期
451 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:05:53.25 ID:zdS58C2+.net] 2001年のYahoo JAPANのエンジンがGoogleを採用っていうニュースを見たときはすでにGoogleの性能が明らかに圧倒してたから納得だったな 2000年頃はどうだったかなあ、でかいニュースとかがないと何も思い出せない
452 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:20:38.18 ID:b6Gq1yrB.net] お前最初グーグルすらない頃にとか書いてたけど指摘されるとしれっと知る人ぞ知るって変更かよ どこぞの半島人みたいだなw 因みにC#1.0リリース時は既にアメリカでは検索サイトで1、2位を争う位だったしヤフーも検索エンジンはグーグル仕様してたくらいメジャーだった
453 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:21:16.70 ID:b6Gq1yrB.net] ヤフーてアメリカのヤフーな
454 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:29:01.66 ID:Cn/Dq9rt.net] 98年末くらいだったかな?アメリカに爆速のサーチエンジンあるよってぁゃしぃわーるどだかで話題になって 試しに使ってみたら当時としては検索結果が爆速過ぎて驚いた記憶あるな 2バイト文字にも対応してるしシンプルな画面だったからAltaVistaやgooから速攻Googleに乗り換えたよ
455 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:40:57.25 ID:U570WKgz.net] Googleは1998年創業パロアルトに移して本格的にWeb検索やり始めたのは1999年だから2000年当時はようやくアメリカで広まり始めてた頃だったと思う 2002年くらいまでは日本だとGoogleはあまり認知されていなかった 2001年YahooはGoogle採用したもののその後YSTとか作ってて、それを諦めたときが2010年。そのときと混同してないか?
456 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:50:35.13 ID:b6Gq1yrB.net] Wikipedia見てきたのかな? 日本だとヤフー強すぎて検索サイトイコールカテゴリー検索だったからな グーグルのイメージないのは仕方ないと思う でもアメリカでは2000年には既に超メジャーで、日本でも>>448 のようにアングラサイト出入りしてる人達や UNIX、Linux使いの人やプログラマーには90年代末にはデファクトスタンダードだったよ
457 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:03:47.37 ID:Cn/Dq9rt.net] >>449 気になって調べた JPNICによるとGoogleが検索サービス始めたのは1997年 ttps://www.nic.ad.jp/ja/newsletter/No70/NL70_0320.pdf AltaVistaや千里眼が懐かし過ぎて涙出てきた >>450 あの頃のアングラサイトは楽しかったね
458 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:04:15.62 ID:U570WKgz.net] いや俺は当時検索デスクを欠かさず読んでた検索っ子だったぞ そんな事実はなかった
459 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:10:14.46 ID:Cn/Dq9rt.net] >>452 検索リテラシーが低かったんじゃないの? とにかく俺や周りの人達は98年末くらいからGoogle使ってるよ
460 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:12:22.48 ID:U570WKgz.net] 検索デスクを知らないってことは嘘だね。。。
461 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:18:10.05 ID:zdS58C2+.net] うーん、やっぱいまいち思い出せないけど2001年頃にはVisual Studio6つかって趣味でいろんなゲーム作ってたような学生だったし、おれはとっくにGoogle使いまくってたような気がする 当時のIEって何かといろんなバーが追加されまくって表示が狭かったんだっけ、なつかしいね 初代Sleipnirとか出てからネットサーフィンも快適になったんだったかな たしかに一般認知されるか、っていうとテレビCM出しまくるようになってからだろうし、もっとずっと後だね
462 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:42:30.09 ID:j1ckIHBu.net] 出た瞬間からアーリーが早く認知してたことをベースにするならRustは10年余裕で超えるので浸透速度が非常に遅い。 そりゃそうよ。OS付近やかなりな低レベルライブラリ向きで、アプリ開発にはバッテリーが小さすぎて向いてないんだから。
463 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:49:04.04 ID:rjFiO5pI.net] >>437 関係無い。 RustはRubyやPerlよりも生産性が低い。
464 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:24:15.93 ID:OitdNeYT.net] 年末に世の中の流行について行こうとPython+OpenpyxlでExcelファイルいじくるプログラム書いてみた 単にワークシート読み込むだけで分オーダー ライブラリがワークシート読み込みだけなのでこっちはなんもやってない。 こりゃあかんってなって ためしにC#+EPPLUSで同じプログラム書いてみた 全プログラム終了するまで5秒ww あと、既存チャートの参照範囲変更するとかEPPLUSでサクッとできることがOpenpxlじゃできねぇんだわ どこがいいのPythonて?
465 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:25:55.59 ID:U570WKgz.net] >>458 両方のコードを公開しない限り、誰も何とも言えないと思う ああ、この人python使えないんだなって普通は思うよ
466 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:33:50.85 ID:OitdNeYT.net] Pythonて集合演算ができるってんで {a,b,c}3要素からなるべき集合のべき集合とか(ホントは位相空間を作ってみたかった)簡単に書けるかな?とおもってやってみたが、 とても簡単にできそうにない MathematicaだとSubsets[Subsets[{a, b, c}]]で済む話 このPythonとかゆーがらくた言語なんでこんなに流行ってんの? インターフェース誌あたりはずーっとPython一色だし。 Web scrapingとかだとC# Scriptでも実行時コンパイルで待たされるんで、 Pythonはイライラ感なく即実行できてウマーとはオモタ
467 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:44:33.00 ID:OitdNeYT.net] >>459 ま、Python使えないとお前が思うのは勝手だが ワークシート読み込みのはライブラリが勝手に読むこともわからないんだろな。 プログラマが手を下すとことじゃない。 Matlabあたりも同様だけどこういうインタープリタは繰返し制御文で実行するんじゃなく ライブラリに任すようにコーディングすんだわ。そこで1分とかかかってるようじゃゴミ判定が正解 ま、Python+Openpyxlは糞だな。とても日々の業務になんか使えないシロモノ。 こんなの使ってエクセルの自動化とか糞本買った方お気の毒としか言い様がない。 会社から金貰ってるって仕事してるっていう気持あるなら、 直接エクセルファイルunzipしてxmlいじくるか、素直にC#+EPPLUS使った方がはるかにまとも
468 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:48:39.91 ID:OitdNeYT.net] でもおれPythonには日々世話になってんのよな fakymac+keyhac しょっちゅう動作がおかしくなるけど、 sunキーボード+emacsで育った世代なんでさww
469 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 03:00:48.63 ID:U570WKgz.net] >>460 そんな大変なんだろうか・・・ def subsets(x): return [y for i in range(1,len(x)+1) for y in itertools.combinations(x, i)] >>461 別に俺何を使っても書けるし、大昔から出来るし、時間かかるなら使い方悪いだけだと思う=お前はpython使えない
470 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 08:06:12.15 ID:fAU8x8Os.net] >>431 それだと使える人間が少なくなって全体の生産性は落ちるだろ。 Haskellの二の舞コースじゃね?
471 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 11:35:31.82 ID:A2g22mwQ.net] >>461 直接って、xlxsの仕様を理解している前提じゃん。 Pythonは、速度要らなくて、目的で検索してライブラリが出て来て、コードコピペでも大体動く的なそういう使い方が多いと思う。
472 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 12:52:11.85 ID:s8pRYrZQ.net] rustが広まったらどっちにしろ大して理解してない奴が投入されて地獄見るわ。 そういう当たり前のことすら想像できない奴がrustマンセーしてるんだよな。
473 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 15:22:25.57 ID:sRZMI6dS.net] >>466 一番儲かるのはスコップ売る奴という落ちだろうな。
474 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 15:34:13.41 ID:O0maCHfq.net] 参考文献というお布施
475 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 16:52:44.24 ID:Vpjp3tKl.net] 習得難易度が多少高くても自由度が低い言語を使う場合 低スキルメンバーが混ざっても惨事になりにくい 逆に習得難易度が低くても自由度の高い言語を使う場合は 高スキルメンバーで揃えないとすぐに破綻する
476 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 17:42:54.49 ID:DajlRg+n.net] 昔はJavaの習得難易度高かったからな(VBに比べて) その頃はそういう言い分もあって、実際にJavaはVBから来たコピペ野郎の洗礼は受けたものの、簡単なことしかさせないフレームワークという武器を得て、人海戦術の片腕となり得た しかし今は当時より更に難しくなったJavaが習得難易度低に分類されているw そのJavaより習得難易度がはるかに高く、ライブラリの使い方ではなく言語レベルでの書き方が難しいRustが低スキルメンバーに扱えるかというと・・・w
477 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 18:36:25.33 ID:O0maCHfq.net] C++が出来ないからRustに移ったのにそれも習得できないってあとナニをがんばるのやおまいら
478 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 18:46:13.42 ID:t3FNLZzV.net] C++理解できんようなやつがRustを理解できるわけないやろ
479 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 18:58:34.72 ID:DajlRg+n.net] でも多分ほとんどそういう連中だと思うぞ 普通に勉強対象としてgoとRustを比べてるところがもう死ぬほどおかしいんだけど、そこに思い至らないってことは・・・
480 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:00:10.43 ID:N6RMeM8u.net] 言語を習得するのは最低限必要なスキルレベルでしかないのに それをもってプログラミングスキルを推し測ろうとする人って所詮そのレベルなんだよね
481 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:02:39.63 ID:H3mwwYQo.net] C++はバカでも使えるが、バカは使えこなせず、C++コンパイラはバカコードを通すので、問題を起こす Rustもバカは使えこなせない点で同じだが、Rustコンパイラはバカコードを通さないため、問題が起きない
482 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:03:52.90 ID:DajlRg+n.net] あとC++が理解出来ないからRustに移るということはない C++で開発し続けることに挫折して、Rustに移るだけだと思う
483 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:11:28.15 ID:DajlRg+n.net] Rustが問題が起きないということもなくて、Rustを使ったらプログラムを書けなくなる人がかなりの量出るだけw
484 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:13:15.97 ID:H3mwwYQo.net] >>460 >>463 二人ともそれぞれsubsetsとcombinationsというライブラリ関数に頼って書いているだけに過ぎない ライブラリ関数が充実してると言いたいのか、プログラムを書きやすいと言いたいのか、中途半端 そして自力で書けるならばライブラリ関数の有無は大した問題ではないから何が要点かわからない
485 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:17:58.62 ID:H3mwwYQo.net] >>476 C/C++/Rustいずれか一つでも挫折するような人は、いずれも使いこなせないから結果は同じ C/C++/Rustいずれも使える人はRustを使う なぜなら言語の機能が他より高くてプログラミングしやすいため
486 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:29:06.52 ID:DajlRg+n.net] >>478 自力で用意できるかできないかはどうでもよくて、標準ライブラリにあるかないかが大きく違う だってどの言語でも用意できないわけがないからw 俺はpythonでやるならという条件で書いただけ >>479 C/C++/Rustはそれぞれ共同開発する人が誰かによって変わるだけ 自分で使うだけなら速いし面白いし安定してるし、C++で書く C使いが多ければCを使うし Rust自体を使うことが目的でないのなら、Rustやってみたい人が多いときRustにするだけ 量的には C > C++ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rust かなぁ
487 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:35:38.12 ID:bERyk9+R.net] C/C++/Rustの3つならば明白に言語が提供する機能差がある 3つとも書けるプログラマーならば99%がRustを選ぶのは間違いない
488 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:38:32.90 ID:WcCf8R0B.net] どんだけ馬鹿にされようが罵られようが構わないけど C++は糞すぎるワイには手に負えない言語とだけは言っておく C++20以前はジェネリックスに渡す型引数の制約を実現するために偶然見つかった「SFINAE」という「コンパイラの挙動を応用する方法」を用いるのが標準レベルでデファクトスタンダードになっていたとかヤバすぎだろ 普通の人なら気にも留めないような挙動を一般ユーザーにも把握させることを強要する時点で狂っているとしか思えない SFINAEの代替手法として導入されたconceptsですらごちゃごちゃしているしそこらの一般ユーザーはc++のバージョンアップについていけるほど忍耐強くはない だからみんなRustに移る
489 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:46:14.60 ID:H3mwwYQo.net] >>480 その様子だと君にはどちらも無理だろう もし書けると言うならば そのcombinationsをRustで型Tのイテレータとして実装コードを出してごらん
490 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:57:31.66 ID:DajlRg+n.net] >>481 そんなことねーよw >>482 まあね。その剥き出し感がいいんだよ遊びで使う分には。見えてない部分がないところ。 一応言っておくと難しい機能は公開するようなコードでは使わないよ。 >>483 https://docs.rs/itertools/0.7.8/src/itertools/combinations.rs.html
491 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:02:15.14 ID:H3mwwYQo.net] >>482 C++のSFINAEはもちろん酷くて論外だが 逆にRustの現状のトレイト実装ルールは実装型を互いに排他を満たす必要があり厳しすぎる もちろんRustコンパイラは進化し続けていて一部特殊化がそろそろ安定化しそうで少し緩和となり期待
492 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:03:31.49 ID:kxxb+wWf.net] 若い頃はSFINAEのパズル解く感じが好きでヤバいコード結構書いてたけど、だんだんあれは正気ではなかったなと思うようになってきた
493 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:06:07.03 ID:DajlRg+n.net] >>486 やめてそういうこと言うのw
494 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:13:48.68 ID:bERyk9+R.net] >>484 あなたはそのリンクを出すことでRustを全く知らない無知だとバレました なぜならそのリンクのitertoolsバージョン0.7.8は4年前なのです 検索でリンクを拾ってこない限りそんな超古いバージョンを示す人はいません あなたはプログラミング未経験者もしくは初心者であることがバレてしまいました
495 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:30:44.95 ID:H3mwwYQo.net] >>484 偉そうなこと言っていてRustを理解できす挫折した落ちこぼれだったのか >>480 でRustを蔑んでいたから怪しいと思っていたらやっぱりか
496 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:46:50.19 ID:DajlRg+n.net] >>488-489 別に最新だろうがすぐ行けるだろw 俺が自分で書いたら正解はコレって出す予定だったからわざわざ出題したチキンなんだろ? だからこれにしただけw
497 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:05:33.57 ID:H3mwwYQo.net] >>490 言い訳ばかりだな じゃあもう一つの>>460 のsubsetsイテレータをRustで書けたら認めてやろう
498 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:23:06.07 ID:H3mwwYQo.net] もしプログラミングが不慣れで難しいようだったら イテレータを「どんな仕様」にしてしまってもいいぜ それがヒントだ
499 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:27:42.88 ID:DajlRg+n.net] お前に認めてもらう必要なんてねーよw Rustを使うやつはバカしかいないんだなw
500 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:37:04.88 ID:bERyk9+R.net] >>493 今回は検索してリンクを拾ってこれなかったのね
501 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:38:31.66 ID:DajlRg+n.net] 煽って正解もらいたいバカしかいないの?w
502 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:05:39.63 ID:bERyk9+R.net] >>492 subsetsをどんな仕様のイテレータでもいいってことは 初心者でもすぐ出てくるあれでいいってことか >>495 これは超初心者でもいいからプログラミングをしたことがあるのか それとも煽っているだけなのかが判明しちゃう良問のようです 断念ですか
503 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:10:01.54 ID:DajlRg+n.net] 断念もクソもなんでお前らに言われて俺がやる必要があるんだよw バカだろw ハッキリ言っておくが俺はRust書けるし、多分お前らより詳しいよ普通にw こういうのがRust推してる信者頭おかしくて性格歪んだやつしかいない雰囲気100%で毛嫌いされてる理由なんだろうなw
504 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:11:58.21 ID:DajlRg+n.net] 端的に言うと、流行りばかり気にするすごい頭悪い人たちと同じ匂いがするんだよw
505 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:16:52.73 ID:H3mwwYQo.net] >>497 Rustに詳しいならば 既存のこれを使えばいい、と即答できる問題 あるいはsubsetsイテレータという問題だから仕様が自由に何でもいいならば初心者でもコードを一瞬で示せる問題 どちらも出来ないならRust未経験と断定できる
506 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:31:30.23 ID:DajlRg+n.net] permutationやcombinationとか普通にはあまり使わないんだよ 競プロとかやってる実利のないコードをメインに書いてるバカがそういうのをやたら使いたがって、俺より遅いコードしか書けないし、創造的なロジックもどうやら苦手そうなのに、そういう問題やたら出してくるんだよね 俺は元々そういうの得意だけど、その手の問題を好き好んで出してくるバカに答えを書いてやるのが嫌なんだよw 納得?
507 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:43:02.13 ID:bERyk9+R.net] >>500 permutationやcombinationのアルゴリズムが少し難しいのはわかります でも今回はsubsetsですよ さらに>>492 でどんな仕様にしてもいいと言っていてしかもそれがヒントだと言ってるのでこれは気付きますよ
508 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:45:50.74 ID:DajlRg+n.net] 俺pythonで書いてるし、自分でもすぐ書けるけど、お前に回答すんのが嫌なんだよw なぜならお前がバカだからw 何度もそう書いてんだけどw
509 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:50:52.11 ID:DajlRg+n.net] ああ、ちなみにpermutationやcombinationのアルゴリズムは簡単w
510 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:53:14.37 ID:H3mwwYQo.net] さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484 ところが今回のsubsetsについては回答できない 検索で出てこないから答えられないのだとわかる
511 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:04:20.16 ID:DajlRg+n.net] 永久に書いてやるよw すぐ書けるけど、お前に回答すんのが嫌なんだよw なぜならお前がバカだからw 何度もそう書いてんだけどw
512 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:07:34.34 ID:bERyk9+R.net] >>503 なるほど subsetsのアルゴリズムは難しくて無理でしたか
513 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:09:47.42 ID:DajlRg+n.net] 永久に書いてやるよw すぐ書けるけど、お前に回答すんのが嫌なんだよw なぜならお前がバカだからw 何度もそう書いてんだけどw
514 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:20:19.51 ID:H3mwwYQo.net] >>507 さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484 itertoolsをもし本当に使ったことがあるならばsubsetsもあるだろうことくらいわかるだろ?
515 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:24:18.79 ID:DajlRg+n.net] >>508 >>507
516 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:32:35.94 ID:bERyk9+R.net] >>508 そこは英語力の問題かな subsetsが見つからなかった時にpowersetを探せるかどうか
517 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:54:14.91 ID:DajlRg+n.net] 俺理系院卒だから数学一般教養くらいはあるぞw 難しい話をしてるつもりなのかもしれんけどw
518 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 00:52:00.92 ID:2VKgWl5Z.net] >>481 俺はC++もRustも基本的部分は理解しているつもりで、書こうと思えば Rustでも 書けると思うが、書こうとは思えない。 しかし、C++は使う。
519 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 10:39:48.98 ID:iFx1kR7d.net] 同じことをやるにしてもrustは面倒くさそう
520 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 14:20:20.70 ID:4Deniw6A.net] rustは詳しく知れば知るほど使える領域が狭いことに気付く。まあ勉強して損することはないとは思うけど。
521 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 16:01:45.47 ID:FLjIdsXf.net] まぁ、Rustがものすごく人気になるようだったら、Rustを下敷きにしたC++サブセット Smart C++が出てくると思うわ。 そしてc++はライブラリアン向けのunsafe的な扱いになる、と。
522 名前:デフォルトの名無しさん [2022/03/16(水) 17:58:27.77 ID:NLGXbRJg.net] >>515 無理じゃないかな。
523 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 20:15:10.51 ID:TNL7Q8/z.net] rustが他言語の仕様に影響を与える部分はでてくるだろうね。
524 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:02:09.61 ID:0TydPa2f.net] 反面教師にはなるよねw
525 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:24:41.08 ID:MkjFLw2M.net] >>512 それはあなたの能力では理解できなかったから思うだけで留まり実際には書けていない >>513 逆だ 同じことが簡潔に書ける >>514 むしろ幅広い分野で有効 後発だからとも言えるが言語仕様が幅広いパラダイムを洗練して採り入れていることが勝因とみた [] [ここ壊れてます]
527 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:56:01.01 ID:GaQESt6l.net] 少なくともC++はリプレイスしてほしいな
528 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:58:33.64 ID:0TydPa2f.net] Rust信者って本当にバカだなw 妄想で他人を説得はできないんだよ グラフ構造を標準ライブラリとunsafe使わずに簡潔に書いてみろよw 他の言語で出来ないやつないから Rustも超狭い領域ではオンリーワンくらい有効なんだけど、それ以外では趣味でしか使われない
529 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:51:54.51 ID:yCGU0QjC.net] >>491 >>492 横からやけどほんまにどんな仕様にしてもええの? それなら長さlenのsubsetsイテレータは10文字で完成 『0..(1<<len)』 数字を2進数で見てbit立っている要素による各subset 0は全ての要素がないから空集合 それで納得してもらえんのやったら入力inputとして (0..(1 << len)) .map(|c| (0..len) .filter_map(move |i| (c & (1 << i) != 0).then(|| &input[i])) .collect::<Vec<_>>()) これでちゃんとしたsubsetsイテレータが完成 例えばinput = &["a", "b", "c"]ならば以下が順に出る [] ["a"] ["b"] ["a", "b"] ["c"] ["a", "c"] ["b", "c"] ["a", "b", "c"]
530 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:53:02.55 ID:yCGU0QjC.net] >>491 >>492 横からやけどほんまにどんな仕様にしてもええの? それなら長さlenのsubsetsイテレータは10文字で完成 『0..(1<<len)』 数字を2進数で見てbit立っている要素による各subset 0は全ての要素がないから空集合 それで納得してもらえんのやったら入力inputとして (0..(1 << len)) .map(|c| (0..len) .filter_map(move |i| (c & (1 << i) != 0).then(|| &input[i])) .collect::<Vec<_>>()) これでちゃんとしたsubsetsイテレータが完成 例えばinput = &["a", "b", "c"]ならば以下が順に出る [] ["a"] ["b"] ["a", "b"] ["c"] ["a", "c"] ["b", "c"] ["a", "b", "c"]
531 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 01:31:24.96 ID:HeUHSOmZ.net] collectするならfoldで十分かな fn subsets<T>(input: &[T]) -> impl Iterator<Item=Vec<&T>> { let len = input.len(); (0..(1 << len)) .map(move |c| (0..len) .fold(vec![], |mut v, i| { if c & (1 << i) != 0 { v.push(&input[i]) }; v }) ) }
532 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:22:57.24 ID:stJJ2apy.net] C++でsubsetsイテレータを書くとどんな感じになるの?
533 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:29:21.66 ID:M6s617kA.net] >>519 馬鹿
534 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:39:09.51 ID:faeKJv0z.net] Rust同様どうとでも出来るよw C++のは古いから名前がアレだけど 俺は>>522 じゃないけどfilterとmapで書いた方が分かりやすいとは思う この書き方でpushとかは見たくなかったw
535 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:53:46.50 ID:75al4ANx.net] うむ >>522 filter_mapとthenによるOption利用が分かりやすいな
536 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 03:28:10.97 ID:OxdqHDsn.net] >>527 ぜひC++版お願い
537 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 04:22:11.55 ID:faeKJv0z.net] >>529 何度でも言うけど、そういう要求は飲まない 金くれたら書くよw
538 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:12:49.73 ID:8E8aTCar.net] >>520 リプレースはしなくていい。 コーダーとかが通常使う安全運転版と、ライブラリアン用のフル版が住み分け・共存できればいい。 従来はコーディング規約とライブラリでやっていたところだけど、こういうのはshared ptrみたいに旨が使う共通仕様にしたほうがいい。
539 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:19:10.27 ID:H9cH52GC.net] Rustに移行すれば 色んな問題が一気に解決するだけでなく プログラミングもしやすくなって一石二鳥
540 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:41:07.21 ID:FVjeEviC.net] >>532 サンプルコードがもっと充実してきて、標準的なコーディングが普及してきてから検討するわ。 Rustは土方向け言語目指しているのに、今のRustの仕様だと土方に難しすぎるから中途半端。それならc++&コーディング規約でいいや。
541 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:49:29.01 ID:+B7ucdDW.net] >>533 君たち土方には難しいのかも知れ
542 名前:ネいが普通のプログラマーにとっては難しくないしコーティングがC++より快適 [] [ここ壊れてます]
543 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:57:01.71 ID:qDb9bUKB.net] Pythonくらいしかやったことない人にとって難しいのはそうだろうけど C++14/17についていってる人ならRust余裕だと思うけどなぁ
544 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 10:08:01.84 ID:faeKJv0z.net] Rustに出来てC++が似たようなことを出来ないってことはまずないよ ただ同じことをしたい場合、手間がすごいかかる(23は知らんけど) そしてどう転んでもエラーがRustほど人間に優しくなったりはしない(と思う) C++に出来てRustが似たようなことを出来ないってこともそんなに多くない まあでもこっちは本当に出来ない https://www.reddit.com/r/rust/comments/n7rjfk/what_can_c_do_that_rust_cant_2021_edition/ ただRustは初心者には難しすぎ、ある程度他の言語をやってる人にも難しいというハンデがある なのでスクリプト言語感覚でRustをやろうと思うのはちょっとオススメできない 楽を出来る場面は確かにあるので、そこをどの程度メリットと捉えるか 制約をどの程度デメリットと捉えるかで評価が分かれる
545 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 12:06:55.23 ID:wJGqDNhd.net] >>534 土方にやらせる話をしているんだよ。 Rust信者がそういう意識なら、RustがJavaみたいに流行ることは無いな。 やっぱりHaskellコースかね。
546 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:20:31.29 ID:YyXXowcK.net] >>534 >君たち土方には難しいのかも知れないが普通のプログラマーにとっては難しくないしコーティングがC++より快適 自分がどれくらい矛盾してること言ってるのかも理解してなさげ。
547 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:26:55.16 ID:kAy4MIQW.net] >>522 Rustはスクリプト言語のように簡潔に書ける点もいいね それでいてC言語並に速い C++は簡潔に書けず手間暇かかりすぎる
548 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:35:40.91 ID:+BzvG1OL.net] お手軽さっていう話だと、関数の仮引数の型も型推論してほしい、ってたまに思っちゃう
549 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:44:45.18 ID:qDwk9HhQ.net] >>540 技術的にはできるし、できるならやりたくなっちゃうところをあえて削ったのは英断だと思ってる 過去のコードや他人のコードを読むときに直近に型があるのは大きい
550 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:59:38.79 ID:Rcv7QaS+.net] > 仮引数の型も型推論 OCamlだとそれはフツーにできてるのにね > 過去のコードや他人のコードを読むときに直近に型があるのは大きい 同じような話だがJavaのジェネリクスで > List<Foo> list = new ArrayList<>(); > この右辺のパラメータが省略できるのを有難がるのは残念で > ホントは左を省略してvar ist = new ArrayList<Foo>(); > と書けたほうが嬉しいのにJavaはやっぱりダメダメ みたいな意見をみたことがあるが、左を残すことこそ大事なんだよな 実装に対してではなくてインタフェースに対してプログラミングするのであって 変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに それをわかってないやつはタイピング数などで判断して世迷い言を言う
551 名前:デフォルトの名無しさん [2022/03/17(木) 19:25:12.70 ID:pdkFYtDC.net] Rust学習しはじめだがEnumの仕組みは良いと思う。 C#あたりに組み込まれればいいのに。
552 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:43:27.53 ID:oh1xEFC0.net] enum Optionとか便利で簡潔に null nil undefined -1など無くして安全に出来ていいよね それでいてコンパイル後は最適化されたり消えたりして効率も両立されたり
553 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:52:32.01 ID:faeKJv0z.net] 別にC++でも同じことはできるけどね 自分で組めばC++14とかでもrxっぽく書いたり、Optionの実装も余裕 手間さえ惜しまなければw
554 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:55:03.76 ID:faeKJv0z.net] Javaも最近は左側省略できるよ おっしゃるとおり基底型何にするかは選べないけどw
555 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:58:40.56 ID:LRb50lm3.net] C++17にstd::optional<T>があるにはあるのだが... 膨大な量の既存のSTLが無効値をoptionalに置き換えられることはない つまり無効値でoptionalを返す風潮ができにくいから悲しみ
556 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:59:36.98 ID:oh1xEFC0.net] 引数の型推論は原理的にはかなり出来そうだけど 例えば引数がas_ref()で使われていて変換後がPathなら引数はimpl AsRef<Path>までやっちゃう? でもその利用者へのインタフェース明示や可読性と保守性を考えると型明記でいいような気がする
557 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:13:38.45 ID:faeKJv0z.net] C++もautoだらけlambdaだらけにすると引数も戻り値も結構型書かなくていいけど、遠すぎて何に怒られてるのか分からん代入エラーが出たりもするw Rustも同じだけどエラーは分かりやすい
558 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:15:46.46 ID:cEFLJG6J.net] >>545 そこはやろうと思えばできるレベルと Rustが標準ライブラリで全面採用サポートしてるレベルで天と地の差があるよね 例えば>>522 もbool値がthenでOptionを生成してそれをfilter_mapが受け取ることで簡潔なコードになっていたり
559 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:23:13.02 ID:faeKJv0z.net] そこはfilterとmapの方が分かりやすい
560 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:32:28.43 ID:7cb0HHrx.net] 一般的にfilter_mapはわかりやすと速さを両立 だからわざわざfilter_mapやfilter_map_okが用意されている
561 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:35:05.28 ID:faeKJv0z.net] そんなところは全く速さに影響しないと思うよ
562 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:43:21.73 ID:LVblziyo.net] >>553 その種類のイテレータを2段は最適化前はもちろん速さに影響するけど 最適化により最終コードが同一コードになることを確認したということ?
563 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:49:32.84 ID:faeKJv0z.net] お前は速くなることを確認したんかい?w 俺は出来るけど速くならないことを確認する必要がないと判断したw お前は恐らく出来ないw
564 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:58:49.13 ID:S0ETBIy2.net] コードそのままならイテレータ2つより1つの方が速いと明白なので 速さが同じと主張する>>555 が最適化で同じコードになることを示す必要がある
565 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:05:07.99 ID:faeKJv0z.net] 明白じゃねーよwwwww
566 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:19:03.24 ID:ONkUn4dy.net] たぶん>>557 氏はイテレータの動作原理を知らないのだと思う 例えばfilterは構造体Filterを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる 同様にmapは構造体Mapを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる 最適化前はそれら二重のオーバヘッドがある
567 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:24:52.40 ID:qNBuWQhB.net] 速さに関して議論するなら最適化のコードがどうなるかを確認すべきでは 特にイテレーターアダプターを何度も噛ませてもfor文相当のコードが生成されるというのはrustの売りのひとつだよね
568 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:29:02.79 ID:IFNw/pUN.net] もし最適化後に有意に速度差があるなら、それは性能バグとしてIssueにあげるべき問題だと思う
569 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:31:57.85 ID:IHLBrgoM.net] >>559 その通りで最適化で非常に効率な最終コードとなる ただし今回のケースでfilter().map()がfilter_map()と同一コードになるかどうかは自明ではない したがって>>553 に立証義務がある
570 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:36:47.68 ID:faeKJv0z.net] 立証義務なんてねーだろwwww できないからって他人に頼るなwwwww
571 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:38:48.81 ID:IFNw/pUN.net] 意味的に同じことやってるんだから、理想的な最適化コンパイラは全く同じバイナリを吐くはずで 遅くなるはずってのも別に自明ではないのでは
572 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:46:51.69 ID:IHLBrgoM.net] >>563 意味の同じプログラムが最適化で常に同じコードになるかどうかは自明ではない そしてそれを期待することはよいが前提としてはいけない 自明ではないことを同じと主張する側に立証義務がある
573 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:48:42.58 ID:faeKJv0z.net] できないんだねwwww rustの吐くコードすげー見にくいしなw それ以前にアセンブラ読めなそうw
574 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:52:00.13 ID:IFNw/pUN.net] >>564 ん?別に同じになるのが自明とは言ってないよ どちらも同程度に自明でないって言ってるだけ 立証はまぁやりたい人がやればいいんじゃない
575 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 22:57:38.05 ID:s2P7MscG.net] >>565 > rustの吐くコードすげー見にくいしなw 無知っぷりを曝け出してるな
576 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:14:09.53 ID:faeKJv0z.net] お前が無知なだけw
577 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:29:12.99 ID:OpaED0hw.net] >>565 LLVMがアセンブリを吐いてることも知らないのか
578 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:31:17.03 ID:faeKJv0z.net] ビビリ単発IDが何もかもを証明しちゃってるw お前は何も分かってないw
579 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:50:47.22 ID:76PcfavB.net] >>529 C++ではそんなに簡単には書けない
580 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 23:59:39.29 ID:faeKJv0z.net] C++でも簡単に書けるよw C++20で導入されたrangeでも使ってみw より古い規格でもユーザーライブラリを使えばRxっぽい記述は簡単に出来る 自分で書くと難しくはないが骨が折れるタイプの実装 並列化を意識しない限りだけどw まあ並列化を意識しないで簡便さを意識すれば無理にRxを使う必要もないけども・・・
581 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:00:49.69 ID:Mo7HNly3.net] >>572 無理でしょ 実際に書いてみ
582 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:03:10.42 ID:slshVm4c.net] 加えて言えばRxでなければ上限を意識したループで書けるのでメモリ確保が最適化できるし、手でinlineにする部分を選べる分より速く書ける可能性もあるw
583 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:03:27.72 ID:slshVm4c.net] >>573 いくらくれる?
584 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:10:24.15 ID:eD3MnnxT.net] >>574 無理だ
585 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:13:29.40 ID:slshVm4c.net] 君にはそうなんだねw可哀想にねw
586 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:37:03.66 ID:3Q/aNMKI.net] 前スレの時からそうだけどRustのコードばかり出てくるスレ C++で同じコードを書くと長く見難くなってしまうからだろうけど
587 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 00:49:14.78 ID:slshVm4c.net] C++20なら普通に同じくらいw あるのはRustの不慣れな部分コードねw まあこのレベルの作業に良い悪いもないけどw 君等のお勉強()にはいいんじゃないのw
588 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 03:33:36.54 ID:ljbCBN/E.net] >>524 のC++バージョン教えて
589 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 06:33:28.96 ID:slshVm4c.net] これだけヒント出してやったのにまだ書けないのやばくね?w
590 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 08:39:50.87 ID:q9WLoJ2B.net] >>542 変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに とか言っているのに、使わない部分も含めてインターフェイスを制限する変数の型制限を有難がるのは笑いどころでしょうか? 「変数の型を固定して、コーダーの想定外の動きをしないように限定する」なら、そういう考えをもあるよね、となるけど。
591 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 19:44:54.15 ID:MDox3gf5.net] >>580 手間がかかって分かりにくいのでC++でやるのは不向き
592 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 21:03:36.45 ID:slshVm4c.net] >>583 この人も出来ないタイプなんだねw そういうことは全くないよw
593 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 21:36:44.00 ID:w8aoFpzv.net] >>584 Rustのように楽にコード書けるの?
594 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 21:41:42.97 ID:slshVm4c.net] >>585 楽かどうかは主観なので、まず自分でやってみれば? このレベルなら俺はどちらが楽とかはないよw
595 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 22:10:37.73 ID:HiGga5GH.net] 9割9分はRustの方が楽にプログラミングできる
596 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 22:13:55.40 ID:slshVm4c.net] 単発IDは自作自演だから信用ならんのだよねw
597 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 23:01:40.37 ID:l4s3ZEj8.net] ほとんどのケースでC++よりRustが簡潔になることは皆承知
598 名前:デフォルトの名無しさん mailto:sage [2022/03/18(金) 23:44:11.33 ID:slshVm4c.net] お前がC++使えてないだけw 変わらないよw 単発IDは自作自演
599 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 06:24:53.41 ID:GZmTU31E.net] >>590 あちゃ、痛いところつかれましたわ
600 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 08:29:04.12 ID:yuJH1G8D.net] 変わらない と連呼するだけの簡単なお仕事ですw
601 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 08:34:00.61 ID:DslNhsx1.net] 単発IDが皆承知というだけで、ヒントも出したのにC++書けないバカが悪いw
602 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 08:35:31.99 ID:GnnMuKUb.net] Rust信者がたくさん居るかのような見せかけのIDコロコロ
603 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 14:50:55.94 ID:QSBhdvNV.net] 公平に見てここまでに Rustでの実装コードはある>>522 >>524 C++での実装コードはない 不利なのはC++側
604 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:08:06.66 ID:DslNhsx1.net] 必要だと思うなら自分で書けよwwww 書かなくても分かるから書いてないだけでw 両方分かる人はちゃんと言葉で説明できるからw
605 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:10:45.07 ID:DslNhsx1.net] そもそも分からない言語があるのにこういうスレに来る方が間違いなんだがw
606 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:57:28.84 ID:+R/acvy/.net] >>595 やめたれw
607 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:01:08.28 ID:unVMuDSw.net] 口だけでコードとか全然書けないヤツってよくいるよね
608 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:04:54.04 ID:DslNhsx1.net] 単発ID君悔しいのねw 俺は永遠に返事し続けるよw 君がC++使えるようになる日が来るといいねw
609 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:11:35.17 ID:+R/acvy/.net] >>599 いるよなw コード書いたようが早いような言い訳はいっぱい書けるのになw 言い訳だけはいっぱい書けるんよw
610 名前:デフォルトの名無しさん [2022/03/19(土) 16:12:10.15 ID:m5PNQvz6.net] >>547 互換性が壁になるのは、長く広く使われてる言語ではどうしようも無いしなぁ。 だから言語も新しく作られるわけだけど、新しいものは認めません!という奴はいつだっている。
611 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:13:51.10 ID:M61n5/yF.net] もう少しわかりやすくして このsubsetsイテレータをC++で実装すればいいんだよね fn subsets<T>(input: &[T]) -> impl Iterator<Item=Vec<&T>> { let len = input.len(); (0..(1 << len)) .map(move |bits| (0..len) .filter(|index| bits & (1 << index) != 0) .map(|index| &input[index]) .collect()) } fn main() { let input = ["a", "b", "c"]; for s in subsets(&input) { println!("{s:?}"); } } 出力結果 [] ["a"] ["b"] ["a", "b"] ["c"] ["a", "c"] ["b", "c"] ["a", "b", "c"]
612 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:30:53.75 ID:kMuw3v3E.net] >>602 置き換えのためのテスト手順なんかも考えずに新しいものにすればいいって言い張る老害も たくさんいるんでその辺はどっちもどっちだがな。
613 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 16:40:18.91 ID:DslNhsx1.net] filter_mapがfilterとmapに分かれただけじゃんwwww マジでそんなのを何度もブラッシュアップするレベルでは俺には一生追いつけないぞw どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪いのと結局collectしちゃうのはイマイチだねw あと生成コードの比較、もしくは時間測定は出来たのか?w 何度も言うが、誰でもどちらの言語でも同じように書けるぞw
614 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 17:31:22.77 ID:M61n5/yF.net] >>603 やってみたがC++の従来のイテレータ仕様が悪すぎることが敗因 なのでC++20からのstd::rangesでかなり改善できる ただしRust版ほどシンプルに仕上がらないな >>605 勘違いで詰まらない言いがかりを付けてくるな そこまで言うならばC++版のコードはおまえに任せる
615 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:10:48.21 ID:DslNhsx1.net] 単発IDがたまに連続させたって意味ないんだけどw その辺はとうに>>572 に書いたよね?w まだ出来ないの?wwwww
616 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:22:18.16 ID:u/mznaJY.net] >>605 > クロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い 意味不明すぎ クロージャを理解できていない? > 結局collectしちゃうのはイマイチだね わかりやすくcollectしてるだけだろう collectを外せばイテレータを返すイテレータとなるのは自明
617 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:31:58.03 ID:DslNhsx1.net] またID変えて忙しいやつだなwww 1つ目の点は細かいが、クロージャを外に出したいと思ったときに不自由なんだよw 2つ目の点は遅延評価をわざわざ使うなら、collectしちゃうとロスが発生するのは分かるだろw 例えばコンソールに出力する場合、そのままiteratorをぶん回したらメモリ要らないのに、最初にcollect付けちゃってるから問題なんだよw 後から付ける事はできても、取り外すことは出来ないからw
618 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:34:23.73 ID:+R/acvy/.net] エアプC++erの言い訳無限に出てくるよw
619 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:37:48.37 ID:LL+Ti59i.net] もういいから正解書いてくれ。
620 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:38:41.55 ID:DslNhsx1.net] ありゃりゃココで複垢まで使っちゃうと他で使えなくなっちゃうよ?w いいの?w
621 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:39:15.88 ID:+R/acvy/.net] 書けないのに書けるフリして可哀想やわ
622 名前:デフォルトの名無しさん [2022/03/19(土) 18:41:43.33 ID:LL+Ti59i.net] 複垢とか何を言ってるのかよくわからんが、正解がどうなるのか気になるので正解かいてくれ。 おれはC++もRustもそんなに知らん。
623 名前:デフォルトの名無しさん [2022/03/19(土) 18:43:31.88 ID:6MHm2WKJ.net] >>545 手間を惜しまないならチュリ完ならなんでも出来るからなw
624 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:44:04.03 ID:DslNhsx1.net] そんなに知らないならココ見るなよwwww 答えクレクレ君が来る場所じゃないw
625 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:44:08.25 ID:jyTBsiM0.net] >>605 >どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い クロージャーは互いに独立しているので 引数を次のクロージャーで使うのは不可能です 根本的な理解が出来ていないのでは?
626 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:45:06.81 ID:DslNhsx1.net] チュリ完はプログラミング出来るというだけで、何でもは出来んよw 知ったかくんw
627 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:46:38.78 ID:DslNhsx1.net] 入れ子のクロージャでって意味の次のだよw ただの順番w
628 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:47:35.76 ID:+R/acvy/.net] だっさwwww 言い訳ばっかやんwww
629 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:49:45.68 ID:DslNhsx1.net] 分かる人は最初ので全部分かってるから、何もしないw バカが煽ったり質問したりするから永遠に反応してやってるだけw
630 名前:デフォルトの名無しさん [2022/03/19(土) 18:49:59.87 ID:LL+Ti59i.net] いやくるなと言われてもくるけどね。
631 名前:デフォルトの名無しさん [2022/03/19(土) 18:50:09.75 ID:m5PNQvz6.net] 相変わらすc++コードは全然でてこないな。
632 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:50:51.71 ID:+R/acvy/.net] C++書いたほうが早いのに言い訳しか出てこないの怖いわw
633 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:54:53.91 ID:DslNhsx1.net] Rust推しの駆け出し君がC++を語るとか片腹痛いw
634 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:02:54.69 ID:cmtG3lS6.net] >>619 何を言ってるのかわからん 皆にイチャモンつけまくっているだけにみえる 君のsubsetsイテレータ実装を出したまえ
635 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:04:05.03 ID:DslNhsx1.net] 君等のような駆け出し君がやれマウントだドヤ顔だ上から目線だのと言いつつ、自分の仕事に真摯に取り組まず、自身の評価ばかり気にして待遇がどうの周りがどうのと言い始めて辞めた挙げ句、技術も経験もないままニートになってるから社会問題になってるんだよw まずは足元を固めてじっくり1つのことをやった方がいいと思うぞおっさん的にはw
636 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:06:49.48 ID:+R/acvy/.net] お前がなw
637 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:09:27.82 ID:DslNhsx1.net] あれれ?当たっちゃった?w 頑張れよw
638 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:10:49.95 ID:GZmTU31E.net] >>625 痛いのは左の腹ですか?それとも右脇腹ですか?
639 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:14:41.36 ID:DslNhsx1.net] あえて訂正してこないところが出来るね君w 背中側の腹だよw
640 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:33:55.07 ID:YQxYhoLA.net] >>605 もちろんcollect()を外せばそのままイテレータを返すイテレータを返す関数になる fn subsets<T>(input: &[T]) -> impl Iterator<Item=impl Iterator<Item=&T>> { let len = input.len(); (0..(1 << len)) .map(move |bits| (0..len) .filter(move |index| bits & (1 << index) != 0) .map(|index| &input[index])) }
641 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:50:41.66 ID:YQxYhoLA.net] あとはID:DslNhsx1氏がC++バージョンを書けるかどうか
642 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:52:06.07 ID:+R/acvy/.net] やめたれw
643 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:57:39.82 ID:DslNhsx1.net] あれあれ?全文がなくなって動かなくなってるねwwww 変更はそこだけでいいのかな?w C++はお前が書けないのがおかしいんだよw
644 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:09:59.31 ID:YQxYhoLA.net] >>635 言いがかりをつけることしか出来ないダメなやつだな 自分でコードを書けないってことなんだろ どうぞ >>632 用の簡易動作確認コード let input = ["a", "b", "c"]; for mut iter in subsets(&input) { println!("({})", iter.join(",")); }
645 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:41:03.66 ID:DslNhsx1.net] # こんな感じねw cargo install cargo-edit cargo-geiger cargo new subsets cd subsets cargo add itertools cat >src/main.rs <<EOF #![forbid(unsafe_code)] use itertools::Itertools; fn subsets<T>(input: &[T]) -> impl Iterator<Item = impl Iterator<Item = &T>> { let len = input.len(); (0..(1 << len)).map(move |bits| { (0..len) .filter(move |index| bits & (1 << index) != 0) .map(|index| &input[index]) }) } fn main() { let input = ["a", "b", "c"]; for s in subsets(&input) { println!("[{}]", s.format(",")); } } EOF cargo run cargo geiger # Run cargo-geiger!
646 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:42:40.39 ID:DslNhsx1.net] まあ外部に括りにくいのが気になるのは趣味だから修正はやめといたw joinはformatに変えただけw そのまま動くというのはこういうコードw
647 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:18:01.62 ID:OlJIHMMJ.net] 相変わらずコピペ&改変だけしかできないガイガー君だ ゼロからコードを書くのは苦手だからC++版の方は手付かずのままなわけだ
648 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:27:48.52 ID:jYZm0dN8.net] 金もらわないとコード書かないんじゃなかったのか 機嫌が良かったのかな?
649 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:39:07.36 ID:DslNhsx1.net] 俺は書けるけど、お前らが書けないのに俺が書いたら書かされた感があって嫌なだけw
650 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:44:20.43 ID:LL+Ti59i.net] 残念だな。エレガントなC++のコードみたかったわ。
651 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:47:05.64 ID:DslNhsx1.net] じゃあエレガントでないC++のコードを見せろよw
652 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:50:10.65 ID:LL+Ti59i.net] いやおれは書かないけどね。なにをいうてんの。
653 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:57:27.50 ID:OlJIHMMJ.net] ガイガー君はコピペ改変なら辛うじてできるからC++派の誰かがコードを書くまで無理だろう
654 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:02:11.32 ID:DslNhsx1.net] なんでC++派とかRust派とかいるんだよwwww 両方書けないのになんでこのスレにいるんだよゴミクズどもwwww
655 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:18:51.04 ID:pGbdb8un.net] >>646 スレタイと >>1 を見なさいよ ここは各派閥が争うスレ
656 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:19:15.66 ID:/tgdZc/e.net] 正確には Rustだと色々シンプルに書けるためRust派 と C++でも書ける派 ただし後者はコードが出てこないので実証されていない
657 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:25:23.19 ID:DslNhsx1.net] いやいや RustだとC++より色々シンプルに書ける派と RustもC++も同じ派がいるだけだろw C++だとこんなになっちゃいますってコードが前者から出てないんだがw C++書けないのにRustだけシンプルに書けると思い込んでるバカはお引取り願おうかねwwwww
658 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:32:19.39 ID:DslNhsx1.net] あと個人的に無駄が結構気になるので、さっきのコードRust部分だけ以下に置き換えてくれ #![forbid(unsafe_code)] use itertools::Itertools; fn subsets(len: usize) -> impl Iterator<Item=impl Iterator<Item=usize>> { (0..(1 << len)).map(move |bits| { (0..len).filter(move |index| bits & (1 << index) != 0) }) } fn main() { let input = ["a", "b", "c"]; for s in subsets(input.len()) { println!("[{}]", s.map(|index|&input[index]).format(",")); } }
659 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:36:43.09 ID:unVMuDSw.net] 絶対コード書けないだろ 面白すぎw
660 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:42:30.15 ID:miakijMp.net] >>650 ポインタとusizeは同じ大きさだから そのコードでは何か無駄を削除できているわけではない むしろ使う側で毎回mapしなければならず使い勝手が悪くなっている さらに大元の話は>>460 から始まっているのだから大きく仕様を変えるべきではない 以上3点により却下だ
661 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 23:04:04.71 ID:DslNhsx1.net] 別にu32やu16でもいいよw むしろセットである必要がないのが素晴らしく合理的だし元とかiteratorにした時点で細かく言えば変わっているw ただ最適化時に範囲チェックがどこまで見てくれるのかが気になるかな… ノーチェックでいいと判断してくれたら御の字w
662 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 23:27:21.61 ID:YSd+hKe3.net] >>653 添え字を返すならusize必須 あと使う側で変換すればいいと言う主張ならば最初の>>522 『0..(1 << len)』でも良いことになる そのままの方がビット演算処理もできてより利便性が高い
663 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 23:49:24.15 ID:DslNhsx1.net] お前は何を言ってるんだw inputのサイズで、この方式だと30個が上限w usizeはオーバースペックなのw
664 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 23:58:01.67 ID:Xi4ntxoy.net] >>653 Iteratorではなく他の言語のようにコストを払ってVec(のVec)で返したいならば 以下のように2段階そ
665 名前:れぞれcollect()するだけなのでコードが本質的に変わるわけではない fn subsets<T>(input: &[T]) -> Vec<Vec<&T>> { let len = input.len(); (0..(1 << len)) .map(move |bits| (0..len) .filter(|index| bits & (1 << index) != 0) .map(|index| &input[index]) .collect()) .collect() } そしてあなたもcollect()して返すのはイマイチだと>>605 で明言しているのだから 今回の結論はどちらもcollect()せずにイテレータのイテレータとなる>>632 のコードが正解 [] [ここ壊れてます]
666 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 00:10:53.62 ID:1+CNf8az.net] 無駄多くね?必要なくね?メモリとCPUを無駄遣いするクソコードでしかなくね?w >>605 で言ったのは上のコードで最初のcollectの話w 2個目は最初からないんだよw >>650 なら生成した瞬間に出力されるお得仕様だから無駄がないw collectするくらいならそもそもVecをcapacity指定して作ってforループしてそこに埋めてった方が速いw つまり>>632 はゴミで>>650 が正解w
667 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:32:33.30 ID:+zPQ2FRY.net] >>657 ダメです C++やRustを含めて各言語のcombination, permutation, subsetなどの実装はいずれも 与えられた入力があってその要素を使って返します 今回もその仕様で確定です あとはイテレータを使わずに普通に>>656 でもよいですし イテレータを使える言語ならば>>632 のイテレータのイテレータを返す仕様がベターでしょう
668 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:40:13.83 ID:1+CNf8az.net] >>658 ダメじゃねーよwwww むしろロジックが脆弱なのに余計にいろいろ浪費するコードでベターとか言ってんじゃねーよwwww こんな短いコードでこんなにダメなやつは初めて見たぞw
669 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:51:34.86 ID:+zPQ2FRY.net] >>659 あなたはダメです 既存のものの仕様に合わせるならば>>658 に書いた通りですし 浪費をせずにインデックスだけ渡せばよいとの主張ならば皆が書いているように 0..(1 << len) がその答えです ビット表現の方がサイズも小さく包含関係などもビット演算のみで得られるなど利点が多いです あなたの>>650 はそのどちらでもない中途半端です
670 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:58:09.59 ID:1+CNf8az.net] >>660 頭悪いの?遅延評価されてるので、必要にならない限り計算されないんだけどw その値も必要時に計算され、その結果を引数に与えられたiteratorが生成されて返ってくるだけだろw そのときにiteratorがセットになってないindexだけ返ってきてそれがsubsetsになるの?wwww 足りない頭に脳味噌もう少し充填した方がいいよw
671 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 02:52:06.33 ID:fen0VFs0.net] ガイガー君の主張だと 入力として集合をスライスとしてもらって 出力としてその部分集合をイテレータとして返す>>522 は無駄で 出力としてその部分集合もイテレータで返し二段イテレータとなる>>632 も無駄で そもそも入力としての集合を関数に渡す必要がなく長さだけ渡してインデックスだけ返せばいいとの主張で>>650 なんだろ それならばもっと無駄を排除して次で十分だ fn subsets(len: usize) -> impl Iterator<Item=usize> { 0..(1 << len) } これで各部分集合をビット表現で得られる サイズも最小となりビット演算も可能で使い回しもよい fn main() { let input = ["a", "b", "c"]; let len = input.len(); for bits in subsets(len) { println!("{:b} ({})", bits, (0..len).filter(|i| bits & (1 << i) != 0).map(|i| &input[i]).format(",")); } } このように文字列として必要になった場合に初めて変換すればよい ついでにビット表現文字列も同時に表示できる ガイガー君の無駄を無くす主張を認めるならばこのほうがさらに優れていることになる したがってこの件もガイガー君の敗北だ
672 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 02:58:15.92 ID:1+CNf8az.net] バカだなw コードにしなくてもそんなのは分かってんだよwwww それじゃ意味が不明である上にI/Fとしても稚拙極まりないと言ってるんだよw 返ってくる数字が何なのか意味不明だろうにw 今回は元作者がアホなために30個そこそこしか作成できないわけで、まあそれでもなんとかなるわけだが、いずれロジックを修正して無限に生成できるようにしたときにまだそんなビット列に拘るのかい? 敗北はお前wwww
673 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 03:15:01.33 ID:fen0VFs0.net] ところがガイガー君はsubsetsがビット表現から生成できることに気付かなかった そのためガイガー君が示した最初のコードは>>463 でありcombinationsイテレータを使ってsubsetsを生成するコードだった ちなみにググるとsubsetsはcombinationsを使って実装できるとのページが多数ヒットする ガイガー君がそこからカンニングしたのかどうかは知らないが少なくともビット表現から生成できることに気付かずcombinations頼みとなったのは事実だ>>463
674 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 03:23:47.90 ID:1+CNf8az.net] >>664 お猿さんの妄想が事実と食い違ってたところで俺にはどうでもいいんだけど、事実はC、P、階乗みたいな計算や集合みたいなのは俺小学校時代から知ってるw だから冪集合と聞くだけで、君のようにカンニングすることなく答えに辿りついてしまうんだよw ビット表現から生成する方法を必死に提唱してたのは俺一人しか知らないけど、この手の処理は原則変更可能な元データのセットを用意すればスワップするだけで生成出来るものだよw 可哀想にねw
675 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 03:33:20.84 ID:fen0VFs0.net] ガイガー君はsubsets関数をプログラミングする時になぜか非常に遠回りとなるitertools.combinationsを使った ソース>>463 この事実からガイガー君はアルゴリズムや数学などが不得意であると断言できる ここまでコピペ改変しか披露できていないことからプログラミングが不得意なのだろう
676 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 03:58:13.20 ID:1+CNf8az.net] >>666 こいつはアホなのか?普通に>>460 が求める簡単な方法なんだがwwww 妄想を自分で断言しちゃうとかもうねw 久しぶりにこれを使ってあげようwwww お前がそう思うんならそうなんだろう / ̄ ̄ ̄ ̄\ / / | ヽ ヽ\ / / /|||ハ||ヽ> `/ /ィ-トノレ| N十トハ||ヽ /V レ/テヾ |/ /テヾ|||| レ∧ |ヒOソ| ヒOソiNV | ヽ ̄ `  ̄ ハ( ヽ|ヽ \  ̄ 人ソお ヽレ\_≧ー-イレソ 前 / ̄ ̄ ̄\\ ん / / ̄ ̄\_ヽ) 中 |( )ヽヽ で ヒ∧ \/ |゚| は || ヽ | | な
677 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 05:21:36.47 ID:1V6eoYkY.net] >>460 を見てみたけど 最終的ににべき集合のべき集合が欲しいみたいよ MathematicaだとSubsets[Subsets[{a, b, c}]]で済むと言ってるね それに対して>>463 はitertools.combinationsを使ってsubsetsを実装 今回のケースでわざわざcombinationsを用いた実装が必要なのかどうかは不明 そして空集合が出力されないバグ実装 rangeを1開始でなくて0開始にしないと駄目ですよ それはさておき元と同じインタフェースならばRust版は>>656 の実装でOK subsets(subsets(&["a", "b", "c"])) でべき集合のべき集合がちゃんと得られますね
678 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 11:54:10.51 ID:1+CNf8az.net] まだ言ってんのかよw 空集合はお茶目なバグだ許せw combinationを使わない実装の方が珍しいわw 同じI/Fにする必要はないし、それが必要なら簡単に実装出来るw fn subsets_collect<T>(s: &Vec<T>) -> Vec<Vec<&T>> { subsets(s.len()).map(|iter| iter.map(|i| &s[i]).collect::<Vec<&T>>()).collect::<Vec<Vec<&T>>>() } fn main() { let input = vec!["a", "b", "c"]; println!("{:?}", subsets_collect(&subsets_collect(&input))); } 始めから同じ実装にしてないからなw そして>>656 の実装でsubsets(subsets(&["a", "b", "c"]))はエラーwwww
679 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 17:12:41.85 ID:URBujIbQ.net] ストレス発散オナニーRusterスレッド
680 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 17:36:53.71 ID:1+CNf8az.net] いや、Rusterは尽く俺にやられてるんだがw しかもC++できないただの駆け出しw
681 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 17:51:03.84 ID:HHTijYmK.net] >>669 は嘘つき やってみたら>>656 の実装で動いた fn main() { println!("{:?}", subsets(&subsets(&["a"]))); println!("{:?}", subsets(&subsets(&["a", "b"]))); println!("{:?}", subsets(&subsets(&["a", "b", "c"]))); } ちゃんとべき集合のべき集合が出力されている 1つ目 [[], [[]], [["a"]], [[], ["a"]]] 2つ目 [[], [[]], [["a"]], [[], ["a"]], [["b"]], [[], ["b"]], [["a"], ["b"]], [[], ["a"], ["b"]], [["a", "b"]], [[], ["a", "b"]], [["a"], ["a", "b"]], [[], ["a"], ["a", "b"]], [["b"], ["a", "b"]], [[], ["b"], ["a", "b"]], [["a"], ["b"], ["a", "b"]], [[], ["a"], ["b"], ["a", "b"]]] 3つ目は長いので略
682 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 18:08:01.19 ID:1+CNf8az.net] >>672 嘘つきはお前w &が余計についてるやんけw やはり駆け出しRust使いは嘘付きしかいないw
683 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 18:22:11.71 ID:6IwS75Da.net] >>673 ガイガー君の書き込み>>669 でも&が同じように付いている つまりガイガー君は自分の誤りを認めたことになる
684 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 18:28:57.25 ID:1+CNf8az.net] >>674 俺はちゃんとその>>669 で > そして>>656 の実装でsubsets(subsets(&["a", "b", "c"]))はエラーwwww と言ってるので誤っていないw 誤っているのは、>>669 で > それはさておき元と同じインタフェースならばRust版は>>656 の実装でOK > subsets(subsets(&["a", "b", "c"])) でべき集合のべき集合がちゃんと得られますね という部分w なんでこうまで説明されないと間違いを認められないんだろうなwwww 駆け出しRuster推しのお馬鹿さんたちがRustも使えないことが判明w
685 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 18:37:30.55 ID:GV4qdrT7.net] 実際に>>672 で動作してるのだからRustの勝利 C++はコードの片鱗すら出てこない
686 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 18:44:09.03 ID:1+CNf8az.net] >>572 でFAなんだもんw 想像もできないくらいC++書けない人が文句言ってても何も気にならんw 両方書けるようになってから、ほらこんなになるじゃんって持ってきたら添削してやるよw
687 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:01:47.10 ID:eXUaH9c5.net] C++20を使いこなせる人がいないことが敗北原因 Rustよりも利用者少ない だからこのスレにもC++で書ける人が誰もいない
688 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:03:19.57 ID:1+CNf8az.net] 俺は書けるけどねwwwww というかお前が書けないのに書き込んでるからこんな変な話になってるだけで、本来は書ける前提でああでもないこうでもないやるスレだろwwww
689 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:05:31.63 ID:DiBIkIVz.net] それ、昔のコンパイラを今でも使ってる人達にも言えるの?
690 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:11:26.79 ID:1+CNf8az.net] は?俺だって必要なら昔のコンパイラ使うぞw 特定CPU用のなんて安定したバージョンでないとバグ踏むからなw
691 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:59:25.97 ID:kJ/tleYc.net] C++使えなくてRustは使えますとか、 あと10年はなんの価値もないんじゃ...
692 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 22:31:20.58 ID:271cfGdl.net] そんな妄想をしても場所によりけり うちはC++以外の諸言語からRustへ移行したので Rust使えずC++使える人は価値ゼロ といったように
693 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:04:08.64 ID:1+CNf8az.net] それは最高にやばそうだなw
694 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:25:08.78 ID:Ftc+D3LS.net] 業界標準ツールのRust化も激しいよな 例えばJavaScriptでおなじみのトランスパイラBabel 遅いので当然ながらRust版のSWCというのが作成されて React/Next.jp環境でもBabelからそのRust版へと移行された
695 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:39:52.49 ID:1+CNf8az.net] 全部であるかのごとくに書いてるけどごくごく一部だし、しかも期待したほど速度が上がらずに困ってたよねw JavaScriptに比べてだぞ?w
696 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:57:33.12 ID:jG5ySy9q.net] >>686 swcはbabelより20〜50倍速い
697 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 00:09:57.25 ID:BAdp3agq.net] 公称だろ?w 実際試した人がそうでもなかった(忘れたけど1.x倍くらい)って言ってたよw
698 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 00:10:28.20 ID:BAdp3agq.net] しかも場合によっては遅くなるって言ってたw
699 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 00:53:26.08 ID:1rsJ1Bxd.net] >>688 >>689 虚言癖
700 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 01:13:09.95 ID:BAdp3agq.net] まあ自分で試したわけじゃないから、そう言われても何とも言えんけどなw
701 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 03:44:24.39 ID:qXBNR9Nr.net] >>669 > fn subsets_collect<T>(s: &Vec<T>) ガイガー君は相変わらず素人のままだな そこは&Vec<T>ではなく&[T]と書くのだよ Vec自体の固有機能に関する動作の場合を除き 狭くVecのみを対象にするのはバカげている スライスを対象にするのが鉄則 &Vec<T> ←Vecしか受け付けられない &[T] ←Vecも配列もスライスも受け付ける
702 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 04:14:12.72 ID:BAdp3agq.net] >>692 そんなこと言われなくても知っとるわwwww それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw 今回のケースではメリットとかないよw 同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw
703 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 04:24:26.11 ID:Czlt7YRo.net] >>693 arrayとsliceは別物ですよ arrayで受けたらarrayで返したいなら意味がわかりますし実際にmapはその仕様ですけど
704 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 04:53:35.01 ID:BAdp3agq.net] >>694 [i32] ... Array &[i32] ... スライス T ... T &T ... Tの参照 という理解で、 ・特定の型の参照はスライスとして扱える ・Arrayの参照はスライスと区別できない と思ってて →スライスで渡されたらArrayで返す という発想なんだが、違うの?
705 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 05:13:22.29 ID:Czlt7YRo.net] >>695 違います [T] … これがスライス (動的サイズ) [T; N] … これが配列 (固定サイズ) 明確に異なるprimitive typeです
706 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 05:32:43.26 ID:BAdp3agq.net] >>696 なん。。だと!?!?そんな基本的なところを気付いていなかったのかw では ・Arrayの参照(&[T;N])はスライス([T])と区別できる let a = &[1,2,3]; のaは俺はずっとスライスと思ってたけど、そうではなく、 let a = &[1,2,3] as &[i32]; とかでないとスライス(の参照)にはならんってことかwwww これはすまんかったw ちょっともう一度最初から整理し直さないといかんかもw ありがとw
707 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:00:44.84 ID:Czlt7YRo.net] >>697 そこはコアースされます 配列とスライスの違いをわかりやすく使用例で示しましょう まず「配列を受け取り」その各値を2倍にした「配列を返す」関数twice()です fn twice<const N: usize>(input: &[isize; N]) -> [isize; N] { let mut output: [isize; N] = [0; N]; for i in 0..N { output[i] = input[i] * 2; } output } わかりやすいようforで回して代入しています fn main() { let input = [1, 2, 3]; println!("{:?}", twice(&input)); } もちろんちゃんと動いて[2, 4, 6]となりますね この関数の引数をスライスを受け取るように型を&[isize]へ変えても大丈夫なのですが ただし関数を使う時にちょっと状況が変わってきます そこには様々な違いと問題が生じますので実体験しましょう これがスライスと配列の違いを理解するためのあなたへの宿題です
708 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:10:12.41 ID:BAdp3agq.net] >>698 それは蛇足w Rust信者はそういうことするからダメなんだよw 別に必ず同じ固定サイズになるとは限らないから、そんな方法は考えてもいないw
709 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:18:10.57 ID:Czlt7YRo.net] >>699 ほら、理解できていませんね その発言からあなたはまだ机上の妄想の世界にいます わかった気になって宿題をしていないダメな子パターン
710 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:22:52.71 ID:BAdp3agq.net] >>700 一応配列で渡されたら配列で返したい心理の説明をしておくと、例えばベクタなど配列と同じような構造で動的に拡張可能なコレクションをずっと持ち回っていると、そいつが過去に持っていたデータなどが後ろにくっついてる可能性があったり、余計なメモリを確保していたり、gcなどが効きにくくなったりするので、内部処理で使ったオブジェクトではない、綺麗な生成データを固定で作って返す風習があるんだよw
711 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:32:23.88 ID:Czlt7YRo.net] >>701 あなたは>>693 で sliceで受けてarrayで返したいと言いました そこで先ほどの例twice関数をその仕様で作る宿題をあなたに課しました 宿題をしてそこでの課題を得ることができましたか?
712 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:33:56.07 ID:BAdp3agq.net] >>702 できるし頼んでないのでwwwww
713 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:40:05.89 ID:Czlt7YRo.net] >>703 いいえ あなたは>>695 で配列とスライスを正しく理解できていませんでした そして宿題もこなせず そこで何が問題なのかもいまだ理解できていません
714 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:42:57.16 ID:BAdp3agq.net] >>704 1+1が出来ることは証明する必要もないんだよw 君のように誰かに認めてもらいたいだけの人は別にしてw 俺は面白いから構ってあげるけどねw
715 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:50:01.91 ID:Czlt7YRo.net] >>705 やはり分かっていないようですね あなたが>>693 でsliceで受けてarrayで返したいと言った仕様で >>698 の内容を2倍にして返すだけの関数を作れましたか? YesかNoかで答えてください
716 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:53:37.67 ID:BAdp3agq.net] >>706 答える義務がないんだってwwwwww できるよw アホじゃねーのwwwwww
717 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:57:16.08 ID:Czlt7YRo.net] >>707 > できるよw はい これであなたは嘘つきダメ人間であることが完全に確定しました
718 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:59:16.07 ID:BAdp3agq.net] >>708 はいはい、良かったねwwwww 満足か?大方コンパイル時に必要だとかそんな話なんだろ?w 別にどうだっていいんだよそんなことwwwwww
719 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:00:45.10 ID:BAdp3agq.net] こういう輩は確かに煽ってみるに限るなw 面白いしw
720 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:04:34.69 ID:Czlt7YRo.net] >>709 ほら、その発言で あなたは配列とスライスをまだ理解できていないことがバレましたね
721 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:05:47.35 ID:BAdp3agq.net] 他の可能性があるんだ〜へぇ〜それは思いつかなかったなw どうでもいいけどwwwwwwww
722 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:14:14.39 ID:Czlt7YRo.net] >>712 あなたの知能では配列とスライスを理解することができなかったと決着しました 以上です
723 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:16:48.53 ID:BAdp3agq.net] はいはい、嘘乙wwwww
724 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:18:49.08 ID:BAdp3agq.net] ってもう終わりなのかよwwwww 夜までまだ長いぞw
725 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:36:36.37 ID:cgJvFkX3.net] フレームワークのドキュメントは読むのに言語につきてのドキュメントは読まないで雰囲気でやっていたのか
726 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:58:11.85 ID:BAdp3agq.net] 早速転生してきたのかw いい心がけだw いや読んだけど一度切りだよw 俺は必要がなければ読み返さないし、明確にsliceの定義をしているものがなかったので、誤った解釈のままだっただけw Rustのドキュメントって例ばっかりで、あんまり定義が明確じゃないんだよなw arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw immutableがデフォだとわざわざarrayを使う意味があんまりないんだよねw
727 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 23:29:47.68 ID:5Szv6JZQ.net] >>707 そこは「できない」と答えないと失格だろ 動的サイズのスライスをもらって固定サイズの配列を返すことは不可能
728 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 02:53:53.03 ID:ZDHdo9X7.net] >>718 残念だったねw 俺が「できる」とあえて答えてるのは>>702 の話で、>>706 には「答える義務がない」が答えなんだよw 流石に>>711 以降でついた嘘をついたのが気になって訂正しにきちゃったんだねw 嘘つくとか人として失格w
729 名前:デフォルトの名無しさん [2022/03/22(火) 09:25:40.89 ID:VA79WEBN.net] なんだかRustってマウント取り合いのキモイ連中ばかりなんだな。
730 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 09:53:23.73 ID:BbUMgG6B.net] >>720 これ
731 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 11:11:44.38 ID:cPdOMca8.net] そう。学習時間が増えるのは仕方ないしそれはそれでいいんだが、 その副作用としてマウンターがイナゴレベルで発生するのがな。
732 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 11:33:10.12 ID:8EjbgNwb.net] そろそろRust版毛の壁が誕生するのかな
733 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:18:47.19 ID:ZDHdo9X7.net] Rustごときにそんなものは生まれないし、マウントとか気にしてるからそういう空気になるだけw 気をつけるべきは、 ・言葉の定義に関する揚げ足取りだけとか ・関係ないことを誰も聞いてもないのに話し始めるとか ・スレ違いの話題とか そういうのくらいw
734 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:35:20.32 ID:pdrrbcyh.net] 以下のサイトによるとrust製ソフトで一番有名なfirefoxでさえC言語のコードの方がまだ多いらしい 正直、まだまだC/C++に代わるって議論する段階じゃなさそう https://4e6.github.io/firefox-lang-stats/
735 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 14:09:58.25 ID:l3SAD7eY.net] >>725 そりゃんな簡単に移植できないだろ そもそもC++ならまだしもC言語で書いてるところはRustに移植しづらいだろうし
736 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 14:36:30.97 ID:CigmH2/4.net] Firefoxは超巨大プロダクトの1つだからね 数千万行ものコードで書かれてるみたい さすがに全部書き換えられなくても仕方ないでしょ 毎日順調に1万行を書き換えても10年とかかかるよ
737 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 14:39:46.62 ID:oqIjUDQq.net] 新規追加分はどういう割合かしらん。
738 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 15:27:56.84 ID:q+lZbjeY.net] Netscape6の頃から数えると20年以上の歴史があるプロダクトだから数年で10%置き換えられたのはなかなか良いペースなのでは
739 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 20:15:02.78 ID:ZDHdo9X7.net] https://wiki.mozilla.org/Oxidation "... Rust Weaknesses One major issue with Rust relates to personnel. There is a wide variety of experience levels within Mozilla, for both coding and reviewing. Rust's learning curve is steep at the start, which can be intimidating. (The new borrow checker released in Rust 1.31 helped greatly with this.) There are also technical challenges. Compilation is slow. Crossing the C++/Rust boundary can be difficult. See "Blockers and obstacles" below for more details about work being done to remedy these weaknesses. ..."
740 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 13:49:05.58 ID:A9GFlV37.net] >>502 馬鹿が使うPython まんま
741 名前:460 mailto:sage [2022/03/24(木) 14:52:36.70 ID:A9GFlV37.net] なんかちょっと見ないうちにえらく盛り上がってるのな んで、SubSets[Subsets*]]の話になってるが、本質はそこじゃなく SubSets[Subsets[{a,b,c}]]におけ要素が合併(U)、結合演算に閉じている集合族選び出して位相空間を作り出すってのが到達目標なんだわ。 羃集合の羃集合なんて、なんの工夫もなく実装できるもんだと思ってたらPythonはそれすら出来なかったということで、 集合演算においてはMathematicaレベルにすらない。 位相空間を選び出すには、さらにそこから演算規則にそぐわない集合族は排除しなきゃいけない。 3要素から
742 名前:り出した位相空間は29個に及ぶんだけど、 Python は既に羃集合の羃集合すら簡単に書けないことが確定した時点で数学研究には使えないってことが明らかなんよね。 それなりのプログラム組んだらいけるってことならC++でもC#でもいけるんですわ。www ちなみに数学科の初年度でドロップアウトするのがまさにここらしいので、 信学会正員の俺が試しに流行のPython調べてみたって話ですわ、 間違いないのは ・数学の研究に寄与するのはPythonじゃなく素直にMathematica ・Excelファイル外部からいじくりたければOpenpyxelじゃなくC#+EPPLUS ってこってすわ ちなみに、数値演算ってことならハナからPythonなんて検討するような対象じゃなく単なるゴミ糞レベルwww 素直にA100でも用意してCUDAでも使えばいい。 なんでゴミ糞Pythonとか流行ってんの?さっぱり理解できんわ。 こんなんWebScrapingとかWeb侵入以外とういうメリットあるの? あほが使う言語 == Python でFA? [] [ここ壊れてます]
743 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:06:02.22 ID:A9GFlV37.net] >>705 1=1==3と定義することに近いのがδ関数って知ってる? そう、数学科以外、測度論ってやらないんですよ 連続系の上に離散系を構築したりする。ラプラス変換の上にZ変換作ったりね そこで使われるのが ∫δ(x)dx =1 本来1点だけが非0の関数なんて積分しても0にしかならない δ関数ってのは 半直線の面積 == 1 にしますってわけわからん"約束"なんですよ 本来0においてのみ∞、それ以外0って関数は積分しても0にしかならない それをδ関数に限って1と"約束"するのがポ
744 名前:イントなんですね。物理においても工学においても こういうフェイクでも破綻しないってこじつけが超関数論 [] [ここ壊れてます]
745 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:33:33.46 ID:A9GFlV37.net] なんかPythonごとき使えるだけのPythonerがでしゃばってるけど C/C++/C#使えるプログラマが能力的にPython使えないなんてことないからwww ちょい使ってみてやっぱこりゃあかんってがっかりすることが多い Cxx使ってて補助言語としてPerl使う、 プログラムランチャーやらお気軽シェルスクリプトとしてはbashもPowerShellを使う、 数値計算電卓にはMatlabもOctaveもScilabも使う、 数式計算ならMathematica もMapleも Mupadも使える、 こういうユーザにとっては 世間でPython流行ってるけどこれ使う意味あんの?って話ね 言語処理系として流行ってる以外にどこがアドバンテージなの? ってこどですわ
746 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:46:03.00 ID:iUQBARfO.net] >>734 深層学習には何使うの?
747 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:54:22.45 ID:A9GFlV37.net] 空集合の扱いだけど ?と{?}は違うんでね オチャメなバクとごまかしてたんじゃ 正解に辿り着かないよwww - 集合族がせいぜいべき集合だと勘違いしてつまづく数学科連中が多いんだそ-な(数学セミナーで読んだ) 3要素からなる集合は最大8個 そこから考えられる集合の属は最大2^8=256個 そのなかで有限演算の結び、非加算合併演算に関して閉じている集合属は29個
748 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:56:43.89 ID:A9GFlV37.net] >>735 さぁ? こちとら所詮データベースに過ぎないAIなんて興味の対象外なんでね カルマンフィルタ、粒子フィルタ、ベイズ推定、Viterbiアルゴリズムってならコメントできるけどねwwww
749 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:57:59.36 ID:A9GFlV37.net] >>736 空集合が"?'になってるんで ?部分は空集合に置き換えて読んでね
750 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 15:58:08.77 ID:y95b8UUh.net] こりゃ貧乏人かな?
751 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 19:43:58.62 ID:1Vr2GJ3G.net] 空集合をうっかり忘れるのはお茶目なバグという以外に表現はないw ちなみに普通はファイと読むんだよw 集合論自体はそんな難しいものじゃないw Mathematicaは簡単な数式が解ける、グラフが簡単に描けるなどの理由で使う人は昔からいたけど、今はもっと複雑なことしたい人が多いから、数値計算にはRやPythonを使う人が多いと思うw 数理最適化分野も一部の商用ソフトを除けばPythonが多いと思うw pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw 機械学習(NN)とDBは全く違うけど、もし自然言語処理に詳しいならword2vecの解説記事でも書いてたら世のためにでもなるんじゃない?w 俺も多少は分かるけどw
752 名前:デフォルトの名無しさん [2022/03/24(木) 20:35:43.32 ID:pklAHbiT.net] > pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw 速いのは大半がC++で動いているからで、扱いやすいと言っても、ファイルからデータ 読んで渡すとかの部分だってC++でテンプレート使って書いた方が、Pythonより何倍も 速いと思うが?
753 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 21:17:04.78 ID:1Vr2GJ3G.net] あれでしょw やっぱりjupyterの使い勝手がいいんでしょw ちょっと動かして試してグラフ見て記録取ってみたいな試行錯誤したいときはw だからガッツリ時間がかかる部分はpythonのままじゃたまったものじゃないけど、取れたデータを試したり外側のロジック組むときはpythonのが楽という理屈だと思うよw
754 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 21:58:37.46 ID:XlqSDiYA.net] >>732 その位相空間というのを調べたら冪集合の冪集合のうち 全体と空集合を含み 各要素の和も積も所属していることらしいのでRustで作ってみました fn 和集合(集合_x: usize, 集合_y: usize) -> usize { 集合_x | 集合_y } fn 積集合(集合_x: usize, 集合_y: usize) -> usize { 集合_x & 集合_y } fn 空集合(_size: usize) -> usize { 0 } fn 全体集合(size: usize) -> usize { 冪(size) - 1 } fn 冪(size: usize) -> usize { 1 << size } fn 所属(集合: usize, 要素: usize) -> bool { 集合 & (1 << 要素) != 0 } fn 一覧(size: usize) -> impl Iterator<Item=usize> { 0..size } fn 要素一覧(集合: usize, size: usize) -> impl Iterator<Item=usize> { 一覧(size).filter(move |&要素| 所属(集合, 要素)) } fn main() { let input = ['a', 'b', 'c']; let n = input.len(); 一覧(冪(冪(n))) .filter(|&s| 所属(s, 全体集合(n)) && 所属(s, 空集合(n)) && 要素一覧(s, 冪(n)).all(|x| 要素一覧(s, 冪(n)).all(|y| 所属(s, 積集合(x, y)) && 所属(s, 和集合(x, y))))) .for_each(|s| println!("{}", 要素一覧(s, 冪(n)) .format_with(",", |s, f| f(&format_args!("{{{}}}", 要素一覧(s, n) .format_with(",", |index, f| f(&format_args!("{}", input[index])))))))); } これで{},{a,b,c} から {},{a},{b},{a,b},{c},{a,c},{b,c},{a,b,c} まで29個の位相が算出されました 入力を4つ ['a', 'b', 'c', 'd'] にすると355個の位相が算出されました これで合っていますでしょうか?
755 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 22:54:59.49 ID:9cbRkQeA.net] Rustのイテレータチェーンで宣言的っぽくシンプルに書けていいな
756 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:16:44.72 ID:1Vr2GJ3G.net] ついにこんなしょうもない日本語のコードをあげて自画自賛し始めたRust信者w そんな自明でしょうもないゴミコード書いてる暇があったらクソ速い正規表現エンジンでも作ってみたらいいのにw
757 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:20:36.69 ID:rSdCMchJ.net] >>745 Pythonで書いているとこの前レスしていたようだが本当に書けるのか? それとも>>732 が言うように書けないのか?
758 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:31:17.75 ID:Uh4MbO9+.net] ガイガー君はそういうコードを読めないし書けない C++で冪集合(subsets)作るのも結局できなかった
759 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:46:12.18 ID:1Vr2GJ3G.net] 単発IDで自演大変だねw 出来ないのはお前だけw
760 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 12:11:43.15 ID:2aIwxdP0.net] 組み合わせ集合をそのまま保持しようとしてる時点で馬鹿だろ。 何の応用も考えてないの丸出しだな、競技プログラミングとかそっちのアホか。
761 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 12:14:33.84 ID:vqaIaLyp.net] >>749 ではお手並み拝見
762 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 12:40:40.57 ID:enyWdq4S.net] >>749 やめたれw
763 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 12:42:10.27 ID:w9HuCaKe.net] >>749 実コードを出そうぜ 出せなきゃ負けの世界
764 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 13:48:01.88 ID:enyWdq4S.net] >>749 お前の負けやで
765 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 14:03:38.99 ID:svg4cCIa.net] 枯れスレや 暇人どもの 糞の跡
766 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 14:31:21.44 ID:2aIwxdP0.net] なるほど、本気でこういうコードをありがたがる馬鹿って結構多いんだな。 そりゃrust厨がいい気になっちゃうわけだ。
767 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 16:28:42.69 ID:xgDHHux/.net] >>753 ID変え忘れたの?
768 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 17:17:18.88 ID:enyWdq4S.net] >>756 律儀にID変えてて草 お前のことやで
769 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 17:43:08.49 ID:Sr8uMs9s.net] >>755 何を問題にしている? >>743 なら単なる普通のイテレータのコードに見える 問題点を具体的に言えなきゃ何を言いいたいのかわからないよ
770 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 18:17:49.67 ID:+pS3/Cvs.net] >>755 複製オジさんのコードをありがたがってるやつなんておらんよ いつもの汚コードだから即NG
771 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 18:52:17.27 ID:eoZx8ezX.net] あれ複おじなん? それはともかく>>749 のコード見てみたいわ
772 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 18:59:38.47 ID:JpusqDH/.net] >>749 みんなこんだけ見せろって言ってんだよ 見せろよ 逃さねえぞ?
773 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 19:32:15.82 ID:h6MJAUlj.net] >>743 のコードを見てみたが rangeイテレータをfilterしているだけの普通のよくあるコードだな filterの中のbool値が(x, y)の二段のallになっているだけでこれもよくあるパターン >>755 まさかと思うがこういうコードを初めて見た初心者なので理解できなかったということか?
774 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:14:50.48 ID:u98H5tRm.net] どっちもどっちなんだが 煽ってるやつの指摘を理解できないやつらも普通にヤバいからな
775 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:15:45.94 ID:Sf6AbPmi.net] バカだからコード書けないのに煽ってコードくださいって言うんだよw
776 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:25:12.39 ID:1BFpe92B.net] >>763 的外れな指摘しかないぜ >>764 コードは書かなくてもいいとは思うが その場合は何が問題で自分ならどうするのかを言葉で説明するべき 代案を言葉かコードで出せないやつは言いがかりか愉快犯かアンチだから無視していい
777 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 21:43:21.60 ID:Ux3SzCLX.net] >>759 今まで見てきて『汚コード』と連呼する時は特徴がある forやifが使われずにイテレータ連鎖や条件メソッドが使われるRustコードの時に『汚コード』と言っている そのため『汚コード』連呼の人は以下の3つのタイプいずれか (1) 自分のコードの書き方に偏った信念があって他を受け付けない頑固タイプ (2) 自分が理解できないコードがあると批判したくなる知弱タイプ (3) Rustに反感がありRust的な書き方を嫌っているアンチタイプ
778 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:02:00.11 ID:9tHxWkJU.net] 汚ゴーダの承認要求w
779 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:06:20.29 ID:6nlCsPOx.net] >>766 2か3だろう
780 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 22:53:50.64 ID:thqo/0xR.net] まあ1なら信念を説明するなりコードで示すなりするだろうからな
781 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 23:17:24.40 ID:Sf6AbPmi.net] そもそもどうでもいい内容だからなw
782 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 23:26:38.46 ID:5On1tMu9.net] >>749 > 組み合わせ集合をそのまま保持しようとしてる時点で馬鹿だろ。 そんなコードはどこにも見当たらない 誤読しているのか、それとも、コードを読めずに適当に書いているのか
783 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 23:30:13.03 ID:eoZx8ezX.net] こういう展開で一度でも良いから 本人(>>749 )のコード見てみたいわ つっこまれると黙り込んじゃうもんななぜか つっこまれて待ってましたと披露、とかじゃなくてね
784 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 00:40:57.22 ID:9q2PYIcF.net] 書けないやつがいると思うところが怖いw
785 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 00:41:52.74 ID:9q2PYIcF.net] まじでみんなどんどんRustを嫌いになっていくねw
786 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 01:38:57.93 ID:JTqKZDur.net] >>773 ガイガー君はいつもコード書けないじゃん 今回のRustコードについても批判なの?
787 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 02:27:45.11 ID:9q2PYIcF.net] 何度でも言うが書けないのではなく、書かないだけw 煽っても何も出んぞw お前が書けないからって他の人も書けないとか思うなw
788 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 04:58:35.06 ID:YsGlpYqC.net] >>776 今回はコードを読めなかったため批判したりコードを書くところまで辿り着けなかったというオチなんだろ
789 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 06:40:57.68 ID:9q2PYIcF.net] 何言ってんだ?この人w 自分のおつむが足りないからって同じ基準で他人を見ない方がいいよw
790 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 07:02:16.69 ID:lZnQW6V9.net] 珍しく反応していないからコードが読めなかったに一票
791 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 09:36:14.32 ID:9y5xuIje.net] 反応がワンパターンになってきてるから、相手が諦めるまで同じ内容を繰り返すんだろうな 低能にありがちな行動w
792 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 12:25:46.50 ID:ShQHM1dQ.net] お互い相手にしてもらえるやつがいて良かったね 隔離スレ立てたやつに感謝
793 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:51:11.15 ID:/7nLRmyg.net] >>749 組み合わせ集合の意味が不明だが['a', 'b', 'c']に対して冪集合の冪集合ことか? >>743 のコードの関数呼び出し部分を展開すると 「一覧(冪(冪(n)))」は「(0..(1 << (1 << n)))」 つまり冪集合の冪集合を0から255(=2^(2^3)-1)までの数値でbit表現していることになる 集合の表記でこれ以上は簡単にならないし応用も一番広く効くのではないか あとは素直に位相を満たす条件でフィルタしてるだけだな | .filter(|&s| | 所属(s, 全体集合(n)) && //これは必須条件 | 所属(s, 空集合(n)) && //これも必須条件 | 要素一覧(s, 冪(n)).all(|x| | 要素一覧(s, 冪(n)).all(|y| | 所属(s, 積集合(x, y)) && //任意のintersectionも要素となる必須条件 | 所属(s, 和集合(x, y)) //任意のunionも要素も要素となる必須条件 | ))) 全てがビット演算のみで済んでいるようだから どの言語で書いてもこれ以上はシンプルかつ高速にならないと思われる
794 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 00:20:42.47 ID:PoGWmBV8.net] また本人が自画自賛し始めたw この手の処理はbit演算では書かないよw 自分で調べてみればいいw 競プロマニア君が速いコード書けないのに頑張ったって言ってもらいたいらしいw
795 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 00:33:18.39 ID:BBGNEHmu.net] >>783 べき集合ならbit表現が最も自然で効率的なんじゃない? 他に効率的な表現あるの?
796 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:17:15.21 ID:PoGWmBV8.net] それにしか使えないから書かないんだよw
797 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 01:24:54.54 ID:+ow6V/HP.net] >>783 それより速いコードを書けるならば出してみ どうせ口だけデマカセなんだろ
798 名前:デフォルトの名無しさん [2022/03/27(日) 01:29:17.18 ID:snCfFGlK.net] 普段の仕事もコードを一切書かないで口だけ出す仕事なんだろうな。
799 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 03:56:07.43 ID:PoGWmBV8.net] >>786-787 >>783
800 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 06:10:36.04 ID:WvsZWRxm.net] >>783 他の方法でもっと速いのが書けると言うわけか ならば俺が公平にベンチ取ってやろう コードを出してくれ
801 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 07:40:41.39 ID:mRPtF6UE.net] >>788 >>780 ww
802 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 08:50:56.35 ID:PoGWmBV8.net] >>790 >>780
803 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 08:52:43.09 ID:KQB4wW2v.net] そうやって以後は安価で
804 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 08:53:00.96 ID:0J12mqZ3.net] オウム返しのつもりとか恥の上塗りw
805 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 08:58:56.59 ID:XGyUiIw6.net] >>783 これはbit演算でええやろ もっと良い方法があるなら教えてや
806 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:19:26.28 ID:6AFZPnaE.net] >>783 bit演算より速いコードってなにかある?
807 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:31:00.82 ID:rqiHHq3k.net] > この手の処理はbit演算では書かないよw 一切コードを書かないならこれは真だなw
808 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:49:42.15 ID:PoGWmBV8.net] >>792-796 >>783
809 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:54:38.88 ID:8Tlml6j+.net] マジでなんでコード書かないの?
810 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 10:55:27.25 ID:hQNNJiB+.net] >>796 なるほど! 彼は潔いな
811 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 11:44:30.72 ID:PoGWmBV8.net] >>798-799 >>783
812 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:15:36.07 ID:CPBl4WFe.net] >>796 一切コードを「書けない」場合も真だねw 挙動が>>780 で指摘した通りになってて草生えまくり
813 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 12:28:35.30 ID:PoGWmBV8.net] >>801 >>783
814 名前:デフォルトの名無しさん [2022/03/27(日) 16:26:12.94 ID:snCfFGlK.net] c++にもhygienicマクロ導入してくれたらなぁ
815 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 17:22:03.05 ID:
] [ここ壊れてます]
816 名前:WcFtzXHa.net mailto: Rustのmacroはident属性指定により変数名に関してはhygienicだな ライフタイムとジェネリック型に関してはそうでないけれど [] [ここ壊れてます]
817 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:22:52.61 ID:PoGWmBV8.net] マクロそのものが原則いらんw
818 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 07:49:38.26 ID:pN+hSa41.net] >>783 bit演算を使わないもっと速いコードというのを教えてください
819 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 09:01:32.11 ID:ZJaztVr1.net] >>783 Google様の模範解答があるのでどうぞ https://github.com/google/guava/blob/v31.1/guava/src/com/google/common/collect/Sets.java#L1587
820 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:03:15.30 ID:dJWBHkZn.net] IDE使ってwindows.hとかインクルードしてた時 マクロの処理のせいでどんだけ遅くなってメモリ食ってるんだろうと よく不安な気持ちになってた
821 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:19:08.60 ID:aetLX46N.net] >>808 メモリや遅さを気にするならばIDE使わずとも何ら問題なく開発できる IDE使ってるくせになぜそんなことを気にするのか?
822 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 23:04:54.34 ID:51Y1Thh9.net] まだ続けてんのかよw Google様の模範解答とか言って的外れなの出されてもw #includeは別にマクロのせいで遅くなるとかそういう話でもないし、マクロなんか処理としてはまるで重くないw 存在が悪というだけw
823 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 23:08:33.54 ID:SvEFPfvN.net] >>810 ビット演算を使わない速いコードをそろそろ披露して。
824 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 07:54:52.06 ID:CtwsyWiP.net] C++11以降の規画いじりて、よのなかのニーズからすると斜め上の ユーザーにそっぽ向かれるような規画ばっかなんで注力したのかな? テンプレートで定義した関数、なんとかうまく自動選択されるように頑張ってみたモノの 最後は泥縄メタ関数でゴテゴテ飾り立てたってのがこの10年だったような気がしてならない そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの? あれ慣れてしまうともうtry,catchなんかうざくて使えない
825 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:06:32.47 ID:fHExY7tI.net] >>812 > そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの? お前…
826 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 09:06:35.79 ID:tKmNrPY6.net] スコープアウトでなんかしたいならデストラクタでどうにかするC++の方針を知らんのか?
827 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:21:53.60 ID:HFhqj5qW.net] ちんちんシュッ!シュッ!シュッ!
828 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:42:47.10 ID:CtwsyWiP.net] >>814 はぁ? スコープアウト?何ねぼけてんだ 例外処理のデフォルト処理のことを言ってるんだが
829 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:43:14.23 ID:CtwsyWiP.net] >>813 なんやお前
830 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 14:16:16.84 ID:CtwsyWiP.net] 例えば C$の $"X = {X}" に慣れてしまうと cerr,coutあたりの "x = " << x とか邪魔臭すぎるだろ null合体演算子にしてもそう。これがあるかないかで生産性大違い 恐らくすぐにでも実装出来そうな機能が未だに実装されてない。 async/awaitでもC++20でようやく正式サポートだっけ どこ見て標準規格きめてんの? CユーザがC++知ってしまうとPure Cで書くのがいやになるように C++ユーザがC#知ってしまうともうC++で書くのがめんどくさくてかなわんのよな
831 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:10:25.26 ID:s791HQmS.net] >>816 ねぼけてるのは君のほうだと思うぞ あ、ねぼけてるわけじゃなくてただ知らないだけか
832 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:59:34.10 ID:ffas
] [ここ壊れてます]
833 名前:CIjO.net mailto: そもそもusingと > 例外処理のデフォルト処理のことを言ってるんだが になんの関係があるんだ? [] [ここ壊れてます]
834 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 16:42:51.37 ID:sOLohvn0.net] usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される C#にはRAIIがないから try/finally とかで解放処理を書く必要があったりしてそのtry構文はクソ面倒だけど、usingを使うとお手軽に書ける まあRAIIがあればそもそもこんなの不要かな
835 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:03:56.94 ID:1RqC5Y4R.net] RAIIはGC使わない言語用だからな
836 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:07:15.66 ID:7ru2bWxl.net] RAIIほどポンコツな名前が長く使われてるケースも珍しいよね 自浄作用とかないのかな
837 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:16:42.76 ID:QRpFWUID.net] C#にもlock statementみたいにRAII的なものもある
838 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 17:59:34.97 ID:bjKur886.net] むしろC++がもたらしたものの中で 一番冴えてるのがRAIIだと思うけど
839 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:09:07.22 ID:wvo3NcdM.net] そういえばCにdeferが入るかもって話はどうなったんだ?
840 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:17:05.07 ID:tpB/JA+o.net] >>816 たぶん using(var sw=new StreamWriter("a.txt")){ sw.WriteLine("test"); } のこと言ってるんだろうけど 例外処理のデフォルトってfinallyのことだよな? finallyで処理するのは例外の時だけじゃないぞ return/continue/break/throwでusingブロックを抜けるときにIDisposable.Dispose()を実行するための構文だぞ
841 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:52:33.02 ID:AEoeDiSF.net] >>821 C#: usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される C++: スコープ内で定義すると、スコープアウトされたときにデストラクタを呼び出すことが保証される まさか知らないの?
842 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 20:32:11.38 ID:/9JyHlX1.net] >>822 GCは関係ないな
843 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:21:27.32 ID:HLabfOkH.net] スコープ抜けた時の動作するって代物ならやっぱdeferのが明示的で使いやすいってのがcにも入った理由だろうな。
844 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:40:18.50 ID:zunmlMTL.net] deferって実際に入ったの? 提案されただけでなく? 書き方が楽なのはC#で間違いない リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数 RAIIって別にそんな重要なキーワードじゃなく、名前はないけど昔からあった考え方で、Windows3.1時代でも皆普通に使ってた
845 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:56:21.68 ID:UoyzmKMm.net] >>830 使いやすいかなぁ 自由度は高いけどその分間違えやすい気がする
846 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 23:05:49.29 ID:/9JyHlX1.net] >リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数 C#のusingとpythonのwithと、あと有名どころだと何があったっけか
847 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 06:51:40.79 ID:ES6j8MQa.net] >>827 finallyみたいなもんを用意せずに済むことを言ってるのに じゃ、君のあげたコイツ using(var sw=new StreamWriter("a.txt")){ sw.WriteLine("test"); } 同じようにC++でこれぐらい簡単に書けるというなら書いて見せてくれ 俺は>>616 で同様の処理をC++で書けないとは一言もいってない。 生産性たかく、簡単に書ける手法が用意されてないことを言ってる。 usingだけ食いついてるが ・$"X = {X}" ・null合体演算子 は?C++でどー書けるのか是非知りたいから教えてくれよ
848 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 07:54:45.46 ID:ES6j8MQa.net] ? 俺は>>616 で同様の処理 〇 俺は>>816 で同様の処理
849 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 07:56:10.67 ID:ES6j8MQa.net] バツが機種依存やったな X 俺は>>616 で同様の処理 〇 俺は>>816 で同様の処理
850 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:14:44.56 ID:MqQwCbKz.net] >>834 そのusingブロックを抜けるときに自動でDispose()が呼ばれるという話なら、 C++だとデストラクタでやるってのが>>814 が言っていることかと。 usingより簡単だし例外でも問題なし。
851 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:18:15.81 ID:qdlu4xZp.net] >>834 横だけど、std::ostreamてRAII使えなかったっけ? コードは適当。 if (std::ofstream sw(filename)) { sw << "test" << '\n'; } else { std::cerr << "unable to open '" << filename << "'\n"; }
852 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:47:18.97 ID:zgtKcvNm.net] >>834 C++向けに設計されたライブラリならデストラクタに終了処理を全部書いてあるのでusing構文自体が不要 スコープアウトでデストラクタが呼ばれる std::ofstream fs("a.txt"); fs<<"test"<<std::endl;
853 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:57:42.45 ID:zgtKcvNm.net] >>834 C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない お前のC++の用語がところどころ違うから無知なようにしか見えない
854 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 10:15:21.19 ID:sgjjbJfo.net] >>834 > ・$"X = {X}" > ・null合体演算子 まあこれは全然違うレベルの話だけどこう言うところはC#はなかなか良く出来てると思う
855 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 13:15:41.55 ID:ES6j8MQa.net] >>839 >fs<<"test"<<std::endl; ファイルオープンできてるかどうかわからないのに書き込むのかよwww C++てファイルオープンできてもないところに書き込んだときに 処理を停止せず、自動でうまく例外処理するおしゃれな機能なんてあったっけ? using(var sw=new StreamWriter("a.txt")){ sw.WriteLine("test"); } とじゃ全然意味が違うだろ なんでエラーチェックしないの? わざわざチェックしなきゃいけないかどうかの話をしてんだよ わざと論点ずらすな >C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない その通り それを問題にしてんの。 そのおかげでC++では生産性の向上が見られない 認めてるじゃねーかwww
856 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 13:54:11.00 ID:nEZBRLmQ.net] C++ vs C#スレ立てるか?
857 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 14:02:35.35 ID:uj+JKNAz.net] >>842 > ファイルオープンできてるかどうかわからないのに書き込むのかよwww そういうのが欲しけりゃエラー時に例外を出すようにしとけばいいだけ C# 使ってりゃそれぐらいわかるだろ ... 使えてりゃねw
858 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 15:37:33.26 ID:Blieee3P.net] >>842 >>838 は無視かよ。 ずいぶんと都合のいい目をしているんだな。
859 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 18:17:46.54 ID:aaZp/+dN.net] >>838 見ればC++がなぜ衰退していくかよくわかるな
860 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 18:28:11.81 ID:4Wrqo5DU.net] >>846 なんで? そこまでいうからにはきっちり説明してもらおうか。 説明できなきゃ馬鹿にしようかね。
861 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:08:24.48 ID:WCI7hBXJ.net] iostreamなんて今使ってないだろ
862 名前:デフォルトの名無しさん [2022/03/30(水) 20:21:40.16 ID:qIK9n1MF.net] > C#のusingみたいな構文 C#の発明と言うより、発祥は、お前らの嫌いな、Visual Basic(VBA)の、With〜 End Withじゃないかな?
863 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:22:04.28 ID:UJJsLtPb.net] C++は例外がcharベースのwhatしかない時点で日本語Win上では実情と合わなくなるんよね。
864 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:22:32.28 ID:/krHLZdG.net] >>834 Rustだと以下のようになる > ・using RustもC++と同じくRAIIなのでusingは不要 let mut file = File::create("a.txt")?; file.write("test")?; エラー時は?演算子で即returnとなり例外処理と類似状態になる スコープを抜ける時に自動的にデストラクタdrop()が呼ばれる 何もしなくてもファイルなら自動closeされてロックなら自動解除される > ・$"X = {X}" Rustでは標準マクロ利用でほぼ同様の形式 format!("x={x}") > ・null合体演算子 Rustは安全重視のため各型にnullやnilといった値が無い状態というものがない そこで関数型言語と同様に代数的データであるenumを用いてジェネリックにT型に対してenum Option<T>型を使う Option<T>型はT型の値tが存在する場合Some(t)と存在しない場合Noneの2つのenum値をとる なのでnullに対応するものはNoneとなるが型が異なるので明白に区別できてミスがあればコンパイル時に検出可能
865 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:25:10.41 ID:/krHLZdG.net] >>834 > ・null合体演算子 Rustでは>>851 という状況なのでnull合体演算子についても少し概念が違ってくるが xがNoneの時にDEFAULT_VALUEとしたい場合 x.or(Some(DEFAULT_VALUE)) でOption<T>型を得る x.or(Some(DEFAULT_VALUE)).unwrap() でT型を得る x.unwrap_or(DEFAULT_VALUE) が上記の簡易版でT型を得る 例えばC#での x ?? y ?? z を全てOption<T>型で表すと Rustでは x.or(y).or(z) となりほぼ同じシンプルな表現 ちなみに?演算子によるNone時の即retun Noneも可能で 例えば各メソッドがOption<T>型を返すとするとこれでT型を得られる let output = input.method1()?.method2()?.method3()?;
866 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:27:16.59 ID:WCI7hBXJ.net] >>850 その例外ベースだけだとおもってるの? クラスや型ならなんでも投げられるんだが
867 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:31:07.93 ID:UJJsLtPb.net] それは例外そのものの型のことでしょ。 基本的にはexceptionの派生や孫で作られてるものが大半だからwhatでメッセージ受けるわけだが、 何のエンコードかは定かではない。
868 名前:デフォルトの名無しさん [2022/03/30(水) 20:33:36.81 ID:qIK9n1MF.net] >>842 根本的な理解がない、残念君のご様子。 > std::ofstream fs("a.txt"); コンストラクタでOpenする場合、失敗すると例外がスローされるから、関数内 または上位でtry〜catchかな。 C#やJavaで毎回NULL参照チェック書いてるか? いずれにしろ、オープンされていないオブジェクトが > fs<<"test"<<std::endl; に渡されることはない。 こうした処理は、オブジェクトのシリアライズ処理を実装 した関数内へ記述して、参照渡しでオープン済のオブジェクトを渡すのが一般的。
869 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 20:43:31.08 ID:/krHLZdG.net] Rustにはnullも例外もなく どちらも代数的データ型であるenumで表現するため シンプルかつ安全性をコンパイル時に保証できる
870 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:06:36.60 ID:UJJsLtPb.net] RustでC#のdynamicみたいなことやるにはどうするの?
871 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:23:30.04 ID:yBbOBLyf.net] >>849 全然ちゃうわww
872 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:25:28.30 ID:9xKIjqbP.net] >>857 C#はdynamic型という間違った方法を取ったため C#は実行時エラーおよび実行時例外が発生し安全でない Rustは型とは直行するトレイトがあるため 複数の様々な型に対して共通する振る舞いをトレイトとして実装できる これらはコンパイル時にチェックされ実行時の安全性が保証される 更に加えてトレイトの利用方法は用途に向けて2種類用意されている 1つは利用時にimpl Traitで宣言する静的なトレイト利用であり 複数の様々な型に対して各々の静的に異なるコードが適用され高速である もう1つは利用時にdyn Traitで宣言する動的なトレイト利用であり 複数の様々な型に対して実行時にダイナミックにディスパッチし柔軟である 2種類ともにコンパイル時にチェック確定するため Rustではこれら実行時にエラーや例外が起きることはない
873 名前:デフォルトの名無しさん [2022/03/30(水) 21:55:25.20 ID:qIK9n1MF.net] > Rustではこれら実行時にエラーや例外が起きることはない 実行時にメモリが足りなくなったら、Rustで書かれたプログラムは どんな挙動を返すの?
874 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 21:57:54.53 ID:UJJsLtPb.net] それだと使えないなぁ。
875 名前:デフォルトの名無しさん [2022/03/30(水) 21:58:03.62 ID:qIK9n1MF.net] >>858 おなじだよ。 usingに一時オブジェクトを渡す場合に限って、usingの終わりと オブジェクト寿命が同じなだけだ。
876 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:00:39.04 ID:T6u2kz/X.net] 毎度のことながら複オジのアホ解説読むと Rust勧めてるのはこのレベルの人なのかと悲しくなる 無知にも程がある
877 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:05:28.12 ID:qUkXH45r.net] >>860 それちゃんとよく読めよ C#のdynamic型に対応するものの話だろ ちなみにRustではメモリアロケータも変更可能&自作も可能でベアメタル含めて任意の環境に対応できる だからメモリ不足時の対応も自由にできてOS等も書ける もちろん一番単純な対処としてはpanic
878 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:07:51.84 ID:jqrh8rWF.net] >>861 C#でのdynamic型で適用してる事項はすべて適用出来るでしょ 反例を持ってこない限りこれはC#側の負けよ
879 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:11:11.16 ID:bu0twkVZ.net] >>862 With~End Withだけじゃなくusingも勉強し直した方がいいよ リアルで恥を掻く前に
880 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:14:11.74 ID:UJJsLtPb.net] 対象なオブジェクトがrust内にあるわけでも存在してるかさえわからない状態なんだから、 実行時にはエラーや例外が発生すると思うのだが...
881 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:25:39.59 ID:ALQUZfnd.net] >>867 どういう想定か曖昧すぎてわからないため一般的な話をすると Rustにはnullもundefinedもないし いわゆるtry-catch例外もないから あるT型が求められる時の関数の返り型は>>851 でも触れられているように代数的データ型となって enum Option<T>型かenum Result<T, Err>型になるよ これらはT型を取り出すために広い意味での分岐となるだけで普通に処理が進むね
882 名前:デフォルトの名無しさん [2022/03/30(水) 22:26:22.84 ID:qIK9n1MF.net] >>866 お前がナー
883 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:31:08.47 ID:YEeL7eMZ.net] >>867 それはC#でdynamic型を使って問題を解決している例ではないのでは? 例えばWebのDOM操作など色んな異なる型が返ってくるときのためにC#ではdynamic型を使う Rustではそういう時にトレイトを使うので色んな異なる型が返ってきても対応できる
884 名前:デフォルトの名無しさん [2022/03/30(水) 22:34:21.72 ID:qIK9n1MF.net] >>839 > usingより簡単だし例外でも問題なし。 >>842 は、 > using(var sw=new StreamWriter("a.txt")){ の、newに失敗すると、その時点で例外がスローされることを判ってないん だろうな。
885 名前:デフォルトの名無しさん [2022/03/30(水) 22:37:02.42 ID:qIK9n1MF.net] >>864 > ちなみにRustではメモリアロケータも変更可能&自作も可能 C++でもできるわけだが?
886 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:42:11.12 ID:OkNrkUse.net] >>872 どこにもC++のことを否定していない書き込みに対して唐突のイチャモンやな それならC++だけでなく Cでもできるわけだが?
887 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:47:22.15 ID:4xlnCCQ3.net] >>860 君は頭が悪いな C#のdynamic型は失敗仕様であるという話だぜ メモリが十分にあっても実行時エラーや例外で死んでしまう コンパイラが検知できない仕様なためミスがあっても通してしまうからだ
888 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:50:27.28 ID:NgOFxdTU.net] >>869 いや、マジで勉強したほうがいいぞ using はスコープから拔ける時に Dispose 呼ぶだけ 寿命に感知はしないよ
889 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:09:24.22 ID:4bDt5Vb4.net] dynamic自体は名前がわかってるreflectionをいちいち書くのダルいから妥当な導入ではある ジェネリクスにC++20のrequiresみたいな制限があればdynamicなんていらなかったのは確かだが
890 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:15:44.80 ID:SheiVyTd.net] 実行時になってようやくエラーを引き起こし得るdynamicはC#の設計ミス C++やRustは異なる解決をしている
891 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:59:52.46 ID:Lj4LP6Zg.net] dynamicってそもそもリフレクション+式木でしょうが こんなもん使うな ジェネリック使え
892 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 00:03:05.89 ID:EY1WgKK4.net] tagged-unionだよ
893 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 00:24:36.68 ID:LBSBAbTE.net] ミスった時にコンパイルエラーを出せない仕様はよくないな >>859 Rustでの対応は3種類だな (1) ジェネリックにトレイト境界で制約して静的にモノモーフィゼーション (2) ジェネリックにトレイト境界で制約して動的にディスパッチ (3) enumでタグ付け収容して処理時分岐 いずれもプログラミングでミスれば実行時ではなくコンパイル時に早期エラー発覚できる
894 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 01:54:42.49 ID:sTE3Pr3t.net] >>855 std::ofstreamのコンストラクタで例外を投げるってマジ? 普段からC++使ってるの?
895 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 15:47:20.37 ID:TWJkYixT.net] >>832 リソース解放って構造体と紐づけるのは結構無理があると感じることが多い。 もっとコンテクストによるって方が一般的感覚だと思うわ。 そういう意味でdeferのが馴染む。
896 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 16:56:25.59 ID:+qzJxbYZ.net] >>882 上にも書いたけど自由度は高いと思うけど忘れたり間違えたりしそうで怖い
897 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 17:43:45.66 ID:TWJkYixT.net] デストラクタを正しく書く方が簡単で間違いと考えてる?あんまり理解できんな。
898 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 18:24:33.50 ID:wBL3yx/w.net] >>884 デストラクタは一度書けばいいけどdeferは使う度に書かないとだめでしょ? どっちが間違いやすいかは考えるまでもない
899 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 18:47:26.32 ID:d1Z8MU3o.net] >>884 必要なものはだいたい標準ライブラリに入ってるから手書きで頑張る必要はないのでは 例外安全にするのがめんどくさいとかそういう話?
900 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:19:43.92 ID:Yphv2UuC.net] https://discourse.llvm.org/t/rfc-lifetime-annotations-for-c/61377 clangの独自拡張としてだけどC++にlifetime入れようという議論があるんだね
901 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:54:43.62 ID:ezdDFz2p.net] ライフタイム導入すればコンパイル時点でバグを発見できて 実行時の無駄なデバッグを減らせるし メモリ関係の未知のセキュリティバグもコンパイル時点で検出できるもんな
902 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 22:41:04.77 ID:5MtdHF70.net] これ以上C++を接ぎ木してこねくり回すの止めにしたら
903 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 11:55:08.48 ID:W9pHkRzU.net] >>887 でもrustと同じならdoubly linked listは表現出来ないんでしょ?
904 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 12:04:52.85 ID:llhYZSlD.net] >>889 C++ってかわいそうな運命だよなあ
905 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 16:13:05.78 ID:9lFqLTmO.net] >>890 それはlifetime関係なくてxor mutabilityの話だよね
906 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 16:37:52.29 ID:W9pHkRzU.net] >>892 なるほど
907 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:12:35.56 ID:Qom6hzMo.net] >>890 Rustでは出来るよ
908 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:28:58.27 ID:FsLhH6TX.net] >>885 そんなの一行書くだけろ。。むしろ意図
909 名前:通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。 [] [ここ壊れてます]
910 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:44:36.67 ID:77d+30yb.net] >>895 > そんなの一行書くだけろ。。 できないプログラマーの典型で草 一行書くだけだから確実にできると言うならバグは無くなるわ > むしろ意図通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。 それはお前の能力が足らんだけ
911 名前:デフォルトの名無しさん [2022/04/03(日) 17:49:59.46 ID:rc6NcMYZ.net] >>895 defer使えば怪しい挙動は絶対しないとでも?
912 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:57:55.57 ID:9lFqLTmO.net] デストラクタでリソースが解放されることを保証するのはデータ構造を定義する人だけど deferの場合はデータ構造を使う人の責任になる データ構造を定義する回数と使う回数では普通は後者の方が多くなるから deferの方が間違いを起こしやすいと
913 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:34:48.12 ID:W9pHkRzU.net] >>894 実行時にオーバヘッドが出る形でしか実現できないやん
914 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:40:47.40 ID:9lFqLTmO.net] >>899 オーバーヘッドが出てるのって具体的に何のこと? stdのLinkedListの実装にもオーバーヘッドあるの?
915 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:02:06.19 ID:14cK0a9Z.net] >>900 LinkedListってunsafeで実装されてるんだけど静的にメモリセーフティを実現する言語機能があるRustでそれをするっておかしいよね? それって行儀よく実装するとオーバーヘッドが出ることの裏返しだよね?ちょっとは頭を使おうか?
916 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:14:12.42 ID:y2zkcNcq.net] >>901 えっ、じゃあなんでunsafeという機能がわざわざ用意されてるの? 頭使って考えてみて
917 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:31:58.76 ID:WSInp7AV.net] >>901 linked listに限らず何でもunsafeで作られているよ unsafeは悪ではなく、安全なインタフェースを備えた型やモジュールの内部に閉じ込めるもの その結果Rustではプログラム全体の安全性を保証できる 悪なのはプログラム全体がunsafe状態なC/C++
918 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:56:40.12 ID:88Lrr0N7.net] >>902 そりゃRustの型システムがオーバーヘッドが起こるやり方でしか安全性を保証できないからでしょ? 頭使えないんだねかわいそう
919 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:04:31.11 ID:y2zkcNcq.net] >>904 そうそう、コンパイラとプログラマの責任範囲を明確化するための仕組みだよね 結局 >>899 で言いたかったのは safe rust だけで LinkedList を実装するとオーバーヘッドが生じると言うことだったんだね
920 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:09:11.84 ID:9r+bgOYm.net] >>903 それってRustの型システムに基づいて行儀よく実装するとオーバーヘッドが出ることへの反論になってないよね? つまりRustの型システムはdoubly linked listを含めたあらゆるデータ構造をオーバーヘッドなく実装できるほどの表現力がないってことだよね
921 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:23:50.48 ID:y2zkcNcq.net] >>906 safe rustの範疇ではあらゆるデータ構造を表現できないのはその通り なのでunsafeというescape hatchを用意している rustはpureな言語ではないのでコンパイラですべての安全性を保証することは最初から狙ってないよ
922 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 10:34:53.41 ID:M7C/Fpbq.net] >>906 それは違う 例えばVec(ベクタ)はRustが標準ライブラリで提供している型だが LinkedList(二重リンクリスト)もRustが標準ライブラリで提供している型である VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している その両者に違いはなくRustによる安全性の保証に何も問題を及ぼしていない
923 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 13:39:53.90 ID:RabHiWd3.net] オーバーヘッドwってことでいいじゃん 中途半端な知識でムキになるから無駄なやり取りが続くんだよ
924 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 15:17:06.36 ID:ilb8jjlp.net] >>908 > VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している ホントかなぁ。 ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど? これを防ぐには、ベクターやリスト自体はもちろん、各要素や生ポインタを含めて あらゆる変数に参照カウンタを設けた上で、参照数が0になったタイミングでオブ ジェクト自動破棄する必要があるが、まさにオーバーヘッド。
925 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 18:59:43.72 ID:RDBERkGC.net] rustって、unsafe使っていても メモリ安全のチェックはしてくれるって事であってる?
926 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 19:11:22.90 ID:vi3Hd2oR.net] >>911 そんなことはない。 ttps://doc.rust-jp.rs/book-ja/ch19-01-unsafe-rust.html
927 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 19:18:31.93 ID:UrWVuubJ.net] rustって、制限きついなら制限緩い他の言語に変換しやすいとかある?
928 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:04:42.98 ID:0mSmJ0PC.net] 標準ライブラリに問題がないって言い切れるの? コンパイラとか標準ライブラリを盲信できるほど完成度高いんですかね 盲信してると不具合の発見に支障が出そう
929 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:07:34.39 ID:Aq9lII9f.net] 嫌なら使わなければいいだけやろ
930 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:19:31.81 ID:VNZL7sLo.net] >>910 そんなRustの初歩くらいは学んでからレスしようぜw
931 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:23:28.80 ID:y2zkcNcq.net] >>914 プログラムがバグった時にまず自分のコードを疑うべきと言える程度には信頼できると思うよ
932 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:28:34.57 ID:88Lrr0N7.net] >>916 オーバーヘッドなのは否定できてなくて草
933 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:41:28.56 ID:y2zkcNcq.net] >>910 > ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ > に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど? 以下のようなコードを意図してるんだと思うけど rust だとコンパイルエラーになるよ let v = vec![Box::new(1), Box::new(2)]; let ptr = &v[1]; drop(v); println!("{ptr}"); https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=f4b4be3e93f71ec0828c6039dd156cb7
934 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 20:48:51.57 ID:ZmDtAG5s.net] >>914 今までにコンパイラやライブラリのバグ見つけたことある? 自分が作り込んだバグとどっちが多かった?
935 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:00:31.84 ID:V8HUi7lD.net] 殆どの言語が標準ライブラリはバグってたりセキュリティの穴見つかったりして更新し続けてるがな。
936 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:11:15.35 ID:y9KalPQq.net] メモリ安全性に関していえば Rustなら不具合の可能性があるのはコンパイラとライブラリのunsafe領域だけだけど (しかもそれらはそこそこの人数でチェックされている) C/C++の場合ありとあらゆる箇所で可能性があるからな 盲信とかでなく単純に引く確率が低い
937 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:11:46.66 ID:yn3hKO4L.net] libcにもバグあるしそれどころか カーネルもヤバい問題発覚することがある もうパソコンを窓から投げ捨てよう
938 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 21:41:12.90 ID:dNgOu4No.net] >>921 だからそれお前が見つけたのか?
939 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 22:18:49.72 ID:yJV2c6am.net] 初心者ほど「コンパイラのバグ」などと言い出す ダニング=クルーガー効果である
940 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 23:05:18.52 ID:jLJ2cB6c.net] >>910 あまりにも無知なその知識でRustを叩くのは無理がある そういうケースも含めて検出してくれるのがRust だからRustはC++よりも圧倒的に優れている
941 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 06:13:13.50 ID:l+kYPJyP.net] そろそろ飽きろよこの流れ
942 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 09:01:35.21 ID:rwKxODkm.net] >>926 Rustはunsafe内のメモリ関連のバグまでは検出しないけど? 例えRustには無知だとしてもunsafeという語感からだけでunsafe内では何も保証されないってことは推測できるよね?
943 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 09:22:45.52 ID:i/q849BZ.net] >>928 もちろんそう それ以外の部分をRustは保証してくれるから大手IT企業を初めとして皆が採用している 全てがunsafeなC++を捨てつつある、
944 名前:デフォルトの名無しさん [2022/04/05(火) 11:55:20.23 ID:Md/fZtCu.net] 2038年問題を再発させるコードが多数の場所にコピーされてしまっている ttps://gigazine.net/news/20220330-2038-problem/ > エイドリアンさんが調べた限りでは、下記のリポジトリにて問題のあるコードが使用されていたとのことです。 > > O3DE > Dokany > Ceph-Dokan > libarchive > ghc::filesystem > ImageMagick > Cxbx-Reloaded > ReactOS > > また、下記のリポジトリについては記事作成時点で既にエイドリアンさんの指摘を受けてコード修正済みとなっていました。 > > OpenRCT2 > DuckStation
945 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 03:36:26.34 ID:A9app5rs.net] >>919 それ、子スレッドで実行する関数に引数として渡して、スレッド終了を待たずに 親スレッド側で解放するとかしたら、コンパイルエラーにならないと思うけど?
946 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 03:42:32.00 ID:ryRy0Ktk.net] >>931 そんなことは不可能だろう まずは基本的知識を学べや
947 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 04:46:14.51 ID:MueoLJZZ.net] エスパーさせんな、コードで示せ
948 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 09:00:45.09 ID:Z4fh8uHR.net] >>931 見事な恥の上塗りでワロタ
949 名前:デフォルトの名無しさん [2022/04/06(水) 09:22:57.25 ID:A9app5rs.net] >>932 何が不可能なの? 参照渡しされた場合、スレッド関数側ではメインスレッド側で 解放される変数の寿命が判らないから、参照カウントで実行時にはオブジェクト 寿命を管理できても、少なくともコンパイル時のエラーにはならないと思うが? >>933 Rustやってないし、やる気もない。 ちなみに、919みたいなケースは実際にはそもそも書かないが、コンパイラ依存だけど 戻り値としてローカル変数への参照を返すとかは、最近のC++だと警告が出る。 可変引数のprintf()等でも、昔は書式制御文字列と引数の数や型が一致していなく てもノーチェックだったけど、最近は警告が出るし。
950 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 09:29:13.74 ID:OcEMaDN/.net] >>935 妄想で思い込みをして架空の意味のない話を進めて批判している なんと愚かなことだろう
951 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 10:57:59.47 ID:X0SajXCN.net] >>931 エラーになるよ use std::{thread, time::Duration}; fn main() { let v = vec![Box::new(1), Box::new(2)]; thread::spawn(|| { thread::sleep(Duration::from_secs(100000)); let ptr = &v[1]; println!("{ptr}"); }); drop(v); } https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6ffcf2e259e138e27d653db6fdd4fc98
952 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 11:01:15.13 ID:BAnc7YwE.net] >>935 C++相当のコードか擬似コードでもいいからお前が言う操作のコードを出せ スレッド間操作か参照の使い方周りでC++でもぶっ壊れるやつな Rust使いの誰かがコンパイルの通しようがないって教えてくれるだろうよ
953 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 11:41:09.81 ID:A9app5rs.net] >>397 それ、同じmain()スコープの中で宣言しているローカル関数だからでは? 普通、そんな書き方せんでしょ。 thread::spawnで起動している、無名関数を、引数ありの独立した関数として 定義して、参照渡しとしてスレッド実行した場合、コンパイル時の静的解析 ではエラー検出できない。
954 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 11:55:40.05 ID:KqMgG2U/.net] 流石にこのレベルの人を叩いて悦に入るのはやめようぜ
955 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 12:00:23.11 ID:a0CdlgS1.net] >>939 意味不明だな 実際にそういうコードをわかるように書いてくれ
956 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 15:45:42.18 ID:MueoLJZZ.net] thread::spawnには引数無しのクロージャしか渡せません pthread_createとかで明示的にvoid *を渡すのに相当する処理は、Rustだとこの引数無しクロージャにキャプチャさせる方法で実現されます で、それをやってるのが>>937 です
957 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 16:11:31.38 ID:Dn8F6G2j.net] >>924 VCいじってりゃ嫌でもforループ前の初期化バグにぶち当たるわ。 最適化オプション下げるとか、for内でやるのをやめるとかいろいろ修正方法はあるが。 むしろいままでコンパイラバグに当たらない方が不思議。 お前仕事してんのかって疑われるレベル。
958 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 16:23:15.68 ID:2Jp54xD1.net] forループ前の初期化バグってどんなの?
959 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 17:07:47.57 ID:X0SajXCN.net] >>931 こういうこと?これもエラーになる。 use std::{thread, time::Duration}; fn main() { let v = vec![Box::new(1), Box::new(2)]; thread::spawn(|| sub(&v[1])); drop(v); } fn sub(ptr: &i32) { thread::sleep(Duration::from_secs(100000)); println!("{ptr}"); } https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d90b955b8539696c776b1d44b0e8c5a9 ちなみにこれはコンパイルが通る https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38157f3760d2ce9dde7d9d22c74195ad これは通らない https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=38157f3760d2ce9dde7d9d22c74195ad
960 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 17:09:04.34 ID:X0SajXCN.net] >>945 URL間違えた コンパイル通るやつ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=10577ae2a6cdd42a9815971f82772c3a コンパイル通らないやつ https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9080880c0cab4626cd94cf4806b2e5a2
961 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 17:18:09.35 ID:vFuVta1u.net] >>943 具体的に書けよw
962 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:45:31.77 ID:A9app5rs.net] >>945 > こういうこと?これもエラーになる。 Rustの文法がよう判らんけど、おおむね合ってると思う。 ちなみに、C/C++だと大規模プログラム開発を想定して、ソース分割による分割 コンパイルや、ライブラリ化という仕組みがあるわけだが、Rustの言語仕様って そのあたりどうなん? 例えば、スレッド関数「fn sub(ptr: &i32)」が、「fn main() 」を別のファイルに (例: main.cpp, sub.cpp のように)実装してビルドするとか、スレッド関数の 「fn sub(ptr: &i32)」だけをライブラリ(dllまたはlib)化するとかできるの? そもそも、Rust でライブラリを書いたり、Rust で書いたプログラムって、他の 言語で書かれたライブラリ(OpenCVとか)とリンクできるのか?
963 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:47:00.11 ID:4TDuv4YW.net] pythonのライブラリとかgithubにいくらでもあるけど?
964 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:52:54.88 ID:X0SajXCN.net] >>948 モジュール分割は普通に備えてる というかC/C++のモジュール分割は貧弱な方で、大半の言語はまともな仕組み備えてるよ Rustでライブラリ作ってCから呼び出したり、CのライブラリをRustから呼び出すこともランタイムとかめんどくさいこと考えずに普通にできる
965 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 22:27:56.00 ID:MiVqlX0M.net] Rustのモジュール分割はC/C++の分割コンパイルとはちょっと違う気がする C/C++だとソースファイルごとにコンパイルしてオブジェクト(.o)作ってからリンカでまとめるけど Rustは最初にcrate内のソースを1つにまとめてから一気にコンパイルする感じ (見えない部分で分割してるっぽいけどソースファイル単位じゃないしプログラマは意識しない) C/C++の.dllとか.libに対応するのはRustだとcrateになるからsubだけライブラリ化するなら ファイルを分けるというよりプロジェクト(crate)を分ける感じになるかな C/C++の.oに相当する中間ファイルはRustだと存在しないはず
966 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 06:01:34.50 ID:yfLrBpxG.net] いやgolangよりCとの相互利用はマシだけど、褒められるほどRustにCとの互換性はないよ。Dとかのほうがまだまし
967 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 07:14:19.71 ID:Ug2bY/ov.net] RustとC++の相互呼び出しはCXXで完璧や
968 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 07:28:15.01 ID:G2jE/Lgc.net] ぶっちゃけモジュール分割がなんでよしとされてるのかがわからない 過大評価やろ parseにオーバーヘッドあると言われているけどC/C++のような分割コンパイルの方が並列化できるしええやん
969 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 09:21:09.02 ID:0q4aQzv/.net] C++にはモジュール導入したいという 話はずっと前からなかったっけ
970 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 09:32:06.83 ID:jLJRe/XC.net] 分割コンパイルはgenericsとかtemplateと相性が悪いんだよね(C++の悩みの種になってるはず) Cの時代のマシンパワーだと最適解だったと思うけど Rustの // main.rs mod foo { pub fn f() {} } と // main.rs mod foo; // foo.rs pub fn f() {} を等価とみなせる言語設計は分かりやすくて余計な悩みが少ない
971 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:15:13.87 ID:Fr57TkZu.net] >>951 ちょっと調べてみたが、RustってFlutterと同様、結局のところ単なるコンパイラ コンパイラ(Rust→C++, Dart→C++)じゃんよ。 だから、どちらもターゲットプラットフォーム用のC++コンパイラ(Windowsなら Visual Studio(Build Tools)または MinGW、macOSならXcode)が要る。 > C/C++の.oに相当する中間ファイルはRustだと存在しないはず 隠蔽されているだけで、vclやgccが動いてリンカーに渡す段階で、オブジェクト ファイル(.oや.obj)が生成されている。 スタティックライブラリ(.aや.lib)は、 単なるオブジェクトファイルの寄せ集めなので、他のOSS含めてリンクできる。 オブジェクトファイル自体に対応していなけりゃスタティックライブラリをリンク できないし、ELFフォーマットのデバッガも使えないし、malloc()等のランタイム との内部整合性も取れないからな。 自転車に乗れない(C++で安全なプログラムが書けない)プログラマ向けの補助輪 みたいなもんか?
972 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:27:13.60 ID:lezm9YBI.net] >>957 前半は何言ってるのかわからんが codegen unitごと.oファイルが生成されるのはその通り codegen unitはソースレベルのmoduleごとに2つずつ作られcodegen単位で並列化される
973 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:32:34.52 ID:HPvPKplB.net] >>957 デタラメすぎる RustコンパイラはCコードやC++コードを生成しません あなたの書いていることは全て間違っています
974 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 12:44:03.67 ID:jLJRe/XC.net] >>957 main.cに対応するmain.oが存在しないという意味で書いたつもりだった 混乱させたみたいですまない
975 名前:デフォルトの名無しさん [2022/04/07(木) 12:45:05.63 ID:pUyNlzjX.net] >>957 補助輪、というより電動機かな 同じ自転車だけど、少ない力でこげる 結果的に同じ体力でより遠くへ行ける
976 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 13:35:54.27 ID:tEZE72Zs.net] Rustやる気ないとか言う割にはずいぶんと熱心じゃん The Bookあたりから読み始めてみては?
977 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 13:49:05.41 ID:Fr57TkZu.net] >>959 > RustコンパイラはCコードやC++コードを生成しません だったら、Visual Studio (Build Tools)や、Min-GW、Xcode等がインストール されていない環境で、Rustだけをインストールしてバイナリ生成してみな。 下請けにプラットフォーム固有のC++コンパイラを使っているから、ターゲット プラットフォーム毎に、オフラインインストーラ―が存在するんだよ。 ttps://forge.rust-lang.org/infra/other-installation-methods.html
978 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 14:01:29.41 ID:tEZE72Zs.net] >>963 それはできない ただしその理由はコンパイラを下請けとして利用しているからじゃなくて、リンカを下請けとして利用しているからだよ > Why might one not want to install using those instructions? > * Offline installation. ... 斜め読みしすぎじゃないですかね? オフラインインストーラがあるなんてどこに書いてある?
979 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 14:32:47.76 ID:0q4aQzv/.net] 空想上のRustに似た言語叩きする人多いな
980 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 14:49:00.36 ID:DqPGONrT.net] LLVMを知らないんだろ もう引退するお年頃
981 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:03:24.56 ID:cqCq8D8c.net] 5chに常駐してるようなC++民はビックリするほど見識が狭いよな ある意味コボラーと同じ人種
982 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:09:08.48 ID:Fr57TkZu.net] > オフラインインストーラがあるなんてどこに書いてある? 折角リンクを貼ってやったのに英語読めないの? 「Standalone installers」って とこ。 > The official Rust standalone installers contain a single release of Rust, > and are suitable for offline installation. その下にリンク集の表があるでしょ。 以下、直リンク抜粋 Windows+GCC(32-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-i686-pc-windows-gnu.msi Windows+MSVC(32-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-i686-pc-windows-msvc.msi Windows+GCC(64-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-x86_64-pc-windows-gnu.msi Windows+MSVC(64-bit)用 https://static.rust-lang.org/dist/rust-1.59.0-x86_64-pc-windows-msvc.msi
983 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:34:45.27 ID:wO4kVij8.net] >>968 それは単にプラットフォーム毎にビルド済みのRustコンパイラと標準ライブラリが違うだけ いずれにしてもC++に変換してC++コンパイラを使ってるなんて事実はない
984 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:35:55.43 ID:tEZE72Zs.net] >>968 ああそこはこちらの勘違いでしたね すみません
985 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 15:55:01.85 ID:gcjUoiEr.net] ちんちんシュッ!シュッ!シュッ!
986 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 18:28:45.48 ID:6J24GmAj.net] >>954 クソデカヘッダファイルのパースコストは馬鹿にならないよ コンパイラはプリコンパイル済みヘッダファイルを用意したり、涙ぐましい努力をしている >>957 rustが必要としてるのはVS Build Toolのリンカやランタイムで、コンパイル自身はrustcというかLLVMがやっている vclは動かないよ
987 名前:デフォルトの名無しさん [2022/04/07(木) 22:11:21.15 ID:cJXUldxb.net] Rustの集大成と言えるFirefoxが世界で一番固まるブラウザとして名高いのだから、ユーザーに嫌がらせしたいプログラマはRustを使うべき。 タブレットモードで使ってると毎日一回は操作不能になるからね。 電源ボタン長押しして強制リセットするしかなくなる。
988 名前:デフォルトの名無しさん [2022/04/07(木) 23:12:28.96 ID:6mRJTF59.net] >>963 コンパイラとリンカを一緒くたにされてもなぁ。 それ言ったらc/c++も結局アセンブラ必要じゃん。 c/c++なんてアセンブリ言語使えない奴向けの補助輪じゃん。
989 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 23:26:31.11 ID:YR3mJewM.net] そいやRUSTってオプションでアセンブラ出力させたり出来るの?
990 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 23:27:28.73 ID:YR3mJewM.net] >>973 まだservoとかだけでしょ?
991 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 00:19:49.85 ID:PcnkB3on.net] >>973 アプリケーションのせいで電源強制断を要求されるのはOSが悪いのでは... というのはさておきfirefoxの悪い部分がrustに依るものってのはどうやって調べたの?
992 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 01:42:20.81 ID:uV0lTSE5.net] それにマジレスするか
993 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 06:18:52.60 ID:8k2J9S8r.net] >>973 もしそれが本当ならばWindowsでの問題でしょう LinuxでFirefoxを使っているけど一度も固まったことがない
994 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 07:35:26.61 ID:UBiXicJa.net] 俺はwindowsでEdge使ってるけど一度も固まったことないな
995 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 07:40:49.60 ID:OhTsNUjo.net] Rustを叩くために>>973 が適当なホラを吹いてるのだろう 毎日固まるブラウザなんてあるわけないし 頻出するバグがあったらすぐに修整される
996 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 07:57:10.73 ID:phXvIdWB.net] そもそも>>725 が書いてるけどrustはまだ全体の1割位しか使ってないのにrustの集大成とかアホ晒しすぎw
997 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 08:00:48.24 ID:Z05AA1u1.net] firefoxは固まるもの。 固まったところで誰も気にしない
998 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 08:02:17.06 ID:cn2WsGzN.net] >>983 どんな環境で使っている? 一度も固まったことない
999 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:36:43.82 ID:gFm4wviN.net] >>982 登場して10年で1割ですか。100年後もfirefoxが動いてるといいですね。
1000 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:59:58.15 ID:Fa4rer7L.net] 既に昔からある動いているモジュールを書き換える無駄なことはしないからそんなもんじゃね? そもそもRust自体も他の言語と同様にlibc含めて鉄板のC製ライブラリ使いまくるしな どの言語でもそのへんは同じだろ
1001 名前:デフォルトの名無しさん [2022/04/08(金) 14:54:35.66 ID:aIPGNTn3.net] firefox は固まるっていうかメモリリークだな rust のコードが unsafe だらけになっているのかは知らんが タブを閉じても使い終わったメモリを開放しない ひたすら使用メモリが増え続けswapがいっぱいになって固まる
1002 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 14:59:41.50 ID:LPi7J7jk.net] >>987 両方を使ってみればわかるが メモリをバカ食いするのはChromeの方
1003 名前:デフォルトの名無しさん [2022/04/08(金) 15:37:14.24 ID:aIPGNTn3.net] >>988 自分は firefox で swap に悩まされてて その後 chromium 系の vivaldi とか brave にして一気に快適になった メモリ4Gのマシンに linux 64bit を入れてた時の話だけど
1004 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:13:47 ID:i2DHgPAx.net] firefoxのせいで、スレまでの流れまで止まったな
1005 名前:デフォルトの名無しさん mailto:sage [2022/0
] [ここ壊れてます]
1006 名前:4/15(金) 14:27:51.53 ID:sD2CwuNi.net mailto: >>957 なるほど 最初のころのC++といっしょで 単なるトランスレーターなんかrustって [] [ここ壊れてます]
1007 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 14:38:25.40 ID:sD2CwuNi.net] >>987 通信障害起こしてるのをfirefoxのせいにされてもなww firefox使ってる最中に固まったことあったよ 使ってる最中にSSDが死んでアクセス不能になったのが原因だった
1008 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:14:39.30 ID:k/yGxJzN.net] >>991 ちがうよ rustでのビルド必要なのはターゲットプラットフォーム用のリンカであってC++コンパイラは不要 RustはLLVM使ってるからLLVM bitcodeへのコンパイラとは言えるかも知れないけどC++は一切関与しないよ
1009 名前:デフォルトの名無しさん [2022/04/15(金) 17:33:35.75 ID:k+WJVc0v.net] >>991 バカそうなやつ
1010 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:07:09.22 ID:sD2CwuNi.net] リリースされて10年経過する言語に思いを寄せてるのは馬鹿の骨頂だろwww お前といっしょでもう終わってんだよハナタレ せめてIARあたりがリリースしてたんなら話は別だがな どこぞのチップメーカでrustコンパイラ出してるとこあったけ? チップメーカが見向きもしない言語それがRust って認識でFA? あ、そーそ、SystemC rustで書けるか? これぐらい書けなきゃC++はreplaceできない C++をreplaceが目標じゃなかったっけ?
1011 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:14:02.55 ID:sD2CwuNi.net] 大体 Rustなんてネーミングがセンスなさすぎだろ。あほすぎて。これで洒落たつもりかよ。 これからぴかぴかの新製品投入するときにRustてwwww 機械メーカなら絶対採用したくい名前だろこんなもん
1012 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:26:31.06 ID:k/yGxJzN.net] >>995 LLVMって知ってる?
1013 名前:デフォルトの名無しさん [2022/04/15(金) 20:35:07.13 ID:k+WJVc0v.net] >>996 確かに
1014 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:37:43.23 ID:tyfulKnM.net] というか何故か言語って大概ネーミングに疑問符がつくような感じだよね
1015 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:38:50.95 ID:sD2CwuNi.net] rustてさび以外に "役に立たない" て意味もあるのな まさに、理念のみの 役 た た ず 言 語
1016 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 77日 22時間 19分 4秒
1017 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています