闘え
※前スレ
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/
探検
C vs C++ vs Rust Part.3
レス数が1000を超えています。これ以上書き込みはできません。
2022/01/27(木) 22:19:47.56ID:avZQ9Wm7
2022/01/27(木) 22:28:23.63ID:4DQKoSsj
前スレまでのあらすじ
---
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の質問に答えてから続けてね
---
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の質問に答えてから続けてね
2022/01/27(木) 22:58:22.92ID:37eem+FW
あらすじが全くわからんw
2022/01/27(木) 23:13:49.64ID:cK3g3Gve
彼はこの部分がわからなくて連投していたみたいだから横から補足説明しましょう
> 大雑把に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になりますね
> 大雑把に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になりますね
2022/01/27(木) 23:14:48.99ID:fMPJxSq8
2022/01/27(木) 23:25:15.10ID:iujD8pk9
横から?w
本人だろ、お前w
本人だろ、お前w
2022/01/27(木) 23:31:40.86ID:m/Awlcjw
複製おじさんのいつもの自演です
2022/01/27(木) 23:34:30.76ID:iujD8pk9
次はgoogleで2件しかヒットしない、「プロセス内スケジューラ」については説明してくれw
2022/01/27(木) 23:49:40.45ID:cK3g3Gve
非同期タスク群のスケジューリングをするランタイム部分のことではないでしょうか
一般的にプロセスの中に1つだと各スレッドへタスクを割り振るコストが高くて
各スレッドの中に独立して1つずつだと暇なスレッドと多忙なスレッドが偏るデメリットがあり
GoでもRustでもそれらのスケジューリング問題を改善するために
各スレッド内に独立キューを持って効率的に処理しつつもグローバルキューも備えることで解決しているようですね
一般的にプロセスの中に1つだと各スレッドへタスクを割り振るコストが高くて
各スレッドの中に独立して1つずつだと暇なスレッドと多忙なスレッドが偏るデメリットがあり
GoでもRustでもそれらのスケジューリング問題を改善するために
各スレッド内に独立キューを持って効率的に処理しつつもグローバルキューも備えることで解決しているようですね
2022/01/28(金) 00:05:15.17ID:EpTP27or
複製おじはGoでもRustでもまともに非同期プログラミングやったことないんだな
2022/01/28(金) 00:14:38.44ID:9bCXgVDe
2022/01/28(金) 01:31:02.15ID:DUuAybqk
どうせRustは普及しないんじゃないかな、知らんけど。
2022/01/28(金) 08:21:58.40ID:OuJICsLX
rustはc++を食うことがあってもピュアcを食うことはなさそう
2022/01/28(金) 08:42:08.00ID:3x0JFp6u
Cは誤解を恐れずに言えばアセンブリ言語みたいなもんだからな
2022/01/28(金) 13:14:51.22ID:7T77Q24K
>>13
C++ 98以前は Cと似てるし、ライブラリも言語とは無関係に自由に作れたから大丈夫。C++11以後はダメ言語になった。
C++ 98以前は Cと似てるし、ライブラリも言語とは無関係に自由に作れたから大丈夫。C++11以後はダメ言語になった。
2022/01/28(金) 13:17:06.82ID:7T77Q24K
そもそも、CやC++が普及したのはTurboCのおかげ。
TurboCはライブラリが分かり易かった。
C++11以後、言語もSTLも両方腐っていてTurboCとは全く違うようになり、
人気もがた落ちになった。
TurboCはライブラリが分かり易かった。
C++11以後、言語もSTLも両方腐っていてTurboCとは全く違うようになり、
人気もがた落ちになった。
2022/01/28(金) 15:22:28.01ID:ePoQjqFg
何頓珍漢な事言ってんだこのバカ
2022/01/28(金) 18:58:54.57ID:9bCXgVDe
>>8
OSによるプロセスやOSスレッドのスケジューラではなく
プロセスの中で動くタスクのためのスケジューラ
各言語によって言語機能として備えている場合と外部ライブラリによる場合がある
Rustではその中間の形態で言語機能としてはasync/awaitの枠組みのみ提供
さらに標準ライブラリとしてFutureやWakerなどの必要とする定義のみ提供
実際に動作するスケジューラは外部ライブラリで様々な提供がなされ自作もできる
その他はこのスライドの前半の解説など参照
Rustのasync/awaitとスケジューラの話
https://speakerdeck.com/osuke/rust-async-await
OSによるプロセスやOSスレッドのスケジューラではなく
プロセスの中で動くタスクのためのスケジューラ
各言語によって言語機能として備えている場合と外部ライブラリによる場合がある
Rustではその中間の形態で言語機能としてはasync/awaitの枠組みのみ提供
さらに標準ライブラリとしてFutureやWakerなどの必要とする定義のみ提供
実際に動作するスケジューラは外部ライブラリで様々な提供がなされ自作もできる
その他はこのスライドの前半の解説など参照
Rustのasync/awaitとスケジューラの話
https://speakerdeck.com/osuke/rust-async-await
2022/01/28(金) 21:04:45.07ID:zI6nuxFY
前スレ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も通ったのだが実は落とし穴があることに気付いた
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も通ったのだが実は落とし穴があることに気付いた
2022/01/28(金) 21:49:38.11ID:YDzvJ7+G
元のJSのコードもだけど
await連発すんなよw
await連発すんなよw
2022/01/28(金) 22:11:12.59ID:zI6nuxFY
そのテストサイトに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秒かかってしまい期待と異なり直列に実行されていた
肝心なことを忘れていた
同時に指定値を返せないようなので数値化と足し算の意味はないが遅延時間を知りたかった
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秒かかってしまい期待と異なり直列に実行されていた
肝心なことを忘れていた
2022/01/28(金) 23:09:26.07ID:zI6nuxFY
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秒となり並行に実行された
言語自体に魔法の仕組みはなく自分で明示的にスケジューラに登録指定するのはわかりやすくて安心した
そのスケジューラも手作りできるらしく興味深い
しかし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秒となり並行に実行された
言語自体に魔法の仕組みはなく自分で明示的にスケジューラに登録指定するのはわかりやすくて安心した
そのスケジューラも手作りできるらしく興味深い
2022/01/28(金) 23:23:01.28ID:JUEBwV02
自分でblock_on書かないとRustのasyncは身に付かない
2022/01/28(金) 23:49:49.26ID:zI6nuxFY
>>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する以前に最初からスケジューラの掌の上で踊っていたのであった
じゃないと全体を並行に実行できないもんな
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する以前に最初からスケジューラの掌の上で踊っていたのであった
じゃないと全体を並行に実行できないもんな
2022/01/29(土) 13:58:43.26ID:AW7V4mOd
Rustのasync/awaitはコンパイルされると単純なステートマシンになる
例えばasyncブロック内にfuture1.awaitとfuture2.awaitが順に呼び出されるとする
最初はfuture1をpollする状態でpending中はpendingを返す
そこでreadyになればfuture2をpollする状態へ遷移
そこでもreadyになれば全体としてreadyを返す状態へ遷移
結局スタックレスなコルーチンを実現しているだけなので非常に軽い
例えばasyncブロック内にfuture1.awaitとfuture2.awaitが順に呼び出されるとする
最初はfuture1をpollする状態でpending中はpendingを返す
そこでreadyになればfuture2をpollする状態へ遷移
そこでもreadyになれば全体としてreadyを返す状態へ遷移
結局スタックレスなコルーチンを実現しているだけなので非常に軽い
26デフォルトの名無しさん
2022/01/29(土) 22:23:27.99ID:12259hRt 起動も切替もスレッドより軽くてリソースも喰わないなら
非同期タスクの欠点は何だ?
非同期タスクの欠点は何だ?
2022/01/29(土) 23:26:45.54ID:7irU+4ae
Rustの場合軽量タスクはプリエンプティブじゃないので、変なコーディングすると特定のタスクが実行され続けて、他のタスクがいつまでも実行されないことがある
あとは、OSのスレッドじゃないからスレッドの属性や権限をタスク単位で異なる物にすることはできないとか
あとは、OSのスレッドじゃないからスレッドの属性や権限をタスク単位で異なる物にすることはできないとか
2022/01/29(土) 23:44:38.93ID:AW7V4mOd
>>27
前者は間違えて同期ブロッキングする関数を呼んでブロックしてしまった場合
および長時間ずっと全く非同期関数を呼ばずに計算し続けるか暴走する場合
これらはバグならfixで解決
バグでないなら非同期タスク実行スレッドとは別に専用スレッドを用意して実行できるスケジューラもあるのでそれを利用
前者は間違えて同期ブロッキングする関数を呼んでブロックしてしまった場合
および長時間ずっと全く非同期関数を呼ばずに計算し続けるか暴走する場合
これらはバグならfixで解決
バグでないなら非同期タスク実行スレッドとは別に専用スレッドを用意して実行できるスケジューラもあるのでそれを利用
2022/01/30(日) 00:54:30.09ID:zeCbxF6p
>>28
同じ処理でも入力内容次第で変わるからそんな簡単にいかないよ
同じ処理でも入力内容次第で変わるからそんな簡単にいかないよ
2022/01/30(日) 01:16:02.14ID:iWlFH2We
async-stdならgoみたいにタスクが一定時間経っても制御返してくれないときに勝手にスレッド起こしてくれるんじゃなかったっけ
2022/01/30(日) 18:58:15.77ID:9ei8l7Ku
>>29
入出力が行なわれたらタスクのスイッチングが発生するので
意図的にブロッキングするものを呼んでブロックしているケースを除くと
いつまでもタスクが切り替わらないのは演算のみを延々と続けるケースのみになる
対応策としては自分で定期的に手放すか以下の方法で回避
>>30
それは様々な問題点で中止
結局tokioもasync_stdもそのような特殊ケースはspawn()の代わりにspawn_blocking()することで
タスクのスイッチングに影響が出ないように別スレッドで実行させる方針
その場合は結局スレッドを自分で起動して同期ブロッキングで使う昔からの方法と実質同じだが
そのような特殊なケースも含めて統一的にタスクを扱える
入出力が行なわれたらタスクのスイッチングが発生するので
意図的にブロッキングするものを呼んでブロックしているケースを除くと
いつまでもタスクが切り替わらないのは演算のみを延々と続けるケースのみになる
対応策としては自分で定期的に手放すか以下の方法で回避
>>30
それは様々な問題点で中止
結局tokioもasync_stdもそのような特殊ケースはspawn()の代わりにspawn_blocking()することで
タスクのスイッチングに影響が出ないように別スレッドで実行させる方針
その場合は結局スレッドを自分で起動して同期ブロッキングで使う昔からの方法と実質同じだが
そのような特殊なケースも含めて統一的にタスクを扱える
2022/01/30(日) 20:50:10.05ID:dly2JmLT
>>31
延々と演算を続ける意図はなかったのに結果としてそうなる場合があるということ
それを最初から想定できてyieldを挟めるなら問題ないのだが現実はそうはなっていない
https://tokio.rs/blog/2020-04-preemption
延々と演算を続ける意図はなかったのに結果としてそうなる場合があるということ
それを最初から想定できてyieldを挟めるなら問題ないのだが現実はそうはなっていない
https://tokio.rs/blog/2020-04-preemption
2022/01/30(日) 21:57:34.87ID:C4ZQL08k
そのbudget方式は戻ってこないとペナルティ与えられないから本質的な解決になっていない
yield相当をコンパイラが上手く挟むのも無理だからプログラマーが自らすればいい
yield相当をコンパイラが上手く挟むのも無理だからプログラマーが自らすればいい
2022/01/30(日) 22:13:02.89ID:46YJeJfB
歴史から学ばない人
2022/01/31(月) 00:52:40.26ID:wgfsi16C
歴史ってのがマルチタスクOSにおける cooperative vs preemptive の話だとするなら前提が違いすぎない?
任意のアプリケーションが動く可能性のあるOSと自身のプログラムのルーチンが実行されるアプリとではスケジューラに求められる制約条件は違って然るべきかと
任意のアプリケーションが動く可能性のあるOSと自身のプログラムのルーチンが実行されるアプリとではスケジューラに求められる制約条件は違って然るべきかと
2022/01/31(月) 07:30:22.38ID:qlFEomu1
シングルスレッドかつcooperativeなJavaScriptがNode.jsを含めて成功しているように問題なく動作する
同期ブロッキングを完全排除してしまえばタスク切り替えが起きない場合すなわちスケジューラに戻らない場合は
入出力もなくループでメモリ上演算を繰り返している場合となる
そのような場合でもループ内で自分で定期的にスケジューラへ制御を戻してやればよい
そのためにRustではtask::yield_now()がある
同期ブロッキングを完全排除してしまえばタスク切り替えが起きない場合すなわちスケジューラに戻らない場合は
入出力もなくループでメモリ上演算を繰り返している場合となる
そのような場合でもループ内で自分で定期的にスケジューラへ制御を戻してやればよい
そのためにRustではtask::yield_now()がある
2022/01/31(月) 10:15:42.24ID:O/M0tTc6
イベントループがハングアップした時の対処とか考えたことないでしょ?
バグだからfixすればいいじゃ能がない
歴史に学ぶといいよ
バグだからfixすればいいじゃ能がない
歴史に学ぶといいよ
2022/01/31(月) 10:24:59.23ID:qlFEomu1
>>37
GoやJavaScriptなどは言語内蔵だが問題が起きたことはない
Rustは言語から切り離されているが同様
いずれもそれらのランタイムの製作者以外がその部分のコードを触ることはなくバグが発生しようがない
GoやJavaScriptなどは言語内蔵だが問題が起きたことはない
Rustは言語から切り離されているが同様
いずれもそれらのランタイムの製作者以外がその部分のコードを触ることはなくバグが発生しようがない
2022/01/31(月) 10:27:00.53ID:/Hwves02
2022/01/31(月) 10:46:15.49ID:5QuAHu0k
イベントループがハングアップするってなに?
epoll_waitをブロッキングで使う場合でもタイムアウト設定すればハングアップなんてしないでしょ?
epoll_waitをブロッキングで使う場合でもタイムアウト設定すればハングアップなんてしないでしょ?
2022/01/31(月) 11:35:28.84ID:BNlzdeLS
タイムアウト設定忘れみたいなバグの話でしょ
そんなに引っ張る話でもないと思う
そんなに引っ張る話でもないと思う
2022/01/31(月) 12:52:34.54ID:qlFEomu1
2022/01/31(月) 13:02:21.71ID:dnOSCP4X
> epoll_waitをブロッキングで使う場合でもタイムアウト設定すればハングアップなんてしないでしょ?
の話だぞ?
の話だぞ?
2022/01/31(月) 13:17:00.70ID:wgfsi16C
歴史って言葉持ち出してるんだしそんなしょうもない話じゃなくてもっと有名なエピソードなんじゃないの
2022/01/31(月) 13:24:49.76ID:HGCqFbKg
「Rustのタスクの欠点は?」
「プリエンプティブじゃないところ」
「プログラマーが注意すればいいだけだから問題ない」
「プリエンプティブじゃないところ」
「プログラマーが注意すればいいだけだから問題ない」
2022/01/31(月) 13:35:30.64ID:qlFEomu1
そりゃepollやselect相当を自分で使っていてミスをすればイベントループがハングアップするのは当たり前
しかし非同期タスクのイベントループは非同期スケジューラの中にあって自分でepollやselectを扱わなくてよくなった
だから自分のミスでイベントループがハングアップすることはなくなった
それ以前の歴史では色々あったが状況が変わった
しかし非同期タスクのイベントループは非同期スケジューラの中にあって自分でepollやselectを扱わなくてよくなった
だから自分のミスでイベントループがハングアップすることはなくなった
それ以前の歴史では色々あったが状況が変わった
2022/01/31(月) 13:51:12.77ID:dnOSCP4X
はいはい、理想的な環境で羨ましいですね
これでいいかな?w
これでいいかな?w
2022/01/31(月) 14:52:14.32ID:QZLkrRiL
メモリ開放忘れみたいなバグの話でしょ
そんなに引っ張る話でもないと思う
そんなに引っ張る話でもないと思う
2022/01/31(月) 14:57:56.44ID:wgfsi16C
バグ耐性高めるためにタスクをプリエンプティブにしたいならすれば良いのでは
プログラマーのスタンスに合わせて適切な物を選べるよう選択肢は用意されてると思うが
何について言い争ってるのかよくわからない
プログラマーのスタンスに合わせて適切な物を選べるよう選択肢は用意されてると思うが
何について言い争ってるのかよくわからない
2022/01/31(月) 15:37:58.82ID:UHXhumHV
GoやNode.jsが上手くいってる主因は非同期並行プログラミングのしやすさ
両者は方向性が真逆だけどそこが共通点で時代の要請
逆にC++が振るわないのは非同期並行プログラミングのしにくさ
その状況でRustが登場して非同期並行プログラミングのしやすい環境も装備されたという流れ
両者は方向性が真逆だけどそこが共通点で時代の要請
逆にC++が振るわないのは非同期並行プログラミングのしにくさ
その状況でRustが登場して非同期並行プログラミングのしやすい環境も装備されたという流れ
2022/01/31(月) 18:03:53.30ID:dLpRlGxR
2022/01/31(月) 18:33:21.76ID:fs07R1AL
>>51
そうじゃね?
そうじゃね?
2022/01/31(月) 18:56:25.41ID:UHXhumHV
Node.jsもプリエンプティブではないけど困っていない
タスクがプリエンプティブではないことを欠点だと主張する人は
欠点だという具体的な例を挙げてから主張すべき
タスクがプリエンプティブではないことを欠点だと主張する人は
欠点だという具体的な例を挙げてから主張すべき
2022/01/31(月) 19:02:29.41ID:wgfsi16C
>>51
そうだよ
ここで言うタスクはtokioやasync-stdの用語のタスクのことね
spawn_blockingでタスク生成すれば専用スレッドが割り当てられるので特定のタスク選んでプリエンプティブにできる (OSにタスクスイッチの制御を委譲できる)
そうだよ
ここで言うタスクはtokioやasync-stdの用語のタスクのことね
spawn_blockingでタスク生成すれば専用スレッドが割り当てられるので特定のタスク選んでプリエンプティブにできる (OSにタスクスイッチの制御を委譲できる)
2022/01/31(月) 19:03:44.27ID:wgfsi16C
2022/01/31(月) 19:28:57.02ID:UHXhumHV
>>54
それはレイヤーが違う
まずOSスレッドは何をしようが常にプリエンプティブ
だからOSスレッド上で動いているタスクも途中で一時中断されたり再開されたりしうる
だからといってタスクをプリエンプティブだと言わないのはタスクの階層で話をしているため
タスクスケジューラに制御を戻さない限り他のタスクに切り替わらないため「プリエンプティブではない」と言われる
次にspawn_blockingで起動されるのもタスクの一つ
だからタスクスケジューラが管理するスレッドの中で動く
それがspawnだと一つのスレッドに対するキューに複数のタスクが割り当てられる
一方でspawn_blockingは一つのスレッドに対するキューにそのタスクのみが割り当てられる
それだけの違いであり両者ともにタスクスケジューラの管理下にあるタスクである
もちろん動作中も終了後もタスクとして同じ扱い
つまりspawn_blockingはプリエンプティブにするものではない
同じタスクでありスタックレスなコルーチンであることも同じ
>>55
その意見は成立していない
それはレイヤーが違う
まずOSスレッドは何をしようが常にプリエンプティブ
だからOSスレッド上で動いているタスクも途中で一時中断されたり再開されたりしうる
だからといってタスクをプリエンプティブだと言わないのはタスクの階層で話をしているため
タスクスケジューラに制御を戻さない限り他のタスクに切り替わらないため「プリエンプティブではない」と言われる
次にspawn_blockingで起動されるのもタスクの一つ
だからタスクスケジューラが管理するスレッドの中で動く
それがspawnだと一つのスレッドに対するキューに複数のタスクが割り当てられる
一方でspawn_blockingは一つのスレッドに対するキューにそのタスクのみが割り当てられる
それだけの違いであり両者ともにタスクスケジューラの管理下にあるタスクである
もちろん動作中も終了後もタスクとして同じ扱い
つまりspawn_blockingはプリエンプティブにするものではない
同じタスクでありスタックレスなコルーチンであることも同じ
>>55
その意見は成立していない
2022/01/31(月) 19:56:01.95ID:wgfsi16C
2022/01/31(月) 21:28:17.75ID:L8OnQfxN
2022/01/31(月) 22:11:33.46ID:qlFEomu1
2022/01/31(月) 22:59:08.63ID:UPbAych9
Rustってデータ競合を許さない、ってあたりが並列処理とめちゃくちゃ相性良いように見えるけど、
まだそういうスケジューラとか非同期ランタイムらへんの仕組みがちっとも枯れてないんだね
将来のデファクトがどうなりそうか、ってのはある程度見えてきてるのかな?
まだそういうスケジューラとか非同期ランタイムらへんの仕組みがちっとも枯れてないんだね
将来のデファクトがどうなりそうか、ってのはある程度見えてきてるのかな?
2022/01/31(月) 23:10:00.73ID:9ggC0jgK
>>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/
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/
2022/01/31(月) 23:16:15.33ID:UHXhumHV
2022/01/31(月) 23:18:46.34ID:9ggC0jgK
2022/01/31(月) 23:21:44.46ID:9ggC0jgK
Node.jsはタスク単位で高い信頼性が求められるシステムでは使われない
イベントループがブロックしたら他のタスクを道連れにしてプロセス丸ごと再起動する以外に対処法がないから
それもexecution managerできちんとモニタリングしてればの話
JSやNodeとRustとはポジショニングが違う
イベントループがブロックしたら他のタスクを道連れにしてプロセス丸ごと再起動する以外に対処法がないから
それもexecution managerできちんとモニタリングしてればの話
JSやNodeとRustとはポジショニングが違う
2022/01/31(月) 23:28:55.88ID:qlFEomu1
2022/01/31(月) 23:47:16.39ID:UHXhumHV
>>64
Node.jsまで否定し始めるとは発狂もほどほどに
Node.jsまで否定し始めるとは発狂もほどほどに
2022/02/01(火) 01:18:54.05ID:NlOJHFhB
68デフォルトの名無しさん
2022/02/01(火) 09:02:19.73ID:YxH4csZd 昔は標準で出来たのに「そういうのはライブラリでやればいい」って嘯きながら削除して、そのあと一生それが出来る標準ライブラリが登場しないいつものRust
2022/02/01(火) 14:23:13.43ID:fJKShZ3h
>>67
Cで実装できることはRustでも実装できる
もちろんRustにもプリエンプティブなスケジューラは存在する
Rustで書かれたプリエンプティブなリアルタイムOSもある
>>68
Rust標準にプリエンプティブなタスクであるグリーンスレッドがあったのは
Rust 1.0が正式リリース(2015年)となる以前Rust 〜0.9 の試行している時代
しかし重厚となりベアメタルもターゲットとするRustでは不適なため放棄
例えばGoの方法だと巨大なランタイムや個別スタックが必要など
そのためRust標準ではスタックレスで軽いタスクを提供
さらに加えてasync/awaitもサポートし現在の軽く便利な環境となった
Cで実装できることはRustでも実装できる
もちろんRustにもプリエンプティブなスケジューラは存在する
Rustで書かれたプリエンプティブなリアルタイムOSもある
>>68
Rust標準にプリエンプティブなタスクであるグリーンスレッドがあったのは
Rust 1.0が正式リリース(2015年)となる以前Rust 〜0.9 の試行している時代
しかし重厚となりベアメタルもターゲットとするRustでは不適なため放棄
例えばGoの方法だと巨大なランタイムや個別スタックが必要など
そのためRust標準ではスタックレスで軽いタスクを提供
さらに加えてasync/awaitもサポートし現在の軽く便利な環境となった
2022/02/01(火) 15:14:51.45ID:7ZSm+F9e
あと5年寝かせれば使えるようになるかな
2022/02/01(火) 15:26:14.30ID:0bEAn4zq
別に今でもasync-stdを使えばええんちゃうか?
2022/02/01(火) 15:54:32.70ID:aP+3H5wQ
2022/02/01(火) 16:14:56.52ID:fJKShZ3h
2022/02/01(火) 17:44:48.05ID:IGt6++7z
75デフォルトの名無しさん
2022/02/01(火) 23:44:18.44ID:rLXhSAw+ 話題になってる分野だとC++が惨敗すぎて
Rustの話題一色になってしまってる感じ
Rustの話題一色になってしまってる感じ
2022/02/02(水) 00:32:45.41ID:Bknypv+c
C++が落ち目なのはまっとうなエンジニアの間では共通認識だろ
2022/02/02(水) 02:30:31.45ID:YscELMZC
変な拡張し杉てワケワカになってきてるよな
78デフォルトの名無しさん
2022/02/02(水) 11:27:34.63ID:jvlsF+ng 変な拡張を使わなければ良いだけでは? 使いこなせないのを使えなとは言わない。
2022/02/02(水) 14:23:10.98ID:X76n4047
RustがGo位の位置にたどり着くのは、あと何年かかるかね
2022/02/02(水) 15:00:57.22ID:O+j3A95O
GoはWebとかのアプリケーションでカジュアルに使われるようになってきたから、使う人数もかなり多くなってきたけど、
Rustはそういうポジションにつくことないだろうから、現在のGoほどの人気になることはないんじゃない?
RustはC/C++のシェアを塗り替えていく程度だろうけど、そういう低レイヤーでは最強言語になりそう
Rustはそういうポジションにつくことないだろうから、現在のGoほどの人気になることはないんじゃない?
RustはC/C++のシェアを塗り替えていく程度だろうけど、そういう低レイヤーでは最強言語になりそう
2022/02/02(水) 15:03:25.91ID:6tF6MeYL
RustがTIOBE Indexに出てくるのはいつなんだろう?w
https://i.imgur.com/DNijd0h.jpg
https://i.imgur.com/DNijd0h.jpg
2022/02/02(水) 22:30:37.00ID:yDHN0aKU
言語機能としてはC++が完敗だから
過去遺産しか誇るものがない
過去遺産しか誇るものがない
2022/02/02(水) 22:35:52.80ID:/PkFuWcg
何言ってんだこのバカ
2022/02/02(水) 22:46:31.08ID:J71gX0gE
シェアもユーザー数も過去遺産と言われてしまえばそうだが
そんなことは興味がないのでC++での非同期並行プログラミングについても語って欲しい
そんなことは興味がないのでC++での非同期並行プログラミングについても語って欲しい
2022/02/03(木) 16:11:01.01ID:VWdjVpzZ
C++の非同期っていうとstd::asyncとか?
2022/02/03(木) 17:48:17.26ID:rBa0lj+C
>>81
今26位で、Kotlin, Lua, Scalaとかより上なんだが
今26位で、Kotlin, Lua, Scalaとかより上なんだが
2022/02/03(木) 17:52:10.90ID:6/rx3Wgr
>>86
COBOLより下なんかwwwww
COBOLより下なんかwwwww
2022/02/03(木) 18:30:47.00ID:VWdjVpzZ
KotlinやScalaは結局流行らずJavaで十分だし
Luaも一時期熱狂したけど記法や環境が多くの人の好みに合わずPerlのように嫌われてる
RustもC/C++で十分という認識が強くて普及せずに一部の通好みに終わる可能性がある
Rustは有力企業もプッシュしてるけど三つの言語の流行らない特徴を全て備えてる
そうこうしてるうちにRustより優れた言語がぽっとでて席巻する未来だってある
Luaも一時期熱狂したけど記法や環境が多くの人の好みに合わずPerlのように嫌われてる
RustもC/C++で十分という認識が強くて普及せずに一部の通好みに終わる可能性がある
Rustは有力企業もプッシュしてるけど三つの言語の流行らない特徴を全て備えてる
そうこうしてるうちにRustより優れた言語がぽっとでて席巻する未来だってある
2022/02/03(木) 18:38:00.04ID:I6DodtQJ
流行るの閾値高くない?
何位以上になったら満足なんだ
何位以上になったら満足なんだ
2022/02/03(木) 18:48:22.27ID:Y+zgwr9T
普通にTop10じゃね?
2022/02/03(木) 18:51:38.73ID:OQgvAcI9
しかしTop10のVisualBasicやアセンブリが流行ってるとか言われてもあまり納得感はないな…
2022/02/03(木) 19:08:22.03ID:Ajxf7YAY
TIOBEってトレンドを計測してるわけじゃなくて、あくまで検索エンジンで検索結果のヒット数が多かったランキングだからな
CとかVBみたいに昔から一定の人気を保ち続けてるような言語がランキング高くなりやすいんじゃないかな
CとかVBみたいに昔から一定の人気を保ち続けてるような言語がランキング高くなりやすいんじゃないかな
2022/02/03(木) 19:24:04.62ID:I6DodtQJ
GitHub上の活動に基づいたランキングの方がプログラマ間の流行を知るには良いのかな
https://madnight.github.io/githut/#/pull_requests/2021/4
https://madnight.github.io/githut/#/pull_requests/2021/4
2022/02/03(木) 19:40:42.80ID:NxnOaIbO
せやな
TIOBEはJavaScriptとアセンブラが隣の順位に並んでるとかおかしすぎるやろ
TIOBEはJavaScriptとアセンブラが隣の順位に並んでるとかおかしすぎるやろ
2022/02/03(木) 21:31:55.43ID:8HqROgrm
>>88
Scalaも当時は熱狂的なファンがいたよなw
Scalaも当時は熱狂的なファンがいたよなw
2022/02/03(木) 21:44:00.20ID:OJ3iv254
ScalaはJVMベースだという点以外は特に悪いところは無いと思うんだが
2022/02/03(木) 23:27:45.66ID:VxNIdQ9k
コラッツ関数を上手く実装できないかな
2022/02/04(金) 00:31:37.55ID:tMDf8XuC
>>93
githubはアマチュアプログラマも沢山混じってる。
日経の調査ではプロのプログラマで最も使われている言語はC/C++だとされている。
なお、githubでも、CとC++を合算すると、9.82%、Rustは 0.694%で、
14.1倍の差がある。
githubはアマチュアプログラマも沢山混じってる。
日経の調査ではプロのプログラマで最も使われている言語はC/C++だとされている。
なお、githubでも、CとC++を合算すると、9.82%、Rustは 0.694%で、
14.1倍の差がある。
2022/02/04(金) 00:34:29.27ID:uF1Qc9S6
>>98
C vs C++でもあるんだから足したらだめでしょ
C vs C++でもあるんだから足したらだめでしょ
100デフォルトの名無しさん
2022/02/04(金) 00:35:47.48ID:tMDf8XuC >>91
VisualBasicは結構使われているのではなかろうか。Excelなどで。
アセンブリは、基礎的なライブラリを作る人や組み込み、OS、BIOS
を作ったり、グラフィックや数値計算の高速化を行う場合に必要な場合がある。
VisualBasicは結構使われているのではなかろうか。Excelなどで。
アセンブリは、基礎的なライブラリを作る人や組み込み、OS、BIOS
を作ったり、グラフィックや数値計算の高速化を行う場合に必要な場合がある。
101デフォルトの名無しさん
2022/02/04(金) 00:36:35.60ID:tMDf8XuC102デフォルトの名無しさん
2022/02/04(金) 00:44:19.25ID:uF1Qc9S6 >>101
いやいや、スレタイ通りこのスレではCとC++は対立する物として区別すべき
いやいや、スレタイ通りこのスレではCとC++は対立する物として区別すべき
103デフォルトの名無しさん
2022/02/04(金) 00:45:03.38ID:zhkygWhI 今どき言語マウントするやつは
メンタルも技術力もアマチュア
メンタルも技術力もアマチュア
104デフォルトの名無しさん
2022/02/04(金) 00:47:42.81ID:tMDf8XuC C++はCを基礎にしてるくせに、Cに歯向かって宿主を殺してしまう寄生虫みたいな
ことになってるからな。
ことになってるからな。
105デフォルトの名無しさん
2022/02/04(金) 05:41:15.73ID:3M0ClPfa いまのc++の拡張がな
autoとラムダとdecltypeくらいでやめときゃいいのにあとでボツになりそうな仕様までモリモリに盛りやがって下手したらobjective-cみたいになりそう
なのにいまだにpropertyも実装されてないとか
autoとラムダとdecltypeくらいでやめときゃいいのにあとでボツになりそうな仕様までモリモリに盛りやがって下手したらobjective-cみたいになりそう
なのにいまだにpropertyも実装されてないとか
106デフォルトの名無しさん
2022/02/04(金) 06:48:54.05ID:GRC0hKFU conceptsは許せる
107デフォルトの名無しさん
2022/02/04(金) 08:29:55.22ID:rPvrWkyY108デフォルトの名無しさん
2022/02/04(金) 08:53:37.86ID:O81zVfQh 色々理解できない機能が増えて辛いんだろw
109デフォルトの名無しさん
2022/02/04(金) 09:58:17.78ID:nTZc+xED conceptはむしろ必須だろうよ
110デフォルトの名無しさん
2022/02/04(金) 10:06:51.33ID:xcjLhLWs C++11移行では、変数定義で、
TYPE a = b;
の形式が非推奨で、
TYPE a{b};
が推奨になった。
これは、C/C++の今までの伝統を全否定している。
C++11以後は、宿主を殺すウイルス的な存在に成り下がった一例。
TYPE a = b;
の形式が非推奨で、
TYPE a{b};
が推奨になった。
これは、C/C++の今までの伝統を全否定している。
C++11以後は、宿主を殺すウイルス的な存在に成り下がった一例。
111デフォルトの名無しさん
2022/02/04(金) 11:28:12.62ID:i2fLUlAL112デフォルトの名無しさん
2022/02/04(金) 11:33:17.83ID:O81zVfQh >>110 みたいな爺さんは書き方変わるだけでアタフタw
113デフォルトの名無しさん
2022/02/04(金) 12:53:41.07ID:6YwPoRaj114デフォルトの名無しさん
2022/02/04(金) 12:55:43.71ID:m8EcUnam コンパイラ都合じゃね?知らんけど
115デフォルトの名無しさん
2022/02/04(金) 14:18:18.78ID:vKz9Nbsj >>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が駄目な部分の一つ。
オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を
決定することになるが、初期化子には次の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が駄目な部分の一つ。
116デフォルトの名無しさん
2022/02/04(金) 14:21:57.65ID:vKz9Nbsj >>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が駄目な部分の一つ。
[誤字訂正版]
オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を
決定することになるが、初期化子には次の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が駄目な部分の一つ。
117デフォルトの名無しさん
2022/02/04(金) 14:40:30.04ID:MGyBlJhW ふーん、レガシー言語は大変だね
118デフォルトの名無しさん
2022/02/04(金) 14:44:09.08ID:vKz9Nbsj Rustはもっと最悪に汚い。
C++の最大の欠点は、仕様が難しいことに有るが、
Rustはさらに仕様が難しい。
よって、RustはC++をさらに悪くしたと言えて、改良には全くなってない。
C++の最大の欠点は、仕様が難しいことに有るが、
Rustはさらに仕様が難しい。
よって、RustはC++をさらに悪くしたと言えて、改良には全くなってない。
119デフォルトの名無しさん
2022/02/04(金) 14:54:48.13ID:WO7o5PWJ ふーん、レガシー脳は大変だね
120デフォルトの名無しさん
2022/02/04(金) 14:59:52.64ID:vKz9Nbsj >>119
馬鹿は黙ってろ。
馬鹿は黙ってろ。
121デフォルトの名無しさん
2022/02/04(金) 15:11:33.72ID:dFWqGnrm つまり仕様が簡単な方が良いということ?
122デフォルトの名無しさん
2022/02/04(金) 15:17:49.19ID:wTfQ05na >>119
ばーかw
ばーかw
123デフォルトの名無しさん
2022/02/04(金) 16:13:01.17ID:sAwXze1R 効きすぎだろwww
124デフォルトの名無しさん
2022/02/04(金) 16:23:37.19ID:J8iEhnuL c++は(ランタイム速度落とさなくても)できらぁ!ってなったらとりあえず入れるからな。
ある意味とてもガキくさいがそれはそれでありなポジションに到達してる気はする。
ある意味とてもガキくさいがそれはそれでありなポジションに到達してる気はする。
125デフォルトの名無しさん
2022/02/04(金) 20:04:05.51ID:JLdS+NWr そんな凄いんだったらもっと普及してるよねRust
でも現実はブビにもコボルにも負けてる泡沫言語
でも現実はブビにもコボルにも負けてる泡沫言語
126デフォルトの名無しさん
2022/02/04(金) 20:40:31.16ID:b3SZZj/4 単純に新しい言語だから累積となるユーザ数でまだ不利なだけ
2019年11月のasync導入で非同期プログラミングがまともに使えるようになってまだ2年余り
Linux OSのようにC++を頑なに拒否していたプロジェクトでもRustは受け入れられたように
C++に未来はないがRustには未来がある
2019年11月のasync導入で非同期プログラミングがまともに使えるようになってまだ2年余り
Linux OSのようにC++を頑なに拒否していたプロジェクトでもRustは受け入れられたように
C++に未来はないがRustには未来がある
127デフォルトの名無しさん
2022/02/04(金) 20:44:24.76ID:JLdS+NWr 最後間違い
C++に未来はないがRustも未来はない
C++に未来はないがRustも未来はない
128デフォルトの名無しさん
2022/02/04(金) 20:49:40.24ID:jGBmcDmC 日本は先進国の技術トレンドから5年以上遅れてるからね
129デフォルトの名無しさん
2022/02/04(金) 20:53:24.16ID:rIsLZ1dN C++erはレガシー脳が多いから
いい意味でのレガシーね
オリンピックレガシーみたいなw
いい意味でのレガシーね
オリンピックレガシーみたいなw
130デフォルトの名無しさん
2022/02/04(金) 20:54:41.42ID:aq7ZCAbr C++はあんなみすぼらしいラムダ式用意して哀れやわ
貧乏の家の子が自家製ボタモチもって突っ立ってるようやわ
貧乏の家の子が自家製ボタモチもって突っ立ってるようやわ
131デフォルトの名無しさん
2022/02/04(金) 21:01:52.67ID:JLdS+NWr Rustやってる奴は現状アーリーアダプターで普及するにしてもまだ年月掛かると思う
んでその間にまた新しい言語が開発されみんなそっちに移って行くと
んでその間にまた新しい言語が開発されみんなそっちに移って行くと
132デフォルトの名無しさん
2022/02/04(金) 21:06:34.54ID:3IKuZnie 新しい言語はどんな問題解決してくれるんだろうな
動的型付けが復権するんだろうか
動的型付けが復権するんだろうか
133デフォルトの名無しさん
2022/02/04(金) 21:15:25.28ID:V2NB9pIC >>131
アーリーアダプターは数年前の時期
今は大手IT各社GAFAMがRustに本腰
プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebook(現Meta)が「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
アーリーアダプターは数年前の時期
今は大手IT各社GAFAMがRustに本腰
プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebook(現Meta)が「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
134デフォルトの名無しさん
2022/02/04(金) 22:59:18.87ID:ckxp+S+3135デフォルトの名無しさん
2022/02/05(土) 01:30:11.76ID:6GVIsHGT SNS見てる限り、若い人でも人気は Rust より C/C++ の圧勝。
136デフォルトの名無しさん
2022/02/05(土) 02:39:36.18ID:ye9/tceq 大学の課題とかはまあC/C++よね
137デフォルトの名無しさん
2022/02/05(土) 06:15:36.04ID:LYyRCemg >>133
RustはVisual studioでデフォルトで選択できるようになったら普及するだろうな
RustはVisual studioでデフォルトで選択できるようになったら普及するだろうな
138デフォルトの名無しさん
2022/02/05(土) 09:06:42.96ID:E0droKIF 北京五輪と東京五輪の開会式をプログラミングで例えるとどうなるやろ?
139デフォルトの名無しさん
2022/02/05(土) 16:44:42.87ID:bofW+oE9 そのまま普通に
東京五輪 Rust
北京五輪 C++
東京五輪 Rust
北京五輪 C++
140デフォルトの名無しさん
2022/02/05(土) 17:35:54.33ID:O/WKZnIq 東京五輪 FAMILY-BASIC
141138
2022/02/06(日) 17:01:26.43ID:LMR3oS4I ちょっとセンシティブな話だったか
与太話と思ってスルーしてくれ
すまんかった
与太話と思ってスルーしてくれ
すまんかった
142デフォルトの名無しさん
2022/02/10(木) 11:18:14.49ID:sUV8whwi143デフォルトの名無しさん
2022/02/10(木) 11:25:47.65ID:ylUFM8HS Rust 拝金主義
C++ ハイキング
C++ ハイキング
144デフォルトの名無しさん
2022/02/10(木) 20:10:06.55ID:9RAaYAUg RustはC,C++を駆逐すると思う。アレに拘泥する理由はない。
145デフォルトの名無しさん
2022/02/10(木) 21:00:13.02ID:ylUFM8HS HighKingの至高の頂に座居するC++に勝てると本気で思っているのかね
146デフォルトの名無しさん
2022/02/10(木) 21:47:05.33ID:o2ECnsWv147デフォルトの名無しさん
2022/02/10(木) 21:50:08.15ID:dDg7TD3H ジワジワと侵食して気が付いたらいつの間にか利用していたって広がり方するんだろうな
148デフォルトの名無しさん
2022/02/10(木) 21:51:34.38ID:9RAaYAUg >>116
これ見てクソ言語だなって思わないヤツいるのかね。
これ見てクソ言語だなって思わないヤツいるのかね。
149デフォルトの名無しさん
2022/02/10(木) 21:53:35.73ID:LnXBonLg >>116
なんでこんな言語が使われるようになったんや?
なんでこんな言語が使われるようになったんや?
150デフォルトの名無しさん
2022/02/10(木) 23:38:10.62ID:o2ECnsWv151デフォルトの名無しさん
2022/02/10(木) 23:40:02.53ID:TPkaON1O152デフォルトの名無しさん
2022/02/11(金) 01:30:20.07ID:ieudecgp >>149
C++が最初に使われ始めたころは、T a{b}のような記法はなく、
C++11で登場した。
使われ始めたころのC++はCの後継として丁度良いと思われるようなもので
あって、>>116のような変な仕様は入ってなかった。
最初は良かったが、後を突いていくと時々「え?」と思うような仕様が入り込み、
C++11で如実になった。
・templateの仕様も「え?」と思うことが多いものだった。
Stroustrap氏によれば、高速化に重点を置いて導入されたものらしいから、
分かり易さは犠牲になっているようだが、それにしても分かりにくいことが多い。
・C++にはライブラリが無かったので、C++11で導入されたが、それが
賛否の分かれるもので、恐らく6割くらいの人には質が悪く感じるものであった。
C++が最初に使われ始めたころは、T a{b}のような記法はなく、
C++11で登場した。
使われ始めたころのC++はCの後継として丁度良いと思われるようなもので
あって、>>116のような変な仕様は入ってなかった。
最初は良かったが、後を突いていくと時々「え?」と思うような仕様が入り込み、
C++11で如実になった。
・templateの仕様も「え?」と思うことが多いものだった。
Stroustrap氏によれば、高速化に重点を置いて導入されたものらしいから、
分かり易さは犠牲になっているようだが、それにしても分かりにくいことが多い。
・C++にはライブラリが無かったので、C++11で導入されたが、それが
賛否の分かれるもので、恐らく6割くらいの人には質が悪く感じるものであった。
153デフォルトの名無しさん
2022/02/11(金) 07:42:26.56ID:KbgZfaat www.mercari.com/jp/search/?keyword=hr400p
こういう安い中古チューナ買って、Coinyをスカパープレミアム放送のICカード化して、
スカパープレミアムのチャンネル全部見れるし、USB HDDに録画フリー。
【avoCADO】 Coiny card Part4【仮想通貨】
https://mevius.5ch.net/test/read.cgi/avi/1640762750/
こういう安い中古チューナ買って、Coinyをスカパープレミアム放送のICカード化して、
スカパープレミアムのチャンネル全部見れるし、USB HDDに録画フリー。
【avoCADO】 Coiny card Part4【仮想通貨】
https://mevius.5ch.net/test/read.cgi/avi/1640762750/
154デフォルトの名無しさん
2022/02/11(金) 11:09:11.39ID:X1ujBpuJ C++は必要な機能だけ使ってれば問題ないことが多いが、
コンパイルエラーメッセージがやばすぎる
まともな言語とは言えない
コンパイルエラーメッセージがやばすぎる
まともな言語とは言えない
155デフォルトの名無しさん
2022/02/11(金) 11:36:27.12ID:08JP5jFO アレは読むんじゃない
詠むんだ
詠むんだ
156デフォルトの名無しさん
2022/02/11(金) 11:39:59.37ID:MSfgatap >>154
逆にRustのコンパイラのエラーメッセージは手厚く至れり尽くせりで感度もの
逆にRustのコンパイラのエラーメッセージは手厚く至れり尽くせりで感度もの
157デフォルトの名無しさん
2022/02/12(土) 01:52:06.05ID:ct0ZlJaB >>154
C++は、学者がtemplateメタプログラミング関連などの理論的な正しさを
見せびらかしているだけの様な気がするよ。
「ほら、これでメタプログラミングができるだろ、俺の理論の正しさがわかったか」
みたいに。
C++は、学者がtemplateメタプログラミング関連などの理論的な正しさを
見せびらかしているだけの様な気がするよ。
「ほら、これでメタプログラミングができるだろ、俺の理論の正しさがわかったか」
みたいに。
158デフォルトの名無しさん
2022/02/12(土) 01:53:21.86ID:ct0ZlJaB ただ、だからといってRustがその代わりになるということではない。
RustはRustでC++以上に問題を入れ込んでしまった。
これもまた机上の空論の様な言語。
RustはRustでC++以上に問題を入れ込んでしまった。
これもまた机上の空論の様な言語。
159デフォルトの名無しさん
2022/02/12(土) 09:46:16.21ID:nCAwro3+ >>158
机上の空論でない言語は何よ?
机上の空論でない言語は何よ?
160デフォルトの名無しさん
2022/02/12(土) 10:21:13.78ID:ZjQpgox3 アセンブラとC言語
使わないけどFORTRANとCOBOLもそうかな
使わないけどFORTRANとCOBOLもそうかな
161デフォルトの名無しさん
2022/02/12(土) 10:44:19.07ID:lHDa3hl7 >>160
ADAは?
ADAは?
162デフォルトの名無しさん
2022/02/12(土) 11:06:25.45ID:4ZF6L5uh163デフォルトの名無しさん
2022/02/12(土) 11:24:57.04ID:ZjQpgox3 >>161
Ada は(少なくとも出た当時は)けっこう机上の空論ぽい機能てんこ盛りだった
Ada は(少なくとも出た当時は)けっこう机上の空論ぽい機能てんこ盛りだった
164デフォルトの名無しさん
2022/02/12(土) 11:27:00.51ID:nCAwro3+ Cは貧弱すぎだろう。いまさらmallocとか書く気もおきん。
165デフォルトの名無しさん
2022/02/12(土) 12:03:28.21ID:yRIrPLWC >>158
C++の問題よりはマシだろ
C++の問題よりはマシだろ
166デフォルトの名無しさん
2022/02/12(土) 12:07:09.85ID:XghCcbPA 前にこれをC++スレかどっかで発言したら結構叩かれたけど
C++って結局はテンプレートが言語の真ん中にあるよな
他の言語色々やった上であらためてC++見ると俺にはそう見える
一応マルチパラダイム言語だからC++しかやったことない人は
テンプレートだけをフォーカスされるのは不服っぽいけど
C++って結局はテンプレートが言語の真ん中にあるよな
他の言語色々やった上であらためてC++見ると俺にはそう見える
一応マルチパラダイム言語だからC++しかやったことない人は
テンプレートだけをフォーカスされるのは不服っぽいけど
167デフォルトの名無しさん
2022/02/12(土) 12:08:32.56ID:v8ccrYYP テンプレートは強力だよな
168デフォルトの名無しさん
2022/02/12(土) 12:12:41.52ID:XghCcbPA Cではちょっとしんどいです
いろんなコンテナ使いたいです
そんとき型をパラメータ化したいです
ハゲ「テンプレートでみんな幸せ」
C++er「やったぜ」
C++規格の関係者「いろいろ仕様につっこんだぜ!」
C++er「あっはい」
いろんなコンテナ使いたいです
そんとき型をパラメータ化したいです
ハゲ「テンプレートでみんな幸せ」
C++er「やったぜ」
C++規格の関係者「いろいろ仕様につっこんだぜ!」
C++er「あっはい」
169デフォルトの名無しさん
2022/02/12(土) 12:42:37.24ID:Wnw3K02J170デフォルトの名無しさん
2022/02/12(土) 13:44:38.22ID:v8+/CWv5 Rustでバブルソート書いてみたがすげー書きやすいな
食わず嫌いだったかもしれん
コンパイルエラーがめっちゃわかりやすい
食わず嫌いだったかもしれん
コンパイルエラーがめっちゃわかりやすい
171デフォルトの名無しさん
2022/02/12(土) 13:57:38.37ID:w2XePdCb ほんとかよw
172デフォルトの名無しさん
2022/02/12(土) 14:50:46.51ID:wXyEGH3A バブルソートw
173デフォルトの名無しさん
2022/02/12(土) 15:04:29.49ID:kx8mtXuQ バブルソートw
笑うとこかよ
笑うとこかよ
174デフォルトの名無しさん
2022/02/12(土) 15:45:26.65ID:yRIrPLWC 確かにエラーは笑っちゃうくらい親切だわな
175デフォルトの名無しさん
2022/02/12(土) 16:16:36.29ID:zOhO24og rustのエラー報告は全てのプログラミング言語で最高の親切さだと思う
他の言語がサボりすぎなんだよな
rust書くと他の言語かけなくなる
他の言語がサボりすぎなんだよな
rust書くと他の言語かけなくなる
176デフォルトの名無しさん
2022/02/12(土) 16:54:42.98ID:zd9UI5Og そんなバブルソートバカにせんでもよかろうに
大学一年で最初の方に習うし、初めての言語触るにはまあまあ良い題材では
大学一年で最初の方に習うし、初めての言語触るにはまあまあ良い題材では
177デフォルトの名無しさん
2022/02/12(土) 17:44:36.13ID:91xKDv7O 少しいじってcombソートにしたらクイックソートにもひけをとらないしな。
178デフォルトの名無しさん
2022/02/12(土) 17:55:38.68ID:nCAwro3+ Rustで双方向リストをマージソートでソートするとかだとめんどくさいことになる気がする
179デフォルトの名無しさん
2022/02/12(土) 18:09:42.02ID:REfvKUVO バブルソートがすげー書きやすいってどのへんが?
逆にそんなもん書きにくい言語なんてあるの?
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に準拠
逆にそんなもん書きにくい言語なんてあるの?
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に準拠
180デフォルトの名無しさん
2022/02/12(土) 18:12:12.77ID:/iL1/Dd6181デフォルトの名無しさん
2022/02/12(土) 18:34:19.97ID:v8ccrYYP >>180
同意
同意
182デフォルトの名無しさん
2022/02/12(土) 19:15:40.31ID:1IxSArcj バブルソートは理解が難しいわりに現実に使われんのがな。
それだったらクイックソートをだな。
それだったらクイックソートをだな。
183デフォルトの名無しさん
2022/02/12(土) 19:50:02.51ID:ZjQpgox3184デフォルトの名無しさん
2022/02/12(土) 19:53:57.23ID:772ADf0k >>183
頭の良さは人それぞれなんだから馬鹿にしない
頭の良さは人それぞれなんだから馬鹿にしない
185デフォルトの名無しさん
2022/02/12(土) 21:02:43.90ID:kBzBXJs5 ダブルアレイは原理が簡単にもかかわらず、十分バグが取れるまでずいぶん時間がかかった。
186デフォルトの名無しさん
2022/02/12(土) 23:07:39.79ID:wXyEGH3A CPU時間をたらふく使うバブリーなソートだよな
187デフォルトの名無しさん
2022/02/12(土) 23:55:25.98ID:x20bdFcp >>180
Rustはコンパイラが出すエラーメッセージが詳しすぎて解決案まで示唆してくれたり親切すぎる
他のコンパイラ言語だけでなくインタプリタ言語まで広げても一番親切なプログラミング言語システムだと断言できる
Rustはコンパイラが出すエラーメッセージが詳しすぎて解決案まで示唆してくれたり親切すぎる
他のコンパイラ言語だけでなくインタプリタ言語まで広げても一番親切なプログラミング言語システムだと断言できる
188デフォルトの名無しさん
2022/02/12(土) 23:56:38.45ID:zNyDeBid まあC++にテンプレートないならそこまで使わんわな
189デフォルトの名無しさん
2022/02/13(日) 01:14:02.16ID:z8C8/2EV Stroustrup氏の脳内では、テンプレートの目標が高速化であるということなのが
問題の始まりの気がする。
問題の始まりの気がする。
190デフォルトの名無しさん
2022/02/13(日) 01:20:30.65ID:z8C8/2EV マクロ=高速化用途で使われているもの
という見方が如何にも実用プログラムを書いたことの少ない学者だと思う。
という見方が如何にも実用プログラムを書いたことの少ない学者だと思う。
191デフォルトの名無しさん
2022/02/13(日) 09:42:52.30ID:LKJBNTq1 C++からテンプレート取ったらなにも残らない
192デフォルトの名無しさん
2022/02/13(日) 09:51:25.60ID:0Lo3ZZ1+ いや残るだろ
193デフォルトの名無しさん
2022/02/13(日) 10:12:41.48ID:jQxqAel+ STLなくなっちゃう
194デフォルトの名無しさん
2022/02/13(日) 10:25:11.79ID:yoBtg/nD >>186
その代わりメモリーは使わないから貧乏な俺でも使える
その代わりメモリーは使わないから貧乏な俺でも使える
195デフォルトの名無しさん
2022/02/14(月) 23:17:34.32ID:T9mSH3bb196デフォルトの名無しさん
2022/02/15(火) 00:19:44.75ID:kCmeQXW/ >>151
デマは辞めようね
デマは辞めようね
197デフォルトの名無しさん
2022/02/15(火) 00:24:28.01ID:tssMbTRA >>195
同意
同意
198デフォルトの名無しさん
2022/02/15(火) 07:23:31.22ID:A9ZkwK3T199デフォルトの名無しさん
2022/02/15(火) 07:51:21.06ID:aaenmMxg 言語として所有権の概念がないからその辺りの指摘はしないけどVS2022のC#も結構色々提案してくれるぞ
200デフォルトの名無しさん
2022/02/15(火) 09:28:59.50ID:CNcLOkDE このながれでこれを言う意味なんてないけど
わかるやつだけわかってくれたらいいんだけど
Rustのコンパイラ昔は酷かったよな
無慈悲なボローチェッカと戦ってたよな(´;ω;`)
わかるやつだけわかってくれたらいいんだけど
Rustのコンパイラ昔は酷かったよな
無慈悲なボローチェッカと戦ってたよな(´;ω;`)
201デフォルトの名無しさん
2022/02/15(火) 09:42:41.51ID:qxt1mofg まだメジャーバージョン1だしそりゃまあ
202デフォルトの名無しさん
2022/02/15(火) 11:48:06.88ID:je481k6i203デフォルトの名無しさん
2022/02/16(水) 19:19:14.27ID:lHwbgihf どこかでPython 2 -> 3みたいなことが起こるかもよ
204デフォルトの名無しさん
2022/02/16(水) 20:18:02.36ID:oWbPDf/g >>203
Rustは後発言語なだけあって
今どきのプログラミング言語の成功部分を洗練して採り入れてる
だから互換性のないバージョンアップをする時はRustより新しい言語が新たに成功してそれをRustも採り入れたくなったが互換性を維持したままでは出来ない時が来てから
Rustは後発言語なだけあって
今どきのプログラミング言語の成功部分を洗練して採り入れてる
だから互換性のないバージョンアップをする時はRustより新しい言語が新たに成功してそれをRustも採り入れたくなったが互換性を維持したままでは出来ない時が来てから
205デフォルトの名無しさん
2022/02/17(木) 03:10:03.97ID:reqFguXW RustとかNimは第何世代の言語なん?
206デフォルトの名無しさん
2022/02/17(木) 11:44:19.88ID:RuZDOzbq >>205
第4世代の高水準言語の仲間じゃね?
第4世代の高水準言語の仲間じゃね?
207デフォルトの名無しさん
2022/02/17(木) 23:40:19.82ID:W9idHeI8 >>202
そのnon lexical lifetimeが入る前の言語仕様の制約が厳しい件なのかどうか教えて
このリンクリストの実装でpush_back()のコードがlifetimeでコンパイルエラーとなる話
https://qnighy.hat
enablog.com/entry/2017/05/06/070000
今このコードをコンパイルすると問題なく通って実行もできてしまう
Rustのコンパイラはどんどん賢くなって制約が無くなっていってるんだな
そのnon lexical lifetimeが入る前の言語仕様の制約が厳しい件なのかどうか教えて
このリンクリストの実装でpush_back()のコードがlifetimeでコンパイルエラーとなる話
https://qnighy.hat
enablog.com/entry/2017/05/06/070000
今このコードをコンパイルすると問題なく通って実行もできてしまう
Rustのコンパイラはどんどん賢くなって制約が無くなっていってるんだな
208デフォルトの名無しさん
2022/02/18(金) 00:44:32.85ID:yXo12zTr Rustって普及するんすか
209デフォルトの名無しさん
2022/02/18(金) 00:54:27.33ID:WX40LAaF210デフォルトの名無しさん
2022/02/18(金) 00:57:20.21ID:Dn+7AFaS rustのコンパイる中ってみんな何してんの?
211デフォルトの名無しさん
2022/02/18(金) 01:32:33.29ID:7ZNuwX6P >>207
push_backの例はまさにNLLでコンパイル通るようになるコードだね
push_backの例はまさにNLLでコンパイル通るようになるコードだね
212デフォルトの名無しさん
2022/02/18(金) 02:16:48.89ID:0USC0+1K C++のTMPのエラーメッセージとRustのジェネリックのエラーメッセージ
C++のはもはや意味不明だがRustのはまだ人間が読める
C++のはもはや意味不明だがRustのはまだ人間が読める
213デフォルトの名無しさん
2022/02/18(金) 15:09:52.72ID:6v8ahY7t あまりに親切すぎるメッセージなので、それならそういう風に変更したものをコンパイルしてみて、「こう変更したらコンパイルできました」となればいいなぁ
とRebuildの宮川さんが言ってました
とRebuildの宮川さんが言ってました
214デフォルトの名無しさん
2022/02/18(金) 15:36:44.00ID:7ZNuwX6P cargo check --fix である程度は勝手に修正してくれるんだっけ
215デフォルトの名無しさん
2022/02/19(土) 08:57:52.80ID:AlOKsuc0216デフォルトの名無しさん
2022/02/19(土) 09:04:29.27ID:59REwZPX 何言ってんだこのバカ
217デフォルトの名無しさん
2022/02/19(土) 09:05:12.66ID:Wd6uYUeM C++でハマるのはむしろコンパイル通ったあとだからw
みんなそれはご存知だとは思うけどw
みんなそれはご存知だとは思うけどw
218デフォルトの名無しさん
2022/02/19(土) 09:12:00.22ID:l5YLFJyt Rustはコンパイルが通ればメモリ問題や競合問題が起きず、プログラム自体に専念できるのがいいよな
そしてコンパイラが出すエラーが親切に手取り足取りしてくれて、すぐ修整できてコンパイルも通しやすい
そしてコンパイラが出すエラーが親切に手取り足取りしてくれて、すぐ修整できてコンパイルも通しやすい
219デフォルトの名無しさん
2022/02/19(土) 09:37:18.64ID:AG6SdX6W >>218
つくづく考えた奴は天才だとおもうわ
逆になんでいままででてこなかったんだろうとも思う
Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような
linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
つくづく考えた奴は天才だとおもうわ
逆になんでいままででてこなかったんだろうとも思う
Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような
linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
220デフォルトの名無しさん
2022/02/19(土) 10:49:58.66ID:lpo/y5Sw >>219
書き直したとして、1日でビルドできたらいいね
書き直したとして、1日でビルドできたらいいね
221デフォルトの名無しさん
2022/02/19(土) 11:06:51.15ID:UkMRjGML Rustの考え方の基になったCycloneが目指してたのがまさにそれだね
222デフォルトの名無しさん
2022/02/19(土) 11:25:52.64ID:x/upE6G9 >>219
> Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような
GNUって言うかストールマンはその考えでしょ
> linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
言い出しっぺの法則ヨロ
> Linuxつくるのもいはいけどそれをつくる道具を作るのが先でもよかったような
GNUって言うかストールマンはその考えでしょ
> linuxを全部rustで書き直したrust-linuxみたいなのを作る奴もそのうち出てきそう
言い出しっぺの法則ヨロ
223デフォルトの名無しさん
2022/02/19(土) 11:45:04.32ID:AG6SdX6W224デフォルトの名無しさん
2022/02/19(土) 12:04:13.57ID:ukdLXHKY rustのコンパイルが遅いのは依存ライブラリやジェネリスクの実体化によりコード量が多くなっているからで
コンパイラ自体は並列化とか頑張ってて高速という話を聞くけど実際のところCやC++と比較してどうなんだろうね
ヘッダファイル周りの枷がある分CやC++が優位とも簡単には言えない気がする
コンパイラ自体は並列化とか頑張ってて高速という話を聞くけど実際のところCやC++と比較してどうなんだろうね
ヘッダファイル周りの枷がある分CやC++が優位とも簡単には言えない気がする
225デフォルトの名無しさん
2022/02/19(土) 12:21:08.88ID:ZWczq9Ua226デフォルトの名無しさん
2022/02/19(土) 12:59:28.88ID:NbUDuEDT コンパイラの並列化で
数十コアも効率良く使えるなら
実質的にコンパイル時間は無視できる
数十コアも効率良く使えるなら
実質的にコンパイル時間は無視できる
227デフォルトの名無しさん
2022/02/19(土) 13:06:40.37ID:AG6SdX6W >>225
main()かな
main()かな
228デフォルトの名無しさん
2022/02/19(土) 13:33:27.92ID:6TS2kFRN >>227
無理無理w
無理無理w
229デフォルトの名無しさん
2022/02/19(土) 14:08:34.48ID:AG6SdX6W >>228
まあそれは冗談でも「rust os 自作」でググるといろいろでてくるからそれを参考にやってみるわ
rustでOS作ってる先達者が結構いるみたいだからそれを参考にLinuxカーネルの移植をがんばってみるわ
まあそれは冗談でも「rust os 自作」でググるといろいろでてくるからそれを参考にやってみるわ
rustでOS作ってる先達者が結構いるみたいだからそれを参考にLinuxカーネルの移植をがんばってみるわ
230デフォルトの名無しさん
2022/02/19(土) 14:33:33.28ID:ZWczq9Ua231デフォルトの名無しさん
2022/02/19(土) 14:47:00.85ID:AG6SdX6W >>230
「それがぼくには楽しかったから 全世界を巻き込んだリナックス革命の真実」は読んだけどそれじゃだめかな?
「それがぼくには楽しかったから 全世界を巻き込んだリナックス革命の真実」は読んだけどそれじゃだめかな?
232デフォルトの名無しさん
2022/02/19(土) 14:48:10.94ID:xNWdpb+t 現時点で2200万行もあるから、完全に移植しようとしたら毎日1万行のコードを移植し続けたとしても、6年はかかるね
そんな爆速で順調に行くわけないし、よっぽどの天才でもなければ1人では生涯に終えるのは無理かな
省ける部分を省くとしたら、何万行になるのかな?
そんな爆速で順調に行くわけないし、よっぽどの天才でもなければ1人では生涯に終えるのは無理かな
省ける部分を省くとしたら、何万行になるのかな?
233デフォルトの名無しさん
2022/02/19(土) 15:29:14.09ID:AlOKsuc0234デフォルトの名無しさん
2022/02/19(土) 15:51:49.27ID:6TS2kFRN rust触ったことないからわからないけどC/C++よりコンパイル速いわけないじゃん
235デフォルトの名無しさん
2022/02/19(土) 16:17:48.81ID:x/upE6G9 Rustのコンパイルが遅いようです。なぜですか?
https://prev.rust-lang.org/ja-JP/faq.html#why-is-rustc-slow
https://prev.rust-lang.org/ja-JP/faq.html#why-is-rustc-slow
236デフォルトの名無しさん
2022/02/19(土) 16:25:04.60ID:oF6CN3LV >>233
CとC++を一緒にすんな
CとC++を一緒にすんな
237デフォルトの名無しさん
2022/02/19(土) 16:28:39.65ID:lVeS0ElI238デフォルトの名無しさん
2022/02/19(土) 16:53:58.55ID:V3h8uUoV >>237
で、これより新しい情報あるの?
で、これより新しい情報あるの?
239デフォルトの名無しさん
2022/02/19(土) 18:57:21.37ID:ukdLXHKY フルビルドと差分ビルドで区別して議論しないと比較難しいね
あと差分ビルドについてもバイナリ生成までするのかソースのチェックで十分なのかでまた変わってきそう
あと差分ビルドについてもバイナリ生成までするのかソースのチェックで十分なのかでまた変わってきそう
240デフォルトの名無しさん
2022/02/19(土) 21:09:06.50ID:tV1lc2OB Rustって普及するんすか
241デフォルトの名無しさん
2022/02/19(土) 21:24:23.44ID:kSnJ/KwP いいえ、あなたには必要ありません
242デフォルトの名無しさん
2022/02/19(土) 22:54:34.42ID:zY+XWPI2 流行る言語は登場から10年くらいでウワーっと大流行するんだが、Rustにはそんな気配はないから
精々Goとかと同じような感じにしかならんやろなー。
精々Goとかと同じような感じにしかならんやろなー。
243デフォルトの名無しさん
2022/02/19(土) 23:26:45.94ID:lVeS0ElI244デフォルトの名無しさん
2022/02/20(日) 02:10:18.88ID:5KrZlkth Rustの案件なんてないよ
245デフォルトの名無しさん
2022/02/20(日) 02:51:48.98ID:Q+YkyZIv >>242
goレベルでも十分流行ってると言えると思うんだけど
goレベルでも十分流行ってると言えると思うんだけど
246デフォルトの名無しさん
2022/02/20(日) 06:11:08.95ID:rMSJWNa2 >>240
VisualStudioの新規プロジェクトの作成でデフォルトで選べるようになれば普及するだろうね
VisualStudioの新規プロジェクトの作成でデフォルトで選べるようになれば普及するだろうね
247デフォルトの名無しさん
2022/02/20(日) 09:55:15.25ID:c+ifp9sQ248デフォルトの名無しさん
2022/02/20(日) 11:25:19.25ID:Q+YkyZIv 当時と今とじゃデスクトップアプリの置かれてる状況が全然違うと思うけど
249デフォルトの名無しさん
2022/02/20(日) 12:09:19.72ID:28EWOJnb 何をもって普及とするかといえば、まだにVB書いてるやつもおるし、組み込みではRustなんて考えられないし、フロントエンドは
JS/TS/Nodeでほぼ不動。そうなるとJava/C#、Railsなどのビジネス系エンタープライズだが、メニーコア用のGoとかのほうが
敷居が低い分だけ人を確保しやすい。言語的な優劣では普及は進まない
当然、高スループットが求められる大企業のエリートでは使われるだろうけど、日本の中小企業で使われるとか想像ができない。
奇々怪々C++は食われていくだろうけど、マイクロコントローラなどでCが食われるなんて無い。データ分析はPythonとかJuliaとか
ビックデータはHadoop・Spark(JavaやPython)だろう
だが当然ながら*nix系は一歩先を進んでるRustだが、ちんまいコマンドラインのプログラムとか、デバイスドライバだとかそういう
分野でしか使えない(使われない)と思う。あとは自動運転なんかのプログラムならRustが使われてたりするが、そういう
技術者はPythonも使えるし、Juliaなんかもすぐ覚えられる。スマホアプリ系もRustなんてありえない
あと残るのはデスクトップアプリケーションとか、これも今はElectron系とかがあるのでネイティブで書く意味があまりない
JS/TS/Nodeでほぼ不動。そうなるとJava/C#、Railsなどのビジネス系エンタープライズだが、メニーコア用のGoとかのほうが
敷居が低い分だけ人を確保しやすい。言語的な優劣では普及は進まない
当然、高スループットが求められる大企業のエリートでは使われるだろうけど、日本の中小企業で使われるとか想像ができない。
奇々怪々C++は食われていくだろうけど、マイクロコントローラなどでCが食われるなんて無い。データ分析はPythonとかJuliaとか
ビックデータはHadoop・Spark(JavaやPython)だろう
だが当然ながら*nix系は一歩先を進んでるRustだが、ちんまいコマンドラインのプログラムとか、デバイスドライバだとかそういう
分野でしか使えない(使われない)と思う。あとは自動運転なんかのプログラムならRustが使われてたりするが、そういう
技術者はPythonも使えるし、Juliaなんかもすぐ覚えられる。スマホアプリ系もRustなんてありえない
あと残るのはデスクトップアプリケーションとか、これも今はElectron系とかがあるのでネイティブで書く意味があまりない
250デフォルトの名無しさん
2022/02/20(日) 12:14:16.60ID:RjCQdBpa 普及なんてしなくていいんだよそもそも
それを必要とするやつの手に届いたら十分なんだよ
C++でやってた分野の一部でもRustで書き換わって
それでメンテする連中がラクできることになって
一方でユーザ側にも恩恵はあるだろうしそういうのでいいんだよ
ド素人のアマチュアプログラマに届く必要はないんだよ
それを必要とするやつの手に届いたら十分なんだよ
C++でやってた分野の一部でもRustで書き換わって
それでメンテする連中がラクできることになって
一方でユーザ側にも恩恵はあるだろうしそういうのでいいんだよ
ド素人のアマチュアプログラマに届く必要はないんだよ
251デフォルトの名無しさん
2022/02/20(日) 12:26:24.06ID:TEB+ikpz 普及しなくていいし、してもらいたくない
なぜならうちの会社が業界でトップを維持してる秘密だから
他社のウエブサービスより圧倒的に早くセキュアなのはずばりRustをつかってるから。
その前はLispを使ってた。
だから真似してもらいたくない。
まあ、真似できないたまろうけどw
なぜならうちの会社が業界でトップを維持してる秘密だから
他社のウエブサービスより圧倒的に早くセキュアなのはずばりRustをつかってるから。
その前はLispを使ってた。
だから真似してもらいたくない。
まあ、真似できないたまろうけどw
252デフォルトの名無しさん
2022/02/20(日) 12:34:20.56ID:Q+YkyZIv >>249
これrustに限らず、現状がそのまま続いて新たな言語で置き換わることはないだろうとしか言ってないよね
これrustに限らず、現状がそのまま続いて新たな言語で置き換わることはないだろうとしか言ってないよね
253デフォルトの名無しさん
2022/02/20(日) 12:48:19.88ID:RjCQdBpa254デフォルトの名無しさん
2022/02/20(日) 12:53:50.15ID:pLBa4/kQ >>249
組み込みはrust向きなとこなんじゃないのかね。組み込み業界のことは一切知らんからアレだけど。
組み込みはrust向きなとこなんじゃないのかね。組み込み業界のことは一切知らんからアレだけど。
255デフォルトの名無しさん
2022/02/20(日) 13:19:37.41ID:5KrZlkth Rustが組込向きかどうかはともかく、LinusはC++に対してはCの問題を何一つ解決せず、事態を悪化させるだけと言っていて、Rustについてはドライバを書けるようにするところまでは実際にやってきているらしいよ
256デフォルトの名無しさん
2022/02/20(日) 13:40:02.09ID:QnKhevyf >>249
組み込み以外にミドルウェアらへんでも使われるようになると思う
OS、RDBMS、Webサーバとか
ミドルウェアよりも上位レイヤーのアプリケーションだけで見ると、GCがある言語でもだいたい十分そうだし、Rustは目立たなそう
組み込み以外にミドルウェアらへんでも使われるようになると思う
OS、RDBMS、Webサーバとか
ミドルウェアよりも上位レイヤーのアプリケーションだけで見ると、GCがある言語でもだいたい十分そうだし、Rustは目立たなそう
257デフォルトの名無しさん
2022/02/20(日) 13:49:36.22ID:NF24OHT2 rustはc++よりbetter cしてるから徐々に市民権得るだろうな
258デフォルトの名無しさん
2022/02/20(日) 14:01:22.11ID:uUEkIMOM259デフォルトの名無しさん
2022/02/20(日) 14:21:18.20ID:xQDNRCh/ Rustってクロージャの再代入できない?
null許容することになるから出来ないようにしてる?
null許容することになるから出来ないようにしてる?
260デフォルトの名無しさん
2022/02/20(日) 14:31:26.55ID:Q+YkyZIv 型が同じなら再代入可能だけどクロージャはそれぞれ別の型を持つので単純には代入どきない
Box<dyn Fn()>などに変換すればできる
Box<dyn Fn()>などに変換すればできる
261デフォルトの名無しさん
2022/02/20(日) 16:38:17.59ID:xcGmkjoA >>249
ゲーム系のWASMとか
ゲーム系のWASMとか
262デフォルトの名無しさん
2022/02/20(日) 18:49:49.78ID:xQDNRCh/263デフォルトの名無しさん
2022/02/20(日) 19:16:43.92ID:eM0QoFz6 Lispってセキュアなコード書くのPythonより難しくないか
264デフォルトの名無しさん
2022/02/20(日) 22:26:50.09ID:uSEnVnLU こちらのまわりではスクリプト言語で書かれていた物の高速化でRustへ移行が多いな
レスポンスの意味での高速化もあればリソースとしてのCPUタイム激減もある
使用メモリも激減するためクラウドでもオンプレでも費用支出が激減し桁が変わる場合もある
レスポンスの意味での高速化もあればリソースとしてのCPUタイム激減もある
使用メモリも激減するためクラウドでもオンプレでも費用支出が激減し桁が変わる場合もある
265デフォルトの名無しさん
2022/02/21(月) 08:03:12.70ID:J/Dh0skf >>255
さすがにc++03とかと比較されても……
さすがにc++03とかと比較されても……
266デフォルトの名無しさん
2022/02/21(月) 08:27:27.48ID:JVbzDyQT よく知らんのだけど、カーネル書くのに抽象化って必要なの?
もしいらないんだとしたらC++がカーネル書くのになんのメリットもないと考える気持ちもわかる気がする
Rustの場合は安全性がついてくるので抽象化がなくても使う価値がある
もしいらないんだとしたらC++がカーネル書くのになんのメリットもないと考える気持ちもわかる気がする
Rustの場合は安全性がついてくるので抽象化がなくても使う価値がある
267デフォルトの名無しさん
2022/02/21(月) 08:42:47.98ID:OCv9XetQ Rustのオブジェクトシステムって実際C++のそれと比べたら遥かにわかりやすいよな
traitって概念ほんまありがてえわ
traitって概念ほんまありがてえわ
268デフォルトの名無しさん
2022/02/21(月) 08:51:29.17ID:NpsKB2au269デフォルトの名無しさん
2022/02/21(月) 08:57:14.48ID:qHKOEqJY >>266
パッと思い浮かぶのはファイルシステムと仮想ボリュームぐらいだけど、C++がメリットになるとは思えんな
パッと思い浮かぶのはファイルシステムと仮想ボリュームぐらいだけど、C++がメリットになるとは思えんな
270デフォルトの名無しさん
2022/02/21(月) 12:01:24.19ID:L89iNs1x >>264
DiscordがGoで作られてたバックエンドの一部をRustで書き直したらめちゃくちゃコスト下がったってニュースあったな
C++がRustに置き換わるってよりスクリプト言語やGC言語で作られたものが置き換わっていくのがまず先だろう
DiscordがGoで作られてたバックエンドの一部をRustで書き直したらめちゃくちゃコスト下がったってニュースあったな
C++がRustに置き換わるってよりスクリプト言語やGC言語で作られたものが置き換わっていくのがまず先だろう
271デフォルトの名無しさん
2022/02/21(月) 12:15:00.96ID:NpsKB2au どうでもいいけど、このスレ個人の思い込みと間違いだらけに見えるな
272デフォルトの名無しさん
2022/02/21(月) 12:25:54.59ID:R0Wvqlvm273デフォルトの名無しさん
2022/02/21(月) 12:29:39.29ID:/1Q8PAGZ DiscordがRustに移行した当時のGoは大分ウンコだったけど、今ではわりとマシになっちゃったよ
274デフォルトの名無しさん
2022/02/21(月) 12:50:01.46ID:hkBHJMBS Goってもうジェネリック入った?
275デフォルトの名無しさん
2022/02/21(月) 12:51:46.86ID:Vy+crfrM >>271
隔離スレに多くを求めすぎ
隔離スレに多くを求めすぎ
276デフォルトの名無しさん
2022/02/21(月) 13:09:04.30ID:NpsKB2au なんでこうなっちゃったんだろうね。一部の馬鹿が日本をどんどんダメにしてる気がする。もっとちゃんと比較できるよう上手く使えばいいのに。
277デフォルトの名無しさん
2022/02/21(月) 13:20:49.36ID:/1Q8PAGZ278デフォルトの名無しさん
2022/02/21(月) 13:41:53.53ID:Jx3FjySw 昔マイコンBASICって雑誌があってだな
279デフォルトの名無しさん
2022/02/21(月) 14:41:23.11ID:RtL8dE4+ GCがある言語のパフォーマンスが悪いというのは思い込み
280デフォルトの名無しさん
2022/02/21(月) 15:52:49.19ID:8WYOAA82281デフォルトの名無しさん
2022/02/21(月) 17:02:58.71ID:RtL8dE4+282デフォルトの名無しさん
2022/02/21(月) 17:03:00.28ID:dkDp5UUZ >>278
俺はIO派。その前は月間マイコン。
俺はIO派。その前は月間マイコン。
283デフォルトの名無しさん
2022/02/21(月) 17:06:01.87ID:dkDp5UUZ >>281
あるよ。いま、うちがやってる移植プロジェクトはその案件。
他社がそんな考えだから今の所引く手あまた。一社独占。大阪にもう1社あるってうわさだけど。。。
客が数十件待ってる状態。年収軽く3本いくわw
あるよ。いま、うちがやってる移植プロジェクトはその案件。
他社がそんな考えだから今の所引く手あまた。一社独占。大阪にもう1社あるってうわさだけど。。。
客が数十件待ってる状態。年収軽く3本いくわw
284デフォルトの名無しさん
2022/02/21(月) 17:10:20.58ID:RtL8dE4+ まぁ、GCの弊害がわからず採用して実稼働に入って困ったような技術要素選定バグの場合は、言語置き換え対象としてRustが選ばれるケースはあると思う
285デフォルトの名無しさん
2022/02/21(月) 17:12:56.49ID:RtL8dE4+286デフォルトの名無しさん
2022/02/21(月) 17:16:52.14ID:RtL8dE4+ 年収3本って3000万ってことか?
内容から、フリーランスでRustへのリプレースを専門でやってる感じだが、個人特定されかねないぞw
内容から、フリーランスでRustへのリプレースを専門でやってる感じだが、個人特定されかねないぞw
287デフォルトの名無しさん
2022/02/21(月) 17:17:29.45ID:k9jZTatR >>283
レアだから現在のcobolみたいなもんか
レアだから現在のcobolみたいなもんか
288デフォルトの名無しさん
2022/02/21(月) 17:18:15.19ID:Gf4lGfIx 聞いてもない年収語るような奴の相手すんなよ…
289デフォルトの名無しさん
2022/02/21(月) 17:46:13.57ID:hWQuQvUr Rustに置き換える理由はパフォーマンスより保守性とか堅牢性だと思う
開発者が少ない現状だと単純に保守性向上のためだけに外注するようなケースは少なそうだけど
今のシステムが不安定で改修もままならないからRustで作り直すってケースなら結構ありそう
開発者が少ない現状だと単純に保守性向上のためだけに外注するようなケースは少なそうだけど
今のシステムが不安定で改修もままならないからRustで作り直すってケースなら結構ありそう
290デフォルトの名無しさん
2022/02/21(月) 17:56:15.16ID:9wSZ8YP/ トヨタなんかの車載システムはCとRustで開発してるとか聞いたことあるが
291デフォルトの名無しさん
2022/02/21(月) 17:58:36.91ID:H7trbIGN 車でストップザワールドはまずいわな
292デフォルトの名無しさん
2022/02/21(月) 18:02:07.18ID:LC1rF3os293デフォルトの名無しさん
2022/02/21(月) 18:07:56.53ID:NpsKB2au 9割嘘
294デフォルトの名無しさん
2022/02/21(月) 18:30:22.78ID:Vy+crfrM295デフォルトの名無しさん
2022/02/21(月) 18:32:07.53ID:kwaQcaho スクリプトからの置き換えとして、VMを配布したくない(JVM/.NETが除外)、それなりに言語機能が欲しい(Goが除外)となるとRustくらいしか残らんのだよな
逆にそれらを許容できるなら別にRustじゃなくていいんだが
逆にそれらを許容できるなら別にRustじゃなくていいんだが
296デフォルトの名無しさん
2022/02/21(月) 18:34:26.10ID:shT+MRih Firefoxがいまだに勝てないのに速さとか言われてもな、省メモリならEdgeだし、自分たちがしたいだけでしょ
297デフォルトの名無しさん
2022/02/21(月) 18:43:26.39ID:NpsKB2au VMとかgoとかスレ違い
なんでC/C++/RustでGCとか出てきてんだよ
ム板ならGCの話をするならスレ立てて簡易実装くらい出して、有無の差異、モデルの差異、各言語の比較をしてほしい
前提の違う話を複数絡めて盛りすぎ
※明らかな嘘は論外
なんでC/C++/RustでGCとか出てきてんだよ
ム板ならGCの話をするならスレ立てて簡易実装くらい出して、有無の差異、モデルの差異、各言語の比較をしてほしい
前提の違う話を複数絡めて盛りすぎ
※明らかな嘘は論外
298デフォルトの名無しさん
2022/02/21(月) 18:50:49.00ID:lBTJyZA6 うちはNode.jsからの移行先がRustになった
JavaScriptよりプログラミングしやすくなった
JavaScriptよりプログラミングしやすくなった
299デフォルトの名無しさん
2022/02/21(月) 22:12:40.35ID:TSmsigpa C vs C++ vs RustなんてRust圧勝で勝負ついてるんだから話すことなくない?
300デフォルトの名無しさん
2022/02/21(月) 22:17:05.24ID:Gf4lGfIx だったら黙ってれば?
301デフォルトの名無しさん
2022/02/22(火) 00:25:06.07ID:5VMYN97O >>300
なんだよ偉そうに
なんだよ偉そうに
302デフォルトの名無しさん
2022/02/22(火) 07:36:54.62ID:3cXa2TFM >>299
言語機能としては圧勝なんだが、人やソフトなどの開発環境が惨敗だから困るんだよな
言語機能としては圧勝なんだが、人やソフトなどの開発環境が惨敗だから困るんだよな
303デフォルトの名無しさん
2022/02/22(火) 09:09:32.46ID:5VMYN97O >>302
今一人勝ちのJavaだってそうなるまでに20年かかったんだから今判断しても意味なくね?
今一人勝ちのJavaだってそうなるまでに20年かかったんだから今判断しても意味なくね?
304デフォルトの名無しさん
2022/02/22(火) 10:17:05.86ID:5VMYN97O >>258
Lispとかいたらズコーってされたけど適材適所だと思うぞ
ルンバがLispで書かれているのは知ってるよね?
強力なメタプログラミング機能とインタラクティブな開発が必要なら採用してみてもいいのでは?
Lispとかいたらズコーってされたけど適材適所だと思うぞ
ルンバがLispで書かれているのは知ってるよね?
強力なメタプログラミング機能とインタラクティブな開発が必要なら採用してみてもいいのでは?
305デフォルトの名無しさん
2022/02/22(火) 10:34:56.38ID:AiPUeoxY >>304
セキュアなWebサービスはどうしたんだよw
セキュアなWebサービスはどうしたんだよw
306デフォルトの名無しさん
2022/02/22(火) 11:24:36.79ID:FcgRLtLU rustに置き換えようとして担当が逃げ出したプロジェクトがかなりあるわ。。これからその地獄がはじまる。
307デフォルトの名無しさん
2022/02/22(火) 11:47:19.90ID:5VMYN97O >>306
うちにもってきてよ。やってあげる。
うちにもってきてよ。やってあげる。
308デフォルトの名無しさん
2022/02/22(火) 12:20:08.49ID:kvixU8HR どうしたらLispでセキュアなwebサービス作れるん
309デフォルトの名無しさん
2022/02/22(火) 12:37:25.61ID:5VMYN97O >>308
作れないからRustにしたんだよ
作れないからRustにしたんだよ
310デフォルトの名無しさん
2022/02/22(火) 12:41:08.18ID:fFHtSmjB Lispだろうと多言語だろうと新しめの通信とかSSLとかのライブラリを探すとこからスタートじゃない?
311デフォルトの名無しさん
2022/02/22(火) 13:10:26.52ID:gqoJFVcX Javaは言語登場から10年くらいで多くの人が利用してたし開発環境も続々でとような。
312デフォルトの名無しさん
2022/02/22(火) 13:12:29.23ID:G6nBeheJ 明らかな嘘だけになったなw
313デフォルトの名無しさん
2022/02/22(火) 13:38:49.42ID:FcgRLtLU314デフォルトの名無しさん
2022/02/22(火) 21:22:01.94ID:y2qiytj8 >>306
置き換え元のコードが酷かったんじゃね。C++のコードとかだいたい酷いし。
置き換え元のコードが酷かったんじゃね。C++のコードとかだいたい酷いし。
315デフォルトの名無しさん
2022/02/22(火) 21:38:20.03ID:Uj7UhjXB 現役プロダクトのコードを別言語に置き換えるのってrustに限らず大変なのでは
全面的な置き換えはプロダクト全体の再開発に等しい
特定の担当に押しつけるのではなくチーム全体で徐々に新規部分から置き換えた方が成功率高そう
全面的な置き換えはプロダクト全体の再開発に等しい
特定の担当に押しつけるのではなくチーム全体で徐々に新規部分から置き換えた方が成功率高そう
316デフォルトの名無しさん
2022/02/22(火) 21:54:32.13ID:B2H8wIkZ317デフォルトの名無しさん
2022/02/22(火) 21:55:58.40ID:WirMN8li 一般的にコードを『置き換える』という気構えだと失敗
少なくとも移植先の言語に合わせて何らかの内部設計のし直しからが最低限のスタート
目的が効率アップにあるなら並行や並列が設計として入ってくるだろうし
目的がGC無くしてメモリ省力化だけであってもデータ構造の見直しは必須など
少なくとも移植先の言語に合わせて何らかの内部設計のし直しからが最低限のスタート
目的が効率アップにあるなら並行や並列が設計として入ってくるだろうし
目的がGC無くしてメモリ省力化だけであってもデータ構造の見直しは必須など
318デフォルトの名無しさん
2022/02/22(火) 22:33:06.33ID:dVa/srT8 ねえねえ
ベクタの特定のターゲットの添え字を返すfind(v, target)を作ったとして、
ターゲットが見つからなかった場合のエラー処理はどうするのが良いと思う?
C/C++だと返り値を整数にして-1だったら見つからなかった、と言う感じが多いと思うんだけど
Result<usize, &str>とかにしてエラー内容を表す文字列を返しちゃう?
ベクタの特定のターゲットの添え字を返すfind(v, target)を作ったとして、
ターゲットが見つからなかった場合のエラー処理はどうするのが良いと思う?
C/C++だと返り値を整数にして-1だったら見つからなかった、と言う感じが多いと思うんだけど
Result<usize, &str>とかにしてエラー内容を表す文字列を返しちゃう?
319デフォルトの名無しさん
2022/02/22(火) 22:36:39.92ID:Uj7UhjXB >>318
標準ライブラリの関数を使う
標準ライブラリの関数を使う
320デフォルトの名無しさん
2022/02/22(火) 23:06:43.66ID:WirMN8li >>318
まずRustではそういうのはベクタに対して実装せずにスライスに対して実装する
次にRustではそういったものにはResultではなくOptionを返す
最後にそのような機能は標準ライブラリを使えば色んな意味で間違いがない
まずRustではそういうのはベクタに対して実装せずにスライスに対して実装する
次にRustではそういったものにはResultではなくOptionを返す
最後にそのような機能は標準ライブラリを使えば色んな意味で間違いがない
321デフォルトの名無しさん
2022/02/23(水) 00:15:24.41ID:3kJCLKpV322デフォルトの名無しさん
2022/02/23(水) 09:54:11.97ID:vCUIsgzX323デフォルトの名無しさん
2022/02/23(水) 10:10:32.07ID:kNrPH1ZT324デフォルトの名無しさん
2022/02/23(水) 12:37:36.24ID:a0AIymqn 「CやRustが他の言語よりもエネルギー効率に優れていることに驚きはない。衝撃的なのは、その違いの大きさだ。CとRustを広範に採用すれば、控えめに見積もってもコンピュートに使用されるエネルギーの量を50%削減できる可能性がある」とMiller氏は述べ、その根拠として、C、GoogleのGo、Lua、Python、Ruby、Fortranなどをはじめとする複数の言語のエネルギー効率を相対的に示した研究結果を紹介している。
https://news.yahoo.co.jp/articles/399e10841c9a9b776ac5ac3e8402f75da93d17ef
https://news.yahoo.co.jp/articles/399e10841c9a9b776ac5ac3e8402f75da93d17ef
325デフォルトの名無しさん
2022/02/23(水) 12:44:28.80ID:vCUIsgzX >>324
同記事の引用
『プログラムをRustで書き換えることで、サービスは10倍速くなり、レイテンシーも大幅に短縮された。サーバーの数を減らすことができたので、結果的にエネルギー消費量も減少した。
「エネルギー効率の高い言語はRustだけではなく、昔からあるC言語もエネルギー効率は高い。しかしRustは安全性を犠牲にすることなく、省エネ化を実現した初めてのメインストリームのプログラミング言語だ。CやC++で書かれたプログラムが抱える深刻なセキュリティ脆弱性の70%は、メモリー安全性の問題に起因している。それに対して、Rustは安全性の問題を抱えていると感じることなく、エネルギー効率を高められる」とMiller氏は言う。
しかし、Rustにも習得の難しさをはじめとする課題はある。
経験豊富なエンジニアでも、Rustを使いこなすまでには、この分野に詳しい専門家のサポートを受けながら、3〜6カ月の学習期間が必要だとMiller氏とLerche氏は言う。「Rustの習得を、野菜嫌いの克服に例えるエンジニアもいる。使いこなせるようになれば好きになる人が多いが、多くのエンジニアはそうなる前に見切りをつけたり、あきらめたりする。Rustは持続可能性とセキュリティに影響する可能性があるが、その力を発揮するためにはまず、ブロッコリーをブラウニーに変えなければならない』
同記事の引用
『プログラムをRustで書き換えることで、サービスは10倍速くなり、レイテンシーも大幅に短縮された。サーバーの数を減らすことができたので、結果的にエネルギー消費量も減少した。
「エネルギー効率の高い言語はRustだけではなく、昔からあるC言語もエネルギー効率は高い。しかしRustは安全性を犠牲にすることなく、省エネ化を実現した初めてのメインストリームのプログラミング言語だ。CやC++で書かれたプログラムが抱える深刻なセキュリティ脆弱性の70%は、メモリー安全性の問題に起因している。それに対して、Rustは安全性の問題を抱えていると感じることなく、エネルギー効率を高められる」とMiller氏は言う。
しかし、Rustにも習得の難しさをはじめとする課題はある。
経験豊富なエンジニアでも、Rustを使いこなすまでには、この分野に詳しい専門家のサポートを受けながら、3〜6カ月の学習期間が必要だとMiller氏とLerche氏は言う。「Rustの習得を、野菜嫌いの克服に例えるエンジニアもいる。使いこなせるようになれば好きになる人が多いが、多くのエンジニアはそうなる前に見切りをつけたり、あきらめたりする。Rustは持続可能性とセキュリティに影響する可能性があるが、その力を発揮するためにはまず、ブロッコリーをブラウニーに変えなければならない』
326デフォルトの名無しさん
2022/02/23(水) 14:27:22.03ID:1qABUjpC コンピューターのエネルギー効率が高い代わりに人間の効率が下がるんですがそれは
327デフォルトの名無しさん
2022/02/23(水) 14:41:11.80ID:lP5I9oG+ コンパイル時にめっちゃエネルギー使ってる
Tier 1のプラットフォームの最新数バージョンくらいはバイナリ配布する仕組みがcargoに必要
Tier 1のプラットフォームの最新数バージョンくらいはバイナリ配布する仕組みがcargoに必要
328デフォルトの名無しさん
2022/02/23(水) 14:42:22.66ID:0x8HcgAm >>326
まぁ作ったあとの稼働と運用考えたら総じてプラスになるでしょ。ならない?
まぁ作ったあとの稼働と運用考えたら総じてプラスになるでしょ。ならない?
329デフォルトの名無しさん
2022/02/23(水) 15:38:19.82ID:5Q12euAa >>326
一定規模超えたら一気に効率上がるぞ
一定規模超えたら一気に効率上がるぞ
330デフォルトの名無しさん
2022/02/23(水) 16:55:23.95ID:+3d31FNr >>326
これよく言われるけど言語による生産性の差って定量的にデータ集められてるのかな
これよく言われるけど言語による生産性の差って定量的にデータ集められてるのかな
331デフォルトの名無しさん
2022/02/23(水) 17:27:51.83ID:1qABUjpC メンテナンスフェーズに入ったとしても、人件費より電気代の方が高くなるようなことってなかなかなくね?
そんな大成功を納めたサービスってどれくらいあるんだろうな
そんな大成功を納めたサービスってどれくらいあるんだろうな
332デフォルトの名無しさん
2022/02/23(水) 17:29:51.77ID:Q7pYnx45333デフォルトの名無しさん
2022/02/23(水) 17:41:24.45ID:lwKqHuPf334デフォルトの名無しさん
2022/02/23(水) 17:45:28.95ID:1qABUjpC >>333
ユーザー数によることはわかってて、そんな事態がどれくらいあるのかと言ってるレスに対してユーザー数によることを指摘するのか……
ユーザー数によることはわかってて、そんな事態がどれくらいあるのかと言ってるレスに対してユーザー数によることを指摘するのか……
335デフォルトの名無しさん
2022/02/23(水) 18:24:51.09ID:Gy4l851c 世の中ウェブサービスだけじゃない
例えば携帯電話のベースバンドチップの消費電力が
半減とかできて表のニュースにはならないし
例えば携帯電話のベースバンドチップの消費電力が
半減とかできて表のニュースにはならないし
336デフォルトの名無しさん
2022/02/23(水) 18:29:47.83ID:kNrPH1ZT337デフォルトの名無しさん
2022/02/23(水) 18:46:55.85ID:wKfqGXJ0 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 対応
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 対応
338デフォルトの名無しさん
2022/02/23(水) 18:51:10.94ID:PMTzrERY >>325で明らかにサービスの話してるのに突然携帯のチップとか言い始める奴w
339デフォルトの名無しさん
2022/02/23(水) 19:57:40.25ID:5Q12euAa Rubyしかやってないやつのコード読みにくすぎて震える
340デフォルトの名無しさん
2022/02/23(水) 20:04:08.39ID:Lu1aogHC 言語を1つしかわからんやつなんてそもそも初心者しかいなくね
341デフォルトの名無しさん
2022/02/23(水) 21:26:07.56ID:vnuj+wMr HomebrewがCに置き換わったってどこ情報?
342デフォルトの名無しさん
2022/02/23(水) 21:30:43.83ID:YI1xwHaU ポインタに9年使うってどういうこと
343デフォルトの名無しさん
2022/02/23(水) 21:40:29.46ID:EqZ7VJsi344デフォルトの名無しさん
2022/02/23(水) 21:41:50.11ID:dFCEAhYP rustの改善のしどころは無いのか?
345デフォルトの名無しさん
2022/02/23(水) 21:57:31.33ID:hfe0Ou5T Rustは保守性も良いね
例えば機能追加や改善などで変更時もコンパイルが通ると安全性が崩れていないと保証される点
これは開発時もそうだがそれらの実行時の無駄なデバッグが不要となった点
例えば機能追加や改善などで変更時もコンパイルが通ると安全性が崩れていないと保証される点
これは開発時もそうだがそれらの実行時の無駄なデバッグが不要となった点
346337
2022/02/23(水) 22:01:48.42ID:wKfqGXJ0 >>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 か何かのバイナリをインストールするのじゃないの?
よく知らないけど
Homebrew
https://brew.sh/index_ja
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
install.sh だから、もうRuby スクリプトじゃない。
中を見ていないけど、C か何かのバイナリをインストールするのじゃないの?
よく知らないけど
347デフォルトの名無しさん
2022/02/23(水) 22:19:18.74ID:1qABUjpC >>343
C C++と比べたら生産性高いのは同意するし、型まわりのお陰で言語仕様が生産性高くなりそうなのも同意するけど、やたらライブラリが充実しているスクリプト言語とかGoと比べるとまだ人間にとっての生産性では勝てなそう
この辺りのライブラリ生産する人間をGoに吸われている感じがあるのでサービスにRust使うのが本格化する日は来るんだろうかって感じ
C C++と比べたら生産性高いのは同意するし、型まわりのお陰で言語仕様が生産性高くなりそうなのも同意するけど、やたらライブラリが充実しているスクリプト言語とかGoと比べるとまだ人間にとっての生産性では勝てなそう
この辺りのライブラリ生産する人間をGoに吸われている感じがあるのでサービスにRust使うのが本格化する日は来るんだろうかって感じ
348デフォルトの名無しさん
2022/02/23(水) 22:20:48.72ID:vCUIsgzX shellで書かれたインストールスクリプトも分からない男の人って・・・
349デフォルトの名無しさん
2022/02/23(水) 22:27:11.67ID:PMTzrERY >install.sh だから、もうRuby スクリプトじゃない。
>中を見ていないけど、C か何かのバイナリをインストールするのじゃないの?
一文も理解出来んかったんだが……
>中を見ていないけど、C か何かのバイナリをインストールするのじゃないの?
一文も理解出来んかったんだが……
350デフォルトの名無しさん
2022/02/23(水) 22:34:57.03ID:ek+gncWL >>346
そうなんだ、すごいね!
そうなんだ、すごいね!
351337
2022/02/23(水) 22:47:13.28ID:wKfqGXJ0 よく覚えてないけど、
ちょっと前は、Ruby スクリプトを実行するような感じだった
/bin/ruby -e "$(curl -fsSL URL〜/install.rb)"
ちょっと前は、Ruby スクリプトを実行するような感じだった
/bin/ruby -e "$(curl -fsSL URL〜/install.rb)"
352デフォルトの名無しさん
2022/02/23(水) 22:56:55.36ID:Lu1aogHC >>351
昔のmacにはRubyが標準で入ってたけど、Rubyが同梱されなくなったから、RubyがなくてもインストールできるようにHomebrewのインストーラがBashで書き直されただけだよ
いまでもHomebrewの本体はRubyで実装されてる
昔のmacにはRubyが標準で入ってたけど、Rubyが同梱されなくなったから、RubyがなくてもインストールできるようにHomebrewのインストーラがBashで書き直されただけだよ
いまでもHomebrewの本体はRubyで実装されてる
353デフォルトの名無しさん
2022/02/23(水) 23:36:06.18ID:vCUIsgzX linuxも考慮されてるのかもね
354デフォルトの名無しさん
2022/02/23(水) 23:54:17.80ID:lP5I9oG+355デフォルトの名無しさん
2022/02/23(水) 23:59:10.49ID:hfe0Ou5T356デフォルトの名無しさん
2022/02/24(木) 00:02:46.01ID:vba1sY9Z >>354
ああ、ほんとだ、ごめん
ちゃんと確認せずに記憶で書いてた
削除するよ、って警告はしつつも、まだRubyは削除されてないのね
すでに削除されたのはphpぐらいか
https://applech2.com/archives/python-2-7-18-in-macos-12-monterey.html
ああ、ほんとだ、ごめん
ちゃんと確認せずに記憶で書いてた
削除するよ、って警告はしつつも、まだRubyは削除されてないのね
すでに削除されたのはphpぐらいか
https://applech2.com/archives/python-2-7-18-in-macos-12-monterey.html
357デフォルトの名無しさん
2022/02/24(木) 00:15:40.62ID:cGpWV2sd goは独習で1日と言われてて、Rustはメンター付けて3〜6ヶ月と言われてるけども・・・
358デフォルトの名無しさん
2022/02/24(木) 00:45:28.23ID:rseQo+7Q CとC++は何ヶ月と言われてるの?
360デフォルトの名無しさん
2022/02/24(木) 05:32:35.31ID:xAP0ZjRZ C三年
C++十年
C++十年
361デフォルトの名無しさん
2022/02/24(木) 07:09:43.88ID:4OzkyCyv 柿八年
362デフォルトの名無しさん
2022/02/24(木) 08:17:15.47ID:h/ouWnem363デフォルトの名無しさん
2022/02/24(木) 08:39:04.35ID:uhUEdxjZ 習得は、主要YouTuberが配信し始めれば裾野の皆さんまで早くなるぞ
dotinstallとかいまにゅさんとかが、Rust入門、応用動画作り始めれば一気に情勢は有利に動く
dotinstallとかいまにゅさんとかが、Rust入門、応用動画作り始めれば一気に情勢は有利に動く
364デフォルトの名無しさん
2022/02/24(木) 08:53:20.71ID:9O+r6lMK >>362
Rustは自分でメモリ解放しなくても自動でやってくれるし学習難易度も低いよ
Rustは自分でメモリ解放しなくても自動でやってくれるし学習難易度も低いよ
365デフォルトの名無しさん
2022/02/24(木) 11:27:39.62ID:ODnFoKmA templateって学習障壁高いの?
366デフォルトの名無しさん
2022/02/24(木) 11:59:30.87ID:7WoYZRJz >>364
メモリ周りの管理にうんざりしたC/C++からすれば学習コストは低く感じるだろうよ
メモリ周りの管理にうんざりしたC/C++からすれば学習コストは低く感じるだろうよ
367デフォルトの名無しさん
2022/02/24(木) 12:33:16.86ID:cGpWV2sd 動画よりも簡単な説明とplay gourndが付いてて、より正確なリファレンスへのリンクと演習問題がセットになった〇〇Tourみたいなのがいいと思う
368デフォルトの名無しさん
2022/02/24(木) 12:46:50.62ID:LF1YlWGK369デフォルトの名無しさん
2022/02/24(木) 13:18:03.35ID:QeQ2VGy/ >>368
やってみればわかるけどRustは簡単
関数型言語に似てはいるけど関数型言語ではない
スクリプト言語たちと同じで関数型プログラミングを導入しているのみ
なのでスクリプト言語と同じように簡単にプログラミングできる
しかも速いためスクリプト言語から移行してきて今は快適
やってみればわかるけどRustは簡単
関数型言語に似てはいるけど関数型言語ではない
スクリプト言語たちと同じで関数型プログラミングを導入しているのみ
なのでスクリプト言語と同じように簡単にプログラミングできる
しかも速いためスクリプト言語から移行してきて今は快適
370デフォルトの名無しさん
2022/02/24(木) 13:40:46.21ID:2Gdh4nT0 >>368
C++とかテンプレートに渡したとたんundefined referenceエラーが起こるイメージしかないんだが
Rustはそういうのは型システムレベルで防いでくれるけどC++なら実際にエラーになるかどうかは最悪リンク時まで待たないといけない
C++とかテンプレートに渡したとたんundefined referenceエラーが起こるイメージしかないんだが
Rustはそういうのは型システムレベルで防いでくれるけどC++なら実際にエラーになるかどうかは最悪リンク時まで待たないといけない
371デフォルトの名無しさん
2022/02/24(木) 13:49:34.79ID:8P+aIMjR このへんのタイトルがでそろえば学習コストが下がるw間違いないw
・やさしい Rust
・13歳からはじめるゼロからのRustゲームプログラミング教室 入門編
・Rustの絵本
・やさしい Rust
・13歳からはじめるゼロからのRustゲームプログラミング教室 入門編
・Rustの絵本
372デフォルトの名無しさん
2022/02/24(木) 14:08:22.05ID:cGpWV2sd C++のtemplateの学習コストはとても高い
使うだけなら簡単・便利だけど、作るとなるとエラーに悶絶すること請け合い
C++の場合は、理解が完全かつ処理系の気持ちを察せられないと分からないエラーだからな
使うだけなら簡単・便利だけど、作るとなるとエラーに悶絶すること請け合い
C++の場合は、理解が完全かつ処理系の気持ちを察せられないと分からないエラーだからな
373デフォルトの名無しさん
2022/02/24(木) 14:30:43.20ID:7WoYZRJz vector<int&>とかすると標準ライブラリ内からエラーが出る
MSVCのエラーメッセージ見ると標準ライブラリが悪いかのようなエラー吐くからなぁ
これはわかりやすいからまだいいが自作したtemplateでエラーが出たらライブラリが悪いのか使う側が悪いかが分からんくなる...
C++20のconceptでマシにはなったが...なったのだが...
MSVCのエラーメッセージ見ると標準ライブラリが悪いかのようなエラー吐くからなぁ
これはわかりやすいからまだいいが自作したtemplateでエラーが出たらライブラリが悪いのか使う側が悪いかが分からんくなる...
C++20のconceptでマシにはなったが...なったのだが...
374デフォルトの名無しさん
2022/02/24(木) 14:37:14.35ID:2Gdh4nT0375デフォルトの名無しさん
2022/02/24(木) 14:37:16.61ID:rseQo+7Q376デフォルトの名無しさん
2022/02/24(木) 14:44:41.24ID:cGpWV2sd377デフォルトの名無しさん
2022/02/24(木) 15:49:13.99ID:xAP0ZjRZ マシーンと会話できてこそ一流よ
378デフォルトの名無しさん
2022/02/24(木) 15:52:51.86ID:cGpWV2sd $ こんにちは!
こんにちは!: コマンドが見つかりません
$
こんにちは!: コマンドが見つかりません
$
379デフォルトの名無しさん
2022/02/24(木) 18:01:51.83ID:rseQo+7Q380デフォルトの名無しさん
2022/02/24(木) 19:03:29.20ID:cGpWV2sd 演習があるのはいいんだが微妙。。。元々知ってたらconceptはいいかもしれないけど、やはりシナリオは欲しい
説明すべき基礎事項をその学習資料の中だけで全て完結させた上で、サンプル付きのシナリオで読ませる形
ようは順番に読んでいけば一貫して不明点がほぼない状態で読ませられる資料になってないといけない
説明すべき基礎事項をその学習資料の中だけで全て完結させた上で、サンプル付きのシナリオで読ませる形
ようは順番に読んでいけば一貫して不明点がほぼない状態で読ませられる資料になってないといけない
381デフォルトの名無しさん
2022/02/26(土) 08:25:19.78ID:eyAot+gd >>380
暗いと不平を言うよりも、すすんであかりをつけましょう。
暗いと不平を言うよりも、すすんであかりをつけましょう。
382デフォルトの名無しさん
2022/02/26(土) 09:06:47.66ID:fRC8OZTs >>381
現状に不平や不満があるのではなく、動画よりいいと個人的に思う形態を示し、それならと提案を頂いたのでその感想を書いただけ
現状に不平や不満があるのではなく、動画よりいいと個人的に思う形態を示し、それならと提案を頂いたのでその感想を書いただけ
383デフォルトの名無しさん
2022/03/01(火) 12:38:09.08ID:UoLsFlPS ゼロコスト抽象化のないらしいC++が
Rustと同等以上に速いのは何故でしょうか?
Rustと同等以上に速いのは何故でしょうか?
384デフォルトの名無しさん
2022/03/01(火) 12:51:08.94ID:TvHITEo3 それはRustのゼロコスト抽象化が嘘だからです
385デフォルトの名無しさん
2022/03/01(火) 13:02:32.51ID:MT73K7Vw 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.
..."
"...
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.
..."
386デフォルトの名無しさん
2022/03/01(火) 15:08:52.35ID:UoLsFlPS 普通にあったんですね
失礼しました!
失礼しました!
387デフォルトの名無しさん
2022/03/01(火) 23:34:34.12ID:cUOzOJ3p Rustはasyncもゼロコスト抽象化に成功したことが大きいかな
C++ではごちゃごちゃする上に安全に書くのが難しい
他の言語ではゼロコストじゃない
C++ではごちゃごちゃする上に安全に書くのが難しい
他の言語ではゼロコストじゃない
388デフォルトの名無しさん
2022/03/02(水) 00:22:04.69ID:p/EPNbqM オメェがへたくそなコード書くからだろド素人
389デフォルトの名無しさん
2022/03/02(水) 07:53:10.69ID:H9StuZ+L ゼロコスト抽象化ってなにがゼロコストなのかぶっちゃけよくわからん
390デフォルトの名無しさん
2022/03/02(水) 08:03:27.50ID:UQPkqsb3 >>389
定義もないバズワードだからな。
定義もないバズワードだからな。
391デフォルトの名無しさん
2022/03/02(水) 08:50:05.84ID:Xi4FA93L 抽象化ってのはpolymorphic class のことだと思ってたが全然違うやんけ
392デフォルトの名無しさん
2022/03/02(水) 11:01:52.98ID:uPKvDIET393デフォルトの名無しさん
2022/03/02(水) 15:14:26.14ID:1HqE5i/N >>391
全然ちゃうわ
全然ちゃうわ
394デフォルトの名無しさん
2022/03/03(木) 22:15:19.30ID:mAysBGeY >>389
少なくとも同じことやるならCと同じコードを吐くという意味だよ
少なくとも同じことやるならCと同じコードを吐くという意味だよ
395デフォルトの名無しさん
2022/03/04(金) 01:42:23.15ID:2lVDRIvt >>394
その定義だとsliceのインデックスアクセスがゼロコストでなくなるが良いのか?
その定義だとsliceのインデックスアクセスがゼロコストでなくなるが良いのか?
396デフォルトの名無しさん
2022/03/04(金) 05:13:25.76ID:XUQBJ/V1397デフォルトの名無しさん
2022/03/06(日) 12:55:30.33ID:T+f/sNqE トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備
https://japan.zdnet.com/article/35184296/
Rust信者の発言「こんなにも優れてる!おまえらの弄ってる言語はウンコ!CもRustに置き換わる!(=だから他スレ嵐ても良い)」
Rustメンテナ発言「すべて了解しました。Linus氏の言う通りに変更します、このようにしたいと思うのですがよろしいですか?ダメ?」
https://japan.zdnet.com/article/35184296/
Rust信者の発言「こんなにも優れてる!おまえらの弄ってる言語はウンコ!CもRustに置き換わる!(=だから他スレ嵐ても良い)」
Rustメンテナ発言「すべて了解しました。Linus氏の言う通りに変更します、このようにしたいと思うのですがよろしいですか?ダメ?」
398デフォルトの名無しさん
2022/03/06(日) 13:01:03.89ID:oRBcPyqI399デフォルトの名無しさん
2022/03/06(日) 13:03:29.20ID:oRBcPyqI あとその記事は誰もRustがどうのとは言ってない
400デフォルトの名無しさん
2022/03/06(日) 19:59:13.15ID:4x3ocuEl C++に勝てると思ってた?
残念だったな
残念だったな
401デフォルトの名無しさん
2022/03/06(日) 22:50:40.67ID:ABwQh1O6 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で置き換えました。
こういう形で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で置き換えました。
402デフォルトの名無しさん
2022/03/07(月) 00:42:06.45ID:2Lq6XwwP403デフォルトの名無しさん
2022/03/11(金) 01:25:14.31ID:EdJ0K9yq wasmにすれば多少の違いがあるにしても他の言語もほぼ同じ速度だと思うが?それ以前によほど速度がクリティカルじゃないと
JS/TS書いてる人がRustなんて使おうと思わない、キモさ満点
JS/TS書いてる人がRustなんて使おうと思わない、キモさ満点
404デフォルトの名無しさん
2022/03/11(金) 01:48:50.91ID:R2y3WlG0 >>403
GC言語でWasmを記述するメリットはゼロ
だからWasm記述言語のシェアはRustが圧倒的に強くて次がC++
Rustの方が強いのは書きやすいため
あとプログラミングの生産性の高さならばJS/TSよりRustが完全に上
そもそもなぜJSに対してTSが登場したのかと理由の根源は同じ
強力な静的型付け言語であるほどプログラムは書きやすく生産性が高い
GC言語でWasmを記述するメリットはゼロ
だからWasm記述言語のシェアはRustが圧倒的に強くて次がC++
Rustの方が強いのは書きやすいため
あとプログラミングの生産性の高さならばJS/TSよりRustが完全に上
そもそもなぜJSに対してTSが登場したのかと理由の根源は同じ
強力な静的型付け言語であるほどプログラムは書きやすく生産性が高い
405デフォルトの名無しさん
2022/03/11(金) 02:26:33.61ID:yxfxX1kD rustが生産性高いなら、もうとっくに10年経過してる言語だから
今の10倍はユーザー居ないとおかしいよ。
今の10倍はユーザー居ないとおかしいよ。
406デフォルトの名無しさん
2022/03/11(金) 03:39:10.52ID:KdADcOUe JSより上はわかるけど、TSより上はなんでなん
407デフォルトの名無しさん
2022/03/11(金) 04:15:58.39ID:R2y3WlG0408デフォルトの名無しさん
2022/03/11(金) 06:24:04.29ID:GmBPyzdt wasmは基本的に外部世界とのやり取りをJS側に依存してるからな
言語仕様が大きい言語は入りにくいし、入れても使いにくくなる
Rustをwasmにしても小さくとも数10MBくらいにはなる気がする
ただJavaScriptより速いというのはケース・バイ・ケースっぽい
言語仕様が大きい言語は入りにくいし、入れても使いにくくなる
Rustをwasmにしても小さくとも数10MBくらいにはなる気がする
ただJavaScriptより速いというのはケース・バイ・ケースっぽい
409デフォルトの名無しさん
2022/03/11(金) 08:49:12.64ID:yxfxX1kD 1.0からでいいなら2009年頃のC#の使用者数や
取り巻く開発環境と互角くらいになってないと変やぞ。
取り巻く開発環境と互角くらいになってないと変やぞ。
410デフォルトの名無しさん
2022/03/11(金) 09:19:45.43ID:KfuNFJB0 生産性と言語の難易度は独立だからなぁ
JSは生産性低いと思うけど、昔ならプログラマ適正ないとされていた人でもなんとか書けて、人海戦術で生産性を確保しているように見える
結局C++やRustでコード書ける人は限られるし、生産性が高いから普及するなんてことはないと思う
JSは生産性低いと思うけど、昔ならプログラマ適正ないとされていた人でもなんとか書けて、人海戦術で生産性を確保しているように見える
結局C++やRustでコード書ける人は限られるし、生産性が高いから普及するなんてことはないと思う
411デフォルトの名無しさん
2022/03/11(金) 11:07:32.97ID:Slgk+hnM C++でDOM操作出来ればどんなに楽な事か
412デフォルトの名無しさん
2022/03/11(金) 12:33:26.46ID:GmBPyzdt なんで出来ないの???
413デフォルトの名無しさん
2022/03/11(金) 12:46:45.10ID:jl+r3f5I 実行時にclass fieldの名前の情報がないから
414デフォルトの名無しさん
2022/03/11(金) 13:04:09.65ID:GmBPyzdt それはreflectionであって、DocumentObjectModelではないよ
どの言語でもそれをDOMとは呼ばない
reflectionは登録する系か、静的に解析する系かならサードパーティ製ライブラリはなくもない
C++標準ライブラリ仕様的にはそのうち入るかもって感じで検討されてる
そして別にサードパーティ製ライブラリの使用はそんな面倒ではない
信用するかしないかは別だし、登録する系を自分で使うだけなら自分で実装しても出来るレベルだと思う
何に困るのか理解できない
どの言語でもそれをDOMとは呼ばない
reflectionは登録する系か、静的に解析する系かならサードパーティ製ライブラリはなくもない
C++標準ライブラリ仕様的にはそのうち入るかもって感じで検討されてる
そして別にサードパーティ製ライブラリの使用はそんな面倒ではない
信用するかしないかは別だし、登録する系を自分で使うだけなら自分で実装しても出来るレベルだと思う
何に困るのか理解できない
415デフォルトの名無しさん
2022/03/12(土) 11:24:43.30ID:hAWsDuYe ほとんど通信のコストでCPUバウンドなjavascriptなんてそんなあるわけねーだろ。。
頭おかしいんじゃねーの。
頭おかしいんじゃねーの。
416デフォルトの名無しさん
2022/03/12(土) 12:13:10.35ID:aEfI8PjB マルチメディアな処理とかをクライアント側でするんだよ
例えばお絵かきとか、例えばゲームとか
業務系ではあまりない(会議システムとかはある)けど、それは単に領域が違うだけの話
例えばお絵かきとか、例えばゲームとか
業務系ではあまりない(会議システムとかはある)けど、それは単に領域が違うだけの話
417デフォルトの名無しさん
2022/03/12(土) 13:08:34.10ID:4DPn029u418デフォルトの名無しさん
2022/03/12(土) 13:38:38.36ID:aEfI8PjB 生産性は単純に言語の制限の多さやそれに対する慣れみたいなのが効いてくるけど、その辺は利用者のスキルによる
一番効いてくるのはライブラリやフレームや開発環境などエコシステムの成熟具合
pythonはそういう意味だと生産性は高い方だと思う
規模が大きくなったときの品質は低くなるので、そこまで含めて生産性というと落ちるくらい
現状だとある程度以上の規模のプロジェクトでのパフォーマンス・安全性・品質・環境・習熟しやすさなど総合的な生産性なら、Java, C#あたりにやはり軍配が上がると思う
個人的には今のChromeのJavaScriptパフォーマンスがnode.jsでも出るなら、TypeScriptとかはいい線行ってると思うし、エコシステムが成熟すればgoもいいと思う
一番効いてくるのはライブラリやフレームや開発環境などエコシステムの成熟具合
pythonはそういう意味だと生産性は高い方だと思う
規模が大きくなったときの品質は低くなるので、そこまで含めて生産性というと落ちるくらい
現状だとある程度以上の規模のプロジェクトでのパフォーマンス・安全性・品質・環境・習熟しやすさなど総合的な生産性なら、Java, C#あたりにやはり軍配が上がると思う
個人的には今のChromeのJavaScriptパフォーマンスがnode.jsでも出るなら、TypeScriptとかはいい線行ってると思うし、エコシステムが成熟すればgoもいいと思う
419デフォルトの名無しさん
2022/03/12(土) 13:52:15.48ID:ARhhT+a7420デフォルトの名無しさん
2022/03/12(土) 13:56:48.53ID:ARhhT+a7421デフォルトの名無しさん
2022/03/12(土) 14:03:06.54ID:aEfI8PjB web上でpython動かす!とかdebian動かす!とかそういうプロジェクトは結構あるよね
動いて満足して終わりな速度だけどw
python昔調べたときはできないことも結構あるとか書いてあった気がする
debianはまあデバイスがほとんどなかったので…w
g++とかは遅いけど普通に動いて感動できるよ
>>420
元来生産性というのはそういうものw
決められた要件に到達しうる時間でしか比較できないw
動いて満足して終わりな速度だけどw
python昔調べたときはできないことも結構あるとか書いてあった気がする
debianはまあデバイスがほとんどなかったので…w
g++とかは遅いけど普通に動いて感動できるよ
>>420
元来生産性というのはそういうものw
決められた要件に到達しうる時間でしか比較できないw
422デフォルトの名無しさん
2022/03/12(土) 14:10:30.48ID:ARhhT+a7 >>421
それはよほど小さなコードしか書いたことがないからだろ
Pythonでちょっとでも複雑なコードを書くことになったら生産性の低さに愕然とするだろう
少なくとも静的な型付けが必須であることは全員が一致する常識となっており
だからこそ例えばJavaScriptにわざわざ静的な型付けをしたTypeScriptが使われる
それはよほど小さなコードしか書いたことがないからだろ
Pythonでちょっとでも複雑なコードを書くことになったら生産性の低さに愕然とするだろう
少なくとも静的な型付けが必須であることは全員が一致する常識となっており
だからこそ例えばJavaScriptにわざわざ静的な型付けをしたTypeScriptが使われる
423デフォルトの名無しさん
2022/03/12(土) 14:27:42.28ID:aEfI8PjB >>422
規模については>>418で言及してるがw
そしてそれは厳密には生産性が落ちるというより品質が落ちるだけw
結果的にある程度以上の品質を確保するまでの時間が長くなる
仮に一回こっきり雑な前提で動かしたいソフトで異常系不要、品質は本当に特定のケースだけ動けばいいという条件での生産性なら落ちないw
ある程度以上の規模である程度以上の品質が必要なら型がないとねという話は語るまでもない
> Pythonでちょっとでも複雑なコードを書くことになったら生産性の低さに愕然とするだろう
生産性が低いと思ったこともないし、愕然としたこともないけどな
でも誰しも(アノテーションじゃない)型が欲しいと思うだろうねw
規模については>>418で言及してるがw
そしてそれは厳密には生産性が落ちるというより品質が落ちるだけw
結果的にある程度以上の品質を確保するまでの時間が長くなる
仮に一回こっきり雑な前提で動かしたいソフトで異常系不要、品質は本当に特定のケースだけ動けばいいという条件での生産性なら落ちないw
ある程度以上の規模である程度以上の品質が必要なら型がないとねという話は語るまでもない
> Pythonでちょっとでも複雑なコードを書くことになったら生産性の低さに愕然とするだろう
生産性が低いと思ったこともないし、愕然としたこともないけどな
でも誰しも(アノテーションじゃない)型が欲しいと思うだろうねw
424デフォルトの名無しさん
2022/03/12(土) 14:36:15.58ID:olrB42jq 単純に動けばいい程度のコードしか書いたことがないのか
引数/返り値型も1人で把握しきれる程度のコード量しか書いたことないんだろうな
引数/返り値型も1人で把握しきれる程度のコード量しか書いたことないんだろうな
425デフォルトの名無しさん
2022/03/12(土) 14:37:51.91ID:ARhhT+a7426デフォルトの名無しさん
2022/03/12(土) 14:40:55.70ID:aEfI8PjB スクリプト言語でデカイのは俺だって書かないよw
書けと言われない限りねw
書けと言われない限りねw
427デフォルトの名無しさん
2022/03/12(土) 19:02:59.33ID:aEfI8PjB あとpythonも今はアノテーションがあるし、ない時代もドキュメントコメントがちゃんとあったから
仕事で使うならそういうの全部書いてたし、開発環境もちゃんと対応してた
できないのはアノテーション同様強制だけで、問題はやや冗長になることw
仕事で使うならそういうの全部書いてたし、開発環境もちゃんと対応してた
できないのはアノテーション同様強制だけで、問題はやや冗長になることw
428デフォルトの名無しさん
2022/03/13(日) 01:09:57.73ID:roEKlQ2p 生産性はバッテリー初め標準ライブラリの大きさ、
デファクトスタンダードの浸透、
開発環境の強力さ、
クラウドやサーバー側の専用対応度合い
で決まる。
デファクトスタンダードの浸透、
開発環境の強力さ、
クラウドやサーバー側の専用対応度合い
で決まる。
429デフォルトの名無しさん
2022/03/13(日) 10:16:49.90ID:8whuKe+6 一部の人に誤解されてそうだけれど、
Pythonは動的型付けではあるけれど、
型付けも強い方だよ。
Pythonは動的型付けではあるけれど、
型付けも強い方だよ。
430デフォルトの名無しさん
2022/03/13(日) 14:24:56.50ID:e39Fa4ck それは分類上の話であって、話の中ではそう書いた方が誤解されるからああ書いた(型が欲しい)だけ
431デフォルトの名無しさん
2022/03/13(日) 17:06:04.04ID:Qy3XUFZg C#、pythonなどはまともに言語仕様を理解してない・しようともしないヤツでも書けるが、rustは知らなければ書けない。
必然的に少なくとも言語仕様を理解しようとする比較的生産性の高い人員が利用することになるので、生産性は高くなる。
必然的に少なくとも言語仕様を理解しようとする比較的生産性の高い人員が利用することになるので、生産性は高くなる。
432デフォルトの名無しさん
2022/03/13(日) 17:49:35.20ID:e39Fa4ck 残念ながらC++やRustの生産性がC#やpythonほど高くなることはないよw
433デフォルトの名無しさん
2022/03/13(日) 18:12:40.03ID:QeP4qKlI 「必然的に少なくとも言語仕様を理解しようとする比較的生産性の高い人員が利用する」
ほんまか?Haskellを理解している生産性高い人員が利用、C++を完全理解してる生産性の、、うっ頭が、、、
ほんまか?Haskellを理解している生産性高い人員が利用、C++を完全理解してる生産性の、、うっ頭が、、、
434デフォルトの名無しさん
2022/03/13(日) 18:28:30.10ID:8lssQzCw435デフォルトの名無しさん
2022/03/13(日) 18:48:27.86ID:e39Fa4ck C#とRustは全く違うw
C# ... python/JavaScript/Javaなど比較的容易に習得できる言語を知ってればまずすぐに使えるようになるし、最初の言語としてもOK
Rust ... C→C++→挫折→Rustが無難。最初の言語は絶対ムリw
全て習得してれば何を使っても困ることはないが、エコシステムの充実度で生産性が飛躍的に上がるので、Rustの生産性がC#より上がることは絶対ないw
C# ... python/JavaScript/Javaなど比較的容易に習得できる言語を知ってればまずすぐに使えるようになるし、最初の言語としてもOK
Rust ... C→C++→挫折→Rustが無難。最初の言語は絶対ムリw
全て習得してれば何を使っても困ることはないが、エコシステムの充実度で生産性が飛躍的に上がるので、Rustの生産性がC#より上がることは絶対ないw
436デフォルトの名無しさん
2022/03/13(日) 18:52:44.10ID:uIbezUFD どう考えてもC#の方がRustよりも生産性高い
どんだけゲーム開発で使われているかを見ればわかる
どんだけゲーム開発で使われているかを見ればわかる
437デフォルトの名無しさん
2022/03/13(日) 18:57:46.57ID:bkBR9GT5438デフォルトの名無しさん
2022/03/13(日) 18:58:32.94ID:SbmrJ+bY GCがある言語はそれだけでだいぶRustよりサボれるよね
どちらが良いかどうかはもちろんケースバイケース
どちらが良いかどうかはもちろんケースバイケース
439デフォルトの名無しさん
2022/03/13(日) 19:01:42.87ID:XOPL/QMW 明らかに弱酸性が高いです!
440デフォルトの名無しさん
2022/03/13(日) 22:08:33.05ID:e39Fa4ck Rustは早く言えば2006年、遅くとも2010年には登場してることになるのでもう余裕で10年選手だけどね
インターネットが普及してる現代なら、Googleすらない頃に普及したJavaやC#と比べれば、人気出るのにかかる年月は圧倒的に短いはず
10年で発達したエコシステムが現状だとすると、その程度にしか人気がない残念な状態ということ
インターネットが普及してる現代なら、Googleすらない頃に普及したJavaやC#と比べれば、人気出るのにかかる年月は圧倒的に短いはず
10年で発達したエコシステムが現状だとすると、その程度にしか人気がない残念な状態ということ
441デフォルトの名無しさん
2022/03/13(日) 22:15:49.75ID:E9xpRPLy >>440
Rust 1.0が公開されたのは2015年
Rust 1.0が公開されたのは2015年
442デフォルトの名無しさん
2022/03/13(日) 22:25:52.97ID:e39Fa4ck Javaなんて登場から1.0出るまでに半年だぞw その程度の人気ってだけw
443デフォルトの名無しさん
2022/03/13(日) 23:18:30.60ID:RoYQZH3A >>440
C#出た時にはグーグルはとっくに検索エンジンのデファクトスタンダードだった
C#出た時にはグーグルはとっくに検索エンジンのデファクトスタンダードだった
444デフォルトの名無しさん
2022/03/13(日) 23:45:46.84ID:e39Fa4ck 2000年当時はまだ知る人ぞ知るだぞ
インターネット検索つらー!って言ってる時期
インターネット検索つらー!って言ってる時期
445デフォルトの名無しさん
2022/03/14(月) 00:05:53.25ID:zdS58C2+ 2001年のYahoo JAPANのエンジンがGoogleを採用っていうニュースを見たときはすでにGoogleの性能が明らかに圧倒してたから納得だったな
2000年頃はどうだったかなあ、でかいニュースとかがないと何も思い出せない
2000年頃はどうだったかなあ、でかいニュースとかがないと何も思い出せない
446デフォルトの名無しさん
2022/03/14(月) 00:20:38.18ID:b6Gq1yrB お前最初グーグルすらない頃にとか書いてたけど指摘されるとしれっと知る人ぞ知るって変更かよ
どこぞの半島人みたいだなw
因みにC#1.0リリース時は既にアメリカでは検索サイトで1、2位を争う位だったしヤフーも検索エンジンはグーグル仕様してたくらいメジャーだった
どこぞの半島人みたいだなw
因みにC#1.0リリース時は既にアメリカでは検索サイトで1、2位を争う位だったしヤフーも検索エンジンはグーグル仕様してたくらいメジャーだった
447デフォルトの名無しさん
2022/03/14(月) 00:21:16.70ID:b6Gq1yrB ヤフーてアメリカのヤフーな
448デフォルトの名無しさん
2022/03/14(月) 00:29:01.66ID:Cn/Dq9rt 98年末くらいだったかな?アメリカに爆速のサーチエンジンあるよってぁゃしぃわーるどだかで話題になって
試しに使ってみたら当時としては検索結果が爆速過ぎて驚いた記憶あるな
2バイト文字にも対応してるしシンプルな画面だったからAltaVistaやgooから速攻Googleに乗り換えたよ
試しに使ってみたら当時としては検索結果が爆速過ぎて驚いた記憶あるな
2バイト文字にも対応してるしシンプルな画面だったからAltaVistaやgooから速攻Googleに乗り換えたよ
449デフォルトの名無しさん
2022/03/14(月) 00:40:57.25ID:U570WKgz Googleは1998年創業パロアルトに移して本格的にWeb検索やり始めたのは1999年だから2000年当時はようやくアメリカで広まり始めてた頃だったと思う
2002年くらいまでは日本だとGoogleはあまり認知されていなかった
2001年YahooはGoogle採用したもののその後YSTとか作ってて、それを諦めたときが2010年。そのときと混同してないか?
2002年くらいまでは日本だとGoogleはあまり認知されていなかった
2001年YahooはGoogle採用したもののその後YSTとか作ってて、それを諦めたときが2010年。そのときと混同してないか?
450デフォルトの名無しさん
2022/03/14(月) 00:50:35.13ID:b6Gq1yrB Wikipedia見てきたのかな?
日本だとヤフー強すぎて検索サイトイコールカテゴリー検索だったからな
グーグルのイメージないのは仕方ないと思う
でもアメリカでは2000年には既に超メジャーで、日本でも>>448のようにアングラサイト出入りしてる人達や
UNIX、Linux使いの人やプログラマーには90年代末にはデファクトスタンダードだったよ
日本だとヤフー強すぎて検索サイトイコールカテゴリー検索だったからな
グーグルのイメージないのは仕方ないと思う
でもアメリカでは2000年には既に超メジャーで、日本でも>>448のようにアングラサイト出入りしてる人達や
UNIX、Linux使いの人やプログラマーには90年代末にはデファクトスタンダードだったよ
451デフォルトの名無しさん
2022/03/14(月) 01:03:47.37ID:Cn/Dq9rt452デフォルトの名無しさん
2022/03/14(月) 01:04:15.62ID:U570WKgz いや俺は当時検索デスクを欠かさず読んでた検索っ子だったぞ
そんな事実はなかった
そんな事実はなかった
453デフォルトの名無しさん
2022/03/14(月) 01:10:14.46ID:Cn/Dq9rt454デフォルトの名無しさん
2022/03/14(月) 01:12:22.48ID:U570WKgz 検索デスクを知らないってことは嘘だね。。。
455デフォルトの名無しさん
2022/03/14(月) 01:18:10.05ID:zdS58C2+ うーん、やっぱいまいち思い出せないけど2001年頃にはVisual Studio6つかって趣味でいろんなゲーム作ってたような学生だったし、おれはとっくにGoogle使いまくってたような気がする
当時のIEって何かといろんなバーが追加されまくって表示が狭かったんだっけ、なつかしいね
初代Sleipnirとか出てからネットサーフィンも快適になったんだったかな
たしかに一般認知されるか、っていうとテレビCM出しまくるようになってからだろうし、もっとずっと後だね
当時のIEって何かといろんなバーが追加されまくって表示が狭かったんだっけ、なつかしいね
初代Sleipnirとか出てからネットサーフィンも快適になったんだったかな
たしかに一般認知されるか、っていうとテレビCM出しまくるようになってからだろうし、もっとずっと後だね
456デフォルトの名無しさん
2022/03/14(月) 01:42:30.09ID:j1ckIHBu 出た瞬間からアーリーが早く認知してたことをベースにするならRustは10年余裕で超えるので浸透速度が非常に遅い。
そりゃそうよ。OS付近やかなりな低レベルライブラリ向きで、アプリ開発にはバッテリーが小さすぎて向いてないんだから。
そりゃそうよ。OS付近やかなりな低レベルライブラリ向きで、アプリ開発にはバッテリーが小さすぎて向いてないんだから。
457デフォルトの名無しさん
2022/03/14(月) 01:49:04.04ID:rjFiO5pI458デフォルトの名無しさん
2022/03/14(月) 02:24:15.93ID:OitdNeYT 年末に世の中の流行について行こうとPython+OpenpyxlでExcelファイルいじくるプログラム書いてみた
単にワークシート読み込むだけで分オーダー
ライブラリがワークシート読み込みだけなのでこっちはなんもやってない。
こりゃあかんってなって
ためしにC#+EPPLUSで同じプログラム書いてみた
全プログラム終了するまで5秒ww
あと、既存チャートの参照範囲変更するとかEPPLUSでサクッとできることがOpenpxlじゃできねぇんだわ
どこがいいのPythonて?
単にワークシート読み込むだけで分オーダー
ライブラリがワークシート読み込みだけなのでこっちはなんもやってない。
こりゃあかんってなって
ためしにC#+EPPLUSで同じプログラム書いてみた
全プログラム終了するまで5秒ww
あと、既存チャートの参照範囲変更するとかEPPLUSでサクッとできることがOpenpxlじゃできねぇんだわ
どこがいいのPythonて?
459デフォルトの名無しさん
2022/03/14(月) 02:25:55.59ID:U570WKgz460デフォルトの名無しさん
2022/03/14(月) 02:33:50.85ID:OitdNeYT Pythonて集合演算ができるってんで
{a,b,c}3要素からなるべき集合のべき集合とか(ホントは位相空間を作ってみたかった)簡単に書けるかな?とおもってやってみたが、
とても簡単にできそうにない
MathematicaだとSubsets[Subsets[{a, b, c}]]で済む話
このPythonとかゆーがらくた言語なんでこんなに流行ってんの?
インターフェース誌あたりはずーっとPython一色だし。
Web scrapingとかだとC# Scriptでも実行時コンパイルで待たされるんで、
Pythonはイライラ感なく即実行できてウマーとはオモタ
{a,b,c}3要素からなるべき集合のべき集合とか(ホントは位相空間を作ってみたかった)簡単に書けるかな?とおもってやってみたが、
とても簡単にできそうにない
MathematicaだとSubsets[Subsets[{a, b, c}]]で済む話
このPythonとかゆーがらくた言語なんでこんなに流行ってんの?
インターフェース誌あたりはずーっとPython一色だし。
Web scrapingとかだとC# Scriptでも実行時コンパイルで待たされるんで、
Pythonはイライラ感なく即実行できてウマーとはオモタ
461デフォルトの名無しさん
2022/03/14(月) 02:44:33.00ID:OitdNeYT >>459
ま、Python使えないとお前が思うのは勝手だが
ワークシート読み込みのはライブラリが勝手に読むこともわからないんだろな。
プログラマが手を下すとことじゃない。
Matlabあたりも同様だけどこういうインタープリタは繰返し制御文で実行するんじゃなく
ライブラリに任すようにコーディングすんだわ。そこで1分とかかかってるようじゃゴミ判定が正解
ま、Python+Openpyxlは糞だな。とても日々の業務になんか使えないシロモノ。
こんなの使ってエクセルの自動化とか糞本買った方お気の毒としか言い様がない。
会社から金貰ってるって仕事してるっていう気持あるなら、
直接エクセルファイルunzipしてxmlいじくるか、素直にC#+EPPLUS使った方がはるかにまとも
ま、Python使えないとお前が思うのは勝手だが
ワークシート読み込みのはライブラリが勝手に読むこともわからないんだろな。
プログラマが手を下すとことじゃない。
Matlabあたりも同様だけどこういうインタープリタは繰返し制御文で実行するんじゃなく
ライブラリに任すようにコーディングすんだわ。そこで1分とかかかってるようじゃゴミ判定が正解
ま、Python+Openpyxlは糞だな。とても日々の業務になんか使えないシロモノ。
こんなの使ってエクセルの自動化とか糞本買った方お気の毒としか言い様がない。
会社から金貰ってるって仕事してるっていう気持あるなら、
直接エクセルファイルunzipしてxmlいじくるか、素直にC#+EPPLUS使った方がはるかにまとも
462デフォルトの名無しさん
2022/03/14(月) 02:48:39.91ID:OitdNeYT でもおれPythonには日々世話になってんのよな
fakymac+keyhac
しょっちゅう動作がおかしくなるけど、
sunキーボード+emacsで育った世代なんでさww
fakymac+keyhac
しょっちゅう動作がおかしくなるけど、
sunキーボード+emacsで育った世代なんでさww
463デフォルトの名無しさん
2022/03/14(月) 03:00:48.63ID:U570WKgz464デフォルトの名無しさん
2022/03/14(月) 08:06:12.15ID:fAU8x8Os465デフォルトの名無しさん
2022/03/14(月) 11:35:31.82ID:A2g22mwQ466デフォルトの名無しさん
2022/03/15(火) 12:52:11.85ID:s8pRYrZQ rustが広まったらどっちにしろ大して理解してない奴が投入されて地獄見るわ。
そういう当たり前のことすら想像できない奴がrustマンセーしてるんだよな。
そういう当たり前のことすら想像できない奴がrustマンセーしてるんだよな。
467デフォルトの名無しさん
2022/03/15(火) 15:22:25.57ID:sRZMI6dS >>466
一番儲かるのはスコップ売る奴という落ちだろうな。
一番儲かるのはスコップ売る奴という落ちだろうな。
468デフォルトの名無しさん
2022/03/15(火) 15:34:13.41ID:O0maCHfq 参考文献というお布施
469デフォルトの名無しさん
2022/03/15(火) 16:52:44.24ID:Vpjp3tKl 習得難易度が多少高くても自由度が低い言語を使う場合
低スキルメンバーが混ざっても惨事になりにくい
逆に習得難易度が低くても自由度の高い言語を使う場合は
高スキルメンバーで揃えないとすぐに破綻する
低スキルメンバーが混ざっても惨事になりにくい
逆に習得難易度が低くても自由度の高い言語を使う場合は
高スキルメンバーで揃えないとすぐに破綻する
470デフォルトの名無しさん
2022/03/15(火) 17:42:54.49ID:DajlRg+n 昔はJavaの習得難易度高かったからな(VBに比べて)
その頃はそういう言い分もあって、実際にJavaはVBから来たコピペ野郎の洗礼は受けたものの、簡単なことしかさせないフレームワークという武器を得て、人海戦術の片腕となり得た
しかし今は当時より更に難しくなったJavaが習得難易度低に分類されているw
そのJavaより習得難易度がはるかに高く、ライブラリの使い方ではなく言語レベルでの書き方が難しいRustが低スキルメンバーに扱えるかというと・・・w
その頃はそういう言い分もあって、実際にJavaはVBから来たコピペ野郎の洗礼は受けたものの、簡単なことしかさせないフレームワークという武器を得て、人海戦術の片腕となり得た
しかし今は当時より更に難しくなったJavaが習得難易度低に分類されているw
そのJavaより習得難易度がはるかに高く、ライブラリの使い方ではなく言語レベルでの書き方が難しいRustが低スキルメンバーに扱えるかというと・・・w
471デフォルトの名無しさん
2022/03/15(火) 18:36:25.33ID:O0maCHfq C++が出来ないからRustに移ったのにそれも習得できないってあとナニをがんばるのやおまいら
472デフォルトの名無しさん
2022/03/15(火) 18:46:13.42ID:t3FNLZzV C++理解できんようなやつがRustを理解できるわけないやろ
473デフォルトの名無しさん
2022/03/15(火) 18:58:34.72ID:DajlRg+n でも多分ほとんどそういう連中だと思うぞ
普通に勉強対象としてgoとRustを比べてるところがもう死ぬほどおかしいんだけど、そこに思い至らないってことは・・・
普通に勉強対象としてgoとRustを比べてるところがもう死ぬほどおかしいんだけど、そこに思い至らないってことは・・・
474デフォルトの名無しさん
2022/03/15(火) 19:00:10.43ID:N6RMeM8u 言語を習得するのは最低限必要なスキルレベルでしかないのに
それをもってプログラミングスキルを推し測ろうとする人って所詮そのレベルなんだよね
それをもってプログラミングスキルを推し測ろうとする人って所詮そのレベルなんだよね
475デフォルトの名無しさん
2022/03/15(火) 19:02:39.63ID:H3mwwYQo C++はバカでも使えるが、バカは使えこなせず、C++コンパイラはバカコードを通すので、問題を起こす
Rustもバカは使えこなせない点で同じだが、Rustコンパイラはバカコードを通さないため、問題が起きない
Rustもバカは使えこなせない点で同じだが、Rustコンパイラはバカコードを通さないため、問題が起きない
476デフォルトの名無しさん
2022/03/15(火) 19:03:52.90ID:DajlRg+n あとC++が理解出来ないからRustに移るということはない
C++で開発し続けることに挫折して、Rustに移るだけだと思う
C++で開発し続けることに挫折して、Rustに移るだけだと思う
477デフォルトの名無しさん
2022/03/15(火) 19:11:28.15ID:DajlRg+n Rustが問題が起きないということもなくて、Rustを使ったらプログラムを書けなくなる人がかなりの量出るだけw
478デフォルトの名無しさん
2022/03/15(火) 19:13:15.97ID:H3mwwYQo479デフォルトの名無しさん
2022/03/15(火) 19:17:58.62ID:H3mwwYQo >>476
C/C++/Rustいずれか一つでも挫折するような人は、いずれも使いこなせないから結果は同じ
C/C++/Rustいずれも使える人はRustを使う
なぜなら言語の機能が他より高くてプログラミングしやすいため
C/C++/Rustいずれか一つでも挫折するような人は、いずれも使いこなせないから結果は同じ
C/C++/Rustいずれも使える人はRustを使う
なぜなら言語の機能が他より高くてプログラミングしやすいため
480デフォルトの名無しさん
2022/03/15(火) 19:29:06.52ID:DajlRg+n >>478
自力で用意できるかできないかはどうでもよくて、標準ライブラリにあるかないかが大きく違う
だってどの言語でも用意できないわけがないからw
俺はpythonでやるならという条件で書いただけ
>>479
C/C++/Rustはそれぞれ共同開発する人が誰かによって変わるだけ
自分で使うだけなら速いし面白いし安定してるし、C++で書く
C使いが多ければCを使うし
Rust自体を使うことが目的でないのなら、Rustやってみたい人が多いときRustにするだけ
量的には
C > C++ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rust
かなぁ
自力で用意できるかできないかはどうでもよくて、標準ライブラリにあるかないかが大きく違う
だってどの言語でも用意できないわけがないからw
俺はpythonでやるならという条件で書いただけ
>>479
C/C++/Rustはそれぞれ共同開発する人が誰かによって変わるだけ
自分で使うだけなら速いし面白いし安定してるし、C++で書く
C使いが多ければCを使うし
Rust自体を使うことが目的でないのなら、Rustやってみたい人が多いときRustにするだけ
量的には
C > C++ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rust
かなぁ
481デフォルトの名無しさん
2022/03/15(火) 19:35:38.12ID:bERyk9+R C/C++/Rustの3つならば明白に言語が提供する機能差がある
3つとも書けるプログラマーならば99%がRustを選ぶのは間違いない
3つとも書けるプログラマーならば99%がRustを選ぶのは間違いない
482デフォルトの名無しさん
2022/03/15(火) 19:38:32.90ID:WcCf8R0B どんだけ馬鹿にされようが罵られようが構わないけど
C++は糞すぎるワイには手に負えない言語とだけは言っておく
C++20以前はジェネリックスに渡す型引数の制約を実現するために偶然見つかった「SFINAE」という「コンパイラの挙動を応用する方法」を用いるのが標準レベルでデファクトスタンダードになっていたとかヤバすぎだろ
普通の人なら気にも留めないような挙動を一般ユーザーにも把握させることを強要する時点で狂っているとしか思えない
SFINAEの代替手法として導入されたconceptsですらごちゃごちゃしているしそこらの一般ユーザーはc++のバージョンアップについていけるほど忍耐強くはない
だからみんなRustに移る
C++は糞すぎるワイには手に負えない言語とだけは言っておく
C++20以前はジェネリックスに渡す型引数の制約を実現するために偶然見つかった「SFINAE」という「コンパイラの挙動を応用する方法」を用いるのが標準レベルでデファクトスタンダードになっていたとかヤバすぎだろ
普通の人なら気にも留めないような挙動を一般ユーザーにも把握させることを強要する時点で狂っているとしか思えない
SFINAEの代替手法として導入されたconceptsですらごちゃごちゃしているしそこらの一般ユーザーはc++のバージョンアップについていけるほど忍耐強くはない
だからみんなRustに移る
483デフォルトの名無しさん
2022/03/15(火) 19:46:14.60ID:H3mwwYQo484デフォルトの名無しさん
2022/03/15(火) 19:57:31.66ID:DajlRg+n >>481
そんなことねーよw
>>482
まあね。その剥き出し感がいいんだよ遊びで使う分には。見えてない部分がないところ。
一応言っておくと難しい機能は公開するようなコードでは使わないよ。
>>483
https://docs.rs/itertools/0.7.8/src/itertools/combinations.rs.html
そんなことねーよw
>>482
まあね。その剥き出し感がいいんだよ遊びで使う分には。見えてない部分がないところ。
一応言っておくと難しい機能は公開するようなコードでは使わないよ。
>>483
https://docs.rs/itertools/0.7.8/src/itertools/combinations.rs.html
485デフォルトの名無しさん
2022/03/15(火) 20:02:15.14ID:H3mwwYQo >>482
C++のSFINAEはもちろん酷くて論外だが
逆にRustの現状のトレイト実装ルールは実装型を互いに排他を満たす必要があり厳しすぎる
もちろんRustコンパイラは進化し続けていて一部特殊化がそろそろ安定化しそうで少し緩和となり期待
C++のSFINAEはもちろん酷くて論外だが
逆にRustの現状のトレイト実装ルールは実装型を互いに排他を満たす必要があり厳しすぎる
もちろんRustコンパイラは進化し続けていて一部特殊化がそろそろ安定化しそうで少し緩和となり期待
486デフォルトの名無しさん
2022/03/15(火) 20:03:31.49ID:kxxb+wWf 若い頃はSFINAEのパズル解く感じが好きでヤバいコード結構書いてたけど、だんだんあれは正気ではなかったなと思うようになってきた
487デフォルトの名無しさん
2022/03/15(火) 20:06:07.03ID:DajlRg+n >>486
やめてそういうこと言うのw
やめてそういうこと言うのw
488デフォルトの名無しさん
2022/03/15(火) 20:13:48.68ID:bERyk9+R >>484
あなたはそのリンクを出すことでRustを全く知らない無知だとバレました
なぜならそのリンクのitertoolsバージョン0.7.8は4年前なのです
検索でリンクを拾ってこない限りそんな超古いバージョンを示す人はいません
あなたはプログラミング未経験者もしくは初心者であることがバレてしまいました
あなたはそのリンクを出すことでRustを全く知らない無知だとバレました
なぜならそのリンクのitertoolsバージョン0.7.8は4年前なのです
検索でリンクを拾ってこない限りそんな超古いバージョンを示す人はいません
あなたはプログラミング未経験者もしくは初心者であることがバレてしまいました
489デフォルトの名無しさん
2022/03/15(火) 20:30:44.95ID:H3mwwYQo490デフォルトの名無しさん
2022/03/15(火) 20:46:50.19ID:DajlRg+n491デフォルトの名無しさん
2022/03/15(火) 21:05:33.57ID:H3mwwYQo492デフォルトの名無しさん
2022/03/15(火) 21:23:06.07ID:H3mwwYQo もしプログラミングが不慣れで難しいようだったら
イテレータを「どんな仕様」にしてしまってもいいぜ
それがヒントだ
イテレータを「どんな仕様」にしてしまってもいいぜ
それがヒントだ
493デフォルトの名無しさん
2022/03/15(火) 21:27:42.88ID:DajlRg+n お前に認めてもらう必要なんてねーよw Rustを使うやつはバカしかいないんだなw
494デフォルトの名無しさん
2022/03/15(火) 21:37:04.88ID:bERyk9+R >>493
今回は検索してリンクを拾ってこれなかったのね
今回は検索してリンクを拾ってこれなかったのね
495デフォルトの名無しさん
2022/03/15(火) 21:38:31.66ID:DajlRg+n 煽って正解もらいたいバカしかいないの?w
496デフォルトの名無しさん
2022/03/15(火) 22:05:39.63ID:bERyk9+R497デフォルトの名無しさん
2022/03/15(火) 22:10:01.54ID:DajlRg+n 断念もクソもなんでお前らに言われて俺がやる必要があるんだよw バカだろw
ハッキリ言っておくが俺はRust書けるし、多分お前らより詳しいよ普通にw
こういうのがRust推してる信者頭おかしくて性格歪んだやつしかいない雰囲気100%で毛嫌いされてる理由なんだろうなw
ハッキリ言っておくが俺はRust書けるし、多分お前らより詳しいよ普通にw
こういうのがRust推してる信者頭おかしくて性格歪んだやつしかいない雰囲気100%で毛嫌いされてる理由なんだろうなw
498デフォルトの名無しさん
2022/03/15(火) 22:11:58.21ID:DajlRg+n 端的に言うと、流行りばかり気にするすごい頭悪い人たちと同じ匂いがするんだよw
499デフォルトの名無しさん
2022/03/15(火) 22:16:52.73ID:H3mwwYQo >>497
Rustに詳しいならば
既存のこれを使えばいい、と即答できる問題
あるいはsubsetsイテレータという問題だから仕様が自由に何でもいいならば初心者でもコードを一瞬で示せる問題
どちらも出来ないならRust未経験と断定できる
Rustに詳しいならば
既存のこれを使えばいい、と即答できる問題
あるいはsubsetsイテレータという問題だから仕様が自由に何でもいいならば初心者でもコードを一瞬で示せる問題
どちらも出来ないならRust未経験と断定できる
500デフォルトの名無しさん
2022/03/15(火) 22:31:30.23ID:DajlRg+n permutationやcombinationとか普通にはあまり使わないんだよ
競プロとかやってる実利のないコードをメインに書いてるバカがそういうのをやたら使いたがって、俺より遅いコードしか書けないし、創造的なロジックもどうやら苦手そうなのに、そういう問題やたら出してくるんだよね
俺は元々そういうの得意だけど、その手の問題を好き好んで出してくるバカに答えを書いてやるのが嫌なんだよw
納得?
競プロとかやってる実利のないコードをメインに書いてるバカがそういうのをやたら使いたがって、俺より遅いコードしか書けないし、創造的なロジックもどうやら苦手そうなのに、そういう問題やたら出してくるんだよね
俺は元々そういうの得意だけど、その手の問題を好き好んで出してくるバカに答えを書いてやるのが嫌なんだよw
納得?
501デフォルトの名無しさん
2022/03/15(火) 22:43:02.13ID:bERyk9+R502デフォルトの名無しさん
2022/03/15(火) 22:45:50.74ID:DajlRg+n 俺pythonで書いてるし、自分でもすぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
なぜならお前がバカだからw 何度もそう書いてんだけどw
503デフォルトの名無しさん
2022/03/15(火) 22:50:52.11ID:DajlRg+n ああ、ちなみにpermutationやcombinationのアルゴリズムは簡単w
504デフォルトの名無しさん
2022/03/15(火) 22:53:14.37ID:H3mwwYQo さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484
ところが今回のsubsetsについては回答できない
検索で出てこないから答えられないのだとわかる
ところが今回のsubsetsについては回答できない
検索で出てこないから答えられないのだとわかる
505デフォルトの名無しさん
2022/03/15(火) 23:04:20.16ID:DajlRg+n 永久に書いてやるよw
すぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
すぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
506デフォルトの名無しさん
2022/03/15(火) 23:07:34.34ID:bERyk9+R507デフォルトの名無しさん
2022/03/15(火) 23:09:47.42ID:DajlRg+n 永久に書いてやるよw
すぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
すぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
508デフォルトの名無しさん
2022/03/15(火) 23:20:19.51ID:H3mwwYQo509デフォルトの名無しさん
2022/03/15(火) 23:24:18.79ID:DajlRg+n510デフォルトの名無しさん
2022/03/15(火) 23:32:35.94ID:bERyk9+R511デフォルトの名無しさん
2022/03/15(火) 23:54:14.91ID:DajlRg+n 俺理系院卒だから数学一般教養くらいはあるぞw
難しい話をしてるつもりなのかもしれんけどw
難しい話をしてるつもりなのかもしれんけどw
512デフォルトの名無しさん
2022/03/16(水) 00:52:00.92ID:2VKgWl5Z513デフォルトの名無しさん
2022/03/16(水) 10:39:48.98ID:iFx1kR7d 同じことをやるにしてもrustは面倒くさそう
514デフォルトの名無しさん
2022/03/16(水) 14:20:20.70ID:4Deniw6A rustは詳しく知れば知るほど使える領域が狭いことに気付く。まあ勉強して損することはないとは思うけど。
515デフォルトの名無しさん
2022/03/16(水) 16:01:45.47ID:FLjIdsXf まぁ、Rustがものすごく人気になるようだったら、Rustを下敷きにしたC++サブセット Smart C++が出てくると思うわ。
そしてc++はライブラリアン向けのunsafe的な扱いになる、と。
そしてc++はライブラリアン向けのunsafe的な扱いになる、と。
516デフォルトの名無しさん
2022/03/16(水) 17:58:27.77ID:NLGXbRJg >>515
無理じゃないかな。
無理じゃないかな。
517デフォルトの名無しさん
2022/03/16(水) 20:15:10.51ID:TNL7Q8/z rustが他言語の仕様に影響を与える部分はでてくるだろうね。
518デフォルトの名無しさん
2022/03/16(水) 21:02:09.61ID:0TydPa2f 反面教師にはなるよねw
519デフォルトの名無しさん
2022/03/16(水) 21:24:41.08ID:MkjFLw2M520デフォルトの名無しさん
2022/03/16(水) 21:56:01.01ID:GaQESt6l 少なくともC++はリプレイスしてほしいな
521デフォルトの名無しさん
2022/03/16(水) 21:58:33.64ID:0TydPa2f Rust信者って本当にバカだなw
妄想で他人を説得はできないんだよ
グラフ構造を標準ライブラリとunsafe使わずに簡潔に書いてみろよw
他の言語で出来ないやつないから
Rustも超狭い領域ではオンリーワンくらい有効なんだけど、それ以外では趣味でしか使われない
妄想で他人を説得はできないんだよ
グラフ構造を標準ライブラリとunsafe使わずに簡潔に書いてみろよw
他の言語で出来ないやつないから
Rustも超狭い領域ではオンリーワンくらい有効なんだけど、それ以外では趣味でしか使われない
522デフォルトの名無しさん
2022/03/16(水) 23:51:54.51ID:yCGU0QjC >>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"]
横からやけどほんまにどんな仕様にしてもええの?
それなら長さ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"]
523デフォルトの名無しさん
2022/03/16(水) 23:53:02.55ID:yCGU0QjC >>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"]
横からやけどほんまにどんな仕様にしてもええの?
それなら長さ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"]
524デフォルトの名無しさん
2022/03/17(木) 01:31:24.96ID:HeUHSOmZ 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
})
)
}
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
})
)
}
525デフォルトの名無しさん
2022/03/17(木) 02:22:57.24ID:stJJ2apy C++でsubsetsイテレータを書くとどんな感じになるの?
526デフォルトの名無しさん
2022/03/17(木) 02:29:21.66ID:M6s617kA >>519
馬鹿
馬鹿
527デフォルトの名無しさん
2022/03/17(木) 02:39:09.51ID:faeKJv0z528デフォルトの名無しさん
2022/03/17(木) 02:53:46.50ID:75al4ANx529デフォルトの名無しさん
2022/03/17(木) 03:28:10.97ID:OxdqHDsn >>527
ぜひC++版お願い
ぜひC++版お願い
530デフォルトの名無しさん
2022/03/17(木) 04:22:11.55ID:faeKJv0z531デフォルトの名無しさん
2022/03/17(木) 08:12:49.73ID:8E8aTCar >>520
リプレースはしなくていい。
コーダーとかが通常使う安全運転版と、ライブラリアン用のフル版が住み分け・共存できればいい。
従来はコーディング規約とライブラリでやっていたところだけど、こういうのはshared ptrみたいに旨が使う共通仕様にしたほうがいい。
リプレースはしなくていい。
コーダーとかが通常使う安全運転版と、ライブラリアン用のフル版が住み分け・共存できればいい。
従来はコーディング規約とライブラリでやっていたところだけど、こういうのはshared ptrみたいに旨が使う共通仕様にしたほうがいい。
532デフォルトの名無しさん
2022/03/17(木) 08:19:10.27ID:H9cH52GC Rustに移行すれば
色んな問題が一気に解決するだけでなく
プログラミングもしやすくなって一石二鳥
色んな問題が一気に解決するだけでなく
プログラミングもしやすくなって一石二鳥
533デフォルトの名無しさん
2022/03/17(木) 08:41:07.21ID:FVjeEviC >>532
サンプルコードがもっと充実してきて、標準的なコーディングが普及してきてから検討するわ。
Rustは土方向け言語目指しているのに、今のRustの仕様だと土方に難しすぎるから中途半端。それならc++&コーディング規約でいいや。
サンプルコードがもっと充実してきて、標準的なコーディングが普及してきてから検討するわ。
Rustは土方向け言語目指しているのに、今のRustの仕様だと土方に難しすぎるから中途半端。それならc++&コーディング規約でいいや。
534デフォルトの名無しさん
2022/03/17(木) 08:49:29.01ID:+B7ucdDW >>533
君たち土方には難しいのかも知れないが普通のプログラマーにとっては難しくないしコーティングがC++より快適
君たち土方には難しいのかも知れないが普通のプログラマーにとっては難しくないしコーティングがC++より快適
535デフォルトの名無しさん
2022/03/17(木) 08:57:01.71ID:qDb9bUKB Pythonくらいしかやったことない人にとって難しいのはそうだろうけど
C++14/17についていってる人ならRust余裕だと思うけどなぁ
C++14/17についていってる人ならRust余裕だと思うけどなぁ
536デフォルトの名無しさん
2022/03/17(木) 10:08:01.84ID:faeKJv0z 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をやろうと思うのはちょっとオススメできない
楽を出来る場面は確かにあるので、そこをどの程度メリットと捉えるか
制約をどの程度デメリットと捉えるかで評価が分かれる
ただ同じことをしたい場合、手間がすごいかかる(23は知らんけど)
そしてどう転んでもエラーがRustほど人間に優しくなったりはしない(と思う)
C++に出来てRustが似たようなことを出来ないってこともそんなに多くない
まあでもこっちは本当に出来ない
https://www.reddit.com/r/rust/comments/n7rjfk/what_can_c_do_that_rust_cant_2021_edition/
ただRustは初心者には難しすぎ、ある程度他の言語をやってる人にも難しいというハンデがある
なのでスクリプト言語感覚でRustをやろうと思うのはちょっとオススメできない
楽を出来る場面は確かにあるので、そこをどの程度メリットと捉えるか
制約をどの程度デメリットと捉えるかで評価が分かれる
537デフォルトの名無しさん
2022/03/17(木) 12:06:55.23ID:wJGqDNhd538デフォルトの名無しさん
2022/03/17(木) 16:20:31.29ID:YyXXowcK539デフォルトの名無しさん
2022/03/17(木) 18:26:55.16ID:kAy4MIQW540デフォルトの名無しさん
2022/03/17(木) 18:35:40.91ID:+BzvG1OL お手軽さっていう話だと、関数の仮引数の型も型推論してほしい、ってたまに思っちゃう
541デフォルトの名無しさん
2022/03/17(木) 18:44:45.18ID:qDwk9HhQ542デフォルトの名無しさん
2022/03/17(木) 18:59:38.79ID:Rcv7QaS+ > 仮引数の型も型推論
OCamlだとそれはフツーにできてるのにね
> 過去のコードや他人のコードを読むときに直近に型があるのは大きい
同じような話だがJavaのジェネリクスで
> List<Foo> list = new ArrayList<>();
> この右辺のパラメータが省略できるのを有難がるのは残念で
> ホントは左を省略してvar ist = new ArrayList<Foo>();
> と書けたほうが嬉しいのにJavaはやっぱりダメダメ
みたいな意見をみたことがあるが、左を残すことこそ大事なんだよな
実装に対してではなくてインタフェースに対してプログラミングするのであって
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
それをわかってないやつはタイピング数などで判断して世迷い言を言う
OCamlだとそれはフツーにできてるのにね
> 過去のコードや他人のコードを読むときに直近に型があるのは大きい
同じような話だがJavaのジェネリクスで
> List<Foo> list = new ArrayList<>();
> この右辺のパラメータが省略できるのを有難がるのは残念で
> ホントは左を省略してvar ist = new ArrayList<Foo>();
> と書けたほうが嬉しいのにJavaはやっぱりダメダメ
みたいな意見をみたことがあるが、左を残すことこそ大事なんだよな
実装に対してではなくてインタフェースに対してプログラミングするのであって
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
それをわかってないやつはタイピング数などで判断して世迷い言を言う
543デフォルトの名無しさん
2022/03/17(木) 19:25:12.70ID:pdkFYtDC Rust学習しはじめだがEnumの仕組みは良いと思う。
C#あたりに組み込まれればいいのに。
C#あたりに組み込まれればいいのに。
544デフォルトの名無しさん
2022/03/17(木) 20:43:27.53ID:oh1xEFC0 enum Optionとか便利で簡潔に
null nil undefined -1など無くして安全に出来ていいよね
それでいてコンパイル後は最適化されたり消えたりして効率も両立されたり
null nil undefined -1など無くして安全に出来ていいよね
それでいてコンパイル後は最適化されたり消えたりして効率も両立されたり
545デフォルトの名無しさん
2022/03/17(木) 20:52:32.01ID:faeKJv0z 別にC++でも同じことはできるけどね
自分で組めばC++14とかでもrxっぽく書いたり、Optionの実装も余裕
手間さえ惜しまなければw
自分で組めばC++14とかでもrxっぽく書いたり、Optionの実装も余裕
手間さえ惜しまなければw
546デフォルトの名無しさん
2022/03/17(木) 20:55:03.76ID:faeKJv0z Javaも最近は左側省略できるよ
おっしゃるとおり基底型何にするかは選べないけどw
おっしゃるとおり基底型何にするかは選べないけどw
547デフォルトの名無しさん
2022/03/17(木) 20:58:40.56ID:LRb50lm3 C++17にstd::optional<T>があるにはあるのだが...
膨大な量の既存のSTLが無効値をoptionalに置き換えられることはない
つまり無効値でoptionalを返す風潮ができにくいから悲しみ
膨大な量の既存のSTLが無効値をoptionalに置き換えられることはない
つまり無効値でoptionalを返す風潮ができにくいから悲しみ
548デフォルトの名無しさん
2022/03/17(木) 20:59:36.98ID:oh1xEFC0 引数の型推論は原理的にはかなり出来そうだけど
例えば引数がas_ref()で使われていて変換後がPathなら引数はimpl AsRef<Path>までやっちゃう?
でもその利用者へのインタフェース明示や可読性と保守性を考えると型明記でいいような気がする
例えば引数がas_ref()で使われていて変換後がPathなら引数はimpl AsRef<Path>までやっちゃう?
でもその利用者へのインタフェース明示や可読性と保守性を考えると型明記でいいような気がする
549デフォルトの名無しさん
2022/03/17(木) 21:13:38.45ID:faeKJv0z C++もautoだらけlambdaだらけにすると引数も戻り値も結構型書かなくていいけど、遠すぎて何に怒られてるのか分からん代入エラーが出たりもするw
Rustも同じだけどエラーは分かりやすい
Rustも同じだけどエラーは分かりやすい
550デフォルトの名無しさん
2022/03/17(木) 21:15:46.46ID:cEFLJG6J551デフォルトの名無しさん
2022/03/17(木) 21:23:13.02ID:faeKJv0z そこはfilterとmapの方が分かりやすい
552デフォルトの名無しさん
2022/03/17(木) 21:32:28.43ID:7cb0HHrx 一般的にfilter_mapはわかりやすと速さを両立
だからわざわざfilter_mapやfilter_map_okが用意されている
だからわざわざfilter_mapやfilter_map_okが用意されている
553デフォルトの名無しさん
2022/03/17(木) 21:35:05.28ID:faeKJv0z そんなところは全く速さに影響しないと思うよ
554デフォルトの名無しさん
2022/03/17(木) 21:43:21.73ID:LVblziyo555デフォルトの名無しさん
2022/03/17(木) 21:49:32.84ID:faeKJv0z お前は速くなることを確認したんかい?w
俺は出来るけど速くならないことを確認する必要がないと判断したw
お前は恐らく出来ないw
俺は出来るけど速くならないことを確認する必要がないと判断したw
お前は恐らく出来ないw
556デフォルトの名無しさん
2022/03/17(木) 21:58:49.13ID:S0ETBIy2 コードそのままならイテレータ2つより1つの方が速いと明白なので
速さが同じと主張する>>555が最適化で同じコードになることを示す必要がある
速さが同じと主張する>>555が最適化で同じコードになることを示す必要がある
557デフォルトの名無しさん
2022/03/17(木) 22:05:07.99ID:faeKJv0z 明白じゃねーよwwwww
558デフォルトの名無しさん
2022/03/17(木) 22:19:03.24ID:ONkUn4dy たぶん>>557氏はイテレータの動作原理を知らないのだと思う
例えばfilterは構造体Filterを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる
同様にmapは構造体Mapを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる
最適化前はそれら二重のオーバヘッドがある
例えばfilterは構造体Filterを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる
同様にmapは構造体Mapを返しそのメソッドnext()がイテレータを進めるごとに呼ばれる
最適化前はそれら二重のオーバヘッドがある
559デフォルトの名無しさん
2022/03/17(木) 22:24:52.40ID:qNBuWQhB 速さに関して議論するなら最適化のコードがどうなるかを確認すべきでは
特にイテレーターアダプターを何度も噛ませてもfor文相当のコードが生成されるというのはrustの売りのひとつだよね
特にイテレーターアダプターを何度も噛ませてもfor文相当のコードが生成されるというのはrustの売りのひとつだよね
560デフォルトの名無しさん
2022/03/17(木) 22:29:02.79ID:IFNw/pUN もし最適化後に有意に速度差があるなら、それは性能バグとしてIssueにあげるべき問題だと思う
561デフォルトの名無しさん
2022/03/17(木) 22:31:57.85ID:IHLBrgoM562デフォルトの名無しさん
2022/03/17(木) 22:36:47.68ID:faeKJv0z 立証義務なんてねーだろwwww
できないからって他人に頼るなwwwww
できないからって他人に頼るなwwwww
563デフォルトの名無しさん
2022/03/17(木) 22:38:48.81ID:IFNw/pUN 意味的に同じことやってるんだから、理想的な最適化コンパイラは全く同じバイナリを吐くはずで
遅くなるはずってのも別に自明ではないのでは
遅くなるはずってのも別に自明ではないのでは
564デフォルトの名無しさん
2022/03/17(木) 22:46:51.69ID:IHLBrgoM565デフォルトの名無しさん
2022/03/17(木) 22:48:42.58ID:faeKJv0z できないんだねwwww
rustの吐くコードすげー見にくいしなw
それ以前にアセンブラ読めなそうw
rustの吐くコードすげー見にくいしなw
それ以前にアセンブラ読めなそうw
566デフォルトの名無しさん
2022/03/17(木) 22:52:00.13ID:IFNw/pUN567デフォルトの名無しさん
2022/03/17(木) 22:57:38.05ID:s2P7MscG568デフォルトの名無しさん
2022/03/17(木) 23:14:09.53ID:faeKJv0z お前が無知なだけw
569デフォルトの名無しさん
2022/03/17(木) 23:29:12.99ID:OpaED0hw >>565
LLVMがアセンブリを吐いてることも知らないのか
LLVMがアセンブリを吐いてることも知らないのか
570デフォルトの名無しさん
2022/03/17(木) 23:31:17.03ID:faeKJv0z ビビリ単発IDが何もかもを証明しちゃってるw
お前は何も分かってないw
お前は何も分かってないw
571デフォルトの名無しさん
2022/03/17(木) 23:50:47.22ID:76PcfavB >>529
C++ではそんなに簡単には書けない
C++ではそんなに簡単には書けない
572デフォルトの名無しさん
2022/03/17(木) 23:59:39.29ID:faeKJv0z C++でも簡単に書けるよw
C++20で導入されたrangeでも使ってみw
より古い規格でもユーザーライブラリを使えばRxっぽい記述は簡単に出来る
自分で書くと難しくはないが骨が折れるタイプの実装
並列化を意識しない限りだけどw
まあ並列化を意識しないで簡便さを意識すれば無理にRxを使う必要もないけども・・・
C++20で導入されたrangeでも使ってみw
より古い規格でもユーザーライブラリを使えばRxっぽい記述は簡単に出来る
自分で書くと難しくはないが骨が折れるタイプの実装
並列化を意識しない限りだけどw
まあ並列化を意識しないで簡便さを意識すれば無理にRxを使う必要もないけども・・・
573デフォルトの名無しさん
2022/03/18(金) 00:00:49.69ID:Mo7HNly3574デフォルトの名無しさん
2022/03/18(金) 00:03:10.42ID:slshVm4c 加えて言えばRxでなければ上限を意識したループで書けるのでメモリ確保が最適化できるし、手でinlineにする部分を選べる分より速く書ける可能性もあるw
575デフォルトの名無しさん
2022/03/18(金) 00:03:27.72ID:slshVm4c >>573
いくらくれる?
いくらくれる?
576デフォルトの名無しさん
2022/03/18(金) 00:10:24.15ID:eD3MnnxT >>574
無理だ
無理だ
577デフォルトの名無しさん
2022/03/18(金) 00:13:29.40ID:slshVm4c 君にはそうなんだねw可哀想にねw
578デフォルトの名無しさん
2022/03/18(金) 00:37:03.66ID:3Q/aNMKI 前スレの時からそうだけどRustのコードばかり出てくるスレ
C++で同じコードを書くと長く見難くなってしまうからだろうけど
C++で同じコードを書くと長く見難くなってしまうからだろうけど
579デフォルトの名無しさん
2022/03/18(金) 00:49:14.78ID:slshVm4c C++20なら普通に同じくらいw
あるのはRustの不慣れな部分コードねw まあこのレベルの作業に良い悪いもないけどw
君等のお勉強()にはいいんじゃないのw
あるのはRustの不慣れな部分コードねw まあこのレベルの作業に良い悪いもないけどw
君等のお勉強()にはいいんじゃないのw
580デフォルトの名無しさん
2022/03/18(金) 03:33:36.54ID:ljbCBN/E >>524のC++バージョン教えて
581デフォルトの名無しさん
2022/03/18(金) 06:33:28.96ID:slshVm4c これだけヒント出してやったのにまだ書けないのやばくね?w
582デフォルトの名無しさん
2022/03/18(金) 08:39:50.87ID:q9WLoJ2B >>542
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
とか言っているのに、使わない部分も含めてインターフェイスを制限する変数の型制限を有難がるのは笑いどころでしょうか?
「変数の型を固定して、コーダーの想定外の動きをしないように限定する」なら、そういう考えをもあるよね、となるけど。
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
とか言っているのに、使わない部分も含めてインターフェイスを制限する変数の型制限を有難がるのは笑いどころでしょうか?
「変数の型を固定して、コーダーの想定外の動きをしないように限定する」なら、そういう考えをもあるよね、となるけど。
583デフォルトの名無しさん
2022/03/18(金) 19:44:54.15ID:MDox3gf5 >>580
手間がかかって分かりにくいのでC++でやるのは不向き
手間がかかって分かりにくいのでC++でやるのは不向き
584デフォルトの名無しさん
2022/03/18(金) 21:03:36.45ID:slshVm4c >>583
この人も出来ないタイプなんだねw そういうことは全くないよw
この人も出来ないタイプなんだねw そういうことは全くないよw
585デフォルトの名無しさん
2022/03/18(金) 21:36:44.00ID:w8aoFpzv >>584
Rustのように楽にコード書けるの?
Rustのように楽にコード書けるの?
586デフォルトの名無しさん
2022/03/18(金) 21:41:42.97ID:slshVm4c587デフォルトの名無しさん
2022/03/18(金) 22:10:37.73ID:HiGga5GH 9割9分はRustの方が楽にプログラミングできる
588デフォルトの名無しさん
2022/03/18(金) 22:13:55.40ID:slshVm4c 単発IDは自作自演だから信用ならんのだよねw
589デフォルトの名無しさん
2022/03/18(金) 23:01:40.37ID:l4s3ZEj8 ほとんどのケースでC++よりRustが簡潔になることは皆承知
590デフォルトの名無しさん
2022/03/18(金) 23:44:11.33ID:slshVm4c お前がC++使えてないだけw
変わらないよw
単発IDは自作自演
変わらないよw
単発IDは自作自演
591デフォルトの名無しさん
2022/03/19(土) 06:24:53.41ID:GZmTU31E >>590
あちゃ、痛いところつかれましたわ
あちゃ、痛いところつかれましたわ
592デフォルトの名無しさん
2022/03/19(土) 08:29:04.12ID:yuJH1G8D 変わらない と連呼するだけの簡単なお仕事ですw
593デフォルトの名無しさん
2022/03/19(土) 08:34:00.61ID:DslNhsx1 単発IDが皆承知というだけで、ヒントも出したのにC++書けないバカが悪いw
594デフォルトの名無しさん
2022/03/19(土) 08:35:31.99ID:GnnMuKUb Rust信者がたくさん居るかのような見せかけのIDコロコロ
595デフォルトの名無しさん
2022/03/19(土) 14:50:55.94ID:QSBhdvNV596デフォルトの名無しさん
2022/03/19(土) 15:08:06.66ID:DslNhsx1 必要だと思うなら自分で書けよwwww
書かなくても分かるから書いてないだけでw
両方分かる人はちゃんと言葉で説明できるからw
書かなくても分かるから書いてないだけでw
両方分かる人はちゃんと言葉で説明できるからw
597デフォルトの名無しさん
2022/03/19(土) 15:10:45.07ID:DslNhsx1 そもそも分からない言語があるのにこういうスレに来る方が間違いなんだがw
598デフォルトの名無しさん
2022/03/19(土) 15:57:28.84ID:+R/acvy/ >>595
やめたれw
やめたれw
599デフォルトの名無しさん
2022/03/19(土) 16:01:08.28ID:unVMuDSw 口だけでコードとか全然書けないヤツってよくいるよね
600デフォルトの名無しさん
2022/03/19(土) 16:04:54.04ID:DslNhsx1 単発ID君悔しいのねw
俺は永遠に返事し続けるよw 君がC++使えるようになる日が来るといいねw
俺は永遠に返事し続けるよw 君がC++使えるようになる日が来るといいねw
601デフォルトの名無しさん
2022/03/19(土) 16:11:35.17ID:+R/acvy/602デフォルトの名無しさん
2022/03/19(土) 16:12:10.15ID:m5PNQvz6603デフォルトの名無しさん
2022/03/19(土) 16:13:51.10ID:M61n5/yF もう少しわかりやすくして
この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"]
この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"]
604デフォルトの名無しさん
2022/03/19(土) 16:30:53.75ID:kMuw3v3E605デフォルトの名無しさん
2022/03/19(土) 16:40:18.91ID:DslNhsx1 filter_mapがfilterとmapに分かれただけじゃんwwww
マジでそんなのを何度もブラッシュアップするレベルでは俺には一生追いつけないぞw
どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪いのと結局collectしちゃうのはイマイチだねw
あと生成コードの比較、もしくは時間測定は出来たのか?w
何度も言うが、誰でもどちらの言語でも同じように書けるぞw
マジでそんなのを何度もブラッシュアップするレベルでは俺には一生追いつけないぞw
どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪いのと結局collectしちゃうのはイマイチだねw
あと生成コードの比較、もしくは時間測定は出来たのか?w
何度も言うが、誰でもどちらの言語でも同じように書けるぞw
606デフォルトの名無しさん
2022/03/19(土) 17:31:22.77ID:M61n5/yF607デフォルトの名無しさん
2022/03/19(土) 18:10:48.21ID:DslNhsx1 単発IDがたまに連続させたって意味ないんだけどw
その辺はとうに>>572に書いたよね?w まだ出来ないの?wwwww
その辺はとうに>>572に書いたよね?w まだ出来ないの?wwwww
608デフォルトの名無しさん
2022/03/19(土) 18:22:18.16ID:u/mznaJY >>605
> クロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
意味不明すぎ
クロージャを理解できていない?
> 結局collectしちゃうのはイマイチだね
わかりやすくcollectしてるだけだろう
collectを外せばイテレータを返すイテレータとなるのは自明
> クロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
意味不明すぎ
クロージャを理解できていない?
> 結局collectしちゃうのはイマイチだね
わかりやすくcollectしてるだけだろう
collectを外せばイテレータを返すイテレータとなるのは自明
609デフォルトの名無しさん
2022/03/19(土) 18:31:58.03ID:DslNhsx1 またID変えて忙しいやつだなwww
1つ目の点は細かいが、クロージャを外に出したいと思ったときに不自由なんだよw
2つ目の点は遅延評価をわざわざ使うなら、collectしちゃうとロスが発生するのは分かるだろw
例えばコンソールに出力する場合、そのままiteratorをぶん回したらメモリ要らないのに、最初にcollect付けちゃってるから問題なんだよw
後から付ける事はできても、取り外すことは出来ないからw
1つ目の点は細かいが、クロージャを外に出したいと思ったときに不自由なんだよw
2つ目の点は遅延評価をわざわざ使うなら、collectしちゃうとロスが発生するのは分かるだろw
例えばコンソールに出力する場合、そのままiteratorをぶん回したらメモリ要らないのに、最初にcollect付けちゃってるから問題なんだよw
後から付ける事はできても、取り外すことは出来ないからw
610デフォルトの名無しさん
2022/03/19(土) 18:34:23.73ID:+R/acvy/ エアプC++erの言い訳無限に出てくるよw
611デフォルトの名無しさん
2022/03/19(土) 18:37:48.37ID:LL+Ti59i もういいから正解書いてくれ。
612デフォルトの名無しさん
2022/03/19(土) 18:38:41.55ID:DslNhsx1 ありゃりゃココで複垢まで使っちゃうと他で使えなくなっちゃうよ?w いいの?w
613デフォルトの名無しさん
2022/03/19(土) 18:39:15.88ID:+R/acvy/ 書けないのに書けるフリして可哀想やわ
614デフォルトの名無しさん
2022/03/19(土) 18:41:43.33ID:LL+Ti59i 複垢とか何を言ってるのかよくわからんが、正解がどうなるのか気になるので正解かいてくれ。
おれはC++もRustもそんなに知らん。
おれはC++もRustもそんなに知らん。
615デフォルトの名無しさん
2022/03/19(土) 18:43:31.88ID:6MHm2WKJ >>545
手間を惜しまないならチュリ完ならなんでも出来るからなw
手間を惜しまないならチュリ完ならなんでも出来るからなw
616デフォルトの名無しさん
2022/03/19(土) 18:44:04.03ID:DslNhsx1 そんなに知らないならココ見るなよwwww 答えクレクレ君が来る場所じゃないw
617デフォルトの名無しさん
2022/03/19(土) 18:44:08.25ID:jyTBsiM0 >>605
>どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
クロージャーは互いに独立しているので
引数を次のクロージャーで使うのは不可能です
根本的な理解が出来ていないのでは?
>どうでもいいけどクロージャ(ラムダ)の引数を次のクロージャで使うのは気持ち悪い
クロージャーは互いに独立しているので
引数を次のクロージャーで使うのは不可能です
根本的な理解が出来ていないのでは?
618デフォルトの名無しさん
2022/03/19(土) 18:45:06.81ID:DslNhsx1 チュリ完はプログラミング出来るというだけで、何でもは出来んよw 知ったかくんw
619デフォルトの名無しさん
2022/03/19(土) 18:46:38.78ID:DslNhsx1 入れ子のクロージャでって意味の次のだよw ただの順番w
620デフォルトの名無しさん
2022/03/19(土) 18:47:35.76ID:+R/acvy/ だっさwwww
言い訳ばっかやんwww
言い訳ばっかやんwww
621デフォルトの名無しさん
2022/03/19(土) 18:49:45.68ID:DslNhsx1 分かる人は最初ので全部分かってるから、何もしないw
バカが煽ったり質問したりするから永遠に反応してやってるだけw
バカが煽ったり質問したりするから永遠に反応してやってるだけw
622デフォルトの名無しさん
2022/03/19(土) 18:49:59.87ID:LL+Ti59i いやくるなと言われてもくるけどね。
623デフォルトの名無しさん
2022/03/19(土) 18:50:09.75ID:m5PNQvz6 相変わらすc++コードは全然でてこないな。
624デフォルトの名無しさん
2022/03/19(土) 18:50:51.71ID:+R/acvy/ C++書いたほうが早いのに言い訳しか出てこないの怖いわw
625デフォルトの名無しさん
2022/03/19(土) 18:54:53.91ID:DslNhsx1 Rust推しの駆け出し君がC++を語るとか片腹痛いw
626デフォルトの名無しさん
2022/03/19(土) 19:02:54.69ID:cmtG3lS6627デフォルトの名無しさん
2022/03/19(土) 19:04:05.03ID:DslNhsx1 君等のような駆け出し君がやれマウントだドヤ顔だ上から目線だのと言いつつ、自分の仕事に真摯に取り組まず、自身の評価ばかり気にして待遇がどうの周りがどうのと言い始めて辞めた挙げ句、技術も経験もないままニートになってるから社会問題になってるんだよw
まずは足元を固めてじっくり1つのことをやった方がいいと思うぞおっさん的にはw
まずは足元を固めてじっくり1つのことをやった方がいいと思うぞおっさん的にはw
628デフォルトの名無しさん
2022/03/19(土) 19:06:49.48ID:+R/acvy/ お前がなw
629デフォルトの名無しさん
2022/03/19(土) 19:09:27.82ID:DslNhsx1 あれれ?当たっちゃった?w 頑張れよw
630デフォルトの名無しさん
2022/03/19(土) 19:10:49.95ID:GZmTU31E >>625
痛いのは左の腹ですか?それとも右脇腹ですか?
痛いのは左の腹ですか?それとも右脇腹ですか?
631デフォルトの名無しさん
2022/03/19(土) 19:14:41.36ID:DslNhsx1 あえて訂正してこないところが出来るね君w 背中側の腹だよw
632デフォルトの名無しさん
2022/03/19(土) 19:33:55.07ID:YQxYhoLA >>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]))
}
もちろん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]))
}
633デフォルトの名無しさん
2022/03/19(土) 19:50:41.66ID:YQxYhoLA あとはID:DslNhsx1氏がC++バージョンを書けるかどうか
634デフォルトの名無しさん
2022/03/19(土) 19:52:06.07ID:+R/acvy/ やめたれw
635デフォルトの名無しさん
2022/03/19(土) 19:57:39.82ID:DslNhsx1 あれあれ?全文がなくなって動かなくなってるねwwww
変更はそこだけでいいのかな?w
C++はお前が書けないのがおかしいんだよw
変更はそこだけでいいのかな?w
C++はお前が書けないのがおかしいんだよw
636デフォルトの名無しさん
2022/03/19(土) 20:09:59.31ID:YQxYhoLA637デフォルトの名無しさん
2022/03/19(土) 20:41:03.66ID:DslNhsx1 # こんな感じね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!
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!
638デフォルトの名無しさん
2022/03/19(土) 20:42:40.39ID:DslNhsx1 まあ外部に括りにくいのが気になるのは趣味だから修正はやめといたw
joinはformatに変えただけw
そのまま動くというのはこういうコードw
joinはformatに変えただけw
そのまま動くというのはこういうコードw
639デフォルトの名無しさん
2022/03/19(土) 21:18:01.62ID:OlJIHMMJ 相変わらずコピペ&改変だけしかできないガイガー君だ
ゼロからコードを書くのは苦手だからC++版の方は手付かずのままなわけだ
ゼロからコードを書くのは苦手だからC++版の方は手付かずのままなわけだ
640デフォルトの名無しさん
2022/03/19(土) 21:27:48.52ID:jYZm0dN8 金もらわないとコード書かないんじゃなかったのか
機嫌が良かったのかな?
機嫌が良かったのかな?
641デフォルトの名無しさん
2022/03/19(土) 21:39:07.36ID:DslNhsx1 俺は書けるけど、お前らが書けないのに俺が書いたら書かされた感があって嫌なだけw
642デフォルトの名無しさん
2022/03/19(土) 21:44:20.43ID:LL+Ti59i 残念だな。エレガントなC++のコードみたかったわ。
643デフォルトの名無しさん
2022/03/19(土) 21:47:05.64ID:DslNhsx1 じゃあエレガントでないC++のコードを見せろよw
644デフォルトの名無しさん
2022/03/19(土) 21:50:10.65ID:LL+Ti59i いやおれは書かないけどね。なにをいうてんの。
645デフォルトの名無しさん
2022/03/19(土) 21:57:27.50ID:OlJIHMMJ ガイガー君はコピペ改変なら辛うじてできるからC++派の誰かがコードを書くまで無理だろう
646デフォルトの名無しさん
2022/03/19(土) 22:02:11.32ID:DslNhsx1 なんでC++派とかRust派とかいるんだよwwww
両方書けないのになんでこのスレにいるんだよゴミクズどもwwww
両方書けないのになんでこのスレにいるんだよゴミクズどもwwww
647デフォルトの名無しさん
2022/03/19(土) 22:18:51.04ID:pGbdb8un648デフォルトの名無しさん
2022/03/19(土) 22:19:15.66ID:/tgdZc/e 正確には
Rustだと色々シンプルに書けるためRust派
と
C++でも書ける派
ただし後者はコードが出てこないので実証されていない
Rustだと色々シンプルに書けるためRust派
と
C++でも書ける派
ただし後者はコードが出てこないので実証されていない
649デフォルトの名無しさん
2022/03/19(土) 22:25:23.19ID:DslNhsx1 いやいや
RustだとC++より色々シンプルに書ける派と
RustもC++も同じ派がいるだけだろw
C++だとこんなになっちゃいますってコードが前者から出てないんだがw
C++書けないのにRustだけシンプルに書けると思い込んでるバカはお引取り願おうかねwwwww
RustだとC++より色々シンプルに書ける派と
RustもC++も同じ派がいるだけだろw
C++だとこんなになっちゃいますってコードが前者から出てないんだがw
C++書けないのにRustだけシンプルに書けると思い込んでるバカはお引取り願おうかねwwwww
650デフォルトの名無しさん
2022/03/19(土) 22:32:19.39ID:DslNhsx1 あと個人的に無駄が結構気になるので、さっきのコード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(","));
}
}
#![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(","));
}
}
651デフォルトの名無しさん
2022/03/19(土) 22:36:43.09ID:unVMuDSw 絶対コード書けないだろ
面白すぎw
面白すぎw
652デフォルトの名無しさん
2022/03/19(土) 22:42:30.15ID:miakijMp653デフォルトの名無しさん
2022/03/19(土) 23:04:04.71ID:DslNhsx1 別にu32やu16でもいいよw
むしろセットである必要がないのが素晴らしく合理的だし元とかiteratorにした時点で細かく言えば変わっているw
ただ最適化時に範囲チェックがどこまで見てくれるのかが気になるかな…
ノーチェックでいいと判断してくれたら御の字w
むしろセットである必要がないのが素晴らしく合理的だし元とかiteratorにした時点で細かく言えば変わっているw
ただ最適化時に範囲チェックがどこまで見てくれるのかが気になるかな…
ノーチェックでいいと判断してくれたら御の字w
654デフォルトの名無しさん
2022/03/19(土) 23:27:21.61ID:YSd+hKe3655デフォルトの名無しさん
2022/03/19(土) 23:49:24.15ID:DslNhsx1 お前は何を言ってるんだw
inputのサイズで、この方式だと30個が上限w
usizeはオーバースペックなのw
inputのサイズで、この方式だと30個が上限w
usizeはオーバースペックなのw
656デフォルトの名無しさん
2022/03/19(土) 23:58:01.67ID:Xi4ntxoy >>653
Iteratorではなく他の言語のようにコストを払ってVec(のVec)で返したいならば
以下のように2段階それぞれ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のコードが正解
Iteratorではなく他の言語のようにコストを払ってVec(のVec)で返したいならば
以下のように2段階それぞれ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のコードが正解
657デフォルトの名無しさん
2022/03/20(日) 00:10:53.62ID:1+CNf8az658デフォルトの名無しさん
2022/03/20(日) 01:32:33.30ID:+zPQ2FRY659デフォルトの名無しさん
2022/03/20(日) 01:40:13.83ID:1+CNf8az660デフォルトの名無しさん
2022/03/20(日) 01:51:34.86ID:+zPQ2FRY661デフォルトの名無しさん
2022/03/20(日) 01:58:09.59ID:1+CNf8az >>660
頭悪いの?遅延評価されてるので、必要にならない限り計算されないんだけどw
その値も必要時に計算され、その結果を引数に与えられたiteratorが生成されて返ってくるだけだろw
そのときにiteratorがセットになってないindexだけ返ってきてそれがsubsetsになるの?wwww
足りない頭に脳味噌もう少し充填した方がいいよw
頭悪いの?遅延評価されてるので、必要にならない限り計算されないんだけどw
その値も必要時に計算され、その結果を引数に与えられたiteratorが生成されて返ってくるだけだろw
そのときにiteratorがセットになってないindexだけ返ってきてそれがsubsetsになるの?wwww
足りない頭に脳味噌もう少し充填した方がいいよw
662デフォルトの名無しさん
2022/03/20(日) 02:52:06.33ID:fen0VFs0 ガイガー君の主張だと
入力として集合をスライスとしてもらって
出力としてその部分集合をイテレータとして返す>>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(","));
}
}
このように文字列として必要になった場合に初めて変換すればよい
ついでにビット表現文字列も同時に表示できる
ガイガー君の無駄を無くす主張を認めるならばこのほうがさらに優れていることになる
したがってこの件もガイガー君の敗北だ
入力として集合をスライスとしてもらって
出力としてその部分集合をイテレータとして返す>>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(","));
}
}
このように文字列として必要になった場合に初めて変換すればよい
ついでにビット表現文字列も同時に表示できる
ガイガー君の無駄を無くす主張を認めるならばこのほうがさらに優れていることになる
したがってこの件もガイガー君の敗北だ
663デフォルトの名無しさん
2022/03/20(日) 02:58:15.92ID:1+CNf8az バカだなw コードにしなくてもそんなのは分かってんだよwwww
それじゃ意味が不明である上にI/Fとしても稚拙極まりないと言ってるんだよw
返ってくる数字が何なのか意味不明だろうにw
今回は元作者がアホなために30個そこそこしか作成できないわけで、まあそれでもなんとかなるわけだが、いずれロジックを修正して無限に生成できるようにしたときにまだそんなビット列に拘るのかい?
敗北はお前wwww
それじゃ意味が不明である上にI/Fとしても稚拙極まりないと言ってるんだよw
返ってくる数字が何なのか意味不明だろうにw
今回は元作者がアホなために30個そこそこしか作成できないわけで、まあそれでもなんとかなるわけだが、いずれロジックを修正して無限に生成できるようにしたときにまだそんなビット列に拘るのかい?
敗北はお前wwww
664デフォルトの名無しさん
2022/03/20(日) 03:15:01.33ID:fen0VFs0665デフォルトの名無しさん
2022/03/20(日) 03:23:47.90ID:1+CNf8az >>664
お猿さんの妄想が事実と食い違ってたところで俺にはどうでもいいんだけど、事実はC、P、階乗みたいな計算や集合みたいなのは俺小学校時代から知ってるw
だから冪集合と聞くだけで、君のようにカンニングすることなく答えに辿りついてしまうんだよw
ビット表現から生成する方法を必死に提唱してたのは俺一人しか知らないけど、この手の処理は原則変更可能な元データのセットを用意すればスワップするだけで生成出来るものだよw
可哀想にねw
お猿さんの妄想が事実と食い違ってたところで俺にはどうでもいいんだけど、事実はC、P、階乗みたいな計算や集合みたいなのは俺小学校時代から知ってるw
だから冪集合と聞くだけで、君のようにカンニングすることなく答えに辿りついてしまうんだよw
ビット表現から生成する方法を必死に提唱してたのは俺一人しか知らないけど、この手の処理は原則変更可能な元データのセットを用意すればスワップするだけで生成出来るものだよw
可哀想にねw
666デフォルトの名無しさん
2022/03/20(日) 03:33:20.84ID:fen0VFs0 ガイガー君はsubsets関数をプログラミングする時になぜか非常に遠回りとなるitertools.combinationsを使った ソース>>463
この事実からガイガー君はアルゴリズムや数学などが不得意であると断言できる
ここまでコピペ改変しか披露できていないことからプログラミングが不得意なのだろう
この事実からガイガー君はアルゴリズムや数学などが不得意であると断言できる
ここまでコピペ改変しか披露できていないことからプログラミングが不得意なのだろう
667デフォルトの名無しさん
2022/03/20(日) 03:58:13.20ID:1+CNf8az668デフォルトの名無しさん
2022/03/20(日) 05:21:36.47ID:1V6eoYkY >>460を見てみたけど
最終的ににべき集合のべき集合が欲しいみたいよ
MathematicaだとSubsets[Subsets[{a, b, c}]]で済むと言ってるね
それに対して>>463はitertools.combinationsを使ってsubsetsを実装
今回のケースでわざわざcombinationsを用いた実装が必要なのかどうかは不明
そして空集合が出力されないバグ実装
rangeを1開始でなくて0開始にしないと駄目ですよ
それはさておき元と同じインタフェースならばRust版は>>656の実装でOK
subsets(subsets(&["a", "b", "c"])) でべき集合のべき集合がちゃんと得られますね
最終的ににべき集合のべき集合が欲しいみたいよ
MathematicaだとSubsets[Subsets[{a, b, c}]]で済むと言ってるね
それに対して>>463はitertools.combinationsを使ってsubsetsを実装
今回のケースでわざわざcombinationsを用いた実装が必要なのかどうかは不明
そして空集合が出力されないバグ実装
rangeを1開始でなくて0開始にしないと駄目ですよ
それはさておき元と同じインタフェースならばRust版は>>656の実装でOK
subsets(subsets(&["a", "b", "c"])) でべき集合のべき集合がちゃんと得られますね
669デフォルトの名無しさん
2022/03/20(日) 11:54:10.51ID:1+CNf8az まだ言ってんのかよ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
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
670デフォルトの名無しさん
2022/03/20(日) 17:12:41.85ID:URBujIbQ ストレス発散オナニーRusterスレッド
671デフォルトの名無しさん
2022/03/20(日) 17:36:53.71ID:1+CNf8az いや、Rusterは尽く俺にやられてるんだがw
しかもC++できないただの駆け出しw
しかもC++できないただの駆け出しw
672デフォルトの名無しさん
2022/03/20(日) 17:51:03.84ID:HHTijYmK >>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つ目は長いので略
やってみたら>>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つ目は長いので略
673デフォルトの名無しさん
2022/03/20(日) 18:08:01.19ID:1+CNf8az >>672
嘘つきはお前w &が余計についてるやんけw やはり駆け出しRust使いは嘘付きしかいないw
嘘つきはお前w &が余計についてるやんけw やはり駆け出しRust使いは嘘付きしかいないw
674デフォルトの名無しさん
2022/03/20(日) 18:22:11.71ID:6IwS75Da675デフォルトの名無しさん
2022/03/20(日) 18:28:57.25ID:1+CNf8az676デフォルトの名無しさん
2022/03/20(日) 18:37:30.55ID:GV4qdrT7 実際に>>672で動作してるのだからRustの勝利
C++はコードの片鱗すら出てこない
C++はコードの片鱗すら出てこない
677デフォルトの名無しさん
2022/03/20(日) 18:44:09.03ID:1+CNf8az678デフォルトの名無しさん
2022/03/20(日) 19:01:47.10ID:eXUaH9c5 C++20を使いこなせる人がいないことが敗北原因
Rustよりも利用者少ない
だからこのスレにもC++で書ける人が誰もいない
Rustよりも利用者少ない
だからこのスレにもC++で書ける人が誰もいない
679デフォルトの名無しさん
2022/03/20(日) 19:03:19.57ID:1+CNf8az 俺は書けるけどねwwwww
というかお前が書けないのに書き込んでるからこんな変な話になってるだけで、本来は書ける前提でああでもないこうでもないやるスレだろwwww
というかお前が書けないのに書き込んでるからこんな変な話になってるだけで、本来は書ける前提でああでもないこうでもないやるスレだろwwww
680デフォルトの名無しさん
2022/03/20(日) 19:05:31.63ID:DiBIkIVz それ、昔のコンパイラを今でも使ってる人達にも言えるの?
681デフォルトの名無しさん
2022/03/20(日) 19:11:26.79ID:1+CNf8az は?俺だって必要なら昔のコンパイラ使うぞw
特定CPU用のなんて安定したバージョンでないとバグ踏むからなw
特定CPU用のなんて安定したバージョンでないとバグ踏むからなw
682デフォルトの名無しさん
2022/03/20(日) 19:59:25.97ID:kJ/tleYc C++使えなくてRustは使えますとか、
あと10年はなんの価値もないんじゃ...
あと10年はなんの価値もないんじゃ...
683デフォルトの名無しさん
2022/03/20(日) 22:31:20.58ID:271cfGdl そんな妄想をしても場所によりけり
うちはC++以外の諸言語からRustへ移行したので
Rust使えずC++使える人は価値ゼロ
といったように
うちはC++以外の諸言語からRustへ移行したので
Rust使えずC++使える人は価値ゼロ
といったように
684デフォルトの名無しさん
2022/03/20(日) 23:04:08.64ID:1+CNf8az それは最高にやばそうだなw
685デフォルトの名無しさん
2022/03/20(日) 23:25:08.78ID:Ftc+D3LS 業界標準ツールのRust化も激しいよな
例えばJavaScriptでおなじみのトランスパイラBabel
遅いので当然ながらRust版のSWCというのが作成されて
React/Next.jp環境でもBabelからそのRust版へと移行された
例えばJavaScriptでおなじみのトランスパイラBabel
遅いので当然ながらRust版のSWCというのが作成されて
React/Next.jp環境でもBabelからそのRust版へと移行された
686デフォルトの名無しさん
2022/03/20(日) 23:39:52.49ID:1+CNf8az 全部であるかのごとくに書いてるけどごくごく一部だし、しかも期待したほど速度が上がらずに困ってたよねw
JavaScriptに比べてだぞ?w
JavaScriptに比べてだぞ?w
687デフォルトの名無しさん
2022/03/20(日) 23:57:33.12ID:jG5ySy9q >>686
swcはbabelより20〜50倍速い
swcはbabelより20〜50倍速い
688デフォルトの名無しさん
2022/03/21(月) 00:09:57.25ID:BAdp3agq 公称だろ?w 実際試した人がそうでもなかった(忘れたけど1.x倍くらい)って言ってたよw
689デフォルトの名無しさん
2022/03/21(月) 00:10:28.20ID:BAdp3agq しかも場合によっては遅くなるって言ってたw
690デフォルトの名無しさん
2022/03/21(月) 00:53:26.08ID:1rsJ1Bxd691デフォルトの名無しさん
2022/03/21(月) 01:13:09.95ID:BAdp3agq まあ自分で試したわけじゃないから、そう言われても何とも言えんけどなw
692デフォルトの名無しさん
2022/03/21(月) 03:44:24.39ID:qXBNR9Nr >>669
> fn subsets_collect<T>(s: &Vec<T>)
ガイガー君は相変わらず素人のままだな
そこは&Vec<T>ではなく&[T]と書くのだよ
Vec自体の固有機能に関する動作の場合を除き
狭くVecのみを対象にするのはバカげている
スライスを対象にするのが鉄則
&Vec<T> ←Vecしか受け付けられない
&[T] ←Vecも配列もスライスも受け付ける
> fn subsets_collect<T>(s: &Vec<T>)
ガイガー君は相変わらず素人のままだな
そこは&Vec<T>ではなく&[T]と書くのだよ
Vec自体の固有機能に関する動作の場合を除き
狭くVecのみを対象にするのはバカげている
スライスを対象にするのが鉄則
&Vec<T> ←Vecしか受け付けられない
&[T] ←Vecも配列もスライスも受け付ける
693デフォルトの名無しさん
2022/03/21(月) 04:14:12.72ID:BAdp3agq >>692
そんなこと言われなくても知っとるわwwww
それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw
今回のケースではメリットとかないよw
同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw
そんなこと言われなくても知っとるわwwww
それは俺のポリシーとして、可能ならVecを返すならVecを受けたいだけw
今回のケースではメリットとかないよw
同様にsliceで受けたらArrayで返したいし、iteratorを受けたらiteratorを返したいw
694デフォルトの名無しさん
2022/03/21(月) 04:24:26.11ID:Czlt7YRo695デフォルトの名無しさん
2022/03/21(月) 04:53:35.01ID:BAdp3agq >>694
[i32] ... Array
&[i32] ... スライス
T ... T
&T ... Tの参照
という理解で、
・特定の型の参照はスライスとして扱える
・Arrayの参照はスライスと区別できない
と思ってて
→スライスで渡されたらArrayで返す
という発想なんだが、違うの?
[i32] ... Array
&[i32] ... スライス
T ... T
&T ... Tの参照
という理解で、
・特定の型の参照はスライスとして扱える
・Arrayの参照はスライスと区別できない
と思ってて
→スライスで渡されたらArrayで返す
という発想なんだが、違うの?
696デフォルトの名無しさん
2022/03/21(月) 05:13:22.29ID:Czlt7YRo697デフォルトの名無しさん
2022/03/21(月) 05:32:43.26ID:BAdp3agq >>696
なん。。だと!?!?そんな基本的なところを気付いていなかったのかw
では
・Arrayの参照(&[T;N])はスライス([T])と区別できる
let a = &[1,2,3];
のaは俺はずっとスライスと思ってたけど、そうではなく、
let a = &[1,2,3] as &[i32];
とかでないとスライス(の参照)にはならんってことかwwww
これはすまんかったw
ちょっともう一度最初から整理し直さないといかんかもw
ありがとw
なん。。だと!?!?そんな基本的なところを気付いていなかったのかw
では
・Arrayの参照(&[T;N])はスライス([T])と区別できる
let a = &[1,2,3];
のaは俺はずっとスライスと思ってたけど、そうではなく、
let a = &[1,2,3] as &[i32];
とかでないとスライス(の参照)にはならんってことかwwww
これはすまんかったw
ちょっともう一度最初から整理し直さないといかんかもw
ありがとw
698デフォルトの名無しさん
2022/03/21(月) 06:00:44.84ID:Czlt7YRo >>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]へ変えても大丈夫なのですが
ただし関数を使う時にちょっと状況が変わってきます
そこには様々な違いと問題が生じますので実体験しましょう
これがスライスと配列の違いを理解するためのあなたへの宿題です
そこはコアースされます
配列とスライスの違いをわかりやすく使用例で示しましょう
まず「配列を受け取り」その各値を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]へ変えても大丈夫なのですが
ただし関数を使う時にちょっと状況が変わってきます
そこには様々な違いと問題が生じますので実体験しましょう
これがスライスと配列の違いを理解するためのあなたへの宿題です
699デフォルトの名無しさん
2022/03/21(月) 06:10:12.41ID:BAdp3agq700デフォルトの名無しさん
2022/03/21(月) 06:18:10.57ID:Czlt7YRo701デフォルトの名無しさん
2022/03/21(月) 06:22:52.71ID:BAdp3agq >>700
一応配列で渡されたら配列で返したい心理の説明をしておくと、例えばベクタなど配列と同じような構造で動的に拡張可能なコレクションをずっと持ち回っていると、そいつが過去に持っていたデータなどが後ろにくっついてる可能性があったり、余計なメモリを確保していたり、gcなどが効きにくくなったりするので、内部処理で使ったオブジェクトではない、綺麗な生成データを固定で作って返す風習があるんだよw
一応配列で渡されたら配列で返したい心理の説明をしておくと、例えばベクタなど配列と同じような構造で動的に拡張可能なコレクションをずっと持ち回っていると、そいつが過去に持っていたデータなどが後ろにくっついてる可能性があったり、余計なメモリを確保していたり、gcなどが効きにくくなったりするので、内部処理で使ったオブジェクトではない、綺麗な生成データを固定で作って返す風習があるんだよw
702デフォルトの名無しさん
2022/03/21(月) 06:32:23.88ID:Czlt7YRo703デフォルトの名無しさん
2022/03/21(月) 06:33:56.07ID:BAdp3agq >>702
できるし頼んでないのでwwwww
できるし頼んでないのでwwwww
704デフォルトの名無しさん
2022/03/21(月) 06:40:05.89ID:Czlt7YRo705デフォルトの名無しさん
2022/03/21(月) 06:42:57.16ID:BAdp3agq706デフォルトの名無しさん
2022/03/21(月) 06:50:01.91ID:Czlt7YRo707デフォルトの名無しさん
2022/03/21(月) 06:53:37.67ID:BAdp3agq708デフォルトの名無しさん
2022/03/21(月) 06:57:16.08ID:Czlt7YRo709デフォルトの名無しさん
2022/03/21(月) 06:59:16.07ID:BAdp3agq710デフォルトの名無しさん
2022/03/21(月) 07:00:45.10ID:BAdp3agq こういう輩は確かに煽ってみるに限るなw 面白いしw
711デフォルトの名無しさん
2022/03/21(月) 07:04:34.69ID:Czlt7YRo712デフォルトの名無しさん
2022/03/21(月) 07:05:47.35ID:BAdp3agq 他の可能性があるんだ〜へぇ〜それは思いつかなかったなw
どうでもいいけどwwwwwwww
どうでもいいけどwwwwwwww
713デフォルトの名無しさん
2022/03/21(月) 07:14:14.39ID:Czlt7YRo714デフォルトの名無しさん
2022/03/21(月) 07:16:48.53ID:BAdp3agq はいはい、嘘乙wwwww
715デフォルトの名無しさん
2022/03/21(月) 07:18:49.08ID:BAdp3agq ってもう終わりなのかよwwwww
夜までまだ長いぞw
夜までまだ長いぞw
716デフォルトの名無しさん
2022/03/21(月) 07:36:36.37ID:cgJvFkX3 フレームワークのドキュメントは読むのに言語につきてのドキュメントは読まないで雰囲気でやっていたのか
717デフォルトの名無しさん
2022/03/21(月) 07:58:11.85ID:BAdp3agq 早速転生してきたのかw いい心がけだw
いや読んだけど一度切りだよw
俺は必要がなければ読み返さないし、明確にsliceの定義をしているものがなかったので、誤った解釈のままだっただけw
Rustのドキュメントって例ばっかりで、あんまり定義が明確じゃないんだよなw
arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw
immutableがデフォだとわざわざarrayを使う意味があんまりないんだよねw
いや読んだけど一度切りだよw
俺は必要がなければ読み返さないし、明確にsliceの定義をしているものがなかったので、誤った解釈のままだっただけw
Rustのドキュメントって例ばっかりで、あんまり定義が明確じゃないんだよなw
arrayは定義はあるんだけど、今まで初期化にしか使わなかったから、使わなすぎて間違って覚えてたw
immutableがデフォだとわざわざarrayを使う意味があんまりないんだよねw
718デフォルトの名無しさん
2022/03/21(月) 23:29:47.68ID:5Szv6JZQ719デフォルトの名無しさん
2022/03/22(火) 02:53:53.03ID:ZDHdo9X7720デフォルトの名無しさん
2022/03/22(火) 09:25:40.89ID:VA79WEBN なんだかRustってマウント取り合いのキモイ連中ばかりなんだな。
721デフォルトの名無しさん
2022/03/22(火) 09:53:23.73ID:BbUMgG6B >>720
これ
これ
722デフォルトの名無しさん
2022/03/22(火) 11:11:44.38ID:cPdOMca8 そう。学習時間が増えるのは仕方ないしそれはそれでいいんだが、
その副作用としてマウンターがイナゴレベルで発生するのがな。
その副作用としてマウンターがイナゴレベルで発生するのがな。
723デフォルトの名無しさん
2022/03/22(火) 11:33:10.12ID:8EjbgNwb そろそろRust版毛の壁が誕生するのかな
724デフォルトの名無しさん
2022/03/22(火) 12:18:47.19ID:ZDHdo9X7 Rustごときにそんなものは生まれないし、マウントとか気にしてるからそういう空気になるだけw
気をつけるべきは、
・言葉の定義に関する揚げ足取りだけとか
・関係ないことを誰も聞いてもないのに話し始めるとか
・スレ違いの話題とか
そういうのくらいw
気をつけるべきは、
・言葉の定義に関する揚げ足取りだけとか
・関係ないことを誰も聞いてもないのに話し始めるとか
・スレ違いの話題とか
そういうのくらいw
725デフォルトの名無しさん
2022/03/22(火) 13:35:20.32ID:pdrrbcyh 以下のサイトによるとrust製ソフトで一番有名なfirefoxでさえC言語のコードの方がまだ多いらしい
正直、まだまだC/C++に代わるって議論する段階じゃなさそう
https://4e6.github.io/firefox-lang-stats/
正直、まだまだC/C++に代わるって議論する段階じゃなさそう
https://4e6.github.io/firefox-lang-stats/
726デフォルトの名無しさん
2022/03/22(火) 14:09:58.25ID:l3SAD7eY727デフォルトの名無しさん
2022/03/22(火) 14:36:30.97ID:CigmH2/4 Firefoxは超巨大プロダクトの1つだからね
数千万行ものコードで書かれてるみたい
さすがに全部書き換えられなくても仕方ないでしょ
毎日順調に1万行を書き換えても10年とかかかるよ
数千万行ものコードで書かれてるみたい
さすがに全部書き換えられなくても仕方ないでしょ
毎日順調に1万行を書き換えても10年とかかかるよ
728デフォルトの名無しさん
2022/03/22(火) 14:39:46.62ID:oqIjUDQq 新規追加分はどういう割合かしらん。
729デフォルトの名無しさん
2022/03/22(火) 15:27:56.84ID:q+lZbjeY Netscape6の頃から数えると20年以上の歴史があるプロダクトだから数年で10%置き換えられたのはなかなか良いペースなのでは
730デフォルトの名無しさん
2022/03/22(火) 20:15:02.78ID:ZDHdo9X7 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.
..."
"...
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.
..."
731デフォルトの名無しさん
2022/03/24(木) 13:49:05.58ID:A9GFlV37732460
2022/03/24(木) 14:52:36.70ID:A9GFlV37 なんかちょっと見ないうちにえらく盛り上がってるのな
んで、SubSets[Subsets*]]の話になってるが、本質はそこじゃなく
SubSets[Subsets[{a,b,c}]]におけ要素が合併(U)、結合演算に閉じている集合族選び出して位相空間を作り出すってのが到達目標なんだわ。
羃集合の羃集合なんて、なんの工夫もなく実装できるもんだと思ってたらPythonはそれすら出来なかったということで、
集合演算においてはMathematicaレベルにすらない。
位相空間を選び出すには、さらにそこから演算規則にそぐわない集合族は排除しなきゃいけない。
3要素から作り出した位相空間は29個に及ぶんだけど、
Python は既に羃集合の羃集合すら簡単に書けないことが確定した時点で数学研究には使えないってことが明らかなんよね。
それなりのプログラム組んだらいけるってことならC++でもC#でもいけるんですわ。www
ちなみに数学科の初年度でドロップアウトするのがまさにここらしいので、
信学会正員の俺が試しに流行のPython調べてみたって話ですわ、
間違いないのは
・数学の研究に寄与するのはPythonじゃなく素直にMathematica
・Excelファイル外部からいじくりたければOpenpyxelじゃなくC#+EPPLUS
ってこってすわ
ちなみに、数値演算ってことならハナからPythonなんて検討するような対象じゃなく単なるゴミ糞レベルwww
素直にA100でも用意してCUDAでも使えばいい。
なんでゴミ糞Pythonとか流行ってんの?さっぱり理解できんわ。
こんなんWebScrapingとかWeb侵入以外とういうメリットあるの?
あほが使う言語 == Python でFA?
んで、SubSets[Subsets*]]の話になってるが、本質はそこじゃなく
SubSets[Subsets[{a,b,c}]]におけ要素が合併(U)、結合演算に閉じている集合族選び出して位相空間を作り出すってのが到達目標なんだわ。
羃集合の羃集合なんて、なんの工夫もなく実装できるもんだと思ってたらPythonはそれすら出来なかったということで、
集合演算においてはMathematicaレベルにすらない。
位相空間を選び出すには、さらにそこから演算規則にそぐわない集合族は排除しなきゃいけない。
3要素から作り出した位相空間は29個に及ぶんだけど、
Python は既に羃集合の羃集合すら簡単に書けないことが確定した時点で数学研究には使えないってことが明らかなんよね。
それなりのプログラム組んだらいけるってことならC++でもC#でもいけるんですわ。www
ちなみに数学科の初年度でドロップアウトするのがまさにここらしいので、
信学会正員の俺が試しに流行のPython調べてみたって話ですわ、
間違いないのは
・数学の研究に寄与するのはPythonじゃなく素直にMathematica
・Excelファイル外部からいじくりたければOpenpyxelじゃなくC#+EPPLUS
ってこってすわ
ちなみに、数値演算ってことならハナからPythonなんて検討するような対象じゃなく単なるゴミ糞レベルwww
素直にA100でも用意してCUDAでも使えばいい。
なんでゴミ糞Pythonとか流行ってんの?さっぱり理解できんわ。
こんなんWebScrapingとかWeb侵入以外とういうメリットあるの?
あほが使う言語 == Python でFA?
733デフォルトの名無しさん
2022/03/24(木) 15:06:02.22ID:A9GFlV37 >>705
1=1==3と定義することに近いのがδ関数って知ってる?
そう、数学科以外、測度論ってやらないんですよ
連続系の上に離散系を構築したりする。ラプラス変換の上にZ変換作ったりね
そこで使われるのが
∫δ(x)dx =1
本来1点だけが非0の関数なんて積分しても0にしかならない
δ関数ってのは
半直線の面積 == 1
にしますってわけわからん"約束"なんですよ
本来0においてのみ∞、それ以外0って関数は積分しても0にしかならない
それをδ関数に限って1と"約束"するのがポイントなんですね。物理においても工学においても
こういうフェイクでも破綻しないってこじつけが超関数論
1=1==3と定義することに近いのがδ関数って知ってる?
そう、数学科以外、測度論ってやらないんですよ
連続系の上に離散系を構築したりする。ラプラス変換の上にZ変換作ったりね
そこで使われるのが
∫δ(x)dx =1
本来1点だけが非0の関数なんて積分しても0にしかならない
δ関数ってのは
半直線の面積 == 1
にしますってわけわからん"約束"なんですよ
本来0においてのみ∞、それ以外0って関数は積分しても0にしかならない
それをδ関数に限って1と"約束"するのがポイントなんですね。物理においても工学においても
こういうフェイクでも破綻しないってこじつけが超関数論
734デフォルトの名無しさん
2022/03/24(木) 15:33:33.46ID:A9GFlV37 なんかPythonごとき使えるだけのPythonerがでしゃばってるけど
C/C++/C#使えるプログラマが能力的にPython使えないなんてことないからwww
ちょい使ってみてやっぱこりゃあかんってがっかりすることが多い
Cxx使ってて補助言語としてPerl使う、
プログラムランチャーやらお気軽シェルスクリプトとしてはbashもPowerShellを使う、
数値計算電卓にはMatlabもOctaveもScilabも使う、
数式計算ならMathematica もMapleも Mupadも使える、
こういうユーザにとっては
世間でPython流行ってるけどこれ使う意味あんの?って話ね
言語処理系として流行ってる以外にどこがアドバンテージなの?
ってこどですわ
C/C++/C#使えるプログラマが能力的にPython使えないなんてことないからwww
ちょい使ってみてやっぱこりゃあかんってがっかりすることが多い
Cxx使ってて補助言語としてPerl使う、
プログラムランチャーやらお気軽シェルスクリプトとしてはbashもPowerShellを使う、
数値計算電卓にはMatlabもOctaveもScilabも使う、
数式計算ならMathematica もMapleも Mupadも使える、
こういうユーザにとっては
世間でPython流行ってるけどこれ使う意味あんの?って話ね
言語処理系として流行ってる以外にどこがアドバンテージなの?
ってこどですわ
735デフォルトの名無しさん
2022/03/24(木) 15:46:03.00ID:iUQBARfO >>734
深層学習には何使うの?
深層学習には何使うの?
736デフォルトの名無しさん
2022/03/24(木) 15:54:22.45ID:A9GFlV37 空集合の扱いだけど
?と{?}は違うんでね
オチャメなバクとごまかしてたんじゃ
正解に辿り着かないよwww
-
集合族がせいぜいべき集合だと勘違いしてつまづく数学科連中が多いんだそ-な(数学セミナーで読んだ)
3要素からなる集合は最大8個
そこから考えられる集合の属は最大2^8=256個
そのなかで有限演算の結び、非加算合併演算に関して閉じている集合属は29個
?と{?}は違うんでね
オチャメなバクとごまかしてたんじゃ
正解に辿り着かないよwww
-
集合族がせいぜいべき集合だと勘違いしてつまづく数学科連中が多いんだそ-な(数学セミナーで読んだ)
3要素からなる集合は最大8個
そこから考えられる集合の属は最大2^8=256個
そのなかで有限演算の結び、非加算合併演算に関して閉じている集合属は29個
737デフォルトの名無しさん
2022/03/24(木) 15:56:43.89ID:A9GFlV37738デフォルトの名無しさん
2022/03/24(木) 15:57:59.36ID:A9GFlV37739デフォルトの名無しさん
2022/03/24(木) 15:58:08.77ID:y95b8UUh こりゃ貧乏人かな?
740デフォルトの名無しさん
2022/03/24(木) 19:43:58.62ID:1Vr2GJ3G 空集合をうっかり忘れるのはお茶目なバグという以外に表現はないw ちなみに普通はファイと読むんだよw 集合論自体はそんな難しいものじゃないw
Mathematicaは簡単な数式が解ける、グラフが簡単に描けるなどの理由で使う人は昔からいたけど、今はもっと複雑なことしたい人が多いから、数値計算にはRやPythonを使う人が多いと思うw
数理最適化分野も一部の商用ソフトを除けばPythonが多いと思うw
pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw
機械学習(NN)とDBは全く違うけど、もし自然言語処理に詳しいならword2vecの解説記事でも書いてたら世のためにでもなるんじゃない?w 俺も多少は分かるけどw
Mathematicaは簡単な数式が解ける、グラフが簡単に描けるなどの理由で使う人は昔からいたけど、今はもっと複雑なことしたい人が多いから、数値計算にはRやPythonを使う人が多いと思うw
数理最適化分野も一部の商用ソフトを除けばPythonが多いと思うw
pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw
機械学習(NN)とDBは全く違うけど、もし自然言語処理に詳しいならword2vecの解説記事でも書いてたら世のためにでもなるんじゃない?w 俺も多少は分かるけどw
741デフォルトの名無しさん
2022/03/24(木) 20:35:43.32ID:pklAHbiT > pythonが使われるのは、単に中をC/C++で書いて外側をPythonにすると速くて扱いやすいからw
速いのは大半がC++で動いているからで、扱いやすいと言っても、ファイルからデータ
読んで渡すとかの部分だってC++でテンプレート使って書いた方が、Pythonより何倍も
速いと思うが?
速いのは大半がC++で動いているからで、扱いやすいと言っても、ファイルからデータ
読んで渡すとかの部分だってC++でテンプレート使って書いた方が、Pythonより何倍も
速いと思うが?
742デフォルトの名無しさん
2022/03/24(木) 21:17:04.78ID:1Vr2GJ3G あれでしょw やっぱりjupyterの使い勝手がいいんでしょw
ちょっと動かして試してグラフ見て記録取ってみたいな試行錯誤したいときはw
だからガッツリ時間がかかる部分はpythonのままじゃたまったものじゃないけど、取れたデータを試したり外側のロジック組むときはpythonのが楽という理屈だと思うよw
ちょっと動かして試してグラフ見て記録取ってみたいな試行錯誤したいときはw
だからガッツリ時間がかかる部分はpythonのままじゃたまったものじゃないけど、取れたデータを試したり外側のロジック組むときはpythonのが楽という理屈だと思うよw
743デフォルトの名無しさん
2022/03/24(木) 21:58:37.46ID:XlqSDiYA >>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個の位相が算出されました
これで合っていますでしょうか?
その位相空間というのを調べたら冪集合の冪集合のうち 全体と空集合を含み
各要素の和も積も所属していることらしいので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個の位相が算出されました
これで合っていますでしょうか?
744デフォルトの名無しさん
2022/03/24(木) 22:54:59.49ID:9cbRkQeA Rustのイテレータチェーンで宣言的っぽくシンプルに書けていいな
745デフォルトの名無しさん
2022/03/24(木) 23:16:44.72ID:1Vr2GJ3G ついにこんなしょうもない日本語のコードをあげて自画自賛し始めたRust信者w
そんな自明でしょうもないゴミコード書いてる暇があったらクソ速い正規表現エンジンでも作ってみたらいいのにw
そんな自明でしょうもないゴミコード書いてる暇があったらクソ速い正規表現エンジンでも作ってみたらいいのにw
746デフォルトの名無しさん
2022/03/24(木) 23:20:36.69ID:rSdCMchJ747デフォルトの名無しさん
2022/03/24(木) 23:31:17.75ID:Uh4MbO9+ ガイガー君はそういうコードを読めないし書けない
C++で冪集合(subsets)作るのも結局できなかった
C++で冪集合(subsets)作るのも結局できなかった
748デフォルトの名無しさん
2022/03/24(木) 23:46:12.18ID:1Vr2GJ3G 単発IDで自演大変だねw 出来ないのはお前だけw
749デフォルトの名無しさん
2022/03/25(金) 12:11:43.15ID:2aIwxdP0 組み合わせ集合をそのまま保持しようとしてる時点で馬鹿だろ。
何の応用も考えてないの丸出しだな、競技プログラミングとかそっちのアホか。
何の応用も考えてないの丸出しだな、競技プログラミングとかそっちのアホか。
750デフォルトの名無しさん
2022/03/25(金) 12:14:33.84ID:vqaIaLyp >>749
ではお手並み拝見
ではお手並み拝見
751デフォルトの名無しさん
2022/03/25(金) 12:40:40.57ID:enyWdq4S >>749
やめたれw
やめたれw
752デフォルトの名無しさん
2022/03/25(金) 12:42:10.27ID:w9HuCaKe753デフォルトの名無しさん
2022/03/25(金) 13:48:01.88ID:enyWdq4S >>749
お前の負けやで
お前の負けやで
754デフォルトの名無しさん
2022/03/25(金) 14:03:38.99ID:svg4cCIa 枯れスレや 暇人どもの 糞の跡
755デフォルトの名無しさん
2022/03/25(金) 14:31:21.44ID:2aIwxdP0 なるほど、本気でこういうコードをありがたがる馬鹿って結構多いんだな。
そりゃrust厨がいい気になっちゃうわけだ。
そりゃrust厨がいい気になっちゃうわけだ。
756デフォルトの名無しさん
2022/03/25(金) 16:28:42.69ID:xgDHHux/ >>753
ID変え忘れたの?
ID変え忘れたの?
757デフォルトの名無しさん
2022/03/25(金) 17:17:18.88ID:enyWdq4S758デフォルトの名無しさん
2022/03/25(金) 17:43:08.49ID:Sr8uMs9s759デフォルトの名無しさん
2022/03/25(金) 18:17:49.67ID:+pS3/Cvs760デフォルトの名無しさん
2022/03/25(金) 18:52:17.27ID:eoZx8ezX761デフォルトの名無しさん
2022/03/25(金) 18:59:38.47ID:JpusqDH/762デフォルトの名無しさん
2022/03/25(金) 19:32:15.82ID:h6MJAUlj763デフォルトの名無しさん
2022/03/25(金) 21:14:50.48ID:u98H5tRm どっちもどっちなんだが
煽ってるやつの指摘を理解できないやつらも普通にヤバいからな
煽ってるやつの指摘を理解できないやつらも普通にヤバいからな
764デフォルトの名無しさん
2022/03/25(金) 21:15:45.94ID:Sf6AbPmi バカだからコード書けないのに煽ってコードくださいって言うんだよw
765デフォルトの名無しさん
2022/03/25(金) 21:25:12.39ID:1BFpe92B766デフォルトの名無しさん
2022/03/25(金) 21:43:21.60ID:Ux3SzCLX >>759
今まで見てきて『汚コード』と連呼する時は特徴がある
forやifが使われずにイテレータ連鎖や条件メソッドが使われるRustコードの時に『汚コード』と言っている
そのため『汚コード』連呼の人は以下の3つのタイプいずれか
(1) 自分のコードの書き方に偏った信念があって他を受け付けない頑固タイプ
(2) 自分が理解できないコードがあると批判したくなる知弱タイプ
(3) Rustに反感がありRust的な書き方を嫌っているアンチタイプ
今まで見てきて『汚コード』と連呼する時は特徴がある
forやifが使われずにイテレータ連鎖や条件メソッドが使われるRustコードの時に『汚コード』と言っている
そのため『汚コード』連呼の人は以下の3つのタイプいずれか
(1) 自分のコードの書き方に偏った信念があって他を受け付けない頑固タイプ
(2) 自分が理解できないコードがあると批判したくなる知弱タイプ
(3) Rustに反感がありRust的な書き方を嫌っているアンチタイプ
767デフォルトの名無しさん
2022/03/25(金) 22:02:00.11ID:9tHxWkJU 汚ゴーダの承認要求w
768デフォルトの名無しさん
2022/03/25(金) 22:06:20.29ID:6nlCsPOx >>766
2か3だろう
2か3だろう
769デフォルトの名無しさん
2022/03/25(金) 22:53:50.64ID:thqo/0xR まあ1なら信念を説明するなりコードで示すなりするだろうからな
770デフォルトの名無しさん
2022/03/25(金) 23:17:24.40ID:Sf6AbPmi そもそもどうでもいい内容だからなw
771デフォルトの名無しさん
2022/03/25(金) 23:26:38.46ID:5On1tMu9772デフォルトの名無しさん
2022/03/25(金) 23:30:13.03ID:eoZx8ezX773デフォルトの名無しさん
2022/03/26(土) 00:40:57.22ID:9q2PYIcF 書けないやつがいると思うところが怖いw
774デフォルトの名無しさん
2022/03/26(土) 00:41:52.74ID:9q2PYIcF まじでみんなどんどんRustを嫌いになっていくねw
775デフォルトの名無しさん
2022/03/26(土) 01:38:57.93ID:JTqKZDur776デフォルトの名無しさん
2022/03/26(土) 02:27:45.11ID:9q2PYIcF 何度でも言うが書けないのではなく、書かないだけw 煽っても何も出んぞw お前が書けないからって他の人も書けないとか思うなw
777デフォルトの名無しさん
2022/03/26(土) 04:58:35.06ID:YsGlpYqC >>776
今回はコードを読めなかったため批判したりコードを書くところまで辿り着けなかったというオチなんだろ
今回はコードを読めなかったため批判したりコードを書くところまで辿り着けなかったというオチなんだろ
778デフォルトの名無しさん
2022/03/26(土) 06:40:57.68ID:9q2PYIcF 何言ってんだ?この人w 自分のおつむが足りないからって同じ基準で他人を見ない方がいいよw
779デフォルトの名無しさん
2022/03/26(土) 07:02:16.69ID:lZnQW6V9 珍しく反応していないからコードが読めなかったに一票
780デフォルトの名無しさん
2022/03/26(土) 09:36:14.32ID:9y5xuIje 反応がワンパターンになってきてるから、相手が諦めるまで同じ内容を繰り返すんだろうな
低能にありがちな行動w
低能にありがちな行動w
781デフォルトの名無しさん
2022/03/26(土) 12:25:46.50ID:ShQHM1dQ お互い相手にしてもらえるやつがいて良かったね
隔離スレ立てたやつに感謝
隔離スレ立てたやつに感謝
782デフォルトの名無しさん
2022/03/26(土) 23:51:11.15ID:/7nLRmyg >>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も要素も要素となる必須条件
| )))
全てがビット演算のみで済んでいるようだから
どの言語で書いてもこれ以上はシンプルかつ高速にならないと思われる
組み合わせ集合の意味が不明だが['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も要素も要素となる必須条件
| )))
全てがビット演算のみで済んでいるようだから
どの言語で書いてもこれ以上はシンプルかつ高速にならないと思われる
783デフォルトの名無しさん
2022/03/27(日) 00:20:42.47ID:PoGWmBV8 また本人が自画自賛し始めたw この手の処理はbit演算では書かないよw 自分で調べてみればいいw
競プロマニア君が速いコード書けないのに頑張ったって言ってもらいたいらしいw
競プロマニア君が速いコード書けないのに頑張ったって言ってもらいたいらしいw
784デフォルトの名無しさん
2022/03/27(日) 00:33:18.39ID:BBGNEHmu785デフォルトの名無しさん
2022/03/27(日) 01:17:15.21ID:PoGWmBV8 それにしか使えないから書かないんだよw
786デフォルトの名無しさん
2022/03/27(日) 01:24:54.54ID:+ow6V/HP787デフォルトの名無しさん
2022/03/27(日) 01:29:17.18ID:snCfFGlK 普段の仕事もコードを一切書かないで口だけ出す仕事なんだろうな。
788デフォルトの名無しさん
2022/03/27(日) 03:56:07.43ID:PoGWmBV8789デフォルトの名無しさん
2022/03/27(日) 06:10:36.04ID:WvsZWRxm790デフォルトの名無しさん
2022/03/27(日) 07:40:41.39ID:mRPtF6UE791デフォルトの名無しさん
2022/03/27(日) 08:50:56.35ID:PoGWmBV8792デフォルトの名無しさん
2022/03/27(日) 08:52:43.09ID:KQB4wW2v そうやって以後は安価で
793デフォルトの名無しさん
2022/03/27(日) 08:53:00.96ID:0J12mqZ3 オウム返しのつもりとか恥の上塗りw
794デフォルトの名無しさん
2022/03/27(日) 08:58:56.59ID:XGyUiIw6795デフォルトの名無しさん
2022/03/27(日) 10:19:26.28ID:6AFZPnaE >>783
bit演算より速いコードってなにかある?
bit演算より速いコードってなにかある?
796デフォルトの名無しさん
2022/03/27(日) 10:31:00.82ID:rqiHHq3k > この手の処理はbit演算では書かないよw
一切コードを書かないならこれは真だなw
一切コードを書かないならこれは真だなw
797デフォルトの名無しさん
2022/03/27(日) 10:49:42.15ID:PoGWmBV8798デフォルトの名無しさん
2022/03/27(日) 10:54:38.88ID:8Tlml6j+ マジでなんでコード書かないの?
799デフォルトの名無しさん
2022/03/27(日) 10:55:27.25ID:hQNNJiB+800デフォルトの名無しさん
2022/03/27(日) 11:44:30.72ID:PoGWmBV8801デフォルトの名無しさん
2022/03/27(日) 12:15:36.07ID:CPBl4WFe802デフォルトの名無しさん
2022/03/27(日) 12:28:35.30ID:PoGWmBV8803デフォルトの名無しさん
2022/03/27(日) 16:26:12.94ID:snCfFGlK c++にもhygienicマクロ導入してくれたらなぁ
804デフォルトの名無しさん
2022/03/27(日) 17:22:03.05ID:WcFtzXHa Rustのmacroはident属性指定により変数名に関してはhygienicだな
ライフタイムとジェネリック型に関してはそうでないけれど
ライフタイムとジェネリック型に関してはそうでないけれど
805デフォルトの名無しさん
2022/03/27(日) 21:22:52.61ID:PoGWmBV8 マクロそのものが原則いらんw
806デフォルトの名無しさん
2022/03/28(月) 07:49:38.26ID:pN+hSa41 >>783
bit演算を使わないもっと速いコードというのを教えてください
bit演算を使わないもっと速いコードというのを教えてください
807デフォルトの名無しさん
2022/03/28(月) 09:01:32.11ID:ZJaztVr1808デフォルトの名無しさん
2022/03/28(月) 21:03:15.30ID:dJWBHkZn IDE使ってwindows.hとかインクルードしてた時
マクロの処理のせいでどんだけ遅くなってメモリ食ってるんだろうと
よく不安な気持ちになってた
マクロの処理のせいでどんだけ遅くなってメモリ食ってるんだろうと
よく不安な気持ちになってた
809デフォルトの名無しさん
2022/03/28(月) 21:19:08.60ID:aetLX46N810デフォルトの名無しさん
2022/03/28(月) 23:04:54.34ID:51Y1Thh9 まだ続けてんのかよw
Google様の模範解答とか言って的外れなの出されてもw
#includeは別にマクロのせいで遅くなるとかそういう話でもないし、マクロなんか処理としてはまるで重くないw
存在が悪というだけw
Google様の模範解答とか言って的外れなの出されてもw
#includeは別にマクロのせいで遅くなるとかそういう話でもないし、マクロなんか処理としてはまるで重くないw
存在が悪というだけw
811デフォルトの名無しさん
2022/03/28(月) 23:08:33.54ID:SvEFPfvN >>810
ビット演算を使わない速いコードをそろそろ披露して。
ビット演算を使わない速いコードをそろそろ披露して。
812デフォルトの名無しさん
2022/03/29(火) 07:54:52.06ID:CtwsyWiP C++11以降の規画いじりて、よのなかのニーズからすると斜め上の
ユーザーにそっぽ向かれるような規画ばっかなんで注力したのかな?
テンプレートで定義した関数、なんとかうまく自動選択されるように頑張ってみたモノの
最後は泥縄メタ関数でゴテゴテ飾り立てたってのがこの10年だったような気がしてならない
そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの?
あれ慣れてしまうともうtry,catchなんかうざくて使えない
ユーザーにそっぽ向かれるような規画ばっかなんで注力したのかな?
テンプレートで定義した関数、なんとかうまく自動選択されるように頑張ってみたモノの
最後は泥縄メタ関数でゴテゴテ飾り立てたってのがこの10年だったような気がしてならない
そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの?
あれ慣れてしまうともうtry,catchなんかうざくて使えない
813デフォルトの名無しさん
2022/03/29(火) 08:06:32.47ID:fHExY7tI814デフォルトの名無しさん
2022/03/29(火) 09:06:35.79ID:tKmNrPY6 スコープアウトでなんかしたいならデストラクタでどうにかするC++の方針を知らんのか?
815デフォルトの名無しさん
2022/03/29(火) 10:21:53.60ID:HFhqj5qW ちんちんシュッ!シュッ!シュッ!
816デフォルトの名無しさん
2022/03/29(火) 13:42:47.10ID:CtwsyWiP817デフォルトの名無しさん
2022/03/29(火) 13:43:14.23ID:CtwsyWiP >>813
なんやお前
なんやお前
818デフォルトの名無しさん
2022/03/29(火) 14:16:16.84ID:CtwsyWiP 例えば C$の
$"X = {X}"
に慣れてしまうと
cerr,coutあたりの
"x = " << x
とか邪魔臭すぎるだろ
null合体演算子にしてもそう。これがあるかないかで生産性大違い
恐らくすぐにでも実装出来そうな機能が未だに実装されてない。
async/awaitでもC++20でようやく正式サポートだっけ
どこ見て標準規格きめてんの?
CユーザがC++知ってしまうとPure Cで書くのがいやになるように
C++ユーザがC#知ってしまうともうC++で書くのがめんどくさくてかなわんのよな
$"X = {X}"
に慣れてしまうと
cerr,coutあたりの
"x = " << x
とか邪魔臭すぎるだろ
null合体演算子にしてもそう。これがあるかないかで生産性大違い
恐らくすぐにでも実装出来そうな機能が未だに実装されてない。
async/awaitでもC++20でようやく正式サポートだっけ
どこ見て標準規格きめてんの?
CユーザがC++知ってしまうとPure Cで書くのがいやになるように
C++ユーザがC#知ってしまうともうC++で書くのがめんどくさくてかなわんのよな
819デフォルトの名無しさん
2022/03/29(火) 15:10:25.26ID:s791HQmS820デフォルトの名無しさん
2022/03/29(火) 15:59:34.10ID:ffasCIjO そもそもusingと
> 例外処理のデフォルト処理のことを言ってるんだが
になんの関係があるんだ?
> 例外処理のデフォルト処理のことを言ってるんだが
になんの関係があるんだ?
821デフォルトの名無しさん
2022/03/29(火) 16:42:51.37ID:sOLohvn0 usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C#にはRAIIがないから try/finally とかで解放処理を書く必要があったりしてそのtry構文はクソ面倒だけど、usingを使うとお手軽に書ける
まあRAIIがあればそもそもこんなの不要かな
C#にはRAIIがないから try/finally とかで解放処理を書く必要があったりしてそのtry構文はクソ面倒だけど、usingを使うとお手軽に書ける
まあRAIIがあればそもそもこんなの不要かな
822デフォルトの名無しさん
2022/03/29(火) 17:03:56.94ID:1RqC5Y4R RAIIはGC使わない言語用だからな
823デフォルトの名無しさん
2022/03/29(火) 17:07:15.66ID:7ru2bWxl RAIIほどポンコツな名前が長く使われてるケースも珍しいよね
自浄作用とかないのかな
自浄作用とかないのかな
824デフォルトの名無しさん
2022/03/29(火) 17:16:42.76ID:QRpFWUID C#にもlock statementみたいにRAII的なものもある
825デフォルトの名無しさん
2022/03/29(火) 17:59:34.97ID:bjKur886 むしろC++がもたらしたものの中で
一番冴えてるのがRAIIだと思うけど
一番冴えてるのがRAIIだと思うけど
826デフォルトの名無しさん
2022/03/29(火) 18:09:07.22ID:wvo3NcdM そういえばCにdeferが入るかもって話はどうなったんだ?
827デフォルトの名無しさん
2022/03/29(火) 19:17:05.07ID:tpB/JA+o >>816
たぶん
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
のこと言ってるんだろうけど
例外処理のデフォルトってfinallyのことだよな?
finallyで処理するのは例外の時だけじゃないぞ
return/continue/break/throwでusingブロックを抜けるときにIDisposable.Dispose()を実行するための構文だぞ
たぶん
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
のこと言ってるんだろうけど
例外処理のデフォルトってfinallyのことだよな?
finallyで処理するのは例外の時だけじゃないぞ
return/continue/break/throwでusingブロックを抜けるときにIDisposable.Dispose()を実行するための構文だぞ
828デフォルトの名無しさん
2022/03/29(火) 19:52:33.02ID:AEoeDiSF >>821
C#: usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C++: スコープ内で定義すると、スコープアウトされたときにデストラクタを呼び出すことが保証される
まさか知らないの?
C#: usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C++: スコープ内で定義すると、スコープアウトされたときにデストラクタを呼び出すことが保証される
まさか知らないの?
829デフォルトの名無しさん
2022/03/29(火) 20:32:11.38ID:/9JyHlX1 >>822
GCは関係ないな
GCは関係ないな
830デフォルトの名無しさん
2022/03/29(火) 22:21:27.32ID:HLabfOkH スコープ抜けた時の動作するって代物ならやっぱdeferのが明示的で使いやすいってのがcにも入った理由だろうな。
831デフォルトの名無しさん
2022/03/29(火) 22:40:18.50ID:zunmlMTL deferって実際に入ったの? 提案されただけでなく?
書き方が楽なのはC#で間違いない
リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
RAIIって別にそんな重要なキーワードじゃなく、名前はないけど昔からあった考え方で、Windows3.1時代でも皆普通に使ってた
書き方が楽なのはC#で間違いない
リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
RAIIって別にそんな重要なキーワードじゃなく、名前はないけど昔からあった考え方で、Windows3.1時代でも皆普通に使ってた
832デフォルトの名無しさん
2022/03/29(火) 22:56:21.68ID:UoyzmKMm833デフォルトの名無しさん
2022/03/29(火) 23:05:49.29ID:/9JyHlX1 >リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
C#のusingとpythonのwithと、あと有名どころだと何があったっけか
C#のusingとpythonのwithと、あと有名どころだと何があったっけか
834デフォルトの名無しさん
2022/03/30(水) 06:51:40.79ID:ES6j8MQa835デフォルトの名無しさん
2022/03/30(水) 07:54:45.46ID:ES6j8MQa836デフォルトの名無しさん
2022/03/30(水) 07:56:10.67ID:ES6j8MQa837デフォルトの名無しさん
2022/03/30(水) 08:14:44.56ID:MqQwCbKz838デフォルトの名無しさん
2022/03/30(水) 08:18:15.81ID:qdlu4xZp >>834
横だけど、std::ostreamてRAII使えなかったっけ?
コードは適当。
if (std::ofstream sw(filename)) {
sw << "test" << '\n';
} else {
std::cerr << "unable to open '" << filename << "'\n";
}
横だけど、std::ostreamてRAII使えなかったっけ?
コードは適当。
if (std::ofstream sw(filename)) {
sw << "test" << '\n';
} else {
std::cerr << "unable to open '" << filename << "'\n";
}
839デフォルトの名無しさん
2022/03/30(水) 08:47:18.97ID:zgtKcvNm >>834
C++向けに設計されたライブラリならデストラクタに終了処理を全部書いてあるのでusing構文自体が不要
スコープアウトでデストラクタが呼ばれる
std::ofstream fs("a.txt");
fs<<"test"<<std::endl;
C++向けに設計されたライブラリならデストラクタに終了処理を全部書いてあるのでusing構文自体が不要
スコープアウトでデストラクタが呼ばれる
std::ofstream fs("a.txt");
fs<<"test"<<std::endl;
840デフォルトの名無しさん
2022/03/30(水) 08:57:42.45ID:zgtKcvNm841デフォルトの名無しさん
2022/03/30(水) 10:15:21.19ID:sgjjbJfo842デフォルトの名無しさん
2022/03/30(水) 13:15:41.55ID:ES6j8MQa >>839
>fs<<"test"<<std::endl;
ファイルオープンできてるかどうかわからないのに書き込むのかよwww
C++てファイルオープンできてもないところに書き込んだときに
処理を停止せず、自動でうまく例外処理するおしゃれな機能なんてあったっけ?
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
とじゃ全然意味が違うだろ
なんでエラーチェックしないの?
わざわざチェックしなきゃいけないかどうかの話をしてんだよ
わざと論点ずらすな
>C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない
その通り
それを問題にしてんの。
そのおかげでC++では生産性の向上が見られない
認めてるじゃねーかwww
>fs<<"test"<<std::endl;
ファイルオープンできてるかどうかわからないのに書き込むのかよwww
C++てファイルオープンできてもないところに書き込んだときに
処理を停止せず、自動でうまく例外処理するおしゃれな機能なんてあったっけ?
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
とじゃ全然意味が違うだろ
なんでエラーチェックしないの?
わざわざチェックしなきゃいけないかどうかの話をしてんだよ
わざと論点ずらすな
>C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない
その通り
それを問題にしてんの。
そのおかげでC++では生産性の向上が見られない
認めてるじゃねーかwww
843デフォルトの名無しさん
2022/03/30(水) 13:54:11.00ID:nEZBRLmQ C++ vs C#スレ立てるか?
844デフォルトの名無しさん
2022/03/30(水) 14:02:35.35ID:uj+JKNAz >>842
> ファイルオープンできてるかどうかわからないのに書き込むのかよwww
そういうのが欲しけりゃエラー時に例外を出すようにしとけばいいだけ
C# 使ってりゃそれぐらいわかるだろ
... 使えてりゃねw
> ファイルオープンできてるかどうかわからないのに書き込むのかよwww
そういうのが欲しけりゃエラー時に例外を出すようにしとけばいいだけ
C# 使ってりゃそれぐらいわかるだろ
... 使えてりゃねw
845デフォルトの名無しさん
2022/03/30(水) 15:37:33.26ID:Blieee3P846デフォルトの名無しさん
2022/03/30(水) 18:17:46.54ID:aaZp/+dN >>838見ればC++がなぜ衰退していくかよくわかるな
847デフォルトの名無しさん
2022/03/30(水) 18:28:11.81ID:4Wrqo5DU848デフォルトの名無しさん
2022/03/30(水) 20:08:24.48ID:WCI7hBXJ iostreamなんて今使ってないだろ
849デフォルトの名無しさん
2022/03/30(水) 20:21:40.16ID:qIK9n1MF > C#のusingみたいな構文
C#の発明と言うより、発祥は、お前らの嫌いな、Visual Basic(VBA)の、With〜
End Withじゃないかな?
C#の発明と言うより、発祥は、お前らの嫌いな、Visual Basic(VBA)の、With〜
End Withじゃないかな?
850デフォルトの名無しさん
2022/03/30(水) 20:22:04.28ID:UJJsLtPb C++は例外がcharベースのwhatしかない時点で日本語Win上では実情と合わなくなるんよね。
851デフォルトの名無しさん
2022/03/30(水) 20:22:32.28ID:/krHLZdG >>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となるが型が異なるので明白に区別できてミスがあればコンパイル時に検出可能
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となるが型が異なるので明白に区別できてミスがあればコンパイル時に検出可能
852デフォルトの名無しさん
2022/03/30(水) 20:25:10.41ID:/krHLZdG >>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()?;
> ・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()?;
853デフォルトの名無しさん
2022/03/30(水) 20:27:16.59ID:WCI7hBXJ854デフォルトの名無しさん
2022/03/30(水) 20:31:07.93ID:UJJsLtPb それは例外そのものの型のことでしょ。
基本的にはexceptionの派生や孫で作られてるものが大半だからwhatでメッセージ受けるわけだが、
何のエンコードかは定かではない。
基本的にはexceptionの派生や孫で作られてるものが大半だからwhatでメッセージ受けるわけだが、
何のエンコードかは定かではない。
855デフォルトの名無しさん
2022/03/30(水) 20:33:36.81ID:qIK9n1MF >>842
根本的な理解がない、残念君のご様子。
> std::ofstream fs("a.txt");
コンストラクタでOpenする場合、失敗すると例外がスローされるから、関数内
または上位でtry〜catchかな。 C#やJavaで毎回NULL参照チェック書いてるか?
いずれにしろ、オープンされていないオブジェクトが
> fs<<"test"<<std::endl;
に渡されることはない。 こうした処理は、オブジェクトのシリアライズ処理を実装
した関数内へ記述して、参照渡しでオープン済のオブジェクトを渡すのが一般的。
根本的な理解がない、残念君のご様子。
> std::ofstream fs("a.txt");
コンストラクタでOpenする場合、失敗すると例外がスローされるから、関数内
または上位でtry〜catchかな。 C#やJavaで毎回NULL参照チェック書いてるか?
いずれにしろ、オープンされていないオブジェクトが
> fs<<"test"<<std::endl;
に渡されることはない。 こうした処理は、オブジェクトのシリアライズ処理を実装
した関数内へ記述して、参照渡しでオープン済のオブジェクトを渡すのが一般的。
856デフォルトの名無しさん
2022/03/30(水) 20:43:31.08ID:/krHLZdG Rustにはnullも例外もなく
どちらも代数的データ型であるenumで表現するため
シンプルかつ安全性をコンパイル時に保証できる
どちらも代数的データ型であるenumで表現するため
シンプルかつ安全性をコンパイル時に保証できる
857デフォルトの名無しさん
2022/03/30(水) 21:06:36.60ID:UJJsLtPb RustでC#のdynamicみたいなことやるにはどうするの?
858デフォルトの名無しさん
2022/03/30(水) 21:23:30.04ID:yBbOBLyf >>849
全然ちゃうわww
全然ちゃうわww
859デフォルトの名無しさん
2022/03/30(水) 21:25:28.30ID:9xKIjqbP >>857
C#はdynamic型という間違った方法を取ったため
C#は実行時エラーおよび実行時例外が発生し安全でない
Rustは型とは直行するトレイトがあるため
複数の様々な型に対して共通する振る舞いをトレイトとして実装できる
これらはコンパイル時にチェックされ実行時の安全性が保証される
更に加えてトレイトの利用方法は用途に向けて2種類用意されている
1つは利用時にimpl Traitで宣言する静的なトレイト利用であり
複数の様々な型に対して各々の静的に異なるコードが適用され高速である
もう1つは利用時にdyn Traitで宣言する動的なトレイト利用であり
複数の様々な型に対して実行時にダイナミックにディスパッチし柔軟である
2種類ともにコンパイル時にチェック確定するため
Rustではこれら実行時にエラーや例外が起きることはない
C#はdynamic型という間違った方法を取ったため
C#は実行時エラーおよび実行時例外が発生し安全でない
Rustは型とは直行するトレイトがあるため
複数の様々な型に対して共通する振る舞いをトレイトとして実装できる
これらはコンパイル時にチェックされ実行時の安全性が保証される
更に加えてトレイトの利用方法は用途に向けて2種類用意されている
1つは利用時にimpl Traitで宣言する静的なトレイト利用であり
複数の様々な型に対して各々の静的に異なるコードが適用され高速である
もう1つは利用時にdyn Traitで宣言する動的なトレイト利用であり
複数の様々な型に対して実行時にダイナミックにディスパッチし柔軟である
2種類ともにコンパイル時にチェック確定するため
Rustではこれら実行時にエラーや例外が起きることはない
860デフォルトの名無しさん
2022/03/30(水) 21:55:25.20ID:qIK9n1MF > Rustではこれら実行時にエラーや例外が起きることはない
実行時にメモリが足りなくなったら、Rustで書かれたプログラムは
どんな挙動を返すの?
実行時にメモリが足りなくなったら、Rustで書かれたプログラムは
どんな挙動を返すの?
861デフォルトの名無しさん
2022/03/30(水) 21:57:54.53ID:UJJsLtPb それだと使えないなぁ。
862デフォルトの名無しさん
2022/03/30(水) 21:58:03.62ID:qIK9n1MF863デフォルトの名無しさん
2022/03/30(水) 22:00:39.04ID:T6u2kz/X 毎度のことながら複オジのアホ解説読むと
Rust勧めてるのはこのレベルの人なのかと悲しくなる
無知にも程がある
Rust勧めてるのはこのレベルの人なのかと悲しくなる
無知にも程がある
864デフォルトの名無しさん
2022/03/30(水) 22:05:28.12ID:qUkXH45r >>860
それちゃんとよく読めよ
C#のdynamic型に対応するものの話だろ
ちなみにRustではメモリアロケータも変更可能&自作も可能でベアメタル含めて任意の環境に対応できる
だからメモリ不足時の対応も自由にできてOS等も書ける
もちろん一番単純な対処としてはpanic
それちゃんとよく読めよ
C#のdynamic型に対応するものの話だろ
ちなみにRustではメモリアロケータも変更可能&自作も可能でベアメタル含めて任意の環境に対応できる
だからメモリ不足時の対応も自由にできてOS等も書ける
もちろん一番単純な対処としてはpanic
865デフォルトの名無しさん
2022/03/30(水) 22:07:51.84ID:jqrh8rWF866デフォルトの名無しさん
2022/03/30(水) 22:11:11.16ID:bu0twkVZ867デフォルトの名無しさん
2022/03/30(水) 22:14:11.74ID:UJJsLtPb 対象なオブジェクトがrust内にあるわけでも存在してるかさえわからない状態なんだから、
実行時にはエラーや例外が発生すると思うのだが...
実行時にはエラーや例外が発生すると思うのだが...
868デフォルトの名無しさん
2022/03/30(水) 22:25:39.59ID:ALQUZfnd869デフォルトの名無しさん
2022/03/30(水) 22:26:22.84ID:qIK9n1MF >>866
お前がナー
お前がナー
870デフォルトの名無しさん
2022/03/30(水) 22:31:08.47ID:YEeL7eMZ >>867
それはC#でdynamic型を使って問題を解決している例ではないのでは?
例えばWebのDOM操作など色んな異なる型が返ってくるときのためにC#ではdynamic型を使う
Rustではそういう時にトレイトを使うので色んな異なる型が返ってきても対応できる
それはC#でdynamic型を使って問題を解決している例ではないのでは?
例えばWebのDOM操作など色んな異なる型が返ってくるときのためにC#ではdynamic型を使う
Rustではそういう時にトレイトを使うので色んな異なる型が返ってきても対応できる
871デフォルトの名無しさん
2022/03/30(水) 22:34:21.72ID:qIK9n1MF872デフォルトの名無しさん
2022/03/30(水) 22:37:02.42ID:qIK9n1MF873デフォルトの名無しさん
2022/03/30(水) 22:42:11.12ID:OkNrkUse874デフォルトの名無しさん
2022/03/30(水) 22:47:22.15ID:4xlnCCQ3 >>860
君は頭が悪いな
C#のdynamic型は失敗仕様であるという話だぜ
メモリが十分にあっても実行時エラーや例外で死んでしまう
コンパイラが検知できない仕様なためミスがあっても通してしまうからだ
君は頭が悪いな
C#のdynamic型は失敗仕様であるという話だぜ
メモリが十分にあっても実行時エラーや例外で死んでしまう
コンパイラが検知できない仕様なためミスがあっても通してしまうからだ
875デフォルトの名無しさん
2022/03/30(水) 22:50:27.28ID:NgOFxdTU876デフォルトの名無しさん
2022/03/30(水) 23:09:24.22ID:4bDt5Vb4 dynamic自体は名前がわかってるreflectionをいちいち書くのダルいから妥当な導入ではある
ジェネリクスにC++20のrequiresみたいな制限があればdynamicなんていらなかったのは確かだが
ジェネリクスにC++20のrequiresみたいな制限があればdynamicなんていらなかったのは確かだが
877デフォルトの名無しさん
2022/03/30(水) 23:15:44.80ID:SheiVyTd 実行時になってようやくエラーを引き起こし得るdynamicはC#の設計ミス
C++やRustは異なる解決をしている
C++やRustは異なる解決をしている
878デフォルトの名無しさん
2022/03/30(水) 23:59:52.46ID:Lj4LP6Zg dynamicってそもそもリフレクション+式木でしょうが
こんなもん使うな
ジェネリック使え
こんなもん使うな
ジェネリック使え
879デフォルトの名無しさん
2022/03/31(木) 00:03:05.89ID:EY1WgKK4 tagged-unionだよ
880デフォルトの名無しさん
2022/03/31(木) 00:24:36.68ID:LBSBAbTE ミスった時にコンパイルエラーを出せない仕様はよくないな
>>859
Rustでの対応は3種類だな
(1) ジェネリックにトレイト境界で制約して静的にモノモーフィゼーション
(2) ジェネリックにトレイト境界で制約して動的にディスパッチ
(3) enumでタグ付け収容して処理時分岐
いずれもプログラミングでミスれば実行時ではなくコンパイル時に早期エラー発覚できる
>>859
Rustでの対応は3種類だな
(1) ジェネリックにトレイト境界で制約して静的にモノモーフィゼーション
(2) ジェネリックにトレイト境界で制約して動的にディスパッチ
(3) enumでタグ付け収容して処理時分岐
いずれもプログラミングでミスれば実行時ではなくコンパイル時に早期エラー発覚できる
881デフォルトの名無しさん
2022/03/31(木) 01:54:42.49ID:sTE3Pr3t882デフォルトの名無しさん
2022/03/31(木) 15:47:20.37ID:TWJkYixT883デフォルトの名無しさん
2022/03/31(木) 16:56:25.59ID:+qzJxbYZ >>882
上にも書いたけど自由度は高いと思うけど忘れたり間違えたりしそうで怖い
上にも書いたけど自由度は高いと思うけど忘れたり間違えたりしそうで怖い
884デフォルトの名無しさん
2022/03/31(木) 17:43:45.66ID:TWJkYixT デストラクタを正しく書く方が簡単で間違いと考えてる?あんまり理解できんな。
885デフォルトの名無しさん
2022/03/31(木) 18:24:33.50ID:wBL3yx/w886デフォルトの名無しさん
2022/03/31(木) 18:47:26.32ID:d1Z8MU3o887デフォルトの名無しさん
2022/04/02(土) 20:19:43.92ID:Yphv2UuC https://discourse.llvm.org/t/rfc-lifetime-annotations-for-c/61377
clangの独自拡張としてだけどC++にlifetime入れようという議論があるんだね
clangの独自拡張としてだけどC++にlifetime入れようという議論があるんだね
888デフォルトの名無しさん
2022/04/02(土) 20:54:43.62ID:ezdDFz2p ライフタイム導入すればコンパイル時点でバグを発見できて
実行時の無駄なデバッグを減らせるし
メモリ関係の未知のセキュリティバグもコンパイル時点で検出できるもんな
実行時の無駄なデバッグを減らせるし
メモリ関係の未知のセキュリティバグもコンパイル時点で検出できるもんな
889デフォルトの名無しさん
2022/04/02(土) 22:41:04.77ID:5MtdHF70 これ以上C++を接ぎ木してこねくり回すの止めにしたら
890デフォルトの名無しさん
2022/04/03(日) 11:55:08.48ID:W9pHkRzU >>887
でもrustと同じならdoubly linked listは表現出来ないんでしょ?
でもrustと同じならdoubly linked listは表現出来ないんでしょ?
891デフォルトの名無しさん
2022/04/03(日) 12:04:52.85ID:llhYZSlD >>889
C++ってかわいそうな運命だよなあ
C++ってかわいそうな運命だよなあ
892デフォルトの名無しさん
2022/04/03(日) 16:13:05.78ID:9lFqLTmO >>890
それはlifetime関係なくてxor mutabilityの話だよね
それはlifetime関係なくてxor mutabilityの話だよね
893デフォルトの名無しさん
2022/04/03(日) 16:37:52.29ID:W9pHkRzU >>892
なるほど
なるほど
894デフォルトの名無しさん
2022/04/03(日) 17:12:35.56ID:Qom6hzMo >>890
Rustでは出来るよ
Rustでは出来るよ
895デフォルトの名無しさん
2022/04/03(日) 17:28:58.27ID:FsLhH6TX >>885
そんなの一行書くだけろ。。むしろ意図通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。
そんなの一行書くだけろ。。むしろ意図通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。
896デフォルトの名無しさん
2022/04/03(日) 17:44:36.67ID:77d+30yb >>895
> そんなの一行書くだけろ。。
できないプログラマーの典型で草
一行書くだけだから確実にできると言うならバグは無くなるわ
> むしろ意図通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。
それはお前の能力が足らんだけ
> そんなの一行書くだけろ。。
できないプログラマーの典型で草
一行書くだけだから確実にできると言うならバグは無くなるわ
> むしろ意図通りのデストラクタが動いてるか怪しい挙動するデストラクタのが問題起こりまくりだわ。
それはお前の能力が足らんだけ
897デフォルトの名無しさん
2022/04/03(日) 17:49:59.46ID:rc6NcMYZ >>895
defer使えば怪しい挙動は絶対しないとでも?
defer使えば怪しい挙動は絶対しないとでも?
898デフォルトの名無しさん
2022/04/03(日) 17:57:55.57ID:9lFqLTmO デストラクタでリソースが解放されることを保証するのはデータ構造を定義する人だけど
deferの場合はデータ構造を使う人の責任になる
データ構造を定義する回数と使う回数では普通は後者の方が多くなるから
deferの方が間違いを起こしやすいと
deferの場合はデータ構造を使う人の責任になる
データ構造を定義する回数と使う回数では普通は後者の方が多くなるから
deferの方が間違いを起こしやすいと
899デフォルトの名無しさん
2022/04/03(日) 19:34:48.12ID:W9pHkRzU >>894
実行時にオーバヘッドが出る形でしか実現できないやん
実行時にオーバヘッドが出る形でしか実現できないやん
900デフォルトの名無しさん
2022/04/03(日) 20:40:47.40ID:9lFqLTmO901デフォルトの名無しさん
2022/04/04(月) 09:02:06.19ID:14cK0a9Z >>900
LinkedListってunsafeで実装されてるんだけど静的にメモリセーフティを実現する言語機能があるRustでそれをするっておかしいよね?
それって行儀よく実装するとオーバーヘッドが出ることの裏返しだよね?ちょっとは頭を使おうか?
LinkedListってunsafeで実装されてるんだけど静的にメモリセーフティを実現する言語機能があるRustでそれをするっておかしいよね?
それって行儀よく実装するとオーバーヘッドが出ることの裏返しだよね?ちょっとは頭を使おうか?
902デフォルトの名無しさん
2022/04/04(月) 09:14:12.42ID:y2zkcNcq903デフォルトの名無しさん
2022/04/04(月) 09:31:58.76ID:WSInp7AV >>901
linked listに限らず何でもunsafeで作られているよ
unsafeは悪ではなく、安全なインタフェースを備えた型やモジュールの内部に閉じ込めるもの
その結果Rustではプログラム全体の安全性を保証できる
悪なのはプログラム全体がunsafe状態なC/C++
linked listに限らず何でもunsafeで作られているよ
unsafeは悪ではなく、安全なインタフェースを備えた型やモジュールの内部に閉じ込めるもの
その結果Rustではプログラム全体の安全性を保証できる
悪なのはプログラム全体がunsafe状態なC/C++
904デフォルトの名無しさん
2022/04/04(月) 09:56:40.12ID:88Lrr0N7905デフォルトの名無しさん
2022/04/04(月) 10:04:31.11ID:y2zkcNcq906デフォルトの名無しさん
2022/04/04(月) 10:09:11.84ID:9r+bgOYm >>903
それってRustの型システムに基づいて行儀よく実装するとオーバーヘッドが出ることへの反論になってないよね?
つまりRustの型システムはdoubly linked listを含めたあらゆるデータ構造をオーバーヘッドなく実装できるほどの表現力がないってことだよね
それってRustの型システムに基づいて行儀よく実装するとオーバーヘッドが出ることへの反論になってないよね?
つまりRustの型システムはdoubly linked listを含めたあらゆるデータ構造をオーバーヘッドなく実装できるほどの表現力がないってことだよね
907デフォルトの名無しさん
2022/04/04(月) 10:23:50.48ID:y2zkcNcq >>906
safe rustの範疇ではあらゆるデータ構造を表現できないのはその通り
なのでunsafeというescape hatchを用意している
rustはpureな言語ではないのでコンパイラですべての安全性を保証することは最初から狙ってないよ
safe rustの範疇ではあらゆるデータ構造を表現できないのはその通り
なのでunsafeというescape hatchを用意している
rustはpureな言語ではないのでコンパイラですべての安全性を保証することは最初から狙ってないよ
908デフォルトの名無しさん
2022/04/04(月) 10:34:53.41ID:M7C/Fpbq >>906
それは違う
例えばVec(ベクタ)はRustが標準ライブラリで提供している型だが
LinkedList(二重リンクリスト)もRustが標準ライブラリで提供している型である
VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している
その両者に違いはなくRustによる安全性の保証に何も問題を及ぼしていない
それは違う
例えばVec(ベクタ)はRustが標準ライブラリで提供している型だが
LinkedList(二重リンクリスト)もRustが標準ライブラリで提供している型である
VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している
その両者に違いはなくRustによる安全性の保証に何も問題を及ぼしていない
909デフォルトの名無しさん
2022/04/04(月) 13:39:53.90ID:RabHiWd3 オーバーヘッドwってことでいいじゃん
中途半端な知識でムキになるから無駄なやり取りが続くんだよ
中途半端な知識でムキになるから無駄なやり取りが続くんだよ
910デフォルトの名無しさん
2022/04/04(月) 15:17:06.36ID:ilb8jjlp >>908
> VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している
ホントかなぁ。 ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ
に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど?
これを防ぐには、ベクターやリスト自体はもちろん、各要素や生ポインタを含めて
あらゆる変数に参照カウンタを設けた上で、参照数が0になったタイミングでオブ
ジェクト自動破棄する必要があるが、まさにオーバーヘッド。
> VecもLinkedListも内部でunsafeを用いているが安全なインタフェースのみを公開している
ホントかなぁ。 ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ
に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど?
これを防ぐには、ベクターやリスト自体はもちろん、各要素や生ポインタを含めて
あらゆる変数に参照カウンタを設けた上で、参照数が0になったタイミングでオブ
ジェクト自動破棄する必要があるが、まさにオーバーヘッド。
911デフォルトの名無しさん
2022/04/04(月) 18:59:43.72ID:RDBERkGC rustって、unsafe使っていても
メモリ安全のチェックはしてくれるって事であってる?
メモリ安全のチェックはしてくれるって事であってる?
912デフォルトの名無しさん
2022/04/04(月) 19:11:22.90ID:vi3Hd2oR913デフォルトの名無しさん
2022/04/04(月) 19:18:31.93ID:UrWVuubJ rustって、制限きついなら制限緩い他の言語に変換しやすいとかある?
914デフォルトの名無しさん
2022/04/04(月) 20:04:42.98ID:0mSmJ0PC 標準ライブラリに問題がないって言い切れるの?
コンパイラとか標準ライブラリを盲信できるほど完成度高いんですかね
盲信してると不具合の発見に支障が出そう
コンパイラとか標準ライブラリを盲信できるほど完成度高いんですかね
盲信してると不具合の発見に支障が出そう
915デフォルトの名無しさん
2022/04/04(月) 20:07:34.39ID:Aq9lII9f 嫌なら使わなければいいだけやろ
916デフォルトの名無しさん
2022/04/04(月) 20:19:31.81ID:VNZL7sLo >>910
そんなRustの初歩くらいは学んでからレスしようぜw
そんなRustの初歩くらいは学んでからレスしようぜw
917デフォルトの名無しさん
2022/04/04(月) 20:23:28.80ID:y2zkcNcq >>914
プログラムがバグった時にまず自分のコードを疑うべきと言える程度には信頼できると思うよ
プログラムがバグった時にまず自分のコードを疑うべきと言える程度には信頼できると思うよ
918デフォルトの名無しさん
2022/04/04(月) 20:28:34.57ID:88Lrr0N7 >>916
オーバーヘッドなのは否定できてなくて草
オーバーヘッドなのは否定できてなくて草
919デフォルトの名無しさん
2022/04/04(月) 20:41:28.56ID:y2zkcNcq >>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
> ベクターやリストが管理するオブジェクト参照を、別の参照ポインタ
> に代入して、ベクターやリストを破棄した後で参照を使うとぬるぽになりそうだけど?
以下のようなコードを意図してるんだと思うけど 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
920デフォルトの名無しさん
2022/04/04(月) 20:48:51.57ID:ZmDtAG5s921デフォルトの名無しさん
2022/04/04(月) 21:00:31.84ID:V8HUi7lD 殆どの言語が標準ライブラリはバグってたりセキュリティの穴見つかったりして更新し続けてるがな。
922デフォルトの名無しさん
2022/04/04(月) 21:11:15.35ID:y9KalPQq メモリ安全性に関していえば
Rustなら不具合の可能性があるのはコンパイラとライブラリのunsafe領域だけだけど
(しかもそれらはそこそこの人数でチェックされている)
C/C++の場合ありとあらゆる箇所で可能性があるからな
盲信とかでなく単純に引く確率が低い
Rustなら不具合の可能性があるのはコンパイラとライブラリのunsafe領域だけだけど
(しかもそれらはそこそこの人数でチェックされている)
C/C++の場合ありとあらゆる箇所で可能性があるからな
盲信とかでなく単純に引く確率が低い
923デフォルトの名無しさん
2022/04/04(月) 21:11:46.66ID:yn3hKO4L libcにもバグあるしそれどころか
カーネルもヤバい問題発覚することがある
もうパソコンを窓から投げ捨てよう
カーネルもヤバい問題発覚することがある
もうパソコンを窓から投げ捨てよう
924デフォルトの名無しさん
2022/04/04(月) 21:41:12.90ID:dNgOu4No >>921
だからそれお前が見つけたのか?
だからそれお前が見つけたのか?
925デフォルトの名無しさん
2022/04/04(月) 22:18:49.72ID:yJV2c6am 初心者ほど「コンパイラのバグ」などと言い出す
ダニング=クルーガー効果である
ダニング=クルーガー効果である
926デフォルトの名無しさん
2022/04/04(月) 23:05:18.52ID:jLJ2cB6c927デフォルトの名無しさん
2022/04/05(火) 06:13:13.50ID:l+kYPJyP そろそろ飽きろよこの流れ
928デフォルトの名無しさん
2022/04/05(火) 09:01:35.21ID:rwKxODkm >>926
Rustはunsafe内のメモリ関連のバグまでは検出しないけど?
例えRustには無知だとしてもunsafeという語感からだけでunsafe内では何も保証されないってことは推測できるよね?
Rustはunsafe内のメモリ関連のバグまでは検出しないけど?
例えRustには無知だとしてもunsafeという語感からだけでunsafe内では何も保証されないってことは推測できるよね?
929デフォルトの名無しさん
2022/04/05(火) 09:22:45.52ID:i/q849BZ930デフォルトの名無しさん
2022/04/05(火) 11:55:20.23ID:Md/fZtCu 2038年問題を再発させるコードが多数の場所にコピーされてしまっている
ttps://gigazine.net/news/20220330-2038-problem/
> エイドリアンさんが調べた限りでは、下記のリポジトリにて問題のあるコードが使用されていたとのことです。
>
> O3DE
> Dokany
> Ceph-Dokan
> libarchive
> ghc::filesystem
> ImageMagick
> Cxbx-Reloaded
> ReactOS
>
> また、下記のリポジトリについては記事作成時点で既にエイドリアンさんの指摘を受けてコード修正済みとなっていました。
>
> OpenRCT2
> DuckStation
ttps://gigazine.net/news/20220330-2038-problem/
> エイドリアンさんが調べた限りでは、下記のリポジトリにて問題のあるコードが使用されていたとのことです。
>
> O3DE
> Dokany
> Ceph-Dokan
> libarchive
> ghc::filesystem
> ImageMagick
> Cxbx-Reloaded
> ReactOS
>
> また、下記のリポジトリについては記事作成時点で既にエイドリアンさんの指摘を受けてコード修正済みとなっていました。
>
> OpenRCT2
> DuckStation
931デフォルトの名無しさん
2022/04/06(水) 03:36:26.34ID:A9app5rs932デフォルトの名無しさん
2022/04/06(水) 03:42:32.00ID:ryRy0Ktk933デフォルトの名無しさん
2022/04/06(水) 04:46:14.51ID:MueoLJZZ エスパーさせんな、コードで示せ
934デフォルトの名無しさん
2022/04/06(水) 09:00:45.09ID:Z4fh8uHR >>931
見事な恥の上塗りでワロタ
見事な恥の上塗りでワロタ
935デフォルトの名無しさん
2022/04/06(水) 09:22:57.25ID:A9app5rs936デフォルトの名無しさん
2022/04/06(水) 09:29:13.74ID:OcEMaDN/937デフォルトの名無しさん
2022/04/06(水) 10:57:59.47ID:X0SajXCN >>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
エラーになるよ
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
938デフォルトの名無しさん
2022/04/06(水) 11:01:15.13ID:BAnc7YwE >>935
C++相当のコードか擬似コードでもいいからお前が言う操作のコードを出せ
スレッド間操作か参照の使い方周りでC++でもぶっ壊れるやつな
Rust使いの誰かがコンパイルの通しようがないって教えてくれるだろうよ
C++相当のコードか擬似コードでもいいからお前が言う操作のコードを出せ
スレッド間操作か参照の使い方周りでC++でもぶっ壊れるやつな
Rust使いの誰かがコンパイルの通しようがないって教えてくれるだろうよ
939デフォルトの名無しさん
2022/04/06(水) 11:41:09.81ID:A9app5rs >>397
それ、同じmain()スコープの中で宣言しているローカル関数だからでは?
普通、そんな書き方せんでしょ。
thread::spawnで起動している、無名関数を、引数ありの独立した関数として
定義して、参照渡しとしてスレッド実行した場合、コンパイル時の静的解析
ではエラー検出できない。
それ、同じmain()スコープの中で宣言しているローカル関数だからでは?
普通、そんな書き方せんでしょ。
thread::spawnで起動している、無名関数を、引数ありの独立した関数として
定義して、参照渡しとしてスレッド実行した場合、コンパイル時の静的解析
ではエラー検出できない。
940デフォルトの名無しさん
2022/04/06(水) 11:55:40.05ID:KqMgG2U/ 流石にこのレベルの人を叩いて悦に入るのはやめようぜ
941デフォルトの名無しさん
2022/04/06(水) 12:00:23.11ID:a0CdlgS1942デフォルトの名無しさん
2022/04/06(水) 15:45:42.18ID:MueoLJZZ thread::spawnには引数無しのクロージャしか渡せません
pthread_createとかで明示的にvoid *を渡すのに相当する処理は、Rustだとこの引数無しクロージャにキャプチャさせる方法で実現されます
で、それをやってるのが>>937です
pthread_createとかで明示的にvoid *を渡すのに相当する処理は、Rustだとこの引数無しクロージャにキャプチャさせる方法で実現されます
で、それをやってるのが>>937です
943デフォルトの名無しさん
2022/04/06(水) 16:11:31.38ID:Dn8F6G2j >>924
VCいじってりゃ嫌でもforループ前の初期化バグにぶち当たるわ。
最適化オプション下げるとか、for内でやるのをやめるとかいろいろ修正方法はあるが。
むしろいままでコンパイラバグに当たらない方が不思議。
お前仕事してんのかって疑われるレベル。
VCいじってりゃ嫌でもforループ前の初期化バグにぶち当たるわ。
最適化オプション下げるとか、for内でやるのをやめるとかいろいろ修正方法はあるが。
むしろいままでコンパイラバグに当たらない方が不思議。
お前仕事してんのかって疑われるレベル。
944デフォルトの名無しさん
2022/04/06(水) 16:23:15.68ID:2Jp54xD1 forループ前の初期化バグってどんなの?
945デフォルトの名無しさん
2022/04/06(水) 17:07:47.57ID:X0SajXCN >>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
こういうこと?これもエラーになる。
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
946デフォルトの名無しさん
2022/04/06(水) 17:09:04.34ID:X0SajXCN >>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
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
947デフォルトの名無しさん
2022/04/06(水) 17:18:09.35ID:vFuVta1u >>943
具体的に書けよw
具体的に書けよw
948デフォルトの名無しさん
2022/04/06(水) 18:45:31.77ID:A9app5rs >>945
> こういうこと?これもエラーになる。
Rustの文法がよう判らんけど、おおむね合ってると思う。
ちなみに、C/C++だと大規模プログラム開発を想定して、ソース分割による分割
コンパイルや、ライブラリ化という仕組みがあるわけだが、Rustの言語仕様って
そのあたりどうなん?
例えば、スレッド関数「fn sub(ptr: &i32)」が、「fn main() 」を別のファイルに
(例: main.cpp, sub.cpp のように)実装してビルドするとか、スレッド関数の
「fn sub(ptr: &i32)」だけをライブラリ(dllまたはlib)化するとかできるの?
そもそも、Rust でライブラリを書いたり、Rust で書いたプログラムって、他の
言語で書かれたライブラリ(OpenCVとか)とリンクできるのか?
> こういうこと?これもエラーになる。
Rustの文法がよう判らんけど、おおむね合ってると思う。
ちなみに、C/C++だと大規模プログラム開発を想定して、ソース分割による分割
コンパイルや、ライブラリ化という仕組みがあるわけだが、Rustの言語仕様って
そのあたりどうなん?
例えば、スレッド関数「fn sub(ptr: &i32)」が、「fn main() 」を別のファイルに
(例: main.cpp, sub.cpp のように)実装してビルドするとか、スレッド関数の
「fn sub(ptr: &i32)」だけをライブラリ(dllまたはlib)化するとかできるの?
そもそも、Rust でライブラリを書いたり、Rust で書いたプログラムって、他の
言語で書かれたライブラリ(OpenCVとか)とリンクできるのか?
949デフォルトの名無しさん
2022/04/06(水) 18:47:00.11ID:4TDuv4YW pythonのライブラリとかgithubにいくらでもあるけど?
950デフォルトの名無しさん
2022/04/06(水) 18:52:54.88ID:X0SajXCN >>948
モジュール分割は普通に備えてる
というかC/C++のモジュール分割は貧弱な方で、大半の言語はまともな仕組み備えてるよ
Rustでライブラリ作ってCから呼び出したり、CのライブラリをRustから呼び出すこともランタイムとかめんどくさいこと考えずに普通にできる
モジュール分割は普通に備えてる
というかC/C++のモジュール分割は貧弱な方で、大半の言語はまともな仕組み備えてるよ
Rustでライブラリ作ってCから呼び出したり、CのライブラリをRustから呼び出すこともランタイムとかめんどくさいこと考えずに普通にできる
951デフォルトの名無しさん
2022/04/06(水) 22:27:56.00ID:MiVqlX0M Rustのモジュール分割はC/C++の分割コンパイルとはちょっと違う気がする
C/C++だとソースファイルごとにコンパイルしてオブジェクト(.o)作ってからリンカでまとめるけど
Rustは最初にcrate内のソースを1つにまとめてから一気にコンパイルする感じ
(見えない部分で分割してるっぽいけどソースファイル単位じゃないしプログラマは意識しない)
C/C++の.dllとか.libに対応するのはRustだとcrateになるからsubだけライブラリ化するなら
ファイルを分けるというよりプロジェクト(crate)を分ける感じになるかな
C/C++の.oに相当する中間ファイルはRustだと存在しないはず
C/C++だとソースファイルごとにコンパイルしてオブジェクト(.o)作ってからリンカでまとめるけど
Rustは最初にcrate内のソースを1つにまとめてから一気にコンパイルする感じ
(見えない部分で分割してるっぽいけどソースファイル単位じゃないしプログラマは意識しない)
C/C++の.dllとか.libに対応するのはRustだとcrateになるからsubだけライブラリ化するなら
ファイルを分けるというよりプロジェクト(crate)を分ける感じになるかな
C/C++の.oに相当する中間ファイルはRustだと存在しないはず
952デフォルトの名無しさん
2022/04/07(木) 06:01:34.50ID:yfLrBpxG いやgolangよりCとの相互利用はマシだけど、褒められるほどRustにCとの互換性はないよ。Dとかのほうがまだまし
953デフォルトの名無しさん
2022/04/07(木) 07:14:19.71ID:Ug2bY/ov RustとC++の相互呼び出しはCXXで完璧や
954デフォルトの名無しさん
2022/04/07(木) 07:28:15.01ID:G2jE/Lgc ぶっちゃけモジュール分割がなんでよしとされてるのかがわからない
過大評価やろ
parseにオーバーヘッドあると言われているけどC/C++のような分割コンパイルの方が並列化できるしええやん
過大評価やろ
parseにオーバーヘッドあると言われているけどC/C++のような分割コンパイルの方が並列化できるしええやん
955デフォルトの名無しさん
2022/04/07(木) 09:21:09.02ID:0q4aQzv/ C++にはモジュール導入したいという
話はずっと前からなかったっけ
話はずっと前からなかったっけ
956デフォルトの名無しさん
2022/04/07(木) 09:32:06.83ID:jLJRe/XC 分割コンパイルはgenericsとかtemplateと相性が悪いんだよね(C++の悩みの種になってるはず)
Cの時代のマシンパワーだと最適解だったと思うけど
Rustの
// main.rs
mod foo { pub fn f() {} }
と
// main.rs
mod foo;
// foo.rs
pub fn f() {}
を等価とみなせる言語設計は分かりやすくて余計な悩みが少ない
Cの時代のマシンパワーだと最適解だったと思うけど
Rustの
// main.rs
mod foo { pub fn f() {} }
と
// main.rs
mod foo;
// foo.rs
pub fn f() {}
を等価とみなせる言語設計は分かりやすくて余計な悩みが少ない
957デフォルトの名無しさん
2022/04/07(木) 12:15:13.87ID:Fr57TkZu >>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++で安全なプログラムが書けない)プログラマ向けの補助輪
みたいなもんか?
ちょっと調べてみたが、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++で安全なプログラムが書けない)プログラマ向けの補助輪
みたいなもんか?
958デフォルトの名無しさん
2022/04/07(木) 12:27:13.60ID:lezm9YBI >>957
前半は何言ってるのかわからんが
codegen unitごと.oファイルが生成されるのはその通り
codegen unitはソースレベルのmoduleごとに2つずつ作られcodegen単位で並列化される
前半は何言ってるのかわからんが
codegen unitごと.oファイルが生成されるのはその通り
codegen unitはソースレベルのmoduleごとに2つずつ作られcodegen単位で並列化される
959デフォルトの名無しさん
2022/04/07(木) 12:32:34.52ID:HPvPKplB960デフォルトの名無しさん
2022/04/07(木) 12:44:03.67ID:jLJRe/XC961デフォルトの名無しさん
2022/04/07(木) 12:45:05.63ID:pUyNlzjX962デフォルトの名無しさん
2022/04/07(木) 13:35:54.27ID:tEZE72Zs Rustやる気ないとか言う割にはずいぶんと熱心じゃん
The Bookあたりから読み始めてみては?
The Bookあたりから読み始めてみては?
963デフォルトの名無しさん
2022/04/07(木) 13:49:05.41ID:Fr57TkZu >>959
> RustコンパイラはCコードやC++コードを生成しません
だったら、Visual Studio (Build Tools)や、Min-GW、Xcode等がインストール
されていない環境で、Rustだけをインストールしてバイナリ生成してみな。
下請けにプラットフォーム固有のC++コンパイラを使っているから、ターゲット
プラットフォーム毎に、オフラインインストーラ―が存在するんだよ。
ttps://forge.rust-lang.org/infra/other-installation-methods.html
> RustコンパイラはCコードやC++コードを生成しません
だったら、Visual Studio (Build Tools)や、Min-GW、Xcode等がインストール
されていない環境で、Rustだけをインストールしてバイナリ生成してみな。
下請けにプラットフォーム固有のC++コンパイラを使っているから、ターゲット
プラットフォーム毎に、オフラインインストーラ―が存在するんだよ。
ttps://forge.rust-lang.org/infra/other-installation-methods.html
964デフォルトの名無しさん
2022/04/07(木) 14:01:29.41ID:tEZE72Zs >>963
それはできない
ただしその理由はコンパイラを下請けとして利用しているからじゃなくて、リンカを下請けとして利用しているからだよ
> Why might one not want to install using those instructions?
> * Offline installation. ...
斜め読みしすぎじゃないですかね?
オフラインインストーラがあるなんてどこに書いてある?
それはできない
ただしその理由はコンパイラを下請けとして利用しているからじゃなくて、リンカを下請けとして利用しているからだよ
> Why might one not want to install using those instructions?
> * Offline installation. ...
斜め読みしすぎじゃないですかね?
オフラインインストーラがあるなんてどこに書いてある?
965デフォルトの名無しさん
2022/04/07(木) 14:32:47.76ID:0q4aQzv/ 空想上のRustに似た言語叩きする人多いな
966デフォルトの名無しさん
2022/04/07(木) 14:49:00.36ID:DqPGONrT LLVMを知らないんだろ
もう引退するお年頃
もう引退するお年頃
967デフォルトの名無しさん
2022/04/07(木) 15:03:24.56ID:cqCq8D8c 5chに常駐してるようなC++民はビックリするほど見識が狭いよな
ある意味コボラーと同じ人種
ある意味コボラーと同じ人種
968デフォルトの名無しさん
2022/04/07(木) 15:09:08.48ID:Fr57TkZu > オフラインインストーラがあるなんてどこに書いてある?
折角リンクを貼ってやったのに英語読めないの? 「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
折角リンクを貼ってやったのに英語読めないの? 「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
969デフォルトの名無しさん
2022/04/07(木) 15:34:45.27ID:wO4kVij8970デフォルトの名無しさん
2022/04/07(木) 15:35:55.43ID:tEZE72Zs971デフォルトの名無しさん
2022/04/07(木) 15:55:01.85ID:gcjUoiEr ちんちんシュッ!シュッ!シュッ!
972デフォルトの名無しさん
2022/04/07(木) 18:28:45.48ID:6J24GmAj973デフォルトの名無しさん
2022/04/07(木) 22:11:21.15ID:cJXUldxb Rustの集大成と言えるFirefoxが世界で一番固まるブラウザとして名高いのだから、ユーザーに嫌がらせしたいプログラマはRustを使うべき。
タブレットモードで使ってると毎日一回は操作不能になるからね。
電源ボタン長押しして強制リセットするしかなくなる。
タブレットモードで使ってると毎日一回は操作不能になるからね。
電源ボタン長押しして強制リセットするしかなくなる。
974デフォルトの名無しさん
2022/04/07(木) 23:12:28.96ID:6mRJTF59975デフォルトの名無しさん
2022/04/07(木) 23:26:31.11ID:YR3mJewM そいやRUSTってオプションでアセンブラ出力させたり出来るの?
976デフォルトの名無しさん
2022/04/07(木) 23:27:28.73ID:YR3mJewM >>973
まだservoとかだけでしょ?
まだservoとかだけでしょ?
977デフォルトの名無しさん
2022/04/08(金) 00:19:49.85ID:PcnkB3on978デフォルトの名無しさん
2022/04/08(金) 01:42:20.81ID:uV0lTSE5 それにマジレスするか
979デフォルトの名無しさん
2022/04/08(金) 06:18:52.60ID:8k2J9S8r980デフォルトの名無しさん
2022/04/08(金) 07:35:26.61ID:UBiXicJa 俺はwindowsでEdge使ってるけど一度も固まったことないな
981デフォルトの名無しさん
2022/04/08(金) 07:40:49.60ID:OhTsNUjo982デフォルトの名無しさん
2022/04/08(金) 07:57:10.73ID:phXvIdWB そもそも>>725が書いてるけどrustはまだ全体の1割位しか使ってないのにrustの集大成とかアホ晒しすぎw
983デフォルトの名無しさん
2022/04/08(金) 08:00:48.24ID:Z05AA1u1 firefoxは固まるもの。
固まったところで誰も気にしない
固まったところで誰も気にしない
984デフォルトの名無しさん
2022/04/08(金) 08:02:17.06ID:cn2WsGzN985デフォルトの名無しさん
2022/04/08(金) 09:36:43.82ID:gFm4wviN >>982
登場して10年で1割ですか。100年後もfirefoxが動いてるといいですね。
登場して10年で1割ですか。100年後もfirefoxが動いてるといいですね。
986デフォルトの名無しさん
2022/04/08(金) 09:59:58.15ID:Fa4rer7L 既に昔からある動いているモジュールを書き換える無駄なことはしないからそんなもんじゃね?
そもそもRust自体も他の言語と同様にlibc含めて鉄板のC製ライブラリ使いまくるしな
どの言語でもそのへんは同じだろ
そもそもRust自体も他の言語と同様にlibc含めて鉄板のC製ライブラリ使いまくるしな
どの言語でもそのへんは同じだろ
987デフォルトの名無しさん
2022/04/08(金) 14:54:35.66ID:aIPGNTn3 firefox は固まるっていうかメモリリークだな
rust のコードが unsafe だらけになっているのかは知らんが
タブを閉じても使い終わったメモリを開放しない
ひたすら使用メモリが増え続けswapがいっぱいになって固まる
rust のコードが unsafe だらけになっているのかは知らんが
タブを閉じても使い終わったメモリを開放しない
ひたすら使用メモリが増え続けswapがいっぱいになって固まる
988デフォルトの名無しさん
2022/04/08(金) 14:59:41.50ID:LPi7J7jk989デフォルトの名無しさん
2022/04/08(金) 15:37:14.24ID:aIPGNTn3 >>988
自分は firefox で swap に悩まされてて
その後 chromium 系の vivaldi とか brave にして一気に快適になった
メモリ4Gのマシンに linux 64bit を入れてた時の話だけど
自分は firefox で swap に悩まされてて
その後 chromium 系の vivaldi とか brave にして一気に快適になった
メモリ4Gのマシンに linux 64bit を入れてた時の話だけど
990デフォルトの名無しさん
2022/04/12(火) 07:13:47.72ID:i2DHgPAx firefoxのせいで、スレまでの流れまで止まったな
991デフォルトの名無しさん
2022/04/15(金) 14:27:51.53ID:sD2CwuNi992デフォルトの名無しさん
2022/04/15(金) 14:38:25.40ID:sD2CwuNi993デフォルトの名無しさん
2022/04/15(金) 15:14:39.30ID:k/yGxJzN >>991
ちがうよ
rustでのビルド必要なのはターゲットプラットフォーム用のリンカであってC++コンパイラは不要
RustはLLVM使ってるからLLVM bitcodeへのコンパイラとは言えるかも知れないけどC++は一切関与しないよ
ちがうよ
rustでのビルド必要なのはターゲットプラットフォーム用のリンカであってC++コンパイラは不要
RustはLLVM使ってるからLLVM bitcodeへのコンパイラとは言えるかも知れないけどC++は一切関与しないよ
994デフォルトの名無しさん
2022/04/15(金) 17:33:35.75ID:k+WJVc0v >>991
バカそうなやつ
バカそうなやつ
995デフォルトの名無しさん
2022/04/15(金) 20:07:09.22ID:sD2CwuNi リリースされて10年経過する言語に思いを寄せてるのは馬鹿の骨頂だろwww
お前といっしょでもう終わってんだよハナタレ
せめてIARあたりがリリースしてたんなら話は別だがな
どこぞのチップメーカでrustコンパイラ出してるとこあったけ?
チップメーカが見向きもしない言語それがRust って認識でFA?
あ、そーそ、SystemC rustで書けるか?
これぐらい書けなきゃC++はreplaceできない
C++をreplaceが目標じゃなかったっけ?
お前といっしょでもう終わってんだよハナタレ
せめてIARあたりがリリースしてたんなら話は別だがな
どこぞのチップメーカでrustコンパイラ出してるとこあったけ?
チップメーカが見向きもしない言語それがRust って認識でFA?
あ、そーそ、SystemC rustで書けるか?
これぐらい書けなきゃC++はreplaceできない
C++をreplaceが目標じゃなかったっけ?
996デフォルトの名無しさん
2022/04/15(金) 20:14:02.55ID:sD2CwuNi 大体
Rustなんてネーミングがセンスなさすぎだろ。あほすぎて。これで洒落たつもりかよ。
これからぴかぴかの新製品投入するときにRustてwwww
機械メーカなら絶対採用したくい名前だろこんなもん
Rustなんてネーミングがセンスなさすぎだろ。あほすぎて。これで洒落たつもりかよ。
これからぴかぴかの新製品投入するときにRustてwwww
機械メーカなら絶対採用したくい名前だろこんなもん
997デフォルトの名無しさん
2022/04/15(金) 20:26:31.06ID:k/yGxJzN >>995
LLVMって知ってる?
LLVMって知ってる?
998デフォルトの名無しさん
2022/04/15(金) 20:35:07.13ID:k+WJVc0v >>996
確かに
確かに
999デフォルトの名無しさん
2022/04/15(金) 20:37:43.23ID:tyfulKnM というか何故か言語って大概ネーミングに疑問符がつくような感じだよね
1000デフォルトの名無しさん
2022/04/15(金) 20:38:50.95ID:sD2CwuNi rustてさび以外に
"役に立たない"
て意味もあるのな
まさに、理念のみの
役 た た ず 言 語
"役に立たない"
て意味もあるのな
まさに、理念のみの
役 た た ず 言 語
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 22時間 19分 4秒
新しいスレッドを立ててください。
life time: 77日 22時間 19分 4秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★2 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 ★2 [蚤の市★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 三嶋由紀夫ってネトウヨだったの? [633473628]
- 新米高騰してるけどアイリスの備蓄米買い占めてたからセーフ [358382861]
- SNSで米が高いと投稿すると高市ソルジャーに攻撃される模様 [931948549]
- 【画像】セクシー女優・天沢りんさん「お休み頂いてた半年間でこんな体になりました🪽🤍」👉予想通りの展開に [242521385]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
