Rust Part6at TECH
Rust Part6 - 暇つぶし2ch200:デフォルトの名無しさん
18/09/05 20:07:45.33 L3ODpJW1.net
ウィジェットってこの文脈だとどいう意味?

201:デフォルトの名無しさん
18/09/05 21:04:58.50 NRWr9JTz.net
OS(フレームワーク)ネイティブのGUIコンポーネントって意味だと思う。
というか、こっちの意味での利用のほうがコンピュータ的には一般的だったかと。

202:デフォルトの名無しさん
18/09/05 22:08:13.79 s4eOolF2.net
Windows向けRustのリンカがlldになるのはいつかな

203:デフォルトの名無しさん
18/09/06 00:48:46.68 az09claK.net
GIMPはMotif・・・。うん。わかってるよ。
>>191
msvcツールチェーンでビルド面倒くさいから頑張れ。

204:デフォルトの名無しさん
18/09/08 20:22:07.67 2/RJPWQT.net
何かやるのに言語からつくっちゃえって、どうなんだろ。

205:デフォルトの名無しさん
18/09/08 21:39:35.66 r9+/L/Cg.net
なにかやるわけでもないのに言語だけ作るほうが珍しい気もするぞ。
で、どの言語のこと言ってるの?

206:デフォルトの名無しさん
18/09/08 21:50:01.66 obhERXW7.net
>>205
Rust

207:デフォルトの名無しさん
18/09/08 22:35:38.88 6Sgjlvo2.net
Cの事じゃないのか。

208:デフォルトの名無しさん
18/09/09 17:19:35.86 J1tV93ug.net
GUIといえばlibuiはどうだろう?
というかRustでGUIって面倒くさそう

209:デフォルトの名無しさん
18/09/09 18:05:38.77 4xLE2iMW.net
面倒臭いと思うよ
GUIだと大抵はイベントハンドラ多用する場合が多いから
Rustだと多分クロージャを渡すことになって
キャプチャする変数の所有権が絡んできて面倒なことになる
可能な限りデータを全て不変にして参照カウンタ使うのが一番楽そう
誰かもっと良い方法知ってたら教えて

210:デフォルトの名無しさん
18/09/09 18:56:16.25 UvF45WNM.net
キャプチャ必要かな。しなけりゃいいんじゃね?
RxやReduxみたいなのならRustでもできるような気がするが。

211:デフォルトの名無しさん
18/09/09 20:18:26.49 0/8ezFqB.net
wasm来たらhtmlでいいじゃん

212:デフォルトの名無しさん
18/09/09 23:57:56.69 SgQ7ecDz.net
>>209
相互/循環参照があり得るから参照カウンタじゃ無理だよ。
メモリ管理面の煩わしさを考慮するならjavaみたい
にイベントハンドラをtraitにしてユーザーデータ自身に
実装させればいいけど、今ではこのアプローチ自体が煩わしいと思う。
あと参照カウンタの場合一度に多すぎる解放処理が発生して
UIがもたつく可能性があるね。
トレーシングGCなら必要ないなら遅らせるからこういう事は起きない。
rustでトレーシングGC使う場合rootingはプログラマが行う必要があるから
自前でメモリ管理するのと同じだし、それ以外にGUIのシーングラフ自体にトレーシングGCがいるね。
ffiで既存のgui利用してrustからはデータ渡すだけにするのが簡単だと思う。

213:デフォルトの名無しさん
18/09/10 14:20:14.67 WMxfZQty.net
yewとrelmが気になる

214:デフォルトの名無しさん
18/09/10 19:39:57.20 3ZIEHwy7.net
ちなみにWEB開発のサーバーサイドでRustって現実味あるの?
Goがたまに使われてるから、Rustにもチャンスあるのかなと思ったけど

215:デフォルトの名無しさん
18/09/10 20:02:06.79 WGo2tHWR.net
君が作ればチャンスは無限大

216:デフォルトの名無しさん
18/09/10 20:44:31.47 /rk0ECVs.net
Goは手軽さと性能のバランスが丁度いいから

217:デフォルトの名無しさん
18/09/10 21:33:40.66 nnRzz3th.net
現実味の程度による

218:デフォルトの名無しさん
18/09/10 21:58:39.88 ghTi64DR.net
予算と工数的に競技志向のFPSのバトルサーバならRustも現実的だけどマッチングサーバなら現実的じゃないとかありそうよね

219:デフォルトの名無しさん
18/09/10 22:17:46.90 Jc2GxaH/.net
現実になるかどうかは言語じゃなくでプログラマ次第でしょ
俺は現実に使ってるけど

220:デフォルトの名無しさん
18/09/10 23:11:54.52 Vv+pRNC5.net
それ言い出したらアセンブラでもcでもプログラマ次第だわな。

221:デフォルトの名無しさん
18/09/10 23:16:12.14 ieMEhN8t.net
言語の決定権が

222:デフォルトの名無しさん
18/09/11 00:22:51.64 6iElNWnR.net
適材適所で言語を選べるか?って事でしょ

223:デフォルトの名無しさん
18/09/11 00:59:46.27 S/u0i0hH.net
Rubyでいう
v = [1, 2, 3].map(){|e| e.to_f }
をrustで書きたくて、以下のように書いたんだけど、
let v = [1, 2, 3].iter().map(|x| *x as f32).collect();
vの型が推論できなくてコンパイルが通らない。助けて!

224:デフォルトの名無しさん
18/09/11 08:51:05.30 EMXKp1xw.net
let v = [1, 2, 3].iter().map(|x| *x as f32).collect::<Vec<_>>();
とか
let v:Vec<_> = [1, 2, 3].iter().map(|x| *x as f32).collect();
collectをジェネリックにする代わりに型推論できなくするのは良いアイデアだったのか

225:デフォルトの名無しさん
18/09/11 22:15:57.71 3LhuO07g.net
rust的にはturbofish使うもんだけど型注釈をよく見かけるね。

226:デフォルトの名無しさん
18/09/11 22:25:10.48 gyUsDA80.net
>>224
参考になりました!
これどちらも vec<f32> になるんですよね?
ヒープ確保じゃなくてスタックの配列への変換は無理ですかね?

227:デフォルトの名無しさん
18/09/11 23:40:31.29 gUgwDOju.net
>>226
URLリンク(stackoverflow.com)
Cでも駄目で、C++ならオッケーだったけな。Rustはできなかった。
もしできるようになっても、その関数の下にどれくらいコールスタックが積まれているのか、
この関数の上にどれくらい呼び出しが控えているかを熟慮しないとすぐstack overflow起こすんで、よっぽどクリティカルでなければやらんほうがええんじゃないか

228:デフォルトの名無しさん
18/09/12 00:27:32.15 NOD5QCpZ.net
>>227
逆やー。
Cではオプション扱い、C++では不可

229:デフォルトの名無しさん
18/09/12 01:54:03.48 +PSin/UV.net
>>228
追いかけきれてるわけではないけど、
allocaについても言及されているrfc#1909の第一段階が、8/19にマージされてるっぽい。
近い将来にallocaが完全サポートされる感じなんですかねぇ?

230:226
18/09/12 03:38:36.44 SKJk4QVS.net
んーん、なるほど。
Rustには現状、スタックを伸長するalloca相当がないから件の場合、固定配列を求める事は出来ないってことですかね。

231:デフォルトの名無しさん
18/09/12 19:11:41.82 VZx7VRPz.net
cloneていつ付けてる?
不用意にcloneするのを避けたくて最小限にしていたんだけどテスト書くとき辛い
derefでcloneされるのはcopyついているやつだけ?

232:デフォルトの名無しさん
18/09/12 20:48:13.21 SMBzO3VC.net
テストの時辛いってのは
↓のアトリビュートじゃ解決できないの?
#[cfg_attr(test, derive(Clone))]

233:デフォルトの名無しさん
18/09/12 20:56:43.30 VZx7VRPz.net
omg
それでいきますわ!ありがとう!

234:デフォルトの名無しさん
18/09/12 22:49:53.02 b/qs2bwP.net
>>224
> 型推論できなくする
できるよ。
rust by exampleを例にすると
URLリンク(play.rust-lang.org)
上記の`i32::from_str`や`<i32 as std::str::FromStr>::from_str`のi32を見て推論してる。
ただのstd::str::FromStrでは推論できないってエラーになる。

235:デフォルトの名無しさん
18/09/13 18:02:19.58 k7xTaVQM.net
低コストで探索できるらしいB+木ってなんぞや。ググるといっぱい出てくるがどいつもこいつも抽象的
「で、それがどう活用できるのか?」と言う疑問が解決しない
もちろんRustでコーディングする予定

236:デフォルトの名無しさん
18/09/13 20:57:57.27 uqZEQXfr.net
>>235
てけとーにググってきたやつ
URLリンク(christina04.hatenablog.com)
で、B+ツリーはリーフノード間にリンクがある構造。
リンクがあると何が嬉しいかというと、
データベースで値の範囲で検索する際、先頭が見つかればリンクをたどってレコードが抽出できる。一例として。

237:デフォルトの名無しさん
18/09/13 21:29:20.76 IjhCAeem.net
B木とそのバリエーションは、ディスクのように一定の大きさを持ったブロック単位で読み書きする
記憶装置上に置くのに適した木構造。
そういう使い方をしないんだったら効率が悪い木構造でしかない。

238:235
18/09/13 22:11:03.43 bNNEFAck.net
ありがとう
>>236
そのような説明はいっぱい出てくるんですがそれを実用へ落とし込むのに必要なピースがわかりません
データベースやファイルシステムを作れる人ならその説明で十分なのだろうと思いますが
自分はそのような経験がないので「ファイルシステム」や「B+木」等のキーワードからその不足分にたどり
着けないでいます
>>237
まさしくその用途を考えています
・大容量のボリュームを扱う (数百GB~TB)
・ファイルをたくさん入れる (万~)
・ファイルの中身へのアクセスコストが低い
・充填率に優れる
・フラッシュメモリベースのメディアで使用する
みたいなファイルシステムを作れないかなーと。個人が扱うファイルシステムだとFAT32あたりがよく使われると思いますが
そろそろ最大ボリュームの上限を突破しそうだし、ディレクトリの探索が容易じゃないし(特にLFN使用時)
充填率も良いとは言えないしと、いろいろ課題が多いのでいっそ俺ファイルシステムを作ろうかと

239:デフォルトの名無しさん
18/09/13 22:24:39.91 IjhCAeem.net
B木の実装は、共立出版の「ファイル構造」という本が詳細に分かりやすく説明されていてよかった。
残念ながらもう絶版らしいが。

240:デフォルトの名無しさん
18/09/13 23:23:13.30 pq1/pryD.net
bit別冊は大部処分したけど似た本はもう無いと判断して捨てなかった一冊
今ファイルシステムの勉強しようと思ったらLinuxや*BSDのソースコードよむぐらいしか無さそう

241:デフォルトの名無しさん
18/09/14 00:34:41.33 6kvA3LxK.net
>>239
英語版ならまだあるようだし、pdfでも見れるな。

242:デフォルトの名無しさん
18/09/14 11:13:17.17 hSQdDwhc.net
1.29.0来たね

243:デフォルトの名無しさん
18/09/14 17:04:14.02 zZtMiOUI.net
来たー

244:235
18/09/14 22:55:36.33 L0IQQp+4.net
ありがとう
>>239-241
尼のマケプレの値段ヤバイですね。原書?のPDFは入手できたので見てみます
>今ファイルシステムの勉強しようと思ったらLinuxや*BSDのソースコードよむぐらいしか無さそう
うへぇ。ファイルシステムドライバの仕様がどうなっているのかを理解した上で、ジャーナリングや
スナップショットなどの付加機能を分離しつつ読む必要がありそう
オープンソースといえどもこの辺の情報はお世辞にも豊富ではないのもつらいところです

245:デフォルトの名無しさん
18/09/14 23:38:15.74 SIPw8V9s.net
まあ読むならext3ぐらいからじゃないかな?
losetupやbrdで小規模なデバイス上にmkfsしてhexdump使って媒体構造見るとか
system tapやblktraceで処理やアクセス箇所見るとか
crashでカレントプロセス覗くとか
printk仕込んで処理フロー確認するとか
昔勉強したけど他に何やったかもう覚えてないや

246:デフォルトの名無しさん
18/09/14 23:52:28.71 KYDDV16J.net
まさかこんなところで共立出版というガチな名前を聞くとは思わなかった。
ねねっちがいるのかこのスレには。最近Rと統計ばっかだよねあそこ。
ところでファイル構造の古書店の通販見つけたけど長すぎてurl貼れない。

247:デフォルトの名無しさん
18/09/15 00:11:05.25 UUtHx4qg.net
共立出版って大学数学やら物理やらの教科書としてはまあまあ使われてるんじゃない?

248:デフォルトの名無しさん
18/09/15 00:35:58.43 DqLr8CXZ.net
テキストとワインバーグ本とすべての人のためのJavaプログラミングのところだね。

249:デフォルトの名無しさん
18/09/15 03:08:49.57 aty0PGwQ.net
>>247
共立出版で情報系の教科書としては次の2つのシリーズは好著が多い良いシリーズだ
・情報数学講座
・アルゴリズムサイエンスシリーズ
あと、共立出版でプログラミングの本と言えばとっくに時代遅れになっているが
カーニハン&リッチーの『プログラミング言語C』は外せない
恐らくこの訳書は初版と第2版とを合わせると、共立出版の情報系の書籍の中で圧倒的な部数を稼いだはず
それ以外にもカーニハン本の翻訳を日本で最初に出したのは共立出版だ
『プログラム書法』、『ソフトウェア作法』、『プログラミング作法』とね
今の若い人たちは存在していたことすら知らないだろうけど、共立出版は bit という月刊誌を出していた
これはB5版のころはソフトウェア技術者にとっての教養雑誌で、理論的な話題の記事も載せていたし
チューリング賞の受賞記念講演の翻訳も毎年載せていた
上に名前が出てた『ファイル構造』は元は bit誌の別冊か臨時増刊として出版されたものが
需要が多かったので増刷を機に単行本化されたものだ
だが部数が徐々に減ってきたのをテコ入れとばかりに編集長が変わって、版型をB5版からA4版に変え
記事も教養的なのから実用的なもの中心に変えてしまったら、昔からの読者の多くが離れて
急激に廃刊(建前上は休刊)に追い込まれた
bit誌の廃刊以降、共立出版の情報科学系の書籍の出版点数はかなり減少したような印象がある
現在の共立出版は数学書の出版に特に力を入れているみたいだね

250:デフォルトの名無しさん
18/09/15 08:36:15.98 h1bufCaZ.net
bit本誌、いまだに捨てられなくて本棚1段占領している。
ユニマガは引っ越しの時に全部捨てちゃったが。

251:デフォルトの名無しさん
18/09/16 01:33:00.78 w5/Hy2b1.net
rustの複数行文字列って空白消されちゃうの?
URLリンク(stackoverflow.com)

252:デフォルトの名無しさん
18/09/17 00:20:05.94 XaZEKwwx.net
>>251
そんな話してない

253:デフォルトの名無しさん
18/09/17 20:15:25.23 aiBl5TGk.net
ここで質問しても許されるのでしょうか?ダメそうなら、申し訳ないです。
S式を使って遊ぼうとしてRustで見様見真似で書こうとしたんですが、コンパイルすらできません…。
ヘッタクソなコードで恐縮ですが、以下の52行目で「`s` does not live long enough」と怒られます。
URLリンク(pastebin.com)
まず、's'がスタックに確保されていて、parseから返った先で(つまり、スタックが解放されたあとで)
sを使う可能性があるから駄目だと言っているという認識ですが、正しいのでしょうか。
また、どのように対処すればよろしいでしょうか。
たぶん、根本的なところから理解できていないのだと思いますが、ご教授お願いいたします。

254:デフォルトの名無しさん
18/09/17 22:18:18.83 faCDAGdL.net
Nodeがsへの参照を持っているのにsが解放されちゃうからじゃないかなあ

255:デフォルトの名無しさん
18/09/17 22:22:00.90 faCDAGdL.net
みたかんじsymbolを&strじゃなくてStringにしてsをmoveさせればよいと思うけど

256:デフォルトの名無しさん
18/09/17 23:12:20.37 vky9u9CI.net
>>253
>sを使う可能性があるから駄目だと言っているという認識ですが、正しいのでしょうか。
合ってる。
sはparse関数の中で確保されてる。
そのsの借用(as_strしてるから借用することになる)をparse関数の外に出そうとしてるから
sの借用がsより長命になるのでrustではエラーになる。
sはparse関数の呼び出しが終わると解放されるからこれはダングリングポインタだよね。
>また、どのように対処すればよろしいでしょうか。
この場合、Node<'a>は文字列のsymbolフィールドを所有する側だから&strじゃなくてStringにすればいい。
apiの設計の時点でownd valueとborrowed valueを意識すればいい。
あとleftとrightが借用になってて、これはこれで設計的に間違いじゃないんだけど問題出るかも。

257:デフォルトの名無しさん
18/09/18 22:40:54.20 1KtNrcTb.net
コピーのコストが嫌だからとりあえず参照にしとこう、の精神は早々に破綻するよね
似たようなパーサ書いてて同じようにコンパイラにボロクソに言われたことがある
それ以来、このデータは誰が持っているべきなのか?を意識して書くようにして、
コンパイラに怒られたら「何か抜け道がきっとある」って思うようになれたし、リファレンス探すと大体解決するようになったよ

258:デフォルトの名無しさん
18/09/19 11:41:33.60 PupZqwJJ.net
The Creator

259:デフォルトの名無しさん
18/09/20 01:17:05.56 U3x/57bG.net
皆さん、お返事ありがとうございます。
とても参考になります。
もう少し、頑張ってみます。
# ピンポイントで質問できるのは、本当にありがたいです。

260:235
18/09/21 16:03:14.74 orU60ay9.net
ありがとう。File Structuresを眺めていますが英語なのであまりはかどらないです
二分木およびその発展系の説明は十中八九キーとして数字が使われているけど
ファイルシステムの入力はファイルパスであり可変長の文字列。この部分はどう埋めればいいのだろうか
ハッシュテーブルでも使えという話なのか?しかしそれならハッシュテーブルを使ってファイルのメタデータを
探索してしまった方が早そうだけどそういう問題ではないんだろうな

261:デフォルトの名無しさん
18/09/21 21:05:15.62 8EH2XxrU.net
最近でたオライリーの本って
Rust公式ドキュメントの2018でもSecond Editionでもなく
明らかに初版が元になってるよね時期的に

262:デフォルトの名無しさん
18/09/21 21:54:00.31 QjgEKJ4o.net
>>260
ブロック管理に使うからキーは数字で問題ない

263:デフォルトの名無しさん
18/09/22 11:42:21.78 wuQrrLSf.net
>>261
つまりオライリーの本は地雷?

264:デフォルトの名無しさん
18/09/22 12:08:43.13 avc67xv+.net
Second Edition出てるんだっけ?
ググってみても First Edition, Third Release が 2018-6-22 としか見つからないんだけど。

265:デフォルトの名無しさん
18/09/22 12:28:30.62 zH/ripxa.net
目次の構成はSecondに近いか?
サンプルプログラムの発行時期は10ヶ月前だからそんなに古くはないのかもな
オライリー原書
URLリンク(shop.oreilly.com)
公式ドキュメント日本語訳
URLリンク(doc.rust-jp.rs)
ちな最新の2018版ってGithubみた感じリアルタイムに更新されてるっぽいな
URLリンク(doc.rust-lang.org)

266:235
18/09/22 12:29:23.44 +vE2oHEK.net
>>262
ありがとう。あれ?自分が勘違いしているのかな
B+木やB*木をファイルのメタデータの探索に使っていると思っていたけどそうではなくデータを格納しているブロックの探索に使っているということ?

267:デフォルトの名無しさん
18/09/22 13:25:51.18 avc67xv+.net
翻訳元のISBNと原書3rd releaseのISBNが違うことは確認したけど、たぶんこのerrataに載ってる修正くらいだろう。
URLリンク(www.oreilly.com)

268:デフォルトの名無しさん
18/09/22 23:23:20.56 c8wHmvAd.net
>>261,265
オライリーのカニ本の初版一版は1.17.0。TRPLの日本語訳は相当古い。
2018はverでいうと1.31.0に相当する。いまのstabuleは1.29.0。
それにTRPLでもまだ文書化されてない機能あるしな。
非初学者向けならStep Ahead with Rustもある。

269:デフォルトの名無しさん
18/09/23 00:32:53.25 v7lwqtna.net
6週間で0.1バージョン上がるから一年半前のバージョンか
進化はえーな

270:デフォルトの名無しさん
18/09/24 14:27:54.43 98z19Ykt.net
>>266
> ファイルシステムの入力はファイルパスであり可変長の文字列
ファイルシステムへの入力は inode、dir、dentry がほとんどじゃないか?
create:dir と dentry をキーにinode作成
readdir:dir をキーに dirent を作成
open:inode をキーに open
ext4 を少し読んだ感じこうだった
inode 番号をキーに管理すればよいのでは?

271:デフォルトの名無しさん
18/10/08 18:00:08.98 QFhDw4cQ.net
URLリンク(play.rust-lang.org)
これどうしたらいい?

272:デフォルトの名無しさん
18/10/08 18:41:33.75 tthsf3cJ.net
>>271
これってたぶん自己参照構造体(self-referential struct)の話だよね?
自己参照構造体は未定義動作の危険性があるので現状のRustでは表現できない
詳しくは↓の「自己参照構造体」のところを読んで
URLリンク(qiita.com)

273:デフォルトの名無しさん
18/10/08 18:44:43.33 3nZaN/dO.net
RC使うが正解

274:デフォルトの名無しさん
18/10/08 21:00:25.91 tthsf3cJ.net
>>273
>>271の場合だとRc使っても無理な気がするんだけど…
ソースコード見せて

275:デフォルトの名無しさん
18/10/09 01:15:58.85 C4dQJ/Ib.net
>>271
>>272と同意見だけど27行目でどうやっても自分の参照を関数外に出すから無理だな。
借用じゃなくてBoxでもってクローンすればよくね?

276:デフォルトの名無しさん
18/10/09 02:03:50.07 ErN4eNsC.net
タプルにFromStrトレイトを実装するのって無理なんですか?
URLリンク(ideone.com)

277:デフォルトの名無しさん
18/10/13 02:22:04.65 6mWkEB0Z.net
implしたい型か、traitのどっちかが自分のものでないと駄目って制約があるから駄目です
何でこんな制約があるかは理解してないけど

278:デフォルトの名無しさん
18/10/14 00:02:45.49 mv7/qGuI.net
open等させるものか!っていう強い意志。new type patterns使え。

279:デフォルトの名無しさん
18/10/23 00:25:24.72 vm0fIWWq.net
Rustに関しての発信の多い日本人のツイッターアカウントを何人か教えて
フォローしてRustの情報集めたい

280:デフォルトの名無しさん
18/10/23 07:44:49.73 TD4ftrwf.net
普通に検索すりゃいいじゃん

281:デフォルトの名無しさん
18/10/24 01:23:57.63 fDSh/sYg.net
言い方を変える
オススメの情報発信者を教えて!

282:デフォルトの名無しさん
18/10/24 03:09:14.03 Ra+MYJIp.net
お前がなるんだよ!

283:デフォルトの名無しさん
18/10/24 12:04:16.29 Sg0ufq4y.net
ここの人々
URLリンク(www.rust-lang.org)

284:デフォルトの名無しさん
18/10/24 13:59:42.33 k2aW8IHE.net
人でないのも混ざってるようだが・・・

285:デフォルトの名無しさん
18/10/24 15:20:24.92 V7Jy5BkX.net
rustの懐は深い

286:デフォルトの名無しさん
18/10/24 15:24:14.56 htH2RJ/p.net
この写真のことかな
URLリンク(avatars3.githubusercontent.com)

287:デフォルトの名無しさん
18/10/25 23:59:22.23 lH0yd+Cf.net
rustlang の Discord に Rust(Steam) をクレクレしてるのが出現してる
さすがにベタすぎるのでネタかと思ったけど
「Rust言語は誰にでもフリーだよ!」と住人にやさしく説明されててちょっと笑った
そういう仕込みのフリとオチだったのかもしれないが

288:デフォルトの名無しさん
18/10/26 17:03:37.34 debQKEDn.net
Rust信者ってブロッキングにも賛成なんだろうなあ
邪悪だ

289:デフォルトの名無しさん
18/10/26 20:14:23.65 113CY38k.net
そうなん?俺もブロッキング支持しよ~

290:デフォルトの名無しさん
18/10/26 20:17:42.39 44ub/T/P.net
async/awaitのあたりがきれいに書けないなら、ブロッキング+スレッドの方が実用的でしょ

291:デフォルトの名無しさん
18/10/26 20:54:37.31 UNNCnGfy.net
いやいやがんばってノンブロッキング対応してるでしょ

292:デフォルトの名無しさん
18/10/26 23:30:24.99 xFXCmb25.net
同音異語のボケをマジレスされる>>288が不憫。

293:デフォルトの名無しさん
18/10/28 03:48:19.07 tRSd44wH.net
1.30出た

294:デフォルトの名無しさん
18/10/29 12:25:08.61 LvhYoyxI.net
モジラがバックにいてカワンゴが布教してる技術なんてよく使う気になるよなお前ら

295:デフォルトの名無しさん
18/10/29 13:12:48.10 PHNS982/.net
>>294
じゃあ君がバックに付け

296:デフォルトの名無しさん
18/10/29 21:15:34.41 UJ6dBI7/.net
>>295
やだよ放射性廃棄物の後処理すんの
世に出して広めた奴が責任もって片付けろよ

297:デフォルトの名無しさん
18/10/29 21:26:30.74 e16+m1gN.net
rustのポジションは他に居ないからありがたく使ってますけど

298:デフォルトの名無しさん
18/10/29 22:03:30.02 M3jiQuOm.net
>>294
じゃあ、かの有名なMicrosoftがRustを使っていれば貴方も使う気になるってわけですね
URLリンク(www.reddit.com)
はい。これでめでたしめでたし
ところで、ドワンゴが例のRust製分散システムをオープンソースにしてた。
URLリンク(dwango.github.io)

299:デフォルトの名無しさん
18/10/30 13:57:30.60 XfhSBW4w.net
>>296
じゃあ君は最初はバックがどうこう言ってたけど実はそんなこととは無関係に嫌ということかな?

300:デフォルトの名無しさん
18/10/30 23:04:19.32 g5GFfrA6.net
ただの廃棄物じゃなくて放射性廃棄物ってどういう比喩なのか
阿片みたいに観戦力があり周囲に広がるということ?
それとも単に処分に困るというだけ?

301:デフォルトの名無しさん
18/10/31 06:32:37.92 DCSkWbH/.net
バカが扱うと光ってしぬとか?

302:デフォルトの名無しさん
18/10/31 08:29:16.12 OC34mqIr.net
モジラの由来がゴジラだからだろ

303:デフォルトの名無しさん
18/10/31 14:18:23.60 umCB7ism.net
遠回しすぎ

304:デフォルトの名無しさん
18/11/08 21:50:52.93 OLKb17KH.net
暗号通貨関連でよくRustが使われてるってホントなの?

305:デフォルトの名無しさん
18/11/08 23:09:14.23 g1taMrfK.net
>>304
残念ながらC++, Java, Goと比べたらゴミカスや

306:デフォルトの名無しさん
18/11/14 12:05:28.30 KF+gaYe3.net
家の非力なデスクトップにgentooを入れたんですが
firefoxをコンパイルしたらrustもコンパイルしてくれました
rustも含めて都合14時間かけてコンパイルしたfirefoxを使うだけじゃ勿体無いので
rustを勉強してみようと思ったのですが
スクリプト言語とjavaを触った程度の人が始めるには
ハードルが高い言語なんでしょうか?
何かとっかかりになる良いサイトとか本がありましたら
教えてくれると嬉しいです
Python歴7年Java歴2年の趣味プログラマです
rustでgtkアプリを作ってみたいです

307:デフォルトの名無しさん
18/11/14 12:11:11.98 zVp4oIsl.net
問題はやるかやらないかだけ

308:デフォルトの名無しさん
18/11/14 12:13:35.40 q4FWtiky.net
【おい何だこれ、俺ムカついて】 久本雅美、マチャミに、創価学会に入れって、俺ね囲まれたんですよね
スレリンク(liveplus板)

309:デフォルトの名無しさん
18/11/14 12:18:27.60 KF+gaYe3.net
ヤル気はマンマンなんですが
まだgentooのインストール途中でxfceにfirefoxが入ってるだけなんですよね
帰宅したらvscodeも入ってるはずなので今夜からコンパイル流しながら勉強する予定です
ただ、あんまり初心者向けの日本語情報が見当たらない気がするので
いいサイトがあれば知りたいな、と思った次第です

310:デフォルトの名無しさん
18/11/14 17:33:29.52 DKDZkQDw.net
私もRustでGtkアプリ作りたいマンです

