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/
2 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 23:38:41.76 ID:fjFXuKAx.net] 立て乙>>1
3 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 14:21:28.71 ID:/AAJGIzP.net] 前スレ: 「まともにrustでc++並の開発速度で製品作ってから言えや」 って深い言葉だ。
4 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 14:26:31.17 ID:SyvybhgS.net] 自分で書いたのに?
5 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 14:53:21.44 ID:/AAJGIzP.net] >>4 書いてない。
6 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 18:20:50.26 ID:FsaMqi3u.net] 書いてないことは取り上げるまでもない
7 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 19:30:37.63 ID:SyvybhgS.net] まあrustを積極的に使えと言うことらしい
8 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 20:35:13.31 ID:AKsD3jpb.net] 積極的に使えば欠点が良く理解できるようになるからね。とても有効だよ。
9 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 21:46:35.78 ID:FsaMqi3u.net] 費用対効果はしばらくは注意深く見守る必要が
10 名前:デフォルトの名無しさん mailto:sage [2021/04/03(土) 22:01:52.54 ID:RYKBObRk.net] 費用対効果を見積もるにも実際のプロジェクトで使ってみるのが一番。 まあ俺は巻き込まれたくはないが。
11 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 00:05:12.47 ID:EgnLn3Yg.net] C++使ったこと無いけど趣味開発だしrust使うわ
12 名前:デフォルトの名無しさん mailto:sage [2021/04/04(日) 01:07:15.87 ID:qybbKpH3.net] >>11 勝手に使えばいいよ。
13 名前:デフォルトの名無しさん [2021/04/04(日) 14:56:23.48 ID:cWc/MaHx.net] 秀和システムのキンドル本って、あれはセールで半額になったりするもんなの?
14 名前:デフォルトの名無しさん mailto:sage [2021/04/05(月) 08:07:37.55 ID:0j1wJjru.net] 日本はランニングコストが軽視されやすいからね
15 名前:デフォルトの名無しさん [2021/04/06(火) 01:06:18.21 ID:Ftkx6t//.net] C/C++は適当に動かすだけなら簡単だろうけどさ ヘッダーファイルの作法、makeファイルの作法、古いコンパイラやリンカへの配慮・・・・みたいな独学困難な領域が多くあるからな
16 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 02:13:12.02 ID:/NFP4YRd.net] そういう人は低レイヤーを触るのがそもそも間違ってる。
17 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 02:33:17.68 ID:G1ho10ZT.net] まともなマニュアルすらないからな。魔境
18 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 04:24:25.20 ID:BW0cQchg.net] >>15 独学するしかないと思ってた
19 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 09:55:26.42 ID:Jj+MMoYg.net] cmakeやmesonやIDEの支援があると言ってもやはり敷居は高いわな だがrust使うにせよC/C++のライブラリ使ったりドキュメント読む羽目になるのでやはりある程度相互運用の知識は必要
20 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 11:13:42.73 ID:gf2H4NQV.net] オープンソースの makefile は無意味なごみが集まってるから読みにくいだけ。 特に gnu makeがおかしい。 gnu 系はヘッダファイルもソース本体も汚い事が多い。
21 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 12:13:30.74 ID:cPUJlmRG.net] ここにはC++使いしかいないのか
22 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 12:16:43.42 ID:jsUZfCa/.net] その類のmakefileはautoconfとautomakeで自動生成されるもので、人間が読むものじゃないでしょ
23 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 12:28:15.32 ID:wB2vBd3T.net] C++03の地獄を見てきた者達だ 面構えが違う
24 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 16:42:56.60 ID:23z+dMzq.net] Rust の世界だけを考えるならビルドプロセスは Cargo に書いておけばそれで OK だけどね。 全て Rust だけでは書けない場合には従来のツールチェインに更に Cargo が加わって余計にややこしくなってるとも言える。 https://xkcd.com/927/ ツールが汚いのは現実が汚いからだよ。 汚い現実から目をそらして綺麗なルールの中に閉じこもっても、 汚い現実が消えてなくなるわけじゃない。 Makefile が不愉快なら Makefile を使わないプロジェクトを増やすのを頑張るこったな。
25 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 17:35:44.74 ID:EMKAWWjR.net] rustだけのプロジェクトでもcargo-xtaskを使ってたりするからcargoだけですべてOKかというと微妙だけどね タスクランナーやビルドのポストプロセスなんかのサポートって予定されてるの?
26 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 18:23:14.98 ID:dIxoLwXV.net] Rust版makeみたいなツール見かけた気がする
27 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 19:12:35.86 ID:i3cN7eS9.net] >>26 つ https://github.com/sagiegurari/cargo-make
28 名前:デフォルトの名無しさん mailto:sage [2021/04/06(火) 23:23:49.86 ID:cPUJlmRG.net] そういうのあるの知ってるけどcargo本体に取り込む予定があるかが気になってる グローバルにその手のツールインストールするとバージョン固定が難しいので npmみたいにlocal installできるならそれでも良いけど
29 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 09:04:42.45 ID:rL66qkG6.net] 対応は結構してるわな。ただここの連中はこれくらいもできなさげ。 ttps://qiita.com/mutuya/items/f00a5b99a3f047dc3cb3
30 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 13:04:30.43 ID:zl6LVrRO.net] >>27 使ってる人いる?
31 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 13:14:18.37 ID:nIst5pc0.net] >>30 マルチプラットフォームで単純なmakeより複雑なことをしたいときには使っている。ただ大抵の場合makeでいいんじゃないかとも思う。
32 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 13:18:48.25 ID:uzth3iNv.net] Rust in the Android platform https://security.googleblog.com/2021/04/rust-in-android-platform.html
33 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 14:06:22.69 ID:g0cTo5ct.net] >>22 ところがそのautoconf系そのものがそもそも汚い。 そして、autoというのは真っ赤な嘘であることが知られている。
34 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 14:24:24.61 ID:zl6LVrRO.net] たまにCMakeが無いとcargo installがこけるツールがあってげんなりするわ
35 名前:デフォルトの名無しさん [2021/04/07(水) 15:05:49.86 ID:JRewXnwY.net] m4マクロで書くというのはそろそろやめにしてもらいたい
36 名前:デフォルトの名無しさん mailto:sage [2021/04/07(水) 18:53:05.80 ID:4oC9i5VP.net] >>30 既定のタスクをそのまま使う分には便利だけど、ちょっとアレンジしようとするとめんどくさかったという感想。 単に慣れの問題かもだが、gnu makeのMakefile中でcargo叩く方がやりやすかった。
37 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 16:35:24.79 ID:1ecqYbtl.net] >>32 訳 Rust言語でAndroidはより強固・安全に 〜GoogleがOS開発への導入を進める https://forest.watch.impress.co.jp/docs/news/1317183.html
38 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 16:40:19.95 ID:dggq93E7.net] Rustバイナリにユーザー名が埋め込まれる脆弱性が発見された
39 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 19:01:45.52 ID:gM5Az3ay.net] スーパーでよく見かける生産者表示だ、気にするな
40 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 19:25:11.32 ID:Y7HoyqEo.net] ユーザー名といかコンパイル時のソースのフルパスね ホームディレクトリ配下にソースがあるならログインユーザー名が含まれる あと発見されたのは最近ではなかったはず
41 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 20:20:07.26 ID:mAsGX/mS.net] それを消すためのオプションは数年前から付いてて そのオプションがうまく効かないケースがあるってバグが修正中なはず 最近あったのは単にその話を記事に書いた人がいるってだけ
42 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 20:20:24.34 ID:bT2+gYi+.net] ディレクトリ名にマイナンバーを入れてる人がいたらどうすんだまったく
43 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 20:46:41.37 ID:KJ+7YtJl.net] どんな間抜けだよ
44 名前:デフォルトの名無しさん mailto:sage [2021/04/08(木) 21:41:22.53 ID:2f4Y47iQ.net] ディレクトリ名につい「クソプロジェクト」とか入れてるやつはいるだろ
45 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 01:29:12.23 ID:q4HnPycb.net] ていうかログインユーザー名に実名いれるとかバカなんじゃないか
46 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 01:29:59.12 ID:q4HnPycb.net] >>44 たしかに・・それに近いことは・・ある。
47 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 11:49:57.87 ID:GRSPIdCN.net] fuck_you_cplusplus とか普通にありそう
48 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 15:11:34.90 ID:6eEbkgDq.net] どこのモジラだよ。
49 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 20:07:51.03 ID:+qIWqkLA.net] Linusじゃないの
50 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 00:22:28.46 ID:mUxV1BIo.net] Linusが吠えた! ─中指立てて「NVIDIAは世界最悪の企業」 https://gihyo.jp/admin/clip/01/linux_dt/201206/18 それはそうとして、Rustの(Goもだが)「..」が begin〜lastの意味ではなくて begin〜last+1なのは コメントに「arr[0..3]」とか書きたい場合に地味に困る
51 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 02:24:29.60 ID:0NXaZP8I.net] >>42 ネタにマジレスするけどマイナンバーはただの概念で 国民識別番号は国のサーバーに有る。 >>50 last+1って何? ..は[begin, last)だぞ。 左閉右開半開区間はPLじゃ一般的だけど。
52 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 03:35:58.01 ID:mUxV1BIo.net] >>51 begin〜last すわなち [begin, last] をRustで書いたら begin..last+1 になる、という意味やったサーセン、 しかしコメント内に現れた「a..b」は、Rust式に[a, b)と解釈すべきなのか、 それとも伝統的な[a, b]解釈とすべきなのか というのがそこはかとなく疑問が……
53 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 03:38:59.03 ID:mUxV1BIo.net] 同じことは「=」と「==」(代入と等値)の使い分けを コメント内にまで持ち込むべきかどうかという意味で 昔から迷う感じだったものがRust(やGo)の「..」のせいで悩みの種が増えたは!
54 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 10:43:41.15 ID:+2v3HD7B.net] >>52 Rustコード中ではbegin..=lastって書いたほうがいい(>=rust-1.26.0) 知ってたらすまん >>53 Rubyもそうだぞ
55 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 10:51:20.63 ID:gEDOL+ak.net] pythonもじゃないか? C系のfor(int i=0;i<5;i++)の終了条件に合わせてあるのかと思う
56 名前:はちみつ餃子 mailto:sage [2021/04/10(土) 11:33:17.54 ID:0qKWjqEq.net] 最後の要素を意味するときは last で、 最後の要素のひとつ後を指すときは end を使う習慣があると どこかで見た覚えがあるんだけど、 別の言語だったかもしれないしどこかの数学分野だったかもしれない。 うろおぼえでスマソ
57 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 11:52:10.96 ID:K51XBEHT.net] 既存の言語でも a..b が [a,b] になるもの、[a,b) になるものが混在してたこと、 また、見た目で意味が明確にわかることから a..b と a..=b を採用したという経緯だった気がする
58 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 16:42:23.36 ID:l4RzKTvO.net] https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html の一番最後のコードをコピペしてもエラーで動かないのですが どこをなおしたらいいのでしょうか?
59 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 17:11:01.23 ID:gEDOL+ak.net] cargo. tomlそのままってオチかな?
60 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 17:13:25.76 ID:l4RzKTvO.net] randの追加はしております
61 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 17:23:47.25 ID:+2v3HD7B.net] エラーメッセージを
62 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 17:24:38.49 ID:gEDOL+ak.net] エラーそのまま貼らないとわからないわ と言うか頭からやりなよ
63 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 17:
] [ここ壊れてます]
64 名前:50:35.32 ID:gEDOL+ak.net mailto: せっかく日本語訳だってあるわけだし https://doc.rust-jp.rs/book-ja/ch02-00-guessing-game-tutorial.html [] [ここ壊れてます]
65 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 21:25:06.44 ID:l4RzKTvO.net] あ、すいません randのバージョンを最新版のものにしてました チュートリアルで指定されているバージョンにしたら動きました 失礼しました
66 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 21:28:15.45 ID:ugs90wL2.net] 乱数なんて超基本的なライブラリが コンパイル通らないぐらいのAPI変更を簡単にやってしまうなんて大丈夫なのかこの言語
67 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 21:58:15.68 ID:gEDOL+ak.net] この場合は言語の責任でもないしそのためのcargoだし
68 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 22:07:11.12 ID:gEDOL+ak.net] でもせっかくこういう体験したのであればソースの方を直すのも正しき甲殻類な気がするな
69 名前:デフォルトの名無しさん mailto:sage [2021/04/10(土) 22:55:00.58 ID:DbIYjEaQ.net] 最近使ってないけど randってなんか使いにくいAPIだった気がする
70 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 01:46:09.52 ID:+yU+1pdE.net] 最近マシになってきた
71 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 03:28:20.09 ID:FNN81f5r.net] マシにする為だろうが一度決めたAPIは変えない それがC/C++界の掟じゃないのか?
72 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 08:22:28.91 ID:/Boh3f8b.net] 絶対に変えないようにした結果かえってひどいことになってるイメージ
73 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 08:57:50.42 ID:SN158GXT.net] 普通は破壊的仕様変更のときはメジャーバージョン変えそうなもんだがバージョン0だからな
74 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 09:07:58.37 ID:QZzlCmlR.net] バージョン0のうちは破壊的な変更もし放題ということか
75 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 09:12:29.26 ID:SN158GXT.net] そいや非推奨や廃止の警告出せたっけ?
76 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 10:02:11.52 ID:8BAcJ5Wr.net] >>74 deprecatedアトリビュートで出せるよ
77 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 10:25:10.63 ID:SN158GXT.net] Microsoftがプログラミング言語「Rust」への支援を強化 https://news.yahoo.co.jp/articles/d9e8b5acb96920789bb4364951481f074bfd93d8 visual rustとか出さないでよね… >>75 だよねえ どのバージョンで変えるか警告はするよねえ
78 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 10:47:22.32 ID:SN158GXT.net] んでバージョン指定変えてみたら get_rangeの引数が最小、最大+1の2つから最小..最大+1の範囲リテラルに変わったのね カンマを..に一ヵ所変えるだけだったから修正自体は対したことなかったけどオーバロードがあればもっと緩やかな改変が出来るのだろうか? ゼロコスト抽象化の方針上仕方ないのだろうか?
79 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 11:24:02.64 ID:FNN81f5r.net] >>77 そんなしょうもない変更の為に互換性破壊したのか
80 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 11:29:55.74 ID:duIaxYyg.net] >>78 ..= が使えるようになったとあるのでインターフェースの改善ではあるのでは あと破壊的変更はこれだけではない https://rust-random.github.io/book/update-0.8.html
81 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 12:27:09.74 ID:SN158GXT.net] マイナーバージョンが上がるのでも結構変わると言うことか
82 名前:デフォルトの名無しさん [2021/04/11(日) 13:05:02.83 ID:/JadX22/.net] バージョン0のうちはね
83 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 13:15:29.70 ID:SN158GXT.net] 誰かも言ってたけどこう言うのは標準ライブラリで整備してほしい所だあな
84 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 13:43:12.49 ID:4rSwKpry.net] 乱数は用途によってアルゴリズム使い分けにゃならんからなぁ Cのrandはまぁ使えないとしてC++のrandomまで行くと重い
85 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 14:40:26.89 ID:duIaxYyg.net] randの設計が安定しない現状でstdに入れるにしても かなり限定されたサブセットしか入れられないのでは
86 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 17:41:37.63 ID:aRgjPq06.net] それで十分だろ。 メルセンヌツイスターとか必要な場合は各々入れたら良い。 手軽な乱数を必要とする場面は割とある。
87 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 21:41:09.50 ID:LXnW0jT4.net] メルセンヌ・ツイスタ、MT19937 を使っているのは、Ruby ぐらい 他の言語は、低品質
88 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 22:30:00.44 ID:2GAqbccY.net] 一瞬信じかけたけど、pythonもboostもmtだったわ
89 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 22:41:39.90 ID:FNN81f5r.net] 何でそんなとこで嘘つくん?
90 名前:デフォルトの名無しさん mailto:sage [2021/04/11(日) 23:24:19.82 ID:REr5r+Uo.net] >>85 直近でThreadRngやRngも破壊的変更されてて 乱数生成器の種類を充実させるとかそういうレベルにすら達してないのよ
91 名前:デフォルトの名無しさん [2021/04/12(月) 16:58:50.31 ID:JNYj24al.net] 一部のプログラミング言語では、デフォルトの疑似乱数生成器としてメルセンヌ・ツイスタが 標準ライブラリに取り入れられている。そのような言語の例として、 Python,[2][3] Ruby,[4] R,[5] PHP,[6] MATLAB, C++[7](C++11から) がある。
92 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 19:41:31.46 ID:bbHno7r0.net] よそはよそ!うちはうち!
93 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 21:18:15.82 ID:z80SpJNy.net] 線形合同が、あまりに低品質
94 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 21:49:55.90 ID:b3c5oHjh.net] オライリー調査で明らかに--Go、Rust、Ruby、Dartに関心高まる - ZDNet Japan https://japan.zdnet.com/article/35169143/
95 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 22:02:51.56 ID:mno1Imjq.net] fn main() { let n = 100; println!("{}", type_of(n)); } これを実行すると E0425: cannot find function `type_of` in this scope not found in this scope になるのですがtype_ofは使えないのでしょうか? rustc -V 1.51.0です
96 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 22:08:31.70 ID:mno1Imjq.net] すいません とほほのRust入門見て解決しました type_ofを関数として定義しないとダメなんですね https://docs.rs/typed/1.0.0/typed/fn.type_of.html にページがあったので組み込み関数があるものだと思いこんでたら そういうものは存在しなくて,type_ofの関数を定義しないとダメだったようです kindleで入門書を購入したのですがそこが省略されておりはまりました 失礼しました
97 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 22:40:04.94 ID:J2Rjxost.net] 乱数ってxorshiftとかxoroshiroもあるわけで まぁアルゴリズム固定は難しいでしょう
98 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 23:08:15.49 ID:/+zeTQQu.net] no_std環境も考えるともし一つ選ぶならMTよりxorshiftかなぁ。Rustの方針に合わないから入ることはないだろうけど。
99 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 00:51:04.66 ID:zVaLotRH.net] APIをどうするかどこまでリッチにするかとかも難しいんだろ
100 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 01:57:46.80 ID:dtk27dGR.net] xoroshiro1024がないんだよね。 >>95 ```shell rustup doc --std ```
101 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 21:01:10.98 ID:aIjUzI+d.net] パニックお断り―Linus,"Rust for Linux"の盛り上がりに釘を刺す https://gihyo.jp/admin/clip/01/linux_dt/202104/15
102 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 21:13:33.74 ID:aIjUzI+d.net] JavaScript/TypeScriptランタイム環境「Deno 1.9」がリリース、パフォーマンス向上に寄与する機能追加など https://codezine.jp/article/detail/13970
103 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 04:30:01.56 ID:h4psCBcA.net] >>100 メモリの確保に失敗したくらいでpanicはしないが alloc::alloc::Allocatorの一部メソッドはpanicするから no_core上にpanicしないアロケータ実装すればよさそう。 コンパイル遅いのはキャッシュするしかない。
104 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 09:28:25.44 ID:eEnfPPGg.net] 結局kernelやるならunsafeつけまくりにしかならんだろ。 そうするとなぜrustで?という事になる。
105 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 09:50:50.04 ID:MkjaOpjL.net] >>102 その「panicしないアロケータ」を使った Vec やらなんやら全部実装しなおさないといけなくならない?
106 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 18:31:00.46 ID:7IMcJQmu.net] >>104 といっても変えるのはnewとかくらいで大半の実装はそのままもってくればいいんじゃない? まあパッチ投げてる人もそこは作業量多いとは言ってるけど。
107 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 18:54:38.72 ID:GwffY4ld.net] >>104 Vec等のコンテナにはtry_reserveとかのメモリ割り当て失敗でエラーにする関数用意されているから メモリ割り当ての失敗だけが問題ならliballocの使い方を変えるだけでよいのでは 他にpanic要因あるならだめだけど ちなみにnewはメモリ割り当てしないから変更不要
108 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 21:12:31.63 ID:eEnfPPGg.net] ある種の「コンテキストに対するunsafe」をつけて回らなきゃ無理。 でもってそれはmoonshotだって言ってるわな。 https://lkml.org/lkml/2021/4/14/1140
109 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 21:47:54.90 ID:GwffY4ld.net] 特定の関数が割り込みのコンテキストから呼び出されたときにコンパイルエラーにすることは 今の言語機能では不可能という話か
110 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 23:21:39.03 ID:Xc/jdFUF.net] >>107 role orientedな言語でコンパイラが特別扱いする コンテキストを指定できれば実現できる、 ここまで考えてだからmoonshotなのかと。
111 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 23:46:26.48 ID:Kk/3g/Ul.net] Cでも出来てないことを要求してどうすんの
112 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 00:54:40.80 ID:r+Flv24K.net] 知らんがな。どうしてもrustでkernel作りたいってやつに言えや。
113 名前:はちみつ餃子 mailto:sage [2021/04/17(土) 02:30:05.79 ID:V2rXjiTW.net] Linux のカーネルはカーネルとは言ってもかなり巨大なので 現状の Rust でも採用可能な箇所もあるんでないの。 知らんけど。
114 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:49:33.19 ID:r+Flv24K.net] >>112 だからその考えでドライバーならということで始めたら上記の問題が出てきたってところだよ。 何周遅れてんだよ。
115 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 09:05:35.37 ID:dMPv+0ET.net] グーグル、Linuxカーネル開発における「Rust」採用の動きをサポートする考え https://japan.zdnet.com/article/35169455/ 利用が進めば問題点も見えてくるし何らかの対策は追加されるだろうな
116 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 09:33:32.53 ID:tTsG+vVF.net] linusすごいな Rust関わってる人全員子供扱いかよ
117 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 10:42:23.64 ID:r+Flv24K.net] いや、これrustでkernelに関わろうとした人たちが低レイヤーのこと、あまりにわかってなさすぎだろ。。 これ、ほぼ素人の俺でも気づくような内容だぞ
118 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 10:53:16.85 ID:ttx9Ve6D.net] へぇ、すごいんですねぇー^^
119 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 10:55:23.76 ID:r+Flv24K.net] 冷笑系気取りのバカって本当に救いようがないよな。
120 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:09:22.71 ID:h7zOlTtk.net] C++でもコンテナに値を追加しようとすると、メモリー不足で追加に失敗 する可能性があるが、それをいちいちチェックする人はまず居ないだろうな。 デスクトップマシンでそれに失敗する可能性はとても低いけども。
121 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:14:10.31 ID:h7zOlTtk.net] 例えば、 std::vector<int> v; // 空の動的配列を生成 for ( unsigned int i = 0; i < 100000000; i++ ) { v.push_back(i + 100); // 末尾に i + 100 という値を追加 } とした場合、環境やマシンの状態によってはメモリー不足で失敗することは あるだろうが、これをいちいちエラーチェックする人は少ないだろう。
122 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:22:45.09 ID:3/shspJz.net] >>116 https://rust-lang.github.io/rfcs/2116-alloc-me-maybe.html 歴史的背景はこことか見ると書いてあるけど、処理系の初期開発で想定されていたほとんどの開発者はallocation errorから回復する必要がないから、あえてそういうAPIデザインにしたと カーネルはその「ほとんど」から外れる用途だからlinusは当然今のAPIじゃダメだと釘を刺す だからallocator_apiその他の安定化が急がれる、それだけの話じゃないの?
123 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:25:00.56 ID:/69X/cno.net] linusへのレスポンス読んだ? allocについては問題なのは認識してるけど 開発スピード上げるために今はliballoc使っていて そのうち独自の物に置き換えると言っている
124 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:27:24.53 ID:t/1FzfAW.net] pure rustでカーネル作ってる人いるんだから 原理的に不可能ってわけでもないだろ
125 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:29:13.13 ID:LJqBKM+D.net] allocまで全部作り切ってからパッチ投げてLinusに却下って言われたら目も当てられんしな。プロトタイプの段階でこまめに出すのはいいと思う。
126 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:37:37.77 ID:h7zOlTtk.net] >>120 伝統的なCでは、 char *ptr; if ( (ptr = malloc(サイズ)) == NULL ) { // (1) printf( "メモリ確保にしっぱいしたで〜\n" ); } それをC++で書くとすれば、 if ( (ptr = new char [サイズ]) == NULL ) { // (2) printf( "メモリ確保にしっぱいしたで〜\n" ); } となるけれども、 v.push_back(i + 100); // (3) でメモリーエラーのエラーチェックしないのに(2)でしても余り意味はないという 考え方もあるわけでなので(2)と書かずにエラーチェック無しで ptr = new char [サイズ]; // (4) と書く方針もあっていいと思う。 なお、よっぽど大きなデータを扱わない限り、デスクトップマシンでは (3)や(4)で失敗する可能性はとても低い。
127 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:41:51.20 ID:h7zOlTtk.net] N88-BASICでは、読み込みモードでファイルを開く時、 open "ファイル名" for input as #1 と書いていたが、ファイルが存在しないとここでエラーになって アプリが終了していたことを思い出した。 Perl、Ruby、Pythonなんかは、全て基本的に同じ方針だと思う。 その流儀とRustでのメモリー不足時のpanicの方針も同じと考えていいだろうな。
128 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 11:48:23.17 ID:r+Flv24K.net] >>121 そう、それだけの話。でもそれだけの話がここでは恐ろしく通じない。
129 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 12:20:31.25 ID:3/shspJz.net] >>122 On allocation: this is just our usage of `alloc` in order to speed development up -- it will be replaced (or customized, we have to decide how we will approach it) with our own allocation and data structures. これのことか? itってour usage of `alloc`のことじゃねーのと思ったけど、alloc自体のAPIデザインに問題があるみたいな話出てるの?
130 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 13:30:05.64 ID:5SUmF/jF.net] >>125 > if ( (ptr = new char [サイズ]) == NULL ) { // (2) C++ は new も vector::push_back も bad_alloc が飛ぶ。ふつうの new は nullptr 返さない。
131 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 13:35:37.75 ID:YGcs/48d.net] てかアロケータの動作がどうのってLinux Kernel関係あるの? ベアメタル用途全般が該当すると思うけど
132 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 14:08:16.83 ID:h7zOlTtk.net] >>129 そういえば、言葉は忘れたけど、関数宣言の行に、その関数の中でどういう 例外が起きる可能性があるかについてのthrows を書くかどうか、書くべきか、 省略しても良いか、などの違いが色々あって、どういう言語仕様にすべきかが 結構問題になっていると聞いた。 すべてを書くと多くなりすぎるし、全く書かないのも問題だとか、そんな話。 なんという言葉だったかな。
133 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 14:30:50.99 ID:ahfNUrst.net] allocatorがエラーを返さずに例外を上げる挙動にRustの標準ライブラリ的なもの(コレクションとかスマートポインタとか?)が依存していて、 それはLinuxカーネル的には許容できないからそういうコードをそのまま持ち込むなよ?ということでしょ Linuxカーネル上のC言語はそもそも標準ライブラリとか使わないし メモリ確保もmallocじゃなくてkmallocというカーネル内独自関数使うし ここ見ると https://medium.com/nttlabs/linux-kernel-module-with-rust-d5363c2f9085 array: vec![0;32] で kmalloc が呼ばれるみたいだね でもこれLinuxのカーネルモジュールのコードとしてはそこでエラーチェックが必要になるのかね? もしくはkmallocに失敗したらそのモジュール自体が自動でアンロードされるとか でもアンロードされるときに後処理とかしたいかなとかいろいろ考える必要はありそう
134 名前:はちみつ餃子 mailto:sage [2021/04/17(土) 14:48:08.80 ID:V2rXjiTW.net] >>131 動的例外仕様 (dynamic exception specification) のことか? https://timsong-cpp.github.io/cppwp/n3337/except.spec 送出される可能性のある例外を記述する仕組みだったが、役に立ってなかったので C++17 で廃止された。 (例外を送出するかしないかだけを指定する方式が残された。) C++ の仕様では例外を送出しないという指定を付けたところを例外が通過しようとしたら std::terminate が呼ばれて異常終了扱いになるという、実質的な assert なんだわ。 静的な検査をカッチリやってくれるわけではないんで、 カーネル記述みたいな文脈では使い物にならんな。
135 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 14:49:51.36 ID:ohP60UMx.net] linuxだろうとwindowsだろうと普通のカーネルはそうだろ。 よっぽど特殊用途のOSならどうかは知らんが。
136 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 15:49:17.42 ID:h7zOlTtk.net] >>133 なんか、Javaにおいて、throwsに創出するすべての例外を書く仕様にしてみたら、 地獄のように沢山書かなくてはならなくなって困り、 関数プロトタイプ宣言の直後の throws()の中に 「書く必要のある例外」と「書かなくても良い例外」 の違いを設けることにした、この板で聞いた。
137 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 15:56:30.53 ID:h7zOlTtk.net] >>135 「OutOfMemoryError」例外は、throws に明示しなくて良いことになった とWikipediaで見た記憶が有る。
138 名前:はちみつ餃子 mailto:sage [2021/04/17(土) 16:29:38.34 ID:V2rXjiTW.net] >>135 検査例外と非検査例外のことだな。 例外の便利なところは大域脱出が出来るところで、例外を捕捉する箇所と発生する箇所の間では例外のことを忘れられる点。 発生しうる例外の伝播を明示しないといけないのだと返却値で返す形にするのと差がない。 例外を使っていると異常系だということが見た目に分かり易いってくらいのもの。 Java が明示しなくてよい例外という分類を設けたのは明示しなくてよいというだけでなく捕捉もしなくてよいということでもあって、 どのように使い分けるのがよいかは諸説あるけども、非検査例外は ・ 捕捉したところで回復できないもの ・ そもそもその例外を発生させないようにすべきもの (実質的には assert) というのがおおよその共通認識になっている。 メモリ不足は回復不可能なので非検査例外に分類されているが、 「Java のレイヤでは」回復不可能という話であって、 Java では低レイヤを書かないという前提があるからこういう決め打ちが出来る。 低レイヤと高レイヤでは前提が違ってくるから同じようにはいかんのだ。
139 名前:デフォルトの名無しさん [2021/04/17(土) 16:34:30.24 ID:h7zOlTtk.net] >>136 https://www.w3resource.com/java-tutorial/types-of-exception.php 1. Checked exceptions 2. Unchecked exceptions が有り、2. には、 2-1. Errors 2-2. Runtime exceptions の2種類がある。 1はmethodシグネチャのthrowsの後に明示しなくてはならないが、 2は不要。1はプログラマが処理することが出来る場合が多いが、 2はとても難しいことが多い。 OutOfMemoryErrorは、2-1 に属し、throwsの後に明示する必要がないが 「2」なのでプログラマが対処することが難しい例外に分類される。
140 名前:はちみつ餃子 mailto:sage [2021/04/17(土) 16:46:23.23 ID:V2rXjiTW.net] 低レイヤでも高レイヤでも使うことを考えたらやっぱ例外という仕組みは使いにくいっつーことだな。 カーネルを書くにあたって Rust が (現状では) ベストというわけでもないだろうけど、 比較的可能性がある選択のひとつではあると思う。 どうせ標準ライブラリのフルセットを使えるわけではないのは C でも同じことだし。
141 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 17:10:18.35 ID:h7zOlTtk.net] Rubyなんかでファイルオープンする時にはエラー発生チェックをしなくてもよくて エラーが発生するとpanicする。これは簡単なプログラムでは便利。 そしてbegin,rescue,endではさめば、panicせずにエラー処理することも 出来る様になっている。これはtry,catch構文と発想は同じ。 でも、読み書き用の2つのファイルをオープンして読んで加工して書き込む ような時、catch文でどっちのエラーか区別したりするのは面倒といえば面倒かな。 C風だと、fopen の行で処理できて分かり易かったのに。
142 名前:デフォルトの名無しさん [2021/04/17(土) 17:12:33.63 ID:h7zOlTtk.net] >>139 でも、リストに追加したときにメモリ不足になっても、例外機構でしか エラーを補足出来ないのは面倒だな。
143 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 02:29:17.84 ID:xL1TJJG/.net] ttps://github.com/rust-lang/rust-bindgen/commit/0e25962c4e69aef647e7275fa7bc7545dbb8cd0b#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759 コロコロ変わってその度に置換するスクリプト書いてるんだけど、 二ヶ月くらい音沙汰ないからそろそろ名前くらい安定してほしい。
144 名前:デフォルトの名無しさん [2021/04/18(日) 09:49:21.11 ID:vWwiRD
] [ここ壊れてます]
145 名前:OG.net mailto: rustってそんなにいいか? 任意の場所でfreeできるcとは違って ブロック抜けるタイミングでしかメモリ開放されないんだろ? rustっていらなくなってもブロック抜けるまではヒープメモリ保持しないといけないってことなの? [] [ここ壊れてます]
146 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 10:08:02.12 ID:UN4umXE6.net] >>143 dropじゃだめなの?
147 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 10:09:10.01 ID:732wPalE.net] そんなに良くないからキミはもっとcを頑張ったほうがいい cを頑張ってc++にも手を出して頑張って 気が狂いそうになるのを覚えてからもう一度来たらいい
148 名前:デフォルトの名無しさん [2021/04/18(日) 10:34:02.72 ID:vWwiRDOG.net] >>144 lifetime内であれば手動で早期開放できるんですね お世話になりました
149 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 12:33:31.22 ID:gA/cagL6.net] ワロタw
150 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 12:57:11.20 ID:UN4umXE6.net] vectorにpushしながらその要素の可変参照を返すようなメソッドってあったりしますか?
151 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 13:12:40.26 ID:/yrt+WGh.net] お前らの用途だったらgoで十分だろと思うことが多いわ。 ファッションでやるってのも悪くはないが。
152 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 13:30:23.57 ID:8MLIImZW.net] rustではunsafeを多用するのは良いことですか?
153 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 13:39:58.68 ID:a3mPgn8/.net] 必要なら使えばいい
154 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 16:52:32.86 ID:dOXZMSKq.net] >>148 そういうメソッドはなさそう 特に理由がなければ分けて書いた方がいいけど、ブロック式を使って let y = { v.push(x); v.last_mut().unwrap() }; // 変数に入れる場合 f({ v.push(x); v.last_mut().unwrap() }); // 関数に渡す場合 みたいな詰め方はできるかな いっぱい使うならローカルなマクロ作ってもいい macro_rules! push_and_mut_ref { ($v:expr, $x:expr) => {{ $v.push($x); $v.last_mut().unwrap() }}; } let y = push_and_mut_ref!(v, x); 蛇足だけどyが生きてる間はvに触れないからご注意を
155 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 17:30:23.89 ID:qHYw4Dd3.net] >>152 >蛇足だけどyが生きてる間はvに触れないからご注意を 蛇足ではない気がする push時にその要素のmut refを必要とするような書き方は避けたほうがいい
156 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 17:38:05.52 ID:/DBGFH0C.net] entry APIみたいなことしたいのかな
157 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 03:50:11.66 ID:cH3u5yp0.net] Rustに比べたC++の良さは雑に書けるところだって気付いた やっぱ雑が許されない巨大プロジェクトはRustで、小規模な自分用ツールの類はC++で書いてくことになりそうだ
158 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:44:54.89 ID:4a/aZ6Q1.net] >>155 いいところに気付いたな Rustは一般プログラマーには無用の長物だ
159 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 10:48:10.96 ID:7a+3hK+O.net] 段階的に直していく方法と最初から設計で硬くしておく方法があると思うが rustが念頭に置いてるのは明らかに後者。これがいいのか悪いのかは議論の余地がある。
160 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 11:19:16.28 ID:QqvLWpkW.net] 型が強いからリファクタリングしやすいという意味では段々直していく方法に適しているとも言えると思うが
161 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 11:21:50.23 ID:7a+3hK+O.net] >>158 型の強さがある意味で強すぎて、メモリ解放のタイミングまでキッチリあってないと無理なんだが。 ちょっとしたリファクタリングするにもかなり大域的変更になる。
162 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 11:34:35.17 ID:VqBzpR75.net] >>155 雑に書いた脆弱性のあるバイナリを世に出さなきゃそれでもいいんじゃね
163 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 13:02:55.04 ID:sZaag2LS.net] >>160 何言ってんだこの馬鹿 Rust謹製なら脆弱性が無いとでも思ってんのか?
164 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 13:06:52.92 ID:hAOdtYDs.net] つーかRust以前はどうしてたんだよって話w 流行りのもんに飛びついてそれ以外見えなくなってる典型
165 名前:デフォルトの名無しさん [2021/04/19(月) 13:26:32.62 ID:I7sE/fYQ.net] どうしてたって脆弱性を秘めたまま出回ってただろ
166 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 13:27:33.53 ID:k4Vsf7V5.net] いつものレイヤーとかスコープを ごちゃまぜにする思考が乱雑な人でしょ
167 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 14:27:55.78 ID:7a+3hK+O.net] それお前だろ
168 名前:デフォルトの名無しさん [2021/04/19(月) 16:41:05.18 ID:OqiIdPZa.net] まあ、C/C++が危なかろうが、自分のやりたい計算をするだけみたいな用途には向いてるよな どうみても簡単で早いし・・・・
169 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 16:57:54.64 ID:QZprAv/b.net] >>155 C/C++は雑に書けるというより、Rustが想定してないでけで 本当は安全なプログラムも思った通りに書くことが出来る。 RustはRustが想定している範囲内でしか書けないので面倒なことになる。
170 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:00:14.68 ID:QZprAv/b.net] >>167 職人さんはさまざまな危険な道具を、十分安全に使う。 Rustは、「危険だ危険だ」と言って、危ない道具を使わせず 予め「刃(やいば)を抜かれた」道具の使用を強制する。
171 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:08:36.65 ID:QZprAv/b.net] AIの機械学習は計算が重いのに言語としては遅いところのPythonのAIは遅くはない。 なぜなら計算部分はC/C++で書かれたライブラリを呼び出して使ってるだけだから。 同様にRustがベンチマークで遅くないのは、実はunsafeモードで書かれたライブラリ を使ってるせいもある。だからそのベンチマークだけでC/C++と同程度の速さ であることの証明にはならない。
172 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:33:10.17 ID:QqvLWpkW.net] >>169 具体的に何のベンチマークのことを言っているの?
173 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:37:07.25 ID:QqvLWpkW.net] unsafeがライブラリに隠蔽されていてかつ性能が出ることはRustのコンセプトが正しかったことの証明になるのでは?
174 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:58:35.97 ID:eG8AP0Ht.net] 今月のWEB+DB PRESSに載ってる簡易的なRDBMSをRustで実装する記事結構いいぞ RDBMSの仕組みを学ぶことが主眼でRustの解説は最低限なんだけど Rustでよく使うパターンが
175 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:59:44.87 ID:cPEAzkUm.net] 「じゃあC++使えばいいよ」で済む質問を何度投下すれば気が済むのか
176 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 18:02:01.96 ID:Nl1mmVW4.net] だって入れ食いなんだもん…
177 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 18:15:13.40 ID:zaOVVmA+.net] >>173 リトマス試験紙なんよ C++で苦労した奴は文句は言わない。Rustが何をしてくれようとしてるのか分かるから。 C++ニワカは文句を言う。Rustが何をしてくれようとしてるのか分からないから。
178 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 18:56:00.14 ID:7a+3hK+O.net] >>171 言ってる意味がまるでわからんのだが。
179 名前:デフォルトの名無しさん [2021/04/19(月) 19:29:57.41 ID:OqiIdPZa.net] 大半の人は、C/C++で苦労も何もしてないだろう 何が危ないのかも理解しないまま、危険なコードや穴の空きやすいコードを書いてるだけだ
180 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 19:51:48.28 ID:iY2hw6vD.net] C/C++でメモリをぶっ壊して数日絶望するところまでがチュートリアル
181 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 19:59:51.22 ID:sjEpEGTN.net] メモリぶっ壊すのは絶望ではない、C++の日常だ
182 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 20:10:50.91 ID:hAOdtYDs.net] >>178-179 この人たち未だにC++でnewとかdelete多用してるかそれを通過儀礼のように捉えてる人たちだよね こえ〜 よくある職
183 名前:場の老害像そのものじゃん [] [ここ壊れてます]
184 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 20:11:49.67 ID:sjEpEGTN.net] アマチュア君にはそう見えるんだね
185 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 20:13:49.42 ID:cPEAzkUm.net] さすがに日常ではないかな…… 構造体の初期化にmemset使うようなC言語上がりのやつはどうだか知らんけど
186 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 20:16:58.02 ID:swd16GZO.net] 毎日のようにRustスレで繰り返し同じ事をグチグチ言ってる自称C++使い達はよっぽど暇なんだなぁって思う
187 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 20:21:28.79 ID:7a+3hK+O.net] c/c++でそんだけ壊れるならrustでもunsafe使ってぶっ壊れまくるだろ。。 エアプ丸出しすぎるわ
188 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 20:21:54.23 ID:iY2hw6vD.net] 引数チェックのないライブラリ等で引数を誤ったりすると パッと見正しく見えるのでかなり面倒なことになる
189 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 21:31:37.98 ID:LNECVJtJ.net] AddressSanitizerを使ったことのないものだけが石を投げよ
190 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 22:14:40.51 ID:w0HdGBDs.net] 伸びてると思ったら。次からワッチョイ付けろよ。
191 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 00:56:58.25 ID:h4Yrn7zO.net] https://trends.google.com/trends/explore?date=today%205-y&geo=US&q=%2Fm%2F0dsbpg6,%2Fm%2F02p97,Python,Java,%2Fm%2F0jgqg Google Trends での Rustと他の言語とのトレンド比較。 これを見る限り、Rust言語は全く流行ってないようだ。
192 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 00:59:14.52 ID:h4Yrn7zO.net] Python>Java>=JS>C++>>>>Rust
193 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 01:00:58.56 ID:P7hWVPU6.net] そんな超メジャー言語と比較されるようになったのか
194 名前:デフォルトの名無しさん mailto:さげ [2021/04/20(火) 01:04:41.62 ID:h4Yrn7zO.net] >>190 逆にそんなマイナーな言語なのに書籍が出たりtwitterでRustとWasmが 対になって出たりしてたのか。 Rustを試してる人は書籍や雑誌記事を書いて食っていくかか、難しくて新しい言語 を知ることで自分の社会的評価(?)を上げようとしているのか。
195 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 01:11:58.24 ID:P7hWVPU6.net] >>191 なんかかっこいい嫌味を言いたいみたいだけど 意味不明ですべってるぞ
196 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 02:00:40.62 ID:1YS4Hj5E.net] >>161 雑に書いたコードだって自分で言ってんだろボケが
197 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 08:34:25.33 ID:A+mNu4wy.net] https://m.slashdot.org/story/384324
198 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 10:41:16.90 ID:MbK31k7w.net] なんか無駄なところに手を出しちゃったみたいになってる若い人が発狂してんのかね。 別にrustで学んだことは無駄にはならんよ。 現場でrust強要するのはクソだが。
199 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 11:46:33.55 ID:UmXg6L/G.net] 5chに若い人なんかいないよ
200 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 19:43:34.07 ID:jXnHABO7.net] なるほどそれで皆C++の話ばかりするのか
201 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 21:08:17.70 ID:i+94ZV2W.net] C++もそれだけ枯れたか
202 名前:デフォルトの名無しさん [2021/04/21(水) 11:52:12.19 ID:/JxRHm/B.net] C++ニワカのLinusはpanicは認めないと言う話をしてるのにアロケーターだけの問題だ 「それだけでしょ、分かってるやつ居なすぎ」とまとめる 範囲外のインデックスアクセスでもpanicするし、Debugなら整数のオーバーフローでも panicする(なぜかReleaseだとpanicしない)とんでもないアホの勘違いはJavaを持って きて検査例外と非検査例外の話をし出す。せっかくResult/OptionがあるのにRustの文化と なっているpanicを通常は捕捉しないと言うものをKernelに持ち込むなと言う話。 範囲外アクセスで即座に既存のC/Kernelならレジスタを保存してダンプするような Segment fault例外トラップなどが働くのに、panicでスタック巻き戻し実行が起こるのは 絶対的に受け入れられない言うとる Cの悪名高きsetjmpや、C++のRTL/動的例外テーブルの議論を見てるようだ 検査例外と非検査例外の話をし出すアホはもう来るな
203 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 12:24:14.02 ID:dj6DJThv.net] ++うんこ華麗にスルーして、やっぱリーナス見る目有るわ神だろ
204 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 12:54:12.00 ID:KSNXGwT5.net] 別にそこまで褒めることでもないんだけどね。。 ttps://lkml.org/ の他の議論に比べて明らかに議論のレベルが低いわけで。。
205 名前:デフォルトの名無しさん [2021/04/21(水) 13:38:37.86 ID:T0Zi2n6U.net] >>199 なんか何言ってるのか分からない部分が有るな。
206 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 17:38:16.65 ID:l2lL4TPp.net] js-sys見てたらJavaScript側の型の継承関係をDerefで表現しててびびった こういうの普通なん?
207 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 17:58:04.79 ID:tLndpRqR.net] >>201 歴史があってどう実装すべきかという指針ができあがっているCと 手探りで指針を作りつつあるRustで議論のレベルが同じにならないのは自然なのでは
208 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 18:42:16.83 ID:KSNXGwT5.net] >>204 問題はそういう言語の問題まで行かず、カーネルが備えるべきところってな議論で止まってるって部分だけどね。 歴史という意味ではそもそもカーネルに対する歴史観が不足してる連中しかrustにはいないということになる。
209 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 22:06:45.67 ID:2oKQsBoE.net] プロセスがスローし、誰も補足しなかった例外を 最終的に捕捉してそのプロセスを終了させるのはOS(ことによったらカーネル)の仕事である 一方、カーネルが仮に例外をスローしてしまったら誰が最終的な捕捉の任を負うのか について今今のOS論には目下定説が無い Linux(リーナス)は「カーネルは何があっても例外をスローすんなハゲ、」という 古典的な立場 のやつ、
210 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 23:10:54.58 ID:/dktUqXg.net] 機械語に例外なんてねーよ いい加減なこと言ってんじゃねーや
211 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 23:43:21.15 ID:NQ0xHQya.net] >>206 CPUの例外と言語上の例外との区別が付いてないみたいね。
212 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 00:18:18.68 ID:41g4gqqa.net] >>203 javascriptでメソッドとか探すときにプロトタイプを遡っていく動きがあるけど それをRustのドット演算子(.)がメソッド使える型になるまで自動で参照解決する仕様で 模倣したんだと思う 演算子の特殊な拡張は正規表現とか構文解析のライブラリでたまに見かけるけど どちらかと言えばトリッキーな手法
213 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 02:40:36.34 ID:hZdbeIl+.net] panic上等のredox! セキュリティホール開けるよりマシという理由だった。 >>203 アンチパターンだから通常のコードでは使うな。 トレイトメソッド呼べないからクソって所まではすでに githubのissuesやrust internalsで合意が有る。 js-sysはffi(バインダ)だから仕方ない。
214 名前:はちみつ餃子 mailto:sage [2021/04/22(木) 02:53:02.19 ID:3zTCC3Br.net] >>203 ガイドライン的には Deref はスマートポインタだけにしとけってことになってる。 https://rust-lang.github.io/api-guidelines/predictability.html#only-smart-pointers-implement-deref-and-derefmut-c-deref
215 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 05:58:54.39 ID:WQGVMWvQ.net] 例外の最終的な捕捉をOSの仕事、と書いたのは語弊があったスマンカッタ、 正確に言えば言語のランタイムが最終的に捕捉してプロセスを自発的に終了する (スタックのアンワインドは言語依存性が強いのでそうなっている しかしプロセスが自発的にexit()したら誰がそれを処理するのかというとOSやんけ;;; カーネルの中で例外を生じられたら誰が終了を担保するのかについて OS論的に定説が無いのは真 >>208 いじょ
216 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 06:34:32.34 ID:WQGVMWvQ.net] で、別の観点の話をする、 OSがpanic上等というのはそれはそれでも良いが、 とにかくスタックのアンワインド処理は言語依存性が強いので 例外が通過する関数(ゼロコストの奴も含む)の巻き戻しのためには 関数のアドレスとスタックのアンワインド方法の対応表をランタイムが把握せねばならない というわけでカーネル内の例外を認めると、その例外を最終的に捕捉する奴より 上の関数を全部同一言語・同一コンパイラで書かねばならないという縛りが生じる 現実にはそれで問題など生じないかしらんが、とにかくレイヤー分けに縛りが生じる Redoxの一部をC++(等)で書くことは事実上不可能に、
217 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 13:01:11.46 ID:hZdbeIl+.net] >>212 ,213 なんでカーネルの話してるのに言語ランタイムとプラットフォーム依存の話してるんだ? >>213 Linusがカーネル書くのに信用してないだけで C++でもフリースタンディング書けるだろ。 C++のフリースタンディングは最低限の標準ライブラリは持つからrustのcoreクレートと同じ。 C++ならexception、abort,exitがある。 >>213 がホストとベアメタルの区別がついてないだけじゃないか? あと、redoxのpanicはスタックトレース吐いてx86のhltループするだけだから。 そもそもカーネルで標準のexitなんか呼ぶか。
218 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 13:21:02.53 ID:EDkBlaoV.net] Linux界隈といえばちょうど「マージしたパッチが研究目的にわざと脆弱性を含んだものだったことが発覚して激おこで送ってきた奴らの大学出禁にする」みたいな面白いことが起こってる模様
219 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 13:49:41.54 ID:I9diyMZ1.net] どうせお前らはOS書かないんだからどっちでもいいじゃん
220 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 15:39:04.46 ID:VwSZJGdV.net] linuxの騒動の話はさすがにスレチ
221 名前:デフォルトの名無しさん [2021/04/22(木) 21:04:10.86 ID:ndVhN6HU.net] Cコンパイラゼミ消失問題を思い出した https://twitter.com/rui314/status/1384422532363657221 (deleted an unsolicited ad)
222 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:08:37.40 ID:y/lG5X/l.net] 研究目的だろうがそうでなかろうがわざと脆弱性を含むパッチを簡単にマージできている、という状況が問題なんであって 腹たつから大学出禁にしたった、とやったところで根本的な問題は何も解決しないんだけどlinuxのメンテナンスしてる連中とか linusを筆頭にとか老害頭ばっかりだから自分がスッとすれはそれでいいんだろうな
223 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:21:38.67 ID:5b2Tg2Qr.net] 1) 善意でやってくれてる連中にケチつけんな 2) じゃあお前が根本的な解決とやらをやれ 3) もしくはその根本的な解決方法を彼らに教えてやれ
224 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:33:32.83 ID:Bg0clzlT.net] しーぷらぷらあきらめてどろっぷあうとした ちんちんぶらぶらまるはだかなひとたちが らすとすぱぁとをきめるスレ
225 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:52:38.76 ID:KHhdvM96.net] rust厨八つ当たりw
226 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:31:32.27 ID:yuX3+THA.net] その脆弱性もUAFとかぬるぽデリファレンスとか未初期化領域の使用とか2重開放とか最近の言語じゃ明らかに
227 名前:意図してやらなきゃ起きないようなもんばっかだもんなぁ そりゃC/C++にしがみついてる大先輩方にとっちゃ逆鱗だわな [] [ここ壊れてます]
228 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:34:12.76 ID:Lj3XxxY0.net] そんなもんunsafeしまくれば同じだろ。。 そういう問題じゃないことくらいわかるだろうに、本当の馬鹿だな。
229 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:36:52.46 ID:+YpcBxgU.net] C++とlinuxの話禁止な
230 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 08:52:11.81 ID:Lj3XxxY0.net] rustでOSかける->linus、panicある限り載せねーよ->rust信者発狂
231 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 09:00:00.40 ID:5QBVXmI/.net] 発狂?むしろ歓迎 個人で使うようなアプリは好きなだけパニくれ 使われるアプリはパニくんなカス、これ常識だろ
232 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 10:42:10.47 ID:Lj3XxxY0.net] 言語実装的にもそうなってないよねって話なんだけど、なんだか通じてなさげ。
233 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 11:59:33.30 ID:bX8BaI1F.net] rustにもgoのマスコットキャラみたいなのいないんですか?
234 名前:あめ mailto:sage [2021/04/23(金) 12:13:46.74 ID:hS4CVJbd.net] かにさん
235 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:17:43.73 ID:E6ocica9.net] >>214 >なんでカーネルの話してるのに言語ランタイムとプラットフォーム依存の話してるんだ? カーネル内での例外を許すみたいな立場で話す人が居るから 例外メカニズムが言語ランタイムと不可分な理由は >スタックのアンワインドは言語依存性が強いのでそうなっている (>>212 C言語みたいにそもそも例外メカニズムを持たない言語を使った場合のみ 言語ランタイムと切り離したカーネル設計ができてスキーリ
236 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:23:39.46 ID:Xbep6LJc.net] >>219 だから、脆弱性を簡単に盛り込めないように危険な団体を排除しただけだろ。 普通の対応だと思うけど?
237 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:31:21.77 ID:+YpcBxgU.net] >>231 > >なんでカーネルの話してるのに言語ランタイムとプラットフォーム依存の話してるんだ? > カーネル内での例外を許すみたいな立場で話す人が居るから いません この話はおわり
238 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 12:56:09.67 ID:1/JMNo8Q.net] 「注意すればC/C++でも問題ない」って意見は日本的だよな 人間はミスしないことが前提になっている Rust Foundationのメンバーに言わせればそういう問題ではない 人間はミスするものだってなるんだろうけど
239 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:00:34.48 ID:Lj3XxxY0.net] そのミスの取り除き方のアプローチの違いだっていうことにさえ気づかない馬鹿。
240 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:33:15.21 ID:AZKiGQoD.net] c++でミスするような無能はrustでも使ってろと怒鳴り散らす これが正しいアプローチ
241 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 13:43:27.45 ID:M88Kc634.net] >>229-230 なんで蟹なんだろうな。 PythonユーザーのことPythonistaって言うみたいに RustユーザーのことRustaceanって言うけど、 これCrustacean(甲殻類)からCを取り除いたものなんだな。
242 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 14:28:40.04 ID:9+zMAQDa.net] エビにしろよな カニだとRealtekと被るじゃん
243 名前:デフォルトの名無しさん [2021/04/23(金) 14:58:40.99 ID:ntrIv3TW.net] 大半の人は、C/C++の文法がわかる程度でプログラムを書いているのが現状だろう 何がミスなのかそもそもわかっておらず、Rustを勉強している人と話も噛み合わない
244 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:01:12.26 ID:Lj3XxxY0.net] c++とrustの部分入れ替えてもなんの違和感もない文章だね
245 名前:デフォルトの名無しさん [2021/04/23(金) 15:03:21.83 ID:ntrIv3TW.net] 君にはそう見えるだろうね
246 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:05:01.62 ID:Lj3XxxY0.net] 君にはそう見えないんだろうね
247 名前:デフォルトの名無しさん [2021/04/23(金) 15:05:59.83 ID:ntrIv3TW.net] とりあえず、話が噛み合わないのはわかったでしょ
248 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:07:53.22 ID:9+zMAQDa.net] C++ドロップアウターが希望を求めてやって来るスレ
249 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:13:29.93 ID:ECpnCXVF.net] スレでグチグチ言うよりプログラム書いた方がよっぽど理解できるよ
250 名前:デフォルトの名無しさん [2021/04/23(金) 15:20:14.54 ID:ntrIv3TW.net] C/C++で穴のあるコードを書いてもしょうがないし、それも難しいんじゃないのかな 逆にC/C++の人らがRustコンパイラをすり抜けるヤバいコードを提示してくれたら、一発で口だけじゃなく出来る人だったと示せるだろうが
251 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:28:23.22 ID:mq69qBnk.net] >>155 > Rustに比べたC++の良さは雑に書けるところだって気付いた > やっぱ雑が許されない巨大プロジェクトはRustで、小規模な自分用ツールの類はC++で書いてくことになりそうだ これが何気に的を得てるでしょ コンパイラが安全な方に導いてくれるのはもちろん良いとして、それよりも雑に (あるいは短く親しんだ方法で) 書きたい思惑が優先されるときは C/C++ でやれば良い話で
252 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:38:53.83 ID:CjhKTAAP.net] いや、Rustでラクに書けない時点で勉強が不足してる そのことに自分で気付けるような人だけRust使えばいい 「当を得る」か「的を射る」ことが出来るような人になってほしい
253 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:56:22.07 ID:mq69qBnk.net] いや、単にコード長が C/C++ の方が短く書ける可能性高いでしょ どんなイディオムを駆使しても
254 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 15:59:55.49 ID:mq69qBnk.net] あと近年では「的を得る」は必ずしも誤用じゃないという見方が主流でしょ
255 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 19:45:46.49 ID:ECpnCXVF.net] Rustの方が雑に書ける局面多いと思うけどなぁ
256 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 20:51:53.23 ID:+YpcBxgU.net] C++ vs Rustスレでも作ってそっちでやってくれマジで 不毛すぎる
257 名前:デフォルトの名無しさん [2021/04/23(金) 21:04:58.31 ID:g6tU54WL.net] >>249 そうだね、記述量の多い言語だと思う
258 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 22:37:03.61 ID:E6ocica9.net] Rustのコンパイラと戦って勝ったコードは シンプルでエレガントで簡潔なことが多い らしい mjk、
259 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 23:34:43.49 ID:KS/Kkucz.net] linusはやっぱすげーな 洞察力が違うわ もちろんその道の神的な存在とはいえ たいして知らない言語の弱点を一瞬にして暴いて 論破できるのは凄い
260 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 01:08:35.83 ID:h5KFlu4v.net] >>251 例えばどんなとき?
261 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 01:20:53.45 ID:vtdgUVMq.net] どんなときもどんなときもRustがRustらしくある〜ために〜
262 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:06:24.96 ID:nPKzA798.net] C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ 立てましたので以降そういうのはこっちでお願いします
263 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:33:43.03 ID:AUtfiExa.net] >>258 お前ずっと一人で「他所でやれ」連呼してる奴だろ C++との対立構造はRustにとって無視できないテーマでしょ 正直C++とどう住み分けたら良いのかわかってない奴がほとんどなんだから
264 名前:デフォルトの名無しさん [2021/04/24(土) 08:39:09.80 ID:/opj2hnT.net] C++とRustは対立なんてしてない Rustが怖いC++お爺ちゃんがRustに噛みつているだけでしょ
265 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:48:20.99 ID:MAG7Rri7.net] カーネルの件で完全に拗らせとるな
266 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:54:35.43 ID:8O98k7om.net] > C++との対立構造はRustにとって無視できないテーマでしょ お前のテーマなんてどうでもいいんだよ よそでやってくれ
267 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 08:59:24.96 ID:MAG7Rri7.net] 一般的なテーマだってこともわからんのか。馬鹿だな。
268 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 09:02:59.11 ID:CqGuC/ho.net] リナス「やっぱCが至高、C++もRustもクソ!」
269 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 09:13:04.98 ID:IM8zU0Pj.net] rustもpanicをコアから外せればいけると思うのだが もろ言語のコアなんだよな 痛いところ突かれた
270 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:06:12.73 ID:yJd/gJxx.net] 言語の問題じゃなくてライブラリの問題では
271 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:11:32.69 ID:vtdgUVMq.net] へーpanicってライブラリなんだ
272 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:29:13.61 ID:nPKzA798.net] >>259 仮にその対立構造を認めるにしても 「雑に書くならC++のほうが楽」なんて、曖昧で基準も何も示されない話に真面目に付き合う奴はいないよ そういう奴らのための隔離スレとして用意したから好き放題書き散らせばいい
273 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 10:42:59.04 ID:2MdujosH.net] コード長の話でしょ? どー考えてもC++の方が短いよ んなとこで張り合ってもしゃーない
274 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 11:44:33.91 ID:8fCyRscb.net] 3割ぐらいは長いな https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html median source code gzip (July 2018) Ruby 568 Python 672 C++ 1044 C 1115 Rust 1319
275 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:07:10.57 ID:RPGHdVOi.net] >>258 乙。次からテンプレ入りで >>980 スレ立てよろ ========== 公式 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を学びたい人はまず最初に公式のThe Bookを読むこと https://doc.rust-lang.org/book/ ※C++との比較は専用スレへ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ 前スレ Rust part10 https://mevius.5ch.net/test/read.cgi/tech/1617367084/ ==========
276 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:17:31.75 ID:HBFF7y2e.net] Rustしかまじめに勉強したことないけどいい言語だと思うよ
277 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:21:15.48 ID:8fCyRscb.net] >>272 C/C++で一度ひどい目にあわないとRustの良さは分からんよ 今はまだ分かった気になってるだけ
278 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:39:27.31 ID:aNHhbYgZ.net] Rustはコンパイルでひどい目にあうから問題無い 同じことだ
279 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:56:02.52 ID:1Wwd5OE1.net] Rustのコンパイラに怒られまくる奴は三流プログラマ
280 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 12:59:06.14 ID:hc4SaSPr.net] Rustの文字列変数って、 str1 = str2; のように書いた時、copyではなくmoveでしたっけ?
281 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:03:33.00 ID:kYV5ExS+.net] String型ならmove、&str型ならcopy 文字列リテラルなら後者
282 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:09:43.73 ID:hc4SaSPr.net] >>276 調べてみたら、やっぱり、 let s1 = String::from("hello"); let s2 = s1; とすると、以後、s1は使用できなくなり、使用しようとするとコンパイルエラー になるんだね。こうなるのは珍しいと言えば珍しい言語。 1. Javaだと、参照を入れるだけで同じ実体を指しているため、s2経由で変更してもs1が 指しているものも変更される。 2. JS の 文字列は primitive 型なので「コピー動作」となり、s2とs1は別の実体を 指すことになり、一方を変更しても他方には変更の影響は及ばない。 3. MFCのCStringも意味的にはコピー動作なのでJSと似ているが、高速化のため、 代入後に一度も書き換えなければ、文字列を入れているメモリブロックは複製 されないし、コピーもされない。 4. STL(C++) の std::striingもMFCと意味的には似た動作。 5. BASIC言語でも、文字列はコピー動作。 6. Rubyの場合、Javaと同じで同じ実体を参照しているだけなので、一方を書き換えると 他方も全く同じように書き換わる。コピーするためには、s2 = s1.dup; と書く。 つまり、 a. BASIC、JS、MFC、STL(C++)は似た動作。 b. JavaとRubyも似た動作。 c. Rustは、b の系統に似ているが、s1 が使えなくなるのでちょっと違う。
283 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:13:27.35 ID:vtdgUVMq.net] >>278 無駄なことに時間使ってないでthe bookくらい読みなよ
284 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:20:12.76 ID:hc4SaSPr.net] >> C# は、「b.」の系統で、JavaとRubyと似た動作だね。
285 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:23:38.54 ID:hc4SaSPr.net] >>279 いろんな言語をかじってしまうと、どれがどれだか分からなくなってしまうんだよ。 文字列の s2 = s1 の動作は: a. BASIC、JS、MFC、STL(C++)は似た動作。中身をコピーする。 b. Java、Ruby、C# が似た動作。参照を代入するだけ。コピーしたければ明示する。 c. Rustは、b の系統に似ているが、s1 が使えなくなる。
286 名前:デフォルトの名無しさん [2021/04/24(土) 13:27:17.48 ID:hc4SaSPr.net] >>281 Javaの場合、Stringは参照しか出来ないが、Rustの場合は、「String型」だけでなく、 「Stringへの参照型」も使えるんだっけ (let s3:&String ??) ?
287 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:36:44.63 ID:hc4SaSPr.net] >>281 C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、 moveで、それ以外の時は copy。 一方、Rustだと、「デフォルト move」なので、基本的には move 動作。 cooy したければ、x = y.clone; と書くのかな。 色々ややこしい。
288 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:39:26.22 ID:glcm53ed.net] >>283 > C++11以降は、x = y と書いた時、y が捨ててよいと判断した場合は、moveで、それ以外の時は copy。 そんな親切け??? 左辺値同士だと明示しないとmoveしてくれないだろ 最適化次第ではしてくれるの?
289 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:43:36.80 ID:hc4SaSPr.net] >>284 えっと、関数の戻り値が構造体型(or クラス型)の場合、右辺値と解釈されるので、 s2 = func(xxx); 見たいにした場合は自動的に move代入されたと思う。 それ以外だと、たいていは、s2 = std::move(s1); のように書かなければ copy代入になるんじゃないかな。 s2 = func(xxx).s; のようにした場合も move代入になるはず。 自信は無い。
290 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:47:10.36 ID:Kvw1J2lw.net] >>285 RVOは全然違うぞ s2の構築にコピーコンストラクタを使わなくなって早くなるというだけ ムーヴコンストラクタはそもそも出てこない
291 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 13:47:25.73 ID:hc4SaSPr.net] >>285 自分の記憶だと、一時オブジェクトも右辺値だから、 s2 = std::string("xxx"); ともし書いたとしたら、右辺は右辺値になるのでmove代入になるはず。 s2 = s3 + s4; みたいにしても、右辺は関数の戻り地と解釈されるので右辺値になるので move代入になるはず。
292 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 15:48:01.23 ID:QvmQEBVA.net] Rustってコードをフォーマットしてくれる機能があるからいいね これこそモダンな言語だと思う
293 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 16:01:24.29 ID:93XQhLV9.net] C++と比べりゃ大抵の言語はモダンだろうよ
294 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 16:18:04.79 ID:rGfKetgv.net] しーぷらぷらあきらめてどろっぷあうとした ちんちんぶらぶらまるはだかなひとたちが rustすぱぁとをきめるスレ
295 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 16:38:27.41 ID:MAG7Rri7.net] lintツールも満足に使えない人が喜んでるのかね
296 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 17:14:02.73 ID:yJd/gJxx.net] 非Syncなデータに複数スレッドからアクセスするコードに警告だしてくれるlintある?
297 名前:デフォルトの名無しさん mailto:sage [2021/04/24(土) 18:12:05.46 ID:6780eEd1.net] へーそれコードをフォーマットしてくれる機能なんだ
298 名前:デフォルトの名無しさん [2021/04/24(土) 22:25:57.79 ID:EY30SvcB.net] >>293 君は、松永の論文を読んだのかい?
299 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 11:06:21.68 ID:M4WxeD2J.net] 質問です let a = 10; let b = &a; let &c = b; としたときに変数cは数値の10になるのですが cの前にある&は参照外しの効果があるということなのでしょうか?
300 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 12:30:46.33 ID:yYRREqIx.net] >>295 pattern matchとdestructuringでそうなる 3行目でbの型が&Tの場合に`&c`にマッチさせたらcの型はTになる dereferenceの意味で「参照外し」と言ってるなら意味は違うかも
301 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 13:38:30.57 ID:rtrHqrCb.net] >>296 横から失礼するけど、なるほど。 let &c = b; は、C++の int &c = b; とはかなり違った解釈をされてしまうんだね。後者の場合、&は参照型の 記号で、cの型は、intへの参照型になる。Rustで似たことをしたいなら、 let c:&i32 = &b; だったっけ?
302 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 13:41:33.98 ID:C031ZmfT.net] String::fromとString::newの使い分けを教えてください
303 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 15:13:55.60 ID:3Jdhcm8q.net] >>297 cも参照にしたいなら単純に let c = b; でいいはず let &c = b; は let (x, y) = (1, 2); と似たような代入式だからbが参照型(かつ被参照型がCopy可能)じゃないと コンパイルできない >>298 String::newは引数取らないで空文字列を作る String::fromは引数に文字とか文字列を取って同じ内容の文字列を作る リファレンス(↓)読みなさいと言いたいけどRustのリファレンスって traitとか理解しないとなかなか読みこなせないよね _ttps://doc.rust-lang.org/std/string/struct.String.html
304 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 15:19:02.60 ID:yYRREqIx.net] >>297 >let c:&i32 = &b; >>295 の続きならbがすでに&i32なので let c = b; か let c: &i32 = b; C++でもStroustrupに従ってint& c = b;と書いとけば同じ意味にとれなくもない
305 名前:デフォルトの名無しさん [2021/04/25(日) 15:31:18.79 ID:2bakgkUg.net] 意図もわからずなんとなく動くからそのメソッドを使い、借用をつければなんとなく動くから 借用し、変更する予定はないけどmutし、ここはエラーだからとpanic!し、補足するなと言われているのに catch_unwind/recoverして、血の涙で泣きながら渡されたソースをシコシコ直すおまいら・・・
306 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 16:19:28.48 ID:S2tV53BX.net] >>299 >>300 なるほど、Rustでの b は、C++で言えば「参照」ではなく「ポインタ」の「ようなもの」に なっているので、 let a = 10; let b = &a; の状態だと、 let c = b; か let c: &i32 = b; か let c: &i32 = &a; で c を b と同じような「Rustでの参照型」の変数に出来るわけね?
307 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 16:55:56.06 ID:S2tV53BX.net] >>302 C++で書き直すと、 int a = 10; int *b = &a; の状態だと、 int *c = b; か int *c = &a; で c を b と同じような「C++のポインタ型」の変数になる。 ということだね。
308 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:24:01.78 ID:Ef2Yns/P.net] >>301 割とこの未来はもう始まってるんだよな。。rust書き逃げは結構ある。。
309 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:25:49.32 ID:vrxr0D/D.net] 悪用できない道具など無い
310 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:30:22.71 ID:VydP0zWV.net] 構造体があるじゃん a.b.cの更新参照もってて 同時に a.b.dの更新参照とって 両方更新しようしたら aの更新参照が2箇所にあることになるからできないの? 使い物にならんくない?
311 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:40:32.44 ID:M4WxeD2J.net] >>296 なるほど match式と同じ様に振る舞うのね
312 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 17:58:15.33 ID:In1fvQYU.net] >>306 更新参照ってのが&mutのことならできる時とできない時がある 同じ関数内で &mut a.b.c と&mut a.b.d を取ることはできるけど &mut a.b をとって &mut a.b.d を返す関数を呼び出した後は a.b.d にアクセスできない これは関数呼び出し時点で a.b が borrow されると判断されるため このあたりを何とかしようとする 議論は昔からあるけど特に進展なし https://github.com/rust-lang/rfcs/issues/1215 実用的にはデータ構造の設計を見直すか、RefCell でくるむのが良いと思う 後者は &a.b をとって RefMut を返す関数にするってことね
313 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 18:57:01.34 ID:1PPsE
] [ここ壊れてます]
314 名前:J27.net mailto: 文字列についてなんかわかりにくいのだけど C++に例えると strはchar a[len] Stringはstruct String { long len; char* str;} &strはchar* str=&a[2] このイメージで問題なし? [] [ここ壊れてます]
315 名前:デフォルトの名無しさん [2021/04/25(日) 18:59:07.81 ID:2bakgkUg.net] 悪用できない道具など無いキリッwwwwwwww
316 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:04:09.95 ID:3Jdhcm8q.net] >>308 細かいけど関数の例はRefMut返すより&RefCellで返す方が安全な気がする RefCell本体の参照をシェアするだけなら二重で呼んでも大丈夫だし RefMut作るのは変更が必要な瞬間だけに限定したい
317 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:28:29.93 ID:gk8/Gpze.net] >>309 &strはlenも持ってる fat pointerでぐぐれ
318 名前:デフォルトの名無しさん mailto:sage [2021/04/25(日) 19:34:37.74 ID:bkWFj8iO.net] RefCellについての良いドキュメントや、本などがあれば教えて。
319 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 10:05:04.39 ID:HMswZhLH.net] f3がコンパイルエラーになる理由がわかる方います? fn f2<'a, 'b, T>(x: &'a &'b mut T) -> &'a T { x } fn f3<'a, 'b, T>(x: &'a &'b mut T) -> &'b T { x } &'b mut TがTに変換可能で &'a Tから&'b Tが変換不可だから?
320 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 12:08:58.70 ID:DOIDJi7O.net] >>314 ‘aが’bをoutliveするかどうかわからないからじゃない? fn f3<'a: 'b, 'b, T>(x: &'a &'b mut T) -> &'b T { x }
321 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 12:53:56.61 ID:SHVW/hag.net] リーナスのRustのパニックがどうのはCを前提としたプロジェクトとRustの流儀がマッチしないって話に見える 逆にRustの流儀に沿ってデザインされたシステムなら問題は起きない可能性もある てかそういう研究はされていないのかな?
322 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 12:57:40.62 ID:cN+lbm0F.net] 全部rustで書けばいいってか。馬鹿すぎる発想だな。
323 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 13:02:47.63 ID:+85I2LX6.net] パニックってFFI Boundaryさえ越えなければベアメタルだろうが使っても問題ない認識なんだけど間違ってる?
324 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 14:09:26.26 ID:u7NjNSbC.net] >>316 そのシステムの基礎を作るのがOSで、Rustの流儀に従うようにする 基礎の部分を作るために Rust の流儀を前提とした言語で書くのは出来ない。 C言語は素朴なマシン語に直るために基礎を作ることが出来る。
325 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 14:16:19.84 ID:ie84aLaE.net] >>318 別に使って問題ないし、ベアメタル用のパニックハンドラなんかもいろいろあるよ。
326 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 14:33:09.14 ID:DOIDJi7O.net] >>313 https://doc.rust-lang.org/book/ch15-05-interior-mutability.html https://ricardomartins.cc/2016/06/08/interior-mutability https://stackoverflow.com/questions/30831037/
327 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 15:35:40.97 ID:EKg1PdAE.net] >>317 いきなりLinuxやWindows級のOSを作るのは現実的ではないが 組み込み用のOS程度なら馬鹿げてはないだろう
328 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:30:20.34 ID:ONuspOvn.net] >>315 回答ありがとうございます 確かに'a: 'bを付けるとコンパイル通りますね xの変換については &'a (&'b mut T) → &'a T → &'b T ('a: 'b指定により可能) という考え方で良いのでしょうか
329 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 18:39:37.14 ID:ONuspOvn.net] >>323 いや自分で書いてて全然理解できてないです 下記変換は無しですかね。。 &'a (&'b mut T) → &'a T
330 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:00:38.89 ID:+85I2LX6.net] >>324 &'a &'b T の lifetime は 'a と 'b の短い方になるから むりやり書こうとすると min('a, 'b) みたいになる 'a: 'b というのは 'a が 'b より長生きするという意味で この場合 min('a, 'b) = 'b になるので f3 が valid になる なお、&'a &'b T については暗黙的に 'b: 'a とみなされてるからコンパイルが通る ('b: 'a の時しか &'a &'b T 型の値が作れないため)
331 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 20:05:03.48 ID:cN+lbm0F.net] >>322 じゃあ自分で作ってみりゃいいじゃん。 linuxなんかにいちゃもんつけてないでさ。
332 名前:デフォルトの名無しさん [2021/04/26(月) 23:42:53.23 ID:y3Z2xzaE.net] >>301 自分で書いてて全然理解できてない奴らが量産されて、キーボードを叩く拳に血が混じりながら 意味不明なコードを誰かが直す。なんというおそろしい未来かw
333 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 23:56:56.13 ID:MHmHz52r.net] linuxにいちゃもんつけてる人はいないが rustユーザーがlinuxにいちゃもんつけてると主張する人はいる不思議
334 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 01:41:47.11 ID:Wan/QADt.net] 来年は組み込みRust元年になるやで
335 名前:デフォルトの名無しさん [2021/04/27(火) 02:20:03.39 ID:+/hUQLiN.net] あわしろ氏もそう言ってますね。
336 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 02:20:38.76 ID:GJuK6dTy.net] 何で今年じゃないの?
337 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 02:36:39.16 ID:lIgwswD1.net] panicのせいで実質組み込みでも死んじゃったな linusやりすぎだぞ
338 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 02:51:16.77 ID:53lThlBD.net] >>332 Linux カーネルで受け入れられないからと言って組み込みで panic が使えないわけじゃないでしょ。
339 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 08:06:21.79 ID:C32SFGMy.net] >>325 https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=4f6ac5931e40d5e3dcf41712634e9390 元ネタこれなんですが min('a,'b)的な考え方だと確かにf3について納得できる気がしますが、今度はf1が通るのがわからなくなります f1を&'a &'b Tの参照がひとつ外せて&'b Tと考え f0は'b:'aなので&'b Tから&'a Tに変換可能と考えると f2が通ってf3が通らないことが理解できない rust難しい。。
340 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 08:11:26.79 ID:Xxuu6Rq/.net] >>326 だから作るにあたって参考になる資料とか実装例はあるのかって話なんだが OSを作るみたいな資料はあってもその多くはCとアセンブラを前提としているし それを参考にしたらC流になってしまうだろ
341 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 08:43:32.76 ID:W9X9APV9.net] 実用的なOSとしてはこの辺かな。 https://github.com/tock/tock あとは研究論文レベルでは、Rustの所有権システムをOSの権限管理周りに使って堅牢なシステムを作ろう、みたいなのもある。
342 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 12:44:22.23 ID:/+bIFNU8.net] こんなんCで書いてるのと変わらんだろ。。 https://github.com/tock/tock/blob/master/arch/cortex-m/src/lib.rs
343 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 13:52:57.49 ID:B18ZzSzj.net] >>337 インラインアセンブリでもRustを使うとコンパイル時に強力なチェックが! あるわけないよな…Cでいいと思います
344 名前:はちみつ餃子 mailto:sage [2021/04/27(火) 14:21:05.00 ID:gsHoUi4w.net] OS 全体の中でも低レイヤ寄りの部分はしょうがないでしょ。 どうせほとんどインラインアセンブリなら C でもいいが Rust で駄目という理由にもならんし。
345 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 15:07:33.38 ID:V9b4VlmB.net] >>339 Rustは書き辛いし、生成されるコードや意味解釈に闇がある。
346 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 15:26:51.13 ID:+CyfYLC3.net] 言語の設計思想をOS全体に広げて実用的に成功した例ってあるの? LispOSみたいなのは全部失敗してるじゃん Cはもともとアセンブラで書かれてたOSを高級言語で書き直せるように 言語自体を後から設計したものだからね Rustがシステム記述言語として使われたいなら、Linusに意向に100%従って 言語仕様をどんどん書き換えていかないとダメ絶対
347 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 16:09:23.12 ID:sPb/VVK7.net] ここまでRedoxの話を避けているのはなぜ
348 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 17:15:40.85 ID:MBTyAJrN.net] Redoxとか使ったことないし……
349 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 19:00:31.49 ID:UNWScvKY.net] >>341 forth?
350 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 19:17:36.18 ID:SeQzLHjb.net] forthとかなつかしいなオイ
351 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 20:00:34.98 ID:B18ZzSzj.net] FORTH作者「FORTHには申し訳ないことをした…」 ホントだよ! FORTHがきちんとケアされ続けた世界線を見てみたい
352 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 00:25:46.13 ID:zZPOP3tR.net] forthって今も使われとるのだろか。。
353 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 01:56:40.25 ID:RzWjm9zz.net] 昔はBIOS とか forth で書かれてたけど今はどうかなー
354 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 03:06:12.66 ID:k8H8q1SE.net] Rustは配列に添え字アクセスする時、必ず境界チェックされるよね?
355 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 06:10:01.83 ID:Er4sy6AA.net] 言語設計とOSが一体ていうのがどのくらいまでを指すかにもよるけど Smalltalk は元々は言語=OSみたいなシステムだったな
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 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています