プログラミング言語 Rust 2at TECH
プログラミング言語 Rust 2 - 暇つぶし2ch150:デフォルトの名無しさん
16/12/21 12:40:43.96 kCrlwcjM.net
>>143
これのどこが3Dなんでしょう

151:デフォルトの名無しさん
16/12/21 14:53:32.77 C1GPbqLl.net
>>146
Rust人口が増えて欲しいので ぜひやってみて
>>147
『視差遮蔽マッピング/Parallax Occlusion Mapping』をやってる
子細はググって下さい

152:デフォルトの名無しさん
16/12/21 15:09:44.32 wjBBiIkf.net
目が不自由だからかな
奥行が全く感じられない

153:デフォルトの名無しさん
16/12/21 18:13:34.95 vaU6q8is.net
ゲームエンジン(ライブラリなのかな?)もあるしね

154:デフォルトの名無しさん
16/12/21 22:25:50.83 ej8UmSNF.net
C#風に
yield return someValue;
としたいんだけど、Rustのコルーチンはどうですか?

155:デフォルトの名無しさん
16/12/22 00:30:05.93 qT53/Nxx.net
>>151
Option<Item>を返すようにして while let かな
Iteratorをderiveすれば for にも渡せます
URLリンク(play.rust-lang.org)

156:デフォルトの名無しさん
16/12/22 00:42:28.78 zFwIQNSP.net
言語組み込みでは用意されていない
試してはないけど URLリンク(github.com) みたいなライブラリはある

157:デフォルトの名無しさん
16/12/22 01:50:14.99 ORYJE8lc.net
Rust触ってみた感じいいなとは思ったんだけど型理論周辺がさっぱりで
って時はどの辺から始めればいいの?やっぱり型システム入門?

158:デフォルトの名無しさん
16/12/22 04:57:42.70 zFwIQNSP.net
URLリンク(bluss.github.io)
目からウロコが落ちた
実際にこんなブレースの使い方をしているコードを見かけたら読みにくいと言ってブチギレると思うけど

159:デフォルトの名無しさん
16/12/22 13:02:02.41 y+mdv7YD.net
tcl/tk 知らんの

160:デフォルトの名無しさん
16/12/22 13:16:30.31 vR+H7QAs.net
rust/tkでも流行ってんのかとググったけどそんなことはなかった

161:デフォルトの名無しさん
16/12/22 15:25:02.24 cRDgF52C.net
Rustって、こういう構造体を返す関数作れないんだね。
struct {
 file_content: String,
 header: &str, // 同じ構造体インスタンスのfile_contentのスライス
}

162:デフォルトの名無しさん
16/12/22 21:30:47.90 qT53/Nxx.net
>>158
範囲情報をRangeで持っておいて、headerを関数にするのでは足りないかな?
URLリンク(play.rust-lang.org)

163:デフォルトの名無しさん
16/12/23 00:33:16.85 mdacHMN9.net
Range.cloneは何とかならぬかと試行錯誤したけど
省略表記にした所でRangeを作るには変わりないから無駄な努力だった
URLリンク(play.rust-lang.org)
元の方も考えたけど、>>158は所有者が2名になるから無理だよなぁ

164:デフォルトの名無しさん
16/12/23 06:17:00.54 6bIGT6Sw.net
Announcing Rust 1.14
URLリンク(blog.rust-lang.org)
WebAssemblyサポートですって奥さん

165:デフォルトの名無しさん
16/12/23 07:54:39.71 D+0Lwjqy.net
>>159
なるほど。
これをRustでも書けてると見るか、書けてないと見るかは微妙なところだな。

166:デフォルトの名無しさん
16/12/23 08:18:02.54 mdacHMN9.net
このインターフェース設計が生理的に気分悪いならrustは使わない方が良さそう
極標準的な手法だから、これがダメなら何も出来ないよ

167:デフォルトの名無しさん
16/12/23 15:10:42.06 6bIGT6Sw.net
ライブラリ設計において、何かの値を所有権付きで受け取って変換するような関数が失敗した場合にはErrで元の値の所有権を返すようにしておいた方が便利だよな
ただ、std::collections::HashMapとかは値を削除するときキーの所有権を返してくれないから、ある値を取り出して変換して返すような処理で失敗した時にキーの複製を用意しないといけないのが気持ち悪い
所有権を受け取る前に借用してバリデーションを走らせるという手もあるけど、それはそれでオーバーヘッドになるし

168:デフォルトの名無しさん
16/12/23 16:07:53.79 LOFIUVE3.net
気にしすぎや

169:デフォルトの名無しさん
16/12/23 19:34:18.37 efetRagZ.net
マシン語読めって話何だろうけど 所有権を手離す為のcloneって
copy on write的な最適化は期待出来ないんかね?

170:デフォルトの名無しさん
16/12/23 22:45:04.10 oLVQTEs3.net
LLVM IRのことをマシン語と表現しているのか、それとも本当に機械語を読むつもりなのか

171:デフォルトの名無しさん
16/12/24 02:20:23.19 /RBsJIky.net
そもそも所有権を手放す為のcloneって何なんだ

172:デフォルトの名無しさん
16/12/24 12:04:03.69 /RBsJIky.net
OptionにもHashMapのor_insert_with()みたいな機能があれば良いのに

173:デフォルトの名無しさん
16/12/24 12:14:13.23 XL3bxxKp.net
Optionとコレクションクラスとの統一感は無いね

174:デフォルトの名無しさん
16/12/24 16:20:09.59 dDtDlNib.net
Someだったらそのまま、Noneだったら指定のOptionを得る
ってんなら単にOption.or()でいいのではないかと
イマイチ何を実現したいのか分からんけど

175:デフォルトの名無しさん
16/12/24 16:25:11.60 /RBsJIky.net
>>171
つまりこういうことがしたい
URLリンク(play.rust-lang.org)

176:デフォルトの名無しさん
16/12/24 16:29:36.25 /RBsJIky.net
あ、間違えた方を上げちまった
where T: Copyは無視してくれ

177:デフォルトの名無しさん
16/12/24 16:47:44.72 dDtDlNib.net
unwrapだと思ってたら実はas_refだったし
immutableな取り回しじゃなくmutableな取り回しだし、、、
immutableならOptionじゃ合わないわな
そこを諦めたら既存APIで十分な気がするけど、そこがこだ


178:わりならStruct新設から始まりそう



179:デフォルトの名無しさん
16/12/24 16:56:08.78 dn0dwenj.net
unwrapのランタイムコストが気になるマン

180:デフォルトの名無しさん
16/12/24 16:59:11.50 /RBsJIky.net
>>174
self: &mut _を受け取るメソッドでself.cache的な何かを扱いたいことってない?
まあ別に、その場で書こうと思えば簡単に書ける処理だから絶対に欲しいってわけではないけど……
>>175
unsafe { mem::transmute::<_, &T>(self.as_ref()) }

181:デフォルトの名無しさん
16/12/25 01:33:20.36 P0r3EIva.net
ぶっちゃけ今のRustってC++14の機能積極的に使うのよりメリットある?

182:デフォルトの名無しさん
16/12/25 01:47:23.23 jMjv2Bym.net
borrow checkerが凶悪な所がメリット
あとはcargoが標準で色々やってくれるから、全くメリットがないこともないと思う
業務ならC++11/14を使うべきなんだろうけどさ
頑張ればsmart pointerとmakeで大体のことはフォロー出来そう

183:デフォルトの名無しさん
16/12/25 04:20:17.08 klev3clW.net
C++は何でもできるんだから、新興言語のおいしい機能を盗み取っちゃえばいいじゃん

184:デフォルトの名無しさん
16/12/25 07:43:09.19 gfQaVVC2.net
コンセプトちゃんはどうなった?

185:デフォルトの名無しさん
16/12/25 20:33:17.39 X66rp15o.net
qiitaで済まんが、↓を読むとモダンなC++を使いこなすよりもrust使う方がよっぽど楽なんじゃないか
URLリンク(qiita.com)
よく、C++の機能を全部学ぶ必要は無いよ使うとこだけ理解すればいいよ、と言う人がいるけど、
コードは書くより読む方が大変なことを失念してるんじゃないかと思う
他人のコードの読解は困難を極めますよって自白してんじゃないかと

186:デフォルトの名無しさん
16/12/25 20:35:24.70 OIpmFOQN.net
あれやろ、職場のコード規約で使用する機能を制限すれば読むのにも困らんやろ(白目)

187:デフォルトの名無しさん
16/12/25 20:50:48.74 OHOD3vvf.net
理解できない人がいるのでジェネリクスとやらは使ってはいけません

188:デフォルトの名無しさん
16/12/25 23:52:57.50 P0r3EIva.net
>>183
ジェネリクスだめならモダン言語は殆ど、ってかjavaすらダメじゃね?

189:デフォルトの名無しさん
16/12/26 00:01:48.58 mhrTCx4U.net
JavaのジェネリクスもModern Java(造語)な時期じゃないかね
C++でもboostで使われてた頃な気がする
>>181をざっくり読んだけど、C++を仕事でやってたらこれくらいは別に問題ないと思うけどな
rustみたいに数ヵ月単位で言語仕様に仕変入る方がコードの解読に困難を極めないか?
古いバージョンで固定すればいいじゃんってんなら何も言うことない

190:デフォルトの名無しさん
16/12/26 01:02:26.94 xO25f93t.net
C++は継ぎ接ぎだらけのズタボロ言語

191:デフォルトの名無しさん
16/12/26 01:32:03.49 zGEIM/Ml.net
>>183
理解できない人をチームから外せばおk

192:デフォルトの名無しさん
16/12/26 02:42:52.09 kYuQe4Wz.net
C++を貶すつもりは無いけど、ジェネリクスもコンパイル時計算もtemplate任せってのが傍から見てて怖い
templateの過剰使用のせいか、エラーメッセージが分かりにくい&バグを潰しにくいっていう印象がある
ML系言語の発展で、型システムを柔軟にすれば大抵のことは分かりやすく実現できるよって分かって、
それをつまみ食いしたrustは実はかなり分かりやすいし、勉強の資料も実は少なくない
あと、URLリンク(github.com)
で、1.0.0からLanguageの項目がどれくらい変わったか見てくと、実はほ


193:とんど変わってないよ。 マクロが結構強化されたんで、マクロを定義しまくるcrateは影響があるかもしれんね。 ただ、そういうのは大抵DSLをマクロで!っていう特殊な事例が多いんで、何したって読みづらい



194:デフォルトの名無しさん
16/12/26 03:53:18.15 o+MLW/qO.net
>>188
コンパイル時計算はconstexprでいいだろ

195:デフォルトの名無しさん
16/12/26 07:04:10.78 mhrTCx4U.net
>>188
お前がC++をよく知らないってことは分かった
使ってる言語を兎角推すのはまるでObjC信者のようだぁ
自身の言語が至上、他は総じてクソって見えるらしいな

196:デフォルトの名無しさん
16/12/26 07:45:24.49 zGEIM/Ml.net
ウィ ワント パースペクティブ。

197:デフォルトの名無しさん
16/12/26 07:59:25.35 lZ2XshJp.net
自分の使っている言語を押しまくるのはObjC信者に限ったことじゃないと思うんですが

198:デフォルトの名無しさん
16/12/26 10:11:15.89 vXnTXx4r.net
Lispは神の言語

199:デフォルトの名無しさん
16/12/26 10:21:18.47 y2AwbG3E.net
S式は神の言語

200:デフォルトの名無しさん
16/12/26 11:42:54.85 HAos+tGx.net
C++は天動説
Rustは地動説

201:デフォルトの名無しさん
16/12/26 12:14:16.16 kSu16y2+.net
ocamlだってシンプルだったのが拡張につぐ拡張で最近は結構汚くなってるし
rustだって10年20年すれば汚くなるよ
奇麗なままでいられるのはユーザー数の少ない言語だけだ

202:デフォルトの名無しさん
16/12/26 12:16:41.00 HAos+tGx.net
Dはユーザー少ないけど汚い

203:デフォルトの名無しさん
16/12/26 13:57:45.03 3l9yWhJs.net
言語仕様の拡張にRFCが必要な言語だから、無秩序に拡張できた過去の言語よりは綺麗な仕様になる圧力は高いと思う

204:デフォルトの名無しさん
16/12/26 13:58:25.74 gUp/CjQ/.net
Rustで多態やるのはenum, trait, Boxを使い分ければいいの?

205:デフォルトの名無しさん
16/12/26 15:39:49.33 kSu16y2+.net
>>198
C++のほうを見て同じことが言えるかな?

206:デフォルトの名無しさん
16/12/26 15:59:40.77 y2AwbG3E.net
Serdeがよく分からぬ

207:デフォルトの名無しさん
16/12/26 16:42:09.73 stVLD6EM.net
>>199
オブジェクト指向入門でよくある、哺乳類クラスとか、円や矩形クラスの
例(クラスツリー)を、Rustでどう表現するのか見てみたいな。

208:デフォルトの名無しさん
16/12/26 17:56:53.49 R/Xz4XyC.net
>>202
servoでDOM表現するためのコードでやっているけどなかなかえげつない実装らしい
この前あったrustのmeetupではほかの言語のやり方をそのままrustに持ち込むべきではないと言っていた

209:デフォルトの名無しさん
16/12/26 18:06:10.80 lZ2XshJp.net
そういえばクラスの継承がないのを不便に感じたことはないな

210:デフォルトの名無しさん
16/12/26 19:41:44.19 ep/odFf8.net
ていうか、Rustで nominal subtyping を再発明する理由がない
型クラスはad hoc多相を実現する仕組みだがそもそもOOのためのもんじゃない

