[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/01 05:53 / Filesize : 267 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust part10



1 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 21:38:04.11 ID:L7IeSfpL.net]
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

前スレ
Rust part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/

356 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 10:12:57.76 ID:HN4XQcog.net]
>>349
言語仕様的にチェックされるかという意味ならYes

357 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 10:51:18.82 ID:EDIdYwla.net]
>>351
ライブラリの実装ではチェックされるようなコードになっているが
最適化で消えるかも知れないので実行時に必ずしもチェックされるとは限らないという意味?

358 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 11:29:39.09 ID:1OyY1L+6.net]
コンパイル時に境界チェックを外せると確定してない限り最適化しようが境界チェックはやる

359 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 13:16:17.19 ID:BfdKSrwu.net]
例のLKML見直してて思ったけど
unsafeなコードetcが不変条件を破壊した場合に対する安全な対処法って今なんかあるのかな

360 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 13:47:19.78 ID:3EuQZ3Ew.net]
こんなとこじゃね
https://doc.rust-lang.org/edition-guide/rust-2018/error-handling-and-panics/controlling-panics-with-std-panic.html

361 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 15:27:12.87 ID:jQpDsyge.net]
二重投稿になるかも知れませんが、[0; n] で、n要素のi32 型の配列という
意味になるようですが、n が実行時にしか決まらない変数でも大丈夫ですか?
その場合、データ領域はスタック領域から確保するのでしょうか。

362 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:08:50.70 ID:HN4XQcog.net]
>>356
まずはリファレンスを
https://doc.rust-lang.org/std/primitive.array.html

363 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 18:22:21.07 ID:t+PzYqgO.net]
>>354
不変条件の種類によるけど最悪 undefined behavior になるから対処は無理じゃないかな
コンパイラの最適化レベル落とすとかで振る舞いを予測可能にすることは出来るのかも

364 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 19:36:40.90 ID:jQpDsyge.net]
>>357
でも、Box::new([0; n])と書いた場合には、nはコンパイル時に決まらない値
でもいいの?



365 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 20:41:55.42 ID:m2UbhZH5.net]
いいに決まってんだろハゲ!

366 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 20:43:40.06 ID:XWuZH88T.net]
Vec::with_capacity使えよ

367 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:18:06.47 ID:EDIdYwla.net]
試せば2秒で分かるんだから試しなよ

368 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:32:36.01 ID:lX6x7Umv.net]
2秒で試してみろや

369 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 21:34:25.75 ID:lX6x7Umv.net]
うまくいかなかったとしてほかに問題がないか状況を切り分け周辺を調査
誤りのない環境を整備
学習内容を保存し整理
単純な文法ひとつでも最低30分

370 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 22:27:00.95 ID:GVcFAhra.net]
Rustの場合
「2秒で試せる」 || 「試すしたら2秒でわかる」
error: 意図が曖昧です

Cの場合
「2秒で試せる」
「2秒で試してみろやカス」

371 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:40:38.91 ID:xah6OenV.net]
Golangが難しかったのでRustにきました
よろしくおねがいします

372 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 00:53:02.27 ID:90w9Shfm.net]
ゴールデンウィークに釣りですか

373 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 12:40:02.43 ID:K/HFYMcp.net]
Animal から、C++ の継承のようなことをした構造体(?)を Dog とした時、
Box<T> a; で T を Animalのようなものにして、a には、実際には Dog
への参照を入れるようなことは出来ますか?

374 名前:はちみつ餃子 mailto:sage [2021/04/29(木) 13:12:17.47 ID:x0Vd7BP9.net]
>>368
dyn かな?
完全に一致する機能というわけではないけど、
Rust ではトレイトに dyn キーワードを付けると (C++ で言うところの) 抽象クラスのように機能する。



375 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 13:33:28.09 ID:K/HFYMcp.net]
>>369
https://stackoverflow.com/questions/53897315/rust-polymorphic-calls-for-structs-in-a-vector
↑には、Questionの人の書いたのももしかしたら動作するかも知れないけど
Answerの人に従えば、以下のようにするのが正しいのかな?

trait Function {
fn value(&self, arg: &[f64]) -> f64;
}
struct Add {}
struct Multiply {}
impl Function for Add {
fn value(&self, arg: &[f64]) -> f64 { arg[0] + arg[1] }
}
impl Function for Multiply {
fn value(&self, arg: &[f64]) -> f64 { arg[0] * arg[1] }
}

impl Add {
fn new() -> Add { Add {} }
fn new_boxed() -> Box<Add> { Box::new(Add::new()) }
}
impl Multiply {
fn new() -> Multiply { Multiply {} }
fn new_boxed() -> Box<Multiply> { Box::new(Multiply::new()) }
}
fn main() {
let x = vec![1.0, 2.0];
let funcs: Vec<Box<dyn Function>> = vec![Add::new_boxed(), Multiply::new_boxed())];
for f in funcs {
println!("{}", f.value(&x));
}
}

376 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 17:34:51.47 ID:HuHtKfqb.net]
C++でis-a関係の継承使うデータはRustだとenum使う方が単純になるケースもある

struct AnimalData { ... }
struct DogData { ... }
struct CatData { ... }

#[non_exhaustive]
enum Animal {
Dog (AnimalData, DogData),
Cat (AnimalData, CatData),
}

この方法にも色々欠点はあるけど(クレートの外で新しいAnimalを追加できないとか)
trait使う抽象化が大袈裟だと思ったら考えてみて

377 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 17:51:11.31 ID:GXfM8nV1.net]
>>370
継承とは違うけど
そのユースケースはfnかFn使えば十分じゃないの?

let functions: Vec<fn(f64, f64) -> f64> = vec![|x, y| x + y, |x, y| x * y];
for f in &functions {
println!("{}", f(1.0, 2.0));
}

378 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 01:35:27.25 ID:7VhEvZ/Q.net]
>>372
簡単な例として書いただけで、同じ表示結果を得ることが目的ではないので
そういうこととは趣旨が違う。
さまざまな種類の多態なオブジェクトを1つのリストの中に入れるということは
オブジェクト指向に置いて基本的な概念の一つで、Polymorphismの基本なので、
継承的なものを使わずに同じ結果を書けたとしてもそれは違う。

379 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 15:35:29.77 ID:dTeJW22U.net]
ポリモーフィズムを理解してないようなやつでもRustをはじめるようになったんだな

380 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 17:06:26.25 ID:8uDUVNfy.net]
c++と同じで難しくてランタイム速度最強てなところが厨を呼び寄せてる

381 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 18:24:08.88 ID:K785SuXO.net]
C++やってたら配列のインデックスアクセスが安全かどうかや
ディスパッチがスタティックかどうかを普通気にするよね

382 名前:デフォルトの名無しさん [2021/04/30(金) 20:47:52.42 ID:eR/nI2gV.net]
グーグルやMSが「Rust」言語でOS開発、背景に国家による諜報活動の影=日経 xTECH中田敦

背景に国家による諜報活動の影っていう根拠が1つも示されてないんだけど、こいつの言ってることマジなん?
それとも日経新聞のおなじみの「飛ばし」によるクリック集め?

383 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:05:00.75 ID:MgEdsK0p.net]
GAFAMって言いたいだけ

384 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:27:01.84 ID:8uDUVNfy.net]
マイクロソフトがwindows書くのにc++使って後悔した話も知らん層が今も同じようなことやろうとしてんだろ。。
バカは歴史に学ばない。



385 名前:デフォルトの名無しさん [2021/05/01(土) 00:25:31.33 ID:6VZJr73m.net]
これ見てたら、いきなり日本語で「ネコ」って出てきてびっくりした
https://www.programming-idioms.org/cheatsheet/Rust
実は、お前らの中の誰かが書いてんのか?

386 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 05:47:22.98 ID:5xLRGYfU.net]
>>380
https://www.publickey1.jp/blog/21/http35firefoxmozillaquicrustneqo.html
今、プログラムやる若い層じゃアニメとアニメに出てくる簡単な日本語は基礎教養だぞ
github見たらアニメキャラアイコンだらけだ

387 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 08:00:51.92 ID:GEnkdmRT.net]
NANI

388 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:02:13.98 ID:1WejqaZh.net]
>>379
>マイクロソフトがwindows書くのにc++使って後悔した話
興味有るので詳しく :

389 名前: mailto:sage [2021/05/01(土) 17:21:37.61 ID:m+tkSw04.net]
>>379
流出したソースを見る限り、MS は C で Windows を書いていたようですよ‥‥

390 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:53:57.44 ID:/Wzn7OVr.net]
そういえば初期WindowsのWindow管理のサンプルコード見た記憶がある
ツリーリンクリストが構造体に埋め込む形で自作されてた

391 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:54:25.77 ID:/Wzn7OVr.net]
コードの8割方コメントだった

392 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:31:00.53 ID:/RYlgP4n.net]
The Windows Research Kernel AKA WRK
https://github.com/zhuhuibeishadiao/ntoskrnl

393 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:42:02.70 ID:3kB7D+rP.net]
9割がCか

394 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:51:42.31 ID:3kB7D+rP.net]
まあLinuxもCと一部アセンブラだから似たようなものか



395 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 12:27:53.91 ID:Jc9e5ibu.net]
当時の言語状況からして他に選択肢なんかなかったと思うがねぇ。
他の言語選択してたら駆逐されてた可能性すらある。

396 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 12:37:35.62 ID:anCj3LhS.net]
NT kernelが開発されたのが1990年代か
C++も既にあったがまだ浸透してなかったかな

397 名前:デフォルトの名無しさん [2021/05/02(日) 13:45:15.23 ID:c1rmI49h.net]
チュートリアルやってたらトレートオブジェクトってのの説明が意味不明級だったぜ
https://tourofrust.com/82_ja.html
なんじゃこりゃ

398 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 14:35:17.11 ID:n4dQrb8u.net]
>>392
Javaの知識があれば
 trait object: interfaceとして渡されたオブジェクト
という感じで説明できるけど何か使い慣れた言語はあるかね

399 名前:デフォルトの名無しさん [2021/05/02(日) 15:05:16.82 ID:c1rmI49h.net]
>>393
もしかしてExistential Container(和訳不明)が独立のオブジェクトとして括り出さている感じですか?
なおC#が一番使い慣れているのですが、この範囲ではJavaと大きく違わなさそうでしょうか・・・・

400 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:36:14.52 ID:hSgvj4Ff.net]
>>392
The Bookの該当箇所を読むのを勧める
Java/C#のインターフェースと基本的には同じだけど違う部分もある
https://doc.rust-lang.org/book/ch17-02-trait-objects.html

その少し後に出てくるBoxのコードに出てくる
`animals: Vec<Box<dyn NoiseMaker>>`の
Box<dyn NoiseMaker>がTrait Object

Trait Objectは動的サイズの型なので&NoiseMakerやBox<dyn NoiseMaker>のようにポインタの形になる
そのチュートリアルは前後のページとどう関係があるのかについて説明がほぼないのでわかりにくいかもね

401 名前:はちみつ餃子 mailto:sage [2021/05/02(日) 15:50:22.98 ID:VAfyzxcR.net]
他の言語の概念と対応付けるよりはそれ自体として理解したほうがいいのは確かだと思う。
(理解できずに行き詰まるくらいなら雑な理解でも一旦前に進んだほうがいいかもしれんけど。)

言語機能ってひとつだけを取り出して使えるものじゃなくて、他の言語機能との連携の中で活きてくるものだから
個別の言語機能を他言語の言語機能と対応付けて理解しても綺麗に繋がらない感じがする。

402 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:58:09.22 ID:TmCNx2ML.net]
https://doc.rust-lang.org/reference/types/trait-object.html

こっちじゃ`dyn Trait`のことをtrait objectと呼んでいるようだけど
というか俺はこれだと思ってた
Traitを実装する具体型の値のアドレスと、その型に対するTrait実装のvtableの組

403 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 16:04:49.31 ID:n4dQrb8u.net]
>>394
C#はあまり詳しくないけど、例えばListのAddRange関数の引数の(IEnumerable collection)が近いかな
AddRangeにはIEnumerableを実装してればどんな型でも渡せるはず(ArrayList、HashSet, etc)

これをAddRangeの視点で見ると、渡されたcollectionが実際に何の型かは分からないけど
IEnumerable(interface≒trait)を実装してることは分かってるから
そのGetEnumeratorを呼んでIEnumeratorを受け取ってそこから取り出せる要素を全部追加すれば
目的の動作は果たせることになる

このAddRangeの引数のcollectionがIEnumerableトレイトを実装したtrait objectって感じ

404 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 17:25:27.83 ID:hSgvj4Ff.net]
>>397
正確に言うとリファレンスに書いてる通りdyn Trait型のオブジェクトがTrait Object
&dyn TraitやBox<dyn Trait>はTrait Objectを指してるfat pointer

でも実用上は&dyn TraitやBox<dyn Trait>のfat pointerのこと自体を
Trait Objectというものとして理解したほうがわかりやすいので
The Bookや他の解説書でも区別してないのが多い



405 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 09:09:00.34 ID:AyvebyYK.net]
>>76
Visual Rust#やろ

406 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 11:04:52.91 ID:L2uysNOu.net]
https://marketplace.visualstudio.com/items?itemName=vosen.VisualRust

407 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 15:28:19.67 ID:lWPqbdGD.net]
囲い込んでブラックボックス強要するあたりはMSと相性いいかもな

408 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 15:41:01.40 ID:6lvPuDrb.net]
facebookも財団に参加したのか
appleも時間の問題かな

intelとかのCPUメーカーにも参加して欲しい所だが

409 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 17:15:37.01 ID:lMvsmKDJ.net]
CPUメーカーが参加するとどういうことが嬉しいの?
LLVMなら分かるんだけど

410 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 20:03:06.80 ID:6lvPuDrb.net]
まあ元intelのエンジニアも開発に参加しとるけどね

411 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 20:33:44 ]
[ここ壊れてます]

412 名前:.63 ID:PCq3WtR4.net mailto: え?脆弱で有名なあのインテル?
ヤバいじゃないですかぁ
[]
[ここ壊れてます]

413 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 21:04:23.81 ID:mgj/rIpW.net]
rustが低レイヤーの開発言語としては覇権取りそうね
今から勉強しとくのが良さそう

414 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 22:09:05.61 ID:mvlmOZ0b.net]
低レイヤーの仕事をしたことないってのがよくわかるわ。



415 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 00:03:56.29 ID:UOumGkwv.net]
>>405
エンジニア個々人が参加するのは普通にあると思うんだけど
企業として支援することにどんなうまみがあるのかなと思って

ただ改めて思うとintelもソフトウェアたくさん出しててrust使う旨みはあるから支援する意味はありそうだね

416 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 01:46:02.42 ID:E1emjEBd.net]
SHやArmのRustコンパイラをメーカーが出たらガチ

417 名前:はちみつ餃子 mailto:sage [2021/05/05(水) 03:09:13.31 ID:o0iQ7lyN.net]
うまみっていうか、それが上手くいくかどうかなんて事前にはわからん。
ほどほどに有用そうなものに支援してたらどれかひとつくらいはいい感じって程度の話だろ。

418 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 05:31:11.89 ID:rumk0idO.net]
協力し合うと同時にあまり勝手しないように牽制するのも目的なので

419 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 12:35:13.44 ID:UNdhfIGe.net]
どうも頭の悪い輩が多いなと思ってたけど、
この言語、ある程度まではスクリプト的に書けるからなんだな。。
なんとなくおかしなこと言ってる奴の感覚がわかってきたわ。

420 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 13:37:38.31 ID:ZpSbA1Y5.net]
>>413
> この言語、ある程度まではスクリプト的に書けるからなんだな。。
短く簡単に書けるようにするのはRustの課題の一つだと思ってるので、どういう観点から「スクリプト的に書ける」とおっしゃるのか伺いたいです
よく比較に上がるC++よりはよっぽど記述量多くなるよね?

421 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 14:30:15.37 ID:UNdhfIGe.net]
そりゃautoなんかを使いまくった最近のスクリプト厨のc++ならそうだろうけれど、
普通に仕事で読むc++コードはそういう感じではないからね。
てかc++と一口に言っても年代で全く別言語だわ。
そういうスクリプト的な書き方をした場合、rustのがc++より快適に感じるのはまあわかるよ。
問題もrustのが少なく感じる。そういう書き方だけしてる場合はね。

422 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 14:59:14.54 ID:ZpSbA1Y5.net]
炎上学習法かってくらい何も理解してない感じでワロス

423 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:13:12.13 ID:UOumGkwv.net]
autoと動的型付けの区別が付いていない...?

424 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:19:43.76 ID:nBZStdai.net]
型再構築なんてむしろ厳格に型付けされた言語から生まれたんだが



425 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:21:51.15 ID:2WIXJ/st.net]
C#でvarキーワードが導入された時も
基本型の変数にvar使うのやめましょうみたいな規約を
意味不明な根拠で良い規約と信じて導入しようとする
おかしな人達がそこら中に居た
後にEffective C#かそこらの書籍で
ローカル変数はvar使えと明確に書かれるようになって
老害ザマァと思ったものだ

426 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:46:10.02 ID:sMGymnD4.net]
正義が世俗の愚劣さに屈した

427 名前:はちみつ餃子 mailto:sage [2021/05/05(水) 15:47:19.58 ID:o0iQ7lyN.net]
ローカル変数の場合は型がすぐ隣に書いてあるような状況だろうからな。

428 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:17:27.41 ID:UNdhfIGe.net]
ほらね。
好き勝手な自分流でコード書いてるだけで人のコードを読んでないのが丸わかりなコメントしてても
全く気づかないバカしかいない。

429 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:25:26.72 ID:GNJam4rN.net]
>>421
ようするに型情報を二重に書いてるようなものだよな
情報の多重化であり
小さなDRY

430 名前:エ則違反
こんな簡単な理屈を理解出来ない奴が不思議
[]
[ここ壊れてます]

431 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:30:24.49 ID:sMGymnD4.net]
書かれておらずメソッドで戻り値を取得するような場合
C#もJavaも型で呼び出し先が変わる仕組みなので
意図せずに処理の流れまで変わってしまう

432 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:44:03.35 ID:GNJam4rN.net]
>>424
お前は日本語勉強しろよ
普通に読解不能なんだよ

必要な所には型を書く
当たり前
不要な所に書いてると
「何故書いてるのだろうか?
何か理由を見落としてるだろうか?」
と注意深いプログラマを考えさせるのでエネルギーの無駄

433 名前: mailto:sage [2021/05/05(水) 16:50:12.99 ID:tRoHSHAj.net]
>>416
>炎上学習法

懐かしい言葉ですね‥‥

434 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:59:13.24 ID:sMGymnD4.net]
>>425
varにするようになったら全部varにするだろ?



435 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 17:40:56.63 ID:iUhohRzs.net]
>>416
相手してるお前も同罪やぞ
すぐ見分けつくだろ

436 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 18:09:53.05 ID:UOumGkwv.net]
VSCode + rust-analyzer だとletやメソッドチェーンのところに型が表示されるし
今時の開発環境使っていればローカル変数の型がぱっと見で分からなくて苦労することは少ないのでは

437 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 18:14:24.50 ID:GNJam4rN.net]
>>427
何を言っとるんだお前は?
右辺値と同じ型で「困る」時は型を書くに決まってるだろ
下手するとvarの仕様も理解せずに混乱した事を書いてんじゃないだろうな

438 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 18:51:20.46 ID:cJbqSzge.net]
ゲェーQZ居着いてんのかよこのスレ
バカなくせに出しゃばりでウザいからC++スレから出てくんなよ

439 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 19:01:51.22 ID:sMGymnD4.net]
>>430
後から右辺値の型が変わったら気が付かないうちに影響が波及するじゃん

440 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 19:41:05.57 ID:E1emjEBd.net]
var xの型が何であるかはxの初期化のときただ一度きりの右辺の型で決まるんジャネーノ
だとしたら後から右辺値の型が変わることに関して
varの導入で傷口が広がったことにはならない

441 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 19:44:32.97 ID:E1emjEBd.net]
二回目以降の右辺値はxに対する代入でしかありえない
それらはxに対して(暗黙の型変換等を経て)代入可能ならコンパイルが通るし、
代入不可能ならエラーになる。
xの初期化時にvarを使おうが使うまいが(明示的に型を書こうが)変わらない話

442 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 20:38:12.35 ID:UOumGkwv.net]
せめてletの話をしろよ

443 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 20:48:36.67 ID:vgXZGrp9.net]
RustのletはJS由来? それともHaskell?

444 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 21:09:59.09 ID:1EwqoC8k.net]
JavaScriptにもletあるけど語源調べたら普通に英単語のletで短縮形ってわけじゃないらしい