311:デフォルトの名無しさん
18/11/14 17:36:38.51 n7YO6e8G.net
Qtがいいです(´・ω・`)

312:デフォルトの名無しさん
18/11/14 17:58:38.03 nBV8bj0A.net
Azulとかどうよ
とりあえずサンプルビルドしたら普通に起動した

313:デフォルトの名無しさん
18/11/14 19:37:11.25 TV7+R4Em.net
とりあえずslackに入ってみるとよい

314:デフォルトの名無しさん
18/11/14 21:37:35.14 KF+gaYe3.net
皆さんいろいろとありがとうございます
とりあえずプログラミング言語Rustの日本語訳pdfを見つけたので
それ見て勉強してみたいと思います
これ凄いですね
無料で配布しちゃって良いんでしょうか
下手なwebの情報探すより公式見たほうが良さそうですね

315:デフォルトの名無しさん
18/11/15 09:47:28.34 RDhHOc3n.net
布教のために気合い入れて書いたんだろうと思う

316:デフォルトの名無しさん
18/11/15 10:31:34.27 P9aoBmqQ.net
Gitとは何かの説明まであって驚くよな
さすがにそのレベルの人は門前払いしたほうがその人のためにもいいと思うが

317:デフォルトの名無しさん
18/11/15 12:47:26.17 5HuarfG4.net
>>316
あれはRust初心者だけでなくプログラミング初心者も対象としてるんじゃないの?
だから初歩的なところから教えてるんだろうと思っていたが
まぁ、プログラミング初心者がいきなりRustから始めるってどうなのよ?とは思うけど

318:デフォルトの名無しさん
18/11/15 13:04:35.26 zAJKMl9m.net
Cとかでメモリの扱いミスってしかも落ちずにおかしな動作する、みたいなのの経験がないとイマイチRustの有り難みは感じられないようなとも思いつつ
かといってRustのためにC勉強するってのもなんか本末転倒なきもするし

319:デフォルトの名無しさん
18/11/15 14:42:52.86 rLd4aKr0.net
なまじ他言語を知ってるから難しいという点もあるんじゃない
初心者がベテランが作るようなものをrustで書くのは辛いだろうけど、初心者が作るようなものを書く分にはむしろ易しい気がする
セットアップ楽だし

320:デフォルトの名無しさん
18/11/15 22:55:30.82 9llOcmgi.net
Mozillaはドキュメント書くの得意だよな
オワコンブラウザには勿体無さすぎる才能

321:デフォルトの名無しさん
18/11/16 12:21:53.69 4Z/2Zn+l.net
なぁに、まだまだこれから。
などという言葉が出始めたら終わりは近い。

322:デフォルトの名無しさん
18/11/18 19:34:31.05 R8KfbBfe.net
書店でオライリーのRust本をパラパラと読んでみたけど
式の可読性の面ではC++の悪いところを引きずってるように思える

323:デフォルトの名無しさん
18/11/18 20:15:20.02 4iL5+9nq.net
>>322
どの辺が?

324:デフォルトの名無しさん
18/11/19 19:32:18.74 2BxYw1Po.net
可読性って言うやつw

325:デフォルトの名無しさん
18/11/19 22:01:51.59 Eani9PxJ.net
try!(try!(try!(foo).bar()).baz()) とか?

326:デフォルトの名無しさん
18/11/19 22:24:14.39 a77oxEQZ.net
try!(try!(try!(try!(foo).bar()).baz()) とか)

327:デフォルトの名無しさん
18/11/20 03:45:46.85 NpnvZOTV.net
?演算子使えよ

328:デフォルトの名無しさん
18/11/20 03:48:40.78 QYgW0U1d.net
オライリーのRust本は?登場以前なの?

329:デフォルトの名無しさん
18/11/21 18:56:13.38 b35PMmU2.net
前なの

330:デフォルトの名無しさん
18/11/21 20:13:11.42 X08G4m76.net
え?前なの?
手元の蟹本だと、
7.2.4節 エラーの伝搬に"?演算子"のこと書かれてるんだけど

331:デフォルトの名無しさん
18/11/27 22:10:26.76 o0QT5paZ.net
muslでビルドすると普通にlinuxでビルドしたときよりメモリ食うんだけどなんで?

332:デフォルトの名無しさん
18/11/29 02:19:25.76 lxH8UY8f.net
>>331
標準のライブラリだと、メモリ上にロード済みのコードを共有するからじゃないの?

333:デフォルトの名無しさん
18/11/29 07:51:18.34 XVJlfR1h.net
libcとかがダイナミックリンクじゃない分てことだよな
色々検証していたんだがそれだけじゃなくリークしてるように見える

334:デフォルトの名無しさん
18/11/29 11:32:12.22 F/HxRyq9.net
>>318
だがそれが一番の近道だよ。
結局 c -> c++ -> rust の順で学ばないと意味わからんだろう。

335:デフォルトの名無しさん
18/11/29 13:15:45.28 lxH8UY8f.net
>>333
valgrindで見たら?

336:デフォルトの名無しさん
18/11/30 01:14:27.01 CtIYhRiq.net
>>334
いやCはともかく少なくともC++は要らんだろ

337:デフォルトの名無しさん
18/11/30 14:18:46.51 2aRM++fj.net
>>335
見てみたらリークはしてなかった
100mbくらいあるヒープに確保された値を1分に1度入れ替えているんだけど、ヒープに確保された領域って即解放されるわけではない?

338:デフォルトの名無しさん
18/11/30 20:37:37.40 9byeocZC.net
アロケータがmallocになってるからっぽい

339:デフォルトの名無しさん
18/11/30 23:14:23.14 yJ65pEge.net
あれjemallocやめたの?

340:デフォルトの名無しさん
18/11/30 23:51:57.68 9byeocZC.net
まだjemllocがデフォルトだけどナイトリーでは既に外されていて近々デフォルトではなくなる
それとは別の話で、俺がビルドしたのがmuslビルド用のdockerイメージで、それにはjemalloc入ってないからシステムアロケータで動いてたんだよね

341:デフォルトの名無しさん
18/12/07 19:20:14.13 gVw6+TJP.net
Announcing Rust 1.31 and Rust 2018
URLリンク(blog.rust-lang.org)

342:デフォルトの名無しさん
18/12/08 03:04:47.62 pvPlWHOH.net
過疎ってるのは人気廃れたかrust

343:デフォルトの名無しさん
18/12/08 05:33:59.34 YCd49h5/.net
2018安定化でむしろ盛り上がっているのでわ
うちはリプレイス案件2つにrust使うことにした

344:デフォルトの名無しさん
18/12/08 19:15:08.95 6H7niR8Q.net
>>343
何系?Web?

345:デフォルトの名無しさん
18/12/08 20:54:29.25 YCd49h5/.net
んだ、webだ

346:デフォルトの名無しさん
18/12/08 21:39:48.43 NPyhS6xn.net
なんかサイトの雰囲気がらっとかわったな。

347:デフォルトの名無しさん
18/12/08 21:53:08.41 tBodI9MC.net
まともなヤツなら将来が保証されない言語なんかを採用しないからな
一時的に使用するドカタ向け案件なら試用にぴったり
まとも思考してたら、将来も間違いなく保証されてるc/c++を使う

348:デフォルトの名無しさん
18/12/08 22:27:03.66 tDQL8bNL.net
FacebookやDropboxが採用してるし
最近だとAmazonがRustでVMMを作ってる

349:デフォルトの名無しさん
18/12/08 23:02:19.67 StthUKB3.net
>>348
Facebook採用してたっけ?あそこはDだったような…
MSの間違いじゃない?MSだったらAzureの中の一部で採用してたはず…
因みにGoogleも自社製エディタに(たぶん20%ルールでだけど)採用してるね
もしFacebookも採用してるならApple以外の主要IT企業は全て採用してることになるな
(AppleはObjectiveC/C++とSwiftしか使わないしね…)

350:デフォルトの名無しさん
18/12/08 23:48:17.93 6+mjNqXv.net
まあクソアプリほどどの言語で書いたかとかアピールするよね。

351:デフォルトの名無しさん
18/12/08 23:52:33.64 lASXqBfj.net
クソアプリほどオープンソース?

352:デフォルトの名無しさん
18/12/09 02:02:42.61 Xn4iOyS/.net
半角こんなとこまで現れてんのか

353:デフォルトの名無しさん
18/12/09 02:07:51.53 Xn4iOyS/.net
>>349
低レイヤーでC++の次世代言語って意味合いではDとRustって似たとこあるよね
大きな違いはバックボーンとしてMozilaという巨大コミュニティがあるところだけど

354:デフォルトの名無しさん
18/12/09 08:39:36.42 rwNGSJ2b.net
クソ言語ほどHNでポイント稼ぐよな

355:デフォルトの名無しさん
18/12/09 10:44:39.45 YxoLru6a.net
ハンドルネーム?

356:デフォルトの名無しさん
18/12/09 14:03:01.32 c43JK2So.net
Rustは良いけどMozillaの将来が心配
MSも撤退するしこれから更に厳しくなりそう

357:デフォルトの名無しさん
18/12/09 14:18:04.29 2pQIpR7Q.net
>>356
MSが撤退っていうのはブラウザエンジンの話をしてるのか?

358:デフォルトの名無しさん
18/12/09 16:05:40.11 BNrpwBjL.net
ただの糖質だろ

359:デフォルトの名無しさん
18/12/09 19:33:03.82 RNFPl7GW.net
ブラウザエンジンの話
Mozillaが厳しくなるとRustにも影響がある

360:デフォルトの名無しさん
18/12/09 19:59:59.46 2pQIpR7Q.net
>>359
Mozillaはなんだかんだ言っても一応非営利団体だから
MSみたいにブラウザエンジンを手放すようなことはしないはず
つまり、Firefox(Gecko)が消える時はMozilla自体が消える時と同時で、
流石にMozilla自体が消えるとは考えにくい…

361:デフォルトの名無しさん
18/12/09 20:17:58.30 Xn4iOyS/.net
いうてもWebメールじゃないSMTP式のメールのメーラーとしてはMozilaのThunderbirdのシェアってそこそこ高くない

362:デフォルトの名無しさん
18/12/09 22:50:45.52 RNFPl7GW.net
ThunderbirdはMozillaから切り離されるんじゃないの

363:デフォルトの名無しさん
18/12/09 23:11:23.09 piyaaQaM.net
ブラウザに関してはグーグルが死なせないと思うけどな

364:デフォルトの名無しさん
18/12/10 09:12:14.39 aoFPjOc9.net
MDNって言うほど貧弱じゃなくない?

365:デフォルトの名無しさん
18/12/10 09:24:08.88 90UOO2rs.net
仮にMozillaがどうにかなってもRustは大丈夫だろ

366:デフォルトの名無しさん
18/12/10 12:32:50.59 0C3QpRH/.net
楽観的だな(笑)

367:デフォルトの名無しさん
18/12/10 14:23:42.89 i6gV1o71.net
初期はMozilla頼みだったけど、今はそうでもないという認識

368:デフォルトの名無しさん
18/12/11 07:43:47.36 6UpzsT8a.net
なんか新しくマクロ増えたみたいだけど使い勝手どう?

369:デフォルトの名無しさん
18/12/11 21:35:58.04 P3z87FBj.net
stableって今1.31.0だろ。
「nightlyが久々にやらかした+distマシンの環境壊した+CI壊した」でnightlyが三日止まっててまだ1.32.0だからdbgマクロくらいしか違いないぞ。

370:デフォルトの名無しさん
18/12/13 00:08:25.48 75wuALWM.net
モナド変換子がほしい

371:デフォルトの名無しさん
18/12/13 09:19:17.49 MIS8jLYk.net
  ∧_∧  / ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< ・・・
 ( ⊃ .旦|  \_____
  し_)___)

372:デフォルトの名無しさん
18/12/14 01:30:52.83 dZAIZmaz.net
モサド変監視ほしいの?

373:デフォルトの名無しさん
18/12/14 08:56:10.14 jGITOnwL.net
Rustのドキュメント日本語サイトが404になってた

374:デフォルトの名無しさん
18/12/15 00:37:40.07 Hly2v07A.net
心の中に404はあるよ

375:デフォルトの名無しさん
18/12/16 11:50:25.28 kVzpWd9g.net
パイプと型変換だけで十分なところにモナドを要求する馬鹿。

376:デフォルトの名無しさん
18/12/16 18:14:31.47 w0ERAAOh.net
こっちの日本語サイトは生きてるけど
URLリンク(doc.rust-jp.rs)
本家は多言語対応辞めたんかな見つからない
URLリンク(www.rust-lang.org)

377:デフォルトの名無しさん
18/12/17 00:55:12.89 Q0yF3pSK.net
下の方に旧サイトへのリンクがある

378:デフォルトの名無しさん
18/12/19 00:17:41.51 kru7p0rZ.net
どんなに否定したって下のお口は正直ですからね

379:デフォルトの名無しさん
18/12/23 17:23:40.20 8b39kAUV.net
旧サイトのほうがいいなすっきりしてて
情報量的にもデザイン的にも

380:デフォルトの名無しさん
18/12/23 19:22:40.32 AGEXmg0r.net
なんか安っぽくなったね。詐欺のベンチャーみたいなページになった。
以前のデザインのほうが圧倒的に良い

381:デフォルトの名無しさん
18/12/23 23:03:24.89 Mt5iJ+Fg.net
駆けつけでいきなり言語の特徴とplayground見せるのは話が早くていいよね。
なんか気になればそのままナビゲーションヘッダのリンク辿ればいいし。

382:デフォルトの名無しさん
18/12/24 11:16:50.86 YXqLjtll.net
>>380
ほんそれ

383:デフォルトの名無しさん
18/12/25 01:59:30.60 walX28QA.net
現在開催中のこのAIコンテストの説明のサンプルコードにRustが選ばれているあたりRustは世界一素晴らしいプログラミング言語であることが分かる
URLリンク(russianaicup.ru)

384:デフォルトの名無しさん
18/12/25 17:58:48.15 5JJKyjkR.net
Rustと最初の3文字が一致しているので親しみを抱いてるんですかね

385:デフォルトの名無しさん
18/12/25 19:24:34.64 9T0J1rjG.net
どうかなあいやでも俺もそう思う

386:
19/01/01 00:34:50.41 Z6HfKRO/.net
今年こそRustを日本中で流行らそうな

387:デフォルトの名無しさん
19/01/01 02:32:05.03 eZvGQ8mf.net
せやな

388:デフォルトの名無しさん
19/01/01 09:59:51.39 mgYjOhM6.net
別に流行らんでも使ってりゃいいじゃん。

389:デフォルトの名無しさん
19/01/01 13:21:50.94 ycrn+5XF.net
俺は使ってるから君らも使えよ

390:
19/01/01 18:09:29.86 H9/ceTM6.net
流行ろうが流行らなかろうが使う

391:デフォルトの名無しさん
19/01/02 06:33:05.51 6wUS1VYB.net
マイナー言語やってるけどしんどい😭
いずれRustに乗り換える💪

392:デフォルトの名無しさん
19/01/02 12:26:01.33 c5jR4khc.net
仕事で使えないから趣味で使いたいけどスマホアプリとか作れるようにならんかな
wasmでやれるん?

393:デフォルトの名無しさん
19/01/02 22:18:13.37 jIZCjD6X.net
android用のglueある

394:デフォルトの名無しさん
19/01/06 02:19:11.11 RYpyUdGD.net
所有権借用はなんとなく理解できたがライフタイムだけよくわからない
なにがわからないのかすらわからない

395:デフォルトの名無しさん
19/01/06 08:25:05.72 4M8noAKR.net
元々わからなかったけどNLLでよりわからなくなった

396:デフォルトの名無しさん
19/01/06 21:01:21.58 Y1gcigWk.net
lifetime関係のエラーが出たら、一歩引いて考えないとドツボにはまる
どうして借用にしたのか、誰が責務を負うべきなのかとかを見直していくと、まあまあ綺麗な形でエラー出なくなるから楽しい

397:デフォルトの名無しさん
19/01/06 22:41:12.99 iA9hXNaZ.net
>>394
ライフタイムは変数のスコープと一緒だよ。
ただrustの場合、関数の引数に対してライフタイム指定ができたりするんだが、
それを省略した場合なんかのルールが結構複雑なんでわかりづらくなってる。
まあ色々検討した結果が今の状況なわけでこれはこれでしょうがないんだが。

398:デフォルトの名無しさん
19/01/07 18:55:30.56 h9/nr8aR.net
きようもrust書いた
たのしかった

399:デフォルトの名無しさん
19/01/07 19:23:50.19 62wl4FOH.net
らすたまだあるかな

400:デフォルトの名無しさん
19/01/07 23:27:09.65 xV9XgTIe.net
>>397
>ライフタイムは変数のスコープと一緒だよ。
ちげーよ。extentの方だよ。

401:デフォルトの名無しさん
19/01/09 02:57:56.42 vCJsRJvg.net
ide使いたい初心者なんだけどintellijもvscodeも補完が微妙だった。
エディタ上で赤く無くてもコンパイルしたらエラー出る。なんか設定おかしいのかな。。

402:デフォルトの名無しさん
19/01/09 07:22:34.83 aiUc5v61.net
RustのIDE環境はまだまだ未発達なのです(´;ω;`)

403:デフォルトの名無しさん
19/01/10 08:23:28.84 lwucKgCv.net
あきらさんowやめてrustの解説に専念してほしい

404:デフォルトの名無しさん
19/01/10 20:34:05.07 Hgkpvvuo.net
>>403
いやまずお前は他人に依存してないで公式ドキュメントちゃんと読んでQiitaでも読み漁れよ

405:デフォルトの名無しさん
19/01/10 21:12:55.85 QCs5TwSX.net
Juiceのユーザっているのかなぁ
ActcastはRustで書かれてるらしいけど

406:デフォルトの名無しさん
19/01/11 01:16:47.51 pdgYcych.net
>401
intellij rustだけど補完もリファクターも、traitの実装も出来る。

407:デフォルトの名無しさん
19/01/11 20:15:12.46 3i4YWAld.net
文字列を返却する関数ってどう書くんだっけ?

408:デフォルトの名無しさん
19/01/11 20:17:35.01 O9pa1tkJ.net
>>407
Rustの文字列には何種類かありまして……

409:デフォルトの名無しさん
19/01/11 20:23:27.40 wjQF1dR9.net
メンドクセーッ

410:デフォルトの名無しさん
19/01/11 23:52:16.86 SaJhEqyf.net
javaにも2,3種類あるだろ

411:デフォルトの名無しさん
19/01/12 01:23:20.36 I2V52GgH.net
>>406
マジで?俺のintellijはあんまりintelliやないんやけど。
(0..10).
これでfor_eachとかの補完できる?