211:デフォルトの名無しさん
16/12/26 20:36:47.57 mhrTCx4U.net
バズワードだらけで言いたいことが分からんけど
Rustでクラス継承を実現するなら、traitをツリー継承して実装すればいいってことだな!
イマドキのオブジェクト指向はツリー継承を崇めてないから自分はやらないけど

212:デフォルトの名無しさん
16/12/26 20:51:12.09 J++O7+r9.net
ツリーでない継承ってどんなん?

213:デフォルトの名無しさん
16/12/27 00:03:40.08 z3Z5XFyz.net
バズワードって何?流行の若者言葉?

214:デフォルトの名無しさん
16/12/27 02:03:02.61 SQsOUYP2.net
みんな知った風な口きくけど、誰一人としてその明確な定義を言えない言葉のこと
Web2.0とかセカイ系とか。『自分で吐いてる言葉の意味を自分で理解できていない』ような連中をのさばらせておくと発生してしまう

215:デフォルトの名無しさん
16/12/27 02:07:36.20 4L8P6HZQ.net
バズワード
buzzword
いかにも,もっともらしい専門用語。専門家や通人,仲間内が好んで用いるような言葉。

216:デフォルトの名無しさん
16/12/27 02:14:18.61 M0D6LXD2.net
結局、哺乳類クラスはどうすりゃいいわけ?

217:デフォルトの名無しさん
16/12/27 02:17:57.69 /xy3dl1q.net
哺乳類クラスなんてものを用いる設計が悪い
、というのは言い過ぎとしても、「哺乳類クラス」とかいう抽象的すぎる問題を持ってこられても議論のしようがなかったりする
現実の問題ではケースバイケースで適切な対処が異なるんだから

218:デフォルトの名無しさん
16/12/27 02:34:20.97 M0D6LXD2.net
>>212
設計がクソなのはそうかもしれないけど、世の中がJavaっぽいクラスを前提に
動いてるんだから、それを素直にコードに落とせないのはまずいよ。
DOMやGUIライブラリ(のラッパー)はそうでしょ?

