I also didn’t need Box, Rc, RefCell, or friends. 0641デフォルトの名無しさん2020/06/03(水) 02:34:58.13ID:TdRUmxlv>>638 (C++は、C++11から大幅に改定されたので)、海外のサイトに寄れば、 C++11より前のC++からRustを学ぼうとすると大変だが、C++11以後 からだと対応関係が分かり易くて楽なのだそうだ。 unique_ptrとBox<T>が対応しているような話か。 ただ、C++の特徴であるtemplateに相当するものがまだRustにはないことが 残念だと書かれていた。 0642デフォルトの名無しさん2020/06/03(水) 02:45:19.00ID:TdRUmxlv そのサイトに寄れば、Rustで難しいのは、借用や所有の概念ではなく、 lifetimeなのだそうだ。 個人的にも、構造体のlifetimeについて説明不足を感じた。 構造体の変数のスコープと構造体のメタ部分で記述するライフタイムの 関係性がbookなどでは書かれて無いように思えた。 分からんけど。 0643デフォルトの名無しさん2020/06/03(水) 02:59:40.24ID:TdRUmxlv 2018/04 の時点でも、まだ、lifetimeに関する資料が足りてないと感じている人がいたそうだ。 Can we maybe have a book or booklet exclusively covering lifetimes? I don’t think the first level of instruction material on lifetimes which is found in the rust book and others which talks about the syntax and the aliasing rules and elision is enough. It leads to an incomplete model which only frustrates when you discover its incompleteness. Rust nominoc does go further. For example it shows with detailed examples how lifetimes start with a let binding and how they interact with other lifetimes in the same scope. This is fundamental stuff and absolutely essential to understanding. But there are still aspects not covered there. For instance I realized that lifetimes can be shrunk as needed by the compiler only from this forum (thanks @vitalyd) which invalidated my previous model. And I’m sure there are other aspects I don’t know about. I think we just need one place where one can learn everything about lifetimes and be done with it. 0644デフォルトの名無しさん2020/06/04(木) 10:31:48.72ID:E8yK5u0i>>641 グロ 0645デフォルトの名無しさん2020/06/04(木) 12:10:41.88ID:4kMLpsX6>>636 sqlxじゃないか 0646デフォルトの名無しさん2020/06/04(木) 13:20:58.04ID:YCN7KCgu 難しいのはネストした場合のオブジェクトに対するイミュータブルかどうかとライフタイムだろう。 0647デフォルトの名無しさん2020/06/04(木) 14:06:07.27ID:hCECm/yf ライフタイムはコンパイラが親切丁寧に指摘してくれるから難しくは無いだろ 依存関係とか指摘出来ない系のエラーで詰まる事のが多い 0648デフォルトの名無しさん2020/06/04(木) 19:40:21.91ID:pT22FhoL>>647 コンパイラに指摘されれば問題ないかというと総でも無い。 プログラミングはコンパイルする前に予想可能で無いと困る。 0649デフォルトの名無しさん2020/06/04(木) 20:10:09.15ID:pX62chi4 競馬かな? 0650デフォルトの名無しさん2020/06/04(木) 20:37:04.46ID:ZbgQHKA+>>648 難しくないってのは「学習は」難しくないって話じゃね? いずれは自分でわかるようになるというのは当然の前提で、 まあわかるようになっても間違えることはあるのでそれを指摘してくれるのもありがたい。 0651デフォルトの名無しさん2020/06/04(木) 22:06:35.88ID:x+eVDE0s>>650 ところが、コンパイラを実際に動かさなくても、仕様書や例を見ただけで 理解できる言語も多いんだよ。 たとえば、CやBASIC,JS,Java,C#,Ruby,Python,Perlなどがそれに該当する。 C++は、03まではまあ分かったが、だんだん難しくなっていった。 もはやSTLのソースも仕様書ですらも理解できるのは一部の特殊な人に 限定されてきているかも知れない。STLの forward()の意味を理解したりどう実装されているかをソースを見て理解できる る人は本の一握りだろう。 move()とforward()の役割の違いも実装レベルでどれだけの人間が理解できることか。 でもRustも同じように難しくて同じようなことは起こると考えている。 0652デフォルトの名無しさん2020/06/04(木) 22:49:18.31ID:VyuaeUph そのレベルで理解できてない人がC++使うのはどういうメリットがあるのだろうか 0653デフォルトの名無しさん2020/06/04(木) 22:52:33.61ID:x+eVDE0s 実はC++は、forwardやmove, templateなどの詳細を理解できてなくても高級言語的な部分だけを使ってプログラムすることは出来る。 それはRustでも同じ。 0654デフォルトの名無しさん2020/06/04(木) 23:01:33.43ID:iTcUmNL8 C++は仕様が難しいというより 仕様ではないけど当然知ってるべきイディオムが たくさんあってきつい、という感じがするな。 0655デフォルトの名無しさん2020/06/05(金) 01:02:20.04ID:D80WdA6t 将棋しか知らない人が囲碁というゲームを見ると 何やってるかわからないしなんだかむずかしそうと言う しかし実は囲碁はルールそのものはおそろしくシンプルなのだ ところがルールだけ知っていても、囲碁は打てない (打てるけど次に何していいかわからなくなる) なぜなら囲碁はルールとは別に「こういう場面はこういう風に 打ち回す」というイデォムが大量にあってそれを知る必要があるからだ C++はそれに似ている 0656デフォルトの名無しさん2020/06/05(金) 01:41:15.67ID:27EcDywu そもそもRustの仕様って難しいか? いろんな言語から取り込んだ概念があって C一筋とかRuby一筋みたいな人には学ぶべきことが多いとは思うけど、 特に複雑な仕様って思い当たらないんだけどな。 JSの型変換の仕様とかの方がよっぽど複雑だしワケわからんと思う。 0657デフォルトの名無しさん2020/06/05(金) 09:30:38.65ID:9qGH+5zI>>651 C が仕様や例で理解できるってどんな超人だよ。 コンパイルエラーにも実行時エラーにもならない未定義だの処理系定義だのが山もりだろうが。 初心者の書くコードで完全に仕様に沿ったコードなんて見たことないぞ。 0658デフォルトの名無しさん2020/06/05(金) 09:38:30.26ID:9qGH+5zI Haskell の入門書を一通りは読んでたから Rust の型システムは似たようなものとして理解できたなぁ。 ライフタイムもプログラムの字面に書きこそしないでも C/C++ では意識せざるを得ないし、 複雑になるとわけわからんってときは C/C++ で書いてもわけわからんようになるやつ。 0659デフォルトの名無しさん2020/06/05(金) 12:01:32.43ID:lHXK6is7 きっとそういう感じでべた褒めする人が多いから、Rubyみたいに一回大人気言語になった後、急速に衰退する気がする。 Rubyも最初は良いと思われていた。 0660デフォルトの名無しさん2020/06/05(金) 12:13:12.11ID:lHXK6is7>>657 Cの仕様はシンプルで、 ポインタと明示的な型宣言と文字列比較をstrcmp()で行うという以外、 基本的な枠組みは既存の言語と変わりはなかったので理解は難しくなかった。 0661デフォルトの名無しさん2020/06/05(金) 12:14:22.73ID:9qGH+5zI Ruby は今でも十分に使われているよ。 (俺は使ってないけど。) 適切ではないところまで広がった分がそぎ落とされてちょうどいい感じに落ち着いたってだけ。 プログラミング言語の良さはスカラ値で測定できるようなものではなくて、用途による。 利用事例が減ったからといってその勢いで衰退して消えるっていうような話ではない。
Rust language is too hard to learn and use, says user survey A survey of Rust users finds difficulty and frustration with the language’s highly touted features for memory safety and correctness.