1 名前:デフォルトの名無しさん mailto:sageteoff [2016/11/02(水) 03:12:40.30 ID:MYQ7Ohex.net] Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。 www.rust-lang.org/ https://github.com/rust-lang/rust Servo https://servo.org/ https://github.com/servo/servo ◆前スレ プログラミング言語 Rust echo.2ch.net/test/read.cgi/tech/1327489549/
110 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 16:14:34.93 ID:xGw5fwKi.net] イテレータっぽいオブジェクトから値を1個ずつ取り出すfor文の途中で そのイテレータ自体に読み取りアクセスできない問題って、何か回避策あるの? 他言語でXmlReaderとかHogeParserとか使う時に、そういうシチュ有るよね? 標準ライブラリのイテレータ生成メソッドがことごとく変な独自structを 戻り値にしてるのと関係あるのかな。
111 名前:デフォルトの名無しさん [2016/12/05(月) 16:24:10.83 ID:dF177W8B.net] 途中で要素数変化してんじゃね
112 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 16:51:20.80 ID:EFquH9+I.net] 普通にボローチェッカがキレてそう for構文が所有権持っててブロック内で所有は無理でないかね
113 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 16:54:43.02 ID:xGw5fwKi.net] 要素数は変更しないよ。 でも、現在のカーソル位置を読み取るとか、次に来る要素をpeek()とか したい場合あるでしょ?
114 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 17:03:26.68 ID:DNLmzaEu.net] whileとかloopを使うとか、peekの代わりに前の値を保持したりカウンタを用意するとか、不格好になるけど回避策はある for文の中は真っ当な繰り返しだけっていう縛りがあると思えば気持ち悪さが低減できるかも
115 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 19:15:14.98 ID:3+VMIaiU.net] 木構造も舐められるインターフェイスなんでカーソル位置みたいなのを 提供しないのは理に適ってる
116 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 22:50:17.88 ID:LCk8g+4Z.net] while let Some(item) = iter.next() { } なら中でpeek呼べるかと itemがiterをborrowしてるとだめだが
117 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 22:50:53.09 ID:dPl+aGns.net] while let便利やで
118 名前:デフォルトの名無しさん mailto:sage [2016/12/05(月) 22:51:41.39 ID:dPl+aGns.net] 被ったwww while let便利だよね
119 名前:デフォルトの名無しさん mailto:sage [2016/12/06(火) 04:18:15.63 ID:LdzuyWCm.net] >>113 while letは忘れてたわ。 でも、今回はまさにその、itemがiterをborrowしてるパターンだった。
120 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 01:56:30.98 ID:IiMNrJPA.net] Rustって、なんでも参照でゼロコピーを達成するのが偉い風潮だけど、 その効果って、どの程度だと思う? 大雑把なマイクロベンチをすると、&strでループを回してる関数を Stringにあえて書き換えると、処理時間が約2倍程度になる。 桁数は変わらない。 コード書く時間は半分以下になる場合有りそう。
121 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 02:24:30.49 ID:DjbUzNNG.net] >>94 で同じくゼロコストを唱うgoにボロ負けしてるくらいの効果じゃね? 唱い文句に釣られて使って、全体的にへっぽこな書き方したら言うほどでもない的な意味で
122 名前:デフォルトの名無しさん [2016/12/09(金) 15:00:34.04 ID:n+0GjpPi.net] >>94 のベンチマークでgoのフレームワークに大差をつけられてる原因って何? hyperがhttp/2に対応してないからとか?
123 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 18:50:36.16 ID:JXyfLORs.net] >>119 nettyが高ランクなのを見ても、普通に言語の速度を計ってるんじゃなくて、 並列処理性能を計ってるんでしょ。 同じサイトでSmalltalkが高ランクにいるグラフを見た気がするし。
124 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 18:57:53.53 ID:/TjG9z/N.net] prefork系は別として、ginとironの比較だとフレームワークのオーバーヘッド差分じゃない? コード見てもそう特異なことをしてるようには見えず
125 名前:デフォルトの名無しさん mailto:sage [2016/12/17(土) 07:52:38.19 ID:5jD7BRsE.net] https://internals.rust-lang.org/t/beta-testing-rustup-rs/3316/204 rustup 1.0.0 is out.
126 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 03:17:03.88 ID:no0nc4ME.net] 以前は、opt: Option<T>について if let Some(v) = opt { /* ... */ } の代わりとして for v in opt { /* ... */ } を使うのは気持ち悪いと思ってたんだが、英語として読むとforの方が自然なんだよな それに気づいてからはelse節が不要なときはforばかり使うようになった
127 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 04:02:19.92 ID:z0dqDzp7.net] Rust初心者質問させて インストールしたけどcrate.ioからダウンロードできないみたいでcargoがこける Githubでなんかするらしいけど何すればいいの?
128 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 04:08:36.62 ID:no0nc4ME.net] >>124 何を使ってインストールしようとしてる? 今なら↓を使うのが一番簡単だと思う https://www.rustup.rs/
129 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 04:10:19.20 ID:no0nc4ME.net] 「何を使ってインストールしようとしてる?」じゃなくて「何を使ってRustをインストールした?」だわ
130 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 05:29:42.61 ID:ONLzCd75.net] >>124 cargoのエラーを貼ってくれんと何も分からん (´・c_・`)
131 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 05:37:13.59 ID:1Hajl9YU.net] rustupはあまり関係なくね? 確かにそっちを使った方が確実ではあるだろうが
132 名前:デフォルトの名無しさん mailto:sage [2016/12/18(日) 09:31:39.45 ID:NHfwgv45.net] >>123 if let Some(a) = Some(1) と for a in Some(1) と Some(1).map(|a| {}) をrustc -Oでビルドしたらmapが一番バイナリ容量小さいか 英語的に云々はC言語の古き良き文化で気にする気ないけど、zero cost目指す的にはどれが一番良いの? --emit=llvm-ir を読もうとしたけど数行の.rsですら読める気がしなかった:(
133 名前:デフォルトの名無しさん [2016/12/18(日) 14:27:11.90 ID:VFzWAIXP.net] >>124 会社とか学校とか? だとしたらプロキシ設定が必要だった気がする。
134 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 03:58:18.07 ID:LzkIf2kw.net] >>129 map() は遅延評価されるから、そこはforeach()だろって思ったら、 そんなメソッドは無かった。
135 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 04:02:10.67 ID:5+NGkOeZ.net] 遅延評価されるのはIterator::mapであってOption::mapは先行評価
136 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 13:32:12.10 ID:TQft0DAu.net] >>132 効率を考えればそれが正しいのかもしれないけど、統一されてないのはダサいね
137 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 13:40:08.64 ID:HD62Gbfy.net] mapにしてもforにしても、OptionとIteratorを視覚的に区別しづらいからそういう用途ではあまり使わない
138 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 15:40:54.59 ID:6JjvzXZF.net] 性能無視して見映えで選ぶ方がダサいと思った forやmapがif letに比べて性能良いか知らんけど
139 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 16:08:30.40 ID:MHiDziMA.net] 持続可能な開発 三ヶ月後に見直してうんざりしないコードを
140 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 16:38:33.60 ID:6JjvzXZF.net] rustから3ヶ月離れて再開したらborrow checkerにウンザリした forだのmapだのは使うなら常用するものだし、これで持続しないならPGやめるよ
141 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 22:05:49.13 ID:fp1/OlA8.net] ここでmatch派が登場!
142 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 22:12:29.27 ID:CJ2gtWfF.net] ジャニオタか
143 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 22:16:09.38 ID:PYFsy3LE.net] 少なくともコードベース内で統一されてないと気持ち悪い 多様性は悪だわ
144 名前:デフォルトの名無しさん mailto:sage [2016/12/20(火) 23:57:06.74 ID:fp1/OlA8.net] 唐突に始まるRubyディス
145 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 00:26:43.08 ID:ej8UmSNF.net] シンタクスが気に入っただけでRustでゲームを作るのは無謀? もちろん2Dゲームエンジンはどこかから借りてくる
146 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 00:59:31.96 ID:C1GPbqLl.net] >>142 困難はあるけど それはC/C++と同じ程度で 無謀ってほどでもないんじゃないかな 設計を試行錯誤するのはRustのがC/C++より楽だと思う 自分は rustlang + OpenGL(GLES2.0/GLSL1.0) + SDL2 で3D書いた ttp://i.imgur.com/SrBiFHe.gif
147 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 01:01:57.94 ID:DAWAuc9g.net] やっぱりGCなしはいいよねということでこんなのもあるよ qiita.com/Pctg-x8/items/cbf8c8bb5e8825ba715a
148 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 02:05:19.61 ID:Pbl/pRNJ.net] Rust and the Future of Systems Programmingの動画シリーズ、初回は閲覧数2万越えてるのにしまいには1/10未満になってて笑う
149 名前:142 mailto:sage [2016/12/21(水) 12:27:04.23 ID:ej8UmSNF.net] >>143 どうもありがとう ハイカラならやめとけと言われるかと思ったけど、 頑張ればなんとかなりそうね 3Dスゲーっす(!) >>144 ありがとう やっている日本人もいるんだねぇ
150 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 12:40:43.96 ID:kCrlwcjM.net] >>143 これのどこが3Dなんでしょう
151 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 14:53:32.77 ID:C1GPbqLl.net] >>146 Rust人口が増えて欲しいので ぜひやってみて >>147 『視差遮蔽マッピング/Parallax Occlusion Mapping』をやってる 子細はググって下さい
152 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 15:09:44.32 ID:wjBBiIkf.net] 目が不自由だからかな 奥行が全く感じられない
153 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 18:13:34.95 ID:vaU6q8is.net] ゲームエンジン(ライブラリなのかな?)もあるしね
154 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 22:25:50.83 ID:ej8UmSNF.net] C#風に yield return someValue; としたいんだけど、Rustのコルーチンはどうですか?
155 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 00:30:05.93 ID:qT53/Nxx.net] >>151 Option<Item>を返すようにして while let かな Iteratorをderiveすれば for にも渡せます https://play.rust-lang.org/?gist=a34273a2dac65be75e921efd34c6401c
156 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 00:42:28.78 ID:zFwIQNSP.net] 言語組み込みでは用意されていない 試してはないけど https://github.com/rustcc/coroutine-rs みたいなライブラリはある
157 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 01:50:14.99 ID:ORYJE8lc.net] Rust触ってみた感じいいなとは思ったんだけど型理論周辺がさっぱりで って時はどの辺から始めればいいの?やっぱり型システム入門?
158 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 04:57:42.70 ID:zFwIQNSP.net] bluss.github.io/rust/fun/2015/10/11/stuff-the-identity-function-does/#rust-has-dedicated-syntax-for-this 目からウロコが落ちた 実際にこんなブレースの使い方をしているコードを見かけたら読みにくいと言ってブチギレると思うけど
159 名前:デフォルトの名無しさん [2016/12/22(木) 13:02:02.41 ID:y+mdv7YD.net] tcl/tk 知らんの
160 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 13:16:30.31 ID:vR+H7QAs.net] rust/tkでも流行ってんのかとググったけどそんなことはなかった
161 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 15:25:02.24 ID:cRDgF52C.net] Rustって、こういう構造体を返す関数作れないんだね。 struct { file_content: String, header: &str, // 同じ構造体インスタンスのfile_contentのスライス }
162 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 21:30:47.90 ID:qT53/Nxx.net] >>158 範囲情報をRangeで持っておいて、headerを関数にするのでは足りないかな? https://play.rust-lang.org/?gist=4d511d2346cd32c4ef3b0348635b8910
163 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 00:33:16.85 ID:mdacHMN9.net] Range.cloneは何とかならぬかと試行錯誤したけど 省略表記にした所でRangeを作るには変わりないから無駄な努力だった ttps://play.rust-lang.org/?gist=f24e58d9a75d263fd75b0f651203a3b1 元の方も考えたけど、>>158 は所有者が2名になるから無理だよなぁ
164 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 06:17:00.54 ID:6bIGT6Sw.net] Announcing Rust 1.14 https://blog.rust-lang.org/2016/12/22/Rust-1.14.html WebAssemblyサポートですって奥さん
165 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 07:54:39.71 ID:D+0Lwjqy.net] >>159 なるほど。 これをRustでも書けてると見るか、書けてないと見るかは微妙なところだな。
166 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 08:18:02.54 ID:mdacHMN9.net] このインターフェース設計が生理的に気分悪いならrustは使わない方が良さそう 極標準的な手法だから、これがダメなら何も出来ないよ
167 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 15:10:42.06 ID:6bIGT6Sw.net] ライブラリ設計において、何かの値を所有権付きで受け取って変換するような関数が失敗した場合にはErrで元の値の所有権を返すようにしておいた方が便利だよな ただ、std::collections::HashMapとかは値を削除するときキーの所有権を返してくれないから、ある値を取り出して変換して返すような処理で失敗した時にキーの複製を用意しないといけないのが気持ち悪い 所有権を受け取る前に借用してバリデーションを走らせるという手もあるけど、それはそれでオーバーヘッドになるし
168 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 16:07:53.79 ID:LOFIUVE3.net] 気にしすぎや
169 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 19:34:18.37 ID:efetRagZ.net] マシン語読めって話何だろうけど 所有権を手離す為のcloneって copy on write的な最適化は期待出来ないんかね?
170 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 22:45:04.10 ID:oLVQTEs3.net] LLVM IRのことをマシン語と表現しているのか、それとも本当に機械語を読むつもりなのか
171 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 02:20:23.19 ID:/RBsJIky.net] そもそも所有権を手放す為のcloneって何なんだ
172 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 12:04:03.69 ID:/RBsJIky.net] OptionにもHashMapのor_insert_with()みたいな機能があれば良いのに
173 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 12:14:13.23 ID:XL3bxxKp.net] Optionとコレクションクラスとの統一感は無いね
174 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:20:09.59 ID:dDtDlNib.net] Someだったらそのまま、Noneだったら指定のOptionを得る ってんなら単にOption.or()でいいのではないかと イマイチ何を実現したいのか分からんけど
175 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:25:11.60 ID:/RBsJIky.net] >>171 つまりこういうことがしたい https://play.rust-lang.org/?gist=2efdceaaaa385ea7ee2486342ca415e4
176 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:29:36.25 ID:/RBsJIky.net] あ、間違えた方を上げちまった where T: Copyは無視してくれ
177 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:47:44.72 ID:dDtDlNib.net] unwrapだと思ってたら実はas_refだったし immutableな取り回しじゃなくmutableな取り回しだし、、、 immutableならOptionじゃ合わないわな そこを諦めたら既存APIで十分な気がするけど、そこがこだ
178 名前:わりならStruct新設から始まりそう [] [ここ壊れてます]
179 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:56:08.78 ID:dn0dwenj.net] unwrapのランタイムコストが気になるマン
180 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:59:11.50 ID:/RBsJIky.net] >>174 self: &mut _を受け取るメソッドでself.cache的な何かを扱いたいことってない? まあ別に、その場で書こうと思えば簡単に書ける処理だから絶対に欲しいってわけではないけど…… >>175 unsafe { mem::transmute::<_, &T>(self.as_ref()) }
181 名前:デフォルトの名無しさん [2016/12/25(日) 01:33:20.36 ID:P0r3EIva.net] ぶっちゃけ今のRustってC++14の機能積極的に使うのよりメリットある?
182 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 01:47:23.23 ID:jMjv2Bym.net] borrow checkerが凶悪な所がメリット あとはcargoが標準で色々やってくれるから、全くメリットがないこともないと思う 業務ならC++11/14を使うべきなんだろうけどさ 頑張ればsmart pointerとmakeで大体のことはフォロー出来そう
183 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 04:20:17.08 ID:klev3clW.net] C++は何でもできるんだから、新興言語のおいしい機能を盗み取っちゃえばいいじゃん
184 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 07:43:09.19 ID:gfQaVVC2.net] コンセプトちゃんはどうなった?
185 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 20:33:17.39 ID:X66rp15o.net] qiitaで済まんが、↓を読むとモダンなC++を使いこなすよりもrust使う方がよっぽど楽なんじゃないか ttp://qiita.com/yumetodo/items/e49a673afd9a3ecb81a8 よく、C++の機能を全部学ぶ必要は無いよ使うとこだけ理解すればいいよ、と言う人がいるけど、 コードは書くより読む方が大変なことを失念してるんじゃないかと思う 他人のコードの読解は困難を極めますよって自白してんじゃないかと
186 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 20:35:24.70 ID:OIpmFOQN.net] あれやろ、職場のコード規約で使用する機能を制限すれば読むのにも困らんやろ(白目)
187 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 20:50:48.74 ID:OHOD3vvf.net] 理解できない人がいるのでジェネリクスとやらは使ってはいけません
188 名前:デフォルトの名無しさん [2016/12/25(日) 23:52:57.50 ID:P0r3EIva.net] >>183 ジェネリクスだめならモダン言語は殆ど、ってかjavaすらダメじゃね?
189 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 00:01:48.58 ID:mhrTCx4U.net] JavaのジェネリクスもModern Java(造語)な時期じゃないかね C++でもboostで使われてた頃な気がする >>181 をざっくり読んだけど、C++を仕事でやってたらこれくらいは別に問題ないと思うけどな rustみたいに数ヵ月単位で言語仕様に仕変入る方がコードの解読に困難を極めないか? 古いバージョンで固定すればいいじゃんってんなら何も言うことない
190 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 01:02:26.94 ID:xO25f93t.net] C++は継ぎ接ぎだらけのズタボロ言語
191 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 01:32:03.49 ID:zGEIM/Ml.net] >>183 理解できない人をチームから外せばおk
192 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 02:42:52.09 ID:kYuQe4Wz.net] C++を貶すつもりは無いけど、ジェネリクスもコンパイル時計算もtemplate任せってのが傍から見てて怖い templateの過剰使用のせいか、エラーメッセージが分かりにくい&バグを潰しにくいっていう印象がある ML系言語の発展で、型システムを柔軟にすれば大抵のことは分かりやすく実現できるよって分かって、 それをつまみ食いしたrustは実はかなり分かりやすいし、勉強の資料も実は少なくない あと、https://github.com/rust-lang/rust/blob/master/RELEASES.md で、1.0.0からLanguageの項目がどれくらい変わったか見てくと、実はほ
193 名前:とんど変わってないよ。 マクロが結構強化されたんで、マクロを定義しまくるcrateは影響があるかもしれんね。 ただ、そういうのは大抵DSLをマクロで!っていう特殊な事例が多いんで、何したって読みづらい [] [ここ壊れてます]
194 名前:デフォルトの名無しさん [2016/12/26(月) 03:53:18.15 ID:o+MLW/qO.net] >>188 コンパイル時計算はconstexprでいいだろ
195 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 07:04:10.78 ID:mhrTCx4U.net] >>188 お前がC++をよく知らないってことは分かった 使ってる言語を兎角推すのはまるでObjC信者のようだぁ 自身の言語が至上、他は総じてクソって見えるらしいな
196 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 07:45:24.49 ID:zGEIM/Ml.net] ウィ ワント パースペクティブ。
197 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 07:59:25.35 ID:lZ2XshJp.net] 自分の使っている言語を押しまくるのはObjC信者に限ったことじゃないと思うんですが
198 名前:デフォルトの名無しさん [2016/12/26(月) 10:11:15.89 ID:vXnTXx4r.net] Lispは神の言語
199 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 10:21:18.47 ID:y2AwbG3E.net] S式は神の言語
200 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 11:42:54.85 ID:HAos+tGx.net] C++は天動説 Rustは地動説
201 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 12:14:16.16 ID:kSu16y2+.net] ocamlだってシンプルだったのが拡張につぐ拡張で最近は結構汚くなってるし rustだって10年20年すれば汚くなるよ 奇麗なままでいられるのはユーザー数の少ない言語だけだ
202 名前:デフォルトの名無しさん [2016/12/26(月) 12:16:41.00 ID:HAos+tGx.net] Dはユーザー少ないけど汚い
203 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 13:57:45.03 ID:3l9yWhJs.net] 言語仕様の拡張にRFCが必要な言語だから、無秩序に拡張できた過去の言語よりは綺麗な仕様になる圧力は高いと思う
204 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 13:58:25.74 ID:gUp/CjQ/.net] Rustで多態やるのはenum, trait, Boxを使い分ければいいの?
205 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 15:39:49.33 ID:kSu16y2+.net] >>198 C++のほうを見て同じことが言えるかな?
206 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 15:59:40.77 ID:y2AwbG3E.net] Serdeがよく分からぬ
207 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 16:42:09.73 ID:stVLD6EM.net] >>199 オブジェクト指向入門でよくある、哺乳類クラスとか、円や矩形クラスの 例(クラスツリー)を、Rustでどう表現するのか見てみたいな。
208 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 17:56:53.49 ID:R/Xz4XyC.net] >>202 servoでDOM表現するためのコードでやっているけどなかなかえげつない実装らしい この前あったrustのmeetupではほかの言語のやり方をそのままrustに持ち込むべきではないと言っていた
209 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 18:06:10.80 ID:lZ2XshJp.net] そういえばクラスの継承がないのを不便に感じたことはないな
210 名前:デフォルトの名無しさん mailto:sage [2016/12/26(月) 19:41:44.19 ID:ep/odFf8.net] ていうか、Rustで nominal subtyping を再発明する理由がない 型クラスはad hoc多相を実現する仕組みだがそもそもOOのためのもんじゃない