219:デフォルトの名無しさん
16/12/27 03:23:41.04 VnAYfBLQ.net
オブジェクト指向な設計を、純関数型言語で実装できない!シネ!!みたいなね
traitとstructで無理矢理クラス継承を模倣すれば?
rustのお作法から外れて邪道感溢れるから出来るの分かっていても真面目に答えるヤツはここにはおらんよ(多分

220:デフォルトの名無しさん
16/12/27 03:28:37.64 zWPkbd9P.net
GObject、うっ、頭が……

221:デフォルトの名無しさん
16/12/27 04:14:04.89 4L8P6HZQ.net
>>212>>211が本当に「哺乳類クラス」を実装したいのか問うていただけだろうに、技術的観点で批判するのでなくシネとか何とか人格攻撃するのは違うでしょうに
>>213が本当に哺乳類クラスを必要としていたのだって結果論に過ぎないのに

222:デフォルトの名無しさん
16/12/27 04:27:55.09 P0uTzVTB.net
こんなのにいちいち突っかかってたらキリが無いだろ……
この程度の揶揄を無邪気に行う奴なんて世の中にはゴマンといる

223:デフォルトの名無しさん
16/12/27 06:29:43.86 4L8P6HZQ.net
error-chainはアプリケーションで使うには便利だけど、ライブラリで使うには微妙そうだな
・Errorオブジェクトがenumじゃないから直接マッチできない(kindメソッドを介す必要があり)
・Error型にattributeを設定できない(error_chain!が吐き出すドキュメントをそのまま使わざるを得ない。ErrorKindのvariantには設定できるけど)
・backtraceクレートが動く環境でしか動かない
ライブラリが外部に露出するエラー型はやはり手動で書くのが一番無難なのかねえ……
ドキュメントを書き換えるためにラッパ型を用意するのは本末転倒だろうし

224:デフォルトの名無しさん
16/12/27 07:26:24.51 TsU75U35.net
error_chainについては以前チラ見した程度の知識しかないけど、何に使うものなのかよく分からんかったわ
println!("error: {}", e);
let mut e: &Error = &e;
while let Some(err) = e.cause() {
println!("caused by: {}", err);
e = err;
}
これじゃあかんのか?

225:デフォルトの名無しさん
16/12/27 07:55:36.77 O+RLyrRL.net
>>218
backtraceはfearureでoffにできるから、ちゃんとCargo.toml書けばOK
ドキュメント生成できないのはissue立ってたからそのうちなんとかならないかと期待してる
>>219
error-chainは複数種類のエラーをまとめて一つの型で表現するときのボイラープレートを書かなくてもよくすることが目的だから、
ソースコードが冗長になってもよいならば別に使わなくてもなんとかなる
あとは、勝手にbacktraceを作ってくれるからエラー発生時のデバッグが少し楽になるというのもある

226:デフォルトの名無しさん
16/12/27 09:20:55.40 4L8P6HZQ.net
backtraceオフにできるのか。いいことを聞いた

227:デフォルトの名無しさん
16/12/27 10:13:26.91 alTKLSSw.net
公称部分型とかアド・ホック多相がバズワード扱いされてるってこと……?

228:デフォルトの名無しさん
16/12/27 10:18:17.48 zWPkbd9P.net
>>209で主語の大きい表現がなされたせいで不穏な空気になってるだけで、実際にバズワード扱いしてるのは>>206だけだろ
その>>206もバズワードという言葉を正しく使えてるかは微妙だし

229:デフォルトの名無しさん
16/12/27 11:12:32.24 sIydEYNy.net
専門用語を使うのはいいとして>>205は何が言いたいのか分からんよ
>>208
むしろ死語かな
知らない世代がいるなら老がい用語

230:デフォルトの名無しさん
16/12/27 11:28:54.23 O+RLyrRL.net
rustでクラス階層表現する話はこの辺見るのがよいと思う
URLリンク(doc.servo.org)

231:デフォルトの名無しさん
16/12/27 13:49:54.13 /xy3dl1q.net
どちらにせよerror_chainはインターフェースの独自色が強すぎて一般向けのライブラリで使うには向かないと思うけどな
使用例を見ても、アプリケーションではrustupとかいう輝かしい例があるけどライブラリではめぼしい例もないよな?

232:デフォルトの名無しさん
16/12/27 13:57:00.38 GwCWTN18.net
今は有料になっちゃったけど、Learn C the Hard Wayっていうオンライン教材で、C言語でオブジェクト指向を作る講座を思い出す
構造体の最初のメンバに親クラスを定義すれば、キャストで親クラスになれるって手法だった
Rustでも親になる型の変数を用意して、適当なtrait、Asとか何とかを使えば作れるだろうとは思う
ただ、OOを使うべき場面ってのはダイナミックな用途に限られるんじゃないか
Trait Objectとかで大抵は事足りるはず

233:デフォルトの名無しさん
16/12/27 14:02:04.36 b9lc87EM.net
OO好きねえ……

234:デフォルトの名無しさん
16/12/27 15:30:08.41 /xy3dl1q.net
>>227
やってみた。汚い
Deref coercionとかは知らん
URLリンク(play.rust-lang.org)

235:デフォルトの名無しさん
16/12/27 15:50:42.37 sIydEYNy.net
>>229
汚くてワロタw
親構造体内包+Derefやってみたけどムリポ
メソッドオーバーロードを考えなきゃ良いんだろうけど、その場合の実用性はどうだろうね
URLリンク(play.rust-lang.org)

236:デフォルトの名無しさん
16/12/27 15:51:59.79 sIydEYNy.net
違う、オーバーロードじゃなくオーバーライドだ

237:デフォルトの名無しさん
16/12/27 16:04:44.73 M0D6LXD2.net
>>227
ServoのDOMは、基本的にそのC言語でオブジェクト指向と同じみたいだね。
mem::transmute() を使ってる。
ただ、Castable#is()で判定できるから、それを忘れなければ、より安全って感じか。
このCastableを汎用的にしたやつがcrates.ioに有れば、便利かも。

238:デフォルトの名無しさん
16/12/28 00:45:05.70 bvnjBJpz.net
関数型言語も狙うなら関数のオーバーロードあったほうがいいと思う。

239:デフォルトの名無しさん
16/12/28 10:22:40.34 33G5Uz6K.net
traitじゃ駄目なの?
型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語なんて今のところ無いよ
オーバーライドはOOの意味合いだしなあ

240:デフォルトの名無しさん
16/12/28 10:33:00.62 yWrP/m5t.net
>>234
>型推論がある言語で関数のオーバーロード(同名で型が異なる関数の定義)ができる言語
え?あるよね?

241:デフォルトの名無しさん
16/12/28 10:49:12.17 Pwrrr1Os.net
ライブラリを作るときは、依存してるクレートについてdefault-featuresを切っても問題ないなら切っといた方が良さそうだね
ライブラリ側が有効にしてるfeatureはユーザ側でオプトアウトできないけど、ライブラリがfeatureを無効にしていてもユーザ側でオプトインできるし

242:デフォルトの名無しさん
16/12/28 11:39:36.50 j4SHG8/A.net
冬休みだからか、すっとぼけた質問や俺得提案が多いな

243:デフォルトの名無しさん
16/12/28 12:46:13.64 zjOgRctZ.net
あると思うけど関数型言語をねらうのにオーバーロードがあった方がよいのは理由がよく分からない

244:デフォルトの名無しさん
16/12/28 13:05:53.71 /YvbcywK.net
オーバーロードよりも型クラス+カリー化の方が関数型っぽいな

245:デフォルトの名無しさん
16/12/28 13:17:11.06 yxR21hjj.net
ErlangとかJuliaとか

246:デフォルトの名無しさん
16/12/28 13:34:40.02 /YvbcywK.net
Juliaは未だにGithubで「オーバーロードを採用してしまったから部分的用できない、ではどういう記法で部分的用を短く書くか」、って揉めてなかったか?

247:デフォルトの名無しさん
16/12/28 13:41:59.93 SLz2RvoN.net
そういや、rustって、構文解析の邪魔になりそうなものは積極的に排除するイメージ。
文末のセミコロンを今時採用すると思わんかった。

248:デフォルトの名無しさん
16/12/28 14:12:42.94 AaUHlvvb.net
rustって部分適用とかカリー化とか書きやすいの?

249:デフォルトの名無しさん
16/12/28 14:27:58.88 9y3G1esR.net
Rustのセミコロンは式を文にして返り値をユニット型にする演算子だからそりゃ必要だろう

250:デフォルトの名無しさん
16/12/28 22:54:23.66 tiZ71Spt.net
ifやmatchが式なおかげで「if if let」とか「while match」とか書けるね
記述量は減るけど慣れてないとビックリしそう
あと「いふいふれっと」ってずっと言ってると
ちょっと「みこみこなーす」っぽい

251:デフォルトの名無しさん
16/12/28 23:02:02.12 6NcUzOVy.net
ぽくはない

252:デフォルトの名無しさん
16/12/28 23:57:43.05 bDO+6moT.net
>>244
蝉転んで区切るってやつか

253:デフォルトの名無しさん
16/12/29 00:08:37.19 pmAxOvWh.net
審議拒否

254:デフォルトの名無しさん
16/12/29 18:19:20.70 7bfuEKFU.net
セミコロンなくても if if let は構文解析出来るだろうけど面倒だったんだろうな
開発始めた頃はまだ末尾セミコロン死ねな風潮でもなかったろうし

255:デフォルトの名無しさん
16/12/29 19:05:08.27 pmAxOvWh.net
ま、まあECMAScriptのautomatic semicolon insertionみたいなことになるよりはマシだから……

256:デフォルトの名無しさん
16/12/30 06:51:41.42 a1QfaOpy.net
「行末セミコロン死ねな風潮」は行末セミコロン自動挿入のクソ言語のせいなんだから
「行末セミコロン死ね! だからRustも行末セミコロン自動挿入すべき!」とか意味不明の極致だろ

257:デフォルトの名無しさん
16/12/30 09:15:43.02 BAOxkPJ/.net
唐突なPythonディスに俺がブチキレ

258:デフォルトの名無しさん
16/12/30 12:52:44.59 gA9NnhXP.net
セミコロンあり無しそんなに重要か?

259:デフォルトの名無しさん
16/12/30 14:09:34.73 STL3vH6g.net
行末セミコロンはフリーフォーマットには欠かせない必要不可欠なもの

260:デフォルトの名無しさん
16/12/30 14:14:16.09 +0G7T/E5.net
なくてもなんとかなる場合もあるけど、有り無しで設計/実装の難易度はダンチよな、超重要
人間様にとっては

261:デフォルトの名無しさん
16/12/30 14:14:52.91 +0G7T/E5.net
なくてもなんとかなる場合もあるけど、有り無しで設計/実装の難易度はダンチよな、超重要
人間様にとってはASCII文字以外を変数名に使えるかどうかくらいの問題か

262:デフォルトの名無しさん
16/12/30 15:45:32.03 1LhwiS9W.net
セミコロンを忌み嫌う人はそもそもrustのborrowとかmoveとかめんどくさがって使えなさそう

263:デフォルトの名無しさん
16/12/30 16:25:30.23 Q3tvxZdg.net
;はOKだけど
PASCALやErlangみたいに
;と,と.の使い分けになったら嫌

264:デフォルトの名無しさん
16/12/31 08:20:02.34 evZQ8uAx.net
エディタで\n\rを;に表示すればいいんだ!

265:デフォルトの名無しさん
16/12/31 12:20:17.73 H5rV9I3r.net
fn main() {;
println!("hello");
};

266:デフォルトの名無しさん
16/12/31 12:28:55.47 Sym7Bg1


267:E.net



268:デフォルトの名無しさん
17/01/02 10:01:31.48 1m/cK6rN.net
セミコロンに飛びついてるのは
他のことについて語れないくらいバカな奴だけだろ。

269:デフォルトの名無しさん
17/01/02 21:18:31.68 ichN9xlo.net
唐突な人格攻撃に困惑

270:デフォルトの名無しさん
17/01/03 11:38:39.79 xKIwkl8n.net
rustc: Stabilize the `proc_macro` feature by alexcrichton · Pull Request #38783 · rust-lang/rust
URLリンク(github.com)
Macros 1.1がstabilizeされるってよ

271:デフォルトの名無しさん
17/01/03 12:02:32.26 3o9M4oho.net
きたか…!!
  ( ゚д゚ )
  .r   ヾ
  |_|  |_|
   | | |
   しノ
___ / ̄ ̄ ̄/_
  \/    /

272:デフォルトの名無しさん
17/01/03 13:08:42.00 ZKRmSAM8.net
マクロのそ�らを�

273:デフォルトの名無しさん
17/01/03 18:29:20.46 4ChvZkkB.net
どこの超時空要塞?

274:デフォルトの名無しさん
17/01/03 20:40:08.40 wuUskEpB.net
RFCをざっくり読んでも具体的に何が効率的になるのか分からん
try!が?になるくらいのシンプルな例を誰か頼む

275:デフォルトの名無しさん
17/01/03 20:58:17.39 r8LUHXKe.net
> we're shooting for macros 2.0 stable in the far future
ref. 1681-macros-1.1.md
要は便利機能は2.0待ってろってことか、先は長いな

276:デフォルトの名無しさん
17/01/03 21:50:34.44 OFYBDDbH.net
分かってると思うけど2.0ってのはrustc 2.0じゃなくてMacros 2.0だからな

277:デフォルトの名無しさん
17/01/05 00:29:08.66 ZD27oJ5u.net
Serdeって何故デシリアライズされる型とdeserializeメソッドがセットになってるんだろう
MapVisitor::visit_valueでカスタムのdeserializeメソッドを使いたい場合はラッパ型を用意してDeserializeをimplするしかない?

278:デフォルトの名無しさん
17/01/05 22:10:05.44 NKDpP9qZ.net
discriminant_valueはいつになったらstabilizeされるんだ?
variantを比べるためだけにmatchして云々とかいう冗長で非効率な実装はなるべくしたくないのじゃ

279:デフォルトの名無しさん
17/01/06 00:11:35.37 Fz5LbEfZ.net
URLリンク(github.com)
Some things to nail down before stabilization:
- [x] prototype implementation
- [ ] signature needs to have a <T:Reflect> bound
- [ ] documentation should reflect the inherent instability in this value and describe valid uses
- [ ] perhaps signature should require input T to actually be an enum instance?
- [ ] do we want to adjust the return type in any way to enforce the above rules?

280:デフォルトの名無しさん
17/01/06 01:12:22.50 FrG2KJ61.net
これってコンパイラのバグ?
URLリンク(is.) gd/jWTzHJ

281:デフォルトの名無しさん
17/01/06 01:34:14.03 Fz5LbEfZ.net
どんな振る舞いを期待していたのかは知らないけど、とりあえず^は指数関数じゃなくてXORだよ

282:デフォルトの名無しさん
17/01/06 08:55:49.46 RoJjSRcN.net
Rustでもビット/シフト演算子の優先度は四則演算子よりも低いんだっけか
期待動作が分からんのでprintじゃなくassertで頼む

283:デフォルトの名無しさん
17/01/07 06:27:18.42 ZgzC+Fa4.net
256と3のXORとか謎すぎるし、^の意味を履き違えてるだけの線が�


284:Z厚な気が……



285:デフォルトの名無しさん
17/01/07 15:58:55.81 0PjiZvlV.net
うん。近年まれに見るバカだ。

286:デフォルトの名無しさん
17/01/07 16:04:59.75 ZgzC+Fa4.net
寝ぼけてた

287:デフォルトの名無しさん
17/01/07 16:57:17.26 xEA8lk8b.net
ワロタ

288:デフォルトの名無しさん
17/01/07 21:42:06.91 n2yomPvZ.net
pythonとかocamlとかjuliaとかcommon lispとか、Exploratory programmingに適した言語とrustを開発の両輪にしたいけど、
何かおすすめある?

289:デフォルトの名無しさん
17/01/08 01:03:37.13 kfDqfkDn.net
>>281
forth

290:デフォルトの名無しさん
17/01/08 01:05:56.21 PddBs9sQ.net
Exploratory programmingのために新たな言語を学び始め、開発が全く進まない未来を予知した

291:デフォルトの名無しさん
17/01/08 07:57:00.85 0mVP2hZ6.net
Erlang

292:デフォルトの名無しさん
17/01/08 08:35:33.23 23/7dWy/.net
Rust

293:デフォルトの名無しさん
17/01/10 19:06:19.84 f/pmyPVx.net
>>281
>Exploratory programming
プロトタイプ作って試行錯誤、って話ならHaskellが一番使いやすいと思う
小規模のものなら、再発明が面倒になってHaskellのプロトタイプを改善してそれでよしとする未来まで見える
遅延評価絡みでオーダーのトラップがあるのが難点だけどな

294:デフォルトの名無しさん
17/01/11 14:21:39.72 XBWH8SeE.net
ゲームしつつ片手前にドキュメントを眺める・・・Rust1時間目
let ほほう型推論か・・・コンパイラで型推論は最近の流れ?
mut ミュータブル・・・これつけないと定数ってことじゃろかよーわからん・・・
String::new() あえてnewっていうメソッドにせんでも・・・とにかく静的らしい・・・
ほほう・・・

295:デフォルトの名無しさん
17/01/11 15:07:47.36 7uyPKRK3.net
Rustと言えばゲームだね!

296:デフォルトの名無しさん
17/01/11 15:22:46.07 XBWH8SeE.net
2時間目・・・
エラーハンドリングの仕方がちょっと特殊だな・・・例外だらけの汚いコードにはならないのだろうか・・・
loopとはわかりやすいキーワードだ・・・もしかしてrustはとりあえず全部無限ループさせるのか?なわけないよな・・・
matchとはなんぞ・・・これはとても便利そうだ・・・
parse()って何に?letに型指定すればそれにってことだろうか?parseIntとかじゃなくてシンプルだな・・・
ふむふむ・・・

297:デフォルトの名無しさん
17/01/11 16:06:44.87 /IZ7nDq3.net
チラ裏

298:デフォルトの名無しさん
17/01/11 16:53:57.45 5OhI584z.net
むしろTwitter、なぜここでツィートしてるのかは不明
コテつけといて、NG入れるから

299:デフォルトの名無しさん
17/01/11 19:03:44.12 XBWH8SeE.net
触らなければよかったのに触っちゃったね
よーし今日から荒らしていくからよろしくwwwwwww

300:デフォルトの名無しさん
17/01/11 19:04:54.12 XBWH8SeE.net
まぁこんなゴミ言語よりはGoのほうがよいわな
こんなん使うのはSwiftしか使えない池沼だけ

301:デフォルトの名無しさん
17/01/11 19:06:19.76 AM+tjFEn.net
歌舞伎座.tech#13「Elixir 勉強会」
2017/01/11(水) 開場:18:57 開演:19:00  ニコニコ生放送
lv286846512

302:デフォルトの名無しさん
17/01/11 19:07:09.79 XBWH8SeE.net
ふぁーーーwww
見に行くしかないwww

303:デフォルトの名無しさん
17/01/11 19:17:33.64 XBWH8SeE.net
LL以外どこの言語にもあるスレッドがご自慢のクソ言語
劣化Scala ふぁーwww

304:デフォルトの名無しさん
17/01/11 19:43:29.93 PvND63zB.net
キチガイだ

305:デフォルトの名無しさん
17/01/11 19:43:37.85 5OhI584z.net
borrow checkerに挫折したか
学習曲線の改善は難敵よね

306:デフォルトの名無しさん
17/01/11 19:44:33.25 /IZ7nDq3.net
const fn tracking issue (RFC 911) #24111
URLリンク(github.com)
でたった今話し合われてるけど、const fnがstabilizeされたら関数にconstをいちいちくっつける作業が発生して面倒くさそう
constじゃない関数をmut fnみたいにする案もあるけどそれはそれで互換性の問題があるしなあ……

307:デフォルトの名無しさん
17/01/11 19:56:50.41 Dbl5XF86.net
Rust 2を待つしかないと

308:デフォルトの名無しさん
17/01/11 20:08:37.68 XBWH8SeE.net
出来損ない言語の末路だな
独裁者のいない寄り合い所じゃこんなもんだろwww

309:デフォルトの名無しさん
17/01/11 20:15:03.09 /IZ7nDq3.net
>>300
そう単純な問題でもないみたいで、constをくっつけるのはnon-breaking changeだけどその逆はbreakingだからconstの方をデフォルトにするのは宜しくないのでは、という議論もある
derive(Copy)とかと同様の問題。だから-W missing_copy_implementationsと同じようにopt-inなlintだけに留めるべきではとも言われている

310:デフォルトの名無しさん
17/01/15 16:47:20.62 Ib7guha6.net
>>300はrust 2でbreaking change待ちって意見だろうよ
breaking changeせずに適用したいから云々って話なんだろうけど
どう転がるにせよwarningレベルで対応を要求してくるだろうからノンビリ待とうかね

311:デフォルトの名無しさん
17/01/15 20:39:38.98 SlBKEDAf.net
マクロやプラグインでやってたことの一部がconst fnで出来るようになるんだよね、これ?
bookであったローマ数字をrn!(X)でコンパイル時に10にするようなのを、rn("X")とかに出来るってことなら嬉しい
マクロ苦手なんだ

312:デフォルトの名無しさん
17/01/15 21:12:15.99 8SgEfBB1.net
const fnは普通のfnのサブセットみたいなものだからマクロの代わりとしては微妙なような
const fn内で関数を宣言できるわけでもないし、外部スコープの変数を直接参照したりreturnできるわけでもないからなあ

313:デフォルトの名無しさん
17/01/16 01:06:39.35 3MjcRRh6.net
すべてのmacroの代替になるわけではないけど、macroやらpluginやらで無理して実現してたことの一部が楽にはなるはず
それぞれ適した用途で使えばよい

314:デフォルトの名無しさん
17/01/16 11:01:09.92 YCpRkRk0.net
inlineとmacroとpluginとconst fnと
適材適所をまとめた情報ってどこかないかね

315:デフォルトの名無しさん
17/01/18 19:26:40.80 0/He/nuF.net
const fnからpanic!出来ない仕様ってstabilizeされてからもそのままなのかな

316:デフォルトの名無しさん
17/01/19 05:46:59.43 ff1dOA50.net
>>308
そうだと思うけど
const fnからpanic!呼びたいって要求は
#[cfg(...)]みたいなattributesに置き換えられないかな
なんか考えが足りてなかったら申し訳ない

317:デフォルトの名無しさん
17/01/19 06:12:01.34 nSqYy0BF.net
attributesじゃitem単位での条件コンパイルくらいしかできないだろうから無理じゃね?
コンパイルタイムとランタイムを区別するのは現時点でのattributesの領分を越えてるでしょ
>>308の期待する動作がはっきりとは分からんが、恐らく下の擬似コードみたいなのに対応しなければならないんだろうし
これを実現するには言語仕様(あるいはプラグイン)の追加で対応するしかないんじゃないかねえ
fn main() {
const A = f(0); // expecting compile-time error
let x = f(std::env::args().skip(1).first().unwrap().parse().unwrap()); // expecting runtime panic
println!("{}, {}", A, x);
}
const fn f(n: i32) -> ! {
panic!();
}

318:デフォルトの名無しさん
17/01/19 17:50:45.29 KP9WuCCK.net
そもそもその手の機能ってC++やDですら実現されてないんじゃ……

319:デフォルトの名無しさん
17/01/22 02:14:54.25 meHWinYv.net
URLリンク(crates.io)
>If Rust the video game were implemented in Rust the programming language, it would belong in this category.
クソワロタ

320:デフォルトの名無しさん
17/01/22 15:32:04.47 He1ERbj9.net
最近はRustで検索するとゲームの方より言語の方が上位に来るようになったぞ!

321:デフォルトの名無しさん
17/01/22 15:36:25.38 Yl4nAGke.net
RustってポストC/C++になれる言語ですか?

322:デフォルトの名無しさん
17/01/22 16:37:35.24 C/30dEKV.net
単にお前さんのGoogleアカウントの検索の履歴からRust言語に重み付けされた結果が出てるだけだから
アカウント変えるとゲームの方が先にくる場合もままあるよ
> Displaying 0-0 of 0 total results
これは、、、言い出しっぺの法則やな?

323:デフォルトの名無しさん
17/01/22 19:28:06.48 eyLJuWmg.net
>>314
ポテンシャルはある。

324:デフォルトの名無しさん
17/01/22 19:40:20.56 Dd1b/Mlb.net
URLリンク(github.com)
A community-driven port of Emacs to Rust.

325:デフォルトの名無しさん
17/01/24 19:29:16.39 igHP4a7v.net
>>314
寝言は寝て言え。現状からみてD言語ルートだ。

326:デフォルトの名無しさん
17/01/24 19:53:42.15 pU9ER4NI.net
Mozillaが本気ならD言語よりはマシなんじゃね

327:デフォルトの名無しさん
17/01/24 20:42:28.51 VnBtkYVE.net
Quantumに着手してる時点で本気でないはずがない

328:デフォルトの名無しさん
17/01/24 21:24:09.97 dNkKf7mt.net
個人的なツールでちょっと使い始めたところだけど
C++テンプレート初期のエラーメッセージ地獄にくらべるとRustさん親切すぎて天使かよって感じなのでがんばってほしい
けどもうひと押し(偉いひと説得材料的な)なんかほしい気はする

329:デフォルトの名無しさん
17/01/24 23:34:50.03 iJ0FMzkO.net
>>319
Mozillaが本気出してこの程度ならD言語未満のHaskellレベルじゃね?

330:デフォルトの名無しさん
17/01/24 23:46:14.74 rMS2+V/T.net
>>313
あっちはまだアーリーアクセスだから…

331:デフォルトの名無しさん
17/01/25 00:43:42.66 uVLYflKb.net
rustとc++14ならどっちが学習コスト高いかな?

332:デフォルトの名無しさん
17/01/25 01:06:25.08 icd2X49v.net
>>324
(高コスト)C++闇の軍団>proc macroを書くRust>テンプレートを書くC++≧ビルドプラグインを書くRust>Rustさわり>C++さわり(低コスト)
現状こんなもん?

333:デフォルトの名無しさん
17/01/25 08:00:44.75 wJvgwWCY.net
国際規格みたいなのができるとしても複数の実装の事を考えると
プラグインは仕様からは外れるかなーとは思う

334:デフォルトの名無しさん
17/01/25 09:57:43.37 +ZiK5CtY.net
>>321
zero costで性能良いって売りが事実になれば...
上で上がってたウェブサービスのベンチマークが意外とガッカリ性能だったのが萎える

335:デフォルトの名無しさん
17/01/25 11:09:39.71 wJvgwWCY.net
ウェブサービスのベンチマークなんてコンパイラ云々よりも構成のほうが影響強いって上でも言われてるじゃん
とはいえアセンブリレベルでは機能制限されたC++でしかないからrustで速くできるならC++だともっと速くできるわけで
労力もC++のほうがかかるだろうけど

336:デフォルトの名無しさん
17/01/25 16:34:12.89 82yMOZoe.net
言語仕様なんだからプラグインが外れるのはむしろ当たり前かと

337:デフォルトの名無しさん
17/01/25 16:42:20.24 vaJn6hA3.net
>>322
ん、今さりげなくHaskell馬鹿にした?

338:デフォルトの名無しさん
17/01/25 17:46:06.98 G/yiP9yt.net
C++だと安全にするためにコピーしてた箇所をrustだとガンガンmoveにできるとかで、
普通に書いたらC++より早いとかあってもおかしくないとは思う

339:デフォルトの名無しさん
17/01/25 17:55:56.70 GF1+cyEf.net
C/C++は危険でも関係なくガンガンコピーするから速い
開発者が明示的にコードで安全にするか
言語が暗黙的に安全にするかの違いがあるだけで
安全なコードが吐かれてたらその分は遅くなるよ

340:デフォルトの名無しさん
17/01/25 19:05:12.07 +ZiK5CtY.net
偉い人説得のために言語仕様だけ推すわけでもなく
rustupのビルドツールセットの管理性や、cargoのビルド環境の利便性や、3rd party crateの性能なんかをまとめて
だからrustは良いんですよってプレゼンするんだよぉ
んで、公式に唱ってるわりに足引っ張ってる3rd party crateの性能が気になる
言語仕様は安全なマルチスレッドを言語文法でもうちょっと便利にして欲しいけど、グリーンスレッドに先祖帰りされても困るしのう

341:デフォルトの名無しさん
17/01/25 20:46:32.79 o52BqWk7.net
>>332
そうなんだあ
Rustって遅いんですね

342:デフォルトの名無しさん
17/01/25 21:10:53.58 G3Sy5RF2.net
コピーするから速い……?

343:デフォルトの名無しさん
17/01/25 22:08:50.44 9B/zRGmW.net
週刊誌並の偏った切り取り方

344:デフォルトの名無しさん
17/01/25 22:16:22.79 vvheTSCl.net
せやで
dereferenceは高コストな操作だからstructだろうが何だろうが参照渡しより値渡しの方が高速なんやで

345:デフォルトの名無しさん
17/01/25 22:31:03.09 rhF3V2Xc.net
めっちゃデカイ構造体コピーしたろ!

346:デフォルトの名無しさん
17/01/25 22:51:07.48 icd2X49v.net
そもそもRustで「めっちゃでかい構造体」を作るのって、どっかで設計間違ってる気がしなくもない。

347:デフォルトの名無しさん
17/01/26 01:26:45.59 QpF8cABc.net
それは作るプログラムの性質であってRust関係ないしお前が設計の良し悪しを決めるものではない

348:デフォルトの名無しさん
17/01/26 01:43:10.61 2yUJ7U50.net
Rustと言う名前のゲームがあるそうですが
それはプログラミング言語のRustで作られているのですか?

349:デフォルトの名無しさん
17/01/26 07:47:28.82 2BnY2tIN.net
>>341
その同名のゲームとは関係ない

350:デフォルトの名無しさん
17/01/26 22:36:48.11 CV+F+02K.net
コピーのコストは構造体のサイズもあるがヒープ使ってるか否かも関係するのでは

351:デフォルトの名無しさん
17/01/27 05:06:53.57 ZptWLHtZ.net
32bit時代のC#のドキュメントには、16バイトまでなら参照よりコピーした方がいい
って目安が書いてあったけど、今どきはどんなもんだろ。

352:デフォルトの名無しさん
17/01/29 05:44:52.43 OhLobWwB.net
Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研 (imos laboratory)
URLリンク(imoz.jp)

こんな記事見つけた

353:デフォルトの名無しさん
17/01/29 06:53:26.90 96Ypx+6J.net
Rustは何が新しくないのか、とセットで
URLリンク(lyrical-logical.hatenablog.com)

354:デフォルトの名無しさん
17/01/29 08:24:52.66 95TVWg7i.net
つまりRustで出来てC++で出来ないことはないけど、C++で出来てRustで(コンパイラが通してくれないせいで)出来ないことはある、と。
C++でいいじゃん。Rustいらないね。

355:デフォルトの名無しさん
17/01/29 08:34:25.98 uQxwW8BY.net
何でも出来た方がいいのはチーム全員が信頼出来る場合だけだな

356:デフォルトの名無しさん
17/01/29 09:19:49.49 MpcYD/ky.net
自分自信すら信用できず、実際自業自得でバグを産むから、他人の信用なんか真っ平ごめんだ

357:デフォルトの名無しさん
17/01/29 11:26:25.73 qAZTn4yt.net
Mozilla(というかブラウザ)のメモリ関連のミスは影響がヤバいからわざわざRustまで作ってるだけで
メモリ関連ミスってもどうということはない程度のプログラムならC++でもいいんじゃない

358:デフォルトの名無しさん
17/01/29 11:29:34.14 HeP1z5CV.net
メモリ関連というよりはもっと一般的なuse-after-freeの対策も含んでると思うけどな
最近のSerde 0.9のリリースなんかはまさにそれだし

359:デフォルトの名無しさん
17/01/29 15:04:54.98 3OY0Puum.net
C++書けない無能のための言語なのに、学習曲線が断崖絶壁の無能に使えない言語に落ち着くRust。

360:デフォルトの名無しさん
17/01/29 15:12:56.27 MpcYD/ky.net
swiftスレで相手してくれる人がいなくなったからrustスレに遊びに来たのな
あっちで遊んでやんよ、お前も使ったことないrustよりまだ使えるswiftのがいいだろ?

361:デフォルトの名無しさん
17/01/29 16:05:51.17 LzV9/FyF.net
大規模なC++プログラムメンテナンスするコストに比べればrustの学習曲線なんて平原みたいなものでは

362:デフォルトの名無しさん
17/01/29 16:06:01.65 SmTDa/S0.net
自分の脳みそを完全に信用できるならな

363:デフォルトの名無しさん
17/01/29 18:28:56.50 MpcYD/ky.net
いや信用できないからrustが良いのだ
rustはエコシステムが他言語に比べてめっちゃスマートだよな
goもまぁ悪くはないけどソースファイルの置き場とか依存ライブラリの管理とかイマイチ
C/C++やSwiftはそれぞれ別の理由で論外だし

364:デフォルトの名無しさん
17/01/29 22:47:53.84 Ocx7v7z5.net
書くための敷居が低いけど、書く能力がモロにメンテナンスコストに反映されるC++と
書くための敷居が多少高いけど、だいたいはコンパイラが面倒見てくれるRust
C++で血ヘド吐いた人ほど後の方を重視して、メンテコストを軽く見る人ほど前の方を見てRust叩く印象。

365:デフォルトの名無しさん
17/01/29 23:15:06.07 NDmTx4oh.net
書くための敷居というか、入門の敷居では
慣れれば書くことに苦労することはあまりないように感じる

366:デフォルトの名無しさん
17/01/30 00:51:03.60 eF+mclkT.net
URLリンク(crates.io)
そろそろ Crate は、ジャンルごとに階層化したりタグ付けできたりソートできたりしないと発見率が糞になるかと。

367:デフォルトの名無しさん
17/01/30 02:43:56.69 YhRMpmBj.net
敷居が高いは不義理をしてあわせる顔がない時に使う

368:デフォルトの名無しさん
17/01/30 03:24:58.17 OQRcOPPf.net
へえ、ものしりだねー

369:デフォルトの名無しさん
17/01/30 07:58:57.30 nWNAE5Le.net
>>359
2000年頃のyahooみたいに?
ツリー検索をこの時代に復活させるのはないわー

370:デフォルトの名無しさん
17/01/30 19:07:27.99 bQnpSDhS.net
いくら言語を誉めたところで、この言語で書かれたまともなプロダクトも、この言語の本も出てないことが、この言語のダメさを物語っている。

371:デフォルトの名無しさん
17/01/30 19:11:49.38 rVcDTRet.net
Facebookがmercurial hgをポーティングしたって話の裏は取れたんだっけ?

372:デフォルトの名無しさん
17/01/30 19:36:00.65 nWNAE5Le.net
>>363
つ ripgrep
煽るには知識が足りてない

373:デフォルトの名無しさん
17/01/30 19:43:25.52 ako8vkN5.net
ライブラリの話ならともかく、エンドユーザ向けのプロダクトが多くないことと(エンジニアにとっての)言語の良さって関係あるの?
個々人のプロジェクトで役に立ってるのならそれで十分でしょ

374:デフォルトの名無しさん
17/01/30 21:56:25.56 7WMFgwOL.net
それ以前に仕様が固まってないじゃん。Rust
AppleのSwiftが流行らないのと同じ。
今は実験段階なんだからプロダクト数だけで言語の良し悪しは測れない。

375:デフォルトの名無しさん
17/01/30 22:33:48.94 BdTPiSFU.net
>>368
1.14にもなって言語仕様固まってないのも問題のような気がしなくもないが……
Goはまだ(?)1.7だけどももうほぼ言語仕様Fixと言っていいレベルで固まってるし。
プロダクトって面で言ったら上で出てるripgrepもそうだが、
まずFirefoxのコアに使われてる時点で「まともなプロダクトがない」って口が裂けても言えないだろ。

376:デフォルトの名無しさん
17/01/30 23:13:49.09 qF4ARhTt.net
const_fn、conservative_impl_trait、never_type、associated_consts……この話はやめよう

377:デフォルトの名無しさん
17/01/31 00:42:51.03 E22d6Q0u.net
固まるの意味が分からないがstableな機能ではまだ足りないと言っている?

378:デフォルトの名無しさん
17/01/31 01:08:37.64 lkTuVnqH.net
言語仕様に変更があったら後方互換性があってもダメというなら殆どの言語使えないよね。
何ならOKなんだ?というレベル

379:デフォルトの名無しさん
17/01/31 01:18:23.09 w/stZREj.net
C++センパイの進化について

380:デフォルトの名無しさん
17/01/31 01:57:41.10 TmvDy1Hy.net
C/C++のようにOSでもカーネルでもデバドラでも組み込みでも何にでも使える言語が良い
ユーザレイヤでしか触れない言語は価値が低い

381:デフォルトの名無しさん
17/01/31 02:04:11.12 EAnQTfF2.net
いったい何を批判しようとしてるんだ?

382:デフォルトの名無しさん
17/01/31 04:21:00.72 J6yoEKAE.net
c++でデカイプロジェクトゴリゴリ書いてた人ほどrustいいんだろうな

383:デフォルトの名無しさん
17/01/31 05:03:19.87 IQXv4KrI.net
C++はヘッダファイルに分かれてたりするのが嫌い。
Rustもモジュール周りはちょっと嫌い。
modといいつつ、実質includeが基本みたいだけど、なんだか古めかしい。

384:デフォルトの名無しさん
17/01/31 05:14:32.48 iAIegLum.net
可視性と階層構造を持つincludeとかもはやincludeじゃないよそれ

385:デフォルトの名無しさん
17/01/31 11:32:06.32 x8DMpHTc.net
>>371
単純に機能が足りてない。
conservative_impl_traitがないとアンボックス化したクロージャ返せないとか。

386:デフォルトの名無しさん
17/01/31 11:44:51.26 sCWKIGbu.net
下記のような処理で forの中で繰り返し毎にvecの変更内容を確認したかったのですが、
closureにvがmutable borrowされてるためにエラーになってしまいました。
こういうのは何か回避する方法はあるんでしょうか?
fn main() {
let mut v = vec![1, 2, 3];
{
let mut takes_nums = |x| v[0] += x;
for i in 1..3 {
takes_nums(i);
// println!("{:?}", v[0]); // ここで一時的にvの値を確認したい
}
}
println!("{:?}", v);
}

387:デフォルトの名無しさん
17/01/31 12:08:39.86 7hNNIgfe.net
モジュールもMLとかと比べてしまうと見劣りはするな
確かにC++よりはマシだけど

388:デフォルトの名無しさん
17/01/31 12:33:39.17 yyJuX8zg.net
>>379
takes_numsからきちんと返す とか
URLリンク(play.rust-lang.org)

389:デフォルトの名無しさん
17/01/31 14:03:31.13 sCWKIGbu.net
>> 381
なるほど。そうすると確かにいけますね。

390:デフォルトの名無しさん
17/01/31 15:01:08.68 16SeH9xy.net
>>379
こんなこともできる
URLリンク(fraserblog.codewise.org)

391:デフォルトの名無しさん
17/01/31 17:27:00.00 19P3vDy6.net
スライスパターンまだ?

392:デフォルトの名無しさん
17/01/31 19:31:33.91 FHFaV7L7.net
intrinsicsって何?
永遠にunstableとか書いてあるんだけど

393:デフォルトの名無しさん
17/01/31 19:50:54.86 iAIegLum.net
普通は直接触らない(libstdのstableなインターフェイスを通して使う)ものだから知らなくて良い
どうしても知る必要があるのならまずcompiler intrinsicsでググって一般的なintrinsicsについて調べてからcore::intrinsicsのドキュメントに戻ると良い

394:デフォルトの名無しさん
17/01/31 22:25:40.67 FHFaV7L7.net
コンパイラ方面の単語なのね
thx

395:デフォルトの名無しさん
17/02/01 16:47:26.59 t+0AKFTt.net
>>373
javaとかに喧嘩売ると荒れるからやめろや

396:デフォルトの名無しさん
17/02/01 18:13:30.15 UXwydrfk.net
言語に貴賤なし。プログラマに貴賤大有り

397:デフォルトの名無しさん
17/02/01 18:18:40.81 A+dqSgkk.net
無理やり荒れさすなや

398:デフォルトの名無しさん
17/02/01 22:27:21.76 swnG7r4K.net
Rcって1つのオブジェクトを色んな所から参照したいけど複数にmoveさせられない
って時にRcで包んでcloneして複数に増やして使う
内部ではcloneされてかつ生き残ってる参照の数を保持していて
0になったらリソースを解放
GC云々言われるのは一般的にこのアルゴリズムがGCでも使われているから
って認識であってる?

399:デフォルトの名無しさん
17/02/01 23:10:00.44 vXBX0LGU.net
大体合ってるよ
Weakポインターは解放の判断時にカウントされないこともお忘れなく

400:デフォルトの名無しさん
17/02/03 03:50:46.78 o3QjYKDf.net
Announcing Rust 1.15 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)
ご存知の通りcustom deriveがstableに
それと、rustc自体のビルドシステムがRustで書き直されたとのこと
1.17からはMakefileを完全に廃止する予定で、それによってrustcを書くのにcrate.ioのパッケージを直接使えるようするための道筋か整うんだと

