◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

プログラミング言語 Rust 3 [無断転載禁止]©2ch.net


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1495343069/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん2017/05/21(日) 14:04:29.55ID:9L9dm7b/
Mozillaがリリースした、プログラミング言語「Rust」について語るスレです。

http://www.rust-lang.org/
https://github.com/rust-lang/rust

Servo
https://servo.org/
https://github.com/servo/servo

◆前スレ
プログラミング言語 Rust 2
http://echo.2ch.net/test/read.cgi/tech/1478023960

2デフォルトの名無しさん2017/05/21(日) 14:09:00.98ID:hU2RwKDa
おつ

3デフォルトの名無しさん2017/05/21(日) 15:12:44.23ID:2E7Z41P0
s:

4デフォルトの名無しさん2017/05/21(日) 15:16:07.66ID:cLRuMlqp
self.thank(1);

5デフォルトの名無しさん2017/05/21(日) 23:18:14.90ID:rlx7fyr1
いつの間にか、公式サイトが日本語で表示されるようになっとる!

6デフォルトの名無しさん2017/05/23(火) 15:31:11.02ID:NL1m8GyN
日本語だと特に「システムプログラミング言語」って何かバズワード臭く聞こえるなあ

7デフォルトの名無しさん2017/05/23(火) 17:17:58.00ID:XcuL8oqn
そらRust自体が元々が言語としてまともに機能してない欠陥品なんだからバズワード頼りになるのは当然よ

8デフォルトの名無しさん2017/05/23(火) 18:18:14.39ID:fz0kg0Hd
>>7
プログラミング言語いくつか知ってれば他の言語なんて多少解説読むだけですぐ理解できるぜ、みたいなのをぶち壊してくる言語よね
慣れれば生産性が高いのは分かるけど、チーム開発にはとても適用できない……

9デフォルトの名無しさん2017/05/23(火) 19:11:09.91ID:1Q8iu32F
C++ std::unique_ptrを使い倒してればすぐ理解できるぜ?(白目
事細かなエコシステムや凶悪なボローチェッカは慣れたら愛すべき馬鹿として愛せるけど、他人に勧めるものじゃないよな
まぁRustじゃないといけないケースってのは少ないから、好事家の中で流行ってれば良いと思って使ってる

10デフォルトの名無しさん2017/05/23(火) 20:03:50.20ID:n1SS9OPs
俺はコーディング規約でガチガチにしないと使えないC++よりチーム開発に向いてると思うけど。

11デフォルトの名無しさん2017/05/23(火) 20:09:42.82ID:tcrYM/HP
コンパイルが通らない時に、相談できる人がチームに居ればね

12デフォルトの名無しさん2017/05/23(火) 20:44:41.89ID:XgxPLO7Q
alexcrichton、いつもissueのopen/closeの操作をミスりまくってて笑う

13デフォルトの名無しさん2017/05/23(火) 21:52:49.96ID:sJY6yDAU
Rustをある程度緩く使えるライブラリ…
Rust使う意味あるか?

14デフォルトの名無しさん2017/05/24(水) 00:09:41.07ID:8Z1z+g0P
Rustのborrow checkerに勝てるレベルのやつはそもそもRustなんて使わずにC++使ってりゃいいしな。

15デフォルトの名無しさん2017/05/24(水) 00:22:10.07ID:6yksy5B1
いや、気を使うの面倒だからborrow checkerに任せたいわw
どうせC++でもValgrindなりそれに類するツールでチェックするわけだし、言語仕様で縛ってくれるのは楽だ

16デフォルトの名無しさん2017/05/24(水) 00:37:53.57ID:D5tT9Iz6
C++でチーム開発したことないやつもいそうだしな。
C++から来たやつと、関数型とかから来たやつで感想も違うみたいだし

17デフォルトの名無しさん2017/05/24(水) 00:50:41.45ID:pRDkrxzx
If it compiles, it worksが概ね成立するのは魅力だよな

18デフォルトの名無しさん2017/05/24(水) 06:11:06.95ID:+DimD/vP
tokioが代表だけど、tokeiとかhayakuとか、謎日本語名crateが幾つか有るのは
中二病開発者が多いから?

19デフォルトの名無しさん2017/05/24(水) 09:10:30.78ID:Sn2/MSJK
外人の日本語タトゥー的な…
hayakuは「端役」にも読めるが

20デフォルトの名無しさん2017/05/24(水) 10:35:29.34ID:MMUszNj4
>>18
Rust使ってるクズなんて中二病患者とモジカス工作員だけなんだから妥当だろ。

21デフォルトの名無しさん2017/05/24(水) 13:06:58.00ID:1nGlF3E4
メンヘラは特定の言葉に執着があるからNGしやすい。

22デフォルトの名無しさん2017/05/24(水) 20:37:17.74ID:pRDkrxzx
kuchikiなんてのもあるな
あとコミッターに@BurntSushiとか@mitsuhikoみたいなのがいる
@briansmithはアイコンが「ス」だし

23デフォルトの名無しさん2017/05/24(水) 20:56:34.76ID:+DimD/vP
ところで、Boxをboxキーワードにする件はどうなったん?

24デフォルトの名無しさん2017/05/24(水) 21:30:26.80ID:FIIUGQKl
そんなどうでもいいことよりクロージャがまともに使えない問題とトレイト境界の問題(これら結構重なる部分あるけど)はいつ解決するの?

25デフォルトの名無しさん2017/05/26(金) 08:01:17.73ID:1zFjO363
昨日のRust入門者の集いは、50人ぐらい集まったのか
少し前のScalaぐらいの盛り上がりある?

26デフォルトの名無しさん2017/05/26(金) 10:35:47.30ID:f/19a4oq
やっぱ本当に入門したいやつは勝手にずかずか入ってくるよなー

27デフォルトの名無しさん2017/05/26(金) 10:36:07.10ID:f/19a4oq
わざわざ集まって入ることない

28デフォルトの名無しさん2017/05/26(金) 11:11:47.24ID:lITgTAsg
こんなにRustは欠陥品っていうのは広まってるのにまだ始めようとするかわいそうな騙された人がいるのか。
それとも流行らないことに業を煮やしたモジラさんが雇ったサクラか?

29デフォルトの名無しさん2017/05/26(金) 11:40:08.52ID:PvbJKgcc
こいつ同じことずっと言ってんな。糖質はしつこい。

30デフォルトの名無しさん2017/05/26(金) 11:41:35.93ID:lITgTAsg
>>29
Rustなんてありがたがる信者に糖質言われるならむしろ本望だな。

31デフォルトの名無しさん2017/05/26(金) 11:50:37.94ID:lITgTAsg
少なくとも俺が、Rustはまともに物がつくれないコンセプト崩壊の欠陥言語、っていってることについて、このスレの住民はなんら答を出していない。
ベンチマークの結果が良いとか悪いとか以前にまともにコードが書けない言語のどこがC++の後継言語だ?
C++で書いたバグのないコード(Valgrindチェック済み)をRustに移植してもコンパイルが通らないって時点でお察しなんだよ。

32デフォルトの名無しさん2017/05/26(金) 11:53:07.95ID:fYEpqUiH
そしてこの顔真っ赤である

33デフォルトの名無しさん2017/05/26(金) 12:02:24.21ID:xRlJL6be
だって、このスレにいる奴はRustコードが書けるから答えも何もないし・・・

なんでこんなに長いこと必死にRust否定を続けてるのか分からんかったけど
自分がRustコードが書けなくて、第二のコードが書けなくて傷つく奴が出ないように、という正義感からだったのか

プログラミング言語の学習コストなんてあってないようなものだ、みたいなプライドを打ち砕かれた可哀想な子なんだな

342017/05/26(金) 12:08:45.87ID:uOeVRBLK
>>31
cppで書いたコードはcppで使えばいいのでは?
俺が書いたcのコードは、'a'bつけたのと、ポインタインクリメントやめたくらいで割と素直に移植できたけど。
バグが無いってのは、今まで俺事故ったことねえって言う奴くらい、どう正しいか証明するの大変な事だよ。
そういえば、valgrind、スタック変数の境界チェックできるようになったの?

35デフォルトの名無しさん2017/05/26(金) 12:30:25.06ID:8eg+gckK
>>34
experimentalだがSGCheckが使えるな。

362017/05/26(金) 13:22:40.22ID:uOeVRBLK
>>35
おお、そうなのか。
ちゃんと動けばそこそこ良さそうと思ってたし、見てみようかな。
クソ遅いのももう少しマシになってくれてれば良いんだが…。あれも知らんだけなのかな。

37デフォルトの名無しさん2017/05/26(金) 19:23:44.69ID:JcK0B0rB
キチガイにもやさしいここの住民好き

38デフォルトの名無しさん2017/05/27(土) 02:31:59.03ID:SSsXXMTN
公式HPでシステムプログラミング言語、って書いてあるのが読めないで、なんちゃってアプリ作ろうとしたんじゃないかな?

39デフォルトの名無しさん2017/05/27(土) 02:59:10.15ID:CDShuPAP
結構、Webアプリを作ろうとしてる人が多い感

40デフォルトの名無しさん2017/05/27(土) 03:03:11.16ID:lxNSMSh+
サーバーサイドRustとか素敵やん

41デフォルトの名無しさん2017/05/27(土) 06:03:06.96ID:2NZ16S+U
web系だとライブラリのマッシュアップって感じが普通だからライブラリ不足が不満になるのかな。

42デフォルトの名無しさん2017/05/27(土) 06:48:55.16ID:3w92Yrys
それ以前に、コンパイルの通るコードが書けなくて挫折してるんでしょ
サーバフロントエンドのマッシュアップだとHTTP I/Fで特に支障は出ないと思うぞ
バックエンドだとライブラリ側がC I/Fが提供してるならさほど面倒はなかった

43デフォルトの名無しさん2017/05/27(土) 06:55:11.90ID:41DJlv/7
Rustって最近知ったんだけどどういう目的で使うのがよろしいの?

44デフォルトの名無しさん2017/05/27(土) 09:42:53.30ID:CDShuPAP
JavaScriptしか知りませんって人が入門してるらしいけど、全員投げ出すと思うわ。
C/C++経験者しか残らんだろう。

45デフォルトの名無しさん2017/05/27(土) 10:07:55.57ID:2NZ16S+U
第二言語がRustだったら絶望するよな
第5言語くらいじゃないと

46デフォルトの名無しさん2017/05/27(土) 10:09:10.22ID:2NZ16S+U
>>43
C++に不満なときこれで置き換える。
ネットワーク系だったらGoのがいいかも。

47デフォルトの名無しさん2017/05/27(土) 10:11:29.38ID:mjlYjLQ6
guiアプリ作る時はrust的にはやっぱxul使うの?

48デフォルトの名無しさん2017/05/27(土) 10:15:34.31ID:CDShuPAP
PHPerをScalaに大ジャンプさせようとして大やけどしたチャットワークの悲劇に学ぶべき。

49デフォルトの名無しさん2017/05/27(土) 10:45:11.15ID:41DJlv/7
>>46
なるほどー
RubyとかPythonのC拡張の部分をRustで置き換えたりあるいは機械学習や分散処理らへんでRustが有用にはならないだろうか

50デフォルトの名無しさん2017/05/27(土) 11:04:04.64ID:1jZ1Mh3o
GUIと言えば、GTKの中の人がRustに乗り気で、既に一部置換が始まってるというのが面白い

51デフォルトの名無しさん2017/05/27(土) 12:44:23.89ID:SP+5JLSB
Valgrindといっても、あれが扱えるのはメモリ関連だけで一般のuse-after-freeは対処できるわけではないよなあ
例えば`hyper::server::response::Response`のようないわゆるsession type(https://deterministic.space/elegant-apis-in-rust.html#session-types)も、
ownershipのおかげで安全性を静的に保証できている

52デフォルトの名無しさん2017/05/27(土) 13:58:45.99ID:V3R8pPgP
お前らってRust以外に何の言語を使ってるの?

53デフォルトの名無しさん2017/05/27(土) 14:32:09.69ID:Nnf9Y/EU
>>52
C++, python
むかしLisp
かじったのはruby, java , javascript, objective-c

54デフォルトの名無しさん2017/05/27(土) 15:51:40.38ID:gV6nh4ij
>>43
OSとかミドルウェアとかそういうの向け。あと組み込み。
ネイティブの速度が必要だけど、CとかC++やって苦労した人向け。

55デフォルトの名無しさん2017/05/27(土) 17:16:38.79ID:3w92Yrys
C/C++で苦労した人は更に苦労すると思う(名推理

前スレで上がってたベンチマーク、C/C++勢がキレて追い抜いてるかと思ったけど更新されずなのな
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=knucleotide

流行ってるベンチマークでもないから別にそれ自体はおかしくないんだけど
他のRustで最適化されてないヤツはどうなのよと実装し直してみたら普通にトップスコアが出るな
この程度の簡易な処理だと性能良い言語だなぁと見直した、実用時に活かせるかは別問題だけど

56デフォルトの名無しさん2017/05/27(土) 17:37:25.20ID:2NZ16S+U
>>55
同程度のエキスパートのチームだとして、やっぱC++より苦労するかなぁ?

57デフォルトの名無しさん2017/05/27(土) 21:36:50.13ID:0kaExwmN
ベンチマークの順位はそこまで気にならないが、そこのコードでrayonとfutures使っているのを見て触らないとと思った

58デフォルトの名無しさん2017/05/28(日) 01:37:36.40ID:CAN6hjyr
>>52
Java,C/C++,C#
政治的、宗教的な意味合いはなく只で使えるものを探していた結果

59デフォルトの名無しさん2017/05/28(日) 02:34:25.88ID:/SKdZHom
>>52
C、Ruby
それと使い込んではいないけどJava、JavaScript、Common Lisp

60デフォルトの名無しさん2017/05/28(日) 19:51:05.68ID:vySQPNuk
焼寿司さんが日本語ツイートにリプ付けてるの見かけたけど、日本語分かるんかな?
Google翻訳かな

61デフォルトの名無しさん2017/05/28(日) 22:41:06.63ID:9sPyoVkk
>>55
一番上のjavaがまだ最適化の余地があるのが気になる
けどガシガシ書きたくないからあんなもんだろうな。

62デフォルトの名無しさん2017/05/29(月) 08:05:31.35ID:aIZDJONO
スカイプはどんな言語で作られてるの?

63デフォルトの名無しさん2017/05/29(月) 13:10:22.27ID:yBvsn9Ro
>>53>>58>>59
やっぱりみんな何かしらC系言語の素養はあるのか

64デフォルトの名無しさん2017/05/29(月) 13:24:18.34ID:R8bGfh1Z
LSI C試食版には足を向けて寝れないね

65デフォルトの名無しさん2017/05/29(月) 17:17:49.50ID:XCGSI9yY
うお懐かしいなw

66デフォルトの名無しさん2017/05/29(月) 22:06:22.42ID:kppw5p5H
やはり、better Cなのか

67デフォルトの名無しさん2017/05/29(月) 22:27:54.48ID:hRcE5cRH
better cはgoでしょ
cは関係ない

68デフォルトの名無しさん2017/05/29(月) 23:46:05.71ID:2+2L65e+
ほんとぉ?

69デフォルトの名無しさん2017/05/29(月) 23:49:43.56ID:4qLs+IkO
Goがbetter C……?

70デフォルトの名無しさん2017/05/29(月) 23:59:14.77ID:L9ed4gjc
obj-cやc++の立場は、、、

goがbetter cってのは、rustがbetter cってのと同じくらい不可思議だなw

71デフォルトの名無しさん2017/05/30(火) 03:08:14.82ID:IqZ8KgLG
やはり、better Cなのか

72デフォルトの名無しさん2017/05/30(火) 07:29:11.22ID:f0HoldrK
ごめんGo知らずに適当に言ったわ。
Goはなんなの

73デフォルトの名無しさん2017/05/30(火) 07:58:02.99ID:hxsHc/tN
いやGoスレいけよ

74デフォルトの名無しさん2017/05/30(火) 10:45:37.44ID:gxWnkgCC
god bless c

75デフォルトの名無しさん2017/05/30(火) 12:54:00.95ID:IWC/1tpu
もうcでいいじゃん
メモリーリークさせる馬鹿に合わせる必要なんかなかったんだよ

76デフォルトの名無しさん2017/05/30(火) 13:03:48.77ID:cUShYlMs
>>75
Rustはバカには使えない
バカはCを使わせてもまともには書けない
Cをまともに書けるならRustなんて不自由な言語はなくても問題ない

よってRustは不要

77デフォルトの名無しさん2017/05/30(火) 14:53:42.47ID:jV/RuSAE
長年C/C++やってた連中は始めから眼中になかっただろ。
Swiftしかり、新しいものに飛びつくのはいつも歴史を学ばない若い連中。

78デフォルトの名無しさん2017/05/30(火) 15:46:56.49ID:zOXcPiC1
C/C++より(なぜか)性能良いから、borrow checkerに勝てるなら良い言語だがなぁ
問題は、若者も老害もborrow checkerに勝てないから使えない
学習曲線の改善を今年の目標に掲げてたはずだけど、どうにもなる気がしねぇwww

79デフォルトの名無しさん2017/05/30(火) 16:21:27.71ID:3rG32g2E
2chなんて年寄りしか見てないからここの意見なんて全くあてにならんよなー
ここ見てない若い人のほうがメインなユーザーだろうし

80デフォルトの名無しさん2017/05/30(火) 16:41:31.26ID:xHXzQ5Z2
>>79
ワイ16歳

81デフォルトの名無しさん2017/05/30(火) 17:25:14.81ID:KVzaPBtZ
俺15だし

82デフォルトの名無しさん2017/05/30(火) 17:52:40.62ID:cUShYlMs
>>78
C++はどっこい、Cにはまだ及ばない。

83デフォルトの名無しさん2017/05/30(火) 18:35:38.41ID:PZbBKLpD
ちゆ 12歳(おっさん感

Cに比べりゃC++, Rustはランタイムの分のオーバーヘッドが絶対的に存在するから
そこを引き合いに出すならどうやっても勝てんしな
実用性のあるコードを書いた時の性能はどうだかねぇ

84デフォルトの名無しさん2017/05/30(火) 18:40:13.37ID:xHXzQ5Z2
>>83
性能はそこまで気にしなくても良い気もする
最近のPC高性能だし
ネイティブでメモリ管理出来るってだけでそこらへんの言語よりは速いし

85デフォルトの名無しさん2017/05/30(火) 19:06:48.72ID:2KYBWSXG
学習曲線の改善って何をするんだ?

86デフォルトの名無しさん2017/05/30(火) 19:07:46.03ID:reqRzc0L
まあプロダクションでのパフォーマンスはServoとQuantumが示してくれるでしょ

>>85
Non-lexical lifetime以外よく分からない

87デフォルトの名無しさん2017/05/30(火) 20:40:00.58ID:XaqH7Fx5
Cで書くには煩雑なものを相手にしたときに、
実際Rustがどんだけの結果を出せるか、
というのがみんなの興味だろう。

ちっさいサンプルプログラムみたいなんをコンパイルして、
それでベンチマークテストして結果比較したって、
そんなもんは誰も嬉しくはないし驚きも無い。

オーバーヘッドの一点のみで語りつくせるんなら、
バイナリエディタと機械語でOSだって作れる。
それはオーバーヘッドの無い、最速最軽量だろうね。

88デフォルトの名無しさん2017/05/30(火) 21:45:35.31ID:NwY5b/Ke
librsvgの移植が、中規模コードの実践例として参考になりそう
https://people.gnome.org/~federico/news-2016-10.html#25

89デフォルトの名無しさん2017/05/30(火) 21:54:14.25ID:re3tYRpg
free挿入するよりcopying gcの方が速いし
無駄なオーバーヘッドなくそうとしたらlibstdの実装みたいに
raw pointerだらけになるからそんなこと気にしなくていいよ。

jitのおかげでロジックそのまま書いても速いなんてことが
起こらないから将来、最適化は必要になるだろうけど過剰な最適化は必要ない。

抽象度の高いまま低レベルな領域でも書けるからいいんだよ。
javaだと整数型の型を揃えようとするからバイト列の操作とか苦手だけどrustはそういうのないのよ。

90デフォルトの名無しさん2017/05/30(火) 23:04:32.49ID:xHXzQ5Z2
>>87
ベンチマークって基本そういう系多いからね
ファイルアクセスとか考えたら速度ほとんど変わらないのに

91デフォルトの名無しさん2017/05/31(水) 01:36:02.83ID:/NtvNHJE
ベンチマークはオーバーヘッドが無視できるよう(特定)処理を大量回数ループさせてる
という意味が分かってないから、そういうこと言っちゃうんだろうねぇ

もっと勉強しろ、若造どもが

92デフォルトの名無しさん2017/05/31(水) 01:44:33.93ID:8BExUPKw
オーダが同じでもオブジェクト生成や関数呼び出し等々のオーバーヘッドは係数部分に効いてるんやで

93デフォルトの名無しさん2017/05/31(水) 02:15:05.25ID:/NtvNHJE
Rustはzero-cost abstractionだのコンパイラによる関数最適化でC言語とさして変わりないんやで^^
VMだと係数にもろに影響するやがな

94デフォルトの名無しさん2017/05/31(水) 09:42:28.64ID:OQ401SVi
>>91
だから若造はいないんだって。
Cとか言い出す老人しかいないの。

95デフォルトの名無しさん2017/05/31(水) 09:46:53.00ID:Kcuasmjx
>>94
>>78

若者も老人もいるんだよなぁ

96デフォルトの名無しさん2017/05/31(水) 12:19:43.42ID:WjnJkecI
本当のおっさんや老害はRustスレなんてこないだろ。
ワイは偉そうに古参風を吹かせてた>>77だがまだビンビンの学生やで。

97デフォルトの名無しさん2017/05/31(水) 12:22:43.65ID:FbhpYS54
ワイ周辺だと学生はそれなりに見る
よくはてなブログに書いてる人も学生でしょ

98デフォルトの名無しさん2017/05/31(水) 12:27:53.72ID:xgELgHJk
そりゃ、おっさんの大多数は新しい言語が嫌いだからね

99デフォルトの名無しさん2017/05/31(水) 12:38:49.91ID:WjnJkecI
それな

100デフォルトの名無しさん2017/05/31(水) 12:55:16.23ID:IqYufuRr
年取ると守りに入ってしまっていかんな

101デフォルトの名無しさん2017/05/31(水) 18:15:57.61ID:xNKvRsij
まだ2chは若者に人気だったのか
slackとかじゃないの

102デフォルトの名無しさん2017/05/31(水) 23:54:17.31ID:H5pMSxMU
>>83
ランタイムなんてリンクしなけりゃ済む話

103デフォルトの名無しさん2017/05/31(水) 23:59:15.13ID:8BExUPKw
no_stdか……

104デフォルトの名無しさん2017/06/01(木) 10:52:08.55ID:AXJF1Amn
それランタイムじゃなくライブラリ
no_mangleでマングル名消してもランタイムはリンク解消できないだろうねぇ

105デフォルトの名無しさん2017/06/01(木) 12:56:34.33ID:5JdW7IAM
#![no_std]すればliballocとlibpanic_unwindはlibstdは勝手に外れなかったっけ?
libcoreはliballocにリンクしていないし#![needs_panic_runtime]もしてない

106デフォルトの名無しさん2017/06/01(木) 13:33:54.90ID:TwQiYK+8
Rustランタイムって具体的には何してくれるの?
ファイナライザ呼び出しとパニック時のスタックダンプ表示?

107デフォルトの名無しさん2017/06/01(木) 13:39:40.72ID:AXJF1Amn
https://doc.rust-lang.org/book/no-stdlib.html
最小限のmain関数だけにしても、C言語+clangでビルドするバイナリ相当までは削れんなぁ

Rustマングル名の解読とか、C言語へのブリッジなんかも入ってるんでない
str型はno_stdでも使えるようだから、この辺の一部プリミティブ型のラッピングもしてるかな

108デフォルトの名無しさん2017/06/01(木) 14:25:43.96ID:y1VaJ38E
ランタイム気になるのはOS書く時くらいでしょ

109デフォルトの名無しさん2017/06/01(木) 14:27:32.75ID:y1VaJ38E
あとOS無しの環境でプログラム動かす時とかもそうだけど
要するにそういうときだけ

110デフォルトの名無しさん2017/06/01(木) 15:23:27.31ID:TxD0ndLo
その辺の整備は優先度低いだろうからな。
トレイト境界の特殊化とか知恵の輪みたいな型システムのサポートとかもっとやることがある

111デフォルトの名無しさん2017/06/01(木) 15:36:56.97ID:SoMrAbTt
IoTブームを考えると、組み込み系が一番Rustを活かせる場だと思う
パフォーマンスが良いし、アップデート出来ない環境で脆弱性の心配が減るのも良い
メモリフットポイントも、先行事例を見るにまあぼちぼちなんとかなってるようだ

112デフォルトの名無しさん2017/06/01(木) 16:49:21.04ID:84f6kPv5
新興言語が使い物にならないのはSwiftが証明しちゃってるしな。
学習コストが高いし、仕様変更も多すぎて管理コストがかさむ。
仕事では使い物にならない。

IoTはなんだかんだいってバックエンドCフロントエンドECMAScriptが主流になるんじゃないかな。

113デフォルトの名無しさん2017/06/01(木) 16:57:13.59ID:Ic6OT1NI
IoTもう終息してきてない?

114デフォルトの名無しさん2017/06/01(木) 18:07:25.12ID:b0AgrCqp
マングリングなんかはコンパイル時に解決してるのでは
strはただのデータと長さのペアの構造体
ランタイムとはなんなのか

115デフォルトの名無しさん2017/06/01(木) 18:32:06.24ID:AXJF1Amn
解決してないから、場合によってはno_mangleが必要なわけでな
プログラムロード時に展開して処理中はオーバーヘッドないだろうけども

IoTブームを考えるとRustの選択肢はありだろうけど
流行りを無視したら性能良く容量少ないバイナリ吐くCかギリギリC++かなぁ
ガチな組み込みは老人ばかりでC/C++で難なく安全なコード書くし
組み込み系の仕事やってると業務での採用提案は現実的には思えんわ

116デフォルトの名無しさん2017/06/01(木) 19:44:54.46ID:KprYmBPJ
>>115
ガチ組み込みでもC++使うんだ。
自動車とかだとCのみだよね。
家電とか?

117デフォルトの名無しさん2017/06/01(木) 23:17:34.13ID:Co5NqntP
>>116
自動車は普通にc++使ってる部分もあるよ。

118デフォルトの名無しさん2017/06/01(木) 23:38:13.83ID:0ZYBTIzB
ハードウェアは未だにZ80が現役のパチンコでもZ80要らないところなら色々使うで。
ソフト部分がjavaかC#か、最近はunityだから格差が大きい。
こういうニッチなところならrustのno_coreも入り込めるかも

119デフォルトの名無しさん2017/06/01(木) 23:39:53.34ID:0ZYBTIzB
ごめん言い忘れた。
いまだにC++使わないのなんか軍事兵器くらいやで戦闘機のOSとか

120デフォルトの名無しさん2017/06/01(木) 23:46:55.28ID:GrGj5OGG
そんなの持ち出す前にlinuxでしょ

121デフォルトの名無しさん2017/06/02(金) 00:20:19.49ID:u7OL4GIc
F-35はC++が使われてるんじゃなかったか

122デフォルトの名無しさん2017/06/02(金) 00:22:55.55ID:1X/05mt0
お前らやたら詳しいな……

123デフォルトの名無しさん2017/06/02(金) 00:25:26.45ID:/gLRnObz
その辺はAdaが使われてる印象だったんだがCも使われてんのか。

124デフォルトの名無しさん2017/06/02(金) 00:54:37.65ID:UJQ0OGfD
今、MISRA Cを使ってるようなところが、Rust向きだと思う

125デフォルトの名無しさん2017/06/02(金) 01:43:12.50ID:USk3zPix
飛行機なんかはメモリ確保命令は使わずに上書きでやりくりするんでしょ?
リアルタイム性が要求されるから決定的瞬間にアロケーションや解放なんて処理始まったら死ゾ

126デフォルトの名無しさん2017/06/02(金) 02:00:16.87ID:/gLRnObz
>>125
そうならばメモリアクセス安全に寄ったRustは不向きの用途だな。
専用ランタイム作らん限り。

127デフォルトの名無しさん2017/06/02(金) 06:39:31.02ID:eD3LHIkq
>>123
組み込み業界、Ada使うくらいなら素直にアセンブラ使うわw

>>119
他言語へのAPI公開のため最近はまたC言語が流行ってるやぞ
RustもGoもSwiftもC言語とのI/FはあるけどC++とのI/Fはないから、流行りに合わせてCにしとこってのはままある
まぁRustはbindgenとかいう変態ツールでC++マングル名を回避する荒業に出てるからなくても困らんのだけども

128デフォルトの名無しさん2017/06/02(金) 07:33:26.58ID:3O32wZtM
>>125
ATS2 みたいな機能を Rust も組み込めば良いのに。

129デフォルトの名無しさん2017/06/02(金) 09:15:56.51ID:PNLF+z5i
C++でextern Cじゃいかんのけ?

130デフォルトの名無しさん2017/06/02(金) 10:26:55.70ID:f93mDoXl
cとのI/Fではc++が最強か

131デフォルトの名無しさん2017/06/02(金) 16:42:33.09ID:IZaDrWj5
>>117
そーなんだ。俺がやってたのはもう10年くらい前だからさすがにかわったのか

132デフォルトの名無しさん2017/06/02(金) 17:04:48.35ID:Lx2HMXf/
impl Into<[u8]> for Hoge {
これがエラーになってしまうのですが、どうやればInto<[u8]>を実装できるのでしょうか?
impl<T: [u8]> Into<T> for Hoge {
これも試してみたのですがシンタックスエラーになってしまいました。

133デフォルトの名無しさん2017/06/02(金) 18:53:59.81ID:ymoR0uYq
>>132
https://play.rust-lang.org/?gist=33ccca08ebe70d32141ce8cdaeddd76e&version=stable&backtrace=0
配列の長さが固定なら参照にしなくてもいいけど、多分可変長なんだろうからlifetime使わざるを得ない気がする

このスレでtokio, tokio言うからどんなものよと使ってみてるけどムツカシイ・・・
クライアントのサンプルコード少なすぎる、futuresの在り様が掴めなくて苦しいぜよ

134デフォルトの名無しさん2017/06/02(金) 20:26:56.32ID:ymoR0uYq
tokio好きのエロい人、ボスケテ
https://play.rust-lang.org/?gist=1efad716955551cd68c21b0183b9f942&version=stable&backtrace=0

これで実行すると、リクエスト送信 => レスポンス受信 => リクエスト送信、みたいな動きになる
sendとsend_allで二回送信してるんだろうから分からいでもないんだけど
リクエスト送信 => レスポンス受信、の動きにするにはどうすりゃいいの

135デフォルトの名無しさん2017/06/03(土) 19:09:45.21ID:MHNPbMg7
logとかrandとか、標準ライブラリではないけと、ほぼ公式ライブラリ化してるcrateのリストって、どこかにある?

136デフォルトの名無しさん2017/06/03(土) 20:41:56.30ID:x4F2VVph
brson / stdx

137デフォルトの名無しさん2017/06/03(土) 22:00:53.66ID:MHNPbMg7
>>136
いい感じだね
Authors欄がThe Rust Project Developersになってるcrateのリストが
公式サイトのどこかにあるかなと思ったけど無いなあ

138デフォルトの名無しさん2017/06/03(土) 22:03:30.78ID:LvdfU0KG

139デフォルトの名無しさん2017/06/03(土) 22:21:40.86ID:MHNPbMg7
>>138
これや!

140デフォルトの名無しさん2017/06/04(日) 03:40:08.07ID:fD7zpG1M
そういうのがstdに無いのが不便で仕方ないんだがどうしてそうなったの

141デフォルトの名無しさん2017/06/04(日) 03:45:59.28ID:79UOiFpQ

142デフォルトの名無しさん2017/06/04(日) 03:50:33.29ID:fD7zpG1M
>>141
FAQにも無いように見えたしググり方も分からなかったんや
ありがとナス

1431322017/06/04(日) 10:44:11.97ID:rLXx1OCs
>>133
そこにもlifetime指定できたのですね。ありがとうございます!

144デフォルトの名無しさん2017/06/04(日) 14:04:24.56ID:W9jPbq7z
C++のとき=で右辺の状態が変わるのが人間の直観によろしくないと
非常に明白な結論が出てるのに
なんで変えなかったんですかね

思考が著しく阻害される

145デフォルトの名無しさん2017/06/04(日) 16:24:39.76ID:8nnj2TqC
記号が <- だったらよかったのにって?

まあ慣れだと思うけど。

146デフォルトの名無しさん2017/06/04(日) 16:28:32.85ID:Ukp5iwZo
それを言い出したら左辺の状態が変わるのも"直感によろしくない"しなあ

147デフォルトの名無しさん2017/06/04(日) 16:42:30.55ID:qUWZGkRh
>>145
代入ってよく使うのに2文字はだるすぎ
慣れれば=でも問題ない

148デフォルトの名無しさん2017/06/04(日) 16:58:15.24ID:2L30Nwvk
お前ら非常に明白な結論になんてことを・・・

149デフォルトの名無しさん2017/06/04(日) 17:07:01.45ID:zptvcWS6
>>51
valgrindの扱えない 一般のuse-after-free って何だ?

150デフォルトの名無しさん2017/06/04(日) 19:25:09.29ID:rwHtuE7A
>>149
メモリ以外も含めたリソースの解放後の使用って意味じゃね?ファイルとか

151デフォルトの名無しさん2017/06/04(日) 21:24:44.90ID:Ukp5iwZo
>>150
ファイルに関してはValgrindには--track-fds=yesがあるから例として微妙では
もうちょっとドメイン固有なもの、例えばSerdeでDeserializerを2回使うのを防ぐとかの方がありがたみが強そう

152デフォルトの名無しさん2017/06/04(日) 21:40:25.92ID:qOHu1i3Q
valgrindみたいな実行時チェックとコンパイル時の静的チェック比較してどうするの

153デフォルトの名無しさん2017/06/06(火) 00:41:45.73ID:eZ7grxii
https://docs.rs/try/1.0.0/try/

>Since the introduction of the ? operator, its supporters have preffered its use, ignoring the valid criticism of the ? operator almost hiding the error propagation operation.

彼は一体誰と戦っているのだろう……

154デフォルトの名無しさん2017/06/06(火) 02:28:52.15ID:LS7abRGk
というか、try!をdeprecateする話なんてあったか?
Rust 1.13以前をサポートするcrate(特にnursery系)ではバリバリ現役じゃん

155デフォルトの名無しさん2017/06/06(火) 13:02:17.27ID:29cDHiwu
そういや、crates.ioに公開されてるものって
対応してるrustcのバージョンが不明確だな

156デフォルトの名無しさん2017/06/06(火) 21:24:51.99ID:LrtFpx4M
案の定、誰もtokioを使ったことない感じでスルーされつつ自己解決した
https://play.rust-lang.org/?gist=42a8464afde50942d9a162f3d1cfe9c0&version=stable&backtrace=0

futuresのAPI分かりづらいよ
zero-costとかそう言う所じゃないレイヤーのI/F設計が頭おかしい気がする
いや、気がするだけでzero-costに注視した場合にそうならざるを得なかったのかもしれんが

とりあえず、奥深いと言うかなんと言うか、tokio及びfuturesの闇の深さが分かったのでちょっと遊ぼう
tokioはstd:netのラッパーで本当に早いの?な感じだったけど、futuresの方は中々に面白い

157デフォルトの名無しさん2017/06/06(火) 21:31:18.02ID:eZ7grxii
mioは本質的にstd::netを使ってなくねなどと重箱の隅を突いてみる

158デフォルトの名無しさん2017/06/06(火) 21:39:21.98ID:LrtFpx4M
tokioもサーバサイドで使うぶんには効率的よ?と直前のレスをちゃぶ台返し

エアプログラミングで卓上で論じる分には楽しいけど、実際使ってみようとしたらドキュメント少なすぎるだろ
futuresのtutorialみたらtokio.ioに飛ばされてスッゲーあっさりとしか書かれてないでやんの

159デフォルトの名無しさん2017/06/07(水) 10:48:52.84ID:oMhdv7bq
な?Rustってまともに使える言語じゃないだろ?
だからもう騙されるのは終わりにしようぜ。

160デフォルトの名無しさん2017/06/07(水) 13:01:49.86ID:AvS1SMln
ソース読めばいいよ

161デフォルトの名無しさん2017/06/07(水) 19:59:59.87ID:CD/BPHg5
言語じゃなくライブラリの問題なんだよなぁ、言語仕様で躓いたPG(笑)はスクリプト言語にでもおかえり

ソース追い回しても分かんなかったよ, crate futuresのソースがC++のマクロ地獄みたいなの
解決したらそりゃそうだと納得なんだが、sink.and_thenのErrとstream.into_future().and_thenのErrが一致しないのは罠だと思った
お前ら両方ともtrait Futureのand_thenなのに違う型をツラっと返すなよな・・・
sinkから作ったFutureとstream(のinto_future)から作ったFutureがand_thenで連結できないのかと悩んだよ

162デフォルトの名無しさん2017/06/07(水) 20:19:54.47ID:xcCDpPBC
むしろ同じエラー型しか返せないとしたら面倒臭いわな
例えばfutures_cpupoolで常にio::Errorしか返せないとかだったら扱いにくいのなんのって

163デフォルトの名無しさん2017/06/07(水) 20:43:02.03ID:CD/BPHg5
Futureの操作元(今回はStream)をエラー時にも返したい時がある的な振る舞いは未だに理解できんぞ
sinkはErrでstreamは(Err, Stream)とかイミフ、どうせなら両方ともタプルにしてくれよ

164デフォルトの名無しさん2017/06/07(水) 20:44:49.12ID:aNYsG6oK
それはそうだが、StreamFuture::Errorの型はあれはちょっとなあ……
所有権を返したいってのはなんとなく分かるが

165デフォルトの名無しさん2017/06/07(水) 20:46:10.36ID:aNYsG6oK
>>164>>162宛てな

166デフォルトの名無しさん2017/06/08(木) 02:32:18.91ID:+DWZ9aoq
reqwest、HTTPヘッダやMIMEタイプまでそれぞれ別個にタイプセーフとかクレイジーだな、いい意味で
いや、hyperのせいか

167デフォルトの名無しさん2017/06/09(金) 01:32:14.88ID:eJzwOC8V
Announcing Rust 1.18 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/06/08/Rust-1.18.html

pub(restricted)と構造体フィールドの自動並び替えがstabilized

168デフォルトの名無しさん2017/06/09(金) 07:32:46.19ID:2Ut1GWuy
時報が少し賢くなってるwww

169デフォルトの名無しさん2017/06/09(金) 12:48:15.05ID:BBPKL/bd
>>167
ありがとう。
これからも頑張って。

170デフォルトの名無しさん2017/06/09(金) 13:10:04.93ID:+ro9fQGu
pijulってなんだよgitだけでいいだろ

171デフォルトの名無しさん2017/06/09(金) 14:25:21.34ID:2Ut1GWuy
gitよりmercurialが好きです(半ギレ

pijul(とdarcs)は初めて存在を知ったけどほーって感じ
Pull Requestはサービスプロバイダに依存するから、VCS自体にPR管理機能を持つのは良いのかもねぇ

172デフォルトの名無しさん2017/06/09(金) 14:42:06.85ID:8C3OvAmi
pgr

173デフォルトの名無しさん2017/06/09(金) 15:36:57.58ID:CZ4YsNdD
Rustはgithubに依存しすぎだろ
GoogleやMicrosoftも似たようなサービス始めるみたいだし、もっと中立的になった方がいい

174デフォルトの名無しさん2017/06/09(金) 15:39:14.20ID:F1/ud66B
goもかなり依存してないか?

175デフォルトの名無しさん2017/06/09(金) 15:44:08.83ID:+ro9fQGu
github依存度で言ったらGoよりましじゃないかな?自前でcrates.io持ってるし。
まあgithubに依存してなくてもやらかしたnpm見てるとgithub依存も最悪ではないみたいに思ってしまうがな。

というかgithub以外のまともなホスティングサービスがないのが悪い

176デフォルトの名無しさん2017/06/09(金) 15:49:49.79ID:CZ4YsNdD
Scala/JavaのIvyみたいに、crates.io互換鯖を自由に立てられるようにしようとか
crates.ioのログインにgithubアカウント以外も使えるようにしようとかの動きは無いのかな?

177デフォルトの名無しさん2017/06/09(金) 15:51:15.80ID:+ro9fQGu
まあそれはともかく、gitとhgのサポートが既にあるのに
pijulとかいうまだまともに使えないVCSをwritten in Rustってだけで突っ込むのは
内輪のノリがきつすぎてイタい子なんだなあって感想

178デフォルトの名無しさん2017/06/09(金) 15:52:47.94ID:CZ4YsNdD
>>177
Haskellのdarcs優遇と同じ現象だな

179デフォルトの名無しさん2017/06/09(金) 16:00:58.60ID:+ro9fQGu
>>178
ghcすらdarcsを捨てたと言うのにな。

というか今気づいたけどcargoってSubversion対応してねえのか。pijulとやらより
そっち先じゃねえの?

180デフォルトの名無しさん2017/06/09(金) 16:13:07.06ID:2Ut1GWuy
>>175
bitbucketがあるだろ!!(今度こそマジギレ

sourceforgeのgitサポートがもう少し早ければ幾つかの連立もあったろうけど
sourceforgeは遅れるわGoogle Codeはへっぽこだわでgithub+git一強になったこのご時世は嫌だねぇ

pijulが強制されるわけでもなく、今まで通りcrates.ioホスティングがデフォルトだからgithub(git)に依存してないでしょ
個人的には面白いVCSだとは思うけど、率先して採用するプロジェクトはなさそう

181デフォルトの名無しさん2017/06/09(金) 16:17:48.77ID:CZ4YsNdD
cargoのdependenciesにbitbucketのmercurialを書けるようにするissueは、前に見かけた気がする
たしか、やる気がないわけではないけど、使いやすいライブラリが無い的な返答だったような
直にリンクするとGPLになるとか

182デフォルトの名無しさん2017/06/09(金) 17:16:09.17ID:oDUXzovh
vcs指定すると何がいいの?

183デフォルトの名無しさん2017/06/09(金) 20:27:02.60ID:eJzwOC8V
>>177
内輪云々というか、たまたま気が向いた人がPRを送ってきたから受け入れたってだけの話じゃないの?
それを言い出したら標準ライブラリだってredoxサポートのためのコードがたくさんあるし

184デフォルトの名無しさん2017/06/09(金) 21:39:26.49ID:OWaLz7yy
>>181
普通にrepositoryのURI指定でhg://bitbucket.org/hoge/hageみたいにしとけば動いた覚えがあるぞ
githubもgit://github.com/hoge/hageにするし、VCS, 接続サーバを意識してなくないかな

今更subversionやcvsを使う気は無いけど、誰かPR出してみようぜ
rejectされるなりacceptされるなり、どっちに転んでも笑い話だと思う

185デフォルトの名無しさん2017/06/10(土) 04:46:24.86ID:8idv0Ky2
pijul(ピフル)試してみた
・ドキュメント無さすぎ
・パッチのハッシュがクソ長いし、指定時に省略できない
・SSH周りがいろいろおかしい。agent使えないとか
・エラーメッセージが全く役に立たない。コード読んで初めて原因が分かる感じ
・現在のバージョンを特定するタグ、IDのようなものが未実装
・複数ファイルの追加は一つずつ指定する必要がある。ディレクトリ一括とかダメ
・ワーキングディレクトリ内の未追加ファイルを一覧するコマンドが無い。要記憶力
・ワーキングディレクトリ内の状態を一覧するコマンドが無い
・ファイルとして受け取ったパッチの取り込みを行うコマンドが無いので、自分で.pijulディレクトリの中にコピーするらしい

結論:実用にはあと2年は待ちたい。すぐ使いたいならdarcs使え

186デフォルトの名無しさん2017/06/10(土) 08:42:42.56ID:V34f+MUj
>>185
こんなVCSサポートに入れるとかRustが実用考えて作られてないのがようわかるわ。

187デフォルトの名無しさん2017/06/10(土) 10:47:52.24ID:FHASBQwb
pijul対応はpijulの開発者たちがドッグードするためなんじゃないの
pijul自体がpijulで管理されてるからcargoサポートがないと不便そう

188デフォルトの名無しさん2017/06/10(土) 11:06:43.94ID:Ha8NmJTT
何かRustディスることに血道を上げてる粘着がおるな
自分の言葉で批判しようとするとフルボッコにされるから、最近は他人のまともな批判に乗っかってせせこましいレスしかできなくなってるが
>>159とか>>186とか

189デフォルトの名無しさん2017/06/10(土) 11:21:32.40ID:J2O0ntFQ
触れなくていいんすよ

190デフォルトの名無しさん2017/06/10(土) 13:46:58.55ID:AacmqL/b
Cと++は今世紀いっぱいは現役だからな
それ以外は覚える価値なし

191デフォルトの名無しさん2017/06/10(土) 14:23:08.91ID:8idv0Ky2
>>187
取り込まれたPR見れば分かるけど、VCSサポートって言っても、cargo newの後に
自動で pijul init を呼ぶだけの処理しかしてない

Mercurialのサポートとほとんど同じレベルだが、Mercurialの場合は hg init 呼んだ後に
さらに .hgignore ファイルも追加してくれるとこだけが違う
尚、この自動で追加される .hgignore は文法ミスってて使えない

192デフォルトの名無しさん2017/06/10(土) 14:50:16.11ID:8RIzdpJs
もうgitでいいよ

193デフォルトの名無しさん2017/06/10(土) 16:38:35.42ID:V34f+MUj
なんでお前らはこんな文法はゴミクズ、コンパイラはエラーしか吐かない、ライブラリはカス未満の
クソモジラの息がかかってる言語なんてありがたがってるのか本気でわからんのだが
モジラから金もらってる以外の理由あんの?

194デフォルトの名無しさん2017/06/10(土) 16:43:45.87ID:FHASBQwb
>>191
git://みたいにpijul://みたいなプロトコルのサポートも入ったのかと思ってたけど
initだけなら大した話ではないわな
それぐらいならsvnだろうがcvsだろうが
PR出したら簡単に取り込まれそう

195デフォルトの名無しさん2017/06/10(土) 16:47:08.14ID:FHASBQwb
そういえばsvnはgit init相当の処理はないから
cargo newの時にやることないな
cvsもよく知らないけど同じかな

196デフォルトの名無しさん2017/06/10(土) 17:28:38.55ID:gUDVFMBt
釣られないクマー

197デフォルトの名無しさん2017/06/10(土) 17:34:28.98ID:IftbJTTs
ああ、ほんとそんだけなのか。
pijulリポジトリやhgリポジトリからもcargoとってこれるとかではないんだな。

198デフォルトの名無しさん2017/06/10(土) 19:20:36.29ID:SnVZVp11
--vcs=gitすると.gitignoreも出来るんだね

199デフォルトの名無しさん2017/06/10(土) 19:29:45.37ID:IftbJTTs
ところでThe BookがSecondEdition出てるんだけどこれいつからあるんだっけ

200デフォルトの名無しさん2017/06/10(土) 19:50:13.72ID:8idv0Ky2
誰か、本のレビューしてくれ
この本はこういう人向き〜とか

The Rust Programming Language
https://www.nostarch.com/Rust


Mastering Rust
https://www.packtpub.com/application-development/mastering-rust

201デフォルトの名無しさん2017/06/10(土) 20:32:21.64ID:IftbJTTs
>>200
上の方まさに「The Book」のSecond Editionの書籍版じゃん。

202デフォルトの名無しさん2017/06/11(日) 01:53:28.37ID:X3vCZvzy
食事する哲学者は、なんでThe Bookから消されてしまったんや

203デフォルトの名無しさん2017/06/11(日) 15:06:17.17ID:qjl5AbWq
>>202
それ、俺も思った。
何でだろう?

204デフォルトの名無しさん2017/06/11(日) 15:56:53.70ID:vIRnRvxr
哲学者達がお腹一杯になったから

205デフォルトの名無しさん2017/06/11(日) 16:22:24.76ID:VsqhFcB6
トンチが効いててちょっと面白かった

206デフォルトの名無しさん2017/06/11(日) 22:30:10.43ID:X3vCZvzy
Second Editionはどういう意図か知らないけど、
"str".to_string()
"str".to_owned()
の代わりに
String::from("str")
を全面的に使うようにしてるね

207デフォルトの名無しさん2017/06/11(日) 23:46:31.76ID:XI3qvjLJ
String("str")みたいなコストラクタは無いの?

208デフォルトの名無しさん2017/06/11(日) 23:49:50.77ID:9OY4agMx
Stringはtuple structでない

209デフォルトの名無しさん2017/06/12(月) 00:27:33.38ID:My6TEn1j
https://crates.io/crates/crates_io_baseline
このcrate、めっちゃダウンロードされてて草生える

210デフォルトの名無しさん2017/06/12(月) 00:29:50.55ID:MzCSF4Ch
容赦なくて草

211デフォルトの名無しさん2017/06/14(水) 09:57:33.18ID:XYFguvYM
Tokio対応したHyperがリリースされたな
これからWebフレームワークも対応していくのだろうか

212デフォルトの名無しさん2017/06/15(木) 18:41:09.39ID:mn+yn6ig
pijul試してたら、なんかいつの間にかファイルが壊れて、テキストとバイナリがまぜこぜになったファイルが出来てしまった

213デフォルトの名無しさん2017/06/16(金) 09:06:23.46ID:ktTRVxgn
またpijulが使い物にならないからrustはだめとか言うおっさんがくるぞ

214デフォルトの名無しさん2017/06/16(金) 10:33:05.72ID:HCcCUJCK
わざわざ呼ぶなバカ

215デフォルトの名無しさん2017/06/17(土) 06:54:44.86ID:yZgGFQR1
Why are there so many Madoka references in Rust's codebase?
https://www.reddit.com/r/rust/comments/6hirku/why_are_there_so_many_madoka_references_in_rusts/

アイコン見てれば、容易に想像できることだが

216デフォルトの名無しさん2017/06/19(月) 14:55:59.38ID:86sO1ieZ
もしかして盾の歯車?

217デフォルトの名無しさん2017/06/21(水) 20:28:41.11ID:LG7VVo4P
crates.ioで、中身無しで名前だけ(たくさん)抑えてる人が居るね

218デフォルトの名無しさん2017/06/21(水) 20:52:10.55ID:0v4/pNjF
crates.ioはスクワッティングし放題だしなあ
http://doc.crates.io/policies.html#squatting

219デフォルトの名無しさん2017/06/21(水) 21:04:58.61ID:LG7VVo4P
rustって名前のcrate登録しようと思ったら、とっくに取られてた

220デフォルトの名無しさん2017/06/22(木) 19:34:29.89ID:eBYfVtnR
そのうちcratesトロール出てくるぞ

221デフォルトの名無しさん2017/06/24(土) 00:33:06.17ID:61WeFMfR
更新止まったの除くとcrates.io使ってるのあんまりないよ。
ホスティング直接探しに行くとrustのライブラリ結構ある。
それより依存型が欲しい。

222デフォルトの名無しさん2017/06/24(土) 00:34:41.77ID:l9zy63QW
>crates.io使ってるのあんまりないよ。
ドユコト?

223デフォルトの名無しさん2017/06/24(土) 06:06:00.68ID:cy4Nwj8p
>>221
依存型欲しいねー

224デフォルトの名無しさん2017/06/27(火) 21:33:58.01ID:IXk9A5/e
なんでalloca()できないの?

225デフォルトの名無しさん2017/06/27(火) 21:52:44.33ID:b1cqibPI

226デフォルトの名無しさん2017/06/27(火) 22:56:55.59ID:IIq+ol+w
>>225
どゆこと?
より一般化してUnsized Rvaluesにしたけど、Openのまま3か月放置?

227デフォルトの名無しさん2017/06/28(水) 01:29:39.37ID:9yiSXbVJ
>>226
関連するissueがまだopenのままに見える

228デフォルトの名無しさん2017/06/28(水) 11:14:29.14ID:+O8L6XqQ
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない

http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt

改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている

全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html

ポイント1:修補や損害賠償、契約解除の期限がなくなる

従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。

もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。

229デフォルトの名無しさん2017/07/01(土) 18:15:18.87ID:v+Q0wrxJ
Futuresに詳しい人教えて

Zero-costを謳ってTraitでコスト削減してるのは理解したんだが
id_rpc(&my_server).and_then(|id| {
get_row(id)
}).map(|row| {
json::encode(row)
}).and_then(|encoded| {
write_string(my_socket, encoded)
})
ってやった場合に
AndThen x2, Map x1を初期化時に作るコストについては
実行時のコストには乗らないから度外視って理解であってる?

Aaron Turonのブログ読んでもそこは言及してないように読めるので教えてくれい

230デフォルトの名無しさん2017/07/01(土) 20:18:30.04ID:9xGm3OAZ
コンパイラの最適化で消えるか、消えないにしてもstackいじるだけだから無視できるほど小さいコストなんだと思う

231デフォルトの名無しさん2017/07/02(日) 07:08:11.19ID:91oxOYnU
んー、その擁護は微妙に納得いかないかな...
AndThen, Mapは状態変数を保持するenumを内包するstructなので消えないはずだよねぇ
まぁstackいじるだけという言い分として、ならば実行時のcallでBoxFutureを返すのはバッドノウハウってことか
BoxFutureを返すのと、Futureを実装したstructを返すのと、どっちがZero-costに近いかは測ってみるか
サンプルだとBox<Future>だけど、Tokioは一律structを実装してるから、後者の方が早いんだろうけども

232デフォルトの名無しさん2017/07/02(日) 11:32:28.47ID:onBZ93I5
すまん、よくよく考えたら実行中にBox<Future>を返すのは動的にステートマシンのタスクを増やす行為だからNGだ
Futureを返さなきゃと.boxed()使ってたけど、素直にPollで結果を包むだけでよかった

233デフォルトの名無しさん2017/07/04(火) 00:00:54.04ID:YlAGoiwI
futuers-rsは

これfutuereじゃねぇじゃねーか、並列計算してないパイプラインをfutuere呼ぶなよ

すぐにfutures-cpupoolを見つける

までが予定調和。

Zero-cost ~~futures and~~ streams in Rust

234デフォルトの名無しさん2017/07/04(火) 09:31:46.73ID:ETZVte8W
これZero-costじゃねぇじゃねーか

Zero-cost(コストがないとは言ってない)

までが予定調和だったわ
下手な自作設計よりは全然コスト軽いけど鵜呑みは良くないね

235デフォルトの名無しさん2017/07/04(火) 10:33:24.16ID:CTMuvV84
まず future の綴を覚えるところからお願いします

236デフォルトの名無しさん2017/07/04(火) 12:20:45.83ID:J0r8gWdS
impl Traitじゃあかんのか?

237デフォルトの名無しさん2017/07/04(火) 13:09:55.73ID:Aj2F4wHv
aturon氏の記事(Zero-cost futures in Rust)を読めば"zero cost"というのは「直にステートマシンを書いたのと同様のコードにコンパイルする」という意味で言っていると分かるはずで、
状態変数があるからzero costじゃないなどという指摘は出てこないと思うのだけど

238デフォルトの名無しさん2017/07/04(火) 13:30:28.66ID:G2IB7Bn2
traitってGoのinterfaceに似てる
って言ったら型警察に起こられるんだろうか

239デフォルトの名無しさん2017/07/04(火) 14:05:06.69ID:At6b76le
>>237


だからコストがないって訳じゃないと理解したんだが
タスク構築のための初期化アロケーションとか、ステートマシンのための状態管理(分岐)の少量コストはあるって解説してるよな

言葉遊びによるZero-cost警察の方なら触ってスマン

240デフォルトの名無しさん2017/07/04(火) 16:29:36.87ID:H2zYYmCe
警察じゃなくても激おこやと思うw

241デフォルトの名無しさん2017/07/04(火) 16:36:55.49ID:o8qoMeE4
zero costは宣伝文句で、zero overheadくらいが妥当では

242デフォルトの名無しさん2017/07/04(火) 18:21:59.60ID:ZOpHOB0v
実行はゼロコストかも分からんが書くコストが青天井なので結局意味のない言語

243デフォルトの名無しさん2017/07/04(火) 19:19:11.80ID:A2FxzO1+
Aaron Turonのブログを引用しながら実は別の意味で言ってましたとか草

244デフォルトの名無しさん2017/07/04(火) 22:45:10.68ID:sW2FXAJU
javaはzero-overheadの語を使うけどrustはzero-costを使うよね。
zero-overheadだと追加の余計なコストがかからないという意味がわかるけど、
zero-costだとコストそのものがないと言っているのかzero-overheadと同じ意味で使ってるのか定かではないと思う。

245デフォルトの名無しさん2017/07/04(火) 22:53:04.21ID:Aj2F4wHv
Rustでzero-cost (abstraction)といったら抽象化レイヤーによるコストが0という意味だろうね

246デフォルトの名無しさん2017/07/05(水) 03:06:44.06ID:9aEWew1V
そもそもがC++界隈からの借用語だしな

247デフォルトの名無しさん2017/07/05(水) 16:39:24.43ID:AAYKoEFk
激おこな警察官が多くて誰がどの立場で何を擁護してるのかワケワカメ

とりあえずまぁfuturesやtokioを下手に使うとコストがゴリゴリ上がってくのは分かった
ステートマシン(AndThenやMap)も抽象化しきれなかったのかstructでI/F切られてるし注意して使わんとな

248デフォルトの名無しさん2017/07/05(水) 17:11:36.04ID:MzNNcf5c
そりゃ、真にコストゼロはありえないだろう
一般に気にされてるのは、C/C++より多いかどうかでしょ

249デフォルトの名無しさん2017/07/05(水) 18:08:21.50ID:tRZ6TMIF
だれかGUIライブラリ書いて
そしたら社内ツールでC#の替わりに使うで

250デフォルトの名無しさん2017/07/05(水) 18:41:42.95ID:UiQJEPDB
ゼロコストがabstractionにかかっていることをつい忘れちゃう
まあ普通に考えたら、futuresでもIteratorでもMapを実現したいなら値と関数は保持しないといけないし、AndThenも前と次の値を持ってないといけないよね
ラッパー構造体のコストは引数がコピーじゃなければメモリ的にもCPU的にもゼロだったはず

251デフォルトの名無しさん2017/07/05(水) 19:26:13.97ID:AAYKoEFk
>>248
別にC/C++と比較してコストがあるかは気にしてないぞ
C++ TemplateとRust Traitは実質同じ所に行き着くんだから比較するほどの意味もなし

>>250
IteratorやMapを抽象化できないのか?、できないならコスト削減できない不適切なLibではないのか?とは思わないのかねぇ
Rustに限らず新興言語はキーワードだけ拾って素晴らしいものだ!みたいな賛美ユーザが多いね

>>249
https://github.com/kenz-gelsoft/wxRust

もう動かないかもしれないけど
去年くらいのwxWidgetsが3.2.0でFFI周りのI/Fを非公開にしてwxHogeHogeが全滅した

252デフォルトの名無しさん2017/07/05(水) 19:35:34.06ID:oPOjLgnt
>>150
コンパイラだってバカ正直にMap構造体を用意してそこにクロージャをそのままぶち込むようなコードは生成しないんやで

253デフォルトの名無しさん2017/07/05(水) 19:42:23.78ID:LLvZvDtb
>>251
>IteratorやMapを抽象化できないのか?
まあ確かにHKTが欲しいと思わないこともないな

254デフォルトの名無しさん2017/07/05(水) 19:43:35.74ID:oPOjLgnt
>>252
安価は>>250の間違い

255デフォルトの名無しさん2017/07/05(水) 20:12:29.34ID:kX6rHoUh
>>249
GTKはまともに使えるっぽいけどそれじゃだめなの?
俺はgtkあんま好きじゃないからいやなんだけど

256デフォルトの名無しさん2017/07/06(木) 11:00:33.73ID:tRC1mrQq
>>247
>コストがゴリゴリ上がってくのは分かった
何を突然ファビョってるんだか
タスクごとのヒープアロケーション数はΘ(1)に抑えられているだろ

257デフォルトの名無しさん2017/07/06(木) 20:30:03.81ID:kH42VxHy
最近の公式の動きを見ていると、WebフレームワークはRocketを推していく方針に見えるな

258デフォルトの名無しさん2017/07/07(金) 07:02:47.03ID:vPLSgrbk
>>257
何でよりによってnightlyを要求するRocketなん?

259デフォルトの名無しさん2017/07/10(月) 13:13:29.86ID:Y8I/wQdo
>>256
タスク数に合わせてO(n)になってると思うんだけどそれは度外視なのかな?

260デフォルトの名無しさん2017/07/10(月) 13:58:50.67ID:mQ3pGq+a
オラクルがrustでコンテナランタイム作っとるってよ

261デフォルトの名無しさん2017/07/10(月) 19:18:17.66ID:l6mkv8ve
Building a Container Runtime in Rust | Oracle Developers Blog
https://blogs.oracle.com/developers/building-a-container-runtime-in-rust
> almost all container utilities are in c or go.
> (中略)
> Rust sits at a perfect intersection of these two languages

262デフォルトの名無しさん2017/07/11(火) 13:53:59.15ID:5tKo2E+W
オラクルの時点でお察し案件じゃん
まあオラクルとモジラは業界のゴロ同士仲がよろしいんですなあ

263デフォルトの名無しさん2017/07/14(金) 04:46:26.78ID:TKiI+WcD
google という名前のcrateが上がってて、
説明文が "Google is evil"
バージョン番号が "6.6.6"

264デフォルトの名無しさん2017/07/14(金) 20:21:33.28ID:8a1VCaPH
Googleが悪とかやっぱモジカスだわ

265デフォルトの名無しさん2017/07/15(土) 17:00:03.78ID:U+uVxSdX
Rust公式がTwitterで"Rocketの新バージョンがリリースされたぜ"とか呟いてて、それに対して"Ironの何が悪いんだ"的なクソリプが付いてるの笑う

266デフォルトの名無しさん2017/07/15(土) 23:27:50.25ID:RjDGp9te
RustのSlackでmame氏にCでポインタとか触ったことありますか?って聞いてるやついてワロタ

267デフォルトの名無しさん2017/07/16(日) 13:32:06.66ID:FJgd8SG/
箸が転がったから笑った

268デフォルトの名無しさん2017/07/16(日) 13:33:12.21ID:JEFmdVs4
膝がワロタ

269デフォルトの名無しさん2017/07/17(月) 22:50:00.44ID:8lRCTnOP
関連型ってさなんでいるの?
CeylonやC#みたいにgenericsのin/outで実現できない?

270デフォルトの名無しさん2017/07/18(火) 13:42:50.01ID:NOYbJ+oD
>>261
ライブラリの問題とかそういう回避方法はないのかと考察したけど、goroutineの仕様上無理ぽって結論なのか
rustが最適な言語かどうかは懐疑的だけど、go以外の使える新興言語ってのは他にないし仕方ないのかねぇ

271デフォルトの名無しさん2017/07/19(水) 19:13:52.48ID:23uwxygM
>>269 in/outの方が劇的に良かったりするの?MSDNとか読んでもすぐに理解できなかった

272デフォルトの名無しさん2017/07/19(水) 22:47:17.03ID:UyJFKTdP
>>271
良くなったりするわけじゃなくて全く同じもの。
単にrustのジェネリックスに制限があるだけ。
in/outや+/-なのはjavaの境界ワイルドカード型の定義が
長いから短くなったものでキーワードにするかシギルにするかの好みの違い。

273デフォルトの名無しさん2017/07/20(木) 00:56:51.60ID:k7oT/owf
C#とか知らないから適当なことを言うけど、in/outって要は型パラメータの反/共変性を指定する構文ってこと?
Rustはクラスがないからあまり関係ないような気が
そもそも関連型と型パラメータは全く別物だし

274デフォルトの名無しさん2017/07/21(金) 01:30:42.74ID:K3J9c6vN
Announcing Rust 1.19 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/07/20/Rust-1.19.html
・C互換な(untagged) unionの導入
・loopのbreakで値を返せるようになった
・値をキャプチャしないクロージャを関数ポインタ(impl Fnでなくてfn型)として扱えるようになった

275デフォルトの名無しさん2017/07/21(金) 03:20:29.74ID:kfdWC1ug
新しい言語は早い段階から使い始めれば
バージョンアップ時は変更点だけ覚えればいいけど
バージョンアップが重なったあとから始めようとすると覚えることいっぱいすぎ
Rustよ
もっとシンプルに

276デフォルトの名無しさん2017/07/21(金) 08:32:20.79ID:aL8S5b5t
-Zオプションが時報に無視されててワロタ

277デフォルトの名無しさん2017/07/21(金) 12:38:58.44ID:qDRT3Ece
Cargoがhigh level過ぎでrustcがlow level過ぎな課題はいつ解決するんかな
他のビルドツールを使ったプロジェクトにrustを入れるのが今は面倒

278デフォルトの名無しさん2017/07/21(金) 19:27:14.18ID:juJaC8N3
ていうか時報の反応速度が高くて笑う
まさかリリースの度に待機してるのか?

279デフォルトの名無しさん2017/07/22(土) 07:37:27.49ID:m9up21PD
> ・loopのbreakで値を返せるようになった

遂に来たか。

280デフォルトの名無しさん2017/07/22(土) 14:32:40.69ID:IwEFmDCG
時報であることに使命を感じて全力待機してそう, 機械の鑑だよホント

281デフォルトの名無しさん2017/07/22(土) 16:14:42.22ID:Jfa6LaZA
誉め言葉として受け取っておく

282デフォルトの名無しさん2017/07/22(土) 16:20:13.34ID:rGyFmqNE
>>281
誰だお前

283デフォルトの名無しさん2017/07/22(土) 16:39:57.41ID:WZvf35Ul
なお、バグった機械の模様

284デフォルトの名無しさん2017/07/22(土) 17:02:38.46ID:vk3cyWgj
雑談の種になるよう頑張ってるんだよ、そんなあげつらうことないでしょ

285デフォルトの名無しさん2017/07/22(土) 17:04:33.13ID:vk3cyWgj
というかどこに行けばRustの話をしていいのか分からない。英語ならRedditがあるけど

286デフォルトの名無しさん2017/07/22(土) 17:05:27.55ID:lf8sQzDC
あれ、associated constsはstabilizeされたんじゃなかったのか

287デフォルトの名無しさん2017/07/22(土) 17:10:48.08ID:rGyFmqNE
>>286
現行のbetaではfeature gateが外れているから次のstableに乗るはず

288デフォルトの名無しさん2017/07/22(土) 17:42:07.41ID:Oi7t7NSG
rust-jpのSlackとか?
ところでLLしか触ったことなかった俺も最近Rust使い始めてみたんだけど、有識者から見てRustで1番理解が大変なの(あるいは抑えておかなきゃならないとこ…)はどのあたりなのか教えて欲しい。

289デフォルトの名無しさん2017/07/22(土) 18:20:40.76ID:RlMkEmCd
>>288
トレイト
ムーブ
参照(borrowing)

Javaも触ったことないならトレイトは最初難しそう

290デフォルトの名無しさん2017/07/22(土) 20:18:18.76ID:s9rnd8yr
slackの質問に対するリアクションありすぎてこわい

291デフォルトの名無しさん2017/07/22(土) 20:29:54.52ID:Oi7t7NSG
>>289
ありがとう
公式のチュートリアルみたいなやつ進めてるんだけど今のところトレイトオブジェクトらへんでちょっと理解に苦しんでる

292デフォルトの名無しさん2017/07/24(月) 12:10:36.01ID:1TXRI9Gx
rustって現場で使われ始めてるの?
メモリ管理周りのメンタルモデルって他の言語に応用利いたりする?
コードがきれいになるとか?
始めるモチベが欲しい。

293デフォルトの名無しさん2017/07/24(月) 12:28:38.82ID:zGGIqffP
C++ほど辛くない

294デフォルトの名無しさん2017/07/24(月) 14:12:02.33ID:K7WDOtB+
>>292

1.クソコードをコンパイルさせてくれない
2.コンパイル通すの少し大変だけど実行時エラーが本当に出ない
3. 速い
4.パッケージマネージャーがよくできてる

1は本当に大きくて、自分のコードとコンパイラが喧嘩になると大抵自分のアーキテクチャが悪く、直すとちゃんと正しい実装になって感動する。つまり正しいコードが書けるようになる

295デフォルトの名無しさん2017/07/24(月) 14:19:11.38ID:1TXRI9Gx
>>294
もう一つ。仕事で使ってたりする?
goのcliツールはよく見るんだけど
rust製って何が有名なのかね?
ブラウザ以外で

296デフォルトの名無しさん2017/07/24(月) 16:50:51.12ID:emVJufwa
仕事で使ってるかは別としてcliツールは作りやすい印象

297デフォルトの名無しさん2017/07/24(月) 17:05:29.37ID:gGn38L0V
ripgrepしか紹介できないんだがなんかないのか

298デフォルトの名無しさん2017/07/24(月) 17:19:06.22ID:5AMOakOe
redoxosのシェルやエディタはunix用としてもビルドできるし
有名かは別として

299デフォルトの名無しさん2017/07/24(月) 18:24:11.57ID:v7SfrUaR
ripgrepはもちろんだが、tokeiも便利だよ
ion-shellもよく出来てる

300デフォルトの名無しさん2017/07/24(月) 18:47:46.45ID:xH7iVUfu

301デフォルトの名無しさん2017/07/24(月) 19:32:19.52ID:TrXPl61y
tokei のレポジトリにある使用例

https://asciinema.org/a/d14m9g1d2cyo7wvrxh0z4ck6o

を見てみたら、F* と Ur/Web がカウントされていたので「あっ(察し」事案だった

302デフォルトの名無しさん2017/07/24(月) 23:36:39.90ID:mh/Tz+0K
確かにcliは書きやすくて社内で使ってるサポートツール類はほとんどRust製。
小さいツールだと関係者も少なくて説得しやすいし。

https://www.rust-lang.org/ja-JP/friends.html

こことか見ててもそういうパターンが多いように見える。
さすがに大規模なプロダクションコードをいきなり
置き換えとか無理だろうし。

303デフォルトの名無しさん2017/07/24(月) 23:43:54.02ID:Dtg+FNV7
Rustである旨味なさそうだけど学習用?

304デフォルトの名無しさん2017/07/25(火) 06:07:27.53ID:5XPEt11J
おお、色々情報ありがとう。
今のところgoのcliツールのほうが目立ってるのは、単純に1.0のリリース時期の違いによるものなのかな。


redox は気になるなー。rustのメモリ管理の仕組みからいってバグが少ないosになるのかな。ちょっと試してみたいかも。reduxと名前が似てるのがなんかやだけど

305デフォルトの名無しさん2017/07/25(火) 10:59:30.41ID:ULTUdplU
goのツールをパクって速いのを作ればいいのか?
goのツールは何があるの?

306デフォルトの名無しさん2017/07/25(火) 11:37:29.68ID:5XPEt11J
俺が知ってるのは
peco、ghq 辺りかな。
ghqは常用してるけど最近重くなってきてるからぜひrustで軽くなるならして欲しい。
多分gitにアクセスしてる部分がボトルネックな気がするけど。

307デフォルトの名無しさん2017/07/25(火) 11:45:28.60ID:5XPEt11J
あとgitをrustで書き直したらはやくなるとかないかね。
ライナスに喧嘩売ることになるかもだけど。
それをきっかけにlinuxをcにこだわるのをやめてくれるかもw

308デフォルトの名無しさん2017/07/25(火) 12:39:25.58ID:fQ81IbD6
pecoもghqもすでにrust版あるよ

309デフォルトの名無しさん2017/07/25(火) 13:18:07.15ID:E8ESHMbJ
wasmがもっと成熟すれば...

310デフォルトの名無しさん2017/07/25(火) 14:21:47.66ID:5XPEt11J
>>308
へー。リンク下さい

311デフォルトの名無しさん2017/07/25(火) 16:53:49.81ID:qEbQGi9S

312デフォルトの名無しさん2017/07/25(火) 17:33:21.29ID:CUwpfKAw
skimええやん

313デフォルトの名無しさん2017/07/25(火) 17:38:52.31ID:qu0St3oz
>>307
Facebookが社内向けにMercurial(Python + C)をRustで一部?書き直したら速かったらしい

俺も、社内向けツールを前任者がgoで書いたのを幾つかRustに移植してる
ただの練習素材として移植してたけど、2〜3倍速くなったよ

314デフォルトの名無しさん2017/07/25(火) 19:00:41.47ID:FbhHJVqk
「Rust 1.19」リリース。union(共用体)をサポート
http://www.publickey1.jp/blog/17/rust_119union.html

315デフォルトの名無しさん2017/07/25(火) 20:32:46.37ID:5XPEt11J
>>313
おおー。魅力的な話だね。
メモリの使用量もrustだと減るようなきがするんだけどそのへんどうかな。

316デフォルトの名無しさん2017/07/25(火) 21:45:29.88ID:7Ef69C7C
rustは今の日本だと凄腕のプログラマが使ってるところはちょいちょい見かけるな。
もっとwebの人たちがたくさん布教すればいいんだろうけど、やっぱrust自体が難しいのかね。
C++とよくセットで名前が出てくるから、ビビる人が多いのかなーとも思う

317デフォルトの名無しさん2017/07/25(火) 22:11:08.39ID:FfK5LQFv
最近真面目に勉強し始めたけど潜在的に難解なバグを生み出す汚いコードを平気で書く人だと
コンパイルが通らないので辛いと思う。
若干煽り気味に言えばPHPやRailsだけやってプログラミングを分かった気になってちゃんと勉強してない人には無理。

318デフォルトの名無しさん2017/07/25(火) 22:21:26.92ID:5XPEt11J
ios -> objc, swift
android -> kotlin,java
web frontend -> typescript, javascript
web backend -> go,ruby,php
ってイメージだがrustはどこに入るの?

319デフォルトの名無しさん2017/07/25(火) 23:01:36.50ID:w/P80i1O
webassemblyの今後の成熟具合によっては、
web frontendに食い込んでいくかも

320デフォルトの名無しさん2017/07/26(水) 02:52:39.50ID:mSfCdN7l
>>318
希望的観測で言えば、
今までC/C++で書かれていたようなもの全てと、今goで書かれているものの半分 -> rust

WebAssemblyをほんとに必要としてるのは、ごく一部の人だと思う

321デフォルトの名無しさん2017/07/26(水) 08:56:45.29ID:ENBFGRGX
>>320
例えばc++ でUE4って書かれてるけど
そこをrustでってのはあるのかな?
ゲームエンジンとかはc++ってイメージだけどそれがrustでどうなるのか興味あるなー。
c++よりバグが少なくなってメモリ使用量も減るなら
家庭用ゲーム機とかの性能向上に役立ちそうだけど。

322デフォルトの名無しさん2017/07/26(水) 10:26:21.34ID:ENBFGRGX
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/dining-philosophers.html
このチュートリアルもうちょいなんとかならないのか
クロージャー周りの説明が抜けてるからなんだかふわっと触って終了みたいな感じになるんだけども。シンタックスの方から学んだほうがしっくりする。

323デフォルトの名無しさん2017/07/26(水) 12:59:44.03ID:TL1HhZT+
>>321
ゲームエンジンそのものがRustで書かれているのでなければ移行はないと思ってる
自分は据え置き開発だけど、ライブラリやツールやアセットパイプライン含めてC++ならそのまま利用する方が楽だし、ゲーム会社ならC++の資産やノウハウも蓄積されてる

324デフォルトの名無しさん2017/07/26(水) 16:21:03.85ID:G2QlGkU/
>>323
環境的にc++14使うくらいは許されてるの?

325デフォルトの名無しさん2017/07/26(水) 18:20:47.88ID:1Yp0AYo7
>>324
基本C++11かな
部分的に14の機能も使えるかも
そのうち使えるようになると思われる

326デフォルトの名無しさん2017/07/26(水) 18:36:05.35ID:0VRUk0dC
>>320はゲームエンジンそのものがrustにならんかのーって話じゃないの
その上っ面はC++のままで良いんでない

327デフォルトの名無しさん2017/07/26(水) 19:49:44.76ID:FgKZS4eT
>>322
最新ではその項無くなったよ

328デフォルトの名無しさん2017/07/27(木) 00:05:30.43ID:YcR0VV5Q
>>327
なんややっぱりそうなんだ。
やっててあんまり面白いとも思えなかったしね。
今シンタックスのところを読んでるけど、goより学習コストは高いなーと思った。
メモリ管理のメンタルモデルは学習を避けることができないから、尚の事学習コストは高いよね。
使い始めに関してはc++より難しいんと違う?

329デフォルトの名無しさん2017/07/27(木) 00:15:56.27ID:YcR0VV5Q
goを学習するモチベーションとなったのはgoroutineで並列処理を簡単に書けるからだったんだよね。
phpのバッチ処理を学習期間は2,3日で
goで並列処理を書けるようになった。

まぁ書けたってだけでgoの流儀って独特だから、その後の深淵に結構はまっていったんだけど。


深層学習の為のpython。
iosのためのswift。
みたくrustの始めるきっかけとなる分野ってなんかないのかな?

rustを書きはじめる皆さんのきっかけを教えてください。

330デフォルトの名無しさん2017/07/27(木) 08:45:36.82ID:alz7xNNS
>>329
社内でのC++開発に疲れて代替を探して。
ブライベートで使って、社内もこれにしたいと妄想する。そして誰も社内でRust使えない。

331デフォルトの名無しさん2017/07/27(木) 09:07:26.49ID:alz7xNNS
>>313
Rustにしちゃって、あなたの後任が困るとか、そういうことはないの?
社内でもRust認められてる?

332デフォルトの名無しさん2017/07/27(木) 10:08:19.56ID:JZl+5b/l
コードに問題があればcargo runでエラーが出ますけど
ビルドせずチェックだけを行う方法ないですか?

あと定番のlintツールも教えてください

333デフォルトの名無しさん2017/07/27(木) 11:54:01.80ID:NVUZFqS5
cargo check
clippy

334デフォルトの名無しさん2017/07/27(木) 12:47:34.70ID:tmRnr4Iu
>>331
前任者も認められてたからgo使ったわけじゃなく、goがもっとマイナーだった頃に勝手に使ってただけだし
俺も存在するかどうかわからない後任者など気にしてない
うちは大きな会社じゃないので、何を採用するかはプロジェクトリーダー次第

335デフォルトの名無しさん2017/07/27(木) 14:28:39.09ID:MedrFN4m
是非rust使ってレポートしてほしい

336デフォルトの名無しさん2017/07/27(木) 21:27:35.77ID:YcR0VV5Q
rustって課題を解いていく感じの学習サイトってないすかね?
goとかjsだとあるんだけど、、、

337デフォルトの名無しさん2017/07/28(金) 00:41:42.43ID:eqr+g7ZD

338デフォルトの名無しさん2017/07/28(金) 08:34:02.73ID:O7VztC89
>>337
わぉ。ありがとうございます。普通にあってよかった

339デフォルトの名無しさん2017/07/28(金) 10:12:39.22ID:APGd6g7o
nightlyって頻繁に更新ありますか?
モバイルに接続してるのであんまり通信したくないからstable選んだんですけど
clippyがnightlyでしかインストールできないのつらい

340デフォルトの名無しさん2017/07/28(金) 13:36:38.25ID:IiZPJKRx
てすと

341デフォルトの名無しさん2017/07/28(金) 17:20:05.54ID:HRHd+c6j
cargo checkだと全てのrsファイルをチェックするので
cargo check hoge.rsみたいに特定のファイルを指定してチェックする方法ありませんか?

342デフォルトの名無しさん2017/07/28(金) 17:54:04.02ID:ABEdHekZ
Stableでは無理
Incremental compilationの安定化を待ちなされ

343デフォルトの名無しさん2017/07/28(金) 18:24:34.83ID:cPwtoBYF
>>342
あ、そのモジュールが他のモジュールに全く依存していない場合はrustc hoge.rs --crate-type=lib --emit=metadataが一応使えるんだった
ただしこれはカレントディレクトリにゴミをまき散らすからあまりおすすめできない

344デフォルトの名無しさん2017/07/28(金) 21:55:20.59ID:3/dxxKLW
REPLが欲しいんですが安定したやつないかな

345デフォルトの名無しさん2017/07/28(金) 22:25:19.67ID:kWrQnfQi
目の前の便利な箱で調べること出来ない教えて君は
実はRustで作った人工知能試験で動作試験してるんじゃなかろうな

346デフォルトの名無しさん2017/07/28(金) 22:36:44.17ID:GOfdf3yM
いまbookやってるんですけど
fn main() {
let x = 1;
println!("Hello")
}
これ1回目buildすると
warning: unused variable: `x`
--> src/main.rs:2:9
|
2 | let x = 1;
| ^
|
= note: #[warn(unused_variables)] on by default
って出るのですが、2回目buildするとこの警告が出なくなる
なんででしょうか?

347デフォルトの名無しさん2017/07/28(金) 22:40:19.95ID:jE9FvNjp
コンパイルの結果がキャッシュされているから

348デフォルトの名無しさん2017/07/29(土) 00:47:07.63ID:DIZfrj77
rustってまだ安定してない感じ?
開発環境は何がおすすめなんです?
vscodeを試したけどあんまりrustに対応してない感が

349デフォルトの名無しさん2017/07/29(土) 02:31:25.76ID:ZD4o/AdV
>>348
俺はIntelliJ派だから

350デフォルトの名無しさん2017/07/29(土) 02:34:36.68ID:7woiJ3eO
そうですか

351デフォルトの名無しさん2017/07/29(土) 10:51:47.46ID:Xgmp5DuD
Rustについて調べているのですが2点ほど質問です
・所有権、借用権ってどのようなケースを想定した機能なのか?
 並行処理を行うコードを書く時には同期ミスによる破壊を防止できて便利そうだけど上手い活用ケースを想像できない
・OS無しで動かすコードを書くケースでRustが謳うメリットはどの程度いかせるのか?
 メモリマップドレジスタへアクセスするためにunsafeと生ポインタを多用することになる
 このようなケースでコンパイル時の安全性の検査条件などはカスタマイズできたりするのか

352デフォルトの名無しさん2017/07/29(土) 12:41:44.44ID:cTpvw2dC
vim + project.vim + rust.vimもいいぞ
コード量が多いと流石にIntelliJ使うけど

353デフォルトの名無しさん2017/07/29(土) 12:52:24.62ID:U9LihKmk
IDEAとvscodeってどっちがおすすすめ?

354デフォルトの名無しさん2017/07/29(土) 12:52:42.83ID:U9LihKmk
おすすめ?

355デフォルトの名無しさん2017/07/29(土) 14:45:43.16ID:3C62sBLB
>>313
噂をすればなんとやら
facebookexperimental/mononoke: A Mercurial source control server, specifically designed to support large monorepos.
https://github.com/facebookexperimental/mononoke

>>351
メモリ安全性以外での所有権の活用例としては、すでにボディを書き込み始めたHTTPレスポンスに新たにヘッダを書き込めないことを静的に保証する、とかいうのがある
https://docs.rs/hyper/0.10/hyper/server/index.html#an-aside-write-status
ヘッダを書き込んだレスポンスの所有権を奪って、ボディだけを書き込める型にして返している
https://docs.rs/hyper/0.10/hyper/server/response/struct.Response.html#method.start

356デフォルトの名無しさん2017/07/29(土) 16:04:35.17ID:OScYBSe+
もののけ

357デフォルトの名無しさん2017/07/29(土) 16:29:29.84ID:PuR8d8Sj
ideaのrustプラギンはメソッドチェインが深くなるとハイライトされなくなって、リネームとかも取りこぼすことがある。それ以外はよくできてて満足

358デフォルトの名無しさん2017/07/29(土) 16:43:27.84ID:mj0H/MXI
>>351
所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。

と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。
他人にヤラれると殺意がわく。

359デフォルトの名無しさん2017/07/29(土) 16:55:38.17ID:mj0H/MXI
>>351
借用に関しては、不意の同期漏れ防止と思ってる。

ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん?
C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。
でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。

360デフォルトの名無しさん2017/07/29(土) 17:08:36.25ID:mj0H/MXI
>>351
最後、OS無しはどうかなー。

自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。

361デフォルトの名無しさん2017/07/29(土) 17:23:05.64ID:H7MJnrUX
Rustの素晴らしさを理解するにはC++を理解する必要がある?

362デフォルトの名無しさん2017/07/29(土) 17:27:03.96ID:DIZfrj77
>>360
メモリ安全にかけるのがrustなら
最初から最後までrustで書けるべきじゃない?

363デフォルトの名無しさん2017/07/29(土) 17:41:05.57ID:mj0H/MXI
>>362
最初から最後までメモリ安全じゃなくてもいいんじゃない?
適材適所で使い分ければ。

マルチスレッド問題はアプリ側に多い問題かなーって。
デバドラ最下層になると、そもそもマルチスレッド要件が無かったり、メモリイメージが生で見える触れる方が融通があって便利だったりするし。

ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。
この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。

364デフォルトの名無しさん2017/07/29(土) 18:00:00.71ID:SaJE2wIQ
racer + flycheck-rust でマクロ補完って無理?
println!とかwrite!とか毎回全部打つのがダルい

365デフォルトの名無しさん2017/07/29(土) 18:10:49.31ID:DIZfrj77
>>363
結局cには勝てないのか。
rustってgcがないからメモリイメージを直接いじりやすいのかと思ってたよ。
redoxとかも結局c++に頼ってたりするんかな?

366デフォルトの名無しさん2017/07/29(土) 18:13:03.21ID:DIZfrj77
>>363
あと最初から最後までメモリ安全のほうが良くない?
少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。
逆にできないならrustの存在意義ってなんだろ。

goは並行処理が言語機能に組み込まれてる。
rustはメモリ安全が売りだと思うんだけど、
そこってなかなか地味な売りな気がして

367デフォルトの名無しさん2017/07/29(土) 18:57:22.38ID:mj0H/MXI
>>365
Cに頼る→負けてるって事じゃないと思うけどね。
実際アセンブリ言語はなくならないわけだし。

CPU の高機能化、メモリの大容量化、プログラムの大規模化、があって、開発効率を高めるために、プログラムの大部分がC言語に置き換わったわけじゃん。
で、マルチコア全盛の時代になって、正常稼働面での重大要因としてメモリ安全性が注目されてrustが生まれたのだから、メモリ安全のメリットの大きいところだけrustに置き換わるってのが、普通の流れじゃないのかなーと思うよ。

別にCを駆逐する必要はないしょ。

368デフォルトの名無しさん2017/07/29(土) 19:02:32.30ID:mj0H/MXI
>>366
そもそも、ハードに近い層でのメモリ安全性って何?って話だと思うんだ。

で、メモリ安全の話が出てこない領域なのだから、rustの出番が無いって事で良いんじゃない?

369デフォルトの名無しさん2017/07/29(土) 19:05:29.70ID:mj0H/MXI
>>361
むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。

370デフォルトの名無しさん2017/07/29(土) 19:59:14.72ID:DIZfrj77
goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。
まさかブラウザ開発のため?

3713462017/07/29(土) 20:14:02.81ID:DdYvAide
>>347
キャッシュを無効にして毎回警告を出すにはどうしたら良いでしょうか?

372デフォルトの名無しさん2017/07/29(土) 20:22:55.12ID:OScYBSe+
>>369
俺もRustはじめてからC++が少しよく書けるようになりました

373デフォルトの名無しさん2017/07/29(土) 21:18:30.65ID:ZD4o/AdV
>>355
へー、monorepo用だからモノノケとな

mercurialをベースに仮想ファイルサーバーにする予定とは、なかなか壮大な計画だ

3743512017/07/29(土) 21:52:24.31ID:Xgmp5DuD
レスありがとうございます

>>355,358-359
なるほど。やはり並列処理時の安全性を担保する機能なのですね
組み込みでRTOSもどきを作って並列処理させるなんて場合には有効なのかな

>>360
構文上罠が多いC/C++の代替となる言語を探していてRustを検討しています
なのでC/C++を使わずにC/C++相当のことを行いたいです
警告もエラーも無しに動作だけがおかしいとか勘弁して欲しいです
他にDも検討していますが何となく新しい方が何かと便利かなと思ったり・・・

375デフォルトの名無しさん2017/07/30(日) 03:44:39.97ID:m1nsIIH9
以前にこのスレであったら良いと言われていたOptionのEntry風APIが実装されて、しかも既にstabilizeされている
std: Stabilize `option_entry` feature ・ rust-lang/rust@ee064c3
https://github.com/rust-lang/rust/commit/ee064c380652fb7e40c1620fd74fb1406989d009

376デフォルトの名無しさん2017/07/30(日) 08:00:41.23ID:eSrcFrA9
>やはり並列処理時の安全性を担保する機能なのですね

race condition の解消はあくまでもメモリ安全の一部でしかない

377デフォルトの名無しさん2017/07/30(日) 08:02:46.70ID:eSrcFrA9
>他にDも検討していますが何となく新しい方が何かと便利かなと思ったり

Dが検討対象に入って、かつ、低水準用途なの?
意味わからんな

378デフォルトの名無しさん2017/07/30(日) 08:03:42.92ID:NzSybo/S
351からは実際にプログラム組んだことの無い人の気配がプンプンしてる。

379デフォルトの名無しさん2017/07/30(日) 11:40:03.02ID:sZ4wntzb
cargo check のメッセージが加工しづらい
https://github.com/rust-lang/rust/issues/42653これ追加されて欲しい

380デフォルトの名無しさん2017/07/30(日) 16:21:42.29ID:vygP638r
たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね

381デフォルトの名無しさん2017/07/30(日) 17:42:42.26ID:cNiju5gN
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)

382デフォルトの名無しさん2017/07/30(日) 19:43:29.15ID:IhAKIxVt
CランタイムをスタティックリンクしたくてRUSTFLAGSに以下のフラグを設定しています。

RUSTFLAGS='-C target-feature=+crt-static'

これを環境変数で設定するのではなくCargo.tomlで指定するにはどうすればいいんでしょうか?
http://doc.crates.io/config.html を参考に下のように書いてみたのですが効いてないようでした。

[build]

rustflags = ["-C target-feature=+crt-static"]

オプションの書き方が違っているんですかね?

383デフォルトの名無しさん2017/07/30(日) 19:51:11.45ID:m1nsIIH9
["-C", "target-feature=+crt-static"]
でどうかしら

384デフォルトの名無しさん2017/07/30(日) 20:00:04.61ID:IhAKIxVt
うーん、このへん試してみたんですけどだめなんですよね。

["-C", "target-feature=+crt-static"]

["target-feature", "+crt-static"]

385デフォルトの名無しさん2017/07/30(日) 22:39:37.27ID:KR/rniwV
>>381
一時的に古いnightly使えば良いのでは

386デフォルトの名無しさん2017/07/30(日) 23:38:44.64ID:dsY+op8E
まだruct学んで2日目だけど
これパッケージ入れる時のコンパイルが長いね
補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ
基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど
ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ

3873512017/07/31(月) 01:33:05.73ID:0NH1HYUL
>>377
C/C++より判りやすく罠が少なくC/C++で出来ることは全て出来る言語を探しています

>>378
ネイティブに動くプログラムで一番経験があるのはアセンブラ(組み込み)です
C/C++はなんの警告もなくメモリがぶっ壊れるし、どこが壊しているのかも判りにくいし
苦手です

388デフォルトの名無しさん2017/07/31(月) 09:17:51.12ID:nR0sqwYk
アセンブラは型がないぶんさらにメモリ壊しやすいと思うが

389デフォルトの名無しさん2017/07/31(月) 13:44:43.25ID:luO5NyKL
ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって

これって結局
全部ローカル変数になるってこと?
プログラム全体を通してアクセスする変数はmain関数で用意したローカル変数だからmain関数を抜けたあとは全部開放しちゃうからメモリリークも起きない?

cとかでもやろうと思えばできるって事?
cでmallocとかfreeを使わず、
全部変数定義してつかえばrustと同じ?

390デフォルトの名無しさん2017/07/31(月) 16:54:10.50ID:RkZnFpRc
メモリに限らずリソース確保全般を行わないプログラムって何ができるのか
可変サイズの入力を受け取るならmallocがほぼ必須じゃない?
1行MAX_LENGTH文字までのテキストしか処理しないとか?

391デフォルトの名無しさん2017/07/31(月) 17:16:32.22ID:CRPdTSOK
rustってどんな分野に向いてるのかいまいちわからないんだけど
webに使うのはおすすめできる?

3923512017/07/31(月) 19:18:45.74ID:S3S/4XWd
C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか

>>388
プロジェクトやプログラムの規模という要素もあるけどメモリを自由に管理できるアセンブラの方が見通しが良く
メモリ破壊に関するリスクも制御しやすいと思う。人間が理解しやすいように並べることも出来るし
もしメモリを壊した時もC/C++より何が起きるかを予測しやすいと思う

個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな

393デフォルトの名無しさん2017/07/31(月) 19:24:58.57ID:nTqL7k1O
アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが
Volatile関連の制御とかだって面倒なだけだし

3943512017/07/31(月) 21:28:38.42ID:S3S/4XWd
>>393
C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS
そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです
C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな

395デフォルトの名無しさん2017/07/31(月) 22:26:49.07ID:nR0sqwYk
C/C++というレベルじゃなくて
LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想

396デフォルトの名無しさん2017/08/01(火) 18:09:39.02ID:TrH0Acv/
>>391
いわゆるWebアプリを書く言語としてはおすすめしない。

397デフォルトの名無しさん2017/08/01(火) 18:17:25.28ID:TrH0Acv/
>>392
C/C++に慣れていないだけでは。
もしくは動的なメモリ確保を想定していないとか。

398デフォルトの名無しさん2017/08/01(火) 18:21:43.31ID:TrH0Acv/
>>394
(わりと一般的な)OS上で動かす限り、アセンブリ言語で書いても
リンカとローダが介在することには変わりないと思うけど。

399デフォルトの名無しさん2017/08/01(火) 18:52:10.83ID:8J/offgv
>>351はOS無しと言っている

400デフォルトの名無しさん2017/08/01(火) 19:26:38.99ID:A6tuVNB3
>>351
OSなしアセンブラを必要とする層で使える汎用高級言語を探してるならRustは適さないからお帰り
そういう言語が存在する気はしないけど夢追い人っぽいから応援はしてるよ

4013512017/08/01(火) 19:28:04.99ID:ascdikyg
新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や
メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな
これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか

402デフォルトの名無しさん2017/08/01(火) 21:16:08.18ID:PIQ133u2
>>400
まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念
例えばESP8266とかESP32で使えたらいいとか思ってたよ。

webが利用用途じゃないって残念すぎるな。
そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が
趣味的に触る言語ってことかな。

403デフォルトの名無しさん2017/08/01(火) 22:02:02.77ID:A6tuVNB3
お前の中ではGC有無とOS要否は直結するのか(驚愕

ESPがどういうチップセット構成なのか知らんけど
ARM CPUならクロスコンパイルして動かせるんじゃね
多分、同じ程度の努力でGC載ってるGoも動くと思うけど

404デフォルトの名無しさん2017/08/01(火) 22:04:43.31ID:H6BRQUwS
cargo checkすると
warning: the option `Z` is unstable
というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?

405デフォルトの名無しさん2017/08/01(火) 22:04:54.04ID:8J/offgv
Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある
crates.ioとかだってRust製だしね

4063512017/08/01(火) 22:43:53.38ID:ncmaIafS
>>402
ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた
とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから
昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が
ある程度保たれるというのはメリットだと思う
組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね

407デフォルトの名無しさん2017/08/02(水) 00:38:23.97ID:Oyyz61S9
>>400
いや、そういう用途向けでしょ。
実際にOSの実装に用いられてるし。

408デフォルトの名無しさん2017/08/02(水) 00:46:25.26ID:9o+N0qJU
上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの?
言い換えると、extern crate coreすら出来ないやつ

409デフォルトの名無しさん2017/08/02(水) 01:03:22.66ID:OoZ5R2Ag
なんか勘違いしてる人がいるね
Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること
例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう

>>408
OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況?
libcoreは何にも依存してないからそんな状況ありえないと思ってた

410デフォルトの名無しさん2017/08/02(水) 01:08:41.51ID:CN84q205
アセンブリ君

4113512017/08/02(水) 01:16:10.65ID:Qb6MNIfM
あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか

412デフォルトの名無しさん2017/08/02(水) 01:21:03.63ID:E8GFzbft
>>396
>>405
今は使い物にならないって事?
向いてると思って趣味のWEBアプリに採用したけどやめたほうがいいのかな
Golangは古臭すぎて使う気起きないし
正直速度はどうでもいいけど構文が好き

413デフォルトの名無しさん2017/08/02(水) 01:21:20.56ID:Hth04IJp
coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね
rust_begin_panicとかをどうやって用意するのかは知らないけど

414デフォルトの名無しさん2017/08/02(水) 01:22:27.24ID:/y5AMSWR
RustでもOS書けるでしょ
(もちろんCと同じく最低限のアセンブラはいるが)
ぐぐればいろいろ見つかるぞ

4153512017/08/02(水) 01:38:12.16ID:Qb6MNIfM
>>411ミスった。訂正
× 組み込みでそのようなコードを書くのか判っている人
○ 組み込みでどのようなコードを書くのか判っていない人

>>409
>例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
そういう話を聞きたかった。レジスタの操作順までコンパイラレベルで面倒を見てくれたらありがたいと思う
xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。その定義を作る気力があるかはともかくとして

>そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
もちろん入力値のチェックは必要になるだろうけど

416デフォルトの名無しさん2017/08/02(水) 02:29:19.43ID:OoZ5R2Ag
>>413
確かにmemcpyとかあるね、忘れてた
まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね
> rust_begin_panic
組み込みならシリアルにでもログ出して無限ループとかが普通かな?
こういうのはOS系のプロジェクトがとても参考になる

>>415
> その定義を作る気力があるかはともかくとして
実行時チェックなら多少楽になるだろうしそこは(精神的)コストとの相談だね

> ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない
Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね
そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり

417デフォルトの名無しさん2017/08/02(水) 07:02:07.94ID:nq2BG13A
redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの?
結局何がしたいのか分からんな・・・

そこについては諦めているなら既に実用化されているし
そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ

418デフォルトの名無しさん2017/08/02(水) 08:11:06.98ID:Oyyz61S9
>>415
レジスタまで意識する用途なら、高級言語を使わないのが正解では

> xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。
それこそボード固有の話になるので。
高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。
何れにせよ言語レベルで対応する話ではないな。

419デフォルトの名無しさん2017/08/02(水) 10:50:44.07ID:AyM7Pnm7
>>412
>向いてると思って趣味のWEBアプリに採用した

やってみたら良いと思う。
仮にミスマッチだったとしても、過程や結果を公開すれば、色んな人の役に立つ。

420デフォルトの名無しさん2017/08/02(水) 12:12:53.41ID:m0LDca1I
rustっていまのところ
何にも向いてないということか。

golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。
とりあえずwebはgoでいいや。

421デフォルトの名無しさん2017/08/02(水) 12:21:18.09ID:E8GFzbft
>>419
webアプリ作るならunsafe必須とか?
cもc++も触った事ないからunsafeだけは無理なんだけど…

422デフォルトの名無しさん2017/08/02(水) 12:56:49.05ID:qhSfUKHc
変なチューニングに走らない限りはunsafeは不要
ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある
あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん

423デフォルトの名無しさん2017/08/02(水) 15:19:15.45ID:E8GFzbft
>>422
unsafeは不要なのか、よかった
Railsは使ったことないから分からない
今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない
rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?

424デフォルトの名無しさん2017/08/02(水) 16:38:11.64ID:I334RkfN
goでいいや、という人はまさにgoでよいのでは。
goではいやだ、という人むけ。

425デフォルトの名無しさん2017/08/02(水) 16:42:18.62ID:E8GFzbft
goとかいうmapもnull安全もないうんこは絶対NG

426デフォルトの名無しさん2017/08/02(水) 17:58:49.69ID:m0LDca1I
goが嫌だと言うなら
kotlinという選択肢もある。
これだとアンドロイドアプリももれなく使えるようになるし、
null安全だし。
何よりideが既にある

427デフォルトの名無しさん2017/08/02(水) 18:06:51.08ID:5BVbLnR+
過疎だからいいけどrustの話しようぜ

428デフォルトの名無しさん2017/08/02(水) 18:07:43.92ID:E8GFzbft
kotlinもscalaもjvm言語だからあまりnull安全じゃない

429デフォルトの名無しさん2017/08/02(水) 19:54:07.78ID:7vYFqN5x
rustはno_coreにしてベアメタルでリージョンにメモリ管理やってもらうだけに全振りすればいいよ!
え?ヒープ使いたい?rustc_privateでalloc系をだな。
アセンブリもcpu毎にアセンブラ用意するのが面倒くさいからrustのinline asm使おうぜ。

>>404
そのまんま。
cargo checkはZオプション付けてるだけだから「Zオプションは安定してないから注意しろよ」ということ。

>>428
言ってる意味がわからない。

4303512017/08/02(水) 20:02:49.43ID:5dN3nnfV
>>416
unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか

431デフォルトの名無しさん2017/08/02(水) 20:28:52.05ID:xy+LcKRk
本格的にOS無しの世界に入ったことが無いから適当だけど、関数型プログラミングの道具が使える、とか?>Rustのメリット
代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。

趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる

432デフォルトの名無しさん2017/08/02(水) 20:31:53.85ID:E8GFzbft
>>429
javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事

433デフォルトの名無しさん2017/08/02(水) 20:54:36.60ID:Hth04IJp
>>429
>cargo checkはZオプション付けてるだけ
補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、
標準のcargo checkは--emit metadataを使っているから警告は出ない

434デフォルトの名無しさん2017/08/02(水) 21:09:38.43ID:FxAsS3hN
>>429
>>433
普通に使ってれば表示されないメッセージなんですね
cargo checkが出力するエラーや警告などをもう少し調べたいんですけど
これってどこに乗ってるんでしょうか?
cargoのリポジトリクローンしてから適当なエラーでgrepしてもヒットしないんです

435デフォルトの名無しさん2017/08/02(水) 22:00:58.19ID:7vYFqN5x
>>432
VMじゃなくてライブラリの話ね。
ceylonみたいなjavaとのシームレスな通信を捨ててるJVM言語はどうだろうか?

>>434
cargo-checkっていうthaad partyのサブコマンドがあるんだけど、
後にcargo自身に全く同じサブコマンド名でちょっと違うコマンドが追加されたの。
だからcargo-checkの方つかってるはず。

`cargo install --list`してみ。

https://github.com/rsolomo/cargo-check

436デフォルトの名無しさん2017/08/02(水) 22:13:46.45ID:h6wu2BXI
物騒なpartyのサブコマンドだな

437デフォルトの名無しさん2017/08/02(水) 22:28:55.57ID:Hth04IJp
THAAD partyワロタ

438デフォルトの名無しさん2017/08/03(木) 00:45:37.29ID:InlYWDxN
>>430
unsafeを使わないとできないってのはその通りだけど
> もちろん入力値のチェックは必要になるだろうけど
って処理を含めた関数を作ってunsafeな部分を支配下に含めることでunsafeでない処理にするってことが言いたかった
例えるとmallocの戻り値チェックを入れてOption<&mut T>を返す関数を作ってラップすることでunsafeでなくするって感じ
これを面倒くさがるとぬるぽに遭遇するがちゃんとラップすればガッが「一切」必要なくなるわけだ
でも今度はfreeしてない問題が発生するからスマポ作って・・・と徐々に面倒くさくなってきて > コストとの相談

>>431
ライフタイムとか借用とかの安全機能抜きにしてもパターンマッチとか他の言語機能で見てもRustは魅力的だよな
・・・まずい、mainにunsafe付けてBetter CとしてRustを使う世界もありな気がしてきたぞ

439デフォルトの名無しさん2017/08/03(木) 04:52:30.89ID:dQPpbAHc
Java の参照は、Nullable だから、
Kotlin で扱う場合、すべて、Nullable にすると面倒

そこで、Kotlin では、Platform Type (下の3) と言うものを作った

String 変数型に、Null 代入時、
1. String で、実行時に、IllegalStateException
2. String? で、Nullable だからOK
3. 型を省略(String!) で、実行時に、デリファレンスでヌルポ

1. は、インスタンスにアクセスする前に、代入時にエラー。
3. は、1よりひどく、インスタンスにアクセスして、ヌルポ

440デフォルトの名無しさん2017/08/03(木) 07:06:29.97ID:l/KHeBEE
Kotlin信者が必死だなw

JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿
Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?

441デフォルトの名無しさん2017/08/03(木) 08:03:17.08ID:eYqeDR4x
スレチ削除申請頼む

442デフォルトの名無しさん2017/08/03(木) 08:29:31.88ID:hrCRy9t8
組み込みスレ?

443デフォルトの名無しさん2017/08/03(木) 08:39:41.14ID:563u4f2I
>>441
いちいちスレチだけでレス削除してくれるほど運営も暇じゃねーよ
板違いのスレも最近は「落ちるまで放置してね」の方針なのに

444デフォルトの名無しさん2017/08/03(木) 10:32:34.73ID:TRkbUvPZ
rust 1.21.0使ってますが英語苦手なので日本語ページ見てます
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/if.html
このページの一番最後
「else のない if では、その値は常に () となります」とあるので
let x = 0;
let y = if x == 1 { 1 };
println!("{}", y);
って書いたんですけどbuildしてもエラーになります
error[E0317]: if may be missing an else clause
()になりませんどうしてですか?

445デフォルトの名無しさん2017/08/03(木) 10:33:20.99ID:WxFDmNeE
>>440
ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。
llvmの中間コード吐けるようになる。
rustより学習コストは低くて関数型チックな言語構文使ってるから
kotlin vs rustが勃発するな。
問題はandroid開発者を取り込めるからユーザー数は圧倒的
IDEも標準が存在する。
という点で色々rustは不利。
rustはwebAssenbryあたりで本領発揮できればいいんだけど。

446デフォルトの名無しさん2017/08/03(木) 10:35:36.32ID:WxFDmNeE
>>444
エラーメッセージ観るとelse節がないって怒ってるね
yに代入するんだからelseないと値が不定になるでしょ

447デフォルトの名無しさん2017/08/03(木) 10:39:45.44ID:WxFDmNeE
>>444
ごめんちゃんと読んでなかった

fn main() {
let x = 5;

let y = if x == 5 { () };
println!("{:?}",y)
}
これだと動くよね。型を() に統一しないとダメなんじゃない

448デフォルトの名無しさん2017/08/03(木) 10:52:53.58ID:TRkbUvPZ
>>447
なるほどそういうことですか
省略しないほうがいいですね
ありがとうございました

449デフォルトの名無しさん2017/08/03(木) 16:58:16.30ID:cu622efE
IntelliJ Rustプラグインが、(IDEの)公式プラグイン化した
ついでにちょっとおせっかいな表示も始めた
関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか

450デフォルトの名無しさん2017/08/03(木) 22:02:43.27ID:l/KHeBEE
有料化しなきゃどうでもいいかな

451デフォルトの名無しさん2017/08/03(木) 22:11:43.17ID:ztpCIQ/J
JetBrainsが開発に参加しているというだけでもそれなりに心強い

452デフォルトの名無しさん2017/08/04(金) 09:17:26.55ID:plGTqVJg
あのプラグインの作者、前にPR出したらクッソ丁寧なダメ出ししてくれた
PRコメントの数倍のレスが返ってきてビビったわ
引き続きコミュニティベースで発展するといいのう、MozillaもJetBrainsもあんま要らんことするでないぞ

453デフォルトの名無しさん2017/08/04(金) 11:05:40.90ID:ZGf6UrbU
>>452
個人的には language server protocolをちゃんと用意してくれたほうが幸せ。
vscodeで使いたいんで。
http://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4
https://github.com/rust-lang-nursery/rls

454デフォルトの名無しさん2017/08/04(金) 22:55:37.21ID:KlM1Xeqg
>>444,446,447,448
型が一致してないからや。
if式のelse句省略して戻り値の型にunitが推論されるのに
thenの方の戻り値の型がunit以外になるからエラーになる。

たぶん、rustc --explain 0317すればクソ丁寧に教えてくれる

455デフォルトの名無しさん2017/08/05(土) 02:43:30.26ID:WbpcX2VW
Windows用のtar.gzを落としてきて適当に解凍
.\rust\binへパスを張って
>rustc hello.rs
error[E0463]: can't find crate for `std`
error: aborting due to previous error(s)
>
えぇぇー・・・・w
.\rustcの中を見てもライブラリらしき物が見あたらないのでどこにいるのかと探したら
.\rust-std-i686-pc-windows-msvcの下にいた。.\rustc\libの下に移動したらコンパイルは
通ったがリンカがないと怒り出す
面倒なのでVC++のコマンドプロンプトからパスを張ってようやくコンパイル&リンクに成功
無事に実行出来た

というか実行ファイルがかなりでかいな。100KBくらいある。全部込みじゃしゃーないか
あと-vや-C link-args=が無視されているように見える

456デフォルトの名無しさん2017/08/05(土) 02:47:41.52ID:Q+GU1zzP
そもそも今日日tar.gzなんてどこから落としてきたんだっていう

457デフォルトの名無しさん2017/08/05(土) 03:11:33.75ID:WbpcX2VW
他のインストール方法ー→スタンドアロンなインストーラーにビルド済みを固めたtar.gzがある

458デフォルトの名無しさん2017/08/05(土) 07:15:49.71ID:49wfyY1x
何らかの信念があって、rustupを避けてるわけ?

459デフォルトの名無しさん2017/08/05(土) 16:01:00.22ID:WbpcX2VW
オンラインによるインストールは可能な限り避けるようにしている。あとで環境の再現が必要になった時に詰む可能性がある

460デフォルトの名無しさん2017/08/05(土) 16:18:44.06ID:CGuOYehU
メモリ安全が重視されるのって、ハッキングとかに使われるから?

461デフォルトの名無しさん2017/08/05(土) 16:22:20.12ID:uZdWE4Go
脆弱性になるからってのもそうだけど、単純にSEGVでプログラムが落ちるのを防ぐためというのもある

462デフォルトの名無しさん2017/08/05(土) 16:31:03.26ID:CGuOYehU
代わりにunwrapで落ちまくり

いや、うそ

それ以外のバグだと落ちはしない?

463デフォルトの名無しさん2017/08/05(土) 17:34:15.87ID:49wfyY1x
メモリ安全とミドリ安全って似てるよな

464デフォルトの名無しさん2017/08/06(日) 00:23:03.22ID:8w1+5d3W
>全部込みじゃしゃーないか
msvc toolchainでstaticリンクになったっけ?

465デフォルトの名無しさん2017/08/06(日) 03:55:05.27ID:fFJNwhsI
>>464
リンカにどんなコマンドが渡されているのか確認できないので詳細は判らない

466デフォルトの名無しさん2017/08/06(日) 03:55:59.27ID:fFJNwhsI
あ、なんか変だ。訂正
× コマンド
○ オプション

467デフォルトの名無しさん2017/08/06(日) 10:24:33.59ID:gzkOLnwH
Rustの日本語書籍出る予定ないのかな?

468デフォルトの名無しさん2017/08/06(日) 17:24:42.71ID:hteV9R0w
>>467
英語で原典的な本が出るから遠からず日本語訳も出るだろ
ただし日本語訳の翻訳の質がどうなるかは全く安心できないことは
近年のプログラミング関連の英語書籍の日本語訳を見れば理解できるだろう

469デフォルトの名無しさん2017/08/06(日) 23:17:23.51ID:5q4qU5gd
書籍は情報が古すぎて当てにならんぞ。
文書化自体あんま力入れてないからソースコード読むのが一番早いよ。

470デフォルトの名無しさん2017/08/06(日) 23:38:02.09ID:Q0UOjaQj
訳のレベルに関係なく出せば売れるからかな
需要が少なすぎて競争にならないから訳の質がいい物が出ない?

471デフォルトの名無しさん2017/08/07(月) 04:31:33.89ID:+587VfNE
>>469
どのサイトのソースコード読むのがいいですか?

472デフォルトの名無しさん2017/08/07(月) 04:33:15.84ID:lxGlucTV
>>470
> 需要が少なすぎて競争にならないから訳の質がいい物が出ない?

そうじゃない
英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した
その原因として考えられるのは、訳者が使命感を持たなくなり単に副収入とかの経済的で利己的な目的で翻訳をするようになったことと
それ以上に訳者が大衆化したことも大きい(かつてだと理工学書の翻訳は、ほぼ完全にいわゆる一流大学の教授の専権事項だったが今は全く違う)

またそういう一流大学教官による訳書であっても、近年は、ゼミで原書を読ませて学生(院生?)たちに素訳を出させて適当につなぎ合わせて
訳書として出版したのでは?と疑われるレベルの訳すら出現しているのは、明らかに近年の訳者のモラルの低下(使命感の欠如)の例だろう

近年の訳の質の低下に関してもう一つ重要なファクターとしては、最近の訳者が英語(特に会話面で)は達者になったのかも知れないが
明らかに昭和後期の訳者たちよりも日本語の文章力が低下していることだ(その結果として訳の日本語文が読むに耐えないレベルに堕している訳書が少なくない)

473デフォルトの名無しさん2017/08/07(月) 07:28:08.80ID:PGcD2DjA
というかそもそも書籍を出す以上利益を見込むわけだけどRustの書籍が出たところで到底コストに見合う利益をあげられるとは思えん

474デフォルトの名無しさん2017/08/07(月) 08:02:25.73ID:ElcK6Dg+
唐突に小論文もどきが発生していて笑う
steveklabnikやcarols10centsは大学の教官ですらないだろうけれどそれは良いのか

475デフォルトの名無しさん2017/08/07(月) 08:15:17.32ID:rE42Biik
「監訳者」がいるが「訳者」が書いてない本って、やっぱそんなもんだろうね
あるいは機械翻訳をちょこっと手直ししただけとか
名前を表に出すって内容に責任を持つってことだから、名前重要よ

476デフォルトの名無しさん2017/08/07(月) 08:29:28.94ID:+587VfNE
Rustの入門書サイトなどおすすめありますか?

477 ◆QZaw55cn4c 2017/08/07(月) 08:31:32.26ID:Y4YBisBB
>>472
なにも今にはじまったことじゃない

>ゼミで原書を読ませて学生(院生?)たちに素訳を出させて
>適当につなぎ合わせて訳書として出版したのでは?

プログラミング言語C とてそうやって作られた、といわれている

478デフォルトの名無しさん2017/08/07(月) 08:32:44.78ID:ONon98mg
典型的な老害で笑える
ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ
Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない

479デフォルトの名無しさん2017/08/07(月) 12:03:28.98ID:NP3377Zu
>>476
公式

480デフォルトの名無しさん2017/08/07(月) 16:12:50.80ID:lxGlucTV
>>478
> 典型的な老害で笑える
> ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ

外資系や新興の出版社が出す本は訳書に限らず酷いのは昔から
編集担当者が日本語文のチェックを碌にしないしそういう新興出版社は人脈を持っていないゼロからのスタートだから良い訳者が無かったからね

問題は、近年は、老舗と言える理工系出版社から出されている訳書でも翻訳の質が急激に堕ちて来たことだ
その原因は翻訳の大衆化と訳者のモラルや使命感の低下にあると言ってるのだよ

> Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない

馬鹿ですか?
そんな高度で難解な技術書など存在しても極く一握りで、そんな極めて特殊な例を取り挙げて反論するなどナンセンス
そんなナンセンスで反論だと思ってる君の知性を疑うね

そもそもそんな難解な技術書を読んで理解できる人間も一握りだ
そんなレベルの人間ならば原書で読めるから翻訳する必要性も希薄

問題は、かつてならば普通の質で翻訳されていた難易度が平凡なレベルの教科書・技術書・学術書ですらまともな日本語訳でないのが量産されるようになったという点

481デフォルトの名無しさん2017/08/07(月) 17:27:07.42ID:PfKZEtLc
アカデミアを知ってる気取りの学生の臭いがプンプンするけど、そんなことを書き込んでいる暇があったら期末試験の勉強しとけよな

482デフォルトの名無しさん2017/08/07(月) 17:35:11.15ID:n0QtNiqf
>>472
> 英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した

それ何か根拠があって言ってんの? どうせお前の妄想だろ。
長々と言い訳せんで良いよ、消えろ。

483デフォルトの名無しさん2017/08/07(月) 17:35:27.75ID:8DeyRC3s
計算機学の正式な教育を受けたことがないからわからないけど,たとえば数学では大学2年までに学ぶべき科目の教科書は翻訳でも日本語教科書でも定番と呼べる本が出揃ってるんだよね
そんな中で使命感を持って初学者向けの本を訳したがる人はそうそういないでしょ
技術書界隈でもそんな現象が起こってるじゃないの

484デフォルトの名無しさん2017/08/07(月) 18:08:53.23ID:Y4YBisBB
>>483
解析学と線形代数の定番を教えてください、できればギャップの極度に少ないものを
翻訳じゃなくて、「解析概論」(高木)よりは親切なやつを
是非!

485デフォルトの名無しさん2017/08/07(月) 18:36:14.26ID:8DeyRC3s
杉浦本と斉藤本じゃあかんの(多変数の議論に飛躍が入るのはしょうがない)

486デフォルトの名無しさん2017/08/07(月) 18:36:16.49ID:n9zFQLuH
>>484
うちの親父の形見が解析概論なんだが

487デフォルトの名無しさん2017/08/07(月) 18:39:57.17ID:ElcK6Dg+
スレチ

488デフォルトの名無しさん2017/08/07(月) 19:45:52.18ID:8DeyRC3s
ごめん

489デフォルトの名無しさん2017/08/07(月) 20:05:48.41ID:8DHQ/UcZ
でもここ20年でネット利用者の情報リテラシーと日本の国際的な技術的地位はかなり落ちたよな

490デフォルトの名無しさん2017/08/07(月) 21:05:17.72ID:q/Po/zS7
近年は、技術書の日本語翻訳版が出るころには、次のメジャーバージョンがリリースされて買う気を失う傾向

491デフォルトの名無しさん2017/08/07(月) 21:56:28.43ID:JP8gCgB5
ITは元々レベル低かったんじゃない?ハードは強かったけどソフトはそんなに

492デフォルトの名無しさん2017/08/07(月) 23:32:35.06ID:tGwRq2k1

493デフォルトの名無しさん2017/08/07(月) 23:34:52.24ID:R3k5HOGA
lsコマンドに替わるコマンド「exa」とは
http://news.mynavi.jp/news/2017/08/07/203/

exaはRustで開発されたls系コマンド。
サイズが小さく高速に動作し移植性も高いという特徴がある。

494デフォルトの名無しさん2017/08/07(月) 23:58:47.36ID:LiwmU2BL
Rust関係なくてスマネ

>>491
全てとは言わないけど分野によっては世界トップクラスだったよ
1.コンピュータアーキテクチャ&オペレーティングシステム
 Windowsが走るコンピュータアーキテクチャを開発、販売していた数少ない国の一つ
 そのためにWindowsのカスタマイズも行っていた
2.日本語ワードプロセッサ
3.日本語入力変換システム
 この二つは語るまでもないよね。ユーザーは積極的に捨てたけど
4.低レベルの実装、解析
 かつては日本製のBIOSパッチとか野良BIOSとかがあった。このへんの技術は1とも絡むね

495デフォルトの名無しさん2017/08/08(火) 00:52:12.66ID:b/ztEhQD
どうでもいいけどexaって打ちづらいから普通にlsでええわってなる

496デフォルトの名無しさん2017/08/08(火) 01:39:41.54ID:Apkyawzp
>>495
エイリアスつかえば

497デフォルトの名無しさん2017/08/08(火) 22:30:57.70ID:0Gdz9Dwg
>>482
それ以前から理工学書を読んでいる人間ならば多くが同様の感想を持っているわけだが
読んでない人間は知らんがね
他人の投稿が気に入らず読みたくないならば、お前がこのスレを読まずに消えれば済むこと

498デフォルトの名無しさん2017/08/08(火) 22:33:19.04ID:tK7llXaf
幅広い理工学書の全てを知り尽くした>>497

499デフォルトの名無しさん2017/08/08(火) 22:39:16.48ID:B6tVSdcm
アカデミックこじらせおじさんかイキリ大学生か

500デフォルトの名無しさん2017/08/08(火) 22:54:17.33ID:XDy6h+kL
A. 20年前と今の理工学書を比べられる、2chのドマイナーな言語スレにいる
  ->アカデミック関係者の可能性
B. 自分の意見の論拠が薄い、的確なソースを出せない印象論
  ->実体験であるなら妥当
C. スレ違いの話を得々と語る、煽りに慣れていない
  ->コミュニケーションに難あり

>>497が本当に一流大学の教官である可能性は微粒子レベルで存在する
が、話の中身は与太話だし、何を言ったかだけを判断するなら塵芥と同じ扱いでよろし

501デフォルトの名無しさん2017/08/09(水) 09:35:51.16ID:mzNn5sYF
>>497
結局「根拠は無い」というレスして恥ずかしくないの?

502デフォルトの名無しさん2017/08/09(水) 20:42:37.62ID:jJFzyGYq

503デフォルトの名無しさん2017/08/09(水) 20:56:02.48ID:yH2dFN1n
>>493
FDの作者って亡くなったんだっけ

504デフォルトの名無しさん2017/08/09(水) 22:29:08.98ID:BGGA/pTO
1つのパッケージをインストールするだけでも時間が何十分とかかる
萎える〜

505デフォルトの名無しさん2017/08/09(水) 23:44:38.45ID:oO58YE7v
Rust 1.19におけるタグ無しのunionなどの追加
https://www.infoq.com/jp/news/2017/08/rust-119-released

506デフォルトの名無しさん2017/08/09(水) 23:50:55.47ID:AaV7WIeC
>>504 環境変数としてCARGO_TARGET_DIRを適当なところに置くと、以前にビルドしたcrateを利用してくれるよ
まあバージョンが違ったりしたらやり直しだから気休めにしかならんかもしれんが

507デフォルトの名無しさん2017/08/10(木) 09:16:01.74ID:hSTXQfAm
ライフタイムがよく分からんから、ライフタイム定義なしで動くプログラムは作れるようになったんだけど、
ここから必要に応じて参照使いまくりでライフタイムしまくりが出来るようになるにはどうしたらいいでしょうか?

508デフォルトの名無しさん2017/08/10(木) 11:35:07.02ID:+tFBM5sG
>>507 個人的な経験談だけど、ライフタイムが複雑で分かりにくいときはデザインから見直した方が良い場合が多い
単にコピーされるのを嫌って参照にすると駄目で、元の値の完全な従属物のときだけ参照を使うと大抵はうまくいく
メンバ変数間の参照はキツいので手を出さない、グラフとか所有権が複雑なのも自分じゃ作らずにライブラリにしておく、とか

509デフォルトの名無しさん2017/08/10(木) 13:04:49.06ID:qDPlaybB
rustで検索してもほとんどゲームの話題しか検索に引っかからなくて草
rustの日本コミュニティーないの?

510デフォルトの名無しさん2017/08/10(木) 13:14:22.08ID:v3fv+3Jb
ここじゃよ

511デフォルトの名無しさん2017/08/10(木) 13:29:36.14ID:jhaqJJbw
>>508
え、同じstruct内でメンバ変数間の参照は出来ないでしょ?

512デフォルトの名無しさん2017/08/10(木) 14:00:03.18ID:g9gtECZC
>>509
slackがある

登録済の人 -> https://rust-jp.slack.com
未登録の人 -> https://rust-jp.herokuapp.com/ 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)

513デフォルトの名無しさん2017/08/10(木) 18:33:30.12ID:DpOw+Ywo
おれもslack見つけるのすごく時間かかった

514デフォルトの名無しさん2017/08/10(木) 19:56:47.71ID:oX316LZB
>>511
unsafeなコードでゴニョゴニョしないと無理だね
RocketのFairingsなんかがゴニョゴニョしているものの例
https://github.com/SergioBenitez/Rocket/blob/9c9740f/lib/src/fairing/fairings.rs#L23-L38

515デフォルトの名無しさん2017/08/10(木) 20:06:16.94ID:5YNarUir
Arcでもダメなんだっけ?使う機会がないからTutorialで読んだきり見たことないけど

516デフォルトの名無しさん2017/08/10(木) 22:57:52.57ID:Ib9pl7ao
>>507
lifetimeはextentとregionをごちゃまぜにした語だから
lifetimeに言及してる部分は実際にはextentの話かregionの話に分かれる。
だからextentとregionを理解すればいいよ。
特にscopeとextentの区別がついてないやつが非常に多いからそこ気をつける。

517デフォルトの名無しさん2017/08/10(木) 23:40:15.73ID:+tFBM5sG
何かextentとregionを説明したものってある?

518デフォルトの名無しさん2017/08/11(金) 00:54:12.71ID:XZrwY8EL
>>517
extentはscopeとよく一緒に説明されるからそこら辺で検索。
言語によってはextentの事をlifetimeと呼ぶから
そういう言語のlifetimeを詳しく解説してる本とか当たってもいい。

ただし、rustのextentとregionを混同したlifetimeの事と
extentをlifetimeと呼ぶ文化におけるlifetimeの区別は
事前にちゃんと付けておいたほうがいいね。

rustのlifetimeは無駄にややこしくしてるから頑張って。

regionの説明はほとんど見かけないから近道は論文読む。
実装ならRTSJとCycloneくらいしかない。
region理解するならzone/arena(両方同じもの)とリージョン多相とリージョン推論も理解した方がいい。
あとrust固有の話だとrustのリージョン多相は部分多相も備えてる。

519デフォルトの名無しさん2017/08/11(金) 01:38:14.07ID:KiXisjXW
無駄に話を複雑にした挙句論文を読めときたか、少し前にいたイキリ大学生かよ

普通に公式のThe Rust Programming Languageを読んで現行Stringを使ってるなら&strにして組み直して見たら?
structのメンバに参照があると否応でも意識/理解せざるを得ないと思うぞ

520デフォルトの名無しさん2017/08/11(金) 05:26:24.27ID:oTwda99v
>>519
いざ言われてみるとstructで参照を持つのってどんなときか思いつかんのだけど

521デフォルトの名無しさん2017/08/11(金) 07:59:32.16ID:KiXisjXW
じゃあまずlifetimeについて考える前に、参照のメリット/デメリットについて考えような
公式サイトのドキュメント読んでこい

522デフォルトの名無しさん2017/08/11(金) 09:42:12.68ID:oTwda99v
c++だと参照保持すると生存期間管理ないからあぶないからやらない
スマートポインタ使う

そのへんの感覺の違いがまだなれない

523デフォルトの名無しさん2017/08/11(金) 13:31:10.83ID:wKLRpp+C
impl Traitがstableに入ったらどうなるか分からないけど、MapとかFilterとかがstructに参照+独自データって形になってるよ
あとはCharIndicesとか。実際のソースはちょいと違うけど元のデータへの参照+と現在位置っていう形になってる

524デフォルトの名無しさん2017/08/11(金) 23:09:32.05ID:wLCu2iAZ
昨日Slackに参加した人たちはお前らって認識で合ってる?

525デフォルトの名無しさん2017/08/11(金) 23:41:41.62ID:lyr4XUnD
ようはfat pointerでしょ

526デフォルトの名無しさん2017/08/12(土) 12:16:25.41ID:IzeoJwWv
コンパイル済みのバイナリパッケージを公開してほしいけどそういうのは実現可能ではない?

527デフォルトの名無しさん2017/08/12(土) 18:35:23.01ID:dKEWL6WP
例えばripgrepのコンパイル済みのバイナリパッケージ
https://github.com/BurntSushi/ripgrep/releases/tag/0.5.2

リリースビルドしたバイナリをzipなりでパッケージングすれば良いんでね

528デフォルトの名無しさん2017/08/12(土) 21:37:32.89ID:YDSzcZF8
Pathがすげー使いづらいんだけどなんでなの

529デフォルトの名無しさん2017/08/12(土) 22:36:26.03ID:4PGg+vlK
>>528
具体的にどのあたりが使いづらいと思っているの?

530デフォルトの名無しさん2017/08/12(土) 22:57:47.92ID:Lzx+EbMy
>>527
cargoにそんな感じのサブコマンドあった気がする

531デフォルトの名無しさん2017/08/13(日) 04:17:55.12ID:oa7ekDLN
PathはPath::new(&str)が参照を返すから使いづらい(参照を使いこなせない)
PathBuf使えば楽になったよ!

532デフォルトの名無しさん2017/08/13(日) 08:43:10.09ID:f+gGM+v+
>>529
返り値で返せないとか
PathBufすると変換いるしめんどい
引数の文字列のライフタイムで怒られる

とか

533デフォルトの名無しさん2017/08/13(日) 13:14:25.96ID:3acTHEGf
>>532
>返り値で返せないとか
>引数の文字列のライフタイムで怒られる
fn file_stem<'a, P: AsRef<Path>+?Sized>(path: &'a P) -> Option<&'a OsStr> {
let path = path.as_ref();
path.file_stem()
}
これじゃダメ?

>PathBufすると変換いるしめんどい
to_ownedやintoするのもめんどくさけりゃ、もう死んでしまえ

534デフォルトの名無しさん2017/08/13(日) 13:51:20.44ID:TkYKFb/H
こんな使いづらさでしょ
fn path<'a>(name: &str, ext: &str) -> &'a Path {
Path::new(&format!("{}.{}", name, ext))
// error[E0597]: borrowed value does not live long enough
}

まぁこれも死んでしまえ事例ではあるが
別所にOsStrの所有権(ライフタイム)がある場合に参照だけで済ますためのPathなので
動的に生成したOsStrでPath(参照)だけを返せると思うなよバーカというね

535デフォルトの名無しさん2017/08/13(日) 13:56:05.57ID:LyaOwRfj
>>533
いきなりドラえもんになるのやめろ

536デフォルトの名無しさん2017/08/13(日) 16:54:45.71ID:4uuls5D8
impl Traitっていつstableはいるんだっけ?

537デフォルトの名無しさん2017/08/13(日) 22:34:46.55ID:3acTHEGf
>>536
特に時期は決まってないはず
少なくとも次のstableではない

538デフォルトの名無しさん2017/08/13(日) 22:46:00.09ID:r6u293xs
owned valueとborrowed valueの区別がついてないだけじゃん

539デフォルトの名無しさん2017/08/13(日) 23:14:52.73ID:3acTHEGf
まあ、Sizedと!Sized (DST)の区別がつきづらいってのもあるとは思う
strとString然り、[T]とVec<T>然り、OsStrとOsString、トレイトオブジェクト、そしてPathとPathBuf……

540デフォルトの名無しさん2017/08/14(月) 01:43:35.30ID:tyQzDLaM
アマグラマの書き散らした名前空間みたいできついな

541デフォルトの名無しさん2017/08/14(月) 07:06:13.75ID:HJwH3qkh
>>538-539
それらが区別はついても
その上でライフタイムを理解してないと使いづらいという話じゃないの

>>534なんかはPathがborrowed valueで!Sizedなのは分かった
それはそれとしてPathのまま返すにはどうしたらいいの?って
ライフタイムをきちんと理解してない初学者は躓くわけじゃん

542デフォルトの名無しさん2017/08/14(月) 09:35:01.13ID:59zJ3Di9
>>541
>Pathのまま返すにはどうしたらいいの?
ライフタイムとか関係なく、!Sizedな型はそのまま返すなんてことはできない
コンパイルタイムにサイズが分からないからランタイムでサイズ情報を持つfat pointer経由でしか扱えない
https://doc.rust-lang.org/book/first-edition/unsized-types.html
所有権を持った値として返したいのならそのownedなバージョン(今回はPathBuf)かボックス化された状態(PathBuf::into_boxed_pathで得たBox<Path>)を使うしかない

ああ、>>532の「返り値で返せないとか」の意味がようやく分かった。確かにその通りだ。別の型で返す必要がある

543デフォルトの名無しさん2017/08/14(月) 09:54:46.27ID:HJwH3qkh
ええぇ、今までPathが返り値で返せないの意味を分かってなかったのかw
!Sizedな型は+Sizedとかで型サイズを固定させて返すとか頑張るんでしょ、Pathは出来なかった気がするけど

PathBufはDeref type Pathがあるからまぁなんとか
str, String等の命名規則がStr, StrBufじゃないのは気に入らん、みたいなのは分からいでもない
なんか歴史的背景があるんだろうけど、考えるのが面倒でそのまま受け入れてる

544デフォルトの名無しさん2017/08/14(月) 09:56:58.67ID:3NSMgreF
習いたての頃に[u8]を引数に取ろうとして躓きまくったのを思い出す
そういやこれって何でわざわざコンパイラー組み込みでファットポインターを定義してるんだ?
struct Path<'a> { start: *mut (), end: *mut (), marker: PhantomData<&'a PathBuf> }じゃダメなのか?

545デフォルトの名無しさん2017/08/14(月) 10:30:03.78ID:59zJ3Di9
>>544
それだとimpl AsRef<Path> for PathBufとかが出来ない

546デフォルトの名無しさん2017/08/14(月) 10:53:05.45ID:fyv2iRf4
PathがSizedじゃないってのが初学者的にめんくらったわ
strと同じだと思えば理解できた

547デフォルトの名無しさん2017/08/14(月) 10:54:47.32ID:fyv2iRf4
>>537
nightlyって1.21って出るけどそこに入るわけじゃないのね

548デフォルトの名無しさん2017/08/14(月) 15:20:15.52ID:xd4YqYEd
>>542
いかにもRust FAQに載ってそうな話題だと思ったが、ちらっと見た感じ、載ってないな
和訳も1割ぐらいしか進んでないし

549デフォルトの名無しさん2017/08/15(火) 01:22:49.60ID:Kx+225Ge
>>541
>>542の言うとおりそこはライフタイム関係ないから
デフォルトがムーブセマンティックスで、
借用はsubstructural type systemに守られてるってこと覚えたらライフタイム知らなくても分かる。

>>547
特に決まってないよ。
nightlyの途中でマージされたのがいきなり次のstableに入ることもあるし。

550デフォルトの名無しさん2017/08/15(火) 05:20:52.55ID:qX6sO+hu
&Pathを関数戻り値で返せないのにライフタイム関係ないって子たちはエラー内容見えないのか
// error[E0597]: borrowed value does not live long enough

サマリーだけでlifetime関係ないって思い込んでるならE0597の詳細見て理解しような
https://doc.rust-lang.org/error-index.html

551デフォルトの名無しさん2017/08/15(火) 05:38:14.01ID:tN8D0FqC
ちょっと聞きたいんだけどrustのマクロって裏でどういうコードが生成れてるか分かる機能ってあります?

Cのプリプロセッサなら生成コードが出力できるけど、、、

552デフォルトの名無しさん2017/08/15(火) 09:18:04.23ID:cM0t4sQL
Webにいるプログラマって、マサカリとかに代表されるように人格が狂ってる人多いよね。正しければ正義的な。
2ちゃんはさらにひどいけど、そうじゃなくても。
実社会でプログラマの地位が認められてないからかなぁ。

553デフォルトの名無しさん2017/08/15(火) 09:27:06.48ID:O7/Y4aw2
>>550
&PathじゃなくてPathを返すって話だよ
Path: !Sizedだから参照を経由しない形では返せない(fn() -> Pathと書けない)というお話ね
>error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path`

こういう流れを見ると本当にDSTは理解されづらいんだなあと思う

>>551
Nightlyで、rustc -Z unstable-options --pretty=expanded foo.rs
これのラッパとしてcargo-expandというものもある
https://github.com/dtolnay/cargo-expand

554デフォルトの名無しさん2017/08/15(火) 09:32:50.69ID:qX6sO+hu
Path:newが&Pathを返すというstdライブラリ仕様を言及してたのかよwww
そりゃ失礼、そんな所よりそれをどうやって使うかを話してるつもりだったわ

555デフォルトの名無しさん2017/08/15(火) 17:22:31.52ID:bUHuOZJE
newがPathを返すと思ってたわ

あはは

556デフォルトの名無しさん2017/08/15(火) 17:26:22.04ID:L9Yq17PV
あはは

557デフォルトの名無しさん2017/08/15(火) 18:11:07.59ID:qRVErxIb
あはははは

558デフォルトの名無しさん2017/08/15(火) 18:12:13.59ID:wgr8KXHg
もしかして他にもnewで&返すのあるの?

559デフォルトの名無しさん2017/08/15(火) 18:29:55.70ID:MDS+g102
ワロス

560デフォルトの名無しさん2017/08/15(火) 18:34:48.29ID:O7/Y4aw2
>>558
標準ライブラリのパブリックな型ではOsStrくらいじゃないかな
from系の関数も含むのなら、std::slice::from_raw_partsとかstd::str::from_utf8とかもある

標準ライブラリ外のクレートでもstrに対するラッパとかでそういうのがあった気がする

561デフォルトの名無しさん2017/08/16(水) 01:13:42.55ID:lhJRoj0R
>>554
オレも値受け取った後の話だと思ってたわ

562デフォルトの名無しさん2017/08/16(水) 01:18:30.66ID:lhJRoj0R
ごめん言い忘れたぜ。
>> 558
fn new<S: AsRef<T> + ?Sized>(s: &S) -> &Self
に一般化出来るの全部。transmuteしてるだけだもん。

563デフォルトの名無しさん2017/08/16(水) 01:35:45.19ID:Vj5dC5z1
>>562
これ系の実装がやたら低レベルなのってどうにかならんもんなのかねえ……

564デフォルトの名無しさん2017/08/16(水) 03:04:04.19ID:Tcbyhi06
とは言え、Pathみたいにnewtypeパターンでnewtypeの元の型の参照からnewtypeの型の参照を得るケースなんてそう多くないからな(というかDSTくらいでしかやらない)
transmuteもやむなしだろう

565デフォルトの名無しさん2017/08/16(水) 04:03:28.36ID:1RQ5dDrL
newなんて普通過ぎる名前が悪い
sliceよろしくfromにしておけばよかったんだ

566デフォルトの名無しさん2017/08/16(水) 07:12:51.51ID:Ip1XZB1d
>>551
https://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/macros.html#マクロをデバッグする

> マクロの展開結果を見るには、 rustc --pretty expanded を実行して下さい。

567デフォルトの名無しさん2017/08/16(水) 10:55:53.36ID:Agtz0DvI
IntelliJ Rust Pluginのエディタが型表示をヒントとして表示するようになってクッソウゼェw
一瞬便利かなと思ったけどやり過ぎだと思ってオフにしたった
futuresでチェーンしてると型名が長すぎて実態のコードが画面外に追いやられてたわ

変数名にフォーカスしたら型名表示くらいのFRやPRは出てないものかしら

568デフォルトの名無しさん2017/08/16(水) 11:05:25.77ID:s5nUB7nh
>>567
その機能を持ってきたJavaだと型名が短いからいいんだけどね

569デフォルトの名無しさん2017/08/16(水) 11:50:59.59ID:11a+64I1
みんな何でRust書いてるの?IntelliJ派?

570デフォルトの名無しさん2017/08/16(水) 17:55:39.36ID:5vWhS1NV
emacs

571デフォルトの名無しさん2017/08/16(水) 17:56:12.79ID:Vj5dC5z1
Vim一択

572デフォルトの名無しさん2017/08/16(水) 17:58:42.50ID:5vWhS1NV
Path(PathBuff)に拡張子を追加するにはどしたらいいすか

f.txtをf.txt.zipにするてきな。

573デフォルトの名無しさん2017/08/16(水) 18:27:36.87ID:ObQbU6V8
ggrksなので雑に答えてみる
let path = Path::new("f.txt");
let new_name = format!("{}.{}", path.to_str().unwrap(), "zip");
let new_path = Path::new(&new_name);
print!("{:?}", new_path);

これ以上雑な実装はねーだろ(チラッチラッ

574デフォルトの名無しさん2017/08/16(水) 18:47:37.19ID:U6ziTncO
やっぱそーなっちゃうんですねー。
ありがとうございました。
さすがにこれ以上エレガントなのはないですね

575デフォルトの名無しさん2017/08/16(水) 18:48:57.93ID:Vj5dC5z1
元から&mut Stringや&mut OsStringを持っていてそれを&Pathに変換するような場面なら、素直にStringやOsStringの時点でpushとかで加工した方が手軽だと思う
OwnedなPathBufしか持っていないのなら一旦OsStringに変換してから拡張子を足してPathBufに戻す
&Pathや&strしか持っていないのなら、そもそもその状態では書き換えようがないからto_ownedする
&mut PathBufしか持っていないのなら、多分設計が良くない。&mut OsStringを受け取れるようにできないか検討しよう

576デフォルトの名無しさん2017/08/16(水) 19:03:14.68ID:PvRs7uXf
エディタわりとバラバラなのな
俺はVimだけど何となく気になった

577デフォルトの名無しさん2017/08/16(水) 19:22:40.51ID:ObQbU6V8
来るかなぁと思ってたが、案の定エレガントじゃない回答(>>575)がきたぞw

卓上で語るのが好きでコードに落とせない子なんだろうなぁ
>>575はそのバリエーションで実装に落としてあげるとエレガントな回答になるからちょっとやってみ?

578デフォルトの名無しさん2017/08/16(水) 19:42:34.81ID:Vj5dC5z1
>>577
1番目
fn f(path: &mut OsString) -> &Path {
path.push(".zip");
Path::new(path)
}
let mut path = "f.txt".into();
assert_eq!(Some("f.txt.zip"), f(&mut path).to_str());

2番目(assertionは省略)
fn g(path: PathBuf) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}

3番目
fn h(path: &Path) -> PathBuf {
let mut path: OsString = path.into();
path.push(".zip");
path.into()
}

ついでに4番目(実際に使うべきでないが)
fn i(path: &mut PathBuf) {
unsafe {
(*(path as *mut _ as *mut OsString)).push(".zip")
};
}

579デフォルトの名無しさん2017/08/16(水) 19:56:17.83ID:YfsrWVwz
めちゃくちゃエレガントになったな(白目)

580デフォルトの名無しさん2017/08/16(水) 20:11:43.78ID:ObQbU6V8
1〜3がすごく無駄なバリエーションでワロタ
まとめてこれでいいじゃん, 分けて挙げた意味あるのかいな
let path = f(PathBuf::from("f.txt"));
let path = f(Path::new("f.txt"));
let path = f(OsString::from("f.txt"));
fn f<P: AsRef<Path>>(path: P) -> PathBuf {
let mut path: OsString = path.as_ref().into();
path.push(".zip");
path.into()
}

581デフォルトの名無しさん2017/08/16(水) 20:16:19.25ID:eiUsQzcr
cloneする奴としない奴を同列に語るのはどうなんだって感じだがな

582デフォルトの名無しさん2017/08/16(水) 20:18:00.24ID:ObQbU6V8
4を頑張れば>>573を超える雑な実装にできる可能性がありそうだけど無理かなぁ
まぁ無理か・・・

583デフォルトの名無しさん2017/08/16(水) 20:27:22.87ID:eiUsQzcr
つまり、雑さ選手権であると言う事を見落とした事が>>575の敗因か()

584デフォルトの名無しさん2017/08/16(水) 20:36:20.89ID:8AGyDDIv
PathBuf::pushじゃいかんのか

let buf = path.to_parh_buf();
buf.push(".zip");
buf.as_ref()

一番良いのはPathの元になったOwnedな型にpushすることだと思うが

585デフォルトの名無しさん2017/08/16(水) 20:36:47.76ID:8AGyDDIv
let mut にするの忘れた

586デフォルトの名無しさん2017/08/16(水) 20:38:34.55ID:Vj5dC5z1
let mut buf: PathBuf = "f.txt".into();
buf.push(".zip");
println!("{:?}", buf); // => "f.txt/.zip"

587デフォルトの名無しさん2017/08/16(水) 20:38:39.16ID:ObQbU6V8
>>581
関数f内でのPath/PathBufのメモリ確保処理に差はないから必要なら後からas_pathでもしたらいいんじゃね
むしろas_refやintoのオーバーヘッドを気にすべきかのう, 100万回くらいループしたら1秒くらいの差が出るかも?

588デフォルトの名無しさん2017/08/16(水) 20:39:36.49ID:8AGyDDIv
失礼、PathBuf.pushだと/がついてしまうのか

589デフォルトの名無しさん2017/08/16(水) 20:44:06.60ID:kNGkTZBw
だれも>>550に肝心なこと言ってやらないのな。

>>550
関数が&Path返すだけじゃE0597はでねぇのよ。たとえば>>534のは

>fn path<'a>(name: &str, ext: &str) -> &'a Path {
>Path::new(&format!("{}.{}", name, ext))
>}

&format!("{}.{}", name, ext)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

この中でnameとextをdropするからE0597出るんだよ。
まあ、罠だけど。ただの面倒くさいっていう見本みたいだし。

借用を関数の中で結合して返すってのが潜在的に危険だから
やり様は色々あるけど↓が一番簡単。
https://play.rust-lang.org/?gist=e4937a92f292952a620eaa7bffa51c21&version=stable

>>563
無理、rustはこういう型シノニムを構造体でラップしたfat pointerとして定義するからtransmuteは必要になる。
こういうnewtypeがやりたいのはunsafe消すこと。
名前からtransmuteしてるようには見えないから名前が悪いのよ。

>>565
from/intoは使い方決まってる

590デフォルトの名無しさん2017/08/16(水) 20:45:56.00ID:eiUsQzcr
>>587
Path::newやas_ref、intoは単に型システム上の操作であってnoopなのでは(検証してない)
だってPathやらPathBufやらはOsStrやOsStringに対する単なるnewtypeでしょ

591デフォルトの名無しさん2017/08/16(水) 20:54:34.33ID:8AGyDDIv
let mut buf = PathBuf::from("hoge.txt");
let mut ext = buf.extension().map(OsString::from).unwap_or(OsString::new);
ext.push(".zip");
buf.set_extension(&ext);

592デフォルトの名無しさん2017/08/16(水) 21:03:54.32ID:8AGyDDIv
>>590
Path::into::<PathBuf>はstr::into::<String>と同じでメモリアロケーション走るはず
as_refはほぼnoop

593デフォルトの名無しさん2017/08/16(水) 21:07:58.66ID:ObQbU6V8
fn f<T: Trait>(t: T) のトレイトによる分岐はnoopだけど、as_ref, intoはnoopとは限らんよねぇ
impl AsRef, Intoの実装でゴチャゴチャ処理するモノもあるだろうし

Path, PathBufに限ってはinnerを返すだけっぽいからコンパイラによる最適化でnoopになるかな
2,3回前のリリースでもコンパイラ最適化を抜本見直ししてたし、どうなってるかワカラン(自分も検証する気ない)

594デフォルトの名無しさん2017/08/16(水) 21:51:24.68ID:8AGyDDIv
AsRefはcheapな型変換を実装するためのtraitだし、as_refは常にほぼnoopだと言って良いと思う
https://doc.rust-lang.org/std/convert/trait.AsRef.html

595デフォルトの名無しさん2017/08/16(水) 22:57:30.93ID:Agtz0DvI
雑に拡張子生成部のワンライナーを目指した(改行がないとは言っていない
let new_ext = ".zip";
let mut buf = PathBuf::from("hoge.txt");
let ext = buf.extension()
.map(OsString::from).map(|mut ext| {ext.push(new_ext); ext})
.unwrap_or(new_ext.into());
buf.set_extension(&ext);

596デフォルトの名無しさん2017/08/17(木) 18:40:58.78ID:8HfS9wXv
std::path::Componentsのimpl AsRef<Path>みたいな地雷もいるけどな! > as_refがnoop
地雷を踏み抜かないように使いたい所存

597デフォルトの名無しさん2017/08/18(金) 18:00:28.47ID:XVXUXs+1
メンバ変数の参照を返すイテレータモドキ
https://play.rust-lang.org/?gist=42ce623d69717a8acdc7736d6d624f60

これに Iterator トレイトを実装させたいのだが、関連型 Item の定義が上手く行かず困っている。
関連型について
type Item = <&T>; とするとライフタイムが必要だと出る。
しかし
impl<'a, T> Iterator for Foo<T> {
 type Item = Option<&'a T>;
...
とか
PhantomData 使ったりしてみた https://play.rust-lang.org/?gist=5b127531f2b93a1a9a9143de86ad2340
けど通らない。

どうすれば良いのだろう?

598デフォルトの名無しさん2017/08/18(金) 18:05:55.69ID:XVXUXs+1
ミス。
> type Item = Option
の Option<> は要りません。

599デフォルトの名無しさん2017/08/18(金) 18:07:34.29ID:LVQKp7rQ
>>597
impl<'a, T> Iterator for &'a Fooじゃダメな理由とかある?

600デフォルトの名無しさん2017/08/18(金) 18:17:10.82ID:XVXUXs+1
impl<'a,T> Iterator for &'a Foo<T> {
type Item = &'a T;
fn next(&mut self) -> Option<&T> {
Some(&self.x)
}
}

これはこれで error[E0495]: cannot infer an appropriate lifetime for lifetime parameter in generic type due to conflicting requirements
エラーが出ます。

601デフォルトの名無しさん2017/08/18(金) 18:20:10.90ID:LVQKp7rQ
>>600
nextの戻り値のlifetimeが不足している
Option<&'a T>にしなくちゃ

602デフォルトの名無しさん2017/08/18(金) 18:35:09.68ID:XVXUXs+1
>>601
おお、出来ました! ありがとうございます。

a.next() ではなく (&a).next() となってしまうのが心残りです。
関連型 Item のライフタイム問題が無ければ素のコードで行けるのに、
何故こんなことになってしまうのか……

603デフォルトの名無しさん2017/08/18(金) 19:24:37.05ID:LVQKp7rQ
>>602
Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある
>>597のコードで動かないのは、Iterator::nextのレシーバのライフタイムが匿名だからself.xが後で書き換えられるのを防げないことによるものだろう
Iteratorトレイトの仕様上、仕方がない

604デフォルトの名無しさん2017/08/18(金) 19:31:38.24ID:zUkt3uOb
ていうかあんまり本質的な問題ではないけどtakeを使うべき場面だな

605デフォルトの名無しさん2017/08/18(金) 23:23:26.21ID:68PBtc02
Rustの2017年ロードマップの進捗状況
https://www.infoq.com/jp/news/2017/08/rust-2017-roadmap-six-months

606デフォルトの名無しさん2017/08/19(土) 00:07:19.34ID:gC1uMiLY
>>592-594
変換系の命名規則はコストで決まってる。
https://rust-lang-nursery.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv

ただまだ質が悪いから準拠してこうぜ!ってのが2017のロードマップ。

607デフォルトの名無しさん2017/08/19(土) 04:06:47.11ID:eOOMhS38
何で皆さんそんなにコピーがお嫌いなんですか

608デフォルトの名無しさん2017/08/19(土) 08:31:32.98ID:BpKw1nHe
Copyは良いがCloneは避けたい
Cloneどんどんやって良いようなプログラムならrustで書かなくても良い

609デフォルトの名無しさん2017/08/19(土) 10:50:48.03ID:5Hm4My/o
>>603
> Vecとかみたいに、&'a Foo<T>をラップするstruct Iter<'a, T>とfn iter(&self) -> Iter<'a, T>を作った方がエルゴノミクス的に良さそうではある

Slice のコードを参考にしてみた結果、Some(&v) じゃなくて Some(&*ptr) という unsafe な手法ですが、こんな感じで上手く行きました。
https://play.rust-lang.org/?gist=639045def9c07026e8b6b0267a9dae98

ありがとうございました。

610デフォルトの名無しさん2017/08/19(土) 10:56:56.32ID:i5Fk1Iv8
copyとcloneの違いって?

611デフォルトの名無しさん2017/08/19(土) 14:19:36.24ID:zLcrLAmh
error-chainのまともなサンプルがないんだけど、みんな使ってないのかな

612デフォルトの名無しさん2017/08/19(土) 14:23:54.00ID:FnHzgZW7
crates.ioのreverse dependenciesが10ページを超えているようなcrateを「みんな使ってない」はずがない
GitHubのexamplesでなんやかんや事足りるからなあ

613デフォルトの名無しさん2017/08/19(土) 14:28:59.69ID:IJZoKA+S
「Notepad++」v7.5が公開、“LaTeX”や“Rust”、“Erlang”など19言語をサポート
http://forest.watch.impress.co.jp/docs/news/1076002.html

614デフォルトの名無しさん2017/08/19(土) 15:21:50.70ID:sXEKiJ8x
error-chainてメインでしか使えない?

615デフォルトの名無しさん2017/08/19(土) 15:24:47.15ID:sXEKiJ8x
日本語の記事もほぼないし

616デフォルトの名無しさん2017/08/19(土) 15:47:44.15ID:nyFhS1vK
テキストエディタも高機能な奴は起動が遅かったり動作が重い印象がある

617デフォルトの名無しさん2017/08/19(土) 16:40:03.65ID:pL/zMRBl
>>611
error-chain、なんか使いにくそうと勝手に思い込んでる

618デフォルトの名無しさん2017/08/19(土) 16:53:30.74ID:FnHzgZW7
>>615
むしろ、Rust界隈でまともな日本語記事とやらがどれだけあるのやら……

619デフォルトの名無しさん2017/08/19(土) 23:55:33.96ID:nyFhS1vK
>>613
Notepad++ってちょっと重い。SakuraEditorより重いと思う。あとSDIで使えなかった気がする

620デフォルトの名無しさん2017/08/20(日) 00:02:30.31ID:oGIfVBlS
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い

零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと

これならJIETから3次でいったほうがいいな

446非決定性名無しさん2017/08/02(水) 22:12:48.95

JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした

473非決定性名無しさん2017/08/03(木) 15:21:30.71

JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。

372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ

それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト

自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

621デフォルトの名無しさん2017/08/20(日) 15:00:56.50ID:pZQ2byHx
標準的なステーメントや型、メソッドなどがずらずら並んだ資料とかないのかな
エディタ用に定義ファイルを作りたいのだがLearning的なページだと全部載っていなくて・・・

622デフォルトの名無しさん2017/08/20(日) 16:16:49.80ID:T53roUwE

623デフォルトの名無しさん2017/08/20(日) 21:48:27.38ID:tw1yQ9/1
いくつか↓のコードについて質問させてください。
https://play.rust-lang.org/?gist=b2fe59eb7aee706b6acb67bb9709967f&;version=stable

1. PartialEqが実装されていないというエラーが出てしまうのですがどう対応したら良いのでしょうか?
試しに
#[derive(PartialEq)]
pub trait Serialize {
としたところerror: `derive` may only be applied to structs, enums and unionsというエラーが出てしまいました。traitにPartialEqを持たせることはできないのでしょうか?

2. error[E0277]: the trait bound `std::vec::Vec<&Serialize>: std::iter::FromIterator<Value<'_>>` is not satisfiedというエラーですが、これはどのようなコードにすれば良いのでしょうか?解決方法が全く思い浮かびませんでした。


ちなみに、enumでArray(Vec<Value>)ではなくArray(Vec<&'a Serialize>)となっている理由は外から型?を追加したいためです。

よろしくお願い致します。

6246232017/08/20(日) 22:15:56.31ID:tw1yQ9/1
すみません、少し修正したものをアップしました。よろしくお願い致します。
https://play.rust-lang.org/?gist=e29af50f281802f700c0bdf8d676da54&;version=stable

625デフォルトの名無しさん2017/08/20(日) 22:56:17.35ID:JGkv/tSR
トレイトと型、ライフタイムパラメータと型パラメータの区別が付いてないような、

pub enum Value<'a> {
Nil,
Array(Vec<&'a Serialize>),
}
これとか、書くなら
pub enum Value<'a, T> where T: 'a + Serialize, {
Nil,
Array(Vec<&'a T>),
}
こうでは?

> impl<'a> Serialize for Value<'a>
...

626デフォルトの名無しさん2017/08/20(日) 23:13:22.65ID:T53roUwE
一応impl<'a> PartialEq for &'a Serializeはできる
クソの役にも立たないからやるべきでないが

6276232017/08/21(月) 01:00:32.98ID:FwjdF0gP
>>625
ありがとうございます!
頂いたpub enum Value<'a, T> where T: 'a + Serialize, {を入れてみたところ以下のようなエラーになりました
error[E0243]: wrong number of type arguments: expected 1, found 0
--> src/value/serialize.rs:10:24
|
10 | impl<'a> Serialize for Value<'a> {
| ^^^^^^^^^ expected 1 type argument

この場合Serializeを実装した型を追加で指定しないといけないと思うのですが、例えば
struct UUID {
uuid: u128,
}
impl Serialize for UUID {
}
こんな感じの型をライブラリ使用者が外部から追加しようとした場合、教えていただいた書き方だとどのように指定すれば実現できるのでしょうか?
あと最後の…(省略されてる?)が気になります…

>>626
そんな書き方もできるんですね!参考になります!

628デフォルトの名無しさん2017/08/21(月) 01:35:15.12ID:bqQguu/k
>error[E0243]: wrong number of type arguments: expected 1, found 0
この場合、impl<'a, T> Serialize for Value<'a, T>としなければならない。というかエラーメッセージが言っていることそのもの

ところで、Value::Arrayには複数種類の型の値を入れることを想定している?
だとしたら>>625のような型パラメータによる手法は適さないと思う
実現したい事が分からないから具体的な提案はできないけれど、とりあえずArrayのなかに&SerializeやT: Serializeを持たせる以外の方針が必要だと思う
例えば、serde_json::ValueだとArrayの中にT: Serializeでなく、Valueを入れ子に持っている

6296232017/08/21(月) 02:32:19.49ID:FwjdF0gP
>>628
> ところで、Value::Arrayには複数種類の型の値を入れることを想定している?
はい、いろんな型を入れたいです。
今現在↓みたいになっていて(コンパイルできない)改行が多くて書き込みできなかったので改行を減らしてあります。
pub enum Value<'a> {
Nil, Bool(bool), Int8(i8), Int16(i16), Int32(i32), Int64(i64), UInt8(u8), UInt16(u16), UInt32(u32), UInt64(u64),
Float32(f32), Float64(f64), Binary(Vec<u8>), String(String), Array(Vec<&'a Serialize>), Map(HashMap<String, &'a Serialize>),
}
これをライブラリとして公開して、そのライブラリの使用者が
struct UUID {
uuid: u128,
}
impl Serialize for UUID {
fn serialize(&self) -> Vec<u8> {
unimplemented!()
}
}
こんな感じにSerializeをUUIDに実装すればArray(Vec<&'a Serialize>)の中に入れられるのではないかと思い実装しました(だめだったのですが…)
serde_jsonも参考にしたのですがArrayの中にValueを入れてしまうとライブラリの使用者が型を追加できないのではと思って上の感じにしました。
何かいい方法はないのでしょうか?

6306232017/08/21(月) 02:40:57.36ID:FwjdF0gP
https://github.com/3Hren/msgpack-rust/blob/master/rmpv/src/lib.rs#L416
このライブラリだとValueの中にExtを作ってその中にシリアライズ済みのデータを入れてるみたいですね。
確かにこれならいけそうですが、Valueの中にシリアライズ済みのデータを入れるのがなんだかスッキリしないです…
これ以外には方法はないのでしょうか?

631デフォルトの名無しさん2017/08/21(月) 05:08:14.26ID:G0wb4QJd
(ageるなウザい)

6326232017/08/21(月) 15:33:43.28ID:3Zba4J1M
>>631
すみません、sageのこと忘れてました…

633デフォルトの名無しさん2017/08/21(月) 16:25:46.95ID:oGU2m9lq
rustの使用者は型をガチガチに固めて型安全であることを至上としてる風があるから
利用者が自由に型を追加できることの方にスッキリしない印象を持つのではなかろうか
例えば、hyperのHTTP Headerとかね

それでも尚そうしたいのであればrmpvなやり方は正しいんじゃないのかね

6346232017/08/21(月) 21:07:50.83ID:3Zba4J1M
>>633
なるほど
rmpv方式でやってみようと思います!

635デフォルトの名無しさん2017/08/21(月) 21:48:43.99ID:rYDUfKH7
ライブラリを作る側はゆるゆるにする、使う側はギチギチにする、だったかな

636デフォルトの名無しさん2017/08/22(火) 02:48:14.20ID:womi0ii/
何の言語における誰の格言だい?
Rustライブラリの話じゃないよな, Rustはno_std + unsafeでもしないと作る時すらギチギチだものな

637デフォルトの名無しさん2017/08/22(火) 09:17:41.34ID:C9KUE8jE
https://doc.rust-lang.org/src/core/iter/mod.rs.html#839

default とかいう謎のキーワードがあるけど、これ何だ?

638デフォルトの名無しさん2017/08/22(火) 09:30:00.19ID:DDLonIhk

639デフォルトの名無しさん2017/08/22(火) 09:35:30.79ID:deDFrfsy
rustconfのまとめ誰かたのむ

640デフォルトの名無しさん2017/08/22(火) 09:41:20.78ID:C9KUE8jE
>>638
ありがとう。
本家ソース読んでると、ドキュメント化されてない文法とか現れて時々困惑する。

641デフォルトの名無しさん2017/08/22(火) 23:09:44.08ID:SJLsCwn3
impl-specializationってfor T以外に具象型でも出来たのか。パラメタ型が現れればいいのか。

>>640
まだRFC #1331が出来てないから正式な文法は存在しない。
自分が使ってるrustcのソース読む以外に文法知る術はないよ。

642デフォルトの名無しさん2017/08/23(水) 02:50:24.84ID:4QoHymGs
チルダ記号~、owned pointer が廃止されてから余ってるけど、何かに使わないのかね

643デフォルトの名無しさん2017/08/23(水) 07:25:27.68ID:B+nj/ke1
オフラインで開発するときにどうすべきかを書いたドキュメントってないの?
インストール方法とかライブラリの取得・展開方法とか

644デフォルトの名無しさん2017/08/23(水) 07:54:23.48ID:4QoHymGs
https://www.rust-lang.org/ja-JP/other-installers.html にインストーラーあるだろ。
あるいはレポジトリからソース落として ./configure; make; sudo make install で終わらんか?

依存ライブラリは、Cargo.toml で
[dependencies]
foo = { git = "https://github.com/hoge/foo.git"; }

の代わりに、https://github.com/hoge/foo をクローンして来て、
[dependencies.foo]
path = "../foo"
こんな感じでパスを与えれば良い。

645デフォルトの名無しさん2017/08/23(水) 09:46:49.23ID:OBNmODWh
最近のpythonではpipでコンパイル済みのバイナリをダウンロードしてインストールしてくれるけど
rustの世界でもこうなりませんかね

646デフォルトの名無しさん2017/08/23(水) 12:24:06.11ID:18+Jkbm8
前も同じ質問してたな
rpmやbrew, windows storeにバイナリをアップすればいいんじゃないの
ユーザ向けのバイナリ配布環境なんてrustやcargoが整備するモノじゃないでしょ

どうせrustやcargoを扱うのは開発者で
開発者はバイナリよりソースの方が色んな面で助かる

647デフォルトの名無しさん2017/08/23(水) 13:30:39.91ID:H3GKgLxU
cargoにオフラインモードってないの?

648デフォルトの名無しさん2017/08/23(水) 23:29:11.08ID:iIVYU9Hy
>>643,647
めんどくせぇ話ししてんな。

alexcrichtonが頑なに拒み続けてるからオフラインでcargoは*まとも*につかえね。
依存crateが全部ローカルにあれば問題ないけど、そもそも外部crateがcargoに
依存してるせいで結局、ネットワークにアクセスする。それにapache archivaみたいなのが
rustにはないからローカルで管理もできんし、cargo-vendorもcargo-local-registryも開発止まってる。
現状、依存グラフの全てを事前にローカルにダウンロードするツールがない。

cargo側のindexもcargo.lock更新する必要もないのに
ネットワークアクセスしてオフラインでクラッシュする問題は
そろそろ落ち着いてきたけど、rustcの依存関係調べるあたりが
腐ってるからそっちも影響してくる。これの問題は今、
インクリメンタルコンパイル実装の障害になってるからどうにかしてる最中。

海外は日本と違って無線LAN環境普及してるからか、
ちょっとオフラインになっただけでテストすら走らせられなくなったりでissue飛びまくってんだけどね。
結局replaceも糞でpatchに置き換わるし。

649デフォルトの名無しさん2017/08/24(木) 00:17:41.78ID:l7HQ+RMc
自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑
rustc直打ちなら問題ないけど非標準のCrateをどうするんだという話に

650デフォルトの名無しさん2017/08/24(木) 00:28:13.68ID:31vrvgnR
Frequently Asked Questions
http://doc.crates.io/faq.html#how-can-cargo-work-offline
> How can Cargo work offline?
> ...(中略)
> As of Rust 1.11.0 Cargo understands a new flag, --frozen, which is an assertion that it shouldn't touch the network.

651デフォルトの名無しさん2017/08/24(木) 02:10:25.35ID:2y1G8HO4
モバイルもさることながらオフライン限定サーバとかあるしなあ

652デフォルトの名無しさん2017/08/24(木) 09:10:11.03ID:7OYe0+S4
よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな
海外っつーか米国は半端に無線LANが整備されまくってるから大変そうだなぁとは思う

653デフォルトの名無しさん2017/08/24(木) 10:02:40.03ID:N2QX0p2s
>>652
> よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな

節子それはオンラインだ。
飛行機に乗ってる時とかはそれなりの時間オフラインになりそう。

654デフォルトの名無しさん2017/08/24(木) 10:56:17.70ID:yyGwhDVO
>>653
清太よ、>>649の「自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑 」へのレスだよ
この「モバイルで開発」はテザリングを指しているのではないのであれば、どういう環境のこと言ってるんだろうね

655デフォルトの名無しさん2017/08/24(木) 11:36:23.74ID:nec4MnrL
移動中という状態を除外したら移動体通信ではなくて只の無線通信

656デフォルトの名無しさん2017/08/24(木) 18:47:05.57ID:NSzs0jC1
個人的にはcargoが色々手を回しすぎなのが問題だと思うよ
ちょっと想定外だけど真っ当な使い方をしようとすると面倒が増えて、それをissueとして投げるしか無いからcargoがますます巨大になる
https://github.com/rust-lang/rust-roadmap/issues/12
↑でもちょっと出てるけど、今のcargoはインターフェイスとしてそれなりに使えるので、rustc以上cargo未満なツールを作ってくれるとありがたい
他のビルドツールとの連携とか今はかなり面倒。

657デフォルトの名無しさん2017/08/25(金) 06:54:52.63ID:fv88sy22
struct Node<T> {
data: T,
}
があって、

struct Container<T> {
nodes: Vec<Rc<RefCell<Node<T>>>>,
}
のようなContainerを定義して、このコンテナから&Tに直接アクセスするiteratorを作りたい
のですが、どうしたら出来るでしょうか?(そもそも出来るのでしょうか?)

雰囲気的には↓のような感じになると思うのですがライフタイムがよく分かりません。

https://play.rust-lang.org/?gist=fb73c80c4303adc14083d049de6ccf3e&;version=stable

658デフォルトの名無しさん2017/08/25(金) 12:13:31.91ID:wqoYH6g/
>>656
そういう公式ツールの増大は開発環境を複雑&巨大にするばかりだからやめて欲しい
cargoサブコマンドを公式rust libよろしく外部に吐き出してしまえば鬱陶しい文句も出なくなりそう

659デフォルトの名無しさん2017/08/25(金) 15:09:41.26ID:yTj1cv1p
>>657
この例ではRefCell::borrowが返すRef (owned)から<Ref as Deref>::derefによってRefからの借用として&Node<T>を得ているわけだけど、
<NodeIter as Iterator>::nextの末尾でRefがdropされているから借用は関数の外まで生き残らない

&Tを直接返す方法があるとは思えないけど、Ref<'a, T>を返すことはできる
https://play.rust-lang.org/?gist=5c4a7b0de00dcc6ec0612b8846dd6bfb&;version=stable

660デフォルトの名無しさん2017/08/25(金) 15:38:40.83ID:J7NBnr1n
>>659
Refを返すのは思いつきませんでした。
ありがとうございます。それでもよい気がするのでやってみます。

661デフォルトの名無しさん2017/08/26(土) 10:47:16.34ID:O+zDlIdw
このスレで話題にするのはアレかもしれないが、 Servo nightly build が
いつ試してみても盛大にぶっ壊れていて、開発順調なのか心配になる。

Rust で開発していると mutability で詰むことがあって、よーく考えてデータ構造なり
を変更すればうまく解決できることが多いし、コードもより良くなっていることが多い。
でもその変更って毎回異なった自明でないものだし、局所的なもので済まないこともある。
Servo くらい大規模なプログラムになったとき、もうどうしようもなく詰んだりしないんだろうか。

662デフォルトの名無しさん2017/08/26(土) 11:32:33.62ID:mrwT3sC4
やっぱブラウザ作るには向いてません
てなったら悲しいな

663デフォルトの名無しさん2017/08/26(土) 12:07:35.67ID:O+zDlIdw
気づいたら struct のメンバがほとんど RefCell になってるとかありそう。

664デフォルトの名無しさん2017/08/26(土) 12:14:24.38ID:3J5PaXHT
Rustに熟知してれば変更は自明であり、機能分解点を精査してれば変更は局所的なもので済むんでないかな
小規模なモノを無計画に作るにはRustは適さない言語だと心底思う

Servoは長いこと開発続けてるけどあんまり精力的に開発する気なさそうだよなぁ
Mozillaが営利団体として潰れそうだし・・・実際Mozilla Japanは潰れてるorz

665デフォルトの名無しさん2017/08/26(土) 12:48:20.45ID:qL+5xDF6
キノコ雲を見上げるsteveklabnikの画像がRust界隈でにわかにミーム化しつつあって笑う

666デフォルトの名無しさん2017/08/26(土) 16:16:56.49ID:1psTTOfA
servoで作ったモジュールがfirefoxに取り込まれていっているし、実験プロジェクトとしては成功なのでは

667デフォルトの名無しさん2017/08/26(土) 22:25:08.80ID:YYTb5WfA
Rustに限った話ではないですけど
・構文解析
・ハイライト
・オブジェクト追跡
・入力補完
などの機能を持ち高速に動作するテキストエディタってないですかね?
JavaやNode.jsを使った物は総じて動作が重いですし、Cなどで書かれてネイティブな物は機能性で劣る気がします

668デフォルトの名無しさん2017/08/27(日) 01:57:19.50ID:OZ/i8G6F
>>667
Node.jsで作ったエディタが重いってそれVSCodeの前で言えるの?

669デフォルトの名無しさん2017/08/27(日) 02:04:39.75ID:mxFQINt9
ageるなアホ

VSCodeつーかAtomは実際重たいからな
あとスレッドぶん回すからノートPCで動かすとバッテリー消費がシャレにならん

JetBrainsのCLionにRust Plugin入れたらブレークポイントも貼れるし良いぞ
誰かJetBrainsから有料版出る前にブレークポイント貼れるようにするPR出さないかねぇ
地味に高いから購入する気にはならんのだよな

670デフォルトの名無しさん2017/08/27(日) 02:12:16.71ID:PbodRtd5
Rustプラグインを単体の製品にするとは思えんけどねえ
彼らは例えばScalaのプラグインとかも手がけているけど別に製品化している訳じゃないし

671デフォルトの名無しさん2017/08/27(日) 02:34:48.02ID:SDSllFYF
VSCode重たくて殺意生える
いちいちワンテンポ遅いんじゃ

672デフォルトの名無しさん2017/08/27(日) 04:11:59.30ID:y+D9Ax/7
Vimすらも重いことあるんだけど俺

673デフォルトの名無しさん2017/08/27(日) 07:38:59.45ID:mxFQINt9
vi使えよ、viの軽さに慣れたらvimはそりゃ重たいでしょ

>>670
Scalaなんて10年以上前に流行った言語のIDEを今更有料化しても売れないだろうからな
Rustは今現在流行ってる(?)言語だし売るんじゃねーのかね

674デフォルトの名無しさん2017/08/27(日) 10:25:11.28ID:y+D9Ax/7
viとか使ってるやついたのか

675デフォルトの名無しさん2017/08/27(日) 12:17:29.76ID:PbodRtd5
Xi使おうぜ

676デフォルトの名無しさん2017/08/27(日) 12:49:38.49ID:PVSAtTcW
Atom (Electron) が Blink から Servo に乗り換えれば軽くなるのだろうか?

677デフォルトの名無しさん2017/08/27(日) 19:27:41.18ID:gsqvcCn0
vscodeって重いよな?起動も動作も軽快とは言い難い
むしろvscodeが軽快に使えているという人がいるならどのような環境で使用しているのか聞きたいわ
SSDを乗せた標準電圧版Coreiモバイルノートでも結構もっさりだし

678デフォルトの名無しさん2017/08/27(日) 19:39:49.26ID:PbodRtd5
もっさりとかいう言葉じゃ意味不明だからせめて数値で言ってくれ

679デフォルトの名無しさん2017/08/27(日) 19:47:01.83ID:SLqFnPu1
何を妥協して「せめて」なのか分からんが数値あげてやろう

MacBookでIntelliJが6時間くらい保つ所が3時間くらいしか保たない程度に無駄処理多い
プロセス上の待機スレッド数も10〜20くらい違った覚えがある

待機中でもそんだけスレッド回してるから、コーディング中、ビルド中の負荷もでかくなるよね
VSCodeを愛用してるコーダーはemacs愛用してるコーダー並みにマゾだと思う(viユーザ感

680デフォルトの名無しさん2017/08/27(日) 19:49:16.80ID:SLqFnPu1
>>678
あ、レスするならついでに「せめて」で説明要求を妥協した点を教えてくれい
確認してる範囲であれば答えるよ

681デフォルトの名無しさん2017/08/27(日) 23:25:25.14ID:tvWh4D3N
好きなエディタを使ったらええ

682デフォルトの名無しさん2017/08/28(月) 09:34:01.20ID:A8OmMbPi
全くだ、重たいと事実を指摘されても発狂することなく
重たくても他に良い所があるから使ってるんだと言い切っていたemacs愛用者は良い人たち

>>675
バックエンドRust, フロントエンドSwift, 通信プロトコルJSON, プラグインサンプルPython
ごった煮過ぎて笑うわw

683デフォルトの名無しさん2017/08/30(水) 13:54:58.32ID:AB0hyKA3
rustってやっぱりスペックいいパソコンと高速なネット回線がないと厳しいですね

684デフォルトの名無しさん2017/08/31(木) 22:48:16.13ID:agJG8fpm
普通の言語だと処理の一部を関数に切り出すのとか簡単に出来るけどRustだと返り値の方が分からなくてそれが難しいことがあるよね

685デフォルトの名無しさん2017/09/01(金) 10:25:57.73ID:pDFuyP/L
let a: () = { ... };

でコンパイラがエラーとして正しい型を教えてくれるぞ。

686デフォルトの名無しさん2017/09/01(金) 13:32:10.36ID:PRuVKL7F
クロージャにすれば良い
なあに、きっと最適化で普通の関数と同じ扱いになるさ(適当)

687デフォルトの名無しさん2017/09/01(金) 20:19:45.83ID:Mxd80Z9N
Rustのスレあったんだね

688デフォルトの名無しさん2017/09/01(金) 20:51:46.56ID:d10AKhdK
おい、時報はどうしたんだ?

689デフォルトの名無しさん2017/09/01(金) 23:41:11.07ID:62CxLGbq
unsafeだらけ

690デフォルトの名無しさん2017/09/01(金) 23:45:28.89ID:PRuVKL7F
Pijulで開発されているらしきcrateを発見してrepositoryリンクを辿ってみたらNot foundが返ってきた
https://crates.io/crates/futures-derive

691デフォルトの名無しさん2017/09/02(土) 00:14:47.90ID:aRnAy5mn
スクワット中なんじゃないの, 筋力ついたらリリースされるでしょ

692デフォルトの名無しさん2017/09/02(土) 00:45:15.54ID:Qzt2A3g3
Rustが最強のプログラミング言語である証明
https://hayato.io/2017/icfp-rust/

遂に証明されたか……

693デフォルトの名無しさん2017/09/02(土) 01:24:01.14ID:X2T/f4uE
Round 1の結果のみで語られてもねえ

694デフォルトの名無しさん2017/09/02(土) 01:50:33.08ID:cF7LUBE8
なんかnightlyにPythonのジェネレータ入ったとか聞いたんだけど誰得?
もうtokioつかFutureあるし。

695デフォルトの名無しさん2017/09/02(土) 08:16:03.50ID:oilxAadu
いつまでたってもスライスパターンが標準にならないのなんで?
ほかの関数型言語みたいな言語標準?のリストと、そのパターンマッチ、があればいいけど
そういうつもりもないんならスライスパターンをはよ強化&標準装備してほしいんだが

696デフォルトの名無しさん2017/09/02(土) 08:35:22.00ID:zv/5K5Jn
私は最強のRust以外のプログラミング言語で書く気はありません

697デフォルトの名無しさん2017/09/02(土) 08:40:19.17ID:MacxmZWQ
Featureを駆使するので楽になるのはそうだが、
逐次処理的に書けるasync/awaitの方がさらに楽なので
それを実現するための要素としてgeneratorは必要

あとIteratorの実装も楽になる

698デフォルトの名無しさん2017/09/02(土) 08:40:57.03ID:MacxmZWQ
FeatureじゃなくてFuture

699デフォルトの名無しさん2017/09/02(土) 11:39:08.16ID:Nnknp9qO
>>692
なんていうか、自分のチームの優位性を示してドヤろうとしたけど決定的な証拠がなかったから自分に有利な調整をしたという感じだな
特定のチームへの非難をしつつそのチームの人間のツイートを自分の主張の補強に使っているのもいろいろアレ
まあ競技プログラミング界のゴタゴタはどうでも良いけどとりあえずRustを巻き込まないで欲しいわ

700デフォルトの名無しさん2017/09/02(土) 12:32:15.66ID:3cz+aWzV
>>692に対してちょこちょこマジレスがいるけど
正規化の文章の注釈[4]でウォーズマン理論とか引っ張り出してるからな

701デフォルトの名無しさん2017/09/02(土) 13:10:10.49ID:U8pYefIa
マヌケは見つかったようだな…ロクにリンク先も読めないのに批判する口だけの能無しが…

702デフォルトの名無しさん2017/09/02(土) 17:38:03.40ID:pn8ujE89
風情のないやつらだ

703デフォルトの名無しさん2017/09/02(土) 19:03:59.64ID:AHW4eZK5
ウォーズマン理論により各言語の普及率(PG人口比)でスコアを倍加すると
数の暴力が発揮されJavaが最強のプログラミング言語であることが証明される

とでも言えば風情があるのかね?

704デフォルトの名無しさん2017/09/02(土) 19:58:54.78ID:X2T/f4uE
風情駆動開発

705デフォルトの名無しさん2017/09/03(日) 01:23:29.76ID:KzrJfOQ0
ネタにマジレス以下の寒い話だな

706デフォルトの名無しさん2017/09/03(日) 02:55:54.90ID:8KnlJyLG
ネタに対する模範解答って『やはりRust最強だな!』とか?

707デフォルトの名無しさん2017/09/03(日) 09:50:38.50ID:YZmIGy7N
>>705
風情の有無を話してるのであって、寒さ暑さを話してるんじゃないんだけど

>>706
まずはageないことから始めよう、な?

708デフォルトの名無しさん2017/09/03(日) 11:35:08.63ID:CVrfF8Ix
>>702
わび・さび ですよね、わかります
I know. sorry & rust

709デフォルトの名無しさん2017/09/03(日) 12:50:33.18ID:E+2Ill1j
お前ら、associated constantsがstableになったってのにいつまで下らない話を続けているんだ

710デフォルトの名無しさん2017/09/03(日) 13:04:30.79ID:Zk5wiRrT
関連定数が乗ったなら、次は依存型だ!

711デフォルトの名無しさん2017/09/03(日) 13:07:07.67ID:9s1YDGRT
依存型はやり過ぎだ!高階型でいい!

712デフォルトの名無しさん2017/09/03(日) 14:56:28.19ID:3Ui33to1
impl Trait と トレイト境界の特殊化の実装が先だろ……
これのせいで書けないコードあるんだぞ

713デフォルトの名無しさん2017/09/03(日) 14:59:38.46ID:E+2Ill1j
きっとimpl periodのうちに全部実装してくれるよ(適当)

714デフォルトの名無しさん2017/09/03(日) 16:40:58.80ID:Sqyt1HzW
async を汎用的に実装するなら モナド ( M<T> ) 的な高階型が必要?

715デフォルトの名無しさん2017/09/03(日) 17:05:48.88ID:4Saw+NMi
emccなしでwasmれるって本当?

716デフォルトの名無しさん2017/09/03(日) 20:29:20.09ID:HVXRIsjy
linkerとしてemcc必要では

717デフォルトの名無しさん2017/09/04(月) 01:02:25.35ID:TiSfjsBP
そもそもwasmなんて誰が必要としてるんだという問題がある
実際現状wasm使うよりV8の方が速いだろ

718デフォルトの名無しさん2017/09/04(月) 02:18:35.33ID:yWQauj9l
実験的な機能に現時点での必要性を求められても……

719デフォルトの名無しさん2017/09/04(月) 03:38:50.42ID:B0/qvj/R
JSの分野でもRust使いたいじゃん

720デフォルトの名無しさん2017/09/04(月) 03:56:46.84ID:acsdbygY
asmjsが早いんだからランタイム側の対応が十分進めばwasmも早くなるでしょ

721デフォルトの名無しさん2017/09/04(月) 10:53:07.99ID:e2EV4sJ/
>>719
Rustなんて実用にならない言語未満使うくらいなら、クソとはいえ言語の体なしてるJS使うわクソ

722デフォルトの名無しさん2017/09/04(月) 12:07:05.02ID:Wptm5Fxj
好きな言語を使ったらええ

723デフォルトの名無しさん2017/09/04(月) 20:51:30.52ID:hGu6xlI4
お前らslackにまけとるやんけ

724デフォルトの名無しさん2017/09/04(月) 23:53:57.54ID:yWQauj9l
いつの間に戦っていたのか

725デフォルトの名無しさん2017/09/05(火) 02:01:35.76ID:a/Cb1ZW9
Hack&Slack

726デフォルトの名無しさん2017/09/05(火) 04:46:57.50ID:kj7TSLdS
@seanmonstarがMozillaを辞めるとか言いだして一瞬ギョッとしたけど、次の職場ではフルタイムでRustを使うと言っているからhyperの開発はむしろ加速しそう?
http://seanmonstar.com/post/164869651177/bye-mozilla-hello-bouyant

727デフォルトの名無しさん2017/09/05(火) 07:50:37.72ID:JsNUX7wh
rustってまだ俺の中で実験言語だけど
そろそろプロダクト作ってる人とか出てる?

728デフォルトの名無しさん2017/09/05(火) 10:31:25.11ID:Xe9ypjwu
>>727
噂では泥箱あたりが使い倒してるとか
ずっと前から言われてるけど未だにコードの一つも公開されてないからただの提灯持ちで実際は使われてないと見てるがね

729デフォルトの名無しさん2017/09/05(火) 10:34:56.85ID:Xe9ypjwu
Rustが1.0過ぎてから今に至るまで、Rust使ってるって主張する企業は
モジカス自身と個人情報おもらしの一件で何かしら話題とお金が欲しい泥箱しか見ないって時点で色々と察するべきなんだよ

お前らいい加減目を覚ませ

730デフォルトの名無しさん2017/09/05(火) 12:37:41.86ID:xNvKf2Ex

731デフォルトの名無しさん2017/09/05(火) 13:37:05.48ID:Fbd5ldy5
見たことのないフレンズばかりだね

732デフォルトの名無しさん2017/09/05(火) 14:44:43.29ID:Xe9ypjwu
>>730
そのうちモジラのフロント企業じゃないのはいくつだい?

733デフォルトの名無しさん2017/09/05(火) 14:48:42.01ID:a/Cb1ZW9
ID:Xe9ypjwu
この異常者まだ居たのか

734デフォルトの名無しさん2017/09/05(火) 16:16:47.13ID:yjuOh0Qw
LINEはモジラのフロント企業

735デフォルトの名無しさん2017/09/05(火) 17:49:37.05ID:RCCGTejb
dropboxやsamsungもmozillaのフロント企業の可能性が・・・?
実はmozillaってすごい会社なんじゃね

736デフォルトの名無しさん2017/09/05(火) 19:27:40.10ID:JsNUX7wh
rustっていまいち売りがないよな。
ちょっとしたツールを作るっていうのには向いてない気がする。
Goくらいの適当言語がちょうどいい。

737デフォルトの名無しさん2017/09/05(火) 19:44:37.37ID:RqVBFvg5
ちょっとしたではなく、きちんとしたソフトウェアを書くための言語だよ

738デフォルトの名無しさん2017/09/05(火) 19:51:45.33ID:gLY7ZEwx
Rustは、型システムがきちんとしてないとイライラしてしまう人向けの言語だよ

739デフォルトの名無しさん2017/09/05(火) 23:06:17.75ID:iU8sfTGh
システムに近いところを触るバックエンドのデーモン等に向いた言語だよ

740デフォルトの名無しさん2017/09/06(水) 00:48:38.63ID:UIwOcimL
SIGSEGVに絶望したくない人のための言語

741デフォルトの名無しさん2017/09/06(水) 09:02:56.43ID:Sz3zXSu8
パッケージのインストールだけで長時間かかるのだけ何とか改善してくれる神様たちっていないんですかね
issueにそういう要望とか出ないものですかね

742デフォルトの名無しさん2017/09/06(水) 10:49:22.58ID:XzXTbCma
前にも出てたけど、CARGO_TARGET_DIRを設定すればさっきそれコンパイルしたじゃん!ってのが無くなる
まあコンパイルそのものは遅い方だからそれは我慢する

743デフォルトの名無しさん2017/09/06(水) 16:57:20.79ID:LVeCvIyg
Celeronの1コア、メモリ1GBなのでパッケージによっては5時間経ってもコンパイルが終了しないんですよね
例えばclippyとか。
パッケージのアップデート毎に結局更新されたものをコンパイルし直すからCARGO_TARGET_DIRの設定してもあまり変わらないような気もします
Core i7やryzen、メモリ8GBとかだともっと早く終わりますかね?

744デフォルトの名無しさん2017/09/06(水) 17:03:33.32ID:SQ4/Zkph
お前には Core 2 Duo がお似合いだ

745デフォルトの名無しさん2017/09/06(水) 18:26:50.13ID:n6C9v4DP
コンパイラ、コンパイラドライバ、パッケージマネージャをそれぞれ独立して利用しやすくして欲しい
ポストC/C++を目指しているはずなのに言語仕様と関係のない制約が増えるのは勘弁

746デフォルトの名無しさん2017/09/06(水) 18:51:54.27ID:l44s4mC+

747デフォルトの名無しさん2017/09/06(水) 19:10:48.28ID:VuLMXPgk
>>745
java, phpが独立した3rd tools乱立でひどいことになったから
次世代は低レベルと高レベルの2レイヤーを公式に提供しようぜって現代の風潮でそれに沿ってると思うが
あいつら個々に独立したビルドシステム, テスター, パッケージマネージャー, ランチャーが乱立して辛い
rustやgoは公式で色んなものが利用しやすく整備されてて涙が出るよ, マジで

rustの公式ツールに不満があるなら3rd toolsを自分で作れば良いよ
誰も作るなとは言ってなくて、作ること自体は止められないはず、賛同する人がどれほどいるのか懐疑的だけど

748デフォルトの名無しさん2017/09/06(水) 19:12:16.98ID:VuLMXPgk
低レベル:rustc, 高レベル:cargo って意味な

749デフォルトの名無しさん2017/09/06(水) 19:37:16.90ID:n6C9v4DP
Rust=Cargoな感じになっているように思うのは俺だけなのか?とりあえずCargoを使え的な記事ばかりでrustcを活用する記事はほとんど見ない
ちょっと高度な事をしようとすると絶望的に情報がない。さらにrustcの不安定性(機能しないオプションがある)が追い打ちをかけるw

750デフォルトの名無しさん2017/09/06(水) 20:12:23.66ID:OeC1JAcK
まあ今のRustとmakeを組み合わせようとはちょっと思えないな

751デフォルトの名無しさん2017/09/06(水) 20:27:57.04ID:b9fzClHU
ビルドにcmakeを要求するのに、エラーメッセージが分かりづらくて
はっきりとcmakeの必要性が分からないcrateが結構ある

依存ライブラリ一つ一つまでreadme読まないし

752デフォルトの名無しさん2017/09/06(水) 20:57:11.59ID:58f4P28i
cargo3兄弟

753デフォルトの名無しさん2017/09/06(水) 21:15:39.15ID:VuLMXPgk
build.shからmake叩いて、更にmakeからant叩いてたjava全盛期に比べれば多少はね
cmakeの代わりにbuild.rs(及びgcc-rs)使えば良いんだろうけど、build.rs書くの面倒でcmakeに走ってる予感

gcc-rsの機能拡張としてファイルパターンマッチ的なものが提供されたらcargoからcmakeも駆逐されるかもねー
あんまりbuild.rs使わないから既にデファクトスタンダードなcrateが存在してたらすまぬ

754デフォルトの名無しさん2017/09/06(水) 21:32:03.27ID:9SnBSqY1
そこまで分かっててなんでRust使い続けようと思うんだお前ら……

755デフォルトの名無しさん2017/09/06(水) 21:35:26.17ID:5mAj6AyW
cargoが便利だから

756デフォルトの名無しさん2017/09/06(水) 22:38:49.71ID:vuSxRzDq
https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html
ところで夏サーベイの結果出てるな

分かってたがNightlyの使われっぷりに吹く

757デフォルトの名無しさん2017/09/07(木) 01:09:15.04ID:pG20pyYC
だってRust会社で使えないしー が1位でRustむずいよーこわいよー が2位か

758デフォルトの名無しさん2017/09/07(木) 07:25:42.24ID:2QTh9NrO
CrateがCargo前提になっていて他のビルドマネージャやrustcからは実質的に使えないよな?

759デフォルトの名無しさん2017/09/07(木) 10:39:04.19ID:S617O9ZV
cargoって裏でやってることはrustcのラッパじゃなくて独自の方法でコンパイルしてるのか?
ひでえ仕様だな

760デフォルトの名無しさん2017/09/07(木) 18:01:04.73ID:QzkAwThZ
>独自の方法でコンパイルしてる
そんなことはないはずだが、どこからそんな情報が出てきたんだ?

761デフォルトの名無しさん2017/09/07(木) 21:46:15.77ID:seYx4u2p
crateが実質cargo専用になってるってbuild.rsとかその辺のことか?

762デフォルトの名無しさん2017/09/07(木) 22:56:42.47ID:wVi6dnoF
crates(.ioからのダウンロード、及び、crateの依存解決/分割ビルド)が実質cargo(コマンド)専用と言いたんじゃないのかな
curlでダウンロードして、rustcで.rlib作る分割コンパイルすれば出来なくはない
cargoコマンドのコードは開示されてるから自分で頑張れ, https://crates.io/crates/crates-io

rustcを使いこなせずcargo未満/rustc以上ツールの車輪の再発明を熱望する無能と
rustのコンパイルできるコードを書けず挫折したアンチが合わさり話が明後日に向かっておるわ

763デフォルトの名無しさん2017/09/07(木) 23:20:58.99ID:Aqe6d3N/
cargo install に download-only オプションがつけばいい流れ?

764デフォルトの名無しさん2017/09/08(金) 00:39:59.57ID:XDOpFOHk
>type hello.rs
fn main() {
println!("Hello World!");
}
>rustc -V
rustc 1.19.0 (0ade33941 2017-07-17)
>rustc hello.rs
>rustc -v hello.rs
>
-vが効いていないように見えるけど仕様なの?
コンパイラやリンカに与えられているオプションとかを見たいんだけどどうしたらいい?

765デフォルトの名無しさん2017/09/08(金) 03:12:39.89ID:70HlBZeV
rustc -Z print-link-args hello.rs

https://github.com/rust-lang/rust/issues/36175

766デフォルトの名無しさん2017/09/08(金) 07:52:33.56ID:cSX02n8Z
それはnightly限定ですやん

767デフォルトの名無しさん2017/09/08(金) 15:02:00.13ID:2+W6iI80
スコープでインスタンスの寿命を静的に管理しようってのは面白いと思うのだが、
再帰的な構造とか扱う場合の簡易さをも少し考えるべきだったね。

まああんまこだわらなければ結構使いやすい気はするけど。

768デフォルトの名無しさん2017/09/08(金) 16:10:21.35ID:jNusN9J0
こだわるも何も木構造まともに書き下せない言語の用途ってなんだよ

https://amp.reddit.com/r/rust/comments/33jv62/vecrcrefcellboxtrait_is_there_a_better_way/
この辺の問題も一行に解決してないし

769デフォルトの名無しさん2017/09/10(日) 00:10:13.39ID:EaeDwKWj
まあ raw pointer 使えば何とでもなるし(震え声)。

770デフォルトの名無しさん2017/09/10(日) 15:21:33.90ID:Z1fxPFbT
木構造は書けるでしょ
難しいのは巡回するグラフ構造

771デフォルトの名無しさん2017/09/10(日) 16:53:04.07ID:6IGW1QFW
>>770
木構造の一番いいサンプルおしえてよ

772デフォルトの名無しさん2017/09/10(日) 21:30:15.59ID:/y0BRE7n
木にせよ一般のグラフにせよライフタイム管理が面倒くさい

773デフォルトの名無しさん2017/09/10(日) 22:30:44.85ID:/LC/x3j3
この辺とか?
http://agtn.hatenablog.com/entry/2017/01/16/151745
ただ入れる操作によっても RefCell にしたり、やっぱり面倒は面倒。

774デフォルトの名無しさん2017/09/11(月) 00:36:42.39ID:xCZu5AEB
ぐええ、隣接リストとアリーナの違いがよく分からない

775デフォルトの名無しさん2017/09/11(月) 06:43:38.80ID:Yii5jhjx
768はこれがまともじゃないっていいたかったんでしょ。

776デフォルトの名無しさん2017/09/11(月) 10:26:55.85ID:XW0rQ7er
CやC++ならポインタ持っておくだけで簡単に実現できるのに……

777デフォルトの名無しさん2017/09/11(月) 23:14:03.66ID:0LGm7EQD
C++使うか、unsafe使えば良いのでは

778デフォルトの名無しさん2017/09/11(月) 23:14:47.15ID:0LGm7EQD
Rc+RefCellな型を用意するだけでもマシになるか

779デフォルトの名無しさん2017/09/12(火) 00:26:37.00ID:nVT3ZJzi
ていうか練習ならともかく実際に使うプログラムでポインタをつないでグラフを表現することなんてそんなに頻繁にあるか?
取りうる表現の中で効率性が最悪な部類じゃん
Vecに対するLinkedListみたいなもんだろこれ

780デフォルトの名無しさん2017/09/12(火) 01:20:27.09ID:Tl3HhyXK
オブジェクト指向っぽいAPIを触るときはだいたいその形にならない?

781デフォルトの名無しさん2017/09/12(火) 03:08:23.10ID:CK+WAwk/
グラフの時だけ、ガベコレ使えるGc型が欲しい

782デフォルトの名無しさん2017/09/12(火) 08:30:34.06ID:mcDW5eHR
じゃああんたは現実世界でツリー構造のものをどうやって表すの?

783デフォルトの名無しさん2017/09/12(火) 11:30:27.08ID:u82oOWPv
>>779
VecじゃなくあえてLinkedList使う場面普通にあるんだが……

784デフォルトの名無しさん2017/09/12(火) 14:48:49.21ID:+kMyckKw
linux の赤黒木の実装はポインタベースではあったな。
しかし個人的には配列実装のが結局速いって気はする。

785デフォルトの名無しさん2017/09/12(火) 15:07:56.52ID:yDRUgdvZ
Effective Hogeでそういうことは言及されてるけど
Rustはどうだかなとドキュメント見たらSecond Editionで"Effective Rust"の節自体が削られとる:-(
Stack vs Heapはどこかに記述されてた覚えがあるから、ツリー/リスト操作もどこかに潜り込んでるのかなぁ

786デフォルトの名無しさん2017/09/12(火) 17:41:48.32ID:r07bb/MI
配列ベースの実装はポインタの代わりにindex使うだけだからできることはあんまり変わらんわな
配列の方がデータの局所性高そうで速そうではある

787デフォルトの名無しさん2017/09/12(火) 18:02:30.56ID:kvuESNKU
データ構造によって速い操作が違うという基本的な概念がない奴おるな

788デフォルトの名無しさん2017/09/12(火) 18:50:57.82ID:wPca0Ysf
vectorのmutabilityの問題があるの理解できてる?

789デフォルトの名無しさん2017/09/12(火) 18:53:28.85ID:O0/aVCto
>>779
効率ってなんの効率?

790デフォルトの名無しさん2017/09/12(火) 22:05:08.25ID:RDvyqWgj
>>787
まあそういう無能がありがたがる言語なんだろうなRust

791デフォルトの名無しさん2017/09/12(火) 22:20:04.05ID:SHXpQI2F
mutabilityはRefCell使えば良いのでは
Refcell使わずにVecの中身を直接触る必要ある?

792デフォルトの名無しさん2017/09/12(火) 22:27:17.20ID:wPca0Ysf
>>791
いや、それでいいかも
rcさえなくなればborrowをユーザに書かせなくてすむからそれでいいや

793デフォルトの名無しさん2017/09/13(水) 14:03:19.87ID:K9O6G+Si
低レイヤーできます!ってアピールしたい言語なんだろうけれど、
あんま向いてない言語な気はする。

794デフォルトの名無しさん2017/09/13(水) 14:56:53.13ID:6DzbMbn9
低レイヤを書くにはチェッカーが強すぎて邪魔で、高レイヤを書くには全くカジュアルさがない
どっちにもなれない哀れな言語よ

795デフォルトの名無しさん2017/09/13(水) 18:10:30.60ID:dAYfacw9
並列で大規模で低レイヤーな領域に向いた言語だからどれか一つでも欠けてる領域で使いづらいと思うのは仕方ない

796デフォルトの名無しさん2017/09/13(水) 20:06:39.58ID:fx0j+lzd
低レイヤーはやっぱC言語だな。
ポインタの習得が難しい事以外に欠点ないじゃんこの言語。
Rustはもっとポインタ扱いやすくして出直してきな。

797デフォルトの名無しさん2017/09/13(水) 20:42:07.11ID:SU8+D2f1
rustの並列処理って言うほど特化(最適化)されてる気はしないけどな・・・
スレッド跨いだオブジェクトの所有権譲渡も保障されてはいるけど、従来言語/ライブラリに比べてめっちゃ便利という感じはしない
futures-awaitとかyieldを使うと変わるのかねぇ、無くても困りはしないしと使ってないけどfutures-awaitは使ってみるかな

798デフォルトの名無しさん2017/09/13(水) 20:42:42.41ID:K9O6G+Si
C だっていろいろ批判はあるだろ。
型がゆるいとか、名前空間がグローバルしかないとか。
まあそれを差し引いてもやっぱ有効な言語と思うけど。

799デフォルトの名無しさん2017/09/13(水) 20:49:43.29ID:6DzbMbn9
>>798
Rustのコンパイル通す実力あるならCのその辺りの問題なんてないものと同じだから
Rustなんて使わずCでいいじゃんってなるんだよな

800デフォルトの名無しさん2017/09/13(水) 20:52:03.57ID:SU8+D2f1
とか思ってたら、yieldの方が公式nightlyにマージされたのか
futures-awaitもnightly要求するし素直にyieldの方を使ってみよ, stableにはいつ来るのかなぁ

801デフォルトの名無しさん2017/09/13(水) 21:19:48.43ID:KPH4Bf/5
今さら C はねえよ

802デフォルトの名無しさん2017/09/13(水) 21:41:03.71ID:6DzbMbn9
>>801
Rustよりはあるわ

803デフォルトの名無しさん2017/09/13(水) 21:54:04.29ID:8Q7unwrY
ID:6DzbMbn9っていつものモジラ/Rustネガキャン君だろ

804デフォルトの名無しさん2017/09/13(水) 21:57:53.87ID:6DzbMbn9
>>803
さすがにあのレベルの基地と一緒にされるのは心外

805デフォルトの名無しさん2017/09/13(水) 22:09:43.33ID:8Q7unwrY
いつものコンパイル通らなくて発狂してる基地外かと思ったわ

806デフォルトの名無しさん2017/09/13(水) 22:45:06.07ID:EXyWFNJX
コンパイラーよりも自分が信用できるならC使えばよいと思う

807デフォルトの名無しさん2017/09/13(水) 23:56:44.36ID:kEFpToCL
Rustのコンパイルが通るならCを使えば良い君まだいたのか
自分の言葉通りRustに拘わらずにCを使っていれば良いのに

808デフォルトの名無しさん2017/09/14(木) 08:18:50.41ID:Y4hD7kDo
macro_rules! make_macro {
($id:ident) => (
macro_rules! concat_idents!{test_, $id} {
}
);
}
make_macro!{foo}

こういうの無理なのか。

809デフォルトの名無しさん2017/09/14(木) 11:10:13.14ID:EE2xE751
EmacsでRLS使ってる人居る?

810デフォルトの名無しさん2017/09/14(木) 11:12:19.23ID:XJ7zDnIx
>>799
そういう根性論嫌い

811デフォルトの名無しさん2017/09/14(木) 12:55:00.43ID:NnJxH7VV
RustやSwiftとかの次世代言語ってOracle製品やSAPみたいな所あるよな。
無駄に抽象化して変な専門用語作って、プリミティブなエンジニアを寄せ付けない感じとか。

コマンドラインで一発で出来るようなことを、独自用語だらけのGUIでポチポチ操作させてんの。
こういう文化は本当に良くない。優秀なエンジニアはみんな逃げてしまう。

812デフォルトの名無しさん2017/09/14(木) 13:54:06.68ID:1DVuzpHn
>>810
コンパイル時に全部解決しなきゃいかん
てな話のがよっぽど根性論だと思うが。

813デフォルトの名無しさん2017/09/14(木) 17:19:47.64ID:n0wq55dM
人間が気をつけてコードを書けばバグが出ないはずというのは根性論では

814デフォルトの名無しさん2017/09/14(木) 18:36:21.42ID:DdS4QLGS
人に依存するC/C++は日本的
システムが面倒を見てくれるRustはアメリカ的

815デフォルトの名無しさん2017/09/14(木) 19:05:26.17ID:1DVuzpHn
バグが出ないことよりも手法に熱中しちゃう方が日本的だなとか思っちゃうけど。

816デフォルトの名無しさん2017/09/14(木) 19:14:58.28ID:NxItWvHk
形容詞化する国名

817デフォルトの名無しさん2017/09/14(木) 20:08:31.29ID:wsl9UgI1
〜的ってつければなんだって形容詞になるの?

人に依存するC/C++はC/C++的
システムが面倒を見てくれるRustはRust的

818デフォルトの名無しさん2017/09/14(木) 21:28:39.91ID:ekPhWBa7
C/C++でもバグが出ないほど規模が小さい or 言語への習熟度が高いならC/C++使えばよいし
そうじゃないならRust使えば良いとしか言ってないのだが

819デフォルトの名無しさん2017/09/14(木) 21:51:38.65ID:egb+Ths/
単純に「巡回グラフを始めとした自己再帰型のデータ構造を書き下せない(コンパイラが通してくれない)」って時点で、書けないプログラムの存在を認めてしまってるんだよなRustは

その上C言語にはValgrindやらcppcheckやら、金かかっていいならCoverityやら、いくらでもその手のツールはあるわけで、
Rustならではの点ってどこにもない割に欠点だけ目立つ訳よ

肝心の抽象化も機能足りてないしな。Nightly使えばなんぼかマシだが

820デフォルトの名無しさん2017/09/15(金) 00:12:38.69ID:znUIhbu+
どうしても全部Rustだけで実装したいのか

821デフォルトの名無しさん2017/09/15(金) 00:29:00.00ID:tkwXjMs/
△全部Rustだけ
◯全部safe Rustだけ
Escape hatchの類は使いたくないというsafe Rust信仰の裏返しというツンデレなのでは

822デフォルトの名無しさん2017/09/15(金) 01:05:02.21ID:QM7YGf64
How can I implement a graph or other data structure that contains cycles?
https://www.rust-lang.org/en-US/faq.html#how-can-i-implement-a-data-structure-that-contains-cycles

823デフォルトの名無しさん2017/09/15(金) 13:00:11.59ID:3YdKOJD0
できるできないレベルの話をしているのか、やりやすいやりにくいレベルの話をしているのかどっち

824デフォルトの名無しさん2017/09/15(金) 13:25:48.45ID:5eAkzQwm
できない => できるよ => やりにくい => そうねー => 応答終了, 最初に戻る

こんなのをずっと繰り返してるイメージだ
モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君の二人なのかな
二人とも長いこといるし、コンパイル通せないRustが相当憎いんだろうなぁと思ってる

825デフォルトの名無しさん2017/09/15(金) 23:54:50.13ID:mfxKdXka
Cだって肝になるところをアセンブリで書くのはまれによくあることだし、
Rustで書きにくいところをCで書いたっていいよな

826デフォルトの名無しさん2017/09/16(土) 02:17:34.76ID:lHsVDIMy
Rustのコンパイルが通るならCを使えば良い君は、暗黙のうちにCで完全なメモリ管理を行うことの困難さを訴えているんだよきっと

827デフォルトの名無しさん2017/09/16(土) 06:49:34.00ID:bgl6NL4A
変な人がわくほどメジャーな言語になったんだなぁ

828デフォルトの名無しさん2017/09/16(土) 12:21:42.89ID:CDKitgfC
てか細かいとこ C で書いてあとは軽い言語から呼ぶとか普通してるじゃん。
一つの言語で無理やりやろうとするからどっちつかずになるんじゃないのかね。

829デフォルトの名無しさん2017/09/16(土) 12:23:12.97ID:FR19qSmR
>>828
RustがC(++)の後継目指してるとか言わなきゃこんなに言わんよ

830デフォルトの名無しさん2017/09/16(土) 17:33:19.57ID:hyq1PMdM
C(++)の座が奪われると危機感を感じて
「Rustのコンパイルが通るならCを使えば良い」と必死なのかw
置き換わるにはまだまだ先が長いから安心して自分の巣にお帰りに

831デフォルトの名無しさん2017/09/16(土) 17:34:53.66ID:lHsVDIMy
Rustのコンパイルが通るならCを使えば良い(自分はできるとは言っていない)

832デフォルトの名無しさん2017/09/16(土) 20:08:37.91ID:OnGiRDkA
実際に使ってる人たちは本当にいつかRustがC(++)に置き換わると思ってるの?

833デフォルトの名無しさん2017/09/17(日) 00:38:06.21ID:NXS5TlTy
RustがC/C++の後継目指してるなんて公言してるのか

834デフォルトの名無しさん2017/09/17(日) 09:53:24.02ID:2FAjS2AD
一応Goもc++の置き換えを想定した言語らしい。もっともgoogle社内の話だが

835デフォルトの名無しさん2017/09/17(日) 12:44:11.46ID:7diltdBj
>>830
×まだまだ先が長い ○先にモジカスが世界から消滅する
先が長いとか言ってる時点でモジカスのステマに荷担してると理解しろ

Rustがプログラミング言語を名乗ってるのはモジラが自由をお題目にしてるのと同じレベルの害悪だ

836デフォルトの名無しさん2017/09/17(日) 15:13:14.19ID:9f3JHXln
複数のResultのNGをXORでまとめて(途中match分岐入れず)処理するのてどうすればいい?
超極稀に失敗する変な返り値を格納しても副作用の無い処理の連なりをゴソっと捨てる方法

837デフォルトの名無しさん2017/09/17(日) 16:26:31.76ID:IHBqIXQE
>>833
少なくとも firefox の c/c++ 部分の書き換えを想定してるだろう。
まあ c/c++ と一口に言っても結構レイヤーは広いように思う。
てきとうなサーバープロセスなら確かに go は書きやすいよ。
rust にそういうエリアがあると思えんというところが問題の焦点じゃないかね。

838デフォルトの名無しさん2017/09/17(日) 17:40:27.30ID:aqlfcEMy
>>836
求めてるものかどうかわからんが、Iterator<Item=Result<t, E>>はcollectでResult<Vec<T> , E>などにできる

839デフォルトの名無しさん2017/09/17(日) 19:45:22.12ID:0mVr+JRg
相当雑いけど>>838の実装例はこんな感じかな
https://play.rust-lang.org/?gist=c87421997c42f0dfa8aa6ecabbb7ba3b&version=stable

性能を突き詰めるならcollectしないでfilterの戻りをnextで回すべきだけど適当に
確か100万回くらい回したら数秒の差が出るくらいのはず

840デフォルトの名無しさん2017/09/17(日) 23:03:20.12ID:xQI4uTVr
>>839
そういや、こうやって変数のシャドウイングを積極的に使っていくのってどうなんだろうな?
俺はよくやってるけど、スタイルにうるさい人から怒られるかもとか思ったり

841デフォルトの名無しさん2017/09/17(日) 23:17:40.08ID:tCD9jFlM
>>839
https://play.rust-lang.org/?gist=4f2e38dd8570a14eb1801137a183e40d&;version=stable
こういう途中Errがいたら戻り値もErr、全部OkならOk<colletion>な意図だった

842デフォルトの名無しさん2017/09/17(日) 23:18:40.79ID:tCD9jFlM
collectも#inlineついてるなら手でfor書くのと同じになりそうだけど遅くなるのか
ExactSizeIteratorとただのIteratorで違うとかならわかるんだが

843デフォルトの名無しさん2017/09/17(日) 23:25:16.47ID:ks3Dkyyp
OCamlだと普通なんで読みにくさを感じたことは無いなあ
むしろその変数はそこで終わりです、もう頭に入れとかなくても良いよってことだから脳にやさしいとまで感じる

844デフォルトの名無しさん2017/09/18(月) 08:30:10.39ID:KEjrNeQk
>>842
collectの関数コールは最適化されて消えるけど、collect内でVectorを作る分があるからな
メモリ確保して、要素をコピーしてって誤差程度だけどコストが乗っかる

filterまでだとFilterは作るけど要素のコピーはしてない感じだったから
他言語, 他ライブラリのfilterメソッドの戻りで配列/リストを作り直すIF/実装に比べて比較的早そうだと思った

845デフォルトの名無しさん2017/09/18(月) 11:26:55.19ID:/3RzmXHq
なるほど、Vec作るコストという意味なら確かにcollectはコスト掛かるね

まとめて処理というのがIteratorの要素からなる配列などのデータ構造を作って何かすると理解していたけど、
そうでないならば
f.map(¦x¦ {do_something(); }).collect::<Result<Vec<()>, _>>()
とすれば作られるのはVec<()>で、要素サイズ0だからヒープからはメモリ割り当てられないはず

これやるぐらいならfor使った方が

846デフォルトの名無しさん2017/09/18(月) 14:28:43.98ID:nF8z8OFK
一方C言語ならそんな面倒なこと考えずにallocしてforでいい
学習コスト高くて性能も低い言語Rust

847デフォルトの名無しさん2017/09/18(月) 16:37:25.22ID:JVxZ+5NP
alloc?

848デフォルトの名無しさん2017/09/18(月) 17:16:35.57ID:nF8z8OFK
>>847
mallocとcallocのことをまとめてallocって言うんだがまさかRust民そんなことも知らない?

849デフォルトの名無しさん2017/09/18(月) 17:40:00.45ID:2cmO/IBQ
俺たち、ついさっきまでzero-allocationな実装方針について話してなかったっけ……?

850デフォルトの名無しさん2017/09/18(月) 17:48:40.40ID:/3RzmXHq
せんせーallocaはallocに含まれますか

851デフォルトの名無しさん2017/09/18(月) 18:07:06.15ID:/S27bRBH
定義による
スタックから確保するものと
ヒープから確保するものを
どちらもallocと呼ぶなら含んでる

852デフォルトの名無しさん2017/09/18(月) 18:11:47.24ID:iR2mDVT9
>>849
ゼロアロケーションつっても最初の一回はallocするだろ?
その後forでナメながら変換すれば単純で早くてコンパイルも通ってモジカス涙目みんな幸せって言ってんの
無駄に難しく考えるモジカスシンパらしい話だな

>>850
非標準関数はNG

853デフォルトの名無しさん2017/09/18(月) 18:15:30.06ID:2aiOt6ta
基地外って同じ言葉を連呼するからNGし易くて助かる。

854デフォルトの名無しさん2017/09/18(月) 19:17:59.90ID:ndBW2Q0n
要素サイズ0のVecはヒープからメモリ獲得しないと明言したはずなのですが

855デフォルトの名無しさん2017/09/18(月) 19:24:02.49ID:JVxZ+5NP
>>846の書くヒープアロケートするCコードはスタックアロケーションのみのRustコードより高性能なんだよきっと

856デフォルトの名無しさん2017/09/18(月) 19:39:48.02ID:K4Qo/KNH
>>853
造語症っていうんだっけか?

それはそうとRustでCのmallocやcallocと同じ操作ってBoxであってVecではないよなあ。

857デフォルトの名無しさん2017/09/18(月) 19:56:01.80ID:2cmO/IBQ
低級言語で書けばそれだけで性能が良くなるって勘違いはよくあるよな

>>856
どっちもヒープを使ってるから同じでええやろ

858デフォルトの名無しさん2017/09/19(火) 01:46:56.36ID:EmWEVfWy
話が明後日の方向に行ってるけど
>>844の主点はVecを作るコストではなくVecに要素コピーするコストの方だぞ
filterで除外した要素をcollect内でVecにせっせとコピーするからちょっち時間かかる

ちなみにC(++)でベタに実装するとこんな感じでリスト作成、要素コピーするからドングリの背比べ
std::list<char*> filter_collect(std::list<char*> v) {
std::list<char*> new_v;
for (auto i = v.begin(); i != v.end(); i++) {
if (*i != NULL) {
new_v.push_back(*i);
}
}
return new_v;
}
std::list<char*> v{"Hello", NULL, "World"};
auto new_v = filter_collect(v);

モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君が
よりよいCコードを挙げてくれるのをちょっと待ってみようか, 流石にこれは汚すぎる

859デフォルトの名無しさん2017/09/19(火) 01:57:29.08ID:yqqf+3Rr
(そもそもの>>836が何をしたいのかいまいち分かっていないなんて言えない)

860デフォルトの名無しさん2017/09/19(火) 09:23:52.82ID:b711gf7K
これをCというか
いやまあC++としても酷いが

861デフォルトの名無しさん2017/09/19(火) 09:49:54.63ID:EmWEVfWy
(大丈夫、俺も分かってない...多分>>841さんの実装例が期待コードだったんだろうと匙投げた)

862デフォルトの名無しさん2017/09/19(火) 11:20:24.23ID:yHWjYg1H
仕様分からないのに実装しようとするRustの文化すげー

863デフォルトの名無しさん2017/09/19(火) 18:29:28.71ID:zYSzUAzu
そういえばRustってそもそもまだ言語仕様がなかったっけな(RFCが通ってない)

そんな言語を良しとするモジカスとそのお友達

864デフォルトの名無しさん2017/09/20(水) 07:39:00.40ID:D+wOfrtb
RubyやLua等も商用でも使われているけど公式な言語仕様って存在しなかった気がする

865デフォルトの名無しさん2017/09/20(水) 08:58:49.24ID:q1jVsKYV
RFCが通るとはどういう意味だろう
まさかIETFの話ではないだろうな

866デフォルトの名無しさん2017/09/20(水) 17:20:54.79ID:8IyKZYzR

867デフォルトの名無しさん2017/09/20(水) 17:30:21.92ID:KkNJUG2l

868デフォルトの名無しさん2017/09/20(水) 18:24:29.42ID:8IyKZYzR
どうせならいっそ新しいepochでbare Traitのシンタックスでimpl Traitのセマンティクスを表すように変えて欲しくもあるけれど、motivationでも言われている通り互換性の観点からしてまあ無理だわな
理念には同意できるけど、うーむ……ダサい

869デフォルトの名無しさん2017/09/20(水) 18:24:58.43ID:SerGpeBo
じゃあ討論してるIssueに行って、ダセェからこうしようぜって具体例を提案してこい
良さげだったら(y)押してやんよ

870デフォルトの名無しさん2017/09/20(水) 18:39:23.24ID:Yecv0E+U
これがダサいとかいうならimplとかpubなんてクソの山だろ

>>868
impl Traitのセマンティックスに置き換えたところで例えばVec<Display>にi32とStringを両方突っ込もうとしてエラーになるようなへまをする連中は消えないだろ

>>869
もうFCP過ぎてマージされてるんだよなあ

871デフォルトの名無しさん2017/09/20(水) 18:42:43.35ID:DfdXTJVQ
誰か3行で

872デフォルトの名無しさん2017/09/23(土) 12:28:08.72ID:47xDJ4SG
rustの三文字文化好き
mut, str, len, vec, rev

873デフォルトの名無しさん2017/09/23(土) 13:46:38.85ID:Cgi1rfOq
変数名にしたかったのを予約しやがって!でもある

874デフォルトの名無しさん2017/09/23(土) 14:49:56.77ID:ebiRk4qs
Contextual keywordって書いてある

875デフォルトの名無しさん2017/09/23(土) 15:11:25.15ID:aCorn/qh
let str = "Hello";
let str: &str = str;

これで普通にコンパイル通るしな。
変数名に出来ないのは>>872の中じゃ mut だけだろう。

876デフォルトの名無しさん2017/09/23(土) 19:15:33.07ID:nrpIGIl5
str, len, rev
あたりは変数名として結構使うかな。
str , vec あたりは s, v くらい短くすることもある。

877デフォルトの名無しさん2017/09/24(日) 17:44:10.64ID:VL5Szw+L
比較演算子 ==, <, > 等って、同じ型同士でしか定義できないのか

878デフォルトの名無しさん2017/09/24(日) 20:16:16.24ID:dG0lqnCY
それはEqとOrdの話でしょ
PartialEqとPartialOrdは別の型同士でも定義できる

879デフォルトの名無しさん2017/09/24(日) 20:38:52.59ID:VL5Szw+L
あ、ホントだ。出来たわありがとう。

use std::cmp::PartialEq;

struct Foo(i32);

impl PartialEq<i32> for Foo {
fn eq(&self, other: &i32) -> bool {
self.0 == *other
}
}

880デフォルトの名無しさん2017/09/27(水) 15:23:55.91ID:ENHC296h
Firefox Quantumリリースだってよ

881デフォルトの名無しさん2017/09/27(水) 23:11:15.94ID:r8V8UQwO
Rust 1.20、関連定数などを追加
https://www.infoq.com/jp/news/2017/09/rust-1-20-released

882デフォルトの名無しさん2017/09/28(木) 00:21:45.83ID:FngsmGBk
時報が壊れたと思ってたら、常時一ヶ月遅れの情報サイトをソースに時刻通知がきたよ
本人じゃなく模倣者だろうけど次回からは一次ソースのサイトをトリガーにしような!

883デフォルトの名無しさん2017/09/28(木) 00:30:16.29ID:fGSoqmif
何でこの人こんなに怒ってるんだろ?

884デフォルトの名無しさん2017/09/28(木) 00:53:16.99ID:FngsmGBk
1. 時報が壊れたことに怒っている
2. 一ヶ月遅れのinfoqをソースにしたことを怒っている
3. 模倣者であることに怒っている
4. その他

どれだと思う?

885デフォルトの名無しさん2017/09/28(木) 02:25:57.30ID:uh95Bh7/
一ヶ月入院でもしてたんだろ
許してやれ

886デフォルトの名無しさん2017/09/29(金) 10:21:58.71ID:YdXqj+6X
CもObjCもここ数年は仕様変更がないから、コンパイルはそのまま通る。
変なコード書いてなければ動作確認も問題なくパスする。
メンテナンスフリーって言われれば確かにそうかもな。

あとはフレームワークで非推奨にになったメソッド書き換える程度だけど、
これはSwiftと共通の作業だし、そもそもやらなくても動く。
とにかくSwift移行していない俺は毎年高みの見物してる。

887デフォルトの名無しさん2017/09/29(金) 10:22:21.88ID:YdXqj+6X
すまん誤爆した

888デフォルトの名無しさん2017/09/29(金) 11:26:40.22ID:YA9Keehz
これが小学生のおっぱいかよ・・・
12歳の乳とは思えんな・・・

889デフォルトの名無しさん2017/09/29(金) 11:51:24.12ID:2cPiFSeP
誤爆しすぎだろ。

890デフォルトの名無しさん2017/09/29(金) 22:06:45.55ID:7WUGaaf4
rustの前にc++とhaskellぐらいはやっておくべき?

891デフォルトの名無しさん2017/09/29(金) 23:43:36.68ID:w5CvkGV8
C++なんてやらんでいい。haskellよりOCaml寄りじゃね?

C++よりメモリ周りが「javaからgcとロック付きオブジェクトとモニタと
並列ライブラリがなくなった」代わりに低レベルなマルチスレッドコード書けば
型システムが守ってくれるモノが近い。

892デフォルトの名無しさん2017/09/30(土) 00:20:49.42ID:BhtSjkD0
所有権の概念はC++のmove semantics回りが近いと思うけどな
まあゲーム作るとかじゃなければわざわざC++やらなくてもいいと思うけど

893デフォルトの名無しさん2017/09/30(土) 22:05:33.32ID:uuI0Lqz4
Rust言語による第一プロダクトのFirefox Quantumですが
ベータ版リリースの時点でアドオンがお亡くなりになったとか、不安定でどうしようもないとか、メモリ食い潰して落ちるとか
様々なお声が聞こえてきますね

これがRustという安全な言語で作ったプロダクトなんですってね
おめでとうございますモジラ信者と工作員の皆様

894デフォルトの名無しさん2017/09/30(土) 22:25:31.06ID:BhW5NZCu
アドオンが不安定ってのはRust関係なくね?

895デフォルトの名無しさん2017/09/30(土) 22:38:45.63ID:ATIH6GBG
ベータ版の意味も知らないガイジやんけ
ガガイのガイw

896デフォルトの名無しさん2017/09/30(土) 22:39:37.33ID:ATIH6GBG
あそれあそれガイジが出た出たよよいのよいw

897デフォルトの名無しさん2017/10/01(日) 00:00:05.60ID:HKOr6Xa1
>>894
API鞍替えのせいだから全く関係ない。
メモリも関係ないし、むしろ最近はバージョン上がるたびに消費メモリ減ってる。
というかパフォーマンス良くなったのは設計が変わったからで言語は関係ない。
言語関係する部分はC++よりマシだから書きやすくなったこと。

898デフォルトの名無しさん2017/10/01(日) 00:42:35.99ID:5jXWEgsq
>>897
設計の変更って具体的に何を変えたの?マルチスレッドに強いとか?gpuぜんていとか?

899デフォルトの名無しさん2017/10/01(日) 23:58:38.97ID:HtGiOKW4
>>898
HTMLの描画周りがマルチスレッド前提になっただけよ。
シングル前提でやるとHTML/CSSパース、DOM構築で同期取りまくりが減っただけ。
うちのmem 4g, 2core環境だとハードが足引っ張ってたから多分mem 8g, 4coreくらい要ると思う。
ここ数年のロースペックマシン以上が恩恵受けるんじゃ?
gpu前提はwebrenderだからまだ入ってないんじゃない。

900デフォルトの名無しさん2017/10/02(月) 00:20:10.84ID:cuHSEpt/
あ、悪い。webrenderもう入ってるわ。
webrenderとstyloが入ってるからもうマルチスレッドにgpu前提。

901デフォルトの名無しさん2017/10/02(月) 11:21:20.04ID:pqkzvat0
Firefox爆速化件だけど、あのタイミングでRust化してればRustにも一気に注目集まったのにな。
もったいないな。

902デフォルトの名無しさん2017/10/02(月) 14:16:58.24ID:5q9eN7RZ
w3mの代替になるコンソールブラウザがほしいところ

903デフォルトの名無しさん2017/10/04(水) 00:06:33.86ID:eeE5kOTG
lynks、links、EWW(Emacs)ではいかんかった?

904デフォルトの名無しさん2017/10/04(水) 01:21:42.46ID:Eb49UXKr
それよりAmayaの後継をwhatwgに作って欲しい

905デフォルトの名無しさん2017/10/04(水) 09:33:38.58ID:xy+7bXnG
>>901
cssはrustになったんだよね?

906デフォルトの名無しさん2017/10/04(水) 17:45:04.59ID:U/p5CYqb
FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他
http://wolfbash.hateblo.jp/entry/2017/07/25/232027

907デフォルトの名無しさん2017/10/04(水) 19:54:27.21ID:eSRFZM0D
なんというか、、参考にならないベンチマークだな。

908デフォルトの名無しさん2017/10/04(水) 23:17:46.14ID:aUT+fN/H
参考になるベンチマーク教えてくれ

909デフォルトの名無しさん2017/10/05(木) 00:04:55.49ID:NTKdykpp
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=knucleotide
ここの諸々

久しぶりに見たらC gccがついに抜き返しててワロタ
C言語、頑張ったじゃん

910デフォルトの名無しさん2017/10/05(木) 01:11:32.12ID:froF/tdj
>>909
6パターンだった頃は全部実行出来てたけど速度はバラバラでたしか#5が最速でC言語より速かった
きっと最適化を人間が制御するのは難しくて頑張らないとJavaやC#にも勝てない
現在7パターンあるけど4つがmake errorになるくらい言語仕様が不安定

実に参考になる

911デフォルトの名無しさん2017/10/05(木) 02:42:46.62ID:e0oopfTd
>>909
mem順にしてもgz順にしてもcpu順にしてもD言語出てこないの悲しいな

912デフォルトの名無しさん2017/10/05(木) 04:56:45.53ID:ovcMkddr
d言語のメリットって何?

913デフォルトの名無しさん2017/10/05(木) 06:07:45.62ID:eC/9GoxN
C++ではないこと

914デフォルトの名無しさん2017/10/05(木) 09:06:46.27ID:NTKdykpp
>>910
人間が頑張って最適化した結果、C gccが上回ったんじゃないのかね

D言語はプログラミング人口少ないから・・・
2000年代の流行った頃ならもうちょっとスコアが出てたんじゃないかな

915デフォルトの名無しさん2017/10/05(木) 10:18:07.23ID:KYi0aOcC
RustもJavaも血反吐吐くほど最適化してるんじゃないの?
ポインタ扱いにくい言語でそれやると逆にコードが汚くなるから、
C言語よりも酷いコードになってるかもしれんよ。

916デフォルトの名無しさん2017/10/05(木) 10:41:40.98ID:j9fazbko
unsafe使ったらRustは更に早くなるのか・・・胸熱
取り敢えず、各コードを読んでから批評してはどうか

本家Rust Teamが改修して今のスコアだけど
彼らが直したのはI/Oにバッファ使おうぜってだけでそこまで変態的じゃないのよね
matchやmap, iterでクロージャー多用してるけど最適化コンパイルしたらif, forで書くのと同じ処理になるし

Option.mapは関数コールがあるから重たいかなと以前調べたら
LLVM中間コードの時点でインラインのif分岐(goto文)に展開されてベタコードと同じになるのかよと考えるのやめた

917デフォルトの名無しさん2017/10/05(木) 11:26:31.98ID:291DnPVM
>>909
C gcc 5.38
Rust #7 5.56
C++ g++ #3 7.18
Java 8.38

↑この並びでみると、Rustの速さよりもむしろJavaの意外な速さに驚く

918デフォルトの名無しさん2017/10/05(木) 12:31:31.21ID:mvbuHBBx
ぼくも同じこと思った…

919デフォルトの名無しさん2017/10/05(木) 12:49:03.43ID:i3OOJkl5
Javaは実行時最適化がはまれば速い感じ
でも、カリカリにチューニングされたJavaコードは、クラスをあまり使わずArrayだらけだっりしてつらい

920デフォルトの名無しさん2017/10/05(木) 17:58:39.05ID:DY6JRVMF
rlsもっと頑張って
replも提供して😭

921デフォルトの名無しさん2017/10/05(木) 18:51:45.79ID:BHTkAY6s
C言語の __func__ みたいなの無いのかよ〜

922デフォルトの名無しさん2017/10/05(木) 23:04:07.77ID:arvYOnSy
Javaやら.NET等のJIT系言語は速い速い言われるけど実際のアプリケーションでその速さを体感できたことは一度もないや・・・

923デフォルトの名無しさん2017/10/05(木) 23:35:19.66ID:AzAoa99L
>>909
rust#7はrayon使ってるから中身はcocoとfutureか。
ライブラリが頑張ってzero cost抽象化が効いてる感じかね。

javaはもうちょっと早くなるんだけどなぁ。
これ以上やるとjitとライブラリに丸投げして素直なコード書くことに
専念できなくなるからやりたくない感じ。
将来的にはconst arrayと、勝手にSIMD使ってもうちょっとマシになるかな。

>>919
連続してることが保証されないからカリカリにチューニングする時は配列には頼らないよ。
nio buffer使うことはあるけど。unsafe使わずに配列確保すると0クリアされて無駄に遅いし。
仮想関数テーブルなくしたほうが速いからメソッド検索>invokestaticのコストの時staticに変えるとか、
動的ディスパッチ自分で実装するときにconstant specific class bodyとtable switch組み合わせるとか。

>>921
ないけどrpすればすぐに入りそう。

924デフォルトの名無しさん2017/10/06(金) 00:32:27.39ID:ckjydJIo
>>923
>連続してることが保証されないから

それはもはやデータ構造として「配列」と呼ばれるものではないのでは……

925デフォルトの名無しさん2017/10/06(金) 00:59:19.34ID:PVLgxPLf
Dは仕様変更が多すぎた

926デフォルトの名無しさん2017/10/06(金) 01:12:44.86ID:aJzo16CX
>>923
javaの配列って連続領域の保証されてないの?

927デフォルトの名無しさん2017/10/06(金) 11:58:56.15ID:R7tcOQE1
スレチだけど、JVMの実装仕様なんてベンダー依存でしょ, OracleとGoogleでも当然違うわ

928デフォルトの名無しさん2017/10/06(金) 22:14:03.16ID:aJzo16CX
だから言語として仕様化されてないの?ってことだろ。
c++だって実装バラバラだけど連続領域な仕様だろ。

929デフォルトの名無しさん2017/10/06(金) 22:51:58.93ID:R7tcOQE1
Cはポインタ I/F仕様に引きづられて配列仕様も必然として明確にせざる得ないからでしょ
JVMはbyte codeの解釈さえあってれば良くて、データ操作の実装仕様は知るかよって話だよ
VM上では連続領域に見せかけても、実態は数チャンクに分けた配列の持ち方だってあろうよ

930デフォルトの名無しさん2017/10/07(土) 00:56:21.68ID:OPYXFct1
いやだから、データ構造としての「配列」のデータ操作の時間空間コストと
実装がズレてたらそれはもう「配列」じゃないから

931デフォルトの名無しさん2017/10/07(土) 02:30:16.92ID:tD6GhHlF
一般的に配列と呼ばれるオブジェクトがメモリアドレス上でも断片化しないことを保証される処理系ってほとんど無いのでは?
ミュータブルオブジェクトへ要素を継ぎ足していったらコードからは連続的に見えてもメモリ配置は断片化するだろう

932デフォルトの名無しさん2017/10/07(土) 04:32:31.86ID:OPYXFct1
「要素を継ぎ足していったら」がそもそもオカシイ
要素継ぎ足せるのはそもそも配列じゃなくてロープかなんかだから

933デフォルトの名無しさん2017/10/07(土) 08:20:38.57ID:PzpAWNqF
配列の要件ってインデックスで要素にアクセスすることくらいじゃないの?
要素のポインタをとって操作できる言語以外は実際の記憶領域が連続かそうでないか
判断する術はないと思うが。

934デフォルトの名無しさん2017/10/07(土) 08:39:14.98ID:rgSj2Elc
ポインタ操作だって処理系依存でどんな変態実装も理論上はあり得ると思うけど
C/C++の仕様を調べる気力がない

935デフォルトの名無しさん2017/10/07(土) 09:54:16.89ID:h9TjUWM8
>>933
> 配列の要件ってインデックスで要素にアクセスすることくらいじゃないの?

じゃリンクリストでもいいってわけ?
インデックス操作は内部でポインタたどってさ。

936デフォルトの名無しさん2017/10/07(土) 12:18:14.74ID:bipqd+gM
配列だとインデックスのアクセスにO(1)を期待してるが
それが保証できるのかという話じゃないの

937デフォルトの名無しさん2017/10/07(土) 12:27:49.68ID:FDovMcEa
>>936
お前は話の最初から読みなおせw
オーダーのことなんか誰も気にしてないよ

938デフォルトの名無しさん2017/10/07(土) 12:40:30.10ID:efrwvuZ0
チューニングで気にするのはメモリ配置よりCPUキャッシュに乗るかどうかでは
そのとき配列のサイズが気にされるというだけで

939デフォルトの名無しさん2017/10/07(土) 12:44:02.10ID:bipqd+gM
>>937
>>930
これの解釈は?

940デフォルトの名無しさん2017/10/07(土) 12:59:08.16ID:PzpAWNqF
データ構造としての「配列」と言語機能としての配列は別の話だから。

941デフォルトの名無しさん2017/10/07(土) 14:30:31.33ID:bipqd+gM
O(1)でもO(n)でも a[i]と書けるなら配列だって感覚?
そう考えるのは自由だがまともな話はできなさそうだな。

942デフォルトの名無しさん2017/10/07(土) 15:00:19.40ID:FL3S/Goc
Rustの話はないんでしょうか

943デフォルトの名無しさん2017/10/07(土) 16:04:55.47ID:+/+oWVUp
そんなの処理系によるわ
動作は変わらないからどうでもいい

944デフォルトの名無しさん2017/10/07(土) 17:48:20.09ID:M+fCWBh9
JavaScriptのArrayを配列と呼ぶのは間違いだ!
と吠えている人がいますね

945デフォルトの名無しさん2017/10/07(土) 19:34:14.94ID:efrwvuZ0
そんなに気になるならソース見に行けで終わり

946デフォルトの名無しさん2017/10/07(土) 20:58:38.51ID:PTRnmd1t
>>941
逆にちゃんとした定義ってあるの?

947デフォルトの名無しさん2017/10/08(日) 00:52:44.13ID:riNh/ezn
>>943
>そんなの処理系によるわ
>動作は変わらないからどうでもいい

オーダーの違いはまさに動作の違い

> JavaScriptのArrayを配列と呼ぶのは間違いだ!
> と吠えている人がいますね

データ構造としての配列じゃないのはそうだろ
配列じゃなくてハッシュマップですよねー
というのがマトモなCS出身者の反応

948デフォルトの名無しさん2017/10/08(日) 07:38:16.10ID:whyFhQ9X
引き続きオーダー厨がフィーバーしてんなw

>>946
>>926, >>928曰く、C言語には仕様として配列は連続領域であることが決まってるらしいよ
んで、Javaでは特に連続領域で実装することを仕様と定めてないよねーって話をしてんだろ

949デフォルトの名無しさん2017/10/08(日) 08:29:08.64ID:Eg4i3QFB
>データ構造としての配列じゃないのはそうだろ
>配列じゃなくてハッシュマップですよねー

結局、それまで展開していたオーダー云々の論理はどっかにやって
「配列じゃないものは配列じゃない」ってかw

950デフォルトの名無しさん2017/10/08(日) 09:02:22.19ID:p8wkQapI
ポインタの値が連続でも実メモリ空間のアドレスは連続とは限らないし
そのあたりのアドレスの連続性の抽象化をOSでやるか言語の処理系でやるかの違いと思えば
配列の要素の仮想メモリ空間でのアドレスが必ずしも連続ではない言語処理系があっても良いと思う

951デフォルトの名無しさん2017/10/08(日) 09:38:42.04ID:whyFhQ9X
>>949
配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する
それ以外の仕様、実装による配列は配列とは認めない

という論理で一応オーダー云々も彼の中では含まれてるんじゃないかな
ポインタのポインタで配列を設計したら、それはもうハッシュであり配列ではない的なことも言ってるし
多数の言語仕様, 言語処理系で配列ではないものが配列として扱われてて大変そうだなって思うね:D

952デフォルトの名無しさん2017/10/08(日) 10:03:07.61ID:W71T9805
JSのArrayは配列じゃなくてリスト
TypedArrayが配列

メモリが連続化を気にするとかどれだけ低レベルな言語使ってるんだ
インターフェイスが同じなら実装とかどうでもいい
老害かよ

953デフォルトの名無しさん2017/10/08(日) 10:54:24.49ID:T4FplNPL
データ構造の読み書きのオーダーも仕様の内だけど、メモリ上のレイアウトまで仕様という考えはマイナーじゃない?
アドレスを当然のように明示的に扱う言語だと当然の範疇かもしれんし情報として提供して欲しいけど、そうでない言語ならn番目の要素へのアクセスがO(1)であれば配列でいい
で、Rustはアドレス直触りは可能だけど普通はやらない。Cみたいに構造体のメモリ上の表現がはっきり決まってるわけでもないし

954デフォルトの名無しさん2017/10/08(日) 15:41:19.83ID:EDHW4lpZ
>>951
> 配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する

そう思うのは勝手だけどそれに基づいて他人を批判するってどんだけ独善的なんだ

955デフォルトの名無しさん2017/10/08(日) 18:42:51.40ID:4PvrPlQX
そろそろRustの話に戻してくれ

956デフォルトの名無しさん2017/10/08(日) 18:57:23.11ID:riNh/ezn
array data structure でググるさま

957デフォルトの名無しさん2017/10/08(日) 20:18:32.63ID:whyFhQ9X
>>952
(配列の定義を)お前がそう思うんならそうなんだろう お前ん中ではな
ちなみに、Rustスレ住民はRust言語を使ってるゾ

>>953
Rustのstructメンバは連続を保証してるんでなかったかいな
repr((C)で宣言した時に限ってるんだっけ、unsafe多用してる変態がいたら教えてくれ

958デフォルトの名無しさん2017/10/09(月) 00:25:52.32ID:KLfOKOYK
>>933
それって、(一次元)コンテナでは。
で、コンテナの実装方法として配列やらリンクドリストやらが存在する。

959デフォルトの名無しさん2017/10/09(月) 00:29:02.79ID:KLfOKOYK
>>952
> インターフェイスが同じなら実装とかどうでもいい
そういう目的にはrust使う必要なくね?

960デフォルトの名無しさん2017/10/09(月) 00:30:54.57ID:KLfOKOYK
>>953
Rustがそういう態度だと言うのなら、C/C++の代わりには使えないなぁ

961デフォルトの名無しさん2017/10/09(月) 01:24:12.13ID:EU3MdReC
>>953
システムレベル言語でそれは無い

962デフォルトの名無しさん2017/10/09(月) 07:09:58.47ID:HQb3QT54
https://play.rust-lang.org/?gist=9e8a69e064b98d48c48e237d87d005a1&;version=nightly

これ、少し前の nightly-2017-09-15-x86_64-apple-darwin だと通るのに、
最新の nightly だと conflicting implementations を起こすな。
rustup update したら急にビルドに失敗して驚いた。

963デフォルトの名無しさん2017/10/09(月) 08:32:46.93ID:/FMCjJgs
nightlyが仕様変更したりバグったりするのを逐一驚いてたら大変じゃない?

964デフォルトの名無しさん2017/10/09(月) 09:00:12.81ID:CsWYGxTc
>>958
もともと配列やその他のデータ構造からインターフェースのみ抽出したものがコンテナなんで、
それを言語仕様の側からは単に配列と称していることはあるだろう。
仮にそれを認めないとしても、元の質問の「JVMの配列は連続しているか」が「JVMのコンテナ(?)は
連続しているか」になるだけ。

965デフォルトの名無しさん2017/10/09(月) 10:26:26.16ID:EKQlpQJF
いるなぁC++のプロジェクトでarrayで十分なところに無駄にmap使いまくるやつ
おっさんプログラマとしては看過できないんだが(少なくとも仕事では)
これが時代なんだろうか

966デフォルトの名無しさん2017/10/09(月) 11:43:46.40ID:iPiyLv0T
なにか問題でも?

967デフォルトの名無しさん2017/10/09(月) 14:35:43.67ID:y6Coq1tU
メモリコスト、CPUコストについて定量的に説明できるかな

968デフォルトの名無しさん2017/10/09(月) 14:47:42.14ID:5Wk6yJf6
自分もどちらかと言えば効率厨のつもりだけど
実行コストと可読性が大差ないなら好きな方を使えばいいと思う

969デフォルトの名無しさん2017/10/09(月) 15:19:06.41ID:ICZ1WqoM
コンテナ使うとコストが見えにくくてよく分からん

970デフォルトの名無しさん2017/10/09(月) 17:24:05.08ID:65lUV9pA
さすがに array と map ではアルゴリズム自体違うわけだしそれはなしだろ。

971デフォルトの名無しさん2017/10/09(月) 18:49:17.20ID:GUc1DOLO
Vec<f32> を Vec<f64>に変換したいのですがどうしたらいいでしょうか?
やりたいのは
&[f64]を引数として受け取る関数にVec<f32>の内容を渡したいのですが。

972デフォルトの名無しさん2017/10/09(月) 20:31:04.63ID:2SZ05bPF
https://play.rust-lang.org/?gist=0cd6e0b3f8c028d720b6936505df6c9b&;version=undefined

受け取る関数がTraitでf32, f64を受けろと思うけど、外部ライブラリで作ってるなら仕方ないんだろうよ

973デフォルトの名無しさん2017/10/09(月) 20:46:44.09ID:g5Xwcr4f
>>972
ありがとうございます

今回は外部ライブラリだからしょうがないかな

普通はなんのtraitで受けとるんでしょうか?

974デフォルトの名無しさん2017/10/11(水) 16:41:05.41ID:3w9jP5qe
色々あるんだろうけど、こんな一例
https://play.rust-lang.org/?gist=d00fb7f7041fce1649767ecf95bb936a&;version=stable

AsRefとかIntoとかFromとか、なんかその辺調べたらいいんじゃないかなぁ
他人に公開する目的のpub fn以外で使うのはバイナリ容量増やす一因になるからいたずらには使いたくは無い(他人がする分には気にしない
ただまぁ、枯れたおっさんプログラマの感想であって、map, arrayの使い分けに口出すおっさんは同様に口出してくると思うので注意されたし

975デフォルトの名無しさん2017/10/11(水) 17:46:13.24ID:6qFX/88z
>>974
基本的に↓を使ってるんで、
https://docs.rs/alga/0.4.0/alga/general/trait.Real.html

これの
https://docs.rs/alga/0.4.0/alga/general/trait.SupersetOf.html
あたりを使えばいいんすかねぇ

976デフォルトの名無しさん2017/10/11(水) 20:18:32.35ID:SdSs/e3t
rustって難しいって聞くけどどうなの?

数百行程度のcliツールとか作るのにも適してる?

977デフォルトの名無しさん2017/10/11(水) 20:36:37.19ID:wUY7e6c6
借用やライフタイムを理解できない内は難しいかもね。

978デフォルトの名無しさん2017/10/11(水) 20:58:57.23ID:gwIT2xqO
%%%%4NEL%%%%
000-SAV-&1.0888214%ML<\47MBL%0.2\MSSSS4.213>
1.8882/%B/%SB/<\2/7BL\%\%B!B%47L%Si72B>%10.2%\
002%\B%===>>>52.B<\rbc/2.8>>\7B<<\7LB>>\72S\<%\42%><\br>001BYON$\%7L2%3.33GHz>>>2.3GHz<\br>
41.B%LB%"<<%11.6$%><<\86.1B>>2LB>"B???S3>>71$-?>6%<\br>
082@<\7L@@<\br>
\LOOP>0<1Entra

979デフォルトの名無しさん2017/10/12(木) 09:41:32.32ID:cYUXFwFa
>>975
RealがSupersetOf<f64>を継承してるから受け取る関数がf64を扱うならTrait Realを受ける形でも良さそう
Alga使ったことなくてどっちを使う方がスマートなのか分からんから、自分が取り回しやすいと思う形でどうぞ

980デフォルトの名無しさん2017/10/13(金) 09:07:46.54ID:ZLjOYpzW
Announcing Rust 1.21 - The Rust Programming Language Blog
https://blog.rust-lang.org/2017/10/12/Rust-1.21.html

めぼしい変更無し。

981デフォルトの名無しさん2017/10/13(金) 15:11:36.11ID:bp4APqrz
Rustの話をしないRust板の住人
言語として形になってないから言語のことを話せないんだろうなぁ
直近もまともな更新ないし、世間の話題も下火だし
工作員さんもっと頑張らないといけませんよ(ハナホジ)

982デフォルトの名無しさん2017/10/13(金) 17:39:13.20ID:xbVdueHZ
tanakhのrustベタ褒めツイートでも列挙しようか

983デフォルトの名無しさん2017/10/13(金) 17:40:12.67ID:+y/vofi6
>>976
性能だすために生ポ触るとかしなければボローイングなんかも
そんな難しく考えずにコード書けるとは思う。
一部の馬鹿が言語機能をドヤしたいってのが一番流行るのを妨げてる。

984デフォルトの名無しさん2017/10/13(金) 17:44:57.66ID:PbP1JTIY
じゃんじゃんクローンすればいいんだよ
性能に困ったときだけ再考すればいい

985デフォルトの名無しさん2017/10/13(金) 18:36:57.97ID:FAMCtm4a
>>980
何代目の時報か知らんけど次スレよろ
あと、2年近くかかって取り込まれたrvalue static promotionをスルーするとかどうかしてんぜ

986デフォルトの名無しさん2017/10/13(金) 18:45:29.22ID:RXIUnIoB
ムーブセマンティクスをきちんと意識すれば借用はそこまで難しかないよね
まあそこでCの経験が却って邪魔になるところがあるわけだけど

987デフォルトの名無しさん2017/10/13(金) 20:29:09.18ID:5Bkpm/HR
QtをやったあとでもRustの有り難みって実感出来る?

988デフォルトの名無しさん2017/10/13(金) 22:43:54.95ID:dC2M8380
borrowing というか mutable aliasing だけはやっぱり辛いなあ。
多くの場合 struct メンバの false sharing なんだよね…。

989デフォルトの名無しさん2017/10/14(土) 14:12:57.17ID:VwleOtKV
>>980
「Rust 1.21」リリース
2017年10月13日16:15 末岡洋子
https://mag.osdn.jp/17/10/13/161500

990デフォルトの名無しさん2017/10/14(土) 17:39:51.15ID:uWD69LeP
次スレ

プログラミング言語 Rust 4
http://2chb.net/r/tech/1507970294/

991デフォルトの名無しさん2017/10/15(日) 14:37:51.04ID:WeNwPolS
>>986
moveや借用は簡単なんだけど、その結果引き起こされる制限を回避していくのが面倒。

992デフォルトの名無しさん2017/10/15(日) 17:36:12.11ID:GYZBU1+2
>>991
その「面倒」って感じるのがまさしくCの経験の負の遺産なわけよ

993デフォルトの名無しさん2017/10/16(月) 10:08:35.93ID:ZoMoe7Af
脱出しようとして墜落してるのか

994デフォルトの名無しさん2017/10/20(金) 00:44:35.87ID:2lESXdgM
994

995デフォルトの名無しさん2017/10/20(金) 00:45:47.02ID:2lESXdgM
995

996デフォルトの名無しさん2017/10/20(金) 00:46:13.27ID:2lESXdgM
996

997デフォルトの名無しさん2017/10/20(金) 00:46:56.38ID:2lESXdgM
997

998デフォルトの名無しさん2017/10/20(金) 00:48:00.58ID:2lESXdgM
998

999デフォルトの名無しさん2017/10/20(金) 00:48:41.67ID:2lESXdgM
999

1000デフォルトの名無しさん2017/10/20(金) 00:49:08.90ID:2lESXdgM
1000


lud20220919234809ca
このスレへの固定リンク: http://5chb.net/r/tech/1495343069/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「プログラミング言語 Rust 3 [無断転載禁止]©2ch.net 」を見た人も見ています:
天才以外お断りプログラミング言語
C#とかいう欠陥プログラミング言語
【IT】プログラミング言語人気ランキング2020、2位に「大躍進」したあの言語
理系大学一年が学ぶべきプログラミング言語
【Lisp】プログラミング言語 Clojure #4【JVM】 [無断転載禁止]
【IT】マルウェア解析のためのプログラミング言語トップ3
【IT】人気プログラミング言語トップ10【2019版】
プログラミング言語「COBOL」がTwitterトレンド入り 
プログラミング言語、Python一人勝ち。もうすぐ世界一人気のある言語に
もうプログラミング言語はTypeScriptだけやっとけばいいだろ 何でもできるし
なぜ日本製プログラミング言語「ruby」は廃れたのか?いまやubuntuにパッケージすら無い
【朗報】今後プログラミング言語はJavaScriptの1強時代へ、これ以外の言語の学習は不要
プログラミング言語を勉強したいから参考書買ったら1ページ目で挫折した。意味分からん。教えて嫌儲民
【天才】スーパー中学生誕生、プログラミング言語わずか数週間で開発、U-22プログラミング・コンテスト2019
【IT】プログラミング言語「COBOL」がTwitterトレンド入り AWS Lambdaのサポート言語に追加、技術者がざわつく
日本のフリーランスプログラミング言語案件ランキング 「Python」がシェア拡大、ブロックチェーンや機械学習などの需要増で
【Microsoft】Excel関数ベースのプログラミング言語「Microsoft Power Fx」登場 オープンソースで公開予定 [少考さん★]
プログラミング言語って面白い?
最も美しいプログラミング言語は? Part6
プログラミング言語バトルロワイヤル [無断転載禁止]
プログラミング言語別の年収ランキング発表 [無断転載禁止]
Microsoftってやたらと形式検証系のプログラミング言語作ってるけどさ
【IT】Microsoft、プログラミング言語「P」を紹介 [無断転載禁止]
PHPもJavaScriptも難しくて挫折したんだけどもっと簡単なプログラミング言語ってないのかよ
今から始める? 就職に有利なお勧めのプログラミング言語16選 [無断転載禁止]
【IT】Google、プログラミング言語「Go 2」開発計画発表 [無断転載禁止]
【IT】6月プログラミング言語人気ランキング、Kotlinが急増の傾向 [無断転載禁止]
新型コロナウイルスの影響で「半世紀以上前のプログラミング言語の使い手」が急募される事態に
プログラミング未経験だけど覚えたい言語がある
一ヶ月でプログラミングを理解するのと、何か一つ言語を覚えたいのだが
敵「プログラミングはやりたいことを見つけてからやれ」俺「よし見つけたぞ!C言語始めてみよう!」
政府「小中学校でプログラミング必修にするよ!」どの言語をやるんだろう? →安定の「ホームページ作成」
一番プログラミングしてるって感じる言語といえば?
C言語でTCP/IP通信勉強(プログラミング)したいんだが
【プログラミング】止まらないC言語の下落 - 12月言語ランキング [無断転載禁止]
職業訓練校プログラミング終了後 3
ヒッキーの競技プログラミングするスレ 3完
Androidプログラミング質問スレ revision54
競技プログラミングにハマるプログラマのスレ 13
小学校プログラミング教育、米MIT開発の学習ソフト「Scratch」使用へ
【IT】プログラミングスクール卒業生は現場で使えない ★2 [Stargazer★]
プログラミング始めたいんだが
今日のプログラミングスレ
プログラミングって儲かるの?
プログラミングやってみたいんやが
競技プログラミングにハマるプログラマのスレ 33
プログラミングに自信ニキ来て
競技プログラミングは役に立たない
安価でプログラミングの教科書を作るスレ
プログラミングはRyzenでやってもエエ?
プログラミング分かる奴ちょっと来て
プログラミングのお題スレ Part14
趣味でプログラミングやってみたいんだけど
プログラミングできる人ってすげえな
副業でプログラミングやりたいんだが・・・
プログラミング未経験だけどゲーム作るわ
ペアプログラミング相手募集掲示板作ってみた
プログラミングはできないけど上流・設計は得意
60%の人間はプログラミングの素質がない←これ
文系と理系どっちがプログラミングに向いてるんや?
プログラミング始める=Windowsを消してUbuntuを入れる
PCでプログラミングとかしないで電子回路作りたいんだが
競技プログラミングにハマるプログラマのスレ 9
【教育】「最強」のプログラミング教育ソフトとは?
競技プログラミングにハマるプログラマのスレ 19
14:22:55 up 8 days, 23:31, 1 user, load average: 7.27, 7.43, 7.34

in 0.105220079422 sec @0.105220079422@0b7 on 112904