412:デフォルトの名無しさん
19/01/13 00:39:51.18 hYXV78lL.net
intelliJ rustもrust(rls)も全部が全部補完出来るわけじゃないよ。
むしろRange系がほとんど補完効かない。

413:デフォルトの名無しさん
19/01/13 01:10:12.67 2nXE8bQq.net
rlsって2016年に登場した時いつか脱racerするとか言ってたと思うんだけど何で未だにracerに頼ってるんだろ?
clangはclangdとかcclsとかあってどっちもコンパイラを使って強力に補完出来るけどrustも同じような方針で実装出来ないの?

414:デフォルトの名無しさん
19/01/13 04:00:11.67 4OSEbwLo.net
>>412
> intelliJ rustもrust(rls)も全部が全部補完出来るわけじゃないよ。
> むしろRange系がほとんど補完効かない。
そうなんか。まあそれは慣れればええ話か。
ide上で赤くないのにコンパイルエラーになるのは何か環境構築に失敗してるのかな?
単純なシンタックスエラーは赤くなるんだけど、所有権まわりは赤くなってない気がする。

415:デフォルトの名無しさん
19/01/13 23:36:03.48 bHKSc5vy.net
>>413
racerはfallbackしたときだけでそれ以外はコンパイラ使うよ。
インクリメンタルコンパイルがまだまだだから出来ること限られるだろうけど。
>>414
>所有権まわりは赤くなってない気がする。
赤線つくね。マウスオーバーでエラー内容もshort版を整形したようなの確認できる。
quick fixが弱いけど。
rlsならrust-srcとrust-analysis。intellij rustならrust-src入ってる?

416:デフォルトの名無しさん
19/01/14 09:38:00.11 0lebqFeg.net
>>415
できた!ありがと。
intellij-rustの設定おかしかったみたい。

417:デフォルトの名無しさん
19/01/15 00:14:36.16 EnbKgMOU.net
Rustで簡単なゲームを作ってみたいんだがフレームワークは何が良いんだろうな
SDLやDirectX、OpenGL等のラッパーは一応あるようだけど

418:デフォルトの名無しさん
19/01/19 04:53:19.32 KuvXwQQD.net
言語レベルで静的にstructを差し替える方法って無いんかな?
マルチプラットフォームのアプリを仮定するとして
アプリはSystem構造体下のメソッドを経由して低レベルの機能へアクセスする
System構造体の中身はビルド時に決まる物だし実行中に選択するのはコストの無駄
ビルド時にコンパイル&リンクするファイルを差し替える方法はあるが・・・

419:デフォルトの名無しさん
19/01/19 21:10:10.72 chH9K/tE.net
target_os とかとは違うの?

420:デフォルトの名無しさん
19/01/19 23:26:08.16 mgFfw5BT.net
静的リンクならcfgマクロ使った条件付きコンパイルしかないよ。