401:デフォルトの名無しさん
17/02/03 03:52:31.61 o3QjYKDf.net
crate .ioじゃなくてcrates.ioだわ

402:デフォルトの名無しさん
17/02/03 22:09:00.34 TA0AL/qz.net
お前らこんなめでたい日だってのに静かだな
豆でも撒いてんのか?

403:デフォルトの名無しさん
17/02/03 22:45:31.22 o3QjYKDf.net
#[derive(Throwable)]
struct Soybean;

404:デフォルトの名無しさん
17/02/03 23:15:20.66 MzXAEQdU.net
カスタムderiveは良いよね、夢広がりんぐ。
所で Rust 2.0 へのロードマップとか無いのか? 何に至れば 2.0 になるんだ?

405:デフォルトの名無しさん
17/02/04 03:35:44.48 Lsw0X+V5.net
破壊的変更をするのが2.0だけど、今のところ破壊的変更をしてまで入れたいものはあまりなさそう

406:デフォルトの名無しさん
17/02/04 04:51:36.32 KgCacN16.net
Incremental Compilation Beta - compiler - Rust Internals
URLリンク(internals.rust-lang.org)
Incremental compilationがbeta段階に達したらしい
Nightlyユーザはcargoの実行時に以下のようにしてオプトインできる:
$ CARGO_INCREMENTAL=1 cargo <command>
またはrustcを直接呼ぶ場合:
$ rustc -Zincremental=<path> <other arguments>

407:デフォルトの名無しさん
17/02/04 14:50:05.31 HGLYAiwq.net
知り合いがRust使ってサーバー書いてたんだけど、グレースフルシャットダウン?すらできないからクソだって言ってたな。
そこんところどうなってるんだろう。この言語そもそもサーバー書く言語じゃなかったりする?

408:デフォルトの名無しさん
17/02/04 18:13:59.54 bWVhQOn0.net
言語じゃなくライブラリの問題で適当なライブラリがないなら自分で書くものだ
それを自分で書けないのは自分がクソと言ってるも同義だと思うけど
そんな難しいロジックが必要でもなかろうよ > graceful shutdown

409:デフォルトの名無しさん
17/02/04 18:37:54.59 KgCacN16.net
ドキュメントを読むと、Hyper v0.11(未リリース)からgraceful shutdownに対応してる風の記述が見られる
詳細は知らん

410:デフォルトの名無しさん
17/02/04 22:15:04.50 maiRrllE.net
>>401
やっぱり言語の問題じゃないよな。
これで心置きなく発言者に甘えんなアホって言えるわサンクス。

411:デフォルトの名無しさん
17/02/05 12:21:31.45 39kPthL5.net
ところでこのRustとかいう言語、いつになったら全部のシンタックスがStableになるんだい?
それまではC++使ってるからその時になったら起こしてくれ


412:。



413:デフォルトの名無しさん
17/02/05 13:47:47.29 yZbwod3C.net
おうC++17の策定あくしろよ

414:デフォルトの名無しさん
17/02/05 13:52:10.30 1zIopPJZ.net
P0292R2のstabilizeマダー

415:デフォルトの名無しさん
17/02/05 13:57:36.06 u0uQCFq0.net
>>404が永眠してしまった、天国に行けるといいね

416:デフォルトの名無しさん
17/02/05 19:55:33.99 5xwhf5r6.net
C++0x → C++11
C++1x → C++14
C++1y → C++17
だと思ってたら違った。1xは欠番か

417:デフォルトの名無しさん
17/02/08 18:40:35.01 lAOVscE3.net
いまだにHashMapを扱う度にborrow checkerと格闘してcloneや一時変数、unwrapだらけになって辛い
自分の技術不足が恨めしい

418:デフォルトの名無しさん
17/02/09 10:17:09.71 X3gAJ9Ta.net
それはお前の技術不足じゃなくて言語の欠陥だろ。気にすんな。

419:デフォルトの名無しさん
17/02/09 11:56:02.46 LJBL065x.net
荒し乙