445 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 21:24:20.68 ID:ra+BilqN.net]
BASICの時代からletはあったけどな

446 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 21:31:43.51 ID:ZsCzZm1J.net]
letはlisp系から始まったイメージ。

447 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 22:26:24.94 ID:vWJ975z5.net]
RustのletはML系由来だろ

448 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 22:44:48.04 ID:UOumGkwv.net]
最初のrustcはocamlで書かれてたくらいだしML系の影響は色濃そう

449 名前: mailto:sage [2021/05/05(水) 22:49:49.94 ID:tRoHSHAj.net]
>>431
https://mevius.5ch.net/test/read.cgi/tech/1610096040/839

450 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:02:12.67 ID:SpjdL+PT.net]
let mut にするか var にするかの決定で、
目立たないけどRustに貢献した人という記事が最近書かれたので貼っとく
https://brson.github.io/2021/05/02/rusts-most-unrecognized-contributor

451 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:05:25.16 ID:ut0g6JOd.net]
>>443
3行でまとめて

452 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:35:02.38 ID:SpjdL+PT.net]
デイブ・ハーマン(Dave Herman)というECMAScript委員会のMozillaの代表者の人がいました。
リポジトリ上のコミットログでは目立ちませんが、彼の好みがRustチームの好みを作り、チームの組織と維持に重要な役割を果たしていました。
彼はチームの決定をほとんど穏やかに受け入れていましたが、let mut と var のどちらにするかについては var を使うというチームの決定に同意しませんでした。

453 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:36:11.91 ID:V2I8vwdu.net]
>>421
でも、
BYTE c = 'a';

let c = 'a';
では間違い易さが違う。後者は、int か BYTE か SBYTE か分からない。

454 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:37:37.69 ID:V2I8vwdu.net]
Rustだと、明示するには、
let c:i8 = 'a';
とキータイプが多くなってしまうな。



455 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:40:47.77 ID:V2I8vwdu.net]
例えばの話、演算子も優先順位が決まっているので、
if ( (a >= 5 && a <= 10) || (b>=10 && b <=20) ) {・・・}
見たいな条件も、優先順位の括弧を省略できるかも知れないが、勘違いや
記憶違いを防ぐために書いた方がいいと言われている。
int c = 'a';
char c ='a';
auto c = 'a';
ではやはり、autoはバグの原因になりそう。

456 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:47:50.96 ID:V2I8vwdu.net]
それと、型を明示した方が後から見たときにプログラマの脳内の想定もわかり易い。
float a = 1.0f;
float b = a + 5.0f;
みたいなものも、もし、
auto a = 1.0f;
auto b = a + 5.0f;
と書くと b は、double 型になってしまうかもしれないが、テストしても
間違いに気づかず、僅かに速度低下やメモリーを多く食ってしまう
かもしれない。また、思想にもよるが、1.0f などと書かずに
float a = 1;
float b = 5;
と書きたい人も居ると思う。これの方が、後から double 型に変えたときに
右辺を訂正する必要がないメリットもある。

457 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 03:19:29.71 ID:EVf7RH7G.net]
>>446
rustの文字リテラルはu8でもi8でもなくてcharな

それはそれとして型やら括弧やらを明示的に書くことは禁じられてないんだから書けばよいのでは
言語の問題というよりはコーディング規約でなんとかすべき領域かと

タイプ数が多くなるとかはデフォルトをどちらに倒すかの問題で世間の嗜好とずれてるなら多少手間がかかるのは諦めるしかない

458 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 03:21:51.36 ID:EVf7RH7G.net]
誤解を招きそうだから補足しておくとrustのcharはユニコードのコードポイントが格納される32bit符号なし整数型な

459 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 06:46:11.97 ID:AMAuzv83.net]
>>443
こういうのいいな

460 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 10:08:34.61 ID:VcsxCBNr.net]
>>445
var使おうとしてたってマジかー
let (mut a, b) = get_foo_tuple();
みたいなやつとかvarじゃ困るから必然だと思ってたのに

461 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 10:15:22.90 ID:lmEaR3VD.net]
>>445の要約の最後たぶん間違ってる
デイブ氏はキーワードを重ねるとmutableな変数の使用を躊躇させる効果が生じて
プログラマのコーディング方式の選択を咎めることになるから反対だったらしい
チームの決定は初めからlet mutで彼は(珍しく)反対したけど最終的には受け入れた

462 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 11:35:13.23 ID:hCHdFqbq.net]
つまり暗黙の型変換は癌

463 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 11:48:56.26 ID:f ]
[ここ壊れてます]

464 名前:owE0ZYM.net mailto: varでいいじゃん
あとはideが勝手に型直してくれるよ
[]
[ここ壊れてます]



465 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 11:52:26.38 ID:a37uwZNi.net]
いないいない

466 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 14:35:25.59 ID:SpjdL+PT.net]
>>454
すまん、指示代名詞の指してる先を読み違えた
デイブ氏はvar押しだったんだな

467 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 16:00:35.75 ID:acc3YL8w.net]
タイプ数で優劣を決めようとするアホとは次元が違うな

468 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 16:31:20.99 ID:q/dBsf9f.net]
タイプ数は少ない方が問答無用で良い

469 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 17:13:47.97 ID:EVf7RH7G.net]
fn, ret, cont, break の時代に回帰するか

470 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 17:27:07.40 ID:ut0g6JOd.net]
タイプ数は少ない
って基本型が少ない言語が好みなのかと思った

471 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 19:28:16.24 ID:fowE0ZYM.net]
<?rust
println!("hello rust!!");
?>

472 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 21:17:13.93 ID:O03dxxkK.net]
>>448
型を明示したってバグるくせによく言うのぜ

473 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 22:42:35.79 ID:pupGSg3O.net]
タイプ数が少ないようが絶対良いんなら
むかしGAMEとかいうすべてのキーワードが1文字の言語があったからそれでも使え

474 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 23:22:18.38 ID:fowE0ZYM.net]
Rust 〜地図にない場所〜



475 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 03:50:05.38 ID:vAByX/Kb.net]
>>464
型明示はバグの軽減に繋がる。
>>465
絶対的に良いわけではないが、let a:i32 = 5; と int a = 5; だと後者の方が楽。

476 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 07:04:16.43 ID:aU3MjDw9.net]
>>467
intが32bitだといつから錯覚していた?

477 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 08:21:08.42 ID:Dsa6ajo4.net]
Announcing Rust for Windows v0.9
https://blogs.windows.com/windowsdeveloper/2021/05/06/announcing-rust-for-windows-v0-9/

478 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 09:19:02.07 ID:iG4irUX1.net]
言ってる側から落とし穴に嵌っててワロタ

479 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 10:35:21.40 ID:8IfDDxiK.net]
let a = 5_i32;

型は右側だけで決めるのじゃ
両側で合わせるのは無駄、変更するときも面倒じゃろ

・・なに?
aがi32だと明示してバグを軽減したいじゃと?

それなら行を分けるのじゃ
1行にまとめるとせっかくの明示が埋もれてしまうからの

let a: i32; // この行の存在は大きいぞい
a = 5_i32;

480 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 12:08:53.04 ID:B2UdQUpV.net]
>>468
そこまでいうなら、int32 a = 5; や i32 a = 5; と書けばいい。
なお、Rustではこの書き方が出来ない。

481 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 12:20:12.52 ID:B2UdQUpV.net]
>>468
ちなみに、組み込み以外のほとんどのC/C++コンパイラでは、intは32BIT型。
デスクトップマシン用のC/C++では、32BIT/64BIT のどちらでも、intは、
32BIT型のはずで、少なくとも VC++では必ず int は 32BIT。

482 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 12:24:00.34 ID:w+YL5YRG.net]
>>472
int32_tな

483 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 12:51:05.27 ID:B2UdQUpV.net]
>>474
typedef int int32;
typedef int i32;
とすればよいだけ。

484 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 12:57:04.52 ID:w+YL5YRG.net]
>>475
それintが32bitじゃない環境でアホみたいにミスリーディングになるけど?
いい加減スレチだし「int32_t 標準ライブラリ」でググって理解したらこの話終わりにして?



485 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 13:31:50.44 ID:B2UdQUpV.net]
>>476
そんな基本的なことは当たり前で、そのような環境では、
typedef __int32 int32;
typedef __int32 i32;
とする。

486 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 13:40:18.27 ID:8gopO5Ce.net]
どういうバグを作る可能性があるかという点が共有されてないから議論空回りしている感

487 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 13:42:32.36 ID:B2UdQUpV.net]
というか、int32_t という型名を考えた人が馬鹿すぎるので、長くて困るという話
だと思ったんだ。もし、int32_t が使える環境で賢く使いたい人は、
typedef int32_t int32;
typedef int32_t i32;
typedef int32_t Int32;
などとすればいいという話。
前提とする知識が低すぎる人がいるから困る。

488 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 13:45:35.27 ID:eN8Lkrsa.net]
何を議論してるのか全然分からん

489 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 14:02:25.02 ID:SIz+0gIF.net]
1レス目で即NG
相手してるやつも同じカテゴリなので即NG

490 名前:はちみつ餃子 mailto:sage [2021/05/07(金) 14:03:01.68 ID:xLSEaA6V.net]
議論なんかするつもりがないんだろう。

491 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 14:40:46.39 ID:r6L15P9a.net]
>>479
>というか、int32_t という型名を考えた人が馬鹿すぎるので、長くて困るという話
>だと思ったんだ。

誰がどこでそんな話をしたのか
ログ辿っても全然分からない件

ついでに言えば
グローバル名前空間の中に標準ライブラリがブチ込む型名として
_tサフィックス以外あり得んので
何も馬鹿なことなんか無い
つーか本当に誰もそんな話してないな

これ突っ込んだら
どんなガイジレスを返すのか興味津々

>>480
論点不明のドッジボールだからな
今はどこでも似たようなやり取りが見られて
5ch終わってる感がハンパない
俺は句点付きが特に頭おかしいと思うけど
レスバ相手はEQがヤバイ感じだが
句点付きはIQがヤバイ

492 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 14:57:30.94 ID:DUMB7Vls.net]
メジャーなGUIアプリで使われているrust製GUIライブラリってなにがありますか?
GUI使いたいんですが長いものにまかれたいので

493 名前:はちみつ餃子 mailto:sage [2021/05/07(金) 15:02:55.52 ID:xLSEaA6V.net]
>>484
プラットフォーム (OS) によって違うんじゃない?
その中ではある程度に淘汰されてると思うけど、
あらゆる環境で万能な決定版は無いと思う。

494 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 15:53:14.60 ID:B2UdQUpV.net]
>>483
>句点付きはIQがヤバイ
実際にIQ150越えてるので、ノーマル一般人が理解できないだけではないか。



495 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 16:08:00.06 ID:r6L15P9a.net]
>>486
証拠うpしてくれ
ID付き画像とかなら最高だ
IQ150超えでもこんなガイジレスするのか
マジで興味あるわ

496 名前:デフォルトの名無しさん [2021/05/07(金) 17:04:02.49 ID:+x2jPaur.net]
メモリ不足でカーネルパニックが起きることの問題がわからない
普通のパソコン用途に使われてたらユーザーランドのソフトがOOM Killerに殺されようがOS丸ごとクラッシュしようが作業内容が失われるのは変わらん
サーバー用途でも一部のプロセスが殺されて中途半端の状態で動き続けるよりいっその事OSまるごとクラッシュしたほうがいいと思う

497 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 17:16:13.01 ID:8gopO5Ce.net]
>>488
rustでLinuxのドライバー書く話?
メモリ不足時にどうハンドリングされるべきかは使い方によって違うので一律パニックするのは良くない
例えば例に挙げてるOOM Killerだってカーネルがパニックしたら実行されないわけで

498 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 17:22:12.18 ID:r6L15P9a.net]
>>488
何かあった時止まればいいシステムばかりじゃないだろ
ペースメーカーとか原子炉とか
細かいことは知らんけど
昔、組み込み屋のおっさんが最初から1Mぐらい確保して
何かあったらそれを解放してどうにかするみたいなこと言ってた
知らんけど

499 名前:はちみつ餃子 mailto:sage [2021/05/07(金) 18:25:34.58 ID:xLSEaA6V.net]
>>488
システムは単独で動いているわけではない。
カーネルがパニックすることがあって良いという前提で設計して、パニックしうる前提で運用できるならそれでも構わんのだが、
Linux のカーネルでパニックを許すなら今 Linux を基礎にしているあらゆるシステムの運用体制を見直さざるを得ない。

カーネルパニックが絶対に駄目というわけじゃないんだ。
(もちろん発生しないに越したことは無いが。)
Linux では起こさないという前提に皆が従っているので変えられないという話なんだよ。

500 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 18:53:57.67 ID:XbWp/RIC.net]
割り込みが飛んでくる環境で例外なんか扱おうとしたら普通に死ぬだろ

501 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 19:12:04.63 ID:RYgnWswQ.net]
>>488
失われる作業内容の範囲があるだろ。
クライアントOSのWindowsですらBSODで切れる奴が多かったんだから、サーバーOSでそんな考えが許されるはずがない。

502 名前:デフォルトの名無しさん [2021/05/07(金) 19:35:24.51 ID:FlZ9PpDj.net]
差し当たりRustの言語を広く浅く学習したいのですが、「実践Rustプログラミング入門」の言語部分(100ページ程度)が分量が少なめで気になっています
この本で大きく抜けている文法や機能ってありますか?

503 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 20:06:32.24 ID:xz5IWUMT.net]
>>494
The Bookと比べれば一目瞭然

504 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 20:11:06.98 ID:8H8V34/d.net]
>>493
サーバーOSのほうがクライアントOSよりクラッシュには寛容だぞ
サーバー側の開発したことないのかな?



505 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 20:22:58.56 ID:fmyiQrUP.net]
>>496
最近は仮想化&分散で寛容になっているの?

506 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 21:23:40.41 ID:EDSX1EuR.net]
>>494
最近の本だからasyncまであるし、そんなに大きな抜けはないかな
広く浅くならまぁいいんじゃないかと
もし細かい部分が気になったらthe bookで補完すればいい

507 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 21:36:25.19 ID:7aFGtcIv.net]
>>497
むしろchaos engineeringで積極的に落とす

508 名前:デフォルトの名無しさん mailto:sage [2021/05/07(金) 21:52:45.82 ID:Z7WMK8Ny.net]
ペースメーカーとか原子炉とか、ノンストップシステムでは常に複数動いている

Kubernetes などでは、ネットワーク分断に備えて、
正常な状態を多数決で決めるから、3, 5, 7 みたいな奇数を動かす

2対2とか偶数だと、どちらが正常か判断できないから

509 名前:500 mailto:sage [2021/05/07(金) 22:00:09.91 ID:Z7WMK8Ny.net]
Netflix などは常に、システムを攻撃して落としたりして、テストしてる。
サイボウズのkintone は、毎日システムを破棄して、作り直しているとか

Kubernetes を使っているのかな?

510 名前:デフォルトの名無しさん [2021/05/08(土) 00:03:29.89 ID:4agfhhA1.net]
非常時の処理はカーネルの中心部が決めることで
枝葉のモジュールに決定権はないという話なんじゃないの?

511 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 00:07:56.54 ID:OofXJFgO.net]
レイヤーがめちゃくちゃな話しとるな。
OSみたいなハードウェアに直触るものとkubernetesみたいな分散管理のソフトじゃ
全然話が違う。
実際kubernetesはGC付きのgolangが実装だろ。

512 名前:500 mailto:sage [2021/05/08(土) 01:02:28.51 ID:P6P/nG6A.net]
ノンストップシステムでは常に複数動く。
デュアルシステムとか

東証・富士通製のarrowhead は、3重だったかな?
それでも、ラックか何かの接続部分が落ちて、システムダウンした

ネットワークが集中している部分の故障が、最も怖い

513 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 08:40:46.17 ID:e+sagIsH.net]
>>492
なんでじゃ
割り込みルーチンに入るときの退避と出るときの復旧をきちんとやっていれば
割り込みルーチン以外の処理は割り込みルーチンが呼び出されることに対して透過的に動作できる
一部のハードなリアルタイムOSみたいに(多重割り込み前提で)割り込みルーチンから
通常コンテキストに直接「ジャンプ」してタスクをたたき起こすみたいなケースでもなければ割り込みの存在は
通常コンテキストで何をやろうと一切影響は無い
(もちろん割り込み禁止、みたいな直接割り込みに影響する命令を実行したら話は別だがそれは普通特権命令でOS以外は実行できな
 い

カーネルでの例外が問題なのは、
例外機構を持たないCならスタックポインタの調整で済むところを
デストラクタがある高級な言語だと例外が通過する際に自動変数として構築されていたオブジェクトを
例外が通過する関数全てについて解放してやらねばならない
(それでいて一方、自動変数として構築される可能性はあっても
 例外発生時に構築されていないオブジェクトに対しては何もしてはいけない
という点
これは例外を飛ばすだけでその経路全部が同一のコンパイラで書かれなければならないことを意味する
途中に手で書いたアセンブラのルーチンなどあろうものならスタックをぶち壊してハードウェアの例外でいきなり
落ちるということになってそんなことがOS内で起きたら計算機上の資源の安全が担保されない。
OSとしては失格である

514 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 08:53:39.11 ID:e+sagIsH.net]
、と思ったが
よく考えたら「手で書いたアセンブラのルーチン」があったらコンパイラはそれを知らない関数としてスタックポインタの調整以外のことを
しなかったら良いのかorz、
ここは「例外通過時にC++や異なるベンダーのRustコンパイラみたいな例外を捕捉する関数をコンパイルいたRustコンパイラが預かり知らない
巻き戻し処理が必要なルーチン」があったら、ということに訂正




515 名前:デフォルトの名無しさん [2021/05/08(土) 09:44:38.32 ID:9PfSgf27.net]
なんだこいつ
IQ64だな

516 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 10:15:07.28 ID:e+sagIsH.net]
IQは関係無いやろうがギギギギギ、

517 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 11:11:59.29 ID:52U5aUmg.net]
JAVAみたいな言語があるからnewしたまま放ったらかしでメモリ管理もろくに出来ない馬鹿で溢れかえって居るんだよな

518 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 11:36:05.31 ID:jLEsHVNz.net]
ついさっき知ったけど、new() はT だけじゃなく Result<T> を返していいんだな

519 名前:デフォルトの名無しさん [2021/05/08(土) 12:01:48.48 ID:9PfSgf27.net]
newはシンタックスじゃなくてただの慣例だからね
慣例ではResultを返すのはお作法に反するはず

520 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 12:03:38.57 ID:OofXJFgO.net]
別にjavaがない頃からそういうバカはいたけどね

521 名前:デフォルトの名無しさん [2021/05/08(土) 12:09:19.46 ID:rOsHiSsL.net]
メモリ管理もろくに出来ない馬鹿
・Linuxカーネルにカーネルスタックメモリ内の情報を読み取られる脆弱性
・「WebKit」にゼロデイ脆弱性 〜「macOS Big Sur 11.3.1」や「iOS/iPadOS 14.5.1」などが公開
・BIND9に脆弱性、アップデートや回避策を

522 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 12:14:25.93 ID:lGQPC/Vw.net]
>>509
因果関係が逆で、
頭が悪くてその程度ももともと出来ない人は昔はCやC++でプログラムできなかった
がVBやJavaやC#やJSやPythonやRubyではできた。

523 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 13:11:23.63 ID:RJ95z4qm.net]
>>511
newとかfromでResult返すのたまに見かけるけど
どうするのがおすすめなの?
try_newとかtry_fromにするのが良いのかな

524 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 13:37:14.67 ID:jLEsHVNz.net]
>>511
ただの慣例じゃなくて、clippy先生の指導対象らしい
https://rust-lang.github.io/rust-clippy/master/#new_ret_no_self

Checks for new not returning a type that contains Self.



525 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 14:30:50.83 ID:yMDwHl+j.net]
手動でスタックポインタの調整ってバグや脆弱性の温床

526 名前:じゃね? []
[ここ壊れてます]

527 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 17:15:39.08 ID:3vrEhaHR.net]
医療機器や原発の制御システムとかが不意にリセットしないとか思っている時点で
組み込みとか高信頼性システムとかを全く知らないんだなって思う
ああいうのは最悪暴走したらリセットして最低限の機能は提供出来るように
作るのが基本だからね。そうしないと想定外の事態がおきた時に詰む

528 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 17:18:46.34 ID:jLEsHVNz.net]
そんなコーナーケースの為に俺たちの使い心地が悪くなるようなら耐えられないな

529 名前:はちみつ餃子 mailto:sage [2021/05/08(土) 17:23:48.71 ID://zoyCL6.net]
暴走した場合にでもうてる手札を用意しておくってのと、
暴走しないように細部まで検証しておくってのは両立する話

530 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 17:27:07.74 ID:QshNNe4V.net]
いうほどコーナーケースってほどでもないだろ。
割と考慮されて当然のケースだわ。
まあlinux単体がその品質を担保できてるとも思わんけど。

531 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 17:33:15.67 ID:3vrEhaHR.net]
原子力関係だけでなく航空機や宇宙機もだが制御不能になるのが一番ヤバイんで
バグ出しは常識的な範囲で行って、あとはリカバリ系に注力した方がシステムの信頼性は向上する
歴史的に見ても事故るシステムの多くはこの辺をガバっている事が多いし

532 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 17:57:46.72 ID:e+sagIsH.net]
別に
ハイテク旅客機が落ちるのは自動制御と手動操縦のモード切替仕様を
パイロットが熟知しておらず緊急時に操縦桿を奪い合う格闘になったから
であってソフトは仕様通りだった
『ハイテク飛行機はなぜ落ちるか』(ブルーバックス)のインシデントの数々を見たらワカル

原子炉の制御系はそもそも暴走させないように金かけて形式検証する

人間が本気になったらどんだけバグをなくすために金と手間を掛けられるかというと
スペースシャトルのSSMEの制御装置のソフトがどんだけ徹底したデバッグが行われたかを見たらワカル

533 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 18:17:53.56 ID:57+jEKOs.net]
>>523
人間が使う物であればUIも当然システムに含まれる
判りにくいUIは良いシステムとは言えない

ソユーズや神舟はADA使ったりしていないけど
スペースシャトルより死人は少ない。米式が唯一の正解とは限らない
むしろスペースシャトルはシステム設計に失敗した例だろ

534 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 18:22:37.13 ID:e+sagIsH.net]
UIの仕様バグと>>518が言っている暴走する系のバグは話がちげう



535 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 18:36:29.80 ID:57+jEKOs.net]
組み込み機器でも多くのケースで不測の事態に備えてウォッチドックタイマを使うよね
トリガを何にするかやリセット時に何をするかは設計手腕が問われるところだけど

536 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 19:38:20.73 ID:RJ95z4qm.net]
>>516
fn new() -> Result<Self, T> は警告出ないよ

537 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 19:42:36.17 ID:PnHrKWCk.net]
newでResult返すのはいいけどfromは駄目だろ
というかFrom trait実装しろ

538 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 19:46:07.47 ID:RJ95z4qm.net]
>>528
そもそも impl From<T> Result<Foo, E> はcoherenceの関係でエラーになるよね
Intoはできるけど

FromStr なり TryFrom を使うべきというのはそう

539 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 20:23:33.19 ID:jLEsHVNz.net]
>>527
そりゃ Result はそこに書いてある a type that contains Self だからね

540 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 21:10:37.46 ID:vIQ3GRO1.net]
cのコードをrustに変換してくれるライブラリってありませんか?

541 名前:デフォルトの名無しさん mailto:sage [2021/05/08(土) 22:23:50.74 ID:8Oybw0Jl.net]
>>531
c2rust

542 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 12:16:13.70 ID:RMo+m9mc.net]
その場合誰がRustコンパイラと戦うんじゃ……

543 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 13:34:11.17 ID:DdW1Qm5g.net]
1.52来てたのね

544 名前:デフォルトの名無しさん [2021/05/09(日) 23:13:05.64 ID:T2j6cCMq.net]
例外処理って何が有難いの?Cでプログラム書いてて例外がなくて困ったことないんだけど
もしかしてただのシンタックスシュガー?



545 名前:デフォルトの名無しさん mailto:sage [2021/05/09(日) 23:31:00.87 ID:LUIc58fP.net]
戻り値の設定に近いものを一箇所にまとめられる。

546 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 00:03:43.87 ID:sciUqTyU.net]
どのレベルの話?
初心者の質問だとすると、関数の失敗を成功と区別するため。
戻り値で区別するんでなくて仕組みで。

547 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 00:10:05.03 ID:EWDopcLj.net]
例外の存在意義が分からない
戻り値で判別する方が可読性も高いし何も不足を感じない

548 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 00:21:25.87 ID:giJ6lOgz.net]
>>538
スレチ

549 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 07:17:37.24 ID:aMiH/GVN.net]
fileへのwriteとか毎行エラーチェック入るのしんどい

550 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 10:07:49.01 ID:ro06Xyvc.net]
>>538
開いた後、必ず閉じる処理が必要な場合があるが、それをxとすると、
関数のある場所でエラーを発見した時、呼び出し元へ返りたくても、
xを閉じてからでなくてはならない。xが複数有ったり、今後もxの
量が増えていくような場合、エラーが起きる場所全てでxを正確に全て
閉じてからreturnするのは難しい。なので、昔から、xを閉じる処理は
関数の最後の方に書いておいて、その直前にラベル lab_ex:; のような
ものを書いておいて、エラーが起きたときにはlab_exにgoto文
で飛ばすようなことが行われることが多かった。
でも、goto文は好まれ無い事があって、
try, catch 構文を使うと、goto文を使わなくてもそれが出来るようになる
ことが例外処理の一つのメリット。

551 名前:デフォルトの名無しさん [2021/05/10(月) 10:12:49.59 ID:ro06Xyvc.net]
>>541
BOOL func()
{
 BOOL rc = TRUE;
 open_some(x);
 if ( !func2() ) {
  printf( "エラーだよ\n" );
  rc = FALSE;
  goto lab_ex;
 }
 ・・・
lab_ex:;
 close_some(x)
 return rc;
}
↑のようなものが、例外処理を使えばgoto文を使わなくても書けるようになる。
ただし、goto文が何でそんなに嫌われるかは謎と言えば謎ぞの一つではあり、
lab_ex:; が見た目的に「浮く」からではないか、という説がある。
しかし、論理構造的にはgoto分がそんなに分かりにくいわけではない。

552 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 10:13:54.77 ID:Pi5UB1M6.net]
そういやCで bail: ラベルが多用されてたなーっていうのを
anyhowクレートの bail! マクロで思い出した

553 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 10:16:15.81 ID:pIvV80n0.net]
>>541,542
クソスレチ

554 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 10:23:18.20 ID:ro06Xyvc.net]
>>542
例外処理を使った場合、goto文が要らない:
BOOL func()
{
 BOOL rc = TRUE;
 open_some(x);
 try {
  func2() ; // 例外発生の可能性有り
  func3() ; // 例外発生の可能性有り
 }
 catch(...) {
  printf( "エラーだよ\n" );
  rc = FALSE;
 }
 close_some(x)
 return rc;
}



555 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 10:23:53.36 ID:ro06Xyvc.net]
>>545
ただし、この場合、x をクラスのオブジェクトで、x がデストラクトされる
時に自動的に close_some()を呼び出すようになっていれば、そもそも
goto文は不要なので、例外処理でやらなくても最初からgoto文が現れない。
しかし、すべてがクラスオブジェクトになっているわけではない。
典型的な例は、
BOOL last_flags = g_flags;
g_flags = 一時的なフラグ設定;
・・・
if ( xxx ) {
 // エラー発生:
 rc = FALSE;
 goto lab_ex;
}

lab_ex:;
g_flags = last_flags;
return rc;
のようなもの。

556 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 10:40:58.67 ID:u82ImyiI.net]
後藤さんいい加減にしてくださいよ…

557 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 13:07:54.71 ID:H09R880S.net]
Linuxや*BSDなどのカーネルはgoto文が誰に遠慮することもなく堂々と使われてますよ
そして可読性は何も損なわれていない
言語屋さんだけじゃないの?構造化でgotoがどうたらとかそれに代わる言語機構が
必要だとか言ってるのは
そして新たに言語を学ぶ人が無批判にそれらを盲信することが代々続いてる
ようにしか見えない

558 名前:デフォルトの名無しさん [2021/05/10(月) 13:38:27.10 ID:FH4+0Y9S.net]
多くの言語はハードウェアとしてCPU例外や、I/Oに対する入出力の(ハードウェア的)例外と、多くは
復帰可能なエラー分岐処理にて、プログラミング言語で「包括的に捕捉して後処理」するためにある。
例外の反対者はResult/Option/(Either)のようなものがあるのに、なぜ言語に例外を取り入れて、信頼性を
低下させるような隠された制御フローを導入するのかと主張します。

しかし例えばファイルへの出力で"fwrite"ではOSの上層では実際に書き込まれず、"fclose"で書き込まれたり
あるいは"fflush"でメモリー上とディスクが同期されるなどは、同期的な、従来の戻り値を確認しただけでは
正確な判断ができない。(これは言語のライブリーがBufferを使用しているとは別の話、たとえばディスク
容量が足りなくなった場合など、意図するプログラムは失敗する可能性があります。)
またResultなどが使用できるの場合は、ハードウェアやIOに依存しない場合にできるだけです。他にも、不正な
ゼロ除算などの発生は、カーネルでも、組み込みでも、CPU例外に対しては特定の例外の種類によりあらかじめ
決められたアドレスに強制的にジャンプします。C言語自身はCPUの挙動を定義していませんので、この制御の
フローの移動はCプログラミング言語の機能ではなくCPUメーカーの実装です。
つまり、標準のC自体だけでは、統一的にエラー処理を記述するということ自体が出来ていませんし、実行制御
フロー記述し完全掌握してコントロールするという事自体があやふやです。
(ゼロ除算でジャンプしなくてHALTするようなCPUがあるかもしれませんが知りません)

559 名前:デフォルトの名無しさん [2021/05/10(月) 13:43:11.18 ID:FH4+0Y9S.net]
多くの例外がある言語(RustやGoのpanicも含む)では、上記の例ではファイル出力とは無関係な処理でも
即座に後処理へ移動します。ですが、ここに1つの問題があり、多くは捕捉した後にほぼ「自動的に」
ディストラクタに記述された処理をスレッド毎に存在するスタックを遡って巻き戻しを行います。
(例外の反対者はこれを隠された制御フローというが、決して信頼性が低下するわけではないです、
カーネルの例外ハンドラを例に挙げれば、ただ挙動が合わない事と、多くの例外がある言語でのCPU例外の
捕捉はリカバリが不可能に近く、挙動が保証できない事でディストラクタ実行させて意味があるのかという
矛盾もあります)

それ以外の例外処理は概念的にはスレッドローカルグローバル変数とifとgoto/returnの組み合わせにしか
ならないので信頼性が低下したりはしません

560 名前:Bまた、C言語や昔の言語でgotoが嫌われていたのは、ラベルが
存在しないgotoだったりループ中のgotoだったり、プログラムのモジュール化を壊す制御であったためなども
あります。try-catch-finallyとは無関係ですが、同様に可読性が悪いように見えてしまうため、冤罪にされます。
そもそもアセンブラであればJMP命令にしかならない事をいつまでもグチグチ言うのは悪い癖です
[]
[ここ壊れてます]

561 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 15:15:38.71 ID:ro06Xyvc.net]
>>550
後半、BASIC言語を振り返ってみると、ラベルの無いgoto文はむしろラベルありより綺麗に書けていた。
gosubはラベル方式の方が良かったが。
Cのgotoはラベルが必須なのでラベルが浮いてしまって嫌われているという説がある位。

562 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 15:18:53.59 ID:ro06Xyvc.net]
例外処理の問題点は、
try {
 f1();
 ・・・
 f2();
 ・・・
 f3();
 ・・・
 f4();
 ・・・
}
とtryブロックの中に沢山の関数呼び出しが有った場合、コード上ではどこでも例外が
起きる可能性を捨てきれないため逆に危険な可能性を排除しにくいことがある。
例えば、fputc()やfwrite()などで例外が起きることが分かっているならそれはそれで
良いが、全く関係のないf1, f2, f3, f4でもどれかは例外が起きる可能性があるなら
非常にプログラミングしにくい。

563 名前:デフォルトの名無しさん mailto:さげ [2021/05/10(月) 15:21:55.24 ID:ro06Xyvc.net]
>>551
例えば、BASICでは以下の様な感じになるので、ラベルが無い事でむしろすっきり
見易かった。gosub文はまた別でいまの関数の様な感じで名前が付いている方が
分かり易かった。これは経験を積まないと理解しにくいかも知れない。
100 if xxx = yyy goto 120
110 ・・・
120 ・・・

564 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 18:35:05.49 ID:mFjZyrFq.net]
>>548
構造化の無い暗黒時代に戻りたくないわ。

制御構文と構造化設計を破壊するぐらいならgoto使わないほうがマシ。破壊しない程度だったら許容できるかね。



565 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 18:45:12.97 ID:QB4+qLHE.net]
Rustは学習コスト高いって言われてるけど
Scala辺りと比べても難しいですか?

566 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 19:40:11.34 ID:RQLzh3xR.net]
>>555
別に特別難しいわけではないと思う
いろんな言語からパクってきてる要素が多くて、これまで一つの言語しか使ったことない人は学ぶべきことが多いってだけで
ScalaとC++くらい経験あれば余裕だろう

567 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 21:15:30.50 ID:aMiH/GVN.net]
コンパイラの文脈解析がこんだけ普及したのだから
safe gotoが存在するべきだ

568 名前:デフォルトの名無しさん [2021/05/10(月) 21:21:46.54 ID:10iSv1/R.net]
言語自体よりも、情報技術の基礎が要求されるんじゃないの

569 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 21:38:27.66 ID:+CGjcQmG.net]
>>555
やってみるのが一番早いよ
https://ideone.com/
こーいうところを使うとPC側にコンパイラとか用意せずに試せる

570 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 23:10:53.18 ID:Ai0jiWQm.net]
>>559
>>1にもあるけどhttps://play.rust-lang.orgのほうがいろいろ充実してる
てかideoneは1.33.0とかなのか、結構古いね

571 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 23:22:34.42 ID:rt96Jr4B.net]
playground、いつのまにか以前書いたコードが残るようになっててなんかうざったいんだけど、
初期のhello worldの状態に戻すのってどうやるの?(クッキー削除とかはなしで

572 名前:デフォルトの名無しさん mailto:sage [2021/05/10(月) 23:29:40.57 ID:4UvCiOpM.net]
んな面倒なことするくらいならrustupインストールすりゃええやん

573 名前:デフォルトの名無しさん [2021/05/11(火) 00:01:56.34 ID:bFiGc/cl.net]
>>549
ファイルへの書き込みは返り値promise等でもらっておいて他の作業を進めて
どうしても書き込み完了していないと作業を先へ進めてはいけないところでようやくawait等することで
例外処理も遅延(手続き的な後ろ化と多段時の上位化)ができますよね

あとOSカーネル内の話は
例外と割り込みをごっちゃにしているように見えます
いずれにせよカーネル内ではtry例外使わずとも多段にエラー返り値を返していけばいいだけでしょう
エラー割り込み時もメモリ不足もシステムコールならエラー値返すわけですし

574 名前:はちみつ餃子 mailto:sage [2021/05/11(火) 02:56:09.45 ID:sf6ddr3r.net]
>>555
Rust はそれほど難しいというわけでもないと思う。
C に ML 風の型システムを付けたって程度。

普通のプログラマにとって目新しいと言えるのはライフタイムの概念くらい。
でもそのひとつが馴染み無さ過ぎるというか、
他の言語では意識せずに済まさせようとしてきたところを
あえて露骨に管理しようとしてるところがしんどいとは感じるかもね。



575 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 03:24:21.67 ID:BXZYJdJz.net]
>>564
Rustのライフタイムは、鶏と卵の関係の様な部分で言語の動作が分からない。
どっちがどっちに影響を与えているのかの部分が。
自動判定の仕組みも一部だけ説明されていて一般法則が書いておらず、その場しのぎ的な言語仕様なのかもしれない。

576 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 04:47:35.34 ID:+XHXxVLE.net]
non lexical lifetimeでググれば詳細な仕様出てくるだろ

577 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 05:08:47.84 ID:BXZYJdJz.net]
>>566
出てこないと思うが。

578 名前:デフォルトの名無しさん [2021/05/11(火) 08:24:36.99 ID:hJ8vQWaq.net]
>>561

通りすがりですが、保存せずにただ試すだけなら

1.シークレットモードで新規タブ
2.playgroundのサイトを開く(ブックマーク登録からとか)
3.コード入力かコピペ作業

でどうでしょうか?

579 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 10:55:34.68 ID:nxCZKmfr.net]
>>567
nll rfcで検索したら出てくるよ

580 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 12:37:05.27 ID:BXZYJdJz.net]
>>569
そこには例が書かれてるだけで、数学みたいな意味でのちゃんとした厳密仕様は書いてないと思うんだよ。
Rustのライフタイムは数学規則のように機械的にパターンで処理できるような一般化された規則にはなってないという意味において。

581 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 12:42:48.49 ID:yczyG8TY.net]
厳密な仕様があるのは理想だけど、規格化された言語ですら数学的に厳密な仕様なんて存在しないしな
最終的にはCoqのソースコードで示される、とかはあるかもしれないが

582 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 12:47:18.80 ID:BXZYJdJz.net]
>>571
CやC++は数学的なパターンで処理できるようになってる。
そこにヒューリスティックなものは入ってない。

583 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 12:55:41.33 ID:r1e7nJBc.net]
the abstract syntax tree でのライフタイムの解析から
the control-flow graph でのライフタイムの解析にしたって言ってるから
かなりマシン語に近いとこで判定してるってことだわな。
ここにいる奴に聞くだけ無駄w

584 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 18:36:37.89 ID:efUOVNNI.net]
>>571
純lispくらいかね。
あるいはBrainfuckとか。



585 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 18:56:14.78 ID:jWdOrz94.net]
issue #25860って未だに解決されてないんだよね?
行きあたりばったりでライフタイム仕様決めてきた結果w

586 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 19:03:56.93 ID:wl2jzTgT.net]
Rustと原子力発電は人類には早すぎたんや…

587 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 19:52:59.74 ID:8+nUEbRM.net]
Rust嫌う人ってなんでみんな #25860 の話するのって言われてんぞ

588 名前:デフォルトの名無しさん mailto:sage [2021/05/11(火) 22:03:42.47 ID:1AWmjfgF.net]
>>576
太陽光発電は、ある意味原子力発電と言えるのではないだろうか。

589 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 08:51:30.06 ID:1N4enQMj.net]
Rust 2021 Editionは10月リリース予定

https://blog.rust-lang.org/2021/05/11/edition-2021.html

590 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 10:38:41.98 ID:qFi3vx5o.net]
1.56.0からか

591 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 10:40:17.60 ID:1N4enQMj.net]
2021 Edition ざっと読んでみたけど、次の2点以外は些末な変更だな

for e in [1, 2, 3] {}
がエラーにならなくなる
(IntoIterator for arrays)

クロージャーが構造体をフィールド単位でキャプチャーするようになる
(Disjoint capture in closures)

592 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 21:45:20.66 ID:rLfxFtSp.net]
2018で勉強してますが仕様変わりますか?

593 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 22:08:40.92 ID:fyx4mRuh.net]
https://www.google.com/amp/s/japan.zdnet.com/amp/article/35170513/

「Windows用Rust」のバージョン0.9がリリース

何か誤解を与えそうな記事タイトルだ

594 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 00:09:46.25 ID:JmJXN960.net]
リポジトリ名的にwindows-rsのが適語か?



595 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 00:34:31.53 ID:hcgdol/O.net]
>>582
マイナーチェンジだし2018も継続して使えるし特に問題ないよ

596 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 00:46:54.51 ID:oO6nJ4P1.net]
何年か前なら喜んでたんだけどな、どうしよ何の興味も沸かない
Docker触り始めた辺りからWindows用は趣味でも書かなくなってしまった…

597 名前:デフォルトの名無しさん [2021/05/13(木) 07:59:13.00 ID:OSZsGS3x.net]
>>583 多分windowsクレートの説明文のRust for Windowsの直訳だとは思うけどこれは誤解するわ

598 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 11:06:57.34 ID:mHvpW2NY.net]
Rust for Windowsという名前がミスリーディング
(A) Rust (crate) for Windows (development)をRust for Windowsに略したら誰でも誤解する
狙ってるのかもしれないが

Windows API bindgen for Rustあたりが適当

599 名前:デフォルトの名無しさん [2021/05/13(木) 12:50:12.69 ID:OSZsGS3x.net]
このクレート普通にソフト作るのに使ったら移植性無くなるからライブラリ用かな?

600 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 14:22:28.44 ID:p1C3K64x.net]
防衛省が中国のハッカーとやり合える人材を募集中 年収最高2000万円
https://leia.5ch.net/test/read.cgi/poverty/1620874048/

601 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 14:34:12.09 ID:EmFUnxGS.net]
クラッカーにうってつけじゃないか

602 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 15:04:14.32 ID:67slJFqF.net]
年収最低はいくらからですかね

603 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 15:10:36.53 ID:ENK4De8l.net]
最高が2000万円ってだけね。。
こういうので平気で300万円とかいい出すのが今の日本やで。

604 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 18:36:08.63 ID:hcgdol/O.net]
>>589
Windows専用のアプリを作る用途もあるのでは
一般的ではないかもだけど



605 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 18:39:15.84 ID:oBGJ4/nI.net]
Rust for Windowsを欲しがったのはMicrosoft自身だろう
既にVSのインストーラー内部などでRust使用中なので

606 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 19:27:59.33 ID:4YggBXb4.net]
rust for windowsで作る本作ってくださいお願いします

607 名前:デフォルトの名無しさん [2021/05/13(木) 19:29:13.29 ID:vZYCxDQa.net]
>>594 Windows専用のアプリが作りたいならC#でも使えばいいと思うけど...

608 名前:デフォルトの名無しさん [2021/05/13(木) 19:3 ]
[ここ壊れてます]

609 名前:0:20.99 ID:vZYCxDQa.net mailto: >>594 Windows専用のアプリが作りたいならC#でも使えばいいと思うけど... []
[ここ壊れてます]

610 名前:デフォルトの名無しさん [2021/05/13(木) 19:30:58.76 ID:vZYCxDQa.net]
おっとミスって2回書き込んでしまった
失礼

611 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 20:59:04.54 ID:vzWwtH6K.net]
>>590
そういう技術者にも射撃練習とかやらせるのだろうか?

612 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:40:48.09 ID:NNemQTGQ.net]
>>595
もうメジャーな用途で使われてんのか

613 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:45:54.80 ID:vzWwtH6K.net]
windowsもそろそろNTカーネルを捨てる時期が来るだろうし色々模索はしてるんだろうな

614 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 21:57:03.92 ID:WjgS+eLl.net]
もし仮にNTカーネル捨てたとしてLinuxカーネル一択だと思うがな



615 名前:デフォルトの名無しさん mailto:sage [2021/05/13(木) 22:08:50.47 ID:vzWwtH6K.net]
Linuxへの接近はここ数年目立ってるし無くはない話だな

独占市場と過去の互換性を捨てきれるか
仮想環境で過去の互換性を維持することも考えられる

616 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:10:59.62 ID:FBkeGRqg.net]
>>604
NTカーネル捨てるのはビジネスとして有り得ない。
せいぜいwsl路線を強化してlinuxカーネルを取り込んでいく方向だろ。

617 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:37:43.19 ID:BI4FO4HO.net]
カーネルを捨てて切り替えるとか出来るわけないだろ

618 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 08:52:11.24 ID:9b8NT0Ot.net]
3才児が「ぼくはうちゅうひこうしになるんだ!」って言ってるようなもんだから生暖かく見守ってやれ

619 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 10:22:28.00 ID:6SQ932Rj.net]
OSカーネルに対するコンプレックスがすごい人がいるんだろ。
この前のlinuxドライバに関する議論でもそういうの感じるわ

620 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 11:10:24.23 ID:bMDjGf5Y.net]
rustがgolangより人気が出ると思っていいですか?

621 名前:デフォルトの名無しさん [2021/05/14(金) 11:14:13.19 ID:5xLewDJ4.net]
>>609
Goはガーベッジコレクションがあるから?

622 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 11:29:33.68 ID:6SQ932Rj.net]
GCとランタイム速度に困ったことのある奴だけ気にすればええ。

623 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 13:23:04.93 ID:TMXA3cLH.net]
goとrustどっちが良いか迷うならgoやっといた方が潰しが効くと思う
自分はrust好きだからrust使うが

624 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 14:57:53.07 ID:85G96vHL.net]
両方やっとけ



625 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 15:16:48.50 ID:678S/iU6.net]
なんでマイナー言語のはずのgoがよく言及されるようになったのかと思っていたら、AWSで使える言語の一つになっていた。
Azureでも使えるようだ。

626 名前:デフォルトの名無しさん [2021/05/14(金) 15:45:19.02 ID:WB7bczPS.net]
goがマイナー。。。..

627 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 15:46:03.80 ID:BI4FO4HO.net]
サーバープログラムみたいな閉じた環境で、出来るここまでと決まってて
要らないこと考えたくないなら制約された言語選んだほうが良いかもな

628 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 15:47:17.23 ID:6SQ932Rj.net]
goでほとんど問題ないんだが、それだとrustの出番なくなっちゃうからね。

629 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:15:48.73 ID:1T0ViQH9.net]
Go言語がマイナーならこの言語はどんだけマイナーになっちゃうのよ

630 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:25:56.91 ID:Z0ePaP6y.net]
goとrustの違いが分からないような知識量ならgoやった方が不幸にならないかと

631 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 16:48:29.92 ID:678S/iU6.net]
参照型はローカル変数にだけ入れて一時的な目的だけに使うことに徹してスクリプト言語の様な書き方だけに専念すればRustはスクリプト言語であるかのように使えて、習得は難しくないかも。
参照型を構造体の中に入れようとしたとたんCやC++では考える必要の無かった難しい問題が生じる。

632 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 17:00:31.58 ID:dvkZe6EK.net]
メジャー言語
c java vba

633 名前:デフォルトの名無しさん [2021/05/14(金) 17:40:01.47 ID:N2rlLeCr.net]
Rustを勉強したら低レベルが理解出来る!!!わけねえだろ
https://www.akiradeveloper.com/post/learn-rust-and-low-level/

634 名前:デフォルトの名無しさん [2021/05/14(金) 19:36:04.21 ID:5xLewDJ4.net]
例えばWeb系ならばRustがベスト
WasmでGC抱える言語をわざわざ選ぶメリットないからね



635 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 19:44:16.91 ID:6SQ932Rj.net]
こういう詐欺師が普通におるからrustは信用できんわ

636 名前:デフォルトの名無しさん [2021/05/14(金) 19:51:45.41 ID:WB7bczPS.net]
rustに対するコンプレックスすごい人いるね

637 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:26:02.54 ID:0Bqgd+6M.net]
詐欺師はどこにでもいるからな
とはいえ、webならwasmは正しくないとは思うがwasmならrustは結構正しいと思う

638 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 20:32:01.67 ID:6SQ932Rj.net]
wasm,rustでまともに開発してたら絶対そんなこと思わんわ。。どいつもこいつも馬鹿すぎる

639 名前:デフォルトの名無しさん [2021/05/14(金) 20:40:33.59 ID:WB7bczPS.net]
それで、どんなまともなものを作っているんですか

640 名前:デフォルトの名無しさん [2021/05/14(金) 20:46:14.11 ID:5xLewDJ4.net]
>>624
とこが詐欺?
あなたはWebブラウザ上のWasmでRustではなくGoを用いているのですか?

641 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 21:18:15.11 ID:TMXA3cLH.net]
>>627
それはあなたがまともにrust使えてないだけなんじゃないですかねぇ

642 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 21:22:56.09 ID:yxEaYkUD.net]
話が具体的で説得力がある

643 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 21:38:43.40 ID:2w1FBHD8.net]
>>572
形式的に書けているのは構文規則だけで
意味規則は自然言語で書かれているやんけ

644 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 22:59:38.34 ID:R2Ezzb7N.net]
「Rustはスクリプト的に書ける」とかいう謎の言葉言う奴沢山いるけどなんぞ?
同一人物か?



645 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 23:07:50.74 ID:TMXA3cLH.net]
我々が知らないところでevcxrが流行ってるのかもしれない

646 名前:デフォルトの名無しさん mailto:sage [2021/05/14(金) 23:23:46.43 ID:72ZodHJE.net]
google謹製のREPLね
エベクサ?

647 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 02:09:59.05 ID:BphhllcO.net]
>>633
Rubyと同じようなメソッドチェーンを使ったコードを見かけたから。

648 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 03:17:16.69 ID:vuo6fbRn.net]
ドットでメソッド呼び出しする言語は大概そういうライブラリ設計あるでしょ

649 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:05:39.24 ID:DTE+piln.net]
>>637
C++やJavaでは見たこと無い。
JSでも余り見かけない。

650 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:12:58.76 ID:Y+SvMVkX.net]
そもそもメソッドチェーンって「スクリプト的」なのか?

651 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:24:14.14 ID:C+CtGbiq.net]
前々からヤベェやつだとは思ってたが
レベルの低さが想像をはるかに超えてた

652 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 11:27:04.30 ID:MS0dCBGJ.net]
c言語みたいにcsvパーサーも自前で用意するような環境だとそらスクリプト的だろうね。

653 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:00:43.05 ID:A3vQNOxR.net]
unityとかUEがrustに対応しないかなあ

654 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:00:58.11 ID:ZgJC7yuF.net]
cargoみたいなパッケージマネージャがあるのもスクリプト的な要素のうちなのか?



655 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:10:16.46 ID:MS0dCBGJ.net]
cargoは低レイヤー慣れてる人からすれば邪魔でしかないけどね。

656 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:20:50.35 ID:DTE+piln.net]
SourceforgeなどでRustが好きといっている人の大部分はレベルが低いだろう。
そもそもこの世の中、大多数から受けるものにレベルが高いものがあったためしがない。
好きな言語ランキング上位のJS、Pythonも初心者向け言語であることは誰もが認めることだし。

657 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:40:11.21 ID:UqP25wMI.net]
sourceforge???
stackoverflowの調査かなんかと勘違いしたの?

658 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:41:57.93 ID:ZgJC7yuF.net]
>>644
どういうこと?ベアメタル向けでもcargo使うのが主流だと思っていた

659 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:47:56.99 ID:ZgJC7yuF.net]
>>645
使用者のレベルの高低と言語のレベル(?)の高低は一致するという主張かな?

言語のレベルが高いというのが最先端のテクノロジーを取り込むという意味ならrustの目指すところではないと思う
他の言語で実証されたコンセプトを取り込むと宣言してる(た?)はず
高レベルな言語が必要な人はこんな普及言語じゃなくてもっと尖った言語を使うか自分で作るべきなのでは

660 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:49:38.36 ID:DTE+piln.net]
>>646
ああ、そっちだった。
Stackoverflowも来てる人の頭の良さは一般大衆と同じくらいだから同じ。

661 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 12:53:14.42 ID:DTE+piln.net]
>>648
そういうことじゃなくて、
・Rustをほとんど使っても見てないのに勝手に「好き」と言っていることが分かってる。
・Stackoverflowのような沢山の人が集まる場所の調査では、必ずJSやPythonのような初心者向けの言語が人気となるわけだから、そこの人々が好きだと思う言語は、JSやPythonのような感覚で使えると勝手に思い込んである蓋然性が高い。
 ただし、現実はRustは実際には使ってないのに勝手に言っている。
ということ。

662 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 13:20:44.67 ID:YOv93GRR.net]
stackoverflowの調査の話なら、調査内容を勘違いしている
あれは「今Rustを使っている人が、今後もRustを使い続けたいかどうか」のアンケート結果をmost lovedと言ってるだけ
だからJSやPythonユーザの意見は入ってない
そもそもloveって言葉に語弊があるし、日本語にしたときに「人気の」とかなって余計訳がわからなくなってる

663 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 13:25:20.53 ID:YOv93GRR.net]
たぶん「最も嫌嫌使っている人が少ない言語」みたいなのが正確な気がするな

664 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:15:44.60 ID:MW7lNw7H.net]
「今使ってる人が次も使いたいと思うか?」ってJetBrainsの調査でも毎回入れてくる項目だな
海外のアンケートではよく見るやつ



665 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:17:03.39 ID:DTE+piln.net]
>>651
もし前半の通りなら、今Rustを使ってる人なんて極一握りの物好きだけだから
「love」なのは当たり前で調査結果が意味が無い。

666 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:19:45.06 ID:eXXN4CKf.net]
一生でどれか一つのプログラミング言語しか覚えられないとして
Rust選ぶ人いますか?

選択したとして別にその言語がいきなりマスターできるわけでなく
ただその言語しか覚えられないというだけですが

667 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 14:23:36.58 ID:DTE+piln.net]
今rustを使ってる人って、自ら進んで使おうとした人に限られるから
嫌いな人がほとんどいないのは当たり前だから、調査結果にバイアスが
掛かりすぎていることになるな。

668 名前:はちみつ餃子 mailto:sage [2021/05/15(土) 15:05:35.65 ID:pVi51x8H.net]
そういえば C++ でメンバ関数の評価順序に関して設計者も気づいてなかった考慮漏れが見つかった
(よくあるパターンが実際には未定義だった) って話があったな。
www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0145r0.pdf
C++17 で修正されているはずだけど。

宣言的な表現や関数的な表現をプログラミング言語に取り込む試みは数多いが
現実は順序からは逃れられぬのだ……。

669 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:16:25.44 ID:HcoKJY+/.net]
Rustがスクリプト的に書けるかどうかはおいといて、
個人用のツール書く言語をPythonからRustに乗り換えたっつー話は一応あるな
https://hayatoito.github.io/2017/faq/#programming-language

670 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:20:52.26 ID:DTE+piln.net]
>>658
Googleがnode.jsで書いていたものをRustにしたと聞いたぞ。

671 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:23:50.02 ID:TrqVEcq2.net]
全部書き直すのは逆に効率悪そう
速度的にキツイ場合のみでいいんじゃないか

672 名前: []
[ここ壊れてます]

673 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 15:32:34.68 ID:H/3gPTTR.net]
どちらかといえば速度よりも変更頻度が動機になると思う
静的チェックツールも増えてはいるけどコンパイル型はいじる時の安心感が違う

674 名前:はちみつ餃子 mailto:sage [2021/05/15(土) 15:37:59.52 ID:pVi51x8H.net]
>>660
言語を跨いで呼出すときはその境界で色々な処理が挟まったりもするので、
まだらに入り乱れるような形になるとそれはそれで実行性能の足を引っ張ることもある。
状況次第なので一概には言えないけど、言語を変更すると決めたなら
そこそこ大きい単位で乗り換えるのが妥当な場合は結構あると思うよ。



675 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 17:32:17.46 ID:jwQMP5Oj.net]
>>661
それはあるね
個人用のツールだとそんなに真面目にテストも書かないから
動的型だと忘れた頃に改修したくなって詰む

676 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 18:53:39.15 ID:IpomZGOJ.net]
>>642
MSがdotnet対応のRust#出したらUnityワンチャンあるんやない?

677 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 19:10:58.08 ID:Y+SvMVkX.net]
そこはRust/CLIで。

678 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 21:52:45.98 ID:TrqVEcq2.net]
GCのあるrustに存在意義などない

679 名前:デフォルトの名無しさん mailto:sage [2021/05/15(土) 22:13:28.16 ID:Y+SvMVkX.net]
GCとデストラクタが共存するC++/CLIはなかなか興味深い言語だった。

680 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 11:00:47.47 ID:9EXRd3vl.net]
RustのGCって初期はまた復活されるかもーみたいなノリじゃなかったっけ?

681 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 11:12:01.38 ID:SPtqbmz9.net]
RC関連についてはやるとか?

682 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 12:07:45.66 ID:MDYO1Tug.net]
@ pointerとか ~ pointerとかあった頃の話?

683 名前:デフォルトの名無しさん mailto:sage [2021/05/16(日) 15:06:48.66 ID:JH7fFMWR.net]
>>665
確かにそっちか
>>666
GCがあるRustって言うよりはunsafeを外部リンクで呼び出してるようなもんだろ

684 名前:デフォルトの名無しさん mailto:sage [2021/05/17(月) 10:53:44.01 ID:ZSkTvtbm.net]
rustが覇権を取るにはPHPみたいにドキュメントの翻訳をたくさん作ること
そしてサンプルコードを盛り込むこと



685 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 19:40:20.00 ID:A1yOEMnk.net]
>2021 Editionは2021年10月にリリースされる。今回のエディションは「Rustの使用感を大きく改善する」ものになるという

あんまり前にこんな発表しないでほしい
やる気なくなる

686 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 19:44:35.79 ID:Gj41gD2H.net]
>>673
ちゃんと発表資料見れば分かるけど、大して使用感変わらんよ
クロージャー使いまくりの人が一番恩恵を受けるかな

687 名前:デフォルトの名無しさん mailto:sage [2021/05/18(火) 20:19:55.73 ID:Z0RWJbQc.net]
所有権は移動するときのほうにマークが出るべきなんじゃあ

688 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 07:47:56.56 ID:X700JkCT.net]
まぁコストかかるのはコピーだし

689 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 08:05:05.13 ID:o3bqBTNO.net]
Rustの真似をしようとする言語がないのがふしぎだ

690 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:30:25.52 ID:HmkTJiD6.net]
https://en.m.wikipedia.org/wiki/Rust_(programming_language)
wikipedia見ただけだけど Crystal, Elm

691 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:30:46.25 ID:HmkTJiD6.net]
など影響を与えた言語は列挙されてた

692 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:42:47.10 ID:9T1L9lvJ.net]
>>678
Elmのどこが?と思ってソースを読んだら
関数型言語なら大体持ってるEither型の名前を Result, Ok, Error にしたところがRust由来とな

うーむ持ってきたのは名前だけなのにInfluencedか

693 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 12:59:40.27 ID:u9Tr9lyP.net]
Gleam
https://gleam.run/book/tour/index.html

OwnershipやLifetimeの考え方を採用した言語はまだ聞いたことがない

694 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 13:11:21.07 ID:bDX8SBSl.net]
所有権の考え方を採用している言語としてはC++などがあります



695 名前:デフォルトの名無しさん mailto:sage [2021/05/19(水) 14:00:04.90 ID:NOe9g/vN.net]
まあインスタンスの共有については何らかの言語サポートが入ってもおかしくないかもね

696 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 01:09:22.49 ID:WwVMFHF+.net]
DにもOwnership入ったとか小耳に挟んだだけなら

697 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:03:02.09 ID:VKAk8Olu.net]
https://forest.watch.impress.co.jp/docs/news/1325564.html
凄いね

698 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 17:06:31.55 ID:13olK3Lw.net]
>>685
UIがReactというのが残念

699 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 18:20:18.69 ID:PiC1UW/o.net]
逆に何ならいいんだよ

700 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 18:33:43.55 ID:UXe9/StR.net]
GUIフレームワークをRustで作るうまみあまりなさそう

701 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 19:39:25.12 ID:QrP75Wi1.net]
Rustで作ってあるなら絶対大丈夫だな!

702 名前:デフォルトの名無しさん mailto:sage [2021/05/20(木) 22:57:01.82 ID:HbCDuKW4.net]
設計がクソだとダメ
ダメなヤツはなにやってもダメ

703 名前:デフォルトの名無しさん [2021/05/21(金) 11:45:49.77 ID:r1IBz1vL.net]
>>538
(1)もちろん例外を使わずとも関数呼び出し等がエラー値を返すことで全て実現できます

(2)ところがエラー値が返ってくると毎回if文やmatch等でエラー時はそこですぐreturnする等の処理を書く必要があって面倒かつコードが醜いため例外の使用が好まれました

(3)Rustでは関数の返り値型をResult<T,E>とすることに加えて「?」オペレーター(旧try!マクロ)を使うことで(2)の処理を自動化しました

つまり関数等呼び出し毎にifやmatch等で返り値エラーチェック&returnの記述をしなくても末尾に「?」を記述するだけで済みます

これでチェーンも出来て具体的には
b = a.hage()?.hige()?.hoge()?
と書くだけでhage()でエラーが返れば早期エラーreturnしますしhige()やhoge()でエラーでも同様です
関数の返り値型がResult<T,E>であることが使用条件です
これはもちろん正常値の<T>型とエラー<E>型のenumです

これらにより関数を多段に深く呼び出していても深い所でのエラーがすぐにreturnを多段にしてエラーが戻って来ます
したがってRustでは例外を使わなくても困らないのです

704 名前:デフォルトの名無しさん [2021/05/21(金) 13:37:02.96 ID:J6y23PLS.net]
すまんrust新参者なんだが、Rust By Exampleのコードいじって勉強してて、以下のコードが疑問に感じられた。
以下のプログラムはmain関数内のif文は実行されないとは明らかなんやが、それでもsubの行でいわゆるuse-after-freeのコンパイルエラーが出る。
これはif文が実行されなくてもdropは実行されるということなんですか?
下のコードみたいにuse-after-freeになるかならないかがif文の条件満たすかどうかによって決まるようなプログラムでも
rustでは一緒くたにuse-after-freeになるとみなされるってことなんですね?
そう考えればそこまで賢くないコンパイラですね
struct Droppable {
id: &'static i8,
}

impl Drop for Droppable {
fn drop(&mut self) {
println!("> Dropping {}", self.id);
}
}

fn sub(d: &Droppable) {
if *d.id == 0 {
drop(d);
println!("> Test {}", d.id);
}
}
fn main() {
let _a = Droppable { id: &0 };
if *_a.id == 1 {
drop(_a);
}
sub(&_a);
}



705 名前:デフォルトの名無しさん [2021/05/21(金) 13:4 ]
[ここ壊れてます]

706 名前:0:53.52 ID:J6y23PLS.net mailto: ちなみにコンパイルエラーも貼っておく

Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `_a`
--> src/main.rs:22:9
|
18 | let _a = Droppable { id: &0 };
| -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait
19 | if *_a.id == 1 {
20 | drop(_a);
| -- value moved here
21 | }
22 | sub(&_a);
| ^^^ value borrowed here after move //ここでuse-after-free errorが発生!

error: aborting due to previous error

For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground`

To learn more, run the command again with --verbose.
[]
[ここ壊れてます]

707 名前:デフォルトの名無しさん [2021/05/21(金) 13:44:28.52 ID:J6y23PLS.net]
Compiling playground v0.0.1 (/playground)
error[E0382]: borrow of moved value: `_a`
--> src/main.rs:22:9
|
| let _a = Droppable { id: &0 };
| -- move occurs because `_a` has type `Droppable`, which does not implement the `Copy` trait
| if *_a.id == 1 {
| drop(_a);
| -- value moved here
| }
| sub(&_a);
| ^^^ value borrowed here after move //ここでuse-after-free errorが発生!

error: aborting due to previous error

For more information about this error, try `rustc --explain E0382`.
error: could not compile `playground`

To learn more, run the command again with --verbose.

見やすくした

708 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 14:49:33.29 ID:vx/ErwhM.net]
意味のないコードだよ

709 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 14:53:16.15 ID:PNtD97K1.net]
コンパイラは別に値まで見ないからな
clippyが意味のない分岐だよと指摘してくれるのかどうかは知らんが

710 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 14:55:24.20 ID:HgMuIEwp.net]
>>692
基本的に条件分岐はpredがコンパイル時に評価できる場合でも true/false 両方あり得るものとして扱われるよ
その後の最適化フェーズであり得ないルートは除去されるだろうけど最適化の結果でコンパイルエラー差異が出ないようにする考え方なんだと思われる
無限ループ専用の構文であるloopが導入された背景もたぶんこのあたりにある

711 名前:デフォルトの名無しさん [2021/05/21(金) 15:52:58.09 ID:J6y23PLS.net]
>>697
trueのときもdrop、falseのときもdropされるとみなされるということは、
if文によってheap領域で確保しているメモリを解放するかしないか場合分けできないってことじゃん
それって不便では?

712 名前:デフォルトの名無しさん [2021/05/21(金) 16:14:23.61 ID:qRzkKAr2.net]
>>698 これ元のコード見てみ
これifの条件がtrueだろうがfalseだろうがsub(&_a);は実行されるやん
ifの条件がfalseのときには問題なく実行できるけど、もしifの条件がtrueになって_aがdropされてしまった後にsub(&_a);が実行されてしまうと開放された値を使うことになる
だからRustコンパイラはエラーを吐くんだよ

713 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 16:15:51.92 ID:91Y2FzX3.net]
いや、普通に場合分けはできるが…

どちらかというとifの条件を変えるたびにコンパイルが通ったり通らなかったりするほうが不便では?
そこにifがあるってことは(将来的にとか何らかの条件で)実行される可能性があるからあるんでしょ
もし絶対に実行されないことが確定してるなら書く意味ないし

714 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 16:19:22.28 ID:91Y2FzX3.net]
場合分けしたいならこんな感じで

if *_a.id == 1 {
drop(_a);
} else {
sub(&_a);
}



715 名前:デフォルトの名無しさん [2021/05/21(金) 17:42:19.92 ID:J6y23PLS.net]
>>700
言ってる意味がさっぱりわからん
>>692のプログラムにあるとおり
現実問題、将来的に決して実行されるわけがないif文というものは存在するし
if文があるというのは実行される可能性のあるの十分条件でもなければ必要条件でもなわけでもないんやが。
ワイが言いたいのは仮にrustの型システムを無視して>>692のコードをそのままコンパイルしたとしても
if文は実行されないわけだから安全なはずなものまでを省いているというところが不思議だってことや
つまりuse-after-freeバグが現実には起きないコードまでもif文の他の条件でUAFバグが起きるがために
ひとまとめにUAFが起きる

716 名前:ニみなすrustコンパイラの姿勢がif文である条件のときだけfreeするコードを書くのを認めないようにみえるという
ワイの感想に繋がってるわけでして
[]
[ここ壊れてます]

717 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 17:53:39.45 ID:IHGXJo1X.net]
use of moved valueやborrow of moved valueを
use-after-freeとして理解してるのがそもそも間違ってる

The Bookを読んでLifetimeとOwnershipを復習してくれ

718 名前:デフォルトの名無しさん [2021/05/21(金) 18:00:55.07 ID:J6y23PLS.net]
>>692のコードをcに書き直してみたらこうなる
} Droppable;
void drop(Droppable* d) {
printf("> Dropping %d", d->id);
free(d);
}

void sub(Droppable* d) {
if (d->id == 0) {
//free(d);
printf("> Test %d", d->id);
}
}
int main() {
Droppable* _a;
_a = malloc(sizeof(Droppable));
_a->id = 0;

if (_a->id == 1) {
drop(_a);
}
sub(_a);
}

719 名前:デフォルトの名無しさん [2021/05/21(金) 18:01:46.42 ID:J6y23PLS.net]
これはrustでは弾かれるはずの「if文のある条件のときだけヒープのある部分をfree」というコードのはずだが
安全なCのプログラムや コンパイルは通るしランタイムエラーも起こさない。
メモリ安全なプログラムの中では、cで書けるプログラムのほうがrustで書けるプログラムより広いんだね
rustはメモリ安全なcのプログラムと同等な処理を書けない部分もあって不便じゃないかっていうのが結局のところワイの疑問になるんや
じゃあrustでは「if文のある条件のときだけヒープのある部分をfree」のコードをどう書くんや?
メモリ安全性を損なってるわけでもない処理ではないはずなんやがrustのコンパイラははじくぞ?

720 名前:デフォルトの名無しさん [2021/05/21(金) 18:03:27.13 ID:J6y23PLS.net]
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
} Droppable;
void drop(Droppable* d) {
printf("> Dropping %d", d->id);
free(d);
}

void sub(Droppable* d) {
if (d->id == 0) {
//free(d);
printf("> Test %d", d->id);
}
}
int main() {
Droppable* _a;
_a = malloc(sizeof(Droppable));
_a->id = 0;

if (_a->id == 1) {
drop(_a);
}
sub(_a);
}

ほい完全版

721 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:06:23.36 ID:p9FphGnI.net]
>>705
unsafe使え、というかもうちょっと具体的な例じゃないと困る
今まで出された例だと「最初から絶対通らないの分かってるならif文消せばいい」としか思えないので

722 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:12:17.78 ID:91Y2FzX3.net]
別にわざわざCで書いてもらわなくても安全なのは分かるよ
今のRustコンパイラで通らないのはボローチェッカーが最適化前にあるからなんで
部分的にでも先に最適化すれば通るようにはできるだろう
ただそれをしたい動機が分からない
本当にifが実行される可能性が一切ないなら単に消せばいい、といしか言いようがないので

723 名前:デフォルトの名無しさん [2021/05/21(金) 18:14:06.78 ID:J6y23PLS.net]
>>703
それただの論点そらしだよね
UAFってrustの独特なメモリ管理手法と相反する用語ではないし
use of moved valueやborrow of moved valueもUAFを阻止するためのものだよね
じゃあrustでは「if文のある条件のときだけヒープのある部分をfree」のコードをどう書くんや?

724 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:18:59.35 ID:p9FphGnI.net]
>>709
DroppableのメンバにBox<i8>持たせろ
仮に"drop"された後でもsubが正常に動くことが期待されているなら、そこで使うべきなのはdropではない



725 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:22:54.40 ID:91Y2FzX3.net]
というか >>701 で書いたif/elseの例はちゃんと「if文のある条件のときだけヒープのある部分をfree」になっているのに何か不満なのか

726 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:24:13.35 ID:IHGXJo1X.net]
>>709
UAFを阻止するためだけにあるものじゃないから
やり方は>>701で教えてくれてるやろ

とりあえずThe Book読んでね

727 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 18:31:38.95 ID:p9FphGnI.net]
>>709
これでどうですか?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9b05ca192ab0fd529b6de05dcc64a8c9

728 名前:デフォルトの名無しさん [2021/05/21(金) 18:38:40.69 ID:J6y23PLS.net]
>>711
そうやん
rustって不思議やね

729 名前:デフォルトの名無しさん [2021/05/21(金) 18:44:49.25 ID:J6y23PLS.net]
解決しました。
なにはともあれありがとうございました。>>701の方に救われました。
ここまで関わってくださった皆様まことに協力ありがとうございました。感謝いたします。

730 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 19:24:50.36 ID:91Y2FzX3.net]
「理論的に安全な任意のコードは通るべき」ってイメージだったのかな
実際にはそんなことはなくて、上の例のようなコードを通すためには色々なトレードオフがあるから
単に「理論的に安全」ってだけで無条件に実装されることはない
もっと具体的なユースケースがあって、みんなが「これは通らないと不便だよね」ってなったものが実装される
数年前に実装されたnon lexical lifetimesなんかはまさにその例だね

731 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 19:31:11.66 ID:bfSFy0HM.net]
はぎゃーん

732 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 21:43:48.32 ID:HgMuIEwp.net]
クロージャの disjoint capture が破壊的変更になるのは分かるんだけど最初からこうなってなかったのはなぜ?

733 名前:デフォルトの名無しさん mailto:sage [2021/05/21(金) 22:34:26.09 ID:vpqVq/KA.net]
iter()とinto_iter()の使い分けが分からない

iter()じゃないといけない場合があるのは分かるんだが

734 名前:デフォルトの名無しさん [2021/05/21(金) 22:49:37.59 ID:+ok17UuV.net]
into_iterは所有権を奪いItemを得ることができる
iterは&Itemを得る
他のintoで始まるものは所有権を奪うことになってる



735 名前:デフォルトの名無しさん [2021/05/21(金) 23:22:44.96 ID:qRzkKAr2.net]
>>711 Rustコンパイラが問題視してるのは開放された値を使ってしまう可能性があることで、それが修正された >>701 のコードは問題ないから通る

736 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 00:04:28.82 ID:yRhz4OAW.net]
>>719
Rustでの変数の受け渡し方は
by (shared) reference、by mutable reference、by valueの3つなので
それに対応していろいろなものが3種類1セットになってる

イテレータならiter(), iter_mut(), into_iter()
クロージャならFn, FnMut, FnOnce
コンバージョンならAsRef, AsMut, From/Into

737 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 00:34:10.91 ID:RuplHzwP.net]
as_foo(), to_foo(), into_foo() の違いも覚えておくとよいかもね

738 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 00:45:11.88 ID:yRhz4OAW.net]
覚えておくとはいいのはそうだけど、そのセットは少し観点違うよね
https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv

739 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 16:34:10.81 ID:ma8sDMzI.net]
Rustややこしいわぁ

740 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 20:26:18.21 ID:UuUK8ShD.net]
Rust慣れたあと他の言語行くと
良い作法が身についてて歓迎される、とかありますか?

741 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 20:30:50.12 ID:18meLr+O.net]
>>726
言語が異なれば同じことをするにも良い作法とされる方法は異なるだろうし、そんなに役に立たないかもよ。
むしろRustでは〜と言い出すとかえってうるさがられる可能性も。

742 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 20:34:58.75 ID:RuplHzwP.net]
rustでは変数のshadowing当たり前のように使うけど他の言語では嫌がられそう

743 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 21:08:16.57 ID:9BHHuuQy.net]
let value = value;
とか他言語で書いたらアホだと思われるし

744 名前:デフォルトの名無しさん mailto:sage [2021/05/22(土) 21:10:13.17 ID:61y793Zl.net]
Rustはメイン関数かその次の関数のローカル変数にリソースを保持する形にしがちじゃない?
他の言語だとあんまりやらない



745 名前:デフォルトの名無しさん [2021/05/23(日) 03:12:09.36 ID:1TnUlIAl.net]
>>730
他の言語でも同じだよ
それとも禁断のグローバル変数を使う駄目パターンをRustでもしたいということ?

746 名前:デフォルトの名無しさん mailto:sage [2021/05/23(日) 06:28:03.88 ID:ApnxiBa8.net]
pythonみたいな動的型付け言語ではよう見るけどさ
Rustではこんなん要らなくしてほしいわ

747 名前:デフォルトの名無しさん [2021/05/23(日) 13:14:57.61 ID:viOBOYhY.net]
ライブラリによってはデータを持ち運ぶということが不可能だったりするからグローバル変数必須だったりするんだよな
(具体例: serenity)

748 名前:デフォルトの名無しさん mailto:sage [2021/05/23(日) 13:33:01.51 ID:1FznZ2H5.net]
いや別に必須ではないだろ。

749 名前:デフォルトの名無しさん mailto:sage [2021/05/23(日) 13:39:52.69 ID:p3SEnqzU.net]
log!() みたいなプログラムの各所から呼び出されるマクロや関数の実装の為には rust でも普通にグローバル変数使われているのでは

static 変数にするためには Sync が要求されたり mut にするために Mutex 使う必要があるから他の言語ほど気楽に使えないというだけで
グローバル変数そのものが禁断扱いされることはないかと

グローバル変数の濫用は他の言語同様嫌われるけどね

750 名前:デフォルトの名無しさん [2021/05/23(日) 13:43:31.31 ID:1TnUlIAl.net]
一般的にどんな言語においても何らかの外部のライブラリを取り込む時には
何か一つのクラスとかオブジェクトとか構造体とかに閉じ込めてしまって
それ一つだけ持ち運ぶからグローバル変数を使うことは無いでしょう

751 名前:デフォルトの名無しさん mailto:sage [2021/05/23(日) 16:18:03.34 ID:ljEJPp90.net]
>>735
static変数とglobal変数はスコープが違うだろ
global変数が悪とされるのは、そのスコープの広さだからね

いつどこで誰が変更するのか、また参照するのか、スコープが広ければ広いほど把握が困難になる
把握が困難になればなるほど、それだけバグを生む温床になる

752 名前:デフォルトの名無しさん mailto:sage [2021/05/23(日) 18:34:32.71 ID:1FznZ2H5.net]
io周りは極論すればどう管理してもグローバルだからな。
プロジェクト毎に規約設ける以外にまともに管理する方法なんてない。

753 名前:デフォルトの名無しさん mailto:sage [2021/05/23(日) 20:09:32.32 ID:wHpcVS8W.net]
>>735
そういやロガーの設定ってどこに保存されてるの?
debug!() 呼ぶたびにMutexロックしてるのかな?

754 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 12:11:21.84 ID:1Toh/2dP.net]
>>736
クラスの中に入れても、グローバル変数であることは避けられないし
どんな言語においてもグローバル変数は必要。



755 名前:デフォルトの名無しさん [2021/05/24(月) 12:28:02.03 ID:wwlvG9VZ.net]
「:?」ってなんなんですか?
https://tourofrust.com/08_ja.html

756 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 12:49:55.25 ID:KKN49LSI.net]
>>741
デバッグ用のフォーマットで出力するという意味
詳しくは以下参照
https://doc.rust-lang.org/std/fmt/

757 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 13:24:07.35 ID:JJaZh5wC.net]
>>740
そんなことはないだろう。
確かにグローバルでも大して変わらんてものはあるけど、
loggerを引数で渡していくっていうような実装方法もある。

758 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 13:33:20.21 ID:u2umy7DV.net]
>>739
logクレートのstatic mut変数だね
ロックするのは初期化とレベル設定時だけ
出力時にロックするかどうかは実装次第

759 名前:デフォルトの名無しさん [2021/05/24(月) 15:43:10.46 ID:dukpbHqg.net]
>>740
そのクラスの存在そのものがグローバル変数(相当)だという話?
それともそのクラスもしくはそのインスタンスをグローバル変数に入れて使うということ?
後者の意味ならば必要な範囲で引数として持ち歩けばグローバル変数を普通は使わないですよね。

760 名前:はちみつ餃子 mailto:sage [2021/05/24(月) 16:59:24.57 ID:tdQ8iTTE.net]
大事なのは抽象化がきちんとしているかどうか。
各部品が妥当な意味に分離されているかどうか。

グローバル変数がよくないのは色んなパーツから横断的に使われる可能性があって
部品が不必要に密結合していることの表れだからであって、
そのグローバル変数のアクセス範囲が妥当な範囲に制御されているなら問題じゃないよ。

過剰な密結合を解消せずにグローバル変数を引数に置き換えてたら
影響範囲が見えにくくなってもっと悪くなることだってありうる。

まあどういう場合なら妥当なのかってのは色々と意見はあると思うけど。

761 名前:デフォルトの名無しさん [2021/05/24(月) 17:17:23.03 ID:qqtJSk72.net]
$_POSTはセーフ

762 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 17:21:32.94 ID:Ig527IlE.net]
>>746
まずは長くて区別しやすい名前に変えるのがスタートかね。

763 名前:デフォルトの名無しさん [2021/05/24(月) 17:31:54.98 ID:wwlvG9VZ.net]
>>742
ありがとう!

764 名前:なんか独特なのね []
[ここ壊れてます]



765 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 23:12:37.25 ID:rI3Y4Uqa.net]
関数型言語やったことないけど、Rustいけるかな
JavaとC++はそこそこ経験あり

766 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 23:17:37.88 ID:zk4LoLUU.net]
Java 8とかC++ 14以降くらいなら結構似たような機能も入ってるし
そこまで大変じゃない気がする

767 名前:デフォルトの名無しさん mailto:sage [2021/05/24(月) 23:36:00.17 ID:JJaZh5wC.net]
c++はともかく、cくらいはやっぱ理解してた方が早道な気はする。

768 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 01:36:21.07 ID:5vUI50kp.net]
以下のような関数を作ったんですがmatchが多くてどうしようか考えていました

fn foo(x: Option<u32>, y: Option<&str>) { //実際はOptionが5個とか
let x = match x {
Some(x) => x,
None => return,
};
let y = match y {
Some(y) => y,
None => return,
};
println!("{} {}", x, y);
}

考えついたのが、次のようにする方法なのですが、
fn foo(x: Option<u32>, y: Option<&str>) -> Option<()> {
let x = x?;
let y = y?;
println!("{} {}", x, y);
Some(())
}

記載の省略のためだけに返値の型をOption<()>にして最後にSome(())つけるのがすごく気持ち悪いんですが、
返値なしのままどうにかする方法はないでしょうか

769 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 02:11:48.11 ID:QcInQ0e9.net]
if_chain使って
if_chain!{
if let Some(x) = x;
...
then { println!("{}", x); } }

770 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 02:16:51.35 ID:Ygc8ZzR1.net]
>>753
fooの型変えられないなら、戻り値Optionはクロージャないしローカル関数に留めるといいと思う
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=aa2bc019e7329f1b6bece2597b59ee8a

771 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 03:00:10.05 ID:nrKC74iS.net]
Ok(())はよく使うがSome(())はないな

普通にif-letでパターンマッチするのでよくない?
if let (Some(x), Some(y)) = (x, y) {
println!("{} {}", x, y);
}

772 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 05:18:39.47 ID:gz717nup.net]
loggerを引数で渡すためには
ロギングを行うクラスFooがどこかしら(コンストラクタか個々のメソッドで)loggerを受け取る引数を持たねばならない
これ、ロギングみたいな裏方の仕事がFooのインターフェース仕様に影響しているということで、
抽象度が下がってるやんけ;;;

引き換えに得られるメリットは、Fooのインスタンスごとにloggerを切り替えられるというおおよそ現実的にありがたみが無い機能だけ

773 名前:デフォルトの名無しさん [2021/05/25(火) 06:08:48.35 ID:FYPKUk3M.net]
>>756
それをmachでやるのがよくない?

774 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 06:23:40.79 ID:gz717nup.net]
つか機能の分離と記述の分離はトレードオフがある
1+1=2の形式的証明がどんだけの糞みたいな分量のに成り得るかを見たらワカル
どっかの抽象度をつきつめれば別のところにしわ寄せが逝く
それで良いジャマイカ人間の言語だもの、



775 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 09:01:56.56 ID:5vUI50kp.net]
皆様ありがとうございます
どうもSomeをある程度書くのは避けられない感じですね

776 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 10:09:28.07 ID:4oEEOZjA.net]
まさかstatic変数使ってるなんて、logクレートには失望したわ

777 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 10:33:41.89 ID:bGIV0Xp5.net]
>>757
ログを裏方と考えるのも偏ってるし、ログ切り替えはデバッグ目的で普通にあるわ。
別にグローバルにするという選択が間違いとも思わんがこういう決めつけ野郎は邪魔だな。

778 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 10:59:01.14 ID:/nQyXsn+.net]
サーバ側だとログを取るのが基本だし取り方も変えたくなるからlogger渡しは結構やるな
CLIとかなら雑にstaticでいいけど

779 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 13:12:03.88 ID:CssgwvqL.net]
>>761
stdも使えないじゃん

780 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 18:48:30.58 ID:4oEEOZjA.net]
>>764
なんで?

781 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 19:25:41.69 ID:CssgwvqL.net]
>>765
https://github.com/rust-lang/rust/blob/a7890c7952bdc9445eb6c63dc671fa7a1ab0260d/library/std/src/io/stdio.rs#L553

782 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 19:39:28.48 ID:4oEEOZjA.net]
>>766
えー
これからは write() システムコールでプリントするわ

783 名前:デフォルトの名無しさん [2021/05/25(火) 21:02:03.28 ID:p1A5R6d8.net]
stdが嫌ならcoreを使え

784 名前:デフォルトの名無しさん mailto:sage [2021/05/25(火) 22:59:34.15 ID:gz717nup.net]
>>762
近代的なログシステムならタグが使えるから
記録時に分っける理由がさらさらない
だいたい並列な事象を並列なまま記録したのでは時系列の解析ができないし、

そもそも>>762がいくら「ログは裏方じゃない」と叫んだところで基準が無い
アプリケーションロジックを汚してまでか?!という議論はいつまでもつきまとう



785 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 00:00:47.75 ID:S2nFrW0F.net]
別に仕事で使ったことないならそういえばいいと思うよ。悪いことしてるわけじゃないんだから。

786 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 00:04:47.15 ID:PLorGv/T.net]
そういやLog4JでいうMDCみたいなやつはあるのかしら?

787 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 00:07:56.89 ID:rwxZHBm1.net]
お前らslog

>>760
ただのzipやん。
ttps://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=01c2f30ff2a49dc57c917ec16947aadb

788 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 08:19:13.92 ID:AN5OxrIl.net]
まあloggingオブジェクトを複数作る仕事なんなら仕方が無いな

789 名前:デフォルトの名無しさん mailto:sage [2021/05/26(水) 08:29:19.07 ID:vJAmL6Qi.net]
slog見たけど、クソややこしいな

790 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 09:51:25.19 ID:jQHjx/Sg.net]
シンタックスで判断しづらいもので性的分析するって、そのうち破綻しそうだな。

791 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 09:54:11.42 ID:S8Iz9SRl.net]
エロい分析か

792 名前:デフォルトの名無しさん mailto:sage [2021/05/28(金) 10:45:17.68 ID:EKMYAKDR.net]
やらC

793 名前:デフォルトの名無しさん mailto:sage [2021/05/29(土) 20:28:41.06 ID:sKXDX7XX.net]
JPEG-XLのリファレンス実装作ってるチームがRustで再実装も始めてて驚いた
https://github.com/libjxl/jxl-rs

FirefoxにJPEG-XL対応を入れるかどうか議論するチケットで
今更大量のunsafeなC++コードを入れるのはちょっと……みたいな反応をされてた事と関係あるのかもしれない

794 名前:デフォルトの名無しさん [2021/05/30(日) 15:56:56.42 ID:HupJBx7X.net]
https://4e6.github.io/firefox-lang-stats/
https://www.openhub.net/p/firefox/analyses/latest/languages_summary
Firefox、かなりの割合でC++のコード入ってるけどこれでも減らそうとしてるのか



795 名前:デフォルトの名無しさん mailto:sage [2021/05/30(日) 16:00:13.57 ID:P46Jh5T1.net]
もう9.5%も行ってるのか

と言うかfirefoxからrustは始まったから当然か

796 名前:デフォルトの名無しさん mailto:sage [2021/05/30(日) 16:15:38.02 ID:ds+xAsBi.net]
でも、大量の有名なWebサービスが一時的にRubyで書いていたのに、
しばらくすると他言語に書き直した歴史がある。
アメリカ人はなぜか言語を書き直すのが好きなようだ。
Rustで書いてもまた別言語に直すかも知れない。
なお、Googleドライブなどの各社のストレージサービスを統一的なAPIで制御できる
ライブラリも何故かGoで書かれている。
メンドクサイ。

797 名前:デフォルトの名無しさん [2021/05/30(日) 17:11:41.17 ID:cF4puvJq.net]
>>781
遅い方から速い方へ書き直すのよ
特にスクリプト言語からC++/Rustへ書き換えるとサーバー数を1/10にできるケースもあり規模によっては経費激減ね
GoもGCあるから場合によっては他へ書き換えられる対象になりうるかも
Rustが他へ書き換えられる可能性がもしあるとしたら今はまだ存在しない新たに出現する言語へ

798 名前:デフォルトの名無しさん [2021/05/31(月) 00:35:54.04 ID:7s+MSAY0.net]
なんでClippy大先生がcargoでインストールできるクレートから外されるの?

799 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 01:50:13.82 ID:u1BqTaEs.net]
rustupでインストールできるからでは
rustcとバージョン合わせないといけないから他のcrateと同じ扱いはしづらいのでは

800 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 08:44:19.92 ID:etoumxTf.net]
Ruby on Rails の時価総額は、

Shopify が15兆円、
民泊のAirbnb が、大手ホテル3社の合計以上の10兆円、
Github が8千億円

これぐらい巨大でも、Rails で出来る。
時価総額が千億円以上になったら、Go, Elixir を考えてもよい

食べチョクは売上50億円らしいけど、
若い文系女が1人で起業したような会社は、Rails で十分

売上が千億円を超えたら、考えてもよい

801 名前:はちみつ餃子 mailto:sage [2021/05/31(月) 15:24:48.93 ID:hqkxpUd6.net]
ウェブシステム全体の実行コストはネットワークや IO にボトルネックが有るので
システム構成やらなんやらで工夫するのがまずやることで、
言語の速度が少しばかり速いのはそんなに効いてこないよ。

という話もよく聞くんだけど、実際のところどんなもんやろね?

802 名前:デフォルトの名無しさん [2021/05/31(月) 16:31:16.04 ID:slsuSMsk.net]
そりゃそうね
でも実行速度だけで選ぶわけじゃないからね

803 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 19:40:04.29 ID:mBUAbPrR.net]
今まではハードにぶん投げても大丈夫だったのが
ハードの進化の鈍化でソフト側が工夫しないと駄目になりつつあるって話ってマジ?

804 名前:デフォルトの名無しさん mailto:sage [2021/05/31(月) 21:37:16.00 ID:M7WLmn8V.net]
いやそこでソフトで頑張ってもほぼダメだろ。。アーキテクチャで分散化考えないとって話じゃないかね



805 名前:はちみつ餃子 mailto:sage [2021/06/01(火) 01:05:37.48 ID:69wa4c/Y.net]
>>788
ハードウェアがもう伸びないってことではなくて、 CPU の速度が単純に速くなるという方向ではもう伸びにくいって話。
電子の大きさは変えられないから際限なく微細化できるわけではない。

わかりやすい例で言えば今のパソコンはマルチコアが当たり前になってて複数の CPU を載せる方向で性能を上げているが、
マルチコアを想定してないソフトをマルチコアパソコンで動かしてもひとつのコアしか使わないので性能が出ない。
高価な GPU を乗せても GPU を使うプログラムになってなきゃ意味がない。

ハードウェアの総合的な性能を上げるには色んな工夫があり得て、それらを実現すると同時に
ソフトウェアは「ハードウェアに合わせて」「ハードウェアの性能を引き出すように」工夫がいる。

これは今までにも普通にやってたことで、今になって必要になったわけじゃない。
小さな変化の積み重ねなこともあれば大きな変革を迫られることもあるってだけ。

806 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 07:44:50.11 ID:DWqq5xbS.net]
後藤弘茂のWeekly海外ニュース■ Prescott/Tejasは5GHz台、65nmのNehalemは10GHz以上に
ttps://pc.watch.impress.co.jp/docs/2003/0227/kaigai01.htm
当時は景気よかったっすね。すぐ後に爆熱で日和ったけど
そして今、300Wの時代・・・

てか並列化によるスループットの向上はこのあたりから検討されるようになっていた気が

807 名前:デフォルトの名無しさん [2021/06/01(火) 19:29:09.48 ID:a3oi+h5L.net]
>>784 でも何故かcargoだけはcargo install cargo --forceとすれば自分でコンパイルしたもので上書きができる謎

808 名前:デフォルトの名無しさん [2021/06/04(金) 15:33:30.83 ID:kJqxa98Z.net]
よくわからないんだけどこれ、C言語のポインタ渡しが諸悪の根源で、そこを断ちさえすればC言語も所有権概念を取り入れられるの?

809 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 15:42:09.57 ID:03MQShFS.net]
>>793
C言語において、ポインタは大発明で、それによってリンクリストやツリー構造
が簡単に実装に出来る様になった、大変重要なもの。
C言語からポインタを絶てば何も残らない。

810 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 15:48:43.92 ID:1/rRer4v.net]
Javaキチガイはポインタ使いこなせない
日本のMSの社員がソレだった
破棄忘れてやんのw

811 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 15:55:06.60 ID:JfDLBnT5.net]
RAIIなしで良いなら多少の拡張で所有権の概念取り込めるかも知れないけど
絶対スマートポインタ欲しくなるしCの表現力だと使いづらい物になりそうな気がする

812 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 16:03:03.62 ID:KjgiO9jk.net]
>>794
>C言語において、ポインタは大発明
笑笑

813 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 17:24:32.39 ID:Lunsq3fv.net]
Cと比較するのは流石に乱暴だろ
C++と比較するべき
で、C++でできなくてRustでできるものというのは現状存在しない (今後その差も埋まっていくだろうが)

C++とRustの違いはひとえにスタンスの違いだよ
自由奔放なC++か良いコードにカッチリ導いてくれるRustか
意欲的に新機能取り込んで発展してるのは両者とも同じ

814 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 17:31:18.17 ID:AGlHvwIO.net]
>>798
>C++でできなくてRustでできるものというのは現状存在しない
こういう比べ方はアホ
チューリング完全ならなんでもできるじゃんみたいなことになる
できるできないの線引きが恣意的



815 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 17:54:18.33 ID:7u0nl5aT.net]
>>799
バカアホじゃなくて、Rustでしかできないものの例を挙げてください
そうすれば一単語で反論の余地なく終わるんで

816 名前:デフォルトの名無しさん [2021/06/04(金) 17:58:01.49 ID:UUHTR6cx.net]
C++は奇麗に描くと言うのが出来ない

817 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 18:03:48.84 ID:Pwqe5Yy7.net]
>>800
C++でできなくてRustでできるもの
から
Rustでしかできないもの
への華麗な転身www

818 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 18:16:57.72 ID:hlBLv8XD.net]
C++はMemory Safetyをコンパイル時に担保できない
Rustを使う一番の動機

819 名前:デフォルトの名無しさん [2021/06/04(金) 18:53:59.58 ID:nHzCWsfU.net]
>>802 C++とRustの比較において「C++でできなくてRustでできるもの」と「Rustでしかできないもの」は同じ意味だから転身でもなんでもない
https://i.imgur.com/3svkdus.png

820 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 19:11:16.95 ID:s8nyhwnD.net]
Cloudflareの画像処理責任者を名乗る人も、これ以上C++ライブラリを増やすのはイヤでござると発言してるな

821 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 19:23:30.63 ID:4pNcWBF2.net]
>>804
C++とRust以外にも言語はたくさんある

822 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 19:29:23.53 ID:nsxzushh.net]
Rustのモジュール(ファイル分割)の仕組みはC++のヘッダー+ソース(+名前空間)より扱いやすいと思う
C++は分割コンパイルが主流だった歴史的経緯があるから仕方ないけど事前の宣言が必要なのは地味に面倒くさい

823 名前:デフォルトの名無しさん [2021/06/04(金) 19:43:15.38 ID:nHzCWsfU.net]
>>806 この会話の流れではC++とRustの比較をしていたから

824 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 19:58:10.76 ID:4pNcWBF2.net]
ライフタイムによるメモリ管理はRustオンリーだろ



825 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 20:12:39.71 ID:s8nyhwnD.net]
マイナーな環境だとC++プログラムは様々な理由でコンパイルが通らないことがよくある
Rustは基本的にはそういう事ないし、コンパイラ実装が一つしかないというのも利点に働く

826 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 20:40:42.82 ID:CpdoeubZ.net]
C++との比較を議論したいなら専用の隔離スレでどうぞ

827 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 22:02:04.46 ID:ivUqItUs.net]
>>793は言語レベルのサポートがほしいんだろ?
substructural type systemがないと無理。

>>809
MLkit,RTSJ,cyclone,ATS/ATS2。学術的にはとっくの昔に廃れたぞ。

828 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 22:04:58.58 ID:yXI/MC9G.net]
WinUIとRustやってる人いる?
同じネイティブのMFCとかと比べて、やっぱり生産性は高いんかな

829 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 22:26:52.09 ID:I1RVdPKQ.net]
メモリ関連って原因不明のバグ引き起こしやすいしトータルな目で見れば上がるんじゃないだろうか

830 名前:デフォルトの名無しさん mailto:sage [2021/06/04(金) 23:27:29.47 ID:JfDLBnT5.net]
>>810
gcc-rsとかのプロジェクト始まってるけどそれはネガティブなことなのかね

831 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 06:04:54.16 ID:uC9Joojh.net]
>>810
そういえば、C++のSTLは、VSでは動くが、BSD系のLLVM用のlibc++は、
なかなか上手く動いてくれない。理由は、libc++が、その
基礎関数として滅多に使われないようなMB・WC文字変換関連や、
NAN、INFINITYなどのfloat/double調査関数など、昔ながらのC環境では
定義されて無いような(新しい)Cの関数を大量に必要としているため。
その意味で、WasmのWASIなんかは、たとえCUIだけであっても
世界共通の関数群を整備してくれるのだとしたら有りがたいかも知れない。
でもWASI自体の移植作業が必要になるから一緒か。

832 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 06:14:19.54 ID:uC9Joojh.net]
>>816
昔からCには文字種判別として、isalphaやisdigitなどがあるが、
libc++は、isalpha_l()などのlocale指定タイプを必要としていたりして
locale関連がやたらと複雑。また、その
isalpha_lなどを基礎にしてくれているならまだしも、isalpha_lが内部で使っている
文字種テーブル unsigned short _ctype[256]; も仮定していたりする。
このテーブルは、_CONTROL、_SPACE、_DIGIT、_ALPHAなどの
BIT定数とandを取ってBITが立っているかどうかで文字種を判定する。
それは環境依存なのだが、高速化のためか何故かそれを必要としている。
(C++のライブラリが欲しいのに、そのライブラリが、なぜか一般的ではない
大量のC関数や特殊なデータテーブルを必要としてしまっている。)
だから移植が進まない。
plain Cは、標準ライブラリが多くの環境である程度の互換性を持って整備されているが、
結果的にC++のSTLはなかなかそうではないようだ。

833 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 06:17:47.83 ID:uC9Joojh.net]
C++ライブラリがisalpha_lなどを用いてしまったら、速度面でC#やJavaなど
に比べた優位性が少なくなってしまうからかも知れない。
つまり高速化のためにやたらと移植性の低い方法を使っているから、
スムーズに移植が進まない。
それか単純にC++ライブラリを作る人の技術力が低いからだろうか?

834 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 06:20:08.28 ID:uC9Joojh.net]
>>801
すまんが、Rustはもっと出来ない気がする。



835 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 09:02:04.60 ID:KdS0cXcP.net]
RustスレでC++の話題が出てしまうのはもはや運命なのか

836 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 09:20:03.77 ID:3ILRB2eH.net]
>>820
そりゃ better C++言語として作られたんだから当たり前でしょう

837 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 09:32:35.80 ID:4o2YwJP1.net]
ライフラインの書き方がとにかく見づらい

838 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 09:45:07.09 ID:3ILRB2eH.net]
これヤバくない?
どうやって防いだらいいんだろう?

https://github.com/lucky/bad_actor_poc

839 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 09:46:58.65 ID:4o2YwJP1.net]
localhostに送るだけならいくないん?

840 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 09:53:33.78 ID:3ILRB2eH.net]
え、マジで言ってるの?

841 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 10:04:24.16 ID:4o2YwJP1.net]
あおられてもダメな理由がわかりまそん
びっくりはするけど

842 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 11:21:46.59 ID:KdS0cXcP.net]
悪意を持ったコードをビルドしない

843 名前:デフォルトの名無しさん [2021/06/05(土) 12:04:01.08 ID:bvIfRQLF.net]
c++との比較はガファムが結論出してくれたからもう話すことなどない

844 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 12:08:54.56 ID:85+uBK5B.net]
何をみて結論だと思ってんだか。短絡的だな。



845 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 12:26:06.61 ID:YTe/4gPS.net]
依存するクレートの依存するクレートの依存するクレートの以下無限ループまで全部チェックしないと駄目ー?(´・ω・`)