421:418
19/01/20 02:42:18.64 Ej9w6434.net
ありがと
#cfg[(target_os=~
struct System {
とか書くしかないのか
というかググっていてもマルチプラットフォームのアプリを作る例って出てこないんだけど
どういう風にするのが好ましいのだろうか。Cargoの使用例とか全然判らん
ターゲットによってコンパイラも変わるし、リンカやリンカに渡されるオプションも変わる
リンク後に追加の処理が必要になるケースもあったり

422:デフォルトの名無しさん
19/01/20 11:51:23.29 fjDkObgS.net
有名なcrateはだいたいマルチプラットフォームになってるでしょ

423:418
19/01/20 13:10:03.87 Ej9w6434.net
そのレベルじゃなくて一つのプロジェクトで
1.Windowsでビルドする/動く
2.Linux/FreeBSDでビルドする/動く
3.Linuxでクロスビルドする/別アーキテクチャのプラットフォームで動く
みたいなのをやりたい。1~2はともかく3はベアメタルに近いのでコアのソースはno_std付きになる
クレートもWindowsAPIへアクセスする場合Cargo.tomlに
[dependencies]
winapi = "~
kernel32-sys = "~
とか書くけどコレをつけたまま他のプラットフォームでビルドできるのか?とか
仕様上無視してくれるならそれで良いけどはっきりしないと無用なトラブルの元
クレートを使わずにソースにexternを並べていって条件付きコンパイルすればその心配は
なくなりそうだけど各種定義とか、IA32/AMD64環境下の差異の吸収とかいろいろ面倒だし

424:デフォルトの名無しさん
19/01/20 13:24:49.19 fjDkObgS.net
>>423
有名なcrateはだいたいちゃんとそれこなしてるから見てきなよ

425:418
19/01/20 15:13:45.29 Ej9w6434.net
スマン
Carge&winapiを使ってWindowsAPIを叩くサンプルを作ろうとしたらそこまでたどり着けん
use出来なくて詰まっている
extern crate winapi;
use winapi::minwindef::BOOL;
>cargo build
error[E0432]: unresolved import `winapi::minwindef`
--> src\main.rs:4:13
|
4 | use winapi::minwindef::BOOL;
| ^^^^^^^^^ Could not find `minwindef` in `winapi`
パスがおかしいっぽいのでソースを見るべきだが、Cargoが取ってきたソースがどこにあるのか判らない
というかコレを調べられないと非対応環境でどう振る舞うのかも調べられない
rustcでコンパイルするFFI直でWindowsAPIを叩くコードは動作させられている

426:デフォルトの名無しさん
19/01/20 15:34:24.69 IFCR+fSZ.net
Cargo.toml に
[target.’cfg(target_aech = "x86_64")’.dependencies]
とか書けるけど、これでも不十分?

427:デフォルトの名無しさん
19/01/20 22:10:39.80 Yfn6IVUJ.net
cargoがとってきたのはホームの下の.cargoにあるよ
質問がいまいち判然としないけど

428:デフォルトの名無しさん
19/01/20 22:18:26.33 XwDXpx/J.net
WEB開発でフロントエンドもバックエンドもRustで開発できるようになるみたいだね
そしてJavascriptは衰退するらしい
まさに次世代の言語か?

429:デフォルトの名無しさん
19/01/20 23:40:56.74 Ba0cWsCk.net
Javascriptを倒すのは無理

430:418
19/01/20 23:41:16.28 Ej9w6434.net
>>426
それでいけそうかも。というかwinapiにそんな書き方があった
>>427
ありがと。見つかった
README.mdにあったサンプルはビルドできた
1~2年前のコードだとビルドできないようだ
いくら発展途上の言語とはいえ1~2年前の情報が使えないのはつらいなぁ
車輪の再発明になってもFFIで書いていった方が良いのか?
というかみんなどうしているの?情報の有効期限が1年もないんじゃ
ちょっと前のを修正するにもドキュメントはないしソースとにらめっこになっちゃうよね

431:デフォルトの名無しさん
19/01/21 21:41:20.34 ieTTkacC.net
nightlyでも使っていない限りは、基本的に過去のコードはビルドできると思うけど

432:デフォルトの名無しさん
19/01/21 22:24:30.39 imUXN0q+.net
>>418
rustにとって一年前は古いけどwinapi::minwindefは今はwinapi::shared::minwindefよ。
apiが変更されただけだからまずdoc読めばいいよ。
あとrustupでrust-docインストールすればthe cargo bookもあるからそれも読んで。

433:418
19/01/22 08:09:48.68 owMGrrnU.net
>>432
0.3.x以降はCargo.tomlにfeaturesを書かないとダメらしい
あとunsafe祭りになってしまいそうなんだがwinapiの仕様でFAなんかな

434:418
19/01/24 23:36:09.43 mR/sBWjl.net
URLリンク(docs.rs)
これってどうやって初期化すればいいんだろ?
ReadFile/WriteFileでOVERLAPPEDを使いたいんだが

435:デフォルトの名無しさん
19/01/25 01:30:10.23 7aXnDiIo.net
よく知らんけどOVERLAPPEDをmem::zeroedで初期化して引っ張ってくるんじゃないの

436:418
19/01/26 00:18:28.40 ec8OMVht.net
>>435
ありがと。それでとりあえず出来た

437:デフォルトの名無しさん
19/02/01 02:53:50.28 bNyzNXhv.net
TryFrom/TryInto がもうすぐか

438:デフォルトの名無しさん
19/02/05 00:11:17.23 2NDs+2LZ.net
型のパターンマッチってメンテナンス性が悪かったりする?

439:デフォルトの名無しさん
19/02/05 00:26:16.28 pEuhZWls.net
ML系の関数型言語の経験があるなら全く問題ない
経験ないならHaskell/OCaml/F#あたりのうち最低一つは触れてみることを強くお勧めする

440:デフォルトの名無しさん
19/02/05 00:39:59.41 XXfCgR8v.net
どれ?

441:440
19/02/05 00:41:00.53 XXfCgR8v.net
>>438

442:デフォルトの名無しさん
19/02/05 00:42:22.65 UXw61YxU.net
やっぱRustに限らず新しめの言語できる人って英語もスラスラ読み書きできるもんなの
読むのは時間かければ何とかなるけど書けないから質問する場所が限られる

443:デフォルトの名無しさん
19/02/05 00:48:10.95 28bd5R1v.net
パターンマッチは型で分岐するというより型に当てはめるという感覚の方が近い
OO言語でマサカリ投げられるような型で分岐するというのとは似て非なるものなんだが、
そのへんの微妙な感覚を掴んでからでないと糞コードの温床になりそう

444:デフォルトの名無しさん
19/02/05 05:25:42.44 xTPbFJiK.net
>>442
slackで聞くといい

445:デフォルトの名無しさん
19/02/07 12:31:53.09 nkNDSe3E.net
何かのIDEで
(0..10).
の補完が効くようになったら教えて

446:デフォルトの名無しさん
19/02/07 23:00:54.15 +NlXQGa+.net
RangeはIteratorを直接実装するからcurrent scopeにIteratorがuseされてない状態でIteratorのメソッド解析出来ないと無理だろうね。
useされてないトレイトのメソッド使ったら自動でuseする機能のほうが先。

447:デフォルトの名無しさん
19/02/08 00:09:20.59 EX3qDOo1.net
良記事
Learning Rust via Advent of Code
URLリンク(www.forrestthewoods.com)

448:デフォルトの名無しさん
19/02/09 15:36:54.38 6/bHpQ6m.net
トイレット

449:デフォルトの名無しさん
19/02/09 16:27:38.54 6Levbbby.net
URLリンク(volt.ws)
URLリンク(volt.ws)
V言語とかいうやつ、GUIアプリとか3Dゲームとかを開発するために作られたらしいけど、GCがないとか1500万行のコードを1秒でコンパイル出来るとかバイナリサイズが極小とかC/C++とのやりとりが簡単とか
これが本当だったらRust負けちゃうんでは
実際Rustで低レイヤーやってる人少ないだろうし

450:デフォルトの名無しさん
19/02/09 16:31:54.37 meE2rnNy.net
詳細知らんけど低レイヤーに適した言語が出てくること自体は歓迎できるんじゃないの

451:デフォルトの名無しさん
19/02/09 16:35:04.90 k8PbCSOR.net
言語は言語の良さだけでは流行らないんだよ
RustもGoもまあまあ悪くない言語である上で十分なステマを行ったから流行った

452:デフォルトの名無しさん
19/02/09 17:19:45.83 XHVbx6Kw.net
それ使ったアプリがよほど良くて、開発者をうまく集められて、コミュニティが育たなければ無理だろうな
ソース非公開のうちは勝負にもならん

453:デフォルトの名無しさん
19/02/09 17:48:14.48 F2V9krnu.net
幾ら優れていようと後ろ盾がなきゃD言語の二の舞だろ

454:デフォルトの名無しさん
19/02/09 17:55:50.24 Sm9Jadj9.net
コンパイルが速いならジェネリクスも無いんじゃないかね。安全性については対nullしか無いっぽいし

455:デフォルトの名無しさん
19/02/09 19:21:01.69 6Levbbby.net
OCamlとかジェネリクスあるけどgoよりコンパイル速いよ
っていうか21世紀のOCamlが欲しかった(OCamlはそんなに古い言語ではないけど)

456:デフォルトの名無しさん
19/02/09 21:38:40.47 ifttyEGf.net
Rustほど丁寧なエラーメッセージ出してくれる言語もないでしょ
そういうのを捨てて速度を取った言語とは比べられない

457:デフォルトの名無しさん
19/02/09 21:42:08.79 7AbylfKm.net
> Rustほど丁寧なエラーメッセージ
冗談だよな? って思ったけど最近のは丁寧なのかな

458:デフォルトの名無しさん
19/02/09 22:39:24.66 +053I9at.net
全然だぞ。

459:デフォルトの名無しさん
19/02/09 22:57:48.30 zYIj7/GJ.net
Vってvoltのことか。あれgoに毛が生えた程度の言語よ。
>>457
今のはコマンドプロンプトのバッファが足らなくなるくらい丁寧だけど
答えそのものを教えてくるから書いたコードがだめな理由が初学者に理解できないのは変わらないと思う。

460:デフォルトの名無しさん
19/02/10 01:50:55.52 z2TxZpHI.net
>>449
どうググるとそれ出てくるの?
「volt プログラミング言語」でググって出てくるのこれなんだけど
Volt Programming Language ・ GitHub
URLリンク(github.com)
URLリンク(www.volt-lang.org)

461:デフォルトの名無しさん
19/02/10 02:45:34.58 rzMRhZmV.net
大体はGoとかと一緒で言語名+langで検索するのがいいんじゃない?
四文字もあって他の情報が上に来るのも珍しいが

462:デフォルトの名無しさん
19/02/10 23:16:47.25 Unf9n64i.net
googleで言語名+langで検索するとgoを検索結果にねじ込んでくるから-go必須

463:デフォルトの名無しさん
19/02/11 13:29:57.41 /IKdpkbc.net
rustでググってrustってゲームがトップに来なくなったのはグーグルさんが僕の検索履歴から判定しているだけ

464:デフォルトの名無しさん
19/02/11 14:57:29.32 cihDmqOc.net
URLリンク(trends.google.co.jp)
URLリンク(i.imgur.com)

465:デフォルトの名無しさん
19/02/11 16:58:29.92 icbaaHgE.net
Rust初心者です。
リスト構造を使ったスタックの実装で躓いてます。
なぜ間違っているのか教えてください
URLリンク(gist.github.com)

466:デフォルトの名無しさん
19/02/11 18:46:05.84 T+XDi7pv.net
>>465
URLリンク(cglab.ca)
かいつまんで言うと、&mutなオブジェクトが一瞬でもinvalidな状態になるから。
mem::replaceを使うと、self.listの値を取り出して代わりに別の値を置く、という処理が一度に行える
URLリンク(play.rust-lang.org)

467:デフォルトの名無しさん
19/02/11 21:46:27.46 icbaaHgE.net
>>466
ありがとうございます。
変更可能な"参照"で持ってきたもの(&mut self)から所有権をムーブさせることはできないという解釈で大丈夫ですかね。
置き換えるときはmem::replaceを使うようにします。

468:デフォルトの名無しさん
19/02/11 23:01:54.99 9ECrAI8Q.net
クソコード教えるんじゃねぇ。Optionの中身をNoneと入れ替えるならOption::take使え

469:デフォルトの名無しさん
19/02/11 23:36:00.41 T+XDi7pv.net
アアン?Option::takeのソース見ての物言いだろうなあテメェ

470:デフォルトの名無しさん
19/02/13 00:06:54.91 VVnL6iyQ.net
中身見たのならなおのことOption::take使うべきでは

471:デフォルトの名無しさん
19/02/14 19:10:47.01 25E3pTeL.net
>>455
OCamlは、文字コードの扱いとWindows環境の扱いが
もう少し良くなってくれると嬉しいな。

472:デフォルトの名無しさん
19/02/18 21:15:10.76 0Vx/m/dz.net
インデントのスペース幅は2が良かったなぁ
clang-formatもprettierも2がデフォだし
C#でさえ2を結構見かけるようになってきた
rustに強く影響を与えたであろうocamlもhaskellも2が多い
世界的に2が標準になりつつある気がする

473:デフォルトの名無しさん
19/02/18 21:29:43.93 trvxFZJG.net
漢なら8

474:デフォルトの名無しさん
19/02/18 21:30:52.44 etvvcICH.net
Pythonをインデント2で書く奴だけはマジで死ね
あれはガチで読めない
他の言語なら好きにしろ

475:デフォルトの名無しさん
19/02/18 21:33:40.63 TCe7B/Jv.net
インデントはTABキー派だな

476:デフォルトの名無しさん
19/02/18 21:43:29.91 G3oZ5oVt.net
ocamlからリスト引き継いでくれたらよかったのになあ
しかしそうするならもはやocamlそのものでいいってことになりかねないかな

477:デフォルトの名無しさん
19/02/18 22:43:31.80 7ubWqY/W.net
>>474
それだとgoogle連中には全員死んでもらわんとならんな。

478:デフォルトの名無しさん
19/02/18 23:22:04.58 H1db3n/w.net
noto sansにindent 3をわかってくれるのはねねっちだけか。
今は源真ゴシック等幅+Source Code Proだけど。
Source Han Codeはちょっと違うんだよ。

479:デフォルトの名無しさん
19/02/18 23:32:13.04 MF1SsBZy.net
Cica派です

480:デフォルトの名無しさん
19/02/19 02:33:20.94 ztl4bw1Y.net
googleのstyleguideではスペース幅4を推奨してるのにgithubのgoogleのpythonレポジトリはスペース幅2が多いな
pythonはpep8を重視してるイメージがあるけど堂々と無視出来るのは凄い
rustもrustfmt.tomlでtab_spaces = 2を設定してる人が結構いるわ
URLリンク(github.com)
3にしてる人さえいる

481:デフォルトの名無しさん
19/02/19 09:43:14.31 +VeRQQni.net
ちんこことゴッドエイムあきらを探しに来ました。

482:デフォルトの名無しさん
19/02/19 12:32:05.79 1Fqwt8so.net
なんでtab2だとみにくいんだ?

483:デフォルトの名無しさん
19/02/19 13:27:47.37 D8b3v+Fo.net
インデントで制御構造を表現する言語だと、深いネストから戻るときにどのレベルに戻ったのか識別できなくなる

484:デフォルトの名無しさん
19/02/19 20:11:35.55 8ne5Wfny.net
タブ2で見ずらくなるようなネストの深さと関数の長さになるのが悪いと
言いたいところだがgoogleのオフィシャルコードは結構ど汚くて上の条件を無視してる。
個人的には3が視認性の上では一番良いと思ってはいるが、流石に2,4と互いに素な数だと
プログラム的になんか嫌なこと起きそうで自分では使ってないな。

485:デフォルトの名無しさん
19/02/19 21:05:35.97 xEsYUfd7.net
タブ幅小さくして、その分変数名を分かりやすく長くするんだよ

486:デフォルトの名無しさん
19/02/19 23:16:38.92 8Y/JNp+N.net
>タブ2で見ずらくなるようなネストの深さと関数の長さになるのが悪いと
2派と4派の対立は4が深すぎるか、2が浅すぎるかなのに「2で見ずらくなる深さ」って想定おかしくね?
3派は間とって3だよ。こっちは普及してないのが問題。

487:デフォルトの名無しさん
19/02/19 23:29:48.61 5Qp7yTUV.net
Scalaみたくスタイルガイド作っちゃえばいいのに
そうすれば「スタイルは公式に従うように」の一言で済む

488:デフォルトの名無しさん
19/02/19 23:31:07.48 DbU8mxgP.net
ハードタブなら各自好きな幅にすればいいから揉めないのにね。

489:デフォルトの名無しさん
19/02/19 23:44:16.88 /QLumg1k.net
回りの多数派にあわせるだけの話
こういうのにこだわるやつは大抵バカ
可読性w

490:デフォルトの名無しさん
19/02/20 00:10:42.00 PUv5Mo1S.net
なんてここでタブ・スペース論争してんだ
どうせ一人でしか書かねえくせによ~

491:デフォルトの名無しさん
19/02/20 00:20:53.21 tgLGxeUk.net
インデントってrustfmtの話?

492:デフォルトの名無しさん
19/02/20 09:53:44.02 +ywZrRmq.net
>>489
ほんこれ
見やすさとか人によって違うしどうでもいい

493:デフォルトの名無しさん
19/02/20 15:04:45.66 NsAPC4E4.net
エディタファシストなのでエディタを開発したことないやつは駆除されるべきなのではと考え始めて来た。やばい

494:デフォルトの名無しさん
19/02/20 15:58:40.55 agArr1lp.net
昔々学生の頃に学校のワークステーション使ってXlibでドット編集してXPMファイルで出力するなんてものを作った覚えがある。
あらから29年。時の経つのは早いものぢゃ。

495:デフォルトの名無しさん
19/02/20 19:43:00.89 v7iPz90J.net
29年前にRust使えたんだ
すごいな

496:デフォルトの名無しさん
19/02/20 19:44:18.14 sr7oPl81.net
読み込んで表示するより出力の方がはるかに簡単だしな

497:
19/02/20 19:52:10.09 P8vN2pc3.net
>>494
xlib ダイレクト記述、とは猛者ですね…
私も最近になって xlib をバシバシ触ろうと思っていますが、いい参考書はありませんか?

498:デフォルトの名無しさん
19/02/21 11:19:20.33 TingKcVp.net
XlibってCの悪いところを煮詰めたような設計だったな
Rustとの相性は最悪だろう

499:デフォルトの名無しさん
19/02/21 13:00:40.17 1Gw0PDsD.net
日本語の参考書はX11R5の大昔に出た本ぐらいじゃないかな

500:デフォルトの名無しさん
19/02/22 15:32:44.85 bcwEHSMY.net
うん。新しいXlibの本は知らないなあ。
探す気も起きないから知らないだけかも知れないが。

501:デフォルトの名無しさん
19/02/22 15:35:39.38 bcwEHSMY.net
>>498
なんというか、オブジェクトを作って操作するような感じなので今時の言語用のオブジェクト指向に合わせたラッパーは作れると思うが、需要はほとんどないような気がする。

502:デフォルトの名無しさん
19/02/22 16:19:45.55 aMjiHo6w.net
xlibの使いやすいラッパーとしてはgtk+などなどがあるんわけで…

503:デフォルトの名無しさん
19/02/22 17:04:13.83 PtH+29Wq.net
GTKはクソ

504:デフォルトの名無しさん
19/02/23 05:53:32.47 jUbY9V9a.net
ちゃんとgtk-rsあるやん

505:デフォルトの名無しさん
19/02/23 22:01:15.49 0ZfqWIIS.net
>>465です
スタックにpopを実装しました
pop自体はうまく動いているようですが…
popした時の対象の物がどのタイミングで破棄されているのかを調べようと思いstd::ops::Dropを実装しようとしましたがうまくいきません。
URLリンク(play.rust-lang.org)
何がいけないのでしょう

506:デフォルトの名無しさん
19/02/24 15:19:37.98 Vg8zIes/.net
haskellでの、文字列[Char]を切り貼りみたいな事をするには、
Vec<char>を操作するので合っているのかな?

507:デフォルトの名無しさん
19/02/26 12:11:01.89 gUDVcbaI.net
>>487
>>480

508:デフォルトの名無しさん
19/02/27 21:22:09.87 DI6YZOkq.net
クローン技術で乗り切った

509:デフォルトの名無しさん
19/03/02 01:38:04.42 TjOpVvei.net
>>505 Dropを実装した型の値がdropされるとき、フィールドは全てvalidじゃないといけない。
そのままメモリ解放するだけ=Drop未実装ならいいんだけど、drop中にinvalidなフィールドにアクセスできちゃうのがダメだというのが問題
解決案は、ここでもOption::takeかmem::replaceでNoneにすげ替える
けど、まずはLearning Rust With Entirely Too Many Linked Listsを写経してみた方が良いよ
今のListの定義だと無駄なメモリを食うし、パターンマッチとstructは相性があんま良くないし、これから先も似たような穴にハマると思われる

510:デフォルトの名無しさん
19/03/02 15:28:49.59 jUIKeWUS.net
Rustいいらしいですよって話を会社でしたら、
テックリードが「RustでできることはCやC++でもテストとツールで十分やってけるからイラネ」って言ってたけどマ?

511:デフォルトの名無しさん
19/03/02 15:50:22.82 s27Iehbv.net
&str で関数に渡すと解放されてしまって使い回すこどができないのですが
使い回す方法ありませんか

512:デフォルトの名無しさん
19/03/02 15:52:40.18 fWMJYJ6q.net
コーディングスタイルを徹底的に統制できるならマ

513:デフォルトの名無しさん
19/03/02 15:55:37.40 rXDVLiGa.net
>>510
コンピュータでできることは人の手と頭でできるよ

514:デフォルトの名無しさん
19/03/02 17:11:13.26 ACbQR/xi.net
>>512
じゃあうちにはたしかに要らんなあ
そんな統制がいるほどの人数でもないし
回答サンクス

515:デフォルトの名無しさん
19/03/02 17:40:27.42 NCWcHh/2.net
>>510
そのリードが C++でauto_ptrがdeprecatedになった理由とMove Semanticsと右辺値参照の関係をちゃんと説明できる人なら C++ でいい

516:デフォルトの名無しさん
19/03/02 18:53:06.97 aD19gS0i.net
人間が信用できないからこそCよりRustだろ
気を付けてコーディングすればミスはなくなる、ってのは戦前の日本軍的な精神論だ
コンパイラ先生に怒られながら厳しい指導の下にやっとコンパイルしていただくのがRust
この記事とか参考になるかも
URLリンク(tomo-wait-for-it-yuki.hatenablog.com)

517:デフォルトの名無しさん
19/03/02 19:04:12.47 sRR7A1mE.net
プログラミングは製造業だからな
厳格なチェックは本来あって当然

518:デフォルトの名無しさん
19/03/02 19:10:02.40 Zilw84iH.net
>>511
&str is 何?

519:デフォルトの名無しさん
19/03/02 19:13:35.19 bakyLAA5.net
>人間が信用できないからこそCよりRustだろ
>気を付けてコーディングすればミスはなくなる、ってのは戦前の日本軍的な精神論だ
ぴんとこないな。
rustの場合、お役所とおせばテストなど自前でしなくともokっていう
変な信用を生んでるだけだろ。そっちのがよっぽど日本的だと思うがね。

520:デフォルトの名無しさん
19/03/02 19:33:57.30 aD19gS0i.net
>>519
今時の言語なので、ユニットテストは標準で整備されてるよね
コンパイラは計算ミスや仕様間違いまではチェックしないので

521:デフォルトの名無しさん
19/03/02 20:15:35.93 ZTrGEwqS.net
考え得る全パターンをいつもテストできるならいいんじゃないの

522:デフォルトの名無しさん
19/03/02 20:36:46.57 fWMJYJ6q.net
メモリ破壊はユニットテストで検出されないケースも多い

523:デフォルトの名無しさん
19/03/02 21:36:12.88 TjOpVvei.net
注意力ってのは慣れると省力できるようになるけど、有限リソースだし個人の習熟度と体力に依存するんで、目に見えない負債になる
新しい言語を理解するコストは償却できるけど、注意深さってのはソースコードを触る限りはコストを発生し続ける
機械がチェックできることは機械にやらせた方が絶対に良い

524:デフォルトの名無しさん
19/03/02 22:15:15.48 E3UUkV/K.net
製品にするコードってどうせMISRA C辺りの静的解析噛ますし
今時ならvalgrindもテスト項目に入ってるだろうし
Rustなら全部コンパイラがやってくれる!と言われても、
いやCにも外部ツール入れれば同じことできるし……としか思わんのだよな
個人的にはクラスよりトレイトの方がしっくりくるからそれだけでもRustは意味があると思うが

525:デフォルトの名無しさん
19/03/02 22:44:32.15 bakyLAA5.net
>>523
枯れてないコンパイラの癖に合わせる方がよっぽど注意力を削ぐと思う。
コンパイラになんでも機能ぶっこむより524のように構成した方がどのツールが文句言ってるのか
よっぽどわかりやすい。
機械にチェックさせるのはいいがシステムとしてモジュラリティーが高いツールの組み合わせのが
結局使いやすいし、ロバストになる。

526:デフォルトの名無しさん
19/03/02 22:52:05.50 SlOxf6t0.net
どうでもいいけど言語の持つ表現力とかは完全に無視なん?

527:デフォルトの名無しさん
19/03/02 22:57:46.43 fWMJYJ6q.net
>>526
C++の方がノイズが多いくらいで表現力自体は大差ないわ
もちろん、そのノイズによる可読性や生産性の低下は決して無視できるものではないが

528:デフォルトの名無しさん
19/03/02 22:59:57.91 BjkGLvi1.net
>>525
Cだって作成当初よりコンパイラでチェックする範囲広げてるけど
全否定?

529:デフォルトの名無しさん
19/03/02 23:01:34.51 E3UUkV/K.net
>>526
CやC++との比較でそこ(表現力)に触れずに
「Rustは安全!C/C++はfree/delete忘れがーアクセス違反がー領域の破壊がー」ばっか言ってる人が多いのが疑問って話な
俺はトレイトに可能性感じてるから期待してるよ
C++のテンプレートとか関数オブジェクトとか書きたくねえし
あとチェッカーとコンパイラ分けるべきか合体させるべきかについては、
どっちにも善し悪しあるからCとRustどっちが優れてるとかはないと思ってる

530:デフォルトの名無しさん
19/03/03 00:06:30.62 vKpOoBmI.net
URLリンク(hacks.mozilla.org)
MISRAに適合しててvalgrindでチェックしてもこういうのは無理じゃない?他に例が思いつかないけど

531:デフォルトの名無しさん
19/03/03 00:19:36.71 cZvjaCEe.net
Cじゃ確かに無理かもわからんが、C++のstd::vectorならatメソッドで同じことできるぞ
毎回アクセス範囲が適切か確認するから結局オーバーヘッドになってほぼ使われんがな

532:デフォルトの名無しさん
19/03/03 00:45:31.79 c3K18875.net
基本はIndex::indexを呼んで必要なとき(オーバーヘッドが気になるとき)にunsafeで囲む
C++は全関数がunsafeで意識せずVec::get_uncheckedを使うようなもの
オーバーヘッドの問題でunsafeで囲んだらRustだってツールじゃムリ五十歩百歩って言われるかもしれないけど、五十歩の方がいい

533:デフォルトの名無しさん
19/03/03 00:45:55.40 m5mWw6SB.net
MozillaやRust作者の人達が、valgrindやチェックツールの使い方を知らない
アホ揃いだと思ってるの?

534:デフォルトの名無しさん
19/03/03 00:57:04.94 cZvjaCEe.net
>>533
MozillaやRust作者の人達の過激な信者が
valgrindやチェックツールの存在を知らないか軽視してるせいで
Rustの宣伝に対して過剰にC/C++をディスってるアホ揃いだと思ってる
もちろんそうじゃないRust推しもいることは承知の上だ
逆に、「そういうツール使えばC/C++だけで十分Rustなんてイラネ」って意見も
ベクトル違うだけで同じくらいアホだと思ってるがな
だからこそトレイトの使い方だとかモジュールの仕組みだとか
外部ライブラリ(crate)の扱い方の方向での他言語との比較が
あんまり見えないことが問題だと思うんだが
そういう意味で話題提供すると、cargoって結構disられてるけど
どの変がクソなのかいまいち分からん
キャッシュサーバ持てないって話ならnpmとかbundleとかgo getも大概では?

535:デフォルトの名無しさん
19/03/03 06:22:48.61 ChZC+e8W.net
>>519
ほんそれ

536:デフォルトの名無しさん
19/03/03 07:44:53.56 lQ42Eo+G.net
みんな同じ話題について話してるのか?
好き勝手独り言言ってるようにしかみえない。

537:デフォルトの名無しさん
19/03/03 16:01:14.67 r7+VYZoa.net
これがいつもの流れだ

538:デフォルトの名無しさん
19/03/03 16:51:19.54 ebEU4O2W.net
そりゃーRust信者とRustアンチしかいねえからな
話が噛み合うわけない

539:デフォルトの名無しさん
19/03/03 16:53:34.09 4supDM4A.net
Rustだと(unsafeなし、コンパイラのバグなしなら)プログラムの全実行パスでメモリリークや破壊がないことが保証できると思うけど、
C/C++で同等のチェックができるツールってある?
valgrindは単にvalgrindで実行したパスで問題なかったことが分かるだけって理解なんだけど。
もしあるならそれはそれで使ってみたい。

540:デフォルトの名無しさん
19/03/03 17:11:00.51 vKpOoBmI.net
>>539
俺もその認識なんだけどvalgrindナメてたかな
Firefoxのcssのバグはテスト書いて発覚した感じなんだけど

541:デフォルトの名無しさん
19/03/03 17:26:47.25 oO/57lY2.net
その手の静的解析ツールはたいてい商用製品だね。一番手頃なのはVSで使えるSALかな。

542:デフォルトの名無しさん
19/03/03 17:57:36.24 lcRojjEc.net
顔本のinferがオープンソースで全パス調べてくれるやつだな
企業ならcoverity課金してるだろ

543:デフォルトの名無しさん
19/03/03 18:42:44.87 DMRKI5H5.net
inferは知らなかった。ちょっと試してみる。
まぁ商用含めても原理的に検出率100%とはいかないだろうけど、
Rustだって標準ライブラリ内のunsafeバグとかあるからいい勝負なのかな。

544:デフォルトの名無しさん
19/03/03 18:48:10.42 Y2LadsyV.net
全パスチェックしてもRustのコンパイル時のチェックには及ばない
全パスチェック程度で済むものならば、Rustにあんなややこしい概念を持ち込む必要はないんだよ

545:デフォルトの名無しさん
19/03/03 18:59:21.85 jeWiu9AY.net
言語として縛りを強制するってとこに旨みがあるよね
静的チェックを過大評価云々は的を外した無意味な議論

546:デフォルトの名無しさん
19/03/03 19:51:05.48 BbxzBxVK.net
Rcなりunsafeなりあるわけでなんだかね。
rustを意識してプログラムをすることに意味はあるがrustの実装系を使うことに
そこまで意味はない。

547:デフォルトの名無しさん
19/03/03 22:01:18.12 lQ42Eo+G.net
俺はweb屋さんだけどサーバ書くならrustが最高とおもってる
これって過激な信者?

548:デフォルトの名無しさん
19/03/03 22:32:13.67 cCLOOBeX.net
信者だアンチだディスったディスってないでrustを語れよ

549:デフォルトの名無しさん
19/03/03 23:36:41.41 U4/3Q3+q.net
coverityとかの静的解析って誤検出が結構ある
で誤検出かどうかの人力解析も超めんどくさい
かつ1度の解析にめっちゃ時間かかる
これがあるからC/C++でもRust同等とかないわ

550:デフォルトの名無しさん
19/03/03 23:53:56.27 60sPzVWf.net
>>547
web屋さんはもともとC++なんて使ってないし使う人が順調に増えていってる印象
問題はweb屋さん以外にどうアピールするか

551:デフォルトの名無しさん
19/03/03 23:58:03.76 +k8QiguP.net
どうせ一時の流行で終わるんだから被害は少ないほうがいい
Scalaとかも中途半端に業務系が乗っかってきはじめた矢先に梯子外されて死屍累々の惨状だったし

552:デフォルトの名無しさん
19/03/04 01:59:21.29 alP8X7u2.net
>>551
なんか梯子外された事件あったっけ?
Java8の登場でScalaがただの難解なJava8になった話?

553:デフォルトの名無しさん
19/03/04 05:28:04.34 voD3ILMP.net
scala十分流行ってるでしょ

554:デフォルトの名無しさん
19/03/04 05:49:29.62 DAN4+o0x.net
えっ

555:デフォルトの名無しさん
19/03/04 07:38:18.48 yQsTNF7X.net
Javaは今でもクソ言語なのでScalaとは比べるべくもない
単に日本の人月制度とマッチしなかっただけ
Rustもそうなる
学習コストの高い良い言語より学習コストの低い低単価で人を集められる言語

556:デフォルトの名無しさん
19/03/04 08:34:11.43 i9k284UJ.net
色んな業界があるのに一緒くたにして評価できなくない?

557:デフォルトの名無しさん
19/03/04 16:55:17.66 PCPHBNAL.net
>>555
JavaやPHPはともかく、そういう意味でCやC++がコスト低い言語とは思えんが

558:デフォルトの名無しさん
19/03/04 22:48:27.10 GJN1vwhQ.net
個人的な経験だけど、Rustのコンパイラを単純に黙らせるようにソース修正していくと物凄く汚くなることが良くある
ので、そもそもの設計を見直すようになったり、かくあるべしって仮設を明確にするクセが身についた気がするよ

559:デフォルトの名無しさん
19/03/04 23:49:25.53 xIknJLrh.net
>>557
低学歴のC/C++職人様はつぶしが利かないからスキルの割に高くないイメージ

560:デフォルトの名無しさん
19/03/05 05:49:14.36 437fdADv.net
資源の共有状態を見直すってのはrustは置いといてもプログラムをに置いてやっぱ本質だなと思う。

561:デフォルトの名無しさん
19/03/05 23:33:10.77 oKijR9sc.net
ArcとかMutexとかRwRockが気に入ってる
最初めんどくさかったけどよく考えたら当たり前に必要なんだよね
そこを隠蔽しないことでコストのトレードオフをプログラマに意識させるのがよい

562:デフォルトの名無しさん
19/03/06 00:07:02.80 2JVBykl1.net
練習で他言語のプログラムを移植してみたらコンパイラに
ガンガン怒られて本人が壊れるような使い方しないからと手抜きしていた部分が
洗い出されてなるほどなあと思った

563:デフォルトの名無しさん
19/03/06 00:31:05.23 a/Fk2z1+.net
>>558
黙らせるだけで終わってしまうわ

564:デフォルトの名無しさん
19/03/06 02:33:21.88 ZekpWDr2.net
rustでguiだと何使う?
やっぱgtk?

565:デフォルトの名無しさん
19/03/06 06:28:18.81 kGbjMq/w.net
rustに限らず他の言語でもgtkぐらいしかないでしょう

566:デフォルトの名無しさん
19/03/06 10:55:39.33 YRi0lSUm.net
んなこたーない

567:デフォルトの名無しさん
19/03/06 11:15:19.50 VrPN+K4q.net
orbtk?
redoxのguiだけど、windowsでも動いたよ。

568:デフォルトの名無しさん
19/03/06 12:02:48.23 mg6kC0Yg.net
GTKは糞

569:デフォルトの名無しさん
19/03/07 02:41:58.99 se1YsRNA.net
>>561
当たり前じゃねえから
PythonとかPerlとかRubyで書かれたプログラムにはないけどちゃんと動く
それともこれらの言語で書かれたものはプログラムじゃないとか言っちゃう系?

570:デフォルトの名無しさん
19/03/07 07:08:20.11 USPSPd7n.net
>>569
パイソンだって排他制御書くじゃん

571:デフォルトの名無しさん
19/03/07 07:18:52.41 rioBJ/QG.net
RwRockが自然に必要ってのは言い過ぎだわな。
必要なところは必要だろうがそれがあまりに多いのは多分設計ミスってる。

572:デフォルトの名無しさん
19/03/07 08:07:15.51 USPSPd7n.net
ですから必要なところは必要と言ってるだけじゃないですか
当たり前にってのは原理的に必要と言ってるだけだよ

573:デフォルトの名無しさん
19/03/07 09:00:14.60 V2DuVpEL.net
>>569
Rustの設計思想理解してないのか
単にアホなのか

574:デフォルトの名無しさん
19/03/07 09:44:04.96 kIvAXfDl.net
まぁ自分の書いている範囲内しか見えない人は普通にいるだろう。
どの言語だってライブラリや処理系レベルでは排他制御はあるし、
逆にどこにもなかったら単に間違ってる。

575:デフォルトの名無しさん
19/03/07 11:44:24.50 ujmnvZmf.net
Perlは知らんがRubyやPythonには
GILっていう排他制御が言語処理系に含まれてることを考えると
非常に味がある

576:デフォルトの名無しさん
19/03/07 11:46:01.46 MaxgRiSY.net
Luaって息してないの?

577:デフォルトの名無しさん
19/03/07 11:50:35.55 ujmnvZmf.net
>>576
他の言語が息できない分野でエラ呼吸してるよ

578:デフォルトの名無しさん
19/03/07 12:47:59.26 rQAOToBL.net
>>575
GILは複数スレッドの競合によってインタプリタがぶっ壊れるのを防ぐために必要な、インタプリタ自身の内部的な排他制御
アプリケーションコードで行う排他制御の代わりにはならないよ
インタプリタがスレッドセーフでない糞実装であるための苦肉の策で、
Rust含め元々スレッドセーフな「まともな処理系」なら全く必要のないもの

579:デフォルトの名無しさん
19/03/07 12:55:45.82 NXRNz+RG.net
そういや Perl でマルチスレッドのプログラムは作ったことないなあ。fork してマルチプロセスにするのはよくやるが。

580:デフォルトの名無しさん
19/03/07 13:06:36.81 V2DuVpEL.net
>>575
GILは欠陥扱いだろ…

581:デフォルトの名無しさん
19/03/07 14:00:26.28 GuWZeuUG.net
そうか、今時の人はみんなLock-freeアルゴリズム使いこなすんだな
Mutexなんて見たことないんだ

582:デフォルトの名無しさん
19/03/07 16:39:47.28 4Ef40pSv.net
OSかそれに近いコア領域とかトランザクション必要なデータベースでも書かん限り
MutexとかLockとかが必要だとは思わんなー
Web系にもてはやされてるらしいけど君らそもそもそれオーバーキルどころか逆に足枷ならん?って思う

583:デフォルトの名無しさん
19/03/07 18:08:18.69 pnI3L7PU.net
そういうあんたは並行処理どうやってんの?

584:デフォルトの名無しさん
19/03/07 18:38:08.85 G0X+tUuM.net
>>583
そもそもそんなに並行処理をOSやミドルウェア頼りじゃなくて自分で書くが必要な場面て例えばどこ?
と質問に質問で返してみる

585:デフォルトの名無しさん
19/03/07 18:43:18.41 G0X+tUuM.net
念のため言っとくと、別にロックなんて無駄だとか言いたいんじゃなくて
ArcとかMutexとかRwRockが当たり前に必要とかいうマウンティングに反論してるだけな

586:デフォルトの名無しさん
19/03/07 18:54:58.71 pnI3L7PU.net
>>584
仮にお前がミドルウェア使うだけの些末プログラマ
だとしてもミドルウェアがマルチスレッドで動いていたり、
複数のミドルウェアを使う場合は
排他処理が必要なケースは普通に出てくるだろ

587:デフォルトの名無しさん
19/03/07 19:01:04.74 pnI3L7PU.net
>>585
rustをc++の代替候補として考えるなら使って当然
並行処理でこそrustの有り難みが生きるわけだし
マウンティングに感じるのは単にお前が並行処理に馴染みがないからだろ

588:デフォルトの名無しさん
19/03/07 19:49:57.49 G0X+tUuM.net
>>586
それはそんな使い方する方が何かしらおかしい
排他制御ってのは本当に必要なところ以外ではやらないように回避するもんだ
>>587
Rustの旨味がそこにあるのは否定しないが、
それが全プログラマが当たり前のように使いこなせるべきっていうのは
ただのマウンティングだろうに

589:デフォルトの名無しさん
19/03/07 20:59:20.87 pnI3L7PU.net
>>588
排他が必要だからするにきまってんじゃん
そういうところに思考が及ばないやつはjsだけ使ってりゃいいと思うよ

590:デフォルトの名無しさん
19/03/07 21:02:19.38 V2DuVpEL.net
プログラマーがリソースの共有状態を意識すれば
無駄な排他制御しなくても大丈夫だという主張かねえ

591:デフォルトの名無しさん
19/03/07 21:17:09.18 0XBNAuOg.net
RwRockってRwLockの間違い?
そういう言葉遊びのライブラリでもあるの?

592:デフォルトの名無しさん
19/03/07 22:06:32.44 rioBJ/QG.net
RwLockが少ない設計で組めたぜ!って自慢するならともかく
RwLockめっちゃ使ってますなんてアピールする奴は普通にバカだろ。

593:デフォルトの名無しさん
19/03/07 22:11:49.22 kIvAXfDl.net
単に日本語の問題では?
多分解釈が二通りある。
マルチスレッドプログラムにとって排他制御は当たり前に必要
プログラマにとって排他制御は当たり前に必要
個人的には文脈から前者と理解したけど、後者だと思うなら言い過ぎだというのは分かる。

594:デフォルトの名無しさん
19/03/07 22:15:22.37 0XBNAuOg.net
lockをrockと間違ってもしれっとしてるやつもかなりのバカだよね
ソフトウェアの超頻出単語じゃん

595:デフォルトの名無しさん
19/03/07 22:34:05.54 USPSPd7n.net
だからプログラマにとって当然の能力という意味で言ってないって
めっちゃ使ってるとも言ってないって
隠蔽しないから必要性とコストを意識できていいねって言ってるやんけ
誤字はすまんかったけど

596:デフォルトの名無しさん
19/03/07 22:44:55.70 rioBJ/QG.net
まあ俺が採用だったらここまであからさまな地雷は避けるわ。

597:デフォルトの名無しさん
19/03/07 22:59:19.47 USPSPd7n.net
なぜ自分が採用に関与できない雑魚だと表明してしまうのか理解できないけど、そうしたほうがお互い幸せになれるだろうね

598:デフォルトの名無しさん
19/03/07 23:52:54.26 4aDKvx3Q.net
>>596
お前は派遣だろ目を覚ませ( ‘д‘⊂彡☆))Д´) パーン