420:デフォルトの名無しさん
17/02/10 05:58:09.39 jFfrPWyu.net
まあマップ関連はretainの実装も放置されてる状況だしねえ(issue #1338)
ところでstableのマイナーアップデートが来てる
Announcing Rust 1.15.1 - The Rust Programming Language Blog
URLリンク(blog.rust-lang.org)

421:デフォルトの名無しさん
17/02/10 17:59:28.97 XNSQcvUK.net
RustでJVMやFlashPlayer作り直せばJavaAppletやFlashが復活するー?

422:デフォルトの名無しさん
17/02/10 18:00:49.21 hHNUUpqe.net
しなくていい

423:デフォルトの名無しさん
17/02/10 18:19:20.79 3fWDw1w5.net
現状のHashMapを普通に使って、他の言語よりmemcpyの量増える?

424:デフォルトの名無しさん
17/02/10 18:19:25.15 rXluJnty.net
しない。
それらは言語の問題ではなく、政治的な理由で消えたから。
(犯人はMSとApple)

425:デフォルトの名無しさん
17/02/10 19:00:45.32 Q2EFSTbD.net
普通に使うの定義がさっぱり分からんけど
要素操作のために、必要以上にcloneしないといけない設計/実装してるなら増えるんじゃね
cloneしなくて済むスマートな実装手法を自然に書けるようになりたい
(書けないからいつも推敲してる)

426:デフォルトの名無しさん
17/02/13 10:28:11.76 zwnL86Oa.net
とうとう火狐がRustなしではビルドできなくなるカウントダウン始まったな。
で、結局Rustはモジカスのオナニー以上でも以下でもなかった件について

427:デフォルトの名無しさん
17/02/13 10:41:16.81 wHhLxWjt.net
狂気丸出しのレスだな。

428:デフォルトの名無しさん
17/02/13 11:06:35.68 7X0vvEjV.net
オナニーレスに触るなよ悦んじゃうだろ

429:デフォルトの名無しさん
17/02/13 11:14:21.57 l/JrB4B7.net
assert!(!(Rust >= モジカスのオナニー));
assert!(!(Rust <= モジカスのオナニー));
assert!(Rust.is_nan() || モジカスのオナニー.is_nan());

430:デフォルトの名無しさん
17/02/13 11:31:22.65 7X0vvEjV.net
let cum_amt = mozilla.masturbate()
.to(Some(rust))
.duration(Duration::from_secs(30))
.finish();

431:デフォルトの名無しさん
17/02/13 11:49:18.40 zwnL86Oa.net
実際モジカスのオナニーを超える範囲で使われてるならその事例教えてくれよ。
火狐みたいなオナニーブラウザの自作自演以外でよ。

432:デフォルトの名無しさん
17/02/13 11:49:18.81 zwnL86Oa.net
実際モジカスのオナニーを超える範囲で使われてるならその事例教えてくれよ。
火狐みたいなオナニーブラウザの自作自演以外でよ。

433:デフォルトの名無しさん
17/02/13 11:56:22.97 VFoQx1wb.net
キチガイはすぐファビョって連投を始める

434:デフォルトの名無しさん
17/02/13 13:51:05.15 THrV6nDM.net
ドユコト?
やっぱりD言語の方がいいってこと?

435:デフォルトの名無しさん
17/02/13 14:39:04.19 zwnL86Oa.net
他が良いとかじゃなくてこの言語の実用性がないっていう単純な話なんだが。
これ使うくらいならC++の方が(Rustの謳い文句に反して)はるかに使いやすいしちゃんとものができる。
だからモジカスのオナニーでしかないって話。

436:デフォルトの名無しさん
17/02/13 18:36:27.18 3XLU4PQN.net
あなたに何の魅力も無いのに、あなたの主観的な評価に意味を見出だせない
実際に触ったことがある�


437:ネら「Mozillaが開発している&関係が深い」ことを評価の基、あるいはレッテル貼りに使うなんて的外れなことはしない もっとまともな批判なら相手する人もいるだろうよ



438:デフォルトの名無しさん
17/02/13 21:28:32.27 7X0vvEjV.net
ID:zwnL86OaがいくらRustを嫌おうがお前にとってのRustの有用性が変わるわけでもないんだからほっとけよ

439:デフォルトの名無しさん
17/02/13 22:11:11.49 2CyLjYwO.net
C++はツギハギだらけでダメだろ

440:デフォルトの名無しさん
17/02/13 23:19:53.96 8+uLQ/Rs.net
ひとまずRustで安全なJavaVMを作って><

441:デフォルトの名無しさん
17/02/13 23:51:37.77 g/I/A31s.net
実際Rustに不満がないわけではないが、せめてどこを改善すべきかくらい言えんのか……
個人的にはライブラリ周りがコミュニティ頼り過ぎるのもうちょい公式主導で整備できんもんかねと思う。

442:デフォルトの名無しさん
17/02/14 00:44:04.76 qahXd/u8.net
chronoの作者とかもついに音を上げちゃったしなあ
ああいうのも本来は公式が主導してしかるべきものだわな(rust-lang-deprecated/timeの代わりとして)

443:デフォルトの名無しさん
17/02/14 07:37:19.09 W2b/azRY.net
主要なものすら外部にブン投げるスタイル、面白くて好き
chronoがダメなら次が出るだろうよ

444:デフォルトの名無しさん
17/02/14 08:11:42.74 JAgDzlFN.net
音を上げたっていうののソースは?
URLリンク(users.rust-lang.org)
ここ見るとまだまだやる気に見えるが。
一人でやるの限界だからコミュニティ化したいとは書いてあるけど。

445:デフォルトの名無しさん
17/02/14 08:21:59.52 s4KAVx3x.net
世間ではそれだけで音を上げたという。
ちょっとヘルプ求めただけでも。

446:デフォルトの名無しさん
17/02/14 08:24:38.08 w7iikRzO.net
I had significant energy depletion that has prevented me to do *anything* that is not a daily jobって相当やで
実際しばらくはmerge commitばかりやってたわけだし

447:デフォルトの名無しさん
17/02/14 08:38:47.54 JAgDzlFN.net
音を上げたっていうからてっきりunmaintainedになったもんだと。
というか時刻系ライブラリまで外注とかRust流行らせる気あんのか?

448:デフォルトの名無しさん
17/02/14 08:41:04.32 JAgDzlFN.net
いや、言語のコンセプト考えるとそこはlibc叩いてなんとかせいって感じか。

449:デフォルトの名無しさん
17/02/14 09:01:28.39 MfKEp5BT.net
libcの時間系の関数ってシステム時刻の変更が影響あるものしかなくて足りなく無い?
結局clock_getimeとか環境依存のが必要になる感じ

450:デフォルトの名無しさん
17/02/14 09:29:23.11 he6YB8dM.net
きっとうるう秒が悪い

451:デフォルトの名無しさん
17/02/14 10:17:09.44 gRGlEM3t.net
Goがなんだかんだ受け入れられたのってこの手のライブラリをほとんど公式で提供してるのもでかい気がした。

452:デフォルトの名無しさん
17/02/14 10:29:11.59 DOzUz97u.net
Rust's 2017 roadmap
URLリンク(blog.rust-lang.org)
> Rust should have 1.0-level crates for essential tasks

公式もやる気を見せてるしがんばってほしいね

453:デフォルトの名無しさん
17/02/14 13:02:14.37 yamMgOVS.net
D言語ももう少し根性見せろや

454:デフォルトの名無しさん
17/02/14 13:37:21.21 EX/xGDf7.net
純粋な疑問なんだが今のRustがDに勝ててる点ってケツモチ企業がいること以外になんかあったっけ。
コミュニティ規模的にはそこまで差はないよね?

455:デフォルトの名無しさん
17/02/14 13:46:33.71 W2b/azRY.net
いつもの謎のD言語推し
何がお前をそうさせるのか

456:デフォルトの名無しさん
17/02/14 15:50:24.26 ze+N1Rxh.net
githubでfork数10倍差があるんだけどコミュニティ規模に差がないって何基準?

457:デフォルトの名無しさん
17/02/14 17:25:27.66 EX/xGDf7.net
Stackoverflowの質問数から、Rustの言語自体の難解性差っぴいてだいたい同じくらい

458:デフォルトの名無しさん
17/02/14 17:37:38.79 qahXd/u8.net
URLリンク(github.com)
>Repositories 6,413
URLリンク(github.com)
>Repositories 5,754
先発の言語でこれな時点でねえ

459:デフォルトの名無しさん
17/02/14 18:24:47.18 tJceDBsJ.net
新しい言語ほど、時刻とか日付とかは鬼門だよ
ナノ秒まで扱わせろとか元号に変換させろとかうるさい注文が来るんだから

460:デフォルトの名無しさん
17/02/14 18:26:17.87 uwayiWk9.net
Dのtimeは混乱してるようにみえる

461:デフォルトの名無しさん
17/02/14 18:56:33.55 qahXd/u8.net
let ymd = (date.year(), date.month(), date.day());
let era = if ymd >= (1989, 1, 8) {
'H'
} else if ymd >= (1926, 12, 25) {
'S'
} else if ymd >= (1912, 7, 30) {
'T'
} else if ymd >= (1868, 1, 25) {
'M'
} else {
'?'
};

462:デフォルトの名無しさん
17/02/15 08:45:00.92 nJh54DV/.net
日本の元号を標準ライブラリに入れろなんてバカ存在するの?

463:デフォルトの名無しさん
17/02/15 10:42:25.80 9ZjtEPYx.net
日本のIT人材水準のゴミクズ加減からするとあり得んとも言い切れんのだよな。

464:デフォルトの名無しさん
17/02/15 11:05:55.95 N3aAX75A.net
>>453
TimeZoneサポートしてる言語で元号入ってるのあったんじゃね

465:デフォルトの名無しさん
17/02/15 11:40:15.46 Eq8lnkGd.net
>error[E0008]: cannot bind by-move into a pattern guard
あああああ! guard内ではborrowしかしてねえだろ殺すぞ!

466:デフォルトの名無しさん
17/02/15 12:24:37.27 er7cKMeE.net
ちょっとワロタ、コード切り出して張り付けてみ?
考えてやんよ

467:デフォルトの名無しさん
17/02/15 12:58:26.10 Eq8lnkGd.net
当初書きたかった奴がこんな流れ
guard内ではCopyをimplしているs.xしか使用していないから本来moveの必要はないはず
URLリンク(play.rust-lang.org)
こうしたらコンパイルが通ったけど、elseあたりがとてもキモい
URLリンク(play.rust-lang.org)
まあ既にコンパイルは通ってるから直せなくても別に困らないんだけど、なんかキモい

468:デフォルトの名無しさん
17/02/15 13:39:24.49 JsTxjjGi.net
あんま笑い事じゃないな…自分の手には余るわ。

469:デフォルトの名無しさん
17/02/15 14:48:20.04 kyvGdeQY.net
Rustが実用に耐えない欠陥言語であることがまた一つ示された

470:デフォルトの名無しさん
17/02/15 15:04:13.32 er7cKMeE.net
こんなんでどうだろう
URLリンク(play.rust-lang.org)
無用にCopy/Cloneしてんじゃねーよとは思わなくはないけど、多分COWで最適化されて実際はその動きをしない...と思いたい
if elseの気持ち悪さはなくなるから、derive宣言が許されるならこれで回避したい所存

471:デフォルトの名無しさん
17/02/15 15:11:30.78 er7cKMeE.net
あ、Enum::Vがテスト用に書き換えたままだ
そこは無視してくれい

472:デフォルトの名無しさん
17/02/15 15:56:56.27 JsTxjjGi.net
一応、RFCにも入ってて実装待ちになってはいるんだな
URLリンク(github.com)
馬鹿なことをしない限りは問題無さそうなんだけど、Cell::setとか使われると厄介かも

473:デフォルトの名無しさん
17/02/15 16:16:51.99 8li9lRMw.net
noneのelseは確かに消したい衝動に駆られざるをえない

474:デフォルトの名無しさん
17/02/15 16:24:22.19 kyvGdeQY.net
キモい書き方でしか書けない言語って実用性もお察し。

475:デフォルトの名無しさん
17/02/15 16:31:16.56 Eq8lnkGd.net
実装待ちか……本当に実装待ちの機能多いよね。改善の予定すらないよりはよほどマシだけど
>>461
実際のコードではSに相当するstructがsize_ofで50バイト以上あるようなものだから最適化に賭けてcloneしまくるのも怖いんだよなあ
ただ、将来的に>>463が実装される予定なら一時的なworkaroundとしてそうするのもありかな……
みんな助言サンクスです

476:デフォルトの名無しさん
17/02/15 17:13:01.01 k6zWy9I5.net
あれれーおかしいぞー、RFC通ったのが一年以上前に見えるんだが……

477:デフォルトの名無しさん
17/02/16 10:31:03.92 Ql+ZhAJA.net
機能に欠陥がある言語というのもさることながら、
その欠陥に当てるパッチすら一年以上放置。
本当この言語おわってんな。
Cを置き換えるとか腹が痛くなるわ。

478:デフォルトの名無しさん
17/02/16 11:24:08.77 JPLcUbCW.net
なにかしら貢献しようってのはないの?

479:デフォルトの名無しさん
17/02/16 12:09:50.46 QxzW1FU8.net
触んな触んな

480:デフォルトの名無しさん
17/02/16 12:10:46.27 AljdSsft.net
平和なRustスレに粘着アンチが出る程メジャーになったか。

481:デフォルトの名無しさん
17/02/16 18:35:45.29 jxTm1qP3.net
この言語じゃなくても、そろそろ流石にC/C++の後継言語は出てきて欲しいぞな

482:デフォルトの名無しさん
17/02/16 18:40:43.39 RfRD56xR.net
サーバサイドにはgoが、iOS/macOSにはswiftがいるじゃん
マルチOSのコアライブラリという残りのパイでrustは芽を出すといいなぁ
nimよりはマシではないかと思っている

483:デフォルトの名無しさん
17/02/16 20:59:32.12 VUboIYs6.net
C/C++の後継を考えると変数宣言はType val形式じゃないと受け入れられないでしょ。
Rustはvar val:Type形式だし

484:デフォルトの名無しさん
17/02/16 21:05:18.40 dGmRkXVH.net
そんな些細なことに拘る奴おらんで。

485:デフォルトの名無しさん
17/02/16 21:18:32.52 RfRD56xR.net
>>474
ワロタ、生ポインタがーならまだしもそんな所を突っ込むかw

486:デフォルトの名無しさん
17/02/16 21:30:01.61 WlZ7N49H.net
システムプログラミングってもなあ
その下のハードウェアAPIがまずC/C++だしunsafeまみれになるくらいならC++で別に... となりがちな予感

487:デフォルトの名無しさん
17/02/16 21:48:54.09 kTImIXI/.net
お前、rustでシステムプログラミングしたことないだろ
下層レイヤーをunsafeでラップして中層以上はrustだけで書くからunsafeだらけにはならないよ
unsafeだらけになるような書き方する奴がC/C++で書いたら生ポインタ弄り回したり、独自macroで汚したりする予感

488:デフォルトの名無しさん
17/02/16 21:50:51.71 QxzW1FU8.net
-sys crateは良い文化

489:デフォルトの名無しさん
17/02/16 22:52:06.05 kEY1d4Ow.net
c++ の後継は c++ 自身だろ。
おれはもう別言語にしろと言いたいけど。

490:デフォルトの名無しさん
17/02/16 23:16:50.76 Ctthh1M5.net
rustcにCやC++が残ってる限りrustがC/C++の後継に成りきれない何かがある

491:デフォルトの名無しさん
17/02/16 23:20:52.50 DGgcs6h7.net
>>474 val: Typeの方が文法的に良いのよ。
Type val単体だとそう弊害は無いんだけど、例えばジェネリクス<>を使うことにするとA<B> x; っていう文が宣言なのか比較演算してるのかパーサが分かりにくいとか、
キャストを(Type)xっていう文法にしたら x + (A) (y)っていう式はyをAにキャストしてるのかA(y)という関数なのかが分からないとか、
パーサに型やらシンボルの種類とかいう文脈を保持させる必要が出てくる。
おかげでCもC++もJavaもまともにパースしようとすると手で書いた方が良いってくらい面倒になってる。

492:デフォルトの名無しさん
17/02/17 00:33:46.93 yhaDaC8E.net
llvmをrustで書き直そう

493:デフォルトの名無しさん
17/02/17 00:53:54.84 sPCLdDuU.net
そもそも変数の宣言を型名で表す文法と型推論の相性が悪すぎるでしょ

494:デフォルトの名無しさん
17/02/17 01:13:10.67 9N3wqPif.net
とりあえず2017年のロードマップ完遂したらC++の後継候補くらいには正式になれそうな感じがする。

495:デフォルトの名無しさん
17/02/17 05:44:50.97 ICuCz4ej.net
ゲームエンジンをパフォーマンスそのままでRustで書き直せたら後継といっていいんじゃなかろうか

496:デフォルトの名無しさん
17/02/17 08:06:47.24 nCBINic8.net
>>483
SQLiteをRustで書き直そう

497:デフォルトの名無しさん
17/02/17 10:52:00.95 jHhPXKUT.net
linuxをRusuxにすればcの後継

498:デフォルトの名無しさん
17/02/17 11:12:03.68 3FtIr36J.net
>>488
>>9

499:デフォルトの名無しさん
17/02/17 14:07:26.39 eFr6pWHl.net
>>15

500:デフォルトの名無しさん
17/02/17 18:21:18.09 5sY5yHIi.net
FireFoxをRustで書き直そう

501:デフォルトの名無しさん
17/02/17 18:59:34.73 ZDBavghI.net
Servo

502:デフォルトの名無しさん
17/02/17 19:18:49.28 sPCLdDuU.net
ServoをRustで書き直そう

503:デフォルトの名無しさん
17/02/17 20:52:51.39 jHhPXKUT.net
アセンブリ部分が残ってもんなもんどーでもいいんだよ
Cで書いてる部分をrustに置き換えたら十分って話
アセンブリ言語部分を置き換えたいなんて一言も言ってない

504:デフォルトの名無しさん
17/02/17 21:22:35.36 krcZKPEA.net
先ずはlibcompiler-rtから

505:デフォルトの名無しさん
17/02/17 22:06:03.85 y4+T5net.net
>>442
だな

506:デフォルトの名無しさん
17/02/18 09:19:54.20 PNO7DmhT.net
>>494
>>15
同じ話を何度されてもなw
LinuxをRustで書き換えればーの話はよほど変な角度から攻めないと無理

507:デフォルトの名無しさん
17/02/18 10:17:07.05 bUHmqYrs.net
>>491
それは既に部分的にやってるんだっけ
>>497


508:デフォルトの名無しさん
17/02/18 12:01:36.21 xPVYVI1A.net
Cow使うとライフタイムパラメータがstructの最上位まで伝搬してしまうのですが
これはそういうものとして受け入れるしかないですか?

509:デフォルトの名無しさん
17/02/18 20:39:36.76 Ul87se3O.net
Cow<'static, T>なら伝播しないけど、'staticを必須にしたい場面は少ないよねえ……

510:デフォルトの名無しさん
17/02/19 01:05:13.21 s3EB+fhT.net
後継言語は名前からしてD言語じゃないと

511:デフォルトの名無しさん
17/02/19 06:50:46.22 v/sHJsoq.net
名前だけは後継

512:デフォルトの名無しさん
17/02/19 08:30:58.18 2oS2o7no.net
ライフタイムは上に伝搬しないとコンパイラ的にもプログラマ的にも困ると思うの

513:デフォルトの名無しさん
17/02/19 08:34:53.71 v/sHJsoq.net
実際にはelisionでCow<T>と書けることも多いしな

514:デフォルトの名無しさん
17/02/20 18:49:57.67 ehHRa0XE.net
こんな書き方できたのか!!!
fn x((a, b): (u32, u32)) {}

515:デフォルトの名無しさん
17/02/20 22:04:29.62 97wV3Rfs.net
別にそんな書き方出来なくてもいいよ

516:デフォルトの名無しさん
17/02/20 23:14:15.09 mI2RJMjC.net
単なるタプルを引数にした関数で、呼び出しもタプルだよなぁ・・・
と思って試したら、やっぱり呼び出しも
x((1, 1));
で書く必要があった!!!
どういうケースで使うんだよ、このタプル引数の関数

517:デフォルトの名無しさん
17/02/20 23:38:34.63 ehHRa0XE.net
fn foo(Foo(a, b): Foo) {}

518:デフォルトの名無しさん
17/02/21 08:08:29.59 KVrlVIJb.net
落ち着けただの構造化束縛だ。
URLリンク(play.rust-lang.org)

519:デフォルトの名無しさん
17/02/21 08:12:10.81 KVrlVIJb.net
structural matchするの忘れたけどパターンマッチも構造化束縛も両方パターンだよ。

520:デフォルトの名無しさん
17/02/21 08:20:55.82 eTJT09tJ.net



521:ああ、そういうことか >>508の言いたい事を理解しようと首を傾げてたけどfn fのtypoなんだろうな それとタプル引数関数の関係性は分からんけど、それはもう考えまい



522:デフォルトの名無しさん
17/02/21 08:24:42.94 9Kn0UuQq.net
>>505の時点で「関数引数でパターンマッチ出来たのか」ということを言っていたんじゃない?

523:デフォルトの名無しさん
17/02/22 01:07:33.12 s4CGuq4I.net
>>511
>>508のfooは関数名でFoo(a, b)はtuple structに対する構造化束縛で
右辺のFooは引数リストの1つめの仮引数への型注釈だよ。
静的言語だからパターンが現れるとたまたまLHSと型注釈の両方に型名が出てくるの。
これがもし動的言語ならLHSに型名はでてこない。
// js
function foo([a,b]){}
ちなみにa,bは分解された束縛。

524:デフォルトの名無しさん
17/02/22 11:24:58.93 IzdwqWc0.net
URLリンク(www.reddit.com)
もっとborrow checkerが賢くなってくれたら嬉しい。個人的にはimpl Traitよりもありがたい

525:デフォルトの名無しさん
17/02/22 11:25:33.44 dczNCglp.net
crates.ioのダウンロード数のグラフがすっげえ見づらくなってる

526:デフォルトの名無しさん
17/02/23 09:04:21.53 zngwxGAX.net
Rust Project Developersが直々に乗り込んでコード書いて、Rustが一番早いぜとか言い出す姿勢ほんとすこ
URLリンク(benchmarksgame.alioth.debian.org)

527:デフォルトの名無しさん
17/02/23 09:41:00.54 dRZrz+vD.net
ワロタwww
しかし、流石にC言語勢がプライドかけて1位奪取に走ると思う

528:デフォルトの名無しさん
17/02/23 10:36:58.61 IXi6HShy.net
コストかけるとこほんとそこじゃねえんだよ。
こりゃ某S系質問サイトで人気トップなのもステマだろうな
ステマで人気を膨らましてその実実用にもならないクソ言語
クソモジラがケツモチしてるんだからステマで人気水増ししてるのも当然の帰結と言えるか

529:デフォルトの名無しさん
17/02/23 13:08:05.53 H4R0mXRf.net
人気水増ししたら何かいいことあるの?
ステマするほどの価値があるようにも思えないが。

530:デフォルトの名無しさん
17/02/23 13:16:02.83 LSEhsWdS.net
>>519
自分もこんなゴミステマしても虚しいだけだと思うんだが、
どうやらモジラにとってはこの言語が流行ってくれないと困るらしい
だから「これからはRustの時代!」みたいな工作をStack某とか上のベンチマークとかでやってんだろう。
最近ロゴ変えたことといい、どうもクソモジラはOSS界の電通目指してるくさいな。

531:デフォルトの名無しさん
17/02/23 13:25:43.94 U3ebhjnw.net
Rustが流行る
=> Rustで実装されたServoの完成度が上がり流行る
=> ServoがWebkitの代わりに使われる
=> Servo組み込みサポート費用がMozillaに払われる
随分と迂遠なMozillaの経営改善計画だったんだよ!と頑張ってみる
ステマされて困る人はパイを奪われるWebkit関係者かな?

532:デフォルトの名無しさん
17/02/23 13:30:47.35 zngwxGAX.net
競争相手はWebKitでもEdgeHTMLでもなくBlinkやろとマジレス

533:デフォルトの名無しさん
17/02/23 13:44:41.82 LSEhsWdS.net
>>521
それ本気で言ってるとしたら中の人乙としか言いようがないな。

534:デフォルトの名無しさん
17/02/23 14:32:01.45 eozO90Y3.net
クソ連呼厨ってID変えられるのかよ

535:デフォルトの名無しさん
17/02/23 14:51:38.09 zngwxGAX.net
nixを始めとする一部のRust関係プロジェクトのプルリクエストを管理している@Homuとかいうbot、あれって誰の趣味であんな風になったんだ……?

536:デフォルトの名無しさん
17/02/23 14:51:48.47 LSEhsWdS.net
>>524
別に理由もなくクソ連呼してるわけでもないんだがな。
CやC++で簡単に書けることもコンパイラに弾かれて書けないわ
そもそもシンタックスが未完成だわ
ライブラリも貧弱で、かつCライブラリ使うためのラッパも
unsafe層とRust層の二層無駄に必要だわ
これを実用言語としてごり押しするクソモジラの良識のなさが一周回って笑える
もともとモジラに良識なんてないけどさ。

537:デフォルトの名無しさん
17/02/23 14:56:46.73 yq/Deji1.net
危険な操作をコンパイル時点で弾いてくれるのがRustの売りなのにそこで文句を言ってるのは根本的にミスマッチしているとしか

538:デフォルトの名無しさん
17/02/23 15:07:19.45 LSEhsWdS.net
>>527
危険な操作とか言い出す判定がクソすぎて明らかに安全なパターンもはじいて来るだろ。
おかげでボイラープレートなコードが増えること増えること。
そこをなんとかごまかすための文法拡張の導入は機能に関係ないとかで後回し
ついでに型もうるさい上にドキュメント見ても返り値の型がわからんで型合わせが総当たり
確かに物が何一つ作れないという意味では安全だわな。危険なものも含めて一切できないから。

539:デフォルトの名無しさん
17/02/23 15:11:18.18 U3ebhjnw.net
そろそろD言語推しが参戦しそう
swiftスレの荒しが波に乗らなくて遊びにきたんだろうから、少し待てばまたあっちに戻ると思うよ

540:デフォルトの名無しさん
17/02/23 19:22:05.86 cQa0oJ+5.net
>>528
どうせクソコードなんだろう
無能のクセに文句だけは一流

541:デフォルトの名無しさん
17/02/23 19:36:29.28 9wlFqT9C.net
>>519
>人気水増ししたら何かいいことあるの?
Rustライブラリの開発者が増える→ライブラリが充実する

542:デフォルトの名無しさん
17/02/23 20:03:57.20 cNXolJMY.net
Rust勉強したら何が作れんの?
C#とJSで何でも作れるご時世で

543:デフォルトの名無しさん
17/02/23 20:11:53.29 eZ3ictl+.net
「言語Aで何でも作れること」と、「言語Bで作れるもの」に
どういう関係があるのか

544:デフォルトの名無しさん
17/02/23 20:15:09.50 zngwxGAX.net
実際にお前らが何を作ってるのかは気になるな
crate公開したりしてんの?

545:デフォルトの名無しさん
17/02/23 20:25:56.16 LSEhsWdS.net
>>530
そういう、Rustコンパイラ通らなきゃクソコードって思い込みが一番腹立つんだよ

546:デフォルトの名無しさん
17/02/23 20:42:34.44 oSrrQwof.net
>>535
でもそうなんでしょ?

547:デフォルトの名無しさん
17/02/23 21:00:48.13 LSEhsWdS.net
>>536
Cでバグなく動いてたコードが移植できない時点でな。

548:デフォルトの名無しさん
17/02/23 21:06:08.32 SG08isVj.net
動いてるだけで、そのコードバグ有るんやで。
お前には分からんのだろうが

549:デフォルトの名無しさん
17/02/23 21:06:35.79 FuQeN9Oq.net
へえバグないんだ良かったじゃんわざわざRust使わなくても済むね
>>534
人に尋ねるときはまず自分から晒すのが礼儀やで

550:デフォルトの名無しさん
17/02/23 21:11:35.09 LSEhsWdS.net
そうだよ。だからずーっとRustは使う必要ない、つーかそもそも言語として欠陥品、クソモジラのステマで流行ってるように見えてるだけだ
っつってんのに、誰一人まともに聞きやしねえ。
まあこんなスレで称賛してるあたりステマ部隊なんだろうが。

551:デフォルトの名無しさん
17/02/23 21:15:20.74 vAxbMLg6.net
ID:LSEhsWdS
今日の患者さんはなかなか元気だな。

552:デフォルトの名無しさん
17/02/23 21:15:27.70 eZ3ictl+.net
どうせRustがスタンダードになることは無いんだから
嫌なら使わないで済ませられないの?
周りに熱心な布教野郎がいて迷惑してるのか

553:デフォルトの名無しさん
17/02/23 21:17:02.17 kHt4tzR1.net
Rustの美しさを一つあげたい
それはクロージャの記述
// rust
let f = |x| x + 1; // 美しい
f(123); // 美しい
g(|x| x + 1); // 美しい
# ruby
f = lambda {|x| x + 1} # 汚い
f = ->(x) {x + 1} # おぞましい
f.call(123) # 汚い
f.(456) # 見苦しいドット
f[789] # 悲しい
g {|x| x + 1} # 見苦しい中括弧
// javascript
var f = x => x + 1; // 見苦しい矢印
f(123); // 美しい
// c++
auto f = [](int x) -> int {return x + 1;}; // もはや悲惨
f(123); // 美しい

554:デフォルトの名無しさん
17/02/23 21:19:45.77 sZtROie8.net
C++の -> int は省略できるやろ

555:デフォルトの名無しさん
17/02/23 21:30:27.03 LSEhsWdS.net
>>542
周りっつーか上司が誰に吹き込まれたのか既存のC資産をRustに書き換えろとかふざけた話を下ろしてきた。
チーム全員現在進行形でぶちギレてて今度上司の上司と話つける予定よ。

556:デフォルトの名無しさん
17/02/23 21:35:29.77 sZtROie8.net
>>545
なにそれ、Rust使ったことなくてスレ見てるだけだから別の言語覚えながらリファクタリングとかむしろ羨ましいんだけど。

557:デフォルトの名無しさん
17/02/23 21:36:35.33 eZ3ictl+.net
>>545
あぁ、マジで実害あるのか…
でも上司だってこのスレ見て決めたわけじゃない、ここで憂さ晴らししてもしょうがないだろ
まあ大変だろうが頑張ってくれ

558:デフォルトの名無しさん
17/02/23 21:37:38.93 LSEhsWdS.net
>>546
なんだ使ったことないのに称賛してたのか。
関数一つ移植するのに半日とかザラで発狂しそうになるぞ。
悪いことは言わんから本当にやめとけ。

559:デフォルトの名無しさん
17/02/23 21:38:33.89 sZtROie8.net
>>548
え?称賛なんかしてないけど?

560:デフォルトの名無しさん
17/02/23 21:41:45.75 LSEhsWdS.net
>>549
うらやましいとか言われたからRust好きでたまらんのかと思ったわ。

561:デフォルトの名無しさん
17/02/23 21:48:04.84 DPtsYYmf.net
LSEhsWdSはプログラミングセンス無いからこの業界辞めた方がいい

562:デフォルトの名無しさん
17/02/23 21:49:23.09 TLItgOP3.net
元コードにバグがないと仮定して、CコードがRustに移植できない例考えてみたが、
グローバル変数にバッファプール置いてるとかだと確かにストレートな移植はできなさそうだな。

563:デフォルトの名無しさん
17/02/23 21:54:24.67 LSEhsWdS.net
>>551
Rust基準でプログラミングセンス語るクソモジラ信者乙。

564:デフォルトの名無しさん
17/02/23 21:58:31.77 zngwxGAX.net
合わない現場で無理やり使わされてるってことなら災難だね
分かったからここで鬱憤を晴らすのはやめてくれ

565:デフォルトの名無しさん
17/02/23 22:04:06.85 TLItgOP3.net
LSEhsWdSがブチギレてることは伝わったが、その怒りは言語じゃなくて上司に向けるべきなんじゃねーかな。

566:デフォルトの名無しさん
17/02/23 22:05:57.88 NuCuZGCr.net
マ板でやれ

567:デフォルトの名無しさん
17/02/23 22:08:46.56 SG08isVj.net
>>555
ID:LSEhsWdS にそれが出来たら、こんなところで暴れてないんだよなあ。

568:デフォルトの名無しさん
17/02/23 22:09:53.57 cNXolJMY.net
Rustのどのへんがぶちギレポイントなのか詳しく
それなら少しは有意義やろ?

569:デフォルトの名無しさん
17/02/23 22:14:46.67 X5Zb9v7q.net
>>525
homuの作者

570:543
17/02/23 22:17:35.80 kHt4tzR1.net
もいっちょRustのいいところ
foldの自然さ
// rust
let a = [1, 2, 3].iter().fold(100, |acc, x| acc + x); // 美しい
# ruby
a = [1, 2, 3].inject(100, :+) # 文句は無い
b = [1, 2, 3].inject(200) {|acc, x| acc + x} # 初期値とブロックを離して書くのが寂しい
(* OCaml *)
let a = List.fold_left (+) 100 [1; 2; 3];; (* 文句は無い *)
let b = List.fold_left (fun acc x -> acc + x) 200 [1; 2; 3];; (* funと->がやっぱり気になる *)

571:デフォルトの名無しさん
17/02/23 22:32:19.67 K3Cm2dt


572:r.net



573:デフォルトの名無しさん
17/02/23 22:43:51.07 8gwVa+zN.net
syntax気にするだけならsmalltalkやるよろしアル

574:デフォルトの名無しさん
17/02/23 22:49:52.60 rTUbWHRo.net
>>558
borrow checkerにマジでキレる5秒前
なんかrustコーディングしてるとあいつとアームレスリングしてる気分だよ

575:デフォルトの名無しさん
17/02/23 23:12:24.86 ItvUsJzd.net
グラフ構造とか他のメンバ変数への参照をメンバ変数に持ってる構造体とか
あと、borrow checkerに怒られる場合にその箇所の修正だけで済むのか根本的に間違ってるのか分からないことが多くて困ることが多い

576:デフォルトの名無しさん
17/02/23 23:26:16.38 TLItgOP3.net
確かに構造体の中に何らかのデータの借用持ってるとだいたい頭がおかしくなって死ぬな。

577:デフォルトの名無しさん
17/02/23 23:27:05.57 9wlFqT9C.net
>>560
JavaScript
var a = [1,2,3].reduce((acc,x)=>acc+x, 100);

578:デフォルトの名無しさん
17/02/23 23:28:39.85 zngwxGAX.net
Rustの良さは徹夜明けに書いたコードでもSEGVらない安心感()

579:デフォルトの名無しさん
17/02/23 23:33:26.07 JrwuNkgj.net
移植だけなら全部unsafeにすればわりと機械的に出来るような気も。
そのあとリファクタリングでunsafe取っていくかそのまま放置かは状況次第だけど。

580:デフォルトの名無しさん
17/02/23 23:35:46.51 9wlFqT9C.net
nullチェック機構がどれだけ強固になろうともそれを回避する手段が容易であれば糞プログラマを排除しないかぎり糞コードは量産される

581:デフォルトの名無しさん
17/02/23 23:42:42.37 UGVUxePL.net
JavaScriptなんて使うくらいならいっそCとEmscriptenで書きたいわ

582:デフォルトの名無しさん
17/02/23 23:45:15.15 TLItgOP3.net
>>570
ところでRustとEmscriptenでWebasm吐くって出来るんですよね。

583:デフォルトの名無しさん
17/02/23 23:58:21.84 DPtsYYmf.net
その言語にはその言語の書き方考え方というのがある
高級言語使いが低級言語を使えない言語扱いしてるのと同レベルの幼稚な文句
ただひとつ言えるのはこいつは無能でセンスもゼロ

584:デフォルトの名無しさん
17/02/24 01:32:47.64 /cLlv/nZ.net
>>543
> // rust
> let f = |x| x + 1; // 美しい
この |x| x + 1 のどこが美しいか理解不能
この後で悲惨と書いてるC++のと50歩100歩のアドホックな書き方
Schemeなどの (lambda (x) (+ x 1)) のほうが遥かに構文が統一的で美しい

585:デフォルトの名無しさん
17/02/24 08:44:12.21 F/TDaiUX.net
rustってJavaからJNIでCを呼び出すのと何が違うのっと

586:デフォルトの名無しさん
17/02/24 08:46:52.43 VQegiGIK.net
何を煽りたいのっと

587:デフォルトの名無しさん
17/02/24 10:20:37.37 Lvwt6BNZ.net
>>574
1. Rustはネイティブコードにコンパイルされる
2. Rustの構文制約はJavaと比べ物にならないほどキツい(良し悪しはともかく)
3. Javaのほうが圧倒的に過去資産がある
こんなもんか

588:デフォルトの名無しさん
17/02/24 11:20:14.42 Eio5IVQ5.net
|x|は単純に?ってなるよな
なんでここだけRubyなんだと。他はC系かML系風味なのに。激しく浮いてる
C++ですらunified(笑)とか言って普通の関数とクロージャを近付けようとしているのに
それとは別に、開き括弧と閉じ括弧が同じなのも後々困らねーかと思ってしまう

589:デフォルトの名無しさん
17/02/24 14:20:48.79 fnwYTLZ/.net
構文はもっとMLに寄せてほしいなあ



590:{ } とか見たくない



591:デフォルトの名無しさん
17/02/24 17:22:18.52 sBRqP5fz.net
do end よりは {} のほうがマシ (個人的に)

592:デフォルトの名無しさん
17/02/24 17:24:16.93 t5bNNBCg.net
シンタックスの話をしだすと結局好みの問題に落ち着く

593:デフォルトの名無しさん
17/02/24 18:23:00.24 Eio5IVQ5.net
C++がtemplateと<< >>演算子で散々苦労しているのを見た後で
わざわざそれを踏襲したりするのは悪い方の好みじゃね?

594:543
17/02/24 18:39:46.43 zaWF9UZ/.net
手のひら返し:クロージャの表現はやっぱML系のほうが優れてる可能性
クロージャを返すクロージャというふうに、連なったときの表現を見る
(* OCaml ウルトラスムーズ。呼び出し部分もシンプル *)
let f = fun x -> fun y -> fun z -> x + y + z;;
print_int (f 1 2 3);;
// rust move無しで書けたならよかった?
// |x| |y| |z| x + y + z; ←うーん?
let f = |x| move |y| move |z| x + y + z;
println!("{}", f(1)(2)(3));
# ruby こうして見ると意外な統一感を感じなくも無い
f = lambda {|x| lambda {|y| lambda {|z| x + y + z}}}
p f.(1).(2).(3)
>>573
rustのが断然シンプルだと思うけど(構文の統一感とやらについてはさておき)
あとlisp系言語の中でSchemeだけがクロージャの扱いが自然なんだっけ?
ちなみにまったく理解してないし、しかも聞きかじりで、多分記憶違いだけど
>>577
そもそもはSmalltalkのブロックの中の縦線なのかなぁ

595:デフォルトの名無しさん
17/02/24 23:22:20.10 yM4uvxXG.net
>> 582
> そもそもはSmalltalkのブロックの中の縦線なのかなぁ
それならこうした方が自然。
let f = :arg1 :arg2 arg1 + arg2;
let f = :arg1 :arg2 { arg1 + arg2 };
それよりこっちの方が良い
let f = (a, b) -> a + b;
`-> T`が戻り値の型の宣言だからこれはないだろう。
こうもならないだろうね。
let f = [ :a :b | a + b ];
無名関数の引数が:arg1で空白区切りは発狂するやつが出る。
matzがなぜ無名関数の引数リストにSmalltalkのブロックの引数リストの構文じゃなくて
一時変数の宣言の構文を使ったかはわからん。

596:デフォルトの名無しさん
17/02/25 00:07:58.70 jGQ3Wak9.net
`:arg1` は型注釈と混同する
ラムダ計算風に `let f = \x y. x + y` はどうかな

597:デフォルトの名無しさん
17/02/25 01:20:07.77 hUBRL+mA.net
パラレルワールドのrust文法を議論してて草生える
お前らは何年前に分岐した世界線にいるんだw

598:デフォルトの名無しさん
17/02/25 04:54:52.43 nJl4hm2p.net
何で新しい言語が創られるかといえば、それはもう、C++コードのメンテから解放されたいという宿願のためでしょ

599:デフォルトの名無しさん
17/02/25 19:53:48.61 jxiHI5n5.net
しかし名前が良くないなこの言語は
なんでまたこんな名前にしたんだろうか

600:デフォルトの名無しさん
17/02/25 20:15:31.45 FTYjcOZq.net
俺は名前は好き
四文字でさえあればいいと思ってる
それよりも嫌なのはifの波括弧
短く書きたいときCなら
if (cond) foo(); else bar();
で、目に優しい
if cond {foo();} else {bar();}
これはたまらなく苦痛
C方式に戻してもらうか三項演算子の導入をしてほすい

601:デフォルトの名無しさん
17/02/25 20:19:33.66 FTYjcOZq.net
URLリンク(doc.rust-lang.org)
let y = if x == 5 { 10 } else { 15 }; // y: i32
↑これよりはやっぱ↓
let y = x == 5 ? 10 : 15;

602:デフォルトの名無しさん
17/02/25 20:37:24.76 gF7KaGBm.net
>>588
それがC言語でどれだけのバグを生み出してきたか考えたら有り得ないと思うのだが。
”俺は間違わない?” だったらC使ってればいいんじゃね?

603:デフォルトの名無しさん
17/02/25 20:39:21.20 FTYjcOZq.net
>>590
どれだけのバグを生み出してきたの?

604:デフォルトの名無しさん
17/02/25 20:42:35.76 gF7KaGBm.net
>>591
URLリンク(qiita.com)

605:デフォルトの名無しさん
17/02/25 20:43:00.57 AAACSty6.net
適用の順序が一見して分からないケースがあってクソ

606:デフォルトの名無しさん
17/02/25 20:48:49.11 FTYjcOZq.net
>>592
ほえー
あーifに波括弧大事、これがあるからやっぱ波括弧大事だなぁ
波括弧ないからこそこんなことになっちゃうんだなぁ
波括弧さえあればこれ避けられたのになぁ
波括弧無しのifなんてあり得ないよなぁ
ってこと?
あとはどれだけのバグを生み出してきたの?

607:デフォルトの名無しさん
17/02/25 20:58:23.81 AAACSty6.net
>>592を一般化した
if (cond)
  foo();
  bar();
の形式(ただし全角スペースはインデントの代わり)のバグはAppleの例に限らず普遍的なものだろ

608:デフォルトの名無しさん
17/02/25 21:03:09.97 gF7KaGBm.net
>>594
多くのコーディング規約で禁止されてる。(例えばGoogle C++ Style Guideとか)。
わざわざそういう項目がある理由は、まぁ言わなくても解るよね?

609:デフォルトの名無しさん
17/02/25 21:04:36.43 OjMnqw5o.net
僕はそんなコード絶対に書かないしレビューでも見落とさないんですうううううう!!!!!
万一紛れ込んでもテストで拾うしっ!!!!!!!!!!

610:デフォルトの名無しさん
17/02/25 21:08:17.05 FTYjcOZq.net
>>596
ちょっと茶化したけど、理屈は分からないというわけではないよ
実際にrustのifがこうなってる経緯は知らないけど
現状について少なくともそういう視点で支持する意見があるのは正直驚いた
勉強になりました

611:デフォルトの名無しさん
17/02/25 21:11:22.58 ihKm/PIs.net
ifのやらかしは有名なプロジェクトでもあったりするよね

612:デフォルトの名無しさん
17/02/25 21:16:11.60 oY1Z/R8w.net
別に見づらくないじゃんって意見のほうが多数な気がするけど
URLリンク(github.com)

613:デフォルトの名無しさん
17/02/25 21:17:27.66 A0aZ5Z9S.net
ブレインファックじゃないんだから、人間に読めるコードとなる言語仕様が必要

614:デフォルトの名無しさん
17/02/25 21:20:30.53 AAACSty6.net
まあ実際のコードでは無理に一行にまとめず5行に分けろってことだな
let x = if cond {
f()
} else {
g()
};
もしf(cond ? g() : h())みたいな形で使おうと思っていたのなら、そもそもそれ読みづらいから一旦バインドしてからその結果を使おう
let x = if cond {
g()
} else {
h()
};
f(x);

615:デフォルトの名無しさん
17/02/25 21:22:26.82 oY1Z/R8w.net
あと波括弧外せるようにする提案はここにあるから+1しとけ
URLリンク(github.com)
めっちゃ劣勢だけど

616:デフォルトの名無しさん
17/02/25 21:30:13.94 FTYjcOZq.net
>>602
一点だけ
let x = if cond {
g()
} else {
h()
};
f(x);
↑これよりやっぱ↓これが読みやすい(個人の感想です)
f(cond ? g() : h())

617:デフォルトの名無しさん
17/02/25 21:51:13.57 gF7KaGBm.net
f(cond ? g() : h() ? q() : r() )
と書く奴が現れるデメリットの方がでかいと思うわ

618:デフォルトの名無しさん
17/02/25 21:53:07.56 OjMnqw5o.net
そしてfだのgだのが本当にただの関数呼び出しであるケースは少ないという

619:デフォルトの名無しさん
17/02/25 22:40:54.42 Cjys9ebm.net
波括弧外せなくてもいい派だけど、
三項演算子は何かいい感じのやつを追加してくれ

620:デフォルトの名無しさん
17/02/25 22:48:27.45 jxiHI5n5.net
if式なら三項演算子はいらないよ

621:デフォルトの名無しさん
17/02/25 23:00:24.91 BrkcZ5hg.net
if-elseの波括弧外したらtype ascriptionが曖昧になる。

622:デフォルトの名無しさん
17/02/25 23:54:27.38 +Hmh+RyZ.net
>>604
ioでも使ってろ

623:デフォルトの名無しさん
17/02/25 23:57:17.74 jxiHI5n5.net
f( if cond { g() } else { h() } )

624:デフォルトの名無しさん
17/02/25 23:58:32.04 0X9bWbPB.net
3項演算子とか、関数型の基本のif式(if文じゃないよ)なんだけど、サポートしてねえのかよ

625:デフォルトの名無しさん
17/02/26 02:13:52.49 Xq2/OYkK.net
三項演算子なんてifが文になってる言語でようやく存在を許されるものじゃねえか
波括弧をダサいというのは分かる

626:デフォルトの名無しさん
17/02/26 02:26:37.59 kIbkRe9i.net
if x > 0 { x } else { -x }
if (x > 0) x else -x
個人的にはブレースなしだとelseの前後1トークンの範囲の視認性が低く感じる

627:デフォルトの名無しさん
17/02/26 02:27:19.95 hKGUofZ0.net
if文はSwiftやGoとの差別化をしたいってこと?

628:デフォルトの名無しさん
17/02/26 11:17:28.79 dRlELnWs.net
波括弧省略はLinuxカーネルの連中が使い続けてる。
奴ら頭良いからあれでも上手く回ってるんだろうな。
逆に、波括弧省略するなって言われてる奴らは信用されてないってことなんだよ。


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