846 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 12:58:14.11 ID:KdS0cXcP.net]
チェックするツールとか誰か作っていそうだね
バイナリを診断するよりは簡単だろうし

847 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 13:57:18.40 ID:IMH8ctkE.net]
>>826
念のためマジレスすると公開した人がいつでもlocalhostを〇国サーバーのアドレスに書き換えられるってこと
githubのオープンソースでそれやったらすぐにばれそうだけど

ビルド時ならともかくエディタ起動直後のコード解析でデータが送信されるのは盲点やね

848 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 14:01:47.49 ID:f5S9H8yw.net]
ビルドしなくてもファイルを開いたらコードが実行されるというのはよろしくないね

ファイルやネットワークならアクセスされる側でブロック可能だけど
メモリはサンドボックス内のみで展開・実行されるようにしないとブロックできない気がする

サンドボックス化できなければ
cargo auditやcargo crevを通して怪しいcrateだけ自分でチェックするとかかな

849 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 14:06:05.14 ID:KdS0cXcP.net]
vscodeやlspヤバイな

850 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 14:13:31.58 ID:8YO6sBC6.net]
解決方: vscode を使わない

851 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 14:27:34.92 ID:4o2YwJP1.net]
まったくだ

852 名前:デフォルトの名無しさん [2021/06/05(土) 14:48:29.61 ID:uV7DnhUL.net]
見た感じVSCode以外でもマクロが実行されるようなことをすると駄目っぽいが

853 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 14:52:35.33 ID:4o2YwJP1.net]
MS自身がやりたい放題だからメンタルも伝播するだろうな

854 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 15:03:58.08 ID:85+uBK5B.net]
>>835
それrust使わなけりゃでも良くね?



855 名前:デフォルトの名無しさん [2021/06/05(土) 15:09:20.73 ID:uV7DnhUL.net]
そもそもこれ本質はライブラリの信頼性って問題だと思うんだよな
Rustだけじゃなく他の言語にも言える話

856 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 15:22:11.73 ID:85+uBK5B.net]
お得意の静的チェックでなんとかしたら?

857 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 15:29:47.09 ID:KdS0cXcP.net]
中国のipアドレスは

858 名前:全部ブロックしておくのが正解だな []
[ここ壊れてます]

859 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 15:51:07.65 ID:3ILRB2eH.net]
IntelliJ/CLion でもproc_macro実行されちゃうの?

860 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 16:11:56.77 ID:Fi/fLauk.net]
LSPはクソ
vscodeありきの思想

861 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 16:32:08.49 ID:6EguRj/L.net]
LSPってHSPの親戚ですか?

862 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 16:43:48.73 ID:KdS0cXcP.net]
long short play モードだよ

863 名前:はちみつ餃子 mailto:sage [2021/06/05(土) 16:56:48.31 ID:G0EcoOQC.net]
>>844
LSP はエディタとの連携を前提として明文化された規格にしたってだけで、
処理系にコンパイルさせた結果をエディタの表示に反映させるというのは昔から有ったんだぞ。

864 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 17:38:04.49 ID:ftrSVS/I.net]
>>847
> 処理系にコンパイルさせた結果をエディタの表示に反映させるというのは昔から有ったんだぞ。

いやそりゃそうだろ
その説明じゃ flycheck 等と差がない



865 名前:はちみつ餃子 mailto:sage [2021/06/05(土) 18:00:21.39 ID:G0EcoOQC.net]
>>848
Rust のコードをビルドしないときでもエディタ経由で勝手にビルドする
(そのときに悪意のあるコードも走らせられるかもしれない)
という文脈の中で >>844 の発言があったので、
それは LSP が作られる前から同じような危険性はあっただろうという反論を私はしたつもり。

LSP のせいじゃなくてコンパイル時に出来ることが多い Rust のせいって話。

866 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 18:09:21.84 ID:Fi/fLauk.net]
はあ話になんね
こいつといいQZといい「何か物申したい」という気持ちだけで生きてるから常に空回ってんだよな

867 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 18:52:13.97 ID:ZTm581Ue.net]
proc-macroがwasm化されてサンドボックスで動くようになればマシになるのかね
そもそも怪しいコードが依存関係に混入しちゃう時点でcargo runなりtestなりしたらなにされるかわからん訳でproc-macroの件自体にどれくらいの影響度があるのかは分からんが

868 名前:デフォルトの名無しさん [2021/06/05(土) 19:44:30.63 ID:uV7DnhUL.net]
crossでx86_64-unknown-linux-gnuをtargetにクロスコンパイルしたらいいんじゃないか?
あれ確かDockerで動いてたはず

869 名前:デフォルトの名無しさん [2021/06/05(土) 19:45:33.78 ID:uV7DnhUL.net]
自分のPC向けにクロスコンパイル用ツールを使ってコンパイルするのがクロスコンパイルというかどうかは知らんけど

870 名前:デフォルトの名無しさん [2021/06/06(日) 08:03:37.51 ID:W7azs2BY.net]
>>823
特定のエディターの問題ではなく
特定のプログラミング言語の問題ではなく
自分が意図していない自動マクロ(プラグイン)を使えば自分が意図していない動作をするだけの話
大昔からあらゆる環境で起きていること

871 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 09:39:11.50 ID:3IIg9tuB.net]
コーディング時、ビルド時になんでもやらせようって発想が間違ってんだよ。

872 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 10:03:07.57 ID:mKFU6ep6.net]
マクロはやっぱ悪よな、無いと辛みが増すから仕方ないじゃなくて無くても何とか出来る仕様にすべき

873 名前:デフォルトの名無しさん [2021/06/06(日) 10:25:40.41 ID:W7azs2BY.net]
今回の>>823の問題に限っていえば
そもそもLSPを使う人のためのプラグインなのだからLSPのlocalhost:8080に接続に行くことは何の問題もないよね
問題としているのはSSHの秘密鍵をそこへ自動送付していること
LSPそこまで詳しくないのだけどそれはどうしても必要なことなの?

874 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 10:32:40.20 ID:MV541K/D.net]
LSPは、この騒動(?)と関係なくクソ



875 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 10:33:23.63 ID:MV541K/D.net]
快適なエディタと快適なIDEの区別がつかなくなったバカどもがゴリ押しで流行らせてる

876 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 11:08:51.30 ID:n+sQSuEO.net]
>>857
>LSPのlocalhost:8080に接続に行くことは何の問題もないよね

localhost:8080はLanguage Serverじゃないよ

877 名前:デフォルトの名無しさん [2021/06/06(日) 11:16:22.93 ID:W7azs2BY.net]
>>860
それはすまなんだ
じゃあ何が問題になってるのかな

878 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 12:13:20.98 ID:xB3z9vbi.net]
>>861
LSPをセットアップした状態だと「VSCodeを起動しただけで」自動ビルドが走ってしまって悪意あるprocedural macroが実行されてしまうこと
手動でビルドすれば同じことになるのでそこは問題の本質じゃなくね?とは思う

879 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 12:48:13.98 ID:V+UU2WI7.net]
LSPというよりrust-analyzerやrls、cargo/rustcの問題と言った方が正確かな

880 名前:デフォルトの名無しさん [2021/06/06(日) 14:24:19.60 ID:W7azs2BY.net]
では>>823で指摘されている問題点「自分のSSHの秘密鍵が勝手に読み出されて送信される」はどの部分がその動作を要求しているの?
本当に必要な動作なの?

881 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 14:29:37.79 ID:LOfpkHxA.net]
手続きマクロの展開なのでcargo checkでも起こり得る
言ってしまえばRustの言語仕様そのもの
解決策は>>851の言うようにサンドボックス化するみたいな方法しかなさそう

882 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 14:35:16.58 ID:n+sQSuEO.net]
>>861
macroをexpandする時に
macroの定義に書かれてる任意のコードを実行することができるって話

任意のコードの例としてSSHのキーをサーバーに送信する例が書かれてて
試す人に無害なように送信先サーバーはlocalhostになってるだけ

コード見たほうが早いかも
make_answer!がexpandされるときにread_ssh_keyが実行される
https://github.com/lucky/bad_actor_poc/blob/master/bad_actor/src/lib.rs

883 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 14:40:17.63 ID:3IIg9tuB.net]
このコード例はめちゃくちゃわかりやすい。問題は置いといてgoodなコードだ。

884 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 15:22:49.77 ID:fghVy2Pw.net]
crate-typeがproc-macroのときはffiを禁止して使用可能なextern crateを
安全性が保証されたものだけに制限するのがRustっぽいかな
proc-macro専用のstdが必要になるけどno_stdと同じ感覚でmacro_safe属性をつければいい



885 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 16:06:34.14 ID:xR3kS6+v.net]
そもそも普通はproc-macroなんか必要ないだろ
特殊用途以外では一律禁止してよいのでは?

886 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 16:20:07.52 ID:V+UU2WI7.net]
derive が使えなくなるのは結構困る

887 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 23:45:39.31 ID:xQoKsnFB.net]
>>843
マクロ展開すればどんな環境でもできるよ。
>>823はmulti-root workspaceの構成間違ってるから
IntelliJRustだとマクロ展開されないけど。

>>869
custom derive全部禁止だから当然thiserrorもserdeもdelegation系も禁止な。
ボイラープレート全部手書きしろよ。

888 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 06:02:10.08 ID:k/PpyTws.net]
頭悪い奴らばかりで議論にならぬ
趣旨と仕組みはreadme書いてあるのに。。

889 名前:デフォルトの名無しさん [2021/06/07(月) 13:37:53.63 ID:BQ22AOvo.net]
今勉強中なんだけど、Rustと合わせた時のgdbの使い方を教えてくれんかな
行指定でb main.rs:10みたいにブレイクポイントを指定するのってどうやるの?
>No source file named main.rs.
みたいに言われてしまって、どうやって行指定でブレイクポイントを設定するのかよくわからん
ソースのあるディレクトリがわからないのかと思って指定しても結果は変わらず・・・・
あと、ソースを表示しながらステップ実行したりってどうやるの?

890 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 13:52:39.17 ID:C46sPHOc.net]
vscodeでcodelldb使おう

891 名前:デフォルトの名無しさん [2021/06/07(月) 14:06:08.51 ID:BQ22AOvo.net]
ああ、デフォルトで-gつかないのか・・・・
でもlldbが主流っぽいし、それ使うかな

892 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 14:34:12.65 ID:VGLcnon2.net]
macのgdbだと今はまともに動かんぞ。

893 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 14:45:09.07 ID:OvPzoGrd.net]
M1になって

894 名前:macの開発環境死んだ []
[ここ壊れてます]



895 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 15:56:52.66 ID:D0MWfzjy.net]
iPhone開発でMac必須になったことで強気に出すぎたか。
Macは滅びると思っていたらx86系になってからなぜかしぶとく生き残ってきたけど、
もうだめかもな。

896 名前:デフォルトの名無しさん [2021/06/07(月) 16:08:45.47 ID:BQ22AOvo.net]
lldbを試しに使ってみてるんだけどさ
これって、ステップ実行するたびに自動で毎回「memory read --size 8 --format x $sp」をやってもらうことってできないの?
gdb-pedaを使っていたときはスタックの中身が自動で見れてたんだけど、なんか似たようなのないのかな?

897 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 20:20:51.05 ID:RuDnuZ5b.net]
>>878
iphoneアプリ開発のためにmacが生き残ってるのは面白いと思ってる
元マカーだからほんと言うと寂しいし悲しいんだけど

898 名前:デフォルトの名無しさん [2021/06/07(月) 21:33:04.68 ID:l0c3FfTp.net]
rustのlinux kernel対応の話ってどうなってゆの?なんだかずいぶんと作業が難航しているうだけど
それってrustのどのあたりの言語機能が悪さをしているのかね

899 名前:デフォルトの名無しさん [2021/06/07(月) 21:34:18.90 ID:l0c3FfTp.net]
難航しているよう

900 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 23:22:49.68 ID:TtFMbk6H.net]
>>873
シンボリックデバッガはまだ有名どころのフロントエンドが
ステップ実行できる程度しか対応してないから、アブソリュートデバッガ併用になる。
シンボルでブレークポイント設定できないとか実行に問題あるとかまだ普通。
msvcツールチェインは特に。

>>877
ねねっち死んだなって思ってたけど現実もか。

>>878
世界シェア15%切ったし頼みの日本シェアすら50%切ったからもう
iPhone専用開発機も持たないだろう。
rustだとandroidほどバインディングが充実してないから開発やりずらいだろうし。

901 名前:デフォルトの名無しさん [2021/06/08(火) 13:22:42.82 ID:NxfO+lQp.net]
>>881 大部分がRustで書かれたRedox OSっていうOSがあるからRustでカーネルやドライバが書けないというわけではないと思う
恐らくCで書かれた過去の遺産との連携で手こずってそう

902 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 16:32:33.53 ID:XAjWEwKV.net]
>>883
日本でのiPhoneのシェアは、どんどん減っているはずなのに、ググると、
増えているデータになっていて、増えているのに50%を切っているというわけの
わからなさ。
記憶では、70%くらいまでいって、下がった結果、49%くらいになったはずなのに。

903 名前:デフォルトの名無しさん [2021/06/08(火) 17:33:30.46 ID:0HakL4nG.net]
>>884
具体的には?

904 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 20:08:36.67 ID:3DogIzpc.net]
いやメーリスみにいけよ。。。



905 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 20:44:34.79 ID:iJOvL9Jr.net]
実際の開発状況はこっち見たほうがいいかな
https://github.com/Rust-for-Linux/linux
ざっと見た感じ難航してるっていうより単にやること多いってだけに見えるけど

906 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 22:36:25.74 ID:onwST/YK.net]
>>885
出荷ベースだと二三年前に65%超えてて2020Q4に約49%だからそれであってるよ。

>>888
OS作ってる人らって開発環境はなんだろ?
intellijrustはデバッガ使えるIDEとツールチェインが限られるし
matklad.rust-analyzerは環境変数の扱いがめちゃくちゃで
環境変数見に行くとまともに動かないし。issueばっか増える。

お前らどうしてる?ツールチェインと環境は?

907 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 23:20:14.38 ID:x/Of6Ttl.net]
rustでOSてもう何回目の話だよ。。過去レスでもあされや

908 名前:デフォルトの名無しさん mailto:sage [2021/06/09(水) 00:55:43.69 ID:KzEq3JVg.net]
>>889
cargoが-Zbuil

909 名前:d-std対応したからビルドに特別なツールは使ってない
rust-analyzerもno_std対応してて特に支障なく動いている
(補完候補にstdが出てくることはたまにあるけど)

環境変数がおかしいというのはどういうこと?
build.rsが環境変数に依存している?
それとも env!() を使っている?
[]
[ここ壊れてます]

910 名前:デフォルトの名無しさん mailto:sage [2021/06/09(水) 01:43:04.13 ID:oLsQ5RHC.net]
>>889
https://simchange.jp/post-164095/
ところが、↑のサイトも含めていくつかのサイトでは、日本ではiOSがシェアを
伸ばしていると書いてある。
2020/06 : Android:50.2%, iOS:49.7%
2019/06 : Android:60.5%, iOS:38.8%
2018/06 : Android:60.8%, iOS:37.6%

911 名前:デフォルトの名無しさん [2021/06/09(水) 08:17:02.86 ID:k36yeEDS.net]
元々の話はMacがM1になって開発環境として終わったという流れから
残るMacの存在価値としてiOSアプリ開発環境がありそのシェアがまだ高い(?)という話だと思うけど
多くのサービスがスマホ専用アプリを作らずにウェブアプリ(PWA)化してる状況ではシェアだけの問題ではないと思うな

912 名前:デフォルトの名無しさん mailto:sage [2021/06/09(水) 11:25:52.58 ID:oLsQ5RHC.net]
>>893
最後の行、flutterなどのマルチプラットフォームライブラリの登場によって、
ウェブアプリからnativeアプリ型への流れが出来ているという説もあるが。

913 名前:デフォルトの名無しさん mailto:sage [2021/06/09(水) 11:27:44.28 ID:oLsQ5RHC.net]
>>894
後継のSwiftが出来たのでObjective-Cの人気低下はともかく、そのSwiftも人気低下。
その理由が、AndroidとiOSでソースを共通化したい人が増えたからだそうだ。
SwiftはApple専用だから。

914 名前:デフォルトの名無しさん [2021/06/09(水) 12:30:04.46 ID:eGaY+zic.net]
lldbでpedaみたいな表示するのってこれが良いかな
便利そうだけど保守されてんのかなこれ?誰かしらん?
https://github.com/snare/voltron



915 名前:デフォルトの名無しさん mailto:sage [2021/06/10(木) 06:56:29.59 ID:A6ZEEOGF.net]
来週ついにRocket v0.5が出るぞ
安定版Rustで動くようになる

916 名前:デフォルトの名無しさん [2021/06/10(木) 09:11:05.37 ID:hslWe/Xh.net]
RUSTってORM、Dieselとかいうやつしかねえの?
SQLを明記したいのでJavaでいうMybatisみたいなのをさがしているんだけど、中華の変なものしかない。

917 名前:デフォルトの名無しさん mailto:sage [2021/06/10(木) 11:19:36.78 ID:vqPt4/VO.net]
Sqlx

918 名前:デフォルトの名無しさん mailto:sage [2021/06/11(金) 04:26:27.44 ID:tVW+Rdfi.net]
>>897
待ってた!

919 名前:デフォルトの名無しさん mailto:sage [2021/06/11(金) 05:32:32.03 ID:O0YtPkZC.net]
サーバー側はネイティブコードでクライアント側がwebassemblyで動くとかあるの?

920 名前:デフォルトの名無しさん mailto:sage [2021/06/11(金) 15:51:17.70 ID:ThZwz5mq.net]
VSCodeアップデートしたら急にDo you trust the authors of the files in this folderとか聞かれてどうしたのかと思ったけど>>823みたいな奴の対策かね

921 名前:デフォルトの名無しさん mailto:sage [2021/06/11(金) 23:04:56.42 ID:gr7UCFZ6.net]
>>898
Dieselに人が集中してる。
クレートのall-time downloadは200万超だし、
リポジトリのコミットは約4000、closed issueは約1200。

922 名前:デフォルトの名無しさん mailto:sage [2021/06/11(金) 23:44:59.89 ID:791JEOt2.net]
>>898
rust-postgres 直接使えばええやん

923 名前:デフォルトの名無しさん [2021/06/12(土) 05:08:22.45 ID:0lbP+PJD.net]
wasmはあらゆる環境で使える汎用コンテナとしてすごい将来性あるみたいだね

924 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 15:34:21.86 ID:jmn9nDiv.net]
>>905
目的外利用だし、そういうこと言っている人がいることは知ってるが、実際にそんなに将来性があるとは思えんが。



925 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 15:35:41.09 ID:jmn9nDiv.net]
wasmはもともとウェブにC++を持ち込みたいというEmscriptenの情熱から
始まったものであって、そんな汎用目的のためではない。

926 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 15:53:35.18 ID:1HODARj2.net]
そのウェブにC++を持ち込むという夢はその後どうなったの?

927 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 16:29:39.50 ID:wX98kbow.net]
ブラウザでDOOMが動いた

928 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 16:48:34.58 ID:L7rjL3/+.net]
zoomみたいなビデオ会議アプリでwasm使ってるってっ聞いた
あとカメラを使った運転免許証認識とか

929 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 17:34:23.71 ID:6kRi062U.net]
当初の目的とかどうでもいいだろ
Linuxだって当初の目的は趣味のおもちゃだぞ
>>907

930 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 17:38:04.08 ID:4jXDkOdS.net]
もしもWebAssemblyとWASIが2008年に存在していたら、Dockerを開発する必要はなかった
ってDocketの開発者が言ってた件だな

931 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 17:54:20.79 ID:jmn9nDiv.net]
>>911
どうもブラウザ外使用を盛んにアピールする人は胡散臭い。

932 名前:デフォルトの名無しさん [2021/06/12(土) 18:32:25.93 ID:l5AvwX9O.net]
いや、M$の寡占を阻止し正しき未来を創るため立ち上がったとエリックレイモンドが言ってた。

933 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 20:16:21.66 ID:jmn9nDiv.net]
>>914
そいつ人類の中で2番目に嫌いなやつだわ。
一番目はストールマン。

934 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 20:33:14.57 ID:7X99TIl2.net]
>>915
ソフトウェア著作権を否定するあんたと同類だよ。違うのは現行の法律を尊重するかしないかだけ。



935 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 21:31:34.25 ID:Ap+0oKF5.net]
>>912
んなこたない。
2008年にあっても今と扱いは変わらんと思うわ。
結局何らかのコンテナを使うことになる。
OSの件でもそうだが、この界隈は大袈裟にアピールしすぎだわ。

936 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 21:39:22.31 ID:07O/QVIU.net]
>>917
ここでいうコンテナってなんのこと?

937 名前:デフォルトの名無しさん mailto:sage [2021/06/12(土) 21:55:04.24 ID:LAH8Z0de.net]
Jail、OpenVZ、Solarisコンテナ、LXCみんな早すぎたのだ

938 名前:はちみつ餃子 mailto:sage [2021/06/13(日) 03:28:54.62 ID:tRZIM+Qs.net]
Java (JVM) で駄目だったのはなんで?

939 名前:デフォルトの名無しさん mailto:sage [2021/06/13(日) 03:38:03.93 ID:8vbdM5AU.net]
>>915
3番目が気になる

940 名前:デフォルトの名無しさん [2021/06/13(日) 10:57:47.53 ID:ACaSQ+aI.net]
Istioでの使われ方みたいな事例が増えると思う
luaの代替

941 名前:デフォルトの名無しさん mailto:sage [2021/06/13(日) 12:14:09.77 ID:CEo6Ln9Y.net]
JVM自体がローカルのシステムでグローバルだったからだろ。
低レイヤーをラップするための上位レイヤーのが互換性効かないものになってるとか、よくある話だわ。

942 名前:デフォルトの名無しさん mailto:sage [2021/06/13(日) 22:19:56.20 ID:wyOEFD1W.net]
>>916
俺は著作権は尊重する。
尊重してないのはFSFの方。

943 名前:デフォルトの名無しさん mailto:sage [2021/06/13(日) 22:54:27.20 ID:exUpBE38.net]
じゃあOSSを利用する場合はちゃんとライセンスに従わなきゃな。GPLだろうとなんだろうと。

944 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 01:49:13.38 ID:1vkdQjmk.net]
別に俺はGPLは嫌いだから自作プログラムに紛れ込ましたことは無いが、
GPL自体が自ら著作権を放棄してるな。
「COPYLEFT」 の LEFT = 放棄、左。左翼、共産主義。
「COPYRIGHT」の RIGHT = 権利、右。右翼、資本主義。権利=著作権。



945 名前:はちみつ餃子 mailto:sage [2021/06/14(月) 02:06:08.10 ID:fvxG9/iR.net]
GPL は著作権の放棄ではない。
その上で自由な利用を保証するという契約をするの。
著作権を放棄してしまったら自由な利用を強制する根拠を失ってしまう。

946 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 02:54:46.97 ID:1vkdQjmk.net]
アメリカ人はめちゃくちゃで、ライセンスと契約を区別したり訳分からんこと
言って、煙に巻こうとしてるだけ。
GPLは、その名の通り、「ライセンス」といっている。
COPYLEFT と自ら名乗っているし、著作権で無いだろう、あんなもの。

947 名前:はちみつ餃子 mailto:sage [2021/06/14(月) 02:57:23.52 ID:fvxG9/iR.net]
>>928
GPL は著作権ではない。
著作権は作者が持っていて、契約 (の内容) が GPL なの。
なんでそんな簡単なことがわからんのだ。

948 名前:はちみつ餃子 mailto:sage [2021/06/14(月) 03:06:36.37 ID:fvxG9/iR.net]
著作者は作者として強制できる権利。
強制する内容が「自由に利用すること、自由に利用させること」であることが
一般的に作者が求める強制力ではないよねということを茶化して Copyleft と言っているのであって、
強制力の根拠はあくまでも著作権だよ。

949 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 03:16:22.76 ID:Gk7ZUjpc.net]
あれが、本気で自由と思ってるのか。
頭大丈夫か?
自由じゃないからこそ、言葉だけ自由と名乗ってるに決まってるじゃん。
ようは、不自由なことをやることも、自由といや自由、みたいに皮肉みたいな感じで
言ってるんだろ、彼らは。
それか頭がおかしいかだ。

950 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 03:41:09.12 ID:lTAIWsCW.net]
ハァ〜〜〜〜〜また固定ハンドルが物申したさベースでデタラメ言ってる


まずライセンスと契約は別物ね
ライセンスと契約を混同するのはよくある誤謬
GPLにおいても、これは契約かライセンスかといった議論は昔からあるから勝手に勉強しとけ
勉強したところでここで発表はするなよ邪魔だから


> 自由な利用を強制する
これも、なんでそうなるのだってくらい愚かしい解釈
「自由」の定義をストールマンとか江添の言ってるそれに委ね過ぎて支離滅裂になってるって気付け?
辞書通りの「自由」ならライセンスも警察も裁判所も要らないから
GPL のポイントは二次的な生産物も GPL であれと要請してるところ
「だからそれを私は自由と呼んでいるんです!」と叫ぶのかな?
日本語勉強しろバァ〜〜〜カ


あと著作権著作権って簡単に言うがこれは国にもよる
たんじゅんなアタマのつくりしてるね


俺なら恥ずかし過ぎて固定ハンドル外してるわ
今に始まったことではないが

951 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 03:45:31.62 ID:A3PFUDNY.net]
>>932
この程度のバカは見飽きたのでもうちょっと
変わったこと言ってくれ

952 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 04:23:31.00 ID:lTAIWsCW.net]
即レスで
恥ずかし過ぎて固定ハンドルを外して
何ら具体的な反論をしないことで完全服従の意を表明しつつ
一方でタダで敗北アクメを晒すわけにはいかないので「バカ。陳腐」という当たり障りのない罵倒も置いておく完璧なレス

のように思えてしまうが、なんの用事もないのにわざわざ安価付けてきたコイツが当人じゃない可能性ってナンボほどあるんだろうか

953 名前:はちみつ餃子 mailto:sage [2021/06/14(月) 04:35:49.09 ID:fvxG9/iR.net]
>>932
GPL ほどの広く使われているライセンス形態がその程度の理屈の建付けがちゃんとできてないわけないだろ。
詭弁と言えば詭弁なのかもしれんが、お前ごときに突き崩せるほどの安普請ではないわ。
GPL1 のリリース日の時点ではアメリカがベルヌ条約に加盟して無かったから
それでも国際的に通用するように方式主義にも配慮されておる。

中国に対してさえ (実態はわからんが少なくとも法的な理屈の上では) 通用する GPL が「国による」とかいう雑な
理屈で回避できると思ってるのか?

954 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 05:16:55.41 ID:lTAIWsCW.net]
>>935
GPL の建付け (?) の話なんか全くしてないし、回避 (??) する話なんかもっとしてないんだが、一体何に猛反論してるつもりなのだキミは
関係ない話ベラベラし始めることこそ典型的な詭弁だよ(この場合目的が全くわからんが)


>>932に書いた内容といえば
・ライセンスと契約を同じもののように語ってるのが典型的な誤謬であると指摘して
・「自由」という語の使い方が自由過ぎることを糾弾して
・諸々の根拠を著作権に委ねるならその運用は国による要素を多分に含むと示唆している
というこれだけで、これらには返す言葉もないというのが本音でしょう


> GPL1 のリリース日の時点では
これはお前が今突然言い出したことなので元々の話とは全く関係ないが、GPL が当時と同じように理解されて運用されてるのと思ってるならやっぱ単純なアタマのつくりしてるね



955 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 05:19:57.80 ID:LaJq0QyW.net]
GPLスレでやれ、バカ

956 名前:はちみつ餃子 mailto:sage [2021/06/14(月) 05:30:15.75 ID:fvxG9/iR.net]
>>936
ライセンスは契約だし、 GPL が言うところの「自由」は定義されている。
その「自由」が辞書的な意味とは異なるかもしれんが、 (この場合の) 意味は明白で解釈の幅はない。
「自由」という言葉をあてるのがクソというのがあなたの主張?

著作権の運用が国ごとに違うのは仕方がないが、
GPL の考え方に法的根拠を与えるには他に方法がないのも事実だ。
クソみたいに著作権意識のない国では通用しないから GPL は無力だということが言いたいの?

957 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 05:45:15.60 ID:EO405yGC.net]
スレチ。。。

958 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 09:29:08.36 ID:57P3hnrE.net]
>>922
Goにホストされるって敗北感
そもそもホストはGC言語なのにわざわざそれを封じて縛りプレイしてるんだからアホくせえわ

959 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 11:54:20.91 ID:xr9L9qN8.net]
アホくせえが手段が目的化する奴が多いのよ。言語にこだわるやつってのは。

960 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 12:02:54.57 ID:Gk7ZUjpc.net]
>>938
>その「自由」が辞書的な意味とは異なるかもしれんが、 (この場合の) 意味は明白で解釈の幅はない。
ええ???

961 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 13:26:47.78 ID:7yJrxgpO.net]
スレチせめてプログラミングのこと話せ

962 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 14:32:30.77 ID:ETfeAHFb.net]
>>933,937,939,943
これは恥ずかしいw

963 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 16:01:14.18 ID:aWTkZB4f.net]
こんだけ言われてなんでまだ「ライセンス=契約」で行きたいんだ?
そこが覆ると自分の主張も破綻するから?
まあ難しいところではあるだろうと思うが、「ライセンスと契約は等価じゃない」ってのはあらゆるレイヤで真でしょ
ことOSSにおいては「契約はしてないけどライセンスはされている」という状況が山程あるし、そこ混同するのはやっぱ問題かと

964 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 16:36:10.82 ID:o7Wm2rLl.net]
ライセンスの定義についてはどこで合意が取れてんの?
それともそういうもんは存在しなくて
定義については毎回言い争ってるの?



965 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 18:32:12.91 ID:Gk7ZUjpc.net]
GPLについては、ソース公開しなければならないことについては大量に述べられて
いるが、非公開で良いケースは僅かしか語られず、その場合でも沢山の例外が
述べられていて結局、非公開にするのは茨の道になるようなライセンス。

966 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 18:48:42.01 ID:A3PFUDNY.net]
>>945
じゃあライセンスって法的に何物なの?

967 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 19:09:41.02 ID:WvbRDa7B.net]
GPLの例外条項は結構曖昧で解釈の幅がある
オレオレ解釈は散見されるが最悪争う覚悟は要りそう

あとライセンスとは全く関係無い次元で製品に使うのみで
プロジェクトの開発に貢献していないと晒されたり

968 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 19:36:33.34 ID: ]
[ここ壊れてます]

969 名前:BGpTyvuR.net mailto: GPLと聞いて。
自由については「誰の」自由かを明確化しないと混乱するから省略するな。GPLの自由はユーザーの自由で、それを実現するためにプログラマの自由を制限している。

ライセンスは文字通り「許諾」で、相手の同意を必要としない。契約は相手と自分の同意を必須とするから、GPLみたいに相手の同意を前提としていない仕組みを「契約」とするのは弱い(と思う)。
だからGPLでは著作権を使って、違反者にプログラムを使わせないことを強制する枠組みを用意している。
[]
[ここ壊れてます]

970 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 20:31:13.38 ID:6p9bp5Dj.net]
ソースコードを公開してもかまわないプログラマの自由を最大化するために作られているんだよ。
逆に言えばソースを隠したがるプログラマのことは考えていない。

971 名前:デフォルトの名無しさん [2021/06/14(月) 21:42:01.68 ID:OzvaLd6A.net]
>>951

ソースを公開しても構わない連中の意図に背いて
ソースを公開しないプログラムで金儲けしてる連中が
ソースが公開されてる物に独自の拡張を加えて独占する事が往々に起きてるぞ

972 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 22:24:45.24 ID:Gk7ZUjpc.net]
>>949
実際、めちゃくちゃややこしい。
結局、なるべくソース公開させたいんだと悟った。

973 名前:デフォルトの名無しさん mailto:sage [2021/06/14(月) 22:41:56.21 ID:G5MB7uUL.net]
おまえらrust書けないんだろ

974 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 01:20:19.29 ID:2aICmAxH.net]
rustなんだからせめてMITかApacheの話しろよ



975 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 12:54:55.77 ID:AFCY8yJO.net]
RustでGPLなクレートはほとんどないけどあったらまず使わないな

976 名前:デフォルトの名無しさん [2021/06/15(火) 17:22:37.44 ID:goBsDW0I.net]
>>956 ワイは別にGPLは気にしないな
どうせGPLなクレート使おうが使わまいがソースコードは公開するから

977 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 18:41:20.99 ID:/MaPmtJg.net]
Rust入門でオススメ書籍ありますか定期

978 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 19:52:22.79 ID:CPCRgALA.net]
ライブラリならLGPLだろ

979 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 20:51:36.90 ID:2aICmAxH.net]
ライブラリにLGPL採用する場合はcrate_type=dylibにすべき?

980 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 20:59:03.39 ID:ic6VniVo.net]
>>958
オライリー本
第2版出てるよ

981 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 21:24:12.34 ID:5dh+WKsO.net]
>ライセンスは文字通り「許諾」で、相手の同意を必要としない。契約は相手と自分の同意を必須とするから、GPLみたいに相手の同意を前提としていない仕組みを「契約」とするのは弱い(と思う)。
>だからGPLでは著作権を使って、違反者にプログラムを使わせないことを強制する枠組みを用意している。

論理が逆転してる。
許諾しない限り著作権により他者はそのソフトウェアを利用できないんであって、その許諾を行うのが許諾契約なわけ。
契約が成立していなければ単に利用できないだけ。

982 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 22:11:42.99 ID:cZWoJhTA.net]
mylibって何のためにあるのでしょうか?

983 名前:デフォルトの名無しさん mailto:sage [2021/06/15(火) 22:26:23.96 ID:4eHWI+wO.net]
【License】ライセンス総合【利用許諾】
https://mevius.5ch.net/test/read.cgi/tech/1266247461/l50

984 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 07:16:27.91 ID:CcbUbI22.net]
>>961
原著2版は来月発売では?
Safariか何かで電子書籍版が早期リリースされてんのかね



985 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 08:08:02.13 ID:FBnPGJqE.net]
GPL(LGPL含む)の問題は関連する全てのコードに干渉すること
GPLと干渉しないコードで固められるなら良いが、現実的には難しい事も多い
この場合例外条項の適用を検討することになるけど一般的な解釈はほぼなく自己責任となる

自分がGPLなコードを使いたくない理由は大抵これ
>type foo.bat
GPLなコマンド -i a.wav -o b.wav
プロプラなコマンド b.wav
>
がGPL違反とか言われててもどうしようも無いじゃない
Linux環境でも実用性を考えるとプロプラレスは難しい。nVidiaがらみとかwineとか

986 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 09:17:59.87 ID:jDDfyj6K.net]
>>966
その例がGPL違反ってどういう意味?

987 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 10:07:22.47 ID:iOI8vAiO.net]
>>966
https://www.gnu.org/licenses/gpl-faq.ja.html#NFUseGPLPlugins

> それはプログラムがどのようにプラグインを呼び出すかによります。たとえば、プログラムが単純なforkとexecでプラグインを起動し、通信するだけならば、プラグインは別のプログラムであり、プラグインのライセンスはメインプログラムになんの要求もしません。

988 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 11:05:57.56 ID:51hxO3pa.net]
>>968
それはプラグインとして解釈できるかがポイント
>>966の例だとGPLなコマンドとしてffmpegにプリプロセスさせるようなケースで
「GPLなコマンドが無かったら機能しないのだからメインの一部でありプラグインではない」
などと主張されたら自分では反論できない

989 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 11:54:54.60 ID:jDDfyj6K.net]
>>969
そんな主張はFSFもしてないけど誰がしてるの?

990 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 11:56:22.89 ID:0OhzW8Bw.net]
ぼく

991 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 13:02:13.05 ID:ZyaCpIhY.net]
>>970
GPL警察・・・はともかくとしてもライセンス文やFSFの主張と矛盾が生じない実装であることを証明できないとリスクが高い

>>968
>「集積物」とそのほかの種類の「改変されたバージョン」の違いは何ですか? (#MereAggregation)
には
>逆に、パイプ、ソケット、コマンドライン引数は通常二つの分離したプログラムの間で使われるコミュニケーションメカニズムです。
>ですからそれらがコミュニケーションのために使われるときには、モジュールは通常別々のプログラムです。
>しかしコミュニケーションのセマンティクスが親密であったり、複雑な内部データ構造を交換したりする場合は、
>それらも二つの部分がより大規模なプログラムに結合されていると考える基準となりうるでしょう。
とも書かれている。別プロセスとして利用しているからGPLの影響を受けないとは限らないと読める

あとGPLにもかかわらずプロプラのライブラリ等を利用する機能があるアプリはプロジェクト自体は問題なくても
運用時にGPL違反になる可能性は非常に高い

992 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 13:17:01.96 ID:5odmAoP3.net]
ここがライセンススレですか

993 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 13:26:13.58 ID:bmvqoYgA.net]
前にも同じような流れになった事あるよな
同じバカかな

994 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 13:44:16.01 ID:afK0Tn+I.net]
>>964が示されてもまだここで続けようとするからな
続きはあっちに書きそのURLをこのスレに書けば
続きに興味がある人はそれを見るのにこのスレで続けようとする
このスレでマウントをとること自体が目的なんだろう



995 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 15:32:36.57 ID:HrXzCrOv.net]
ライセンススレを知っている人なら判るけど論理的な議論にならないからな
条文には「〜〜」と書いてありFSFの解釈は「○○」だから××と考えるのが妥当
みたいな流れは見たことないし。ソース無しで俺解釈を唱える人はいるけど

996 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 16:40:31.58 ID:XWzkMsh/.net]
まさに彼にふさわしいスレじゃん。

997 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 17:11:11.66 ID:QlN27RbC.net]
        ,r"´⌒`゙`ヽ
       / ,   -‐- !、
      / {,}f  -‐- ,,,__、)
    /   /  .r'~"''‐--、)
  ,r''"´⌒ヽ{   ヽ (・)ハ(・)}、
 /      \  (⊂`-'つ)i-、
          `}. (__,,ノヽ_ノ,ノ  \  
           l   `-" ,ノ    ヽ  

998 名前:頼む、どうか彼らを許してやってくれ彼らはゴリラなんだ
           } 、、___,j''      l
[]
[ここ壊れてます]

999 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 23:04:16.59 ID:2zUKvOQT.net]
>>970
俺は、このスレに書いた人とは別人だが、俺もそういう主張を読んだことがある。
例え別プロセス、別コマンドであっても、そのコマンドがなければそのアプリ自体
が全く成り立たない場合には、GPL感染すると。
プラグインや拡張機能ならセーフだが、GPLなプログラム無しには基本機能さえ
成り立たないようなアプリやOSは、GPL感染してアプリやOSもソース公開しなく
てはならないと主張されていた。

1000 名前:デフォルトの名無しさん mailto:sage [2021/06/16(水) 23:12:41.99 ID:cIjelt3H.net]
1.53.0 pre-release testing | Inside Rust Blog
https://blog.rust-lang.org/inside-rust/2021/06/15/1.53.0-prelease.html

1001 名前:980 mailto:sage [2021/06/17(木) 00:25:15.75 ID:NvYoNP9C.net]
たてまいた
Rust part11
https://mevius.5ch.net/test/read.cgi/tech/1623857052/

1002 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 00:58:03.03 ID:Rm7vvv8R.net]
>>979
ライセンススレでやれって >>964
そんな主張を誰がしてるのかと問われてるのに
誰が言ってるのか不明な話をしてもしかたないだろ

1003 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 01:16:14.81 ID:ZHO1SOin.net]
GPLなクレートがかなり排除されてるRustはライセンス談義に最も向かない言語だろう

1004 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 03:00:35.86 ID:hZA4Axz4.net]
twitter見ていて分かって来たことだが、GPLを支持している人は、大体、
ほぼ全くプログラムしないか、理系でもなければ、物づくりとは全く接点が
無い人が多いようだ。プログラムしてもちょろっとだけ。
俺が知る範囲内では哲学科出身の人がやたらとGPLを推進しようとしていた。
2ch/5chだとそれが見えてこないので話がややこしくなる。



1005 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 07:53:01.41 ID:Bp52a2Ld.net]
どこを見てもそんなの見えてこない

1006 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 08:00:10.18 ID:ukuNCHw3.net]
>>983
GPL/LGPLと無縁のマルチメディアデータ処理関連のクレートを教えてくれ。それ使うから
歴史的事情もあってlibavcodecをはじめとする実績のあるコードはGPL/LGPLばかりなんだよな
特に動画は特許とGPL/LGPLで板挟み

1007 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 08:08:54.07 ID:q1AaV+h7.net]
>>986
プログラムを配布しなければGPLだろうがなんだろうが関係ないだろ。

1008 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 09:36:20.47 ID:ZHO1SOin.net]
>>986
動画も音声もどうせ特許で真っ黒なんだからどうでもいいじゃん

1009 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 13:04:16.09 ID:vro6SqnC.net]
所有権を確認するためのデバッガ教えてください

1010 名前:デフォルトの名無しさん [2021/06/17(木) 13:25:32.13 ID:zdBr0PGw.net]
>>989 rustc

1011 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 14:12:56.21 ID:hZA4Axz4.net]
GPLを推進してるほとんどの人はプログラムほとんど書いたことない人。
これは本当の話。プログラミングがどういうものか分かってない。
大量の資料を見て沢山実験してやっと方法を見つけてコードに直している
という苦労や努力、時間が理解できてないからGPLが社会を良くすると
勘違いしている。

1012 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 14:17:07.72 ID:hZA4Axz4.net]
結果のコードは30行とかでも、それを見出すのに非常に大量の時間を
かけて、googleで検索し、StackOverflowのQ&Aを10個以上読み、
書いてある通りにやっても大部分が失敗し、JavaScriptの公式HPに書いてあるとおり
にやっても出来ず(書き間違いがあることが多い)、実際に動いている例を調べたり
して、公式HPの間違いを発見しても面倒だから報告せずに、やっとの思いで
何日もかけて見出した30行のコードが、GPL感染して世界中に広まっていき、
金持ちのボンボンがそれを我が物顔で使う。そんな社会になってきている。

1013 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 14:25:35.66 ID:ZHO1SOin.net]
>>992
エッセイ書きたいならTwitterでやれ

1014 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 19:47:14.00 ID:9b5fCkeQ.net]
        ,r"´⌒`゙`ヽ
       / ,   -‐- !、
      / {,}f  -‐- ,,,__、)
    /   /  .r'~"''‐--、)
  ,r''"´⌒ヽ{   ヽ (・)ハ(・)}、
 /      \  (⊂`-'つ)i-、
          `}. (__,,ノヽ_ノ,ノ  \  
           l   `-" ,ノ    ヽ   頼む、どうか>>992を許してやってくれ彼はゴリラなんだ
           } 、、___,j''      l



1015 名前:デフォルトの名無しさん mailto:sage [2021/06/17(木) 19:59:14.59 ID:Jy0yNCu6.net]
サウイフゴリラニ
ワタシハナリタイ

1016 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 09:59:32.45 ID:ZlIKBEDk.net]
>>981
おつでーす

1017 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 10:07:49.32 ID:bpKpz6fn.net]
Rust 1.53きたけど、非ascii識別子って前から使えなかったっけ???

1018 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 11:41:40.97 ID:qNJOvBlW.net]
前はunstableでnightlyでしか使えなかった

1019 名前:デフォルトの名無しさん [2021/06/19(土) 01:08:26.25 ID:3FFA7ImF.net]
埋め

1020 名前:デフォルトの名無しさん [2021/06/19(土) 01:08:36.16 ID:3FFA7ImF.net]
埋め

1021 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 3時間 30分 32秒

1022 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef