アカウント名:
パスワード:
しかし、やはり入門者にはあまり優しくないと思う。非常に丁寧なチュートリアルがあって入門自体は容易なのだが、そこから一歩踏み出すと急に突き放された気分になる。
致命的なのがドキュメントが検索しづらく読みにくい上に情報が(まだ)あまりない。それにも関係するが、多くの言語なら(準)標準ライブラリに入っているようなものが、個別のコミュニティでメンテナンスされている。開発サイクルを考えるとそれ自体は悪いことではないのだが、情報が分断されてしまっている。
標準ライブラリが「薄い」点はC言語も似たようなものかもしれないが、C言語のライブラリは(命名規則の不統一に目を瞑れば)適当に組み合わせても何となく動かせる。(何となく動いてしまう)一方でRustはトレイトの制約を満足させる必要があるので、使うパッケージそれぞれの流儀をよく理解しないといけないが、それは入門者にとって困難。このトレイトの抽象化度合いがライブラリ毎にだいぶ異なるので、チュートリアルで感銘を受けるほど、現実では魅力的に機能していない。
でも、もうC++は愛せないな。
>致命的なのがドキュメントが検索しづらく読みにくい上に情報が(まだ)あまりない。1.0以前から使ってるけどほんと改善されない。ドキュメントの質は全体的に悪い。特にrustdocは完全にオーバーエンジニアリングでまるで利便性に貢献してないのが初学者が苦労すると思う。
良くなったと思ったら改悪したり機械翻訳に戻したりコロコロ変えるし、ドキュメントは良いとは言えないが、情報量や説明内容ともにphpなんかと比べればはるかにマシ。
最近、Software DesignやInterfaceが特集組んだり特集の中で大きく取り上げたりしてるね。> 致命的なのがドキュメントが検索しづらく読みにくい上に情報が(まだ)あまりない。こういう状況だからなんだろうか。
>これまでのC++のクラスがそのまま使えれば便利だろうけど、言語仕様的に無いだろうなぁ。rustbindgenがc++のabi対応してる。何を言っているかわからないと思うがry
そもそも、rustとパラダイムが違うのと、c++が他言語から呼び出すのに向いてない。今のrustbindgenがc++に対応したのだってmozillaが既存の資産使うから魔改造したんだよ。
あとエラーメッセージもあまり親切でないね。何が起こったかは分かるけど、何故そうなったか(何を直せばいいか)をほとんど教えてくれない。
まぁ、例えばC++のテンプレートのエラーも似たようなもんだけど、大抵は、エラーの箇所を適当にコメントアウトしたり、スタブに置き換えたりして、作業を進めながら原因究明ができる。
Rustの場合、そういった一時的な取り繕いが他のエラーにどんどん波及していくので、前から順番に問題解決していくことを暗に強いられる。安全性とのトレードオフあるいはランタイムエラーとの格闘に対する先行投資ではあるのだけれど、壁にぶち当たった時の時間の浪費感が半端ない。
>何が起こったかは分かるけど、何故そうなったか(何を直せばいいか)をほとんど教えてくれない。かなり初期の段階でエラーメッセージに答えそのものを載せるようになったし、今は該当仕様のドキュメントのリンクも載せる。逆にエラーメッセージがbloat起こして煩わしいよ。
だからまさにそれが「何が起こったかは分かるけど、何故そうなったか(何を直せばいいか)をほとんど教えてくれない」ってことでしょ。
https://doc.rust-lang.org/edition-guide/rust-2018/the-compiler/improve... [rust-lang.org]これ読んで、「そういうことじゃねーよ」って思わない?
>これ読んで、「そういうことじゃねーよ」って思わない?思うけど、今はドキュメントのリンクも載せるって言ってるじゃん。
そのドキュメントが何が起こったかを多少丁寧に説明するだけでないの?
エラーはそれ自体が原因であることも多いが、別の問題の結果であることもあり、厄介なのは後者。同じエラーでもコンテキストに応じてメッセージを変えるのが「親切」。「丁寧」とはまた違う。
勿論、他の言語でもエラーメッセージが不親切な例はいくらでもあるが、Rustのドキュメントの質と到達可能な情報量、歪な丁寧さが問題を際立たせている。
これがいわゆるデレツンというやつなのか。1週間くらいしつこいくらいに連絡を入れるけど、その後パタッと連絡がなくなるとかえって気になるというあれだろうか?そしてこの「ツン」を乗り越えたときに、強く代えがたい愛着が生まれる。高い代償を払っているのだから、そこには価値があるはずと思ってしまい、このままでは不幸になるとわかっていても別れることができなくなってしまう、そういうことなのか。
元カノの鼻から悪魔をだす癖が受け入れられなくて……。
Rust は文法がちょっと汚い(Scala あたりよりははるかにマシだけど)のと演算子のオーバーロードがあるのと暗黙の型変換(強制)に頼らないとまともにコードが書けないのがちょっと。
基本的にはいい言語だと思うんだけどね。
Rustの位置付けからして、文法の比較対象はC/C++であるべきでないの? 見た目の問題はIDEがそのうち何とかしてくれるだろう。宗教的な理由以外で、Rustの演算子オーバーロードの何が問題なのか分からない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
Rustの言語設計自体は好き (スコア:5, 興味深い)
しかし、やはり入門者にはあまり優しくないと思う。
非常に丁寧なチュートリアルがあって入門自体は容易なのだが、そこから一歩踏み出すと急に突き放された気分になる。
致命的なのがドキュメントが検索しづらく読みにくい上に情報が(まだ)あまりない。
それにも関係するが、多くの言語なら(準)標準ライブラリに入っているようなものが、個別のコミュニティでメンテナンスされている。
開発サイクルを考えるとそれ自体は悪いことではないのだが、情報が分断されてしまっている。
標準ライブラリが「薄い」点はC言語も似たようなものかもしれないが、
C言語のライブラリは(命名規則の不統一に目を瞑れば)適当に組み合わせても何となく動かせる。(何となく動いてしまう)
一方でRustはトレイトの制約を満足させる必要があるので、使うパッケージそれぞれの流儀をよく理解しないといけないが、それは入門者にとって困難。
このトレイトの抽象化度合いがライブラリ毎にだいぶ異なるので、チュートリアルで感銘を受けるほど、現実では魅力的に機能していない。
でも、もうC++は愛せないな。
Re:Rustの言語設計自体は好き (スコア:1)
>致命的なのがドキュメントが検索しづらく読みにくい上に情報が(まだ)あまりない。
1.0以前から使ってるけどほんと改善されない。ドキュメントの質は全体的に悪い。
特にrustdocは完全にオーバーエンジニアリングでまるで利便性に貢献してないのが初学者が苦労すると思う。
Re: (スコア:0)
良くなったと思ったら改悪したり機械翻訳に戻したりコロコロ変えるし、ドキュメントは良いとは言えないが、情報量や説明内容ともにphpなんかと比べればはるかにマシ。
Re: (スコア:0)
最近、Software DesignやInterfaceが特集組んだり特集の中で大きく取り上げたりしてるね。
> 致命的なのがドキュメントが検索しづらく読みにくい上に情報が(まだ)あまりない。
こういう状況だからなんだろうか。
Re: (スコア:0)
しかし、確かに情報やサンプルの少なさがちょっとがっかりでした。
あとはライブラリですかね。言語そのものは今後使ってみたいと私も思いましたが、今まで使ってきた、作ってきたライブラリが使えないのが難点だと思って、「お試し」程度しか使ってません。
これまでのC++のクラスがそのまま使えれば便利だろうけど、言語仕様的に無いだろうなぁ。
余談だけど、このストーリーでさえもRustそのものの話題は少ない事が、Rustの現状を物語っているようにさえ思いました。
Re: (スコア:0)
>これまでのC++のクラスがそのまま使えれば便利だろうけど、言語仕様的に無いだろうなぁ。
rustbindgenがc++のabi対応してる。何を言っているかわからないと思うがry
そもそも、rustとパラダイムが違うのと、c++が他言語から呼び出すのに向いてない。
今のrustbindgenがc++に対応したのだってmozillaが既存の資産使うから魔改造したんだよ。
Re: (スコア:0)
あとエラーメッセージもあまり親切でないね。
何が起こったかは分かるけど、何故そうなったか(何を直せばいいか)をほとんど教えてくれない。
まぁ、例えばC++のテンプレートのエラーも似たようなもんだけど、
大抵は、エラーの箇所を適当にコメントアウトしたり、スタブに置き換えたりして、
作業を進めながら原因究明ができる。
Rustの場合、そういった一時的な取り繕いが他のエラーにどんどん波及していくので、
前から順番に問題解決していくことを暗に強いられる。
安全性とのトレードオフあるいはランタイムエラーとの格闘に対する先行投資ではあるのだけれど、
壁にぶち当たった時の時間の浪費感が半端ない。
Re: (スコア:0)
>何が起こったかは分かるけど、何故そうなったか(何を直せばいいか)をほとんど教えてくれない。
かなり初期の段階でエラーメッセージに答えそのものを載せるようになったし、
今は該当仕様のドキュメントのリンクも載せる。
逆にエラーメッセージがbloat起こして煩わしいよ。
Re: (スコア:0)
だからまさにそれが「何が起こったかは分かるけど、何故そうなったか(何を直せばいいか)をほとんど教えてくれない」ってことでしょ。
https://doc.rust-lang.org/edition-guide/rust-2018/the-compiler/improve... [rust-lang.org]
これ読んで、「そういうことじゃねーよ」って思わない?
Re: (スコア:0)
>これ読んで、「そういうことじゃねーよ」って思わない?
思うけど、今はドキュメントのリンクも載せるって言ってるじゃん。
Re: (スコア:0)
そのドキュメントが何が起こったかを多少丁寧に説明するだけでないの?
エラーはそれ自体が原因であることも多いが、別の問題の結果であることもあり、厄介なのは後者。
同じエラーでもコンテキストに応じてメッセージを変えるのが「親切」。「丁寧」とはまた違う。
勿論、他の言語でもエラーメッセージが不親切な例はいくらでもあるが、
Rustのドキュメントの質と到達可能な情報量、歪な丁寧さが問題を際立たせている。
Re: (スコア:0)
これがいわゆるデレツンというやつなのか。1週間くらいしつこいくらいに連絡を入れるけど、その後パタッと連絡がなくなるとかえって気になるというあれだろうか?
そしてこの「ツン」を乗り越えたときに、強く代えがたい愛着が生まれる。高い代償を払っているのだから、そこには価値があるはずと思ってしまい、このままでは不幸になるとわかっていても別れることができなくなってしまう、そういうことなのか。
Re: (スコア:0)
元カノの鼻から悪魔をだす癖が受け入れられなくて……。
Re: (スコア:0)
Rust は文法がちょっと汚い(Scala あたりよりははるかにマシだけど)のと演算子のオーバーロードがあるのと暗黙の型変換(強制)に頼らないとまともにコードが書けないのがちょっと。
基本的にはいい言語だと思うんだけどね。
Re: (スコア:0)
Rustの位置付けからして、文法の比較対象はC/C++であるべきでないの? 見た目の問題はIDEがそのうち何とかしてくれるだろう。
宗教的な理由以外で、Rustの演算子オーバーロードの何が問題なのか分からない。