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/
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 スレチ