599:デフォルトの名無しさん
19/03/08 07:01:44.63 ySJgt2xb.net
こういう奴らに並列実装なんてさせるから地獄を見ることになるんだよな。。

600:デフォルトの名無しさん
19/03/08 09:05:39.84 B6Ayhhcz.net
Rustなら地獄を見そうなコードは
コンパイラが怒るからよかったじゃん

601:デフォルトの名無しさん
19/03/08 09:22:23.55 FgM3Elcd.net
Mutexとかもはや古典技術でしょ
Rust使う領域では理解してて当然と言っていいよ
これがマウントだとしたらキレイなマウント

602:デフォルトの名無しさん
19/03/08 11:37:10.05 41t9AOm1.net
>>601
そういうことばっか言ってるからいつまでも二流言語と違うんか?

603:デフォルトの名無しさん
19/03/08 12:02:47.61 qCBno44f.net
フリーランチの時代はとっくに終わってるのに気づいてないんだ…
プログラミング界の横田庄一だな

604:デフォルトの名無しさん
19/03/08 12:28:00.15 pv8HlopZ.net
横田庄一と聞いてすぐに誰の事かわかる人は横田庄一

605:デフォルトの名無しさん
19/03/08 12:29:45.82 pv8HlopZ.net
いやちょっと待て、横井だよな?

606:デフォルトの名無しさん
19/03/08 13:03:58.27 qCBno44f.net
>>605
すまん横井だw
よっこいしょういち

607:デフォルトの名無しさん
19/03/08 13:17:39.94 41t9AOm1.net
Rockといい横田といい、この程度のことも注意できない奴だから
こんな口うるさい姑みたいなやりたいこともやりにくい言語をもてはやすんだと納得


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch