X



プログラミング言語 Rust 3 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0006デフォルトの名無しさん
垢版 |
2017/05/23(火) 15:31:11.02ID:NL1m8GyN
日本語だと特に「システムプログラミング言語」って何かバズワード臭く聞こえるなあ
0007デフォルトの名無しさん
垢版 |
2017/05/23(火) 17:17:58.00ID:XcuL8oqn
そらRust自体が元々が言語としてまともに機能してない欠陥品なんだからバズワード頼りになるのは当然よ
0008デフォルトの名無しさん
垢版 |
2017/05/23(火) 18:18:14.39ID:fz0kg0Hd
>>7
プログラミング言語いくつか知ってれば他の言語なんて多少解説読むだけですぐ理解できるぜ、みたいなのをぶち壊してくる言語よね
慣れれば生産性が高いのは分かるけど、チーム開発にはとても適用できない……
0009デフォルトの名無しさん
垢版 |
2017/05/23(火) 19:11:09.91ID:1Q8iu32F
C++ std::unique_ptrを使い倒してればすぐ理解できるぜ?(白目
事細かなエコシステムや凶悪なボローチェッカは慣れたら愛すべき馬鹿として愛せるけど、他人に勧めるものじゃないよな
まぁRustじゃないといけないケースってのは少ないから、好事家の中で流行ってれば良いと思って使ってる
0010デフォルトの名無しさん
垢版 |
2017/05/23(火) 20:03:50.20ID:n1SS9OPs
俺はコーディング規約でガチガチにしないと使えないC++よりチーム開発に向いてると思うけど。
0014デフォルトの名無しさん
垢版 |
2017/05/24(水) 00:09:41.07ID:8Z1z+g0P
Rustのborrow checkerに勝てるレベルのやつはそもそもRustなんて使わずにC++使ってりゃいいしな。
0015デフォルトの名無しさん
垢版 |
2017/05/24(水) 00:22:10.07ID:6yksy5B1
いや、気を使うの面倒だからborrow checkerに任せたいわw
どうせC++でもValgrindなりそれに類するツールでチェックするわけだし、言語仕様で縛ってくれるのは楽だ
0016デフォルトの名無しさん
垢版 |
2017/05/24(水) 00:37:53.57ID:D5tT9Iz6
C++でチーム開発したことないやつもいそうだしな。
C++から来たやつと、関数型とかから来たやつで感想も違うみたいだし
0018デフォルトの名無しさん
垢版 |
2017/05/24(水) 06:11:06.95ID:+DimD/vP
tokioが代表だけど、tokeiとかhayakuとか、謎日本語名crateが幾つか有るのは
中二病開発者が多いから?
0022デフォルトの名無しさん
垢版 |
2017/05/24(水) 20:37:17.74ID:pRDkrxzx
kuchikiなんてのもあるな
あとコミッターに@BurntSushiとか@mitsuhikoみたいなのがいる
@briansmithはアイコンが「ス」だし
0024デフォルトの名無しさん
垢版 |
2017/05/24(水) 21:30:26.80ID:FIIUGQKl
そんなどうでもいいことよりクロージャがまともに使えない問題とトレイト境界の問題(これら結構重なる部分あるけど)はいつ解決するの?
0025デフォルトの名無しさん
垢版 |
2017/05/26(金) 08:01:17.73ID:1zFjO363
昨日のRust入門者の集いは、50人ぐらい集まったのか
少し前のScalaぐらいの盛り上がりある?
0028デフォルトの名無しさん
垢版 |
2017/05/26(金) 11:11:47.24ID:lITgTAsg
こんなにRustは欠陥品っていうのは広まってるのにまだ始めようとするかわいそうな騙された人がいるのか。
それとも流行らないことに業を煮やしたモジラさんが雇ったサクラか?
0031デフォルトの名無しさん
垢版 |
2017/05/26(金) 11:50:37.94ID:lITgTAsg
少なくとも俺が、Rustはまともに物がつくれないコンセプト崩壊の欠陥言語、っていってることについて、このスレの住民はなんら答を出していない。
ベンチマークの結果が良いとか悪いとか以前にまともにコードが書けない言語のどこがC++の後継言語だ?
C++で書いたバグのないコード(Valgrindチェック済み)をRustに移植してもコンパイルが通らないって時点でお察しなんだよ。
0033デフォルトの名無しさん
垢版 |
2017/05/26(金) 12:02:24.21ID:xRlJL6be
だって、このスレにいる奴はRustコードが書けるから答えも何もないし・・・

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

プログラミング言語の学習コストなんてあってないようなものだ、みたいなプライドを打ち砕かれた可哀想な子なんだな
0034
垢版 |
2017/05/26(金) 12:08:45.87ID:uOeVRBLK
>>31
cppで書いたコードはcppで使えばいいのでは?
俺が書いたcのコードは、'a'bつけたのと、ポインタインクリメントやめたくらいで割と素直に移植できたけど。
バグが無いってのは、今まで俺事故ったことねえって言う奴くらい、どう正しいか証明するの大変な事だよ。
そういえば、valgrind、スタック変数の境界チェックできるようになったの?
0036
垢版 |
2017/05/26(金) 13:22:40.22ID:uOeVRBLK
>>35
おお、そうなのか。
ちゃんと動けばそこそこ良さそうと思ってたし、見てみようかな。
クソ遅いのももう少しマシになってくれてれば良いんだが…。あれも知らんだけなのかな。
0038デフォルトの名無しさん
垢版 |
2017/05/27(土) 02:31:59.03ID:SSsXXMTN
公式HPでシステムプログラミング言語、って書いてあるのが読めないで、なんちゃってアプリ作ろうとしたんじゃないかな?
0041デフォルトの名無しさん
垢版 |
2017/05/27(土) 06:03:06.96ID:2NZ16S+U
web系だとライブラリのマッシュアップって感じが普通だからライブラリ不足が不満になるのかな。
0042デフォルトの名無しさん
垢版 |
2017/05/27(土) 06:48:55.16ID:3w92Yrys
それ以前に、コンパイルの通るコードが書けなくて挫折してるんでしょ
サーバフロントエンドのマッシュアップだとHTTP I/Fで特に支障は出ないと思うぞ
バックエンドだとライブラリ側がC I/Fが提供してるならさほど面倒はなかった
0044デフォルトの名無しさん
垢版 |
2017/05/27(土) 09:42:53.30ID:CDShuPAP
JavaScriptしか知りませんって人が入門してるらしいけど、全員投げ出すと思うわ。
C/C++経験者しか残らんだろう。
0048デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:15:34.31ID:CDShuPAP
PHPerをScalaに大ジャンプさせようとして大やけどしたチャットワークの悲劇に学ぶべき。
0049デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:45:11.15ID:41DJlv/7
>>46
なるほどー
RubyとかPythonのC拡張の部分をRustで置き換えたりあるいは機械学習や分散処理らへんでRustが有用にはならないだろうか
0050デフォルトの名無しさん
垢版 |
2017/05/27(土) 11:04:04.64ID:1jZ1Mh3o
GUIと言えば、GTKの中の人がRustに乗り気で、既に一部置換が始まってるというのが面白い
0054デフォルトの名無しさん
垢版 |
2017/05/27(土) 15:51:40.38ID:gV6nh4ij
>>43
OSとかミドルウェアとかそういうの向け。あと組み込み。
ネイティブの速度が必要だけど、CとかC++やって苦労した人向け。
0055デフォルトの名無しさん
垢版 |
2017/05/27(土) 17:16:38.79ID:3w92Yrys
C/C++で苦労した人は更に苦労すると思う(名推理

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

流行ってるベンチマークでもないから別にそれ自体はおかしくないんだけど
他のRustで最適化されてないヤツはどうなのよと実装し直してみたら普通にトップスコアが出るな
この程度の簡易な処理だと性能良い言語だなぁと見直した、実用時に活かせるかは別問題だけど
0057デフォルトの名無しさん
垢版 |
2017/05/27(土) 21:36:50.13ID:0kaExwmN
ベンチマークの順位はそこまで気にならないが、そこのコードでrayonとfutures使っているのを見て触らないとと思った
0060デフォルトの名無しさん
垢版 |
2017/05/28(日) 19:51:05.68ID:vySQPNuk
焼寿司さんが日本語ツイートにリプ付けてるの見かけたけど、日本語分かるんかな?
Google翻訳かな
0061デフォルトの名無しさん
垢版 |
2017/05/28(日) 22:41:06.63ID:9sPyoVkk
>>55
一番上のjavaがまだ最適化の余地があるのが気になる
けどガシガシ書きたくないからあんなもんだろうな。
0062デフォルトの名無しさん
垢版 |
2017/05/29(月) 08:05:31.35ID:aIZDJONO
スカイプはどんな言語で作られてるの?
0070デフォルトの名無しさん
垢版 |
2017/05/29(月) 23:59:14.77ID:L9ed4gjc
obj-cやc++の立場は、、、

goがbetter cってのは、rustがbetter cってのと同じくらい不可思議だなw
0074デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:45:37.44ID:gxWnkgCC
god bless c
0075デフォルトの名無しさん
垢版 |
2017/05/30(火) 12:54:00.95ID:IWC/1tpu
もうcでいいじゃん
メモリーリークさせる馬鹿に合わせる必要なんかなかったんだよ
0076デフォルトの名無しさん
垢版 |
2017/05/30(火) 13:03:48.77ID:cUShYlMs
>>75
Rustはバカには使えない
バカはCを使わせてもまともには書けない
Cをまともに書けるならRustなんて不自由な言語はなくても問題ない

よってRustは不要
0077デフォルトの名無しさん
垢版 |
2017/05/30(火) 14:53:42.47ID:jV/RuSAE
長年C/C++やってた連中は始めから眼中になかっただろ。
Swiftしかり、新しいものに飛びつくのはいつも歴史を学ばない若い連中。
0078デフォルトの名無しさん
垢版 |
2017/05/30(火) 15:46:56.49ID:zOXcPiC1
C/C++より(なぜか)性能良いから、borrow checkerに勝てるなら良い言語だがなぁ
問題は、若者も老害もborrow checkerに勝てないから使えない
学習曲線の改善を今年の目標に掲げてたはずだけど、どうにもなる気がしねぇwww
0079デフォルトの名無しさん
垢版 |
2017/05/30(火) 16:21:27.71ID:3rG32g2E
2chなんて年寄りしか見てないからここの意見なんて全くあてにならんよなー
ここ見てない若い人のほうがメインなユーザーだろうし
0080デフォルトの名無しさん
垢版 |
2017/05/30(火) 16:41:31.26ID:xHXzQ5Z2
>>79
ワイ16歳
0083デフォルトの名無しさん
垢版 |
2017/05/30(火) 18:35:38.41ID:PZbBKLpD
ちゆ 12歳(おっさん感

Cに比べりゃC++, Rustはランタイムの分のオーバーヘッドが絶対的に存在するから
そこを引き合いに出すならどうやっても勝てんしな
実用性のあるコードを書いた時の性能はどうだかねぇ
0084デフォルトの名無しさん
垢版 |
2017/05/30(火) 18:40:13.37ID:xHXzQ5Z2
>>83
性能はそこまで気にしなくても良い気もする
最近のPC高性能だし
ネイティブでメモリ管理出来るってだけでそこらへんの言語よりは速いし
0086デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:07:46.03ID:reqRzc0L
まあプロダクションでのパフォーマンスはServoとQuantumが示してくれるでしょ

>>85
Non-lexical lifetime以外よく分からない
0087デフォルトの名無しさん
垢版 |
2017/05/30(火) 20:40:00.58ID:XaqH7Fx5
Cで書くには煩雑なものを相手にしたときに、
実際Rustがどんだけの結果を出せるか、
というのがみんなの興味だろう。

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

オーバーヘッドの一点のみで語りつくせるんなら、
バイナリエディタと機械語でOSだって作れる。
それはオーバーヘッドの無い、最速最軽量だろうね。
0089デフォルトの名無しさん
垢版 |
2017/05/30(火) 21:54:14.25ID:re3tYRpg
free挿入するよりcopying gcの方が速いし
無駄なオーバーヘッドなくそうとしたらlibstdの実装みたいに
raw pointerだらけになるからそんなこと気にしなくていいよ。

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

抽象度の高いまま低レベルな領域でも書けるからいいんだよ。
javaだと整数型の型を揃えようとするからバイト列の操作とか苦手だけどrustはそういうのないのよ。
0090デフォルトの名無しさん
垢版 |
2017/05/30(火) 23:04:32.49ID:xHXzQ5Z2
>>87
ベンチマークって基本そういう系多いからね
ファイルアクセスとか考えたら速度ほとんど変わらないのに
0091デフォルトの名無しさん
垢版 |
2017/05/31(水) 01:36:02.83ID:/NtvNHJE
ベンチマークはオーバーヘッドが無視できるよう(特定)処理を大量回数ループさせてる
という意味が分かってないから、そういうこと言っちゃうんだろうねぇ

もっと勉強しろ、若造どもが
0092デフォルトの名無しさん
垢版 |
2017/05/31(水) 01:44:33.93ID:8BExUPKw
オーダが同じでもオブジェクト生成や関数呼び出し等々のオーバーヘッドは係数部分に効いてるんやで
0093デフォルトの名無しさん
垢版 |
2017/05/31(水) 02:15:05.25ID:/NtvNHJE
Rustはzero-cost abstractionだのコンパイラによる関数最適化でC言語とさして変わりないんやで^^
VMだと係数にもろに影響するやがな
0096デフォルトの名無しさん
垢版 |
2017/05/31(水) 12:19:43.42ID:WjnJkecI
本当のおっさんや老害はRustスレなんてこないだろ。
ワイは偉そうに古参風を吹かせてた>>77だがまだビンビンの学生やで。
0097デフォルトの名無しさん
垢版 |
2017/05/31(水) 12:22:43.65ID:FbhpYS54
ワイ周辺だと学生はそれなりに見る
よくはてなブログに書いてる人も学生でしょ
0102デフォルトの名無しさん
垢版 |
2017/05/31(水) 23:54:17.31ID:H5pMSxMU
>>83
ランタイムなんてリンクしなけりゃ済む話
0104デフォルトの名無しさん
垢版 |
2017/06/01(木) 10:52:08.55ID:AXJF1Amn
それランタイムじゃなくライブラリ
no_mangleでマングル名消してもランタイムはリンク解消できないだろうねぇ
0105デフォルトの名無しさん
垢版 |
2017/06/01(木) 12:56:34.33ID:5JdW7IAM
#![no_std]すればliballocとlibpanic_unwindはlibstdは勝手に外れなかったっけ?
libcoreはliballocにリンクしていないし#![needs_panic_runtime]もしてない
0106デフォルトの名無しさん
垢版 |
2017/06/01(木) 13:33:54.90ID:TwQiYK+8
Rustランタイムって具体的には何してくれるの?
ファイナライザ呼び出しとパニック時のスタックダンプ表示?
0107デフォルトの名無しさん
垢版 |
2017/06/01(木) 13:39:40.72ID:AXJF1Amn
ttps://doc.rust-lang.org/book/no-stdlib.html
最小限のmain関数だけにしても、C言語+clangでビルドするバイナリ相当までは削れんなぁ

Rustマングル名の解読とか、C言語へのブリッジなんかも入ってるんでない
str型はno_stdでも使えるようだから、この辺の一部プリミティブ型のラッピングもしてるかな
0109デフォルトの名無しさん
垢版 |
2017/06/01(木) 14:27:32.75ID:y1VaJ38E
あとOS無しの環境でプログラム動かす時とかもそうだけど
要するにそういうときだけ
0110デフォルトの名無しさん
垢版 |
2017/06/01(木) 15:23:27.31ID:TxD0ndLo
その辺の整備は優先度低いだろうからな。
トレイト境界の特殊化とか知恵の輪みたいな型システムのサポートとかもっとやることがある
0111デフォルトの名無しさん
垢版 |
2017/06/01(木) 15:36:56.97ID:SoMrAbTt
IoTブームを考えると、組み込み系が一番Rustを活かせる場だと思う
パフォーマンスが良いし、アップデート出来ない環境で脆弱性の心配が減るのも良い
メモリフットポイントも、先行事例を見るにまあぼちぼちなんとかなってるようだ
0112デフォルトの名無しさん
垢版 |
2017/06/01(木) 16:49:21.04ID:84f6kPv5
新興言語が使い物にならないのはSwiftが証明しちゃってるしな。
学習コストが高いし、仕様変更も多すぎて管理コストがかさむ。
仕事では使い物にならない。

IoTはなんだかんだいってバックエンドCフロントエンドECMAScriptが主流になるんじゃないかな。
0114デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:07:25.12ID:b0AgrCqp
マングリングなんかはコンパイル時に解決してるのでは
strはただのデータと長さのペアの構造体
ランタイムとはなんなのか
0115デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:32:06.24ID:AXJF1Amn
解決してないから、場合によってはno_mangleが必要なわけでな
プログラムロード時に展開して処理中はオーバーヘッドないだろうけども

IoTブームを考えるとRustの選択肢はありだろうけど
流行りを無視したら性能良く容量少ないバイナリ吐くCかギリギリC++かなぁ
ガチな組み込みは老人ばかりでC/C++で難なく安全なコード書くし
組み込み系の仕事やってると業務での採用提案は現実的には思えんわ
0117デフォルトの名無しさん
垢版 |
2017/06/01(木) 23:17:34.13ID:Co5NqntP
>>116
自動車は普通にc++使ってる部分もあるよ。
0118デフォルトの名無しさん
垢版 |
2017/06/01(木) 23:38:13.83ID:0ZYBTIzB
ハードウェアは未だにZ80が現役のパチンコでもZ80要らないところなら色々使うで。
ソフト部分がjavaかC#か、最近はunityだから格差が大きい。
こういうニッチなところならrustのno_coreも入り込めるかも
0119デフォルトの名無しさん
垢版 |
2017/06/01(木) 23:39:53.34ID:0ZYBTIzB
ごめん言い忘れた。
いまだにC++使わないのなんか軍事兵器くらいやで戦闘機のOSとか
0125デフォルトの名無しさん
垢版 |
2017/06/02(金) 01:43:12.50ID:USk3zPix
飛行機なんかはメモリ確保命令は使わずに上書きでやりくりするんでしょ?
リアルタイム性が要求されるから決定的瞬間にアロケーションや解放なんて処理始まったら死ゾ
0126デフォルトの名無しさん
垢版 |
2017/06/02(金) 02:00:16.87ID:/gLRnObz
>>125
そうならばメモリアクセス安全に寄ったRustは不向きの用途だな。
専用ランタイム作らん限り。
0127デフォルトの名無しさん
垢版 |
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++マングル名を回避する荒業に出てるからなくても困らんのだけども
0130デフォルトの名無しさん
垢版 |
2017/06/02(金) 10:26:55.70ID:f93mDoXl
cとのI/Fではc++が最強か
0132デフォルトの名無しさん
垢版 |
2017/06/02(金) 17:04:48.35ID:Lx2HMXf/
impl Into<[u8]> for Hoge {
これがエラーになってしまうのですが、どうやればInto<[u8]>を実装できるのでしょうか?
impl<T: [u8]> Into<T> for Hoge {
これも試してみたのですがシンタックスエラーになってしまいました。
0133デフォルトの名無しさん
垢版 |
2017/06/02(金) 18:53:59.81ID:ymoR0uYq
>>132
ttps://play.rust-lang.org/?gist=33ccca08ebe70d32141ce8cdaeddd76e&version=stable&backtrace=0
配列の長さが固定なら参照にしなくてもいいけど、多分可変長なんだろうからlifetime使わざるを得ない気がする

このスレでtokio, tokio言うからどんなものよと使ってみてるけどムツカシイ・・・
クライアントのサンプルコード少なすぎる、futuresの在り様が掴めなくて苦しいぜよ
0134デフォルトの名無しさん
垢版 |
2017/06/02(金) 20:26:56.32ID:ymoR0uYq
tokio好きのエロい人、ボスケテ
ttps://play.rust-lang.org/?gist=1efad716955551cd68c21b0183b9f942&version=stable&backtrace=0

これで実行すると、リクエスト送信 => レスポンス受信 => リクエスト送信、みたいな動きになる
sendとsend_allで二回送信してるんだろうから分からいでもないんだけど
リクエスト送信 => レスポンス受信、の動きにするにはどうすりゃいいの
0135デフォルトの名無しさん
垢版 |
2017/06/03(土) 19:09:45.21ID:MHNPbMg7
logとかrandとか、標準ライブラリではないけと、ほぼ公式ライブラリ化してるcrateのリストって、どこかにある?
0137デフォルトの名無しさん
垢版 |
2017/06/03(土) 22:00:53.66ID:MHNPbMg7
>>136
いい感じだね
Authors欄がThe Rust Project Developersになってるcrateのリストが
公式サイトのどこかにあるかなと思ったけど無いなあ
0143132
垢版 |
2017/06/04(日) 10:44:11.97ID:rLXx1OCs
>>133
そこにもlifetime指定できたのですね。ありがとうございます!
0144デフォルトの名無しさん
垢版 |
2017/06/04(日) 14:04:24.56ID:W9jPbq7z
C++のとき=で右辺の状態が変わるのが人間の直観によろしくないと
非常に明白な結論が出てるのに
なんで変えなかったんですかね

思考が著しく阻害される
0147デフォルトの名無しさん
垢版 |
2017/06/04(日) 16:42:30.55ID:qUWZGkRh
>>145
代入ってよく使うのに2文字はだるすぎ
慣れれば=でも問題ない
0149デフォルトの名無しさん
垢版 |
2017/06/04(日) 17:07:01.45ID:zptvcWS6
>>51
valgrindの扱えない 一般のuse-after-free って何だ?
0151デフォルトの名無しさん
垢版 |
2017/06/04(日) 21:24:44.90ID:Ukp5iwZo
>>150
ファイルに関してはValgrindには--track-fds=yesがあるから例として微妙では
もうちょっとドメイン固有なもの、例えばSerdeでDeserializerを2回使うのを防ぐとかの方がありがたみが強そう
0152デフォルトの名無しさん
垢版 |
2017/06/04(日) 21:40:25.92ID:qOHu1i3Q
valgrindみたいな実行時チェックとコンパイル時の静的チェック比較してどうするの
0153デフォルトの名無しさん
垢版 |
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.

彼は一体誰と戦っているのだろう……
0154デフォルトの名無しさん
垢版 |
2017/06/06(火) 02:28:52.15ID:LS7abRGk
というか、try!をdeprecateする話なんてあったか?
Rust 1.13以前をサポートするcrate(特にnursery系)ではバリバリ現役じゃん
0155デフォルトの名無しさん
垢版 |
2017/06/06(火) 13:02:17.27ID:29cDHiwu
そういや、crates.ioに公開されてるものって
対応してるrustcのバージョンが不明確だな
0156デフォルトの名無しさん
垢版 |
2017/06/06(火) 21:24:51.99ID:LrtFpx4M
案の定、誰もtokioを使ったことない感じでスルーされつつ自己解決した
ttps://play.rust-lang.org/?gist=42a8464afde50942d9a162f3d1cfe9c0&version=stable&backtrace=0

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

とりあえず、奥深いと言うかなんと言うか、tokio及びfuturesの闇の深さが分かったのでちょっと遊ぼう
tokioはstd:netのラッパーで本当に早いの?な感じだったけど、futuresの方は中々に面白い
0158デフォルトの名無しさん
垢版 |
2017/06/06(火) 21:39:21.98ID:LrtFpx4M
tokioもサーバサイドで使うぶんには効率的よ?と直前のレスをちゃぶ台返し

エアプログラミングで卓上で論じる分には楽しいけど、実際使ってみようとしたらドキュメント少なすぎるだろ
futuresのtutorialみたらtokio.ioに飛ばされてスッゲーあっさりとしか書かれてないでやんの
0159デフォルトの名無しさん
垢版 |
2017/06/07(水) 10:48:52.84ID:oMhdv7bq
な?Rustってまともに使える言語じゃないだろ?
だからもう騙されるのは終わりにしようぜ。
0161デフォルトの名無しさん
垢版 |
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で連結できないのかと悩んだよ
0162デフォルトの名無しさん
垢版 |
2017/06/07(水) 20:19:54.47ID:xcCDpPBC
むしろ同じエラー型しか返せないとしたら面倒臭いわな
例えばfutures_cpupoolで常にio::Errorしか返せないとかだったら扱いにくいのなんのって
0163デフォルトの名無しさん
垢版 |
2017/06/07(水) 20:43:02.03ID:CD/BPHg5
Futureの操作元(今回はStream)をエラー時にも返したい時がある的な振る舞いは未だに理解できんぞ
sinkはErrでstreamは(Err, Stream)とかイミフ、どうせなら両方ともタプルにしてくれよ
0164デフォルトの名無しさん
垢版 |
2017/06/07(水) 20:44:49.12ID:aNYsG6oK
それはそうだが、StreamFuture::Errorの型はあれはちょっとなあ……
所有権を返したいってのはなんとなく分かるが
0166デフォルトの名無しさん
垢版 |
2017/06/08(木) 02:32:18.91ID:+DWZ9aoq
reqwest、HTTPヘッダやMIMEタイプまでそれぞれ別個にタイプセーフとかクレイジーだな、いい意味で
いや、hyperのせいか
0171デフォルトの名無しさん
垢版 |
2017/06/09(金) 14:25:21.34ID:2Ut1GWuy
gitよりmercurialが好きです(半ギレ

pijul(とdarcs)は初めて存在を知ったけどほーって感じ
Pull Requestはサービスプロバイダに依存するから、VCS自体にPR管理機能を持つのは良いのかもねぇ
0173デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:36:57.58ID:CZ4YsNdD
Rustはgithubに依存しすぎだろ
GoogleやMicrosoftも似たようなサービス始めるみたいだし、もっと中立的になった方がいい
0174デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:39:14.20ID:F1/ud66B
goもかなり依存してないか?
0175デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:44:08.83ID:+ro9fQGu
github依存度で言ったらGoよりましじゃないかな?自前でcrates.io持ってるし。
まあgithubに依存してなくてもやらかしたnpm見てるとgithub依存も最悪ではないみたいに思ってしまうがな。

というかgithub以外のまともなホスティングサービスがないのが悪い
0176デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:49:49.79ID:CZ4YsNdD
Scala/JavaのIvyみたいに、crates.io互換鯖を自由に立てられるようにしようとか
crates.ioのログインにgithubアカウント以外も使えるようにしようとかの動きは無いのかな?
0177デフォルトの名無しさん
垢版 |
2017/06/09(金) 15:51:15.80ID:+ro9fQGu
まあそれはともかく、gitとhgのサポートが既にあるのに
pijulとかいうまだまともに使えないVCSをwritten in Rustってだけで突っ込むのは
内輪のノリがきつすぎてイタい子なんだなあって感想
0179デフォルトの名無しさん
垢版 |
2017/06/09(金) 16:00:58.60ID:+ro9fQGu
>>178
ghcすらdarcsを捨てたと言うのにな。

というか今気づいたけどcargoってSubversion対応してねえのか。pijulとやらより
そっち先じゃねえの?
0180デフォルトの名無しさん
垢版 |
2017/06/09(金) 16:13:07.06ID:2Ut1GWuy
>>175
bitbucketがあるだろ!!(今度こそマジギレ

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

pijulが強制されるわけでもなく、今まで通りcrates.ioホスティングがデフォルトだからgithub(git)に依存してないでしょ
個人的には面白いVCSだとは思うけど、率先して採用するプロジェクトはなさそう
0181デフォルトの名無しさん
垢版 |
2017/06/09(金) 16:17:48.77ID:CZ4YsNdD
cargoのdependenciesにbitbucketのmercurialを書けるようにするissueは、前に見かけた気がする
たしか、やる気がないわけではないけど、使いやすいライブラリが無い的な返答だったような
直にリンクするとGPLになるとか
0183デフォルトの名無しさん
垢版 |
2017/06/09(金) 20:27:02.60ID:eJzwOC8V
>>177
内輪云々というか、たまたま気が向いた人がPRを送ってきたから受け入れたってだけの話じゃないの?
それを言い出したら標準ライブラリだってredoxサポートのためのコードがたくさんあるし
0184デフォルトの名無しさん
垢版 |
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されるなり、どっちに転んでも笑い話だと思う
0185デフォルトの名無しさん
垢版 |
2017/06/10(土) 04:46:24.86ID:8idv0Ky2
pijul(ピフル)試してみた
・ドキュメント無さすぎ
・パッチのハッシュがクソ長いし、指定時に省略できない
・SSH周りがいろいろおかしい。agent使えないとか
・エラーメッセージが全く役に立たない。コード読んで初めて原因が分かる感じ
・現在のバージョンを特定するタグ、IDのようなものが未実装
・複数ファイルの追加は一つずつ指定する必要がある。ディレクトリ一括とかダメ
・ワーキングディレクトリ内の未追加ファイルを一覧するコマンドが無い。要記憶力
・ワーキングディレクトリ内の状態を一覧するコマンドが無い
・ファイルとして受け取ったパッチの取り込みを行うコマンドが無いので、自分で.pijulディレクトリの中にコピーするらしい

結論:実用にはあと2年は待ちたい。すぐ使いたいならdarcs使え
0187デフォルトの名無しさん
垢版 |
2017/06/10(土) 10:47:52.24ID:FHASBQwb
pijul対応はpijulの開発者たちがドッグードするためなんじゃないの
pijul自体がpijulで管理されてるからcargoサポートがないと不便そう
0188デフォルトの名無しさん
垢版 |
2017/06/10(土) 11:06:43.94ID:Ha8NmJTT
何かRustディスることに血道を上げてる粘着がおるな
自分の言葉で批判しようとするとフルボッコにされるから、最近は他人のまともな批判に乗っかってせせこましいレスしかできなくなってるが
>>159とか>>186とか
0191デフォルトの名無しさん
垢版 |
2017/06/10(土) 14:23:08.91ID:8idv0Ky2
>>187
取り込まれたPR見れば分かるけど、VCSサポートって言っても、cargo newの後に
自動で pijul init を呼ぶだけの処理しかしてない

Mercurialのサポートとほとんど同じレベルだが、Mercurialの場合は hg init 呼んだ後に
さらに .hgignore ファイルも追加してくれるとこだけが違う
尚、この自動で追加される .hgignore は文法ミスってて使えない
0193デフォルトの名無しさん
垢版 |
2017/06/10(土) 16:38:35.42ID:V34f+MUj
なんでお前らはこんな文法はゴミクズ、コンパイラはエラーしか吐かない、ライブラリはカス未満の
クソモジラの息がかかってる言語なんてありがたがってるのか本気でわからんのだが
モジラから金もらってる以外の理由あんの?
0194デフォルトの名無しさん
垢版 |
2017/06/10(土) 16:43:45.87ID:FHASBQwb
>>191
git://みたいにpijul://みたいなプロトコルのサポートも入ったのかと思ってたけど
initだけなら大した話ではないわな
それぐらいならsvnだろうがcvsだろうが
PR出したら簡単に取り込まれそう
0195デフォルトの名無しさん
垢版 |
2017/06/10(土) 16:47:08.14ID:FHASBQwb
そういえばsvnはgit init相当の処理はないから
cargo newの時にやることないな
cvsもよく知らないけど同じかな
0197デフォルトの名無しさん
垢版 |
2017/06/10(土) 17:34:28.98ID:IftbJTTs
ああ、ほんとそんだけなのか。
pijulリポジトリやhgリポジトリからもcargoとってこれるとかではないんだな。
0203デフォルトの名無しさん
垢版 |
2017/06/11(日) 15:06:17.17ID:qjl5AbWq
>>202
それ、俺も思った。
何でだろう?
0206デフォルトの名無しさん
垢版 |
2017/06/11(日) 22:30:10.43ID:X3vCZvzy
Second Editionはどういう意図か知らないけど、
"str".to_string()
"str".to_owned()
の代わりに
String::from("str")
を全面的に使うようにしてるね
0211デフォルトの名無しさん
垢版 |
2017/06/14(水) 09:57:33.18ID:XYFguvYM
Tokio対応したHyperがリリースされたな
これからWebフレームワークも対応していくのだろうか
0212デフォルトの名無しさん
垢版 |
2017/06/15(木) 18:41:09.39ID:mn+yn6ig
pijul試してたら、なんかいつの間にかファイルが壊れて、テキストとバイナリがまぜこぜになったファイルが出来てしまった
0220デフォルトの名無しさん
垢版 |
2017/06/22(木) 19:34:29.89ID:eBYfVtnR
そのうちcratesトロール出てくるぞ
0221デフォルトの名無しさん
垢版 |
2017/06/24(土) 00:33:06.17ID:61WeFMfR
更新止まったの除くとcrates.io使ってるのあんまりないよ。
ホスティング直接探しに行くとrustのライブラリ結構ある。
それより依存型が欲しい。
0228デフォルトの名無しさん
垢版 |
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年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
0229デフォルトの名無しさん
垢版 |
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のブログ読んでもそこは言及してないように読めるので教えてくれい
0230デフォルトの名無しさん
垢版 |
2017/07/01(土) 20:18:30.04ID:9xGm3OAZ
コンパイラの最適化で消えるか、消えないにしてもstackいじるだけだから無視できるほど小さいコストなんだと思う
0231デフォルトの名無しさん
垢版 |
2017/07/02(日) 07:08:11.19ID:91oxOYnU
んー、その擁護は微妙に納得いかないかな...
AndThen, Mapは状態変数を保持するenumを内包するstructなので消えないはずだよねぇ
まぁstackいじるだけという言い分として、ならば実行時のcallでBoxFutureを返すのはバッドノウハウってことか
BoxFutureを返すのと、Futureを実装したstructを返すのと、どっちがZero-costに近いかは測ってみるか
サンプルだとBox<Future>だけど、Tokioは一律structを実装してるから、後者の方が早いんだろうけども
0232デフォルトの名無しさん
垢版 |
2017/07/02(日) 11:32:28.47ID:onBZ93I5
すまん、よくよく考えたら実行中にBox<Future>を返すのは動的にステートマシンのタスクを増やす行為だからNGだ
Futureを返さなきゃと.boxed()使ってたけど、素直にPollで結果を包むだけでよかった
0233デフォルトの名無しさん
垢版 |
2017/07/04(火) 00:00:54.04ID:YlAGoiwI
futuers-rsは

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

すぐにfutures-cpupoolを見つける

までが予定調和。

Zero-cost ~~futures and~~ streams in Rust
0234デフォルトの名無しさん
垢版 |
2017/07/04(火) 09:31:46.73ID:ETZVte8W
これZero-costじゃねぇじゃねーか

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

までが予定調和だったわ
下手な自作設計よりは全然コスト軽いけど鵜呑みは良くないね
0237デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:09:55.73ID:Aj2F4wHv
aturon氏の記事(Zero-cost futures in Rust)を読めば"zero cost"というのは「直にステートマシンを書いたのと同様のコードにコンパイルする」という意味で言っていると分かるはずで、
状態変数があるからzero costじゃないなどという指摘は出てこないと思うのだけど
0239デフォルトの名無しさん
垢版 |
2017/07/04(火) 14:05:06.69ID:At6b76le
>>237


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

言葉遊びによるZero-cost警察の方なら触ってスマン
0242デフォルトの名無しさん
垢版 |
2017/07/04(火) 18:21:59.60ID:ZOpHOB0v
実行はゼロコストかも分からんが書くコストが青天井なので結局意味のない言語
0244デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:45:10.68ID:sW2FXAJU
javaはzero-overheadの語を使うけどrustはzero-costを使うよね。
zero-overheadだと追加の余計なコストがかからないという意味がわかるけど、
zero-costだとコストそのものがないと言っているのかzero-overheadと同じ意味で使ってるのか定かではないと思う。
0245デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:53:04.21ID:Aj2F4wHv
Rustでzero-cost (abstraction)といったら抽象化レイヤーによるコストが0という意味だろうね
0247デフォルトの名無しさん
垢版 |
2017/07/05(水) 16:39:24.43ID:AAYKoEFk
激おこな警察官が多くて誰がどの立場で何を擁護してるのかワケワカメ

とりあえずまぁfuturesやtokioを下手に使うとコストがゴリゴリ上がってくのは分かった
ステートマシン(AndThenやMap)も抽象化しきれなかったのかstructでI/F切られてるし注意して使わんとな
0248デフォルトの名無しさん
垢版 |
2017/07/05(水) 17:11:36.04ID:MzNNcf5c
そりゃ、真にコストゼロはありえないだろう
一般に気にされてるのは、C/C++より多いかどうかでしょ
0250デフォルトの名無しさん
垢版 |
2017/07/05(水) 18:41:42.95ID:UiQJEPDB
ゼロコストがabstractionにかかっていることをつい忘れちゃう
まあ普通に考えたら、futuresでもIteratorでもMapを実現したいなら値と関数は保持しないといけないし、AndThenも前と次の値を持ってないといけないよね
ラッパー構造体のコストは引数がコピーじゃなければメモリ的にもCPU的にもゼロだったはず
0251デフォルトの名無しさん
垢版 |
2017/07/05(水) 19:26:13.97ID:AAYKoEFk
>>248
別にC/C++と比較してコストがあるかは気にしてないぞ
C++ TemplateとRust Traitは実質同じ所に行き着くんだから比較するほどの意味もなし

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

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

もう動かないかもしれないけど
去年くらいのwxWidgetsが3.2.0でFFI周りのI/Fを非公開にしてwxHogeHogeが全滅した
0252デフォルトの名無しさん
垢版 |
2017/07/05(水) 19:35:34.06ID:oPOjLgnt
>>150
コンパイラだってバカ正直にMap構造体を用意してそこにクロージャをそのままぶち込むようなコードは生成しないんやで
0255デフォルトの名無しさん
垢版 |
2017/07/05(水) 20:12:29.34ID:kX6rHoUh
>>249
GTKはまともに使えるっぽいけどそれじゃだめなの?
俺はgtkあんま好きじゃないからいやなんだけど
0256デフォルトの名無しさん
垢版 |
2017/07/06(木) 11:00:33.73ID:tRC1mrQq
>>247
>コストがゴリゴリ上がってくのは分かった
何を突然ファビョってるんだか
タスクごとのヒープアロケーション数はΘ(1)に抑えられているだろ
0257デフォルトの名無しさん
垢版 |
2017/07/06(木) 20:30:03.81ID:kH42VxHy
最近の公式の動きを見ていると、WebフレームワークはRocketを推していく方針に見えるな
0260デフォルトの名無しさん
垢版 |
2017/07/10(月) 13:58:50.67ID:mQ3pGq+a
オラクルがrustでコンテナランタイム作っとるってよ
0262デフォルトの名無しさん
垢版 |
2017/07/11(火) 13:53:59.15ID:5tKo2E+W
オラクルの時点でお察し案件じゃん
まあオラクルとモジラは業界のゴロ同士仲がよろしいんですなあ
0263デフォルトの名無しさん
垢版 |
2017/07/14(金) 04:46:26.78ID:TKiI+WcD
google という名前のcrateが上がってて、
説明文が "Google is evil"
バージョン番号が "6.6.6"
0265デフォルトの名無しさん
垢版 |
2017/07/15(土) 17:00:03.78ID:U+uVxSdX
Rust公式がTwitterで"Rocketの新バージョンがリリースされたぜ"とか呟いてて、それに対して"Ironの何が悪いんだ"的なクソリプが付いてるの笑う
0266デフォルトの名無しさん
垢版 |
2017/07/15(土) 23:27:50.25ID:RjDGp9te
RustのSlackでmame氏にCでポインタとか触ったことありますか?って聞いてるやついてワロタ
0269デフォルトの名無しさん
垢版 |
2017/07/17(月) 22:50:00.44ID:8lRCTnOP
関連型ってさなんでいるの?
CeylonやC#みたいにgenericsのin/outで実現できない?
0270デフォルトの名無しさん
垢版 |
2017/07/18(火) 13:42:50.01ID:NOYbJ+oD
>>261
ライブラリの問題とかそういう回避方法はないのかと考察したけど、goroutineの仕様上無理ぽって結論なのか
rustが最適な言語かどうかは懐疑的だけど、go以外の使える新興言語ってのは他にないし仕方ないのかねぇ
0272デフォルトの名無しさん
垢版 |
2017/07/19(水) 22:47:17.03ID:UyJFKTdP
>>271
良くなったりするわけじゃなくて全く同じもの。
単にrustのジェネリックスに制限があるだけ。
in/outや+/-なのはjavaの境界ワイルドカード型の定義が
長いから短くなったものでキーワードにするかシギルにするかの好みの違い。
0273デフォルトの名無しさん
垢版 |
2017/07/20(木) 00:56:51.60ID:k7oT/owf
C#とか知らないから適当なことを言うけど、in/outって要は型パラメータの反/共変性を指定する構文ってこと?
Rustはクラスがないからあまり関係ないような気が
そもそも関連型と型パラメータは全く別物だし
0275デフォルトの名無しさん
垢版 |
2017/07/21(金) 03:20:29.74ID:kfdWC1ug
新しい言語は早い段階から使い始めれば
バージョンアップ時は変更点だけ覚えればいいけど
バージョンアップが重なったあとから始めようとすると覚えることいっぱいすぎ
Rustよ
もっとシンプルに
0277デフォルトの名無しさん
垢版 |
2017/07/21(金) 12:38:58.44ID:qDRT3Ece
Cargoがhigh level過ぎでrustcがlow level過ぎな課題はいつ解決するんかな
他のビルドツールを使ったプロジェクトにrustを入れるのが今は面倒
0278デフォルトの名無しさん
垢版 |
2017/07/21(金) 19:27:14.18ID:juJaC8N3
ていうか時報の反応速度が高くて笑う
まさかリリースの度に待機してるのか?
0281デフォルトの名無しさん
垢版 |
2017/07/22(土) 16:14:42.22ID:Jfa6LaZA
誉め言葉として受け取っておく
0285デフォルトの名無しさん
垢版 |
2017/07/22(土) 17:04:33.13ID:vk3cyWgj
というかどこに行けばRustの話をしていいのか分からない。英語ならRedditがあるけど
0288デフォルトの名無しさん
垢版 |
2017/07/22(土) 17:42:07.41ID:Oi7t7NSG
rust-jpのSlackとか?
ところでLLしか触ったことなかった俺も最近Rust使い始めてみたんだけど、有識者から見てRustで1番理解が大変なの(あるいは抑えておかなきゃならないとこ…)はどのあたりなのか教えて欲しい。
0291デフォルトの名無しさん
垢版 |
2017/07/22(土) 20:29:54.52ID:Oi7t7NSG
>>289
ありがとう
公式のチュートリアルみたいなやつ進めてるんだけど今のところトレイトオブジェクトらへんでちょっと理解に苦しんでる
0292デフォルトの名無しさん
垢版 |
2017/07/24(月) 12:10:36.01ID:1TXRI9Gx
rustって現場で使われ始めてるの?
メモリ管理周りのメンタルモデルって他の言語に応用利いたりする?
コードがきれいになるとか?
始めるモチベが欲しい。
0294デフォルトの名無しさん
垢版 |
2017/07/24(月) 14:12:02.33ID:K7WDOtB+
>>292

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

1は本当に大きくて、自分のコードとコンパイラが喧嘩になると大抵自分のアーキテクチャが悪く、直すとちゃんと正しい実装になって感動する。つまり正しいコードが書けるようになる
0295デフォルトの名無しさん
垢版 |
2017/07/24(月) 14:19:11.38ID:1TXRI9Gx
>>294
もう一つ。仕事で使ってたりする?
goのcliツールはよく見るんだけど
rust製って何が有名なのかね?
ブラウザ以外で
0302デフォルトの名無しさん
垢版 |
2017/07/24(月) 23:36:39.90ID:mh/Tz+0K
確かにcliは書きやすくて社内で使ってるサポートツール類はほとんどRust製。
小さいツールだと関係者も少なくて説得しやすいし。

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

こことか見ててもそういうパターンが多いように見える。
さすがに大規模なプロダクションコードをいきなり
置き換えとか無理だろうし。
0304デフォルトの名無しさん
垢版 |
2017/07/25(火) 06:07:27.53ID:5XPEt11J
おお、色々情報ありがとう。
今のところgoのcliツールのほうが目立ってるのは、単純に1.0のリリース時期の違いによるものなのかな。


redox は気になるなー。rustのメモリ管理の仕組みからいってバグが少ないosになるのかな。ちょっと試してみたいかも。reduxと名前が似てるのがなんかやだけど
0306デフォルトの名無しさん
垢版 |
2017/07/25(火) 11:37:29.68ID:5XPEt11J
俺が知ってるのは
peco、ghq 辺りかな。
ghqは常用してるけど最近重くなってきてるからぜひrustで軽くなるならして欲しい。
多分gitにアクセスしてる部分がボトルネックな気がするけど。
0307デフォルトの名無しさん
垢版 |
2017/07/25(火) 11:45:28.60ID:5XPEt11J
あとgitをrustで書き直したらはやくなるとかないかね。
ライナスに喧嘩売ることになるかもだけど。
それをきっかけにlinuxをcにこだわるのをやめてくれるかもw
0313デフォルトの名無しさん
垢版 |
2017/07/25(火) 17:38:52.31ID:qu0St3oz
>>307
Facebookが社内向けにMercurial(Python + C)をRustで一部?書き直したら速かったらしい

俺も、社内向けツールを前任者がgoで書いたのを幾つかRustに移植してる
ただの練習素材として移植してたけど、2〜3倍速くなったよ
0315デフォルトの名無しさん
垢版 |
2017/07/25(火) 20:32:46.37ID:5XPEt11J
>>313
おおー。魅力的な話だね。
メモリの使用量もrustだと減るようなきがするんだけどそのへんどうかな。
0316デフォルトの名無しさん
垢版 |
2017/07/25(火) 21:45:29.88ID:7Ef69C7C
rustは今の日本だと凄腕のプログラマが使ってるところはちょいちょい見かけるな。
もっとwebの人たちがたくさん布教すればいいんだろうけど、やっぱrust自体が難しいのかね。
C++とよくセットで名前が出てくるから、ビビる人が多いのかなーとも思う
0317デフォルトの名無しさん
垢版 |
2017/07/25(火) 22:11:08.39ID:FfK5LQFv
最近真面目に勉強し始めたけど潜在的に難解なバグを生み出す汚いコードを平気で書く人だと
コンパイルが通らないので辛いと思う。
若干煽り気味に言えばPHPやRailsだけやってプログラミングを分かった気になってちゃんと勉強してない人には無理。
0318デフォルトの名無しさん
垢版 |
2017/07/25(火) 22:21:26.92ID:5XPEt11J
ios -> objc, swift
android -> kotlin,java
web frontend -> typescript, javascript
web backend -> go,ruby,php
ってイメージだがrustはどこに入るの?
0320デフォルトの名無しさん
垢版 |
2017/07/26(水) 02:52:39.50ID:mSfCdN7l
>>318
希望的観測で言えば、
今までC/C++で書かれていたようなもの全てと、今goで書かれているものの半分 -> rust

WebAssemblyをほんとに必要としてるのは、ごく一部の人だと思う
0321デフォルトの名無しさん
垢版 |
2017/07/26(水) 08:56:45.29ID:ENBFGRGX
>>320
例えばc++ でUE4って書かれてるけど
そこをrustでってのはあるのかな?
ゲームエンジンとかはc++ってイメージだけどそれがrustでどうなるのか興味あるなー。
c++よりバグが少なくなってメモリ使用量も減るなら
家庭用ゲーム機とかの性能向上に役立ちそうだけど。
0323デフォルトの名無しさん
垢版 |
2017/07/26(水) 12:59:44.03ID:TL1HhZT+
>>321
ゲームエンジンそのものがRustで書かれているのでなければ移行はないと思ってる
自分は据え置き開発だけど、ライブラリやツールやアセットパイプライン含めてC++ならそのまま利用する方が楽だし、ゲーム会社ならC++の資産やノウハウも蓄積されてる
0324デフォルトの名無しさん
垢版 |
2017/07/26(水) 16:21:03.85ID:G2QlGkU/
>>323
環境的にc++14使うくらいは許されてるの?
0326デフォルトの名無しさん
垢版 |
2017/07/26(水) 18:36:05.35ID:0VRUk0dC
>>320はゲームエンジンそのものがrustにならんかのーって話じゃないの
その上っ面はC++のままで良いんでない
0328デフォルトの名無しさん
垢版 |
2017/07/27(木) 00:05:30.43ID:YcR0VV5Q
>>327
なんややっぱりそうなんだ。
やっててあんまり面白いとも思えなかったしね。
今シンタックスのところを読んでるけど、goより学習コストは高いなーと思った。
メモリ管理のメンタルモデルは学習を避けることができないから、尚の事学習コストは高いよね。
使い始めに関してはc++より難しいんと違う?
0329デフォルトの名無しさん
垢版 |
2017/07/27(木) 00:15:56.27ID:YcR0VV5Q
goを学習するモチベーションとなったのはgoroutineで並列処理を簡単に書けるからだったんだよね。
phpのバッチ処理を学習期間は2,3日で
goで並列処理を書けるようになった。

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


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

rustを書きはじめる皆さんのきっかけを教えてください。
0330デフォルトの名無しさん
垢版 |
2017/07/27(木) 08:45:36.82ID:alz7xNNS
>>329
社内でのC++開発に疲れて代替を探して。
ブライベートで使って、社内もこれにしたいと妄想する。そして誰も社内でRust使えない。
0331デフォルトの名無しさん
垢版 |
2017/07/27(木) 09:07:26.49ID:alz7xNNS
>>313
Rustにしちゃって、あなたの後任が困るとか、そういうことはないの?
社内でもRust認められてる?
0332デフォルトの名無しさん
垢版 |
2017/07/27(木) 10:08:19.56ID:JZl+5b/l
コードに問題があればcargo runでエラーが出ますけど
ビルドせずチェックだけを行う方法ないですか?

あと定番のlintツールも教えてください
0334デフォルトの名無しさん
垢版 |
2017/07/27(木) 12:47:34.70ID:tmRnr4Iu
>>331
前任者も認められてたからgo使ったわけじゃなく、goがもっとマイナーだった頃に勝手に使ってただけだし
俺も存在するかどうかわからない後任者など気にしてない
うちは大きな会社じゃないので、何を採用するかはプロジェクトリーダー次第
0336デフォルトの名無しさん
垢版 |
2017/07/27(木) 21:27:35.77ID:YcR0VV5Q
rustって課題を解いていく感じの学習サイトってないすかね?
goとかjsだとあるんだけど、、、
0339デフォルトの名無しさん
垢版 |
2017/07/28(金) 10:12:39.22ID:APGd6g7o
nightlyって頻繁に更新ありますか?
モバイルに接続してるのであんまり通信したくないからstable選んだんですけど
clippyがnightlyでしかインストールできないのつらい
0341デフォルトの名無しさん
垢版 |
2017/07/28(金) 17:20:05.54ID:HRHd+c6j
cargo checkだと全てのrsファイルをチェックするので
cargo check hoge.rsみたいに特定のファイルを指定してチェックする方法ありませんか?
0343デフォルトの名無しさん
垢版 |
2017/07/28(金) 18:24:34.83ID:cPwtoBYF
>>342
あ、そのモジュールが他のモジュールに全く依存していない場合はrustc hoge.rs --crate-type=lib --emit=metadataが一応使えるんだった
ただしこれはカレントディレクトリにゴミをまき散らすからあまりおすすめできない
0345デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:25:19.67ID:kWrQnfQi
目の前の便利な箱で調べること出来ない教えて君は
実はRustで作った人工知能試験で動作試験してるんじゃなかろうな
0346デフォルトの名無しさん
垢版 |
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するとこの警告が出なくなる
なんででしょうか?
0348デフォルトの名無しさん
垢版 |
2017/07/29(土) 00:47:07.63ID:DIZfrj77
rustってまだ安定してない感じ?
開発環境は何がおすすめなんです?
vscodeを試したけどあんまりrustに対応してない感が
0351デフォルトの名無しさん
垢版 |
2017/07/29(土) 10:51:47.46ID:Xgmp5DuD
Rustについて調べているのですが2点ほど質問です
・所有権、借用権ってどのようなケースを想定した機能なのか?
 並行処理を行うコードを書く時には同期ミスによる破壊を防止できて便利そうだけど上手い活用ケースを想像できない
・OS無しで動かすコードを書くケースでRustが謳うメリットはどの程度いかせるのか?
 メモリマップドレジスタへアクセスするためにunsafeと生ポインタを多用することになる
 このようなケースでコンパイル時の安全性の検査条件などはカスタマイズできたりするのか
0353デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:52:24.62ID:U9LihKmk
IDEAとvscodeってどっちがおすすすめ?
0354デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:52:42.83ID:U9LihKmk
おすすめ?
0355デフォルトの名無しさん
垢版 |
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
0357デフォルトの名無しさん
垢版 |
2017/07/29(土) 16:29:29.84ID:PuR8d8Sj
ideaのrustプラギンはメソッドチェインが深くなるとハイライトされなくなって、リネームとかも取りこぼすことがある。それ以外はよくできてて満足
0358デフォルトの名無しさん
垢版 |
2017/07/29(土) 16:43:27.84ID:mj0H/MXI
>>351
所有と借用は、設計の考え方として言語問わず有効なので、コンパイラに強制されるのはかなり嬉しい。

と言うのも、所有を考えないで動的メモリを使ったプログラムは、シングルスレッドであっても、ライフタイム問題を起こしやすいんだよね。
他人にヤラれると殺意がわく。
0359デフォルトの名無しさん
垢版 |
2017/07/29(土) 16:55:38.17ID:mj0H/MXI
>>351
借用に関しては、不意の同期漏れ防止と思ってる。

ご存知の通り、マルチスレッドでは、同じオブジェクトを触るときに同期処理を入れないと、データ破壊しちゃうじゃん?
C言語だと、この危険な状態がデフォルトで、気付くかどうかは人間次第。
でも、rustはコンパイラがその危険な状態を防いでくれると言うだけだと思う。
0360デフォルトの名無しさん
垢版 |
2017/07/29(土) 17:08:36.25ID:mj0H/MXI
>>351
最後、OS無しはどうかなー。

自分ならこうするかなっていうテキトーな意見だけど、生メモリアクセスが必要な部分(デバドラとか)はC/C++で書いて、アプリ部をrustで書いてFFIバインドかなー。
0361デフォルトの名無しさん
垢版 |
2017/07/29(土) 17:23:05.64ID:H7MJnrUX
Rustの素晴らしさを理解するにはC++を理解する必要がある?
0363デフォルトの名無しさん
垢版 |
2017/07/29(土) 17:41:05.57ID:mj0H/MXI
>>362
最初から最後までメモリ安全じゃなくてもいいんじゃない?
適材適所で使い分ければ。

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

ドメイン境界で考えて、rustを適用する範囲内で潔白なのが重要と思ってる。
この潔白さは、開発者の人数が多いドメイン(アプリ)で、真価を発揮するんじゃないかなと。
0364デフォルトの名無しさん
垢版 |
2017/07/29(土) 18:00:00.71ID:SaJE2wIQ
racer + flycheck-rust でマクロ補完って無理?
println!とかwrite!とか毎回全部打つのがダルい
0365デフォルトの名無しさん
垢版 |
2017/07/29(土) 18:10:49.31ID:DIZfrj77
>>363
結局cには勝てないのか。
rustってgcがないからメモリイメージを直接いじりやすいのかと思ってたよ。
redoxとかも結局c++に頼ってたりするんかな?
0366デフォルトの名無しさん
垢版 |
2017/07/29(土) 18:13:03.21ID:DIZfrj77
>>363
あと最初から最後までメモリ安全のほうが良くない?
少なくともメモリ関連のバグを撲滅できるんであればrustの価値はあると思うんだ。
逆にできないならrustの存在意義ってなんだろ。

goは並行処理が言語機能に組み込まれてる。
rustはメモリ安全が売りだと思うんだけど、
そこってなかなか地味な売りな気がして
0367デフォルトの名無しさん
垢版 |
2017/07/29(土) 18:57:22.38ID:mj0H/MXI
>>365
Cに頼る→負けてるって事じゃないと思うけどね。
実際アセンブリ言語はなくならないわけだし。

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

別にCを駆逐する必要はないしょ。
0368デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:02:32.30ID:mj0H/MXI
>>366
そもそも、ハードに近い層でのメモリ安全性って何?って話だと思うんだ。

で、メモリ安全の話が出てこない領域なのだから、rustの出番が無いって事で良いんじゃない?
0369デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:05:29.70ID:mj0H/MXI
>>361
むしろC++をうまく使うために、rustの意味論(セマンティクス)を勉強して欲しい、って思う。
0370デフォルトの名無しさん
垢版 |
2017/07/29(土) 19:59:14.72ID:DIZfrj77
goができたのはgoogle社内のc++プロジェクトの置き換えのためだけどrustってどんな動機でできたの?。
まさかブラウザ開発のため?
0371346
垢版 |
2017/07/29(土) 20:14:02.81ID:DdYvAide
>>347
キャッシュを無効にして毎回警告を出すにはどうしたら良いでしょうか?
0373デフォルトの名無しさん
垢版 |
2017/07/29(土) 21:18:30.65ID:ZD4o/AdV
>>355
へー、monorepo用だからモノノケとな

mercurialをベースに仮想ファイルサーバーにする予定とは、なかなか壮大な計画だ
0374351
垢版 |
2017/07/29(土) 21:52:24.31ID:Xgmp5DuD
レスありがとうございます

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

>>360
構文上罠が多いC/C++の代替となる言語を探していてRustを検討しています
なのでC/C++を使わずにC/C++相当のことを行いたいです
警告もエラーも無しに動作だけがおかしいとか勘弁して欲しいです
他にDも検討していますが何となく新しい方が何かと便利かなと思ったり・・・
0376デフォルトの名無しさん
垢版 |
2017/07/30(日) 08:00:41.23ID:eSrcFrA9
>やはり並列処理時の安全性を担保する機能なのですね

race condition の解消はあくまでもメモリ安全の一部でしかない
0377デフォルトの名無しさん
垢版 |
2017/07/30(日) 08:02:46.70ID:eSrcFrA9
>他にDも検討していますが何となく新しい方が何かと便利かなと思ったり

Dが検討対象に入って、かつ、低水準用途なの?
意味わからんな
0380デフォルトの名無しさん
垢版 |
2017/07/30(日) 16:21:42.29ID:vygP638r
たぶんnode.js育ちの人だと思うけど、実質1行ないし3行で完結してるクレートが出てきてるね
0381デフォルトの名無しさん
垢版 |
2017/07/30(日) 17:42:42.26ID:cNiju5gN
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
clippyインストールできないclippyインストールできないclippyインストールできない
修正したコミットがが日曜の夜にコミットするって作者が言ってるけど遅すぎ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0382デフォルトの名無しさん
垢版 |
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"]

オプションの書き方が違っているんですかね?
0383デフォルトの名無しさん
垢版 |
2017/07/30(日) 19:51:11.45ID:m1nsIIH9
["-C", "target-feature=+crt-static"]
でどうかしら
0384デフォルトの名無しさん
垢版 |
2017/07/30(日) 20:00:04.61ID:IhAKIxVt
うーん、このへん試してみたんですけどだめなんですよね。

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

["target-feature", "+crt-static"]
0386デフォルトの名無しさん
垢版 |
2017/07/30(日) 23:38:44.64ID:dsY+op8E
まだruct学んで2日目だけど
これパッケージ入れる時のコンパイルが長いね
補完強化のためにracer入れようとしたらsyntax_syntaxから全然進まなくてCTRL+C押しちゃったよ
基本的なものを覚えるだけならパッケージなんて入れなくても良さそうだけど
ステップアップしたときにそれなりのスペックのPC持ってないと学習するのが厳しい言語って感じ
0387351
垢版 |
2017/07/31(月) 01:33:05.73ID:0NH1HYUL
>>377
C/C++より判りやすく罠が少なくC/C++で出来ることは全て出来る言語を探しています

>>378
ネイティブに動くプログラムで一番経験があるのはアセンブラ(組み込み)です
C/C++はなんの警告もなくメモリがぶっ壊れるし、どこが壊しているのかも判りにくいし
苦手です
0389デフォルトの名無しさん
垢版 |
2017/07/31(月) 13:44:43.25ID:luO5NyKL
ライフタイムもコンパイル時に検査してライフタイムの外側からアクセスする処理もコンパイルエラーにするって

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

cとかでもやろうと思えばできるって事?
cでmallocとかfreeを使わず、
全部変数定義してつかえばrustと同じ?
0390デフォルトの名無しさん
垢版 |
2017/07/31(月) 16:54:10.50ID:RkZnFpRc
メモリに限らずリソース確保全般を行わないプログラムって何ができるのか
可変サイズの入力を受け取るならmallocがほぼ必須じゃない?
1行MAX_LENGTH文字までのテキストしか処理しないとか?
0391デフォルトの名無しさん
垢版 |
2017/07/31(月) 17:16:32.22ID:CRPdTSOK
rustってどんな分野に向いてるのかいまいちわからないんだけど
webに使うのはおすすめできる?
0392351
垢版 |
2017/07/31(月) 19:18:45.74ID:S3S/4XWd
C/C++は言語仕様的にメモリの破壊を誘発しやすいと思っているんだけどそう思うのは自分だけなのだろうか

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

個人的にはメモリアクセスの規約を登録できてコンパイル時にそれをチェックしてくれると嬉しいんだけどな
0393デフォルトの名無しさん
垢版 |
2017/07/31(月) 19:24:58.57ID:nTqL7k1O
アセンブリ的な観点でCの挙動が予想できないと言っているようならRustなんて余計に抽象的で分かりづらいと思うのだが
Volatile関連の制御とかだって面倒なだけだし
0394351
垢版 |
2017/07/31(月) 21:28:38.42ID:S3S/4XWd
>>393
C/C++はメモリマップを意識しないと安全を確保できないけど、マッピングするのはコンパイラでありリンカでありOS
そのような状態で想定しないメモリアクセスが起きた時の挙動を予想することは自分には出来ないです
C/C++でバリバリ書いている人はこの程度出来て当たり前なのかな
0395デフォルトの名無しさん
垢版 |
2017/07/31(月) 22:26:49.07ID:nR0sqwYk
C/C++というレベルじゃなくて
LinuxのABIやldのリンカスクリプトがわからんレベルの人と予想
0398デフォルトの名無しさん
垢版 |
2017/08/01(火) 18:21:43.31ID:TrH0Acv/
>>394
(わりと一般的な)OS上で動かす限り、アセンブリ言語で書いても
リンカとローダが介在することには変わりないと思うけど。
0400デフォルトの名無しさん
垢版 |
2017/08/01(火) 19:26:38.99ID:A6tuVNB3
>>351
OSなしアセンブラを必要とする層で使える汎用高級言語を探してるならRustは適さないからお帰り
そういう言語が存在する気はしないけど夢追い人っぽいから応援はしてるよ
0401351
垢版 |
2017/08/01(火) 19:28:04.99ID:ascdikyg
新しめのプログラミング言語は十中八九メモリの安全を謳っているけどこれってC/C++でメモリの破壊や
メモリアクセス違反を多発させる事例が多いからと思っているけど違うのかな
これらの低減を目的にC/C++の代替言語としてRustやDなどを検討するっておかしな事なのだろうか
0402デフォルトの名無しさん
垢版 |
2017/08/01(火) 21:16:08.18ID:PIQ133u2
>>400
まじかーgcがないってOS無しで動かせる唯一の言語だと思ってたから残念
例えばESP8266とかESP32で使えたらいいとか思ってたよ。

webが利用用途じゃないって残念すぎるな。
そうするとrust使ってる層って仕事でc++を使ってる組み込み関係の層が
趣味的に触る言語ってことかな。
0403デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:02:02.77ID:A6tuVNB3
お前の中ではGC有無とOS要否は直結するのか(驚愕

ESPがどういうチップセット構成なのか知らんけど
ARM CPUならクロスコンパイルして動かせるんじゃね
多分、同じ程度の努力でGC載ってるGoも動くと思うけど
0404デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:04:43.31ID:H6BRQUwS
cargo checkすると
warning: the option `Z` is unstable
というメッセージが出るそうなんですがこのメッセージを出す方法を教えて頂けませんか?
0405デフォルトの名無しさん
垢版 |
2017/08/01(火) 22:04:54.04ID:8J/offgv
Webに関してはそれなりに精力的に開発されているから将来的には使い物になる可能性もある
crates.ioとかだってRust製だしね
0406351
垢版 |
2017/08/01(火) 22:43:53.38ID:ncmaIafS
>>402
ググるとラズパイ(タダのLinuxだが)向けコードをRustで書いてみたとか、プレステ1用のコードをRustで書いてみた
とか出てくるんだよね。自分が組み込みに使えるんじゃないかと思ったのもその辺が目にとまったから
昔よりかなり良くなっているとは言え汎用機と比べるとデバッグ手段は限定されるし、コンパイル時にコードの妥当性が
ある程度保たれるというのはメリットだと思う
組み込みで「どこかのメモリを壊しているようだが皆目見当が付かない」なんて事態は可能な限り回避したいしね
0407デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:38:23.97ID:Oyyz61S9
>>400
いや、そういう用途向けでしょ。
実際にOSの実装に用いられてるし。
0408デフォルトの名無しさん
垢版 |
2017/08/02(水) 00:46:25.26ID:9o+N0qJU
上の人はOSを書こうとしているんじゃなくてOS無しのままコードを書くつもりなんでないの?
言い換えると、extern crate coreすら出来ないやつ
0409デフォルトの名無しさん
垢版 |
2017/08/02(水) 01:03:22.66ID:OoZ5R2Ag
なんか勘違いしてる人がいるね
Rustが強いのは「ちゃんとラップしてあげれば」どんな環境でも「安全に」動かせること
例えばとあるレジスタを触っているときに他のレジスタを触れないようにするとかも(場合によってはコンパイルエラーのレベルで)できる
ただこのラップするっていうのが一番面倒で、そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ちょっとググったらArduinoでRustを動かすためのライブラリもあるからその辺り参考にすると良さそう

>>408
OS書くのもOS無しで書くのも変わらないと思うんだけど、coreを含められないってどういう状況?
libcoreは何にも依存してないからそんな状況ありえないと思ってた
0411351
垢版 |
2017/08/02(水) 01:16:10.65ID:Qb6MNIfM
あー・・・何となく判ってきた。組み込みでそのようなコードを書くのか判っている人からレスが付いていたのか
0412デフォルトの名無しさん
垢版 |
2017/08/02(水) 01:21:03.63ID:E8GFzbft
>>396
>>405
今は使い物にならないって事?
向いてると思って趣味のWEBアプリに採用したけどやめたほうがいいのかな
Golangは古臭すぎて使う気起きないし
正直速度はどうでもいいけど構文が好き
0413デフォルトの名無しさん
垢版 |
2017/08/02(水) 01:21:20.56ID:Hth04IJp
coreだって何にも依存しないというわけではない、けれどそれは自分で用意すれば良いしね
rust_begin_panicとかをどうやって用意するのかは知らないけど
0414デフォルトの名無しさん
垢版 |
2017/08/02(水) 01:22:27.24ID:/y5AMSWR
RustでもOS書けるでしょ
(もちろんCと同じく最低限のアセンブラはいるが)
ぐぐればいろいろ見つかるぞ
0415351
垢版 |
2017/08/02(水) 01:38:12.16ID:Qb6MNIfM
>>411ミスった。訂正
× 組み込みでそのようなコードを書くのか判っている人
○ 組み込みでどのようなコードを書くのか判っていない人

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

>そこで安全を担保できなければ=unsafe祭りならむしろCのが楽とも言える
ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
もちろん入力値のチェックは必要になるだろうけど
0416デフォルトの名無しさん
垢版 |
2017/08/02(水) 02:29:19.43ID:OoZ5R2Ag
>>413
確かにmemcpyとかあるね、忘れてた
まあこの辺りはCでも間違いなく自分で書くとこなので大したコストじゃないね
> rust_begin_panic
組み込みならシリアルにでもログ出して無限ループとかが普通かな?
こういうのはOS系のプロジェクトがとても参考になる

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

> ペリフェラルレジスタだけunsafeにしてすればと思ったけどそう単純な話ではないのかな
個人的にはunsafe使い始めると至る所で使うようになっちゃうのでお勧めしない
Rustの思想的にも未定義の挙動を許すunsafeはできるだけ避けるべきだしね
そんなの気にせずチェックしたいとこだけチェックさせるLint的な使い方もありっちゃあり
0417デフォルトの名無しさん
垢版 |
2017/08/02(水) 07:02:07.94ID:nq2BG13A
redoxのアセンブラで書いてる所すらもrust(高級言語)で書きたいって夢を語ってるんじゃないの?
結局何がしたいのか分からんな・・・

そこについては諦めているなら既に実用化されているし
そこを追っているならチップ毎のクロスコンパイラ作りを頑張れとしか言いようがねぇよ
0418デフォルトの名無しさん
垢版 |
2017/08/02(水) 08:11:06.98ID:Oyyz61S9
>>415
レジスタまで意識する用途なら、高級言語を使わないのが正解では

> xに値を書き込む時はyのnビットを1にしてからxへ書き込むとかあるしな。
それこそボード固有の話になるので。
高級言語でやるとしたら機能レベルで関数化して中身はインラインアセンブリで頑張るとか。
何れにせよ言語レベルで対応する話ではないな。
0419デフォルトの名無しさん
垢版 |
2017/08/02(水) 10:50:44.07ID:AyM7Pnm7
>>412
>向いてると思って趣味のWEBアプリに採用した

やってみたら良いと思う。
仮にミスマッチだったとしても、過程や結果を公開すれば、色んな人の役に立つ。
0420デフォルトの名無しさん
垢版 |
2017/08/02(水) 12:12:53.41ID:m0LDca1I
rustっていまのところ
何にも向いてないということか。

golangみたいにgoといえば並列処理!みたいなウリがないとなかなか厳しいな。
とりあえずwebはgoでいいや。
0421デフォルトの名無しさん
垢版 |
2017/08/02(水) 12:21:18.09ID:E8GFzbft
>>419
webアプリ作るならunsafe必須とか?
cもc++も触った事ないからunsafeだけは無理なんだけど…
0422デフォルトの名無しさん
垢版 |
2017/08/02(水) 12:56:49.05ID:qhSfUKHc
変なチューニングに走らない限りはunsafeは不要
ただしRailsでいうところのDoorkeeperやPaperclipみたいな便利ツールが少ないからそのあたりは自力でどうにかする必要がある
あと、現状で主要なフレームワークはみんなsynchronous。ただしRocketはそう遠くない将来にasync対応しそう。Ironはそもそもやる気があるのか分からん
0423デフォルトの名無しさん
垢版 |
2017/08/02(水) 15:19:15.45ID:E8GFzbft
>>422
unsafeは不要なのか、よかった
Railsは使ったことないから分からない
今まではNode.jsでexpress使ってたからそのまで分厚いフレームワークは使ったことない
rustってイベントループじゃなくてスレッドだよね?10K問題はどうなの?
0424デフォルトの名無しさん
垢版 |
2017/08/02(水) 16:38:11.64ID:I334RkfN
goでいいや、という人はまさにgoでよいのでは。
goではいやだ、という人むけ。
0425デフォルトの名無しさん
垢版 |
2017/08/02(水) 16:42:18.62ID:E8GFzbft
goとかいうmapもnull安全もないうんこは絶対NG
0426デフォルトの名無しさん
垢版 |
2017/08/02(水) 17:58:49.69ID:m0LDca1I
goが嫌だと言うなら
kotlinという選択肢もある。
これだとアンドロイドアプリももれなく使えるようになるし、
null安全だし。
何よりideが既にある
0428デフォルトの名無しさん
垢版 |
2017/08/02(水) 18:07:43.92ID:E8GFzbft
kotlinもscalaもjvm言語だからあまりnull安全じゃない
0429デフォルトの名無しさん
垢版 |
2017/08/02(水) 19:54:07.78ID:7vYFqN5x
rustはno_coreにしてベアメタルでリージョンにメモリ管理やってもらうだけに全振りすればいいよ!
え?ヒープ使いたい?rustc_privateでalloc系をだな。
アセンブリもcpu毎にアセンブラ用意するのが面倒くさいからrustのinline asm使おうぜ。

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

>>428
言ってる意味がわからない。
0430351
垢版 |
2017/08/02(水) 20:02:49.43ID:5dN3nnfV
>>416
unsafeを使わないと任意のアドレスを読み書きできない(=レジスタにアクセス出来ない)と思っていたけど他の手があるのか
0431デフォルトの名無しさん
垢版 |
2017/08/02(水) 20:28:52.05ID:xy+LcKRk
本格的にOS無しの世界に入ったことが無いから適当だけど、関数型プログラミングの道具が使える、とか?>Rustのメリット
代数的データ型とかラムダ式orクロージャが簡単に扱えるとか。

趣旨から外れるけど、Cの世界に入れるのと同じような感じでRustの世界に入ることができるのも個人的には良いと思ってる
0432デフォルトの名無しさん
垢版 |
2017/08/02(水) 20:31:53.85ID:E8GFzbft
>>429
javaのライブラリ使える代わりにjavaライブラリはnull安全じゃないよって事
0433デフォルトの名無しさん
垢版 |
2017/08/02(水) 20:54:36.60ID:Hth04IJp
>>429
>cargo checkはZオプション付けてるだけ
補足するなら、これは非標準のcargo-checkサブコマンドの挙動であって、
標準のcargo checkは--emit metadataを使っているから警告は出ない
0434デフォルトの名無しさん
垢版 |
2017/08/02(水) 21:09:38.43ID:FxAsS3hN
>>429
>>433
普通に使ってれば表示されないメッセージなんですね
cargo checkが出力するエラーや警告などをもう少し調べたいんですけど
これってどこに乗ってるんでしょうか?
cargoのリポジトリクローンしてから適当なエラーでgrepしてもヒットしないんです
0435デフォルトの名無しさん
垢版 |
2017/08/02(水) 22:00:58.19ID:7vYFqN5x
>>432
VMじゃなくてライブラリの話ね。
ceylonみたいなjavaとのシームレスな通信を捨ててるJVM言語はどうだろうか?

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

`cargo install --list`してみ。

ttps://github.com/rsolomo/cargo-check
0438デフォルトの名無しさん
垢版 |
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を使う世界もありな気がしてきたぞ
0439デフォルトの名無しさん
垢版 |
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よりひどく、インスタンスにアクセスして、ヌルポ
0440デフォルトの名無しさん
垢版 |
2017/08/03(木) 07:06:29.97ID:l/KHeBEE
Kotlin信者が必死だなw

JVM要する時点で組み込み/低レイヤーに向かねーんだよ、土俵が別次元だ馬鹿
Android ARTはJVMじゃない?そのランタイムサイズ、Rustのランタイムサイズの何倍になってるのか分かってんの?
0443デフォルトの名無しさん
垢版 |
2017/08/03(木) 08:39:41.14ID:563u4f2I
>>441
いちいちスレチだけでレス削除してくれるほど運営も暇じゃねーよ
板違いのスレも最近は「落ちるまで放置してね」の方針なのに
0444デフォルトの名無しさん
垢版 |
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
()になりませんどうしてですか?
0445デフォルトの名無しさん
垢版 |
2017/08/03(木) 10:33:20.99ID:WxFDmNeE
>>440
ちなみにkotlin/native 開発中だからそれでrustと同じ土俵に立てるよ。
llvmの中間コード吐けるようになる。
rustより学習コストは低くて関数型チックな言語構文使ってるから
kotlin vs rustが勃発するな。
問題はandroid開発者を取り込めるからユーザー数は圧倒的
IDEも標準が存在する。
という点で色々rustは不利。
rustはwebAssenbryあたりで本領発揮できればいいんだけど。
0446デフォルトの名無しさん
垢版 |
2017/08/03(木) 10:35:36.32ID:WxFDmNeE
>>444
エラーメッセージ観るとelse節がないって怒ってるね
yに代入するんだからelseないと値が不定になるでしょ
0447デフォルトの名無しさん
垢版 |
2017/08/03(木) 10:39:45.44ID:WxFDmNeE
>>444
ごめんちゃんと読んでなかった

fn main() {
let x = 5;

let y = if x == 5 { () };
println!("{:?}",y)
}
これだと動くよね。型を() に統一しないとダメなんじゃない
0449デフォルトの名無しさん
垢版 |
2017/08/03(木) 16:58:16.30ID:cu622efE
IntelliJ Rustプラグインが、(IDEの)公式プラグイン化した
ついでにちょっとおせっかいな表示も始めた
関数呼び出し部分に仮引数名を補完表示とか、省略された型宣言を補完表示とか
0452デフォルトの名無しさん
垢版 |
2017/08/04(金) 09:17:26.55ID:plGTqVJg
あのプラグインの作者、前にPR出したらクッソ丁寧なダメ出ししてくれた
PRコメントの数倍のレスが返ってきてビビったわ
引き続きコミュニティベースで発展するといいのう、MozillaもJetBrainsもあんま要らんことするでないぞ
0454デフォルトの名無しさん
垢版 |
2017/08/04(金) 22:55:37.21ID:KlM1Xeqg
>>444,446,447,448
型が一致してないからや。
if式のelse句省略して戻り値の型にunitが推論されるのに
thenの方の戻り値の型がunit以外になるからエラーになる。

たぶん、rustc --explain 0317すればクソ丁寧に教えてくれる
0455デフォルトの名無しさん
垢版 |
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=が無視されているように見える
0457デフォルトの名無しさん
垢版 |
2017/08/05(土) 03:11:33.75ID:WbpcX2VW
他のインストール方法ー→スタンドアロンなインストーラーにビルド済みを固めたtar.gzがある
0459デフォルトの名無しさん
垢版 |
2017/08/05(土) 16:01:00.22ID:WbpcX2VW
オンラインによるインストールは可能な限り避けるようにしている。あとで環境の再現が必要になった時に詰む可能性がある
0461デフォルトの名無しさん
垢版 |
2017/08/05(土) 16:22:20.12ID:uZdWE4Go
脆弱性になるからってのもそうだけど、単純にSEGVでプログラムが落ちるのを防ぐためというのもある
0467デフォルトの名無しさん
垢版 |
2017/08/06(日) 10:24:33.59ID:gzkOLnwH
Rustの日本語書籍出る予定ないのかな?
0468デフォルトの名無しさん
垢版 |
2017/08/06(日) 17:24:42.71ID:hteV9R0w
>>467
英語で原典的な本が出るから遠からず日本語訳も出るだろ
ただし日本語訳の翻訳の質がどうなるかは全く安心できないことは
近年のプログラミング関連の英語書籍の日本語訳を見れば理解できるだろう
0469デフォルトの名無しさん
垢版 |
2017/08/06(日) 23:17:23.51ID:5q4qU5gd
書籍は情報が古すぎて当てにならんぞ。
文書化自体あんま力入れてないからソースコード読むのが一番早いよ。
0470デフォルトの名無しさん
垢版 |
2017/08/06(日) 23:38:02.09ID:Q0UOjaQj
訳のレベルに関係なく出せば売れるからかな
需要が少なすぎて競争にならないから訳の質がいい物が出ない?
0471デフォルトの名無しさん
垢版 |
2017/08/07(月) 04:31:33.89ID:+587VfNE
>>469
どのサイトのソースコード読むのがいいですか?
0472デフォルトの名無しさん
垢版 |
2017/08/07(月) 04:33:15.84ID:lxGlucTV
>>470
> 需要が少なすぎて競争にならないから訳の質がいい物が出ない?

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

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

近年の訳の質の低下に関してもう一つ重要なファクターとしては、最近の訳者が英語(特に会話面で)は達者になったのかも知れないが
明らかに昭和後期の訳者たちよりも日本語の文章力が低下していることだ(その結果として訳の日本語文が読むに耐えないレベルに堕している訳書が少なくない)
0473デフォルトの名無しさん
垢版 |
2017/08/07(月) 07:28:08.80ID:PGcD2DjA
というかそもそも書籍を出す以上利益を見込むわけだけどRustの書籍が出たところで到底コストに見合う利益をあげられるとは思えん
0474デフォルトの名無しさん
垢版 |
2017/08/07(月) 08:02:25.73ID:ElcK6Dg+
唐突に小論文もどきが発生していて笑う
steveklabnikやcarols10centsは大学の教官ですらないだろうけれどそれは良いのか
0475デフォルトの名無しさん
垢版 |
2017/08/07(月) 08:15:17.32ID:rE42Biik
「監訳者」がいるが「訳者」が書いてない本って、やっぱそんなもんだろうね
あるいは機械翻訳をちょこっと手直ししただけとか
名前を表に出すって内容に責任を持つってことだから、名前重要よ
0476デフォルトの名無しさん
垢版 |
2017/08/07(月) 08:29:28.94ID:+587VfNE
Rustの入門書サイトなどおすすめありますか?
0477 ◆QZaw55cn4c
垢版 |
2017/08/07(月) 08:31:32.26ID:Y4YBisBB
>>472
なにも今にはじまったことじゃない

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

プログラミング言語C とてそうやって作られた、といわれている
0478デフォルトの名無しさん
垢版 |
2017/08/07(月) 08:32:44.78ID:ONon98mg
典型的な老害で笑える
ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ
Googleのエンジニアですらやばい翻訳とかするのにたかが大学教授如きが完璧に翻訳できる訳がない
0479デフォルトの名無しさん
垢版 |
2017/08/07(月) 12:03:28.98ID:NP3377Zu
>>476
公式
0480デフォルトの名無しさん
垢版 |
2017/08/07(月) 16:12:50.80ID:lxGlucTV
>>478
> 典型的な老害で笑える
> ピアソンの技術書とか今出したら炎上間違いなしってレベルの翻訳もあっただろ

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

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

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

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

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

問題は、かつてならば普通の質で翻訳されていた難易度が平凡なレベルの教科書・技術書・学術書ですらまともな日本語訳でないのが量産されるようになったという点
0481デフォルトの名無しさん
垢版 |
2017/08/07(月) 17:27:07.42ID:PfKZEtLc
アカデミアを知ってる気取りの学生の臭いがプンプンするけど、そんなことを書き込んでいる暇があったら期末試験の勉強しとけよな
0482デフォルトの名無しさん
垢版 |
2017/08/07(月) 17:35:11.15ID:n0QtNiqf
>>472
> 英語の理工学書の翻訳の質はここ20年ほどの間に明らかに著しく低下した

それ何か根拠があって言ってんの? どうせお前の妄想だろ。
長々と言い訳せんで良いよ、消えろ。
0483デフォルトの名無しさん
垢版 |
2017/08/07(月) 17:35:27.75ID:8DeyRC3s
計算機学の正式な教育を受けたことがないからわからないけど,たとえば数学では大学2年までに学ぶべき科目の教科書は翻訳でも日本語教科書でも定番と呼べる本が出揃ってるんだよね
そんな中で使命感を持って初学者向けの本を訳したがる人はそうそういないでしょ
技術書界隈でもそんな現象が起こってるじゃないの
0484デフォルトの名無しさん
垢版 |
2017/08/07(月) 18:08:53.23ID:Y4YBisBB
>>483
解析学と線形代数の定番を教えてください、できればギャップの極度に少ないものを
翻訳じゃなくて、「解析概論」(高木)よりは親切なやつを
是非!
0485デフォルトの名無しさん
垢版 |
2017/08/07(月) 18:36:14.26ID:8DeyRC3s
杉浦本と斉藤本じゃあかんの(多変数の議論に飛躍が入るのはしょうがない)
0489デフォルトの名無しさん
垢版 |
2017/08/07(月) 20:05:48.41ID:8DHQ/UcZ
でもここ20年でネット利用者の情報リテラシーと日本の国際的な技術的地位はかなり落ちたよな
0490デフォルトの名無しさん
垢版 |
2017/08/07(月) 21:05:17.72ID:q/Po/zS7
近年は、技術書の日本語翻訳版が出るころには、次のメジャーバージョンがリリースされて買う気を失う傾向
0491デフォルトの名無しさん
垢版 |
2017/08/07(月) 21:56:28.43ID:JP8gCgB5
ITは元々レベル低かったんじゃない?ハードは強かったけどソフトはそんなに
0492デフォルトの名無しさん
垢版 |
2017/08/07(月) 23:32:35.06ID:tGwRq2k1
おまえらexa紹介されてる
ttps://www.cyberciti.biz/open-source/command-line-hacks/exa-a-modern-replacement-for-ls-written-in-rust-for-linuxunix/
0494デフォルトの名無しさん
垢版 |
2017/08/07(月) 23:58:47.36ID:LiwmU2BL
Rust関係なくてスマネ

>>491
全てとは言わないけど分野によっては世界トップクラスだったよ
1.コンピュータアーキテクチャ&オペレーティングシステム
 Windowsが走るコンピュータアーキテクチャを開発、販売していた数少ない国の一つ
 そのためにWindowsのカスタマイズも行っていた
2.日本語ワードプロセッサ
3.日本語入力変換システム
 この二つは語るまでもないよね。ユーザーは積極的に捨てたけど
4.低レベルの実装、解析
 かつては日本製のBIOSパッチとか野良BIOSとかがあった。このへんの技術は1とも絡むね
0497デフォルトの名無しさん
垢版 |
2017/08/08(火) 22:30:57.70ID:0Gdz9Dwg
>>482
それ以前から理工学書を読んでいる人間ならば多くが同様の感想を持っているわけだが
読んでない人間は知らんがね
他人の投稿が気に入らず読みたくないならば、お前がこのスレを読まずに消えれば済むこと
0500デフォルトの名無しさん
垢版 |
2017/08/08(火) 22:54:17.33ID:XDy6h+kL
A. 20年前と今の理工学書を比べられる、2chのドマイナーな言語スレにいる
  ->アカデミック関係者の可能性
B. 自分の意見の論拠が薄い、的確なソースを出せない印象論
  ->実体験であるなら妥当
C. スレ違いの話を得々と語る、煽りに慣れていない
  ->コミュニケーションに難あり

>>497が本当に一流大学の教官である可能性は微粒子レベルで存在する
が、話の中身は与太話だし、何を言ったかだけを判断するなら塵芥と同じ扱いでよろし
0504デフォルトの名無しさん
垢版 |
2017/08/09(水) 22:29:08.98ID:BGGA/pTO
1つのパッケージをインストールするだけでも時間が何十分とかかる
萎える〜
0506デフォルトの名無しさん
垢版 |
2017/08/09(水) 23:50:55.47ID:AaV7WIeC
>>504 環境変数としてCARGO_TARGET_DIRを適当なところに置くと、以前にビルドしたcrateを利用してくれるよ
まあバージョンが違ったりしたらやり直しだから気休めにしかならんかもしれんが
0507デフォルトの名無しさん
垢版 |
2017/08/10(木) 09:16:01.74ID:hSTXQfAm
ライフタイムがよく分からんから、ライフタイム定義なしで動くプログラムは作れるようになったんだけど、
ここから必要に応じて参照使いまくりでライフタイムしまくりが出来るようになるにはどうしたらいいでしょうか?
0508デフォルトの名無しさん
垢版 |
2017/08/10(木) 11:35:07.02ID:+tFBM5sG
>>507 個人的な経験談だけど、ライフタイムが複雑で分かりにくいときはデザインから見直した方が良い場合が多い
単にコピーされるのを嫌って参照にすると駄目で、元の値の完全な従属物のときだけ参照を使うと大抵はうまくいく
メンバ変数間の参照はキツいので手を出さない、グラフとか所有権が複雑なのも自分じゃ作らずにライブラリにしておく、とか
0509デフォルトの名無しさん
垢版 |
2017/08/10(木) 13:04:49.06ID:qDPlaybB
rustで検索してもほとんどゲームの話題しか検索に引っかからなくて草
rustの日本コミュニティーないの?
0515デフォルトの名無しさん
垢版 |
2017/08/10(木) 20:06:16.94ID:5YNarUir
Arcでもダメなんだっけ?使う機会がないからTutorialで読んだきり見たことないけど
0516デフォルトの名無しさん
垢版 |
2017/08/10(木) 22:57:52.57ID:Ib9pl7ao
>>507
lifetimeはextentとregionをごちゃまぜにした語だから
lifetimeに言及してる部分は実際にはextentの話かregionの話に分かれる。
だからextentとregionを理解すればいいよ。
特にscopeとextentの区別がついてないやつが非常に多いからそこ気をつける。
0518デフォルトの名無しさん
垢版 |
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のリージョン多相は部分多相も備えてる。
0519デフォルトの名無しさん
垢版 |
2017/08/11(金) 01:38:14.07ID:KiXisjXW
無駄に話を複雑にした挙句論文を読めときたか、少し前にいたイキリ大学生かよ

普通に公式のThe Rust Programming Languageを読んで現行Stringを使ってるなら&strにして組み直して見たら?
structのメンバに参照があると否応でも意識/理解せざるを得ないと思うぞ
0521デフォルトの名無しさん
垢版 |
2017/08/11(金) 07:59:32.16ID:KiXisjXW
じゃあまずlifetimeについて考える前に、参照のメリット/デメリットについて考えような
公式サイトのドキュメント読んでこい
0522デフォルトの名無しさん
垢版 |
2017/08/11(金) 09:42:12.68ID:oTwda99v
c++だと参照保持すると生存期間管理ないからあぶないからやらない
スマートポインタ使う

そのへんの感覺の違いがまだなれない
0523デフォルトの名無しさん
垢版 |
2017/08/11(金) 13:31:10.83ID:wKLRpp+C
impl Traitがstableに入ったらどうなるか分からないけど、MapとかFilterとかがstructに参照+独自データって形になってるよ
あとはCharIndicesとか。実際のソースはちょいと違うけど元のデータへの参照+と現在位置っていう形になってる
0526デフォルトの名無しさん
垢版 |
2017/08/12(土) 12:16:25.41ID:IzeoJwWv
コンパイル済みのバイナリパッケージを公開してほしいけどそういうのは実現可能ではない?
0527デフォルトの名無しさん
垢版 |
2017/08/12(土) 18:35:23.01ID:dKEWL6WP
例えばripgrepのコンパイル済みのバイナリパッケージ
ttps://github.com/BurntSushi/ripgrep/releases/tag/0.5.2

リリースビルドしたバイナリをzipなりでパッケージングすれば良いんでね
0531デフォルトの名無しさん
垢版 |
2017/08/13(日) 04:17:55.12ID:oa7ekDLN
PathはPath::new(&str)が参照を返すから使いづらい(参照を使いこなせない)
PathBuf使えば楽になったよ!
0532デフォルトの名無しさん
垢版 |
2017/08/13(日) 08:43:10.09ID:f+gGM+v+
>>529
返り値で返せないとか
PathBufすると変換いるしめんどい
引数の文字列のライフタイムで怒られる

とか
0533デフォルトの名無しさん
垢版 |
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するのもめんどくさけりゃ、もう死んでしまえ
0534デフォルトの名無しさん
垢版 |
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(参照)だけを返せると思うなよバーカというね
0539デフォルトの名無しさん
垢版 |
2017/08/13(日) 23:14:52.73ID:3acTHEGf
まあ、Sizedと!Sized (DST)の区別がつきづらいってのもあるとは思う
strとString然り、[T]とVec<T>然り、OsStrとOsString、トレイトオブジェクト、そしてPathとPathBuf……
0541デフォルトの名無しさん
垢版 |
2017/08/14(月) 07:06:13.75ID:HJwH3qkh
>>538-539
それらが区別はついても
その上でライフタイムを理解してないと使いづらいという話じゃないの

>>534なんかはPathがborrowed valueで!Sizedなのは分かった
それはそれとしてPathのまま返すにはどうしたらいいの?って
ライフタイムをきちんと理解してない初学者は躓くわけじゃん
0542デフォルトの名無しさん
垢版 |
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の「返り値で返せないとか」の意味がようやく分かった。確かにその通りだ。別の型で返す必要がある
0543デフォルトの名無しさん
垢版 |
2017/08/14(月) 09:54:46.27ID:HJwH3qkh
ええぇ、今までPathが返り値で返せないの意味を分かってなかったのかw
!Sizedな型は+Sizedとかで型サイズを固定させて返すとか頑張るんでしょ、Pathは出来なかった気がするけど

PathBufはDeref type Pathがあるからまぁなんとか
str, String等の命名規則がStr, StrBufじゃないのは気に入らん、みたいなのは分からいでもない
なんか歴史的背景があるんだろうけど、考えるのが面倒でそのまま受け入れてる
0544デフォルトの名無しさん
垢版 |
2017/08/14(月) 09:56:58.67ID:3NSMgreF
習いたての頃に[u8]を引数に取ろうとして躓きまくったのを思い出す
そういやこれって何でわざわざコンパイラー組み込みでファットポインターを定義してるんだ?
struct Path<'a> { start: *mut (), end: *mut (), marker: PhantomData<&'a PathBuf> }じゃダメなのか?
0546デフォルトの名無しさん
垢版 |
2017/08/14(月) 10:53:05.45ID:fyv2iRf4
PathがSizedじゃないってのが初学者的にめんくらったわ
strと同じだと思えば理解できた
0548デフォルトの名無しさん
垢版 |
2017/08/14(月) 15:20:15.52ID:xd4YqYEd
>>542
いかにもRust FAQに載ってそうな話題だと思ったが、ちらっと見た感じ、載ってないな
和訳も1割ぐらいしか進んでないし
0549デフォルトの名無しさん
垢版 |
2017/08/15(火) 01:22:49.60ID:Kx+225Ge
>>541
>>542の言うとおりそこはライフタイム関係ないから
デフォルトがムーブセマンティックスで、
借用はsubstructural type systemに守られてるってこと覚えたらライフタイム知らなくても分かる。

>>547
特に決まってないよ。
nightlyの途中でマージされたのがいきなり次のstableに入ることもあるし。
0550デフォルトの名無しさん
垢版 |
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
0551デフォルトの名無しさん
垢版 |
2017/08/15(火) 05:38:14.01ID:tN8D0FqC
ちょっと聞きたいんだけどrustのマクロって裏でどういうコードが生成れてるか分かる機能ってあります?

Cのプリプロセッサなら生成コードが出力できるけど、、、
0552デフォルトの名無しさん
垢版 |
2017/08/15(火) 09:18:04.23ID:cM0t4sQL
Webにいるプログラマって、マサカリとかに代表されるように人格が狂ってる人多いよね。正しければ正義的な。
2ちゃんはさらにひどいけど、そうじゃなくても。
実社会でプログラマの地位が認められてないからかなぁ。
0553デフォルトの名無しさん
垢版 |
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
0554デフォルトの名無しさん
垢版 |
2017/08/15(火) 09:32:50.69ID:qX6sO+hu
Path:newが&Pathを返すというstdライブラリ仕様を言及してたのかよwww
そりゃ失礼、そんな所よりそれをどうやって使うかを話してるつもりだったわ
0560デフォルトの名無しさん
垢版 |
2017/08/15(火) 18:34:48.29ID:O7/Y4aw2
>>558
標準ライブラリのパブリックな型ではOsStrくらいじゃないかな
from系の関数も含むのなら、std::slice::from_raw_partsとかstd::str::from_utf8とかもある

標準ライブラリ外のクレートでもstrに対するラッパとかでそういうのがあった気がする
0562デフォルトの名無しさん
垢版 |
2017/08/16(水) 01:18:30.66ID:lhJRoj0R
ごめん言い忘れたぜ。
>> 558
fn new<S: AsRef<T> + ?Sized>(s: &S) -> &Self
に一般化出来るの全部。transmuteしてるだけだもん。
0564デフォルトの名無しさん
垢版 |
2017/08/16(水) 03:04:04.19ID:Tcbyhi06
とは言え、Pathみたいにnewtypeパターンでnewtypeの元の型の参照からnewtypeの型の参照を得るケースなんてそう多くないからな(というかDSTくらいでしかやらない)
transmuteもやむなしだろう
0567デフォルトの名無しさん
垢版 |
2017/08/16(水) 10:55:53.36ID:Agtz0DvI
IntelliJ Rust Pluginのエディタが型表示をヒントとして表示するようになってクッソウゼェw
一瞬便利かなと思ったけどやり過ぎだと思ってオフにしたった
futuresでチェーンしてると型名が長すぎて実態のコードが画面外に追いやられてたわ

変数名にフォーカスしたら型名表示くらいのFRやPRは出てないものかしら
0572デフォルトの名無しさん
垢版 |
2017/08/16(水) 17:58:42.50ID:5vWhS1NV
Path(PathBuff)に拡張子を追加するにはどしたらいいすか

f.txtをf.txt.zipにするてきな。
0573デフォルトの名無しさん
垢版 |
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);

これ以上雑な実装はねーだろ(チラッチラッ
0574デフォルトの名無しさん
垢版 |
2017/08/16(水) 18:47:37.19ID:U6ziTncO
やっぱそーなっちゃうんですねー。
ありがとうございました。
さすがにこれ以上エレガントなのはないですね
0575デフォルトの名無しさん
垢版 |
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を受け取れるようにできないか検討しよう
0577デフォルトの名無しさん
垢版 |
2017/08/16(水) 19:22:40.51ID:ObQbU6V8
来るかなぁと思ってたが、案の定エレガントじゃない回答(>>575)がきたぞw

卓上で語るのが好きでコードに落とせない子なんだろうなぁ
>>575はそのバリエーションで実装に落としてあげるとエレガントな回答になるからちょっとやってみ?
0578デフォルトの名無しさん
垢版 |
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")
};
}
0580デフォルトの名無しさん
垢版 |
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()
}
0582デフォルトの名無しさん
垢版 |
2017/08/16(水) 20:18:00.24ID:ObQbU6V8
4を頑張れば>>573を超える雑な実装にできる可能性がありそうだけど無理かなぁ
まぁ無理か・・・
0584デフォルトの名無しさん
垢版 |
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することだと思うが
0587デフォルトの名無しさん
垢版 |
2017/08/16(水) 20:38:39.16ID:ObQbU6V8
>>581
関数f内でのPath/PathBufのメモリ確保処理に差はないから必要なら後からas_pathでもしたらいいんじゃね
むしろas_refやintoのオーバーヘッドを気にすべきかのう, 100万回くらいループしたら1秒くらいの差が出るかも?
0589デフォルトの名無しさん
垢版 |
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出るんだよ。
まあ、罠だけど。ただの面倒くさいっていう見本みたいだし。

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

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

>>565
from/intoは使い方決まってる
0590デフォルトの名無しさん
垢版 |
2017/08/16(水) 20:45:56.00ID:eiUsQzcr
>>587
Path::newやas_ref、intoは単に型システム上の操作であってnoopなのでは(検証してない)
だってPathやらPathBufやらはOsStrやOsStringに対する単なるnewtypeでしょ
0591デフォルトの名無しさん
垢版 |
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);
0593デフォルトの名無しさん
垢版 |
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回前のリリースでもコンパイラ最適化を抜本見直ししてたし、どうなってるかワカラン(自分も検証する気ない)
0595デフォルトの名無しさん
垢版 |
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);
0596デフォルトの名無しさん
垢版 |
2017/08/17(木) 18:40:58.78ID:8HfS9wXv
std::path::Componentsのimpl AsRef<Path>みたいな地雷もいるけどな! > as_refがnoop
地雷を踏み抜かないように使いたい所存
0597デフォルトの名無しさん
垢版 |
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
けど通らない。

どうすれば良いのだろう?
0600デフォルトの名無しさん
垢版 |
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
エラーが出ます。
0602デフォルトの名無しさん
垢版 |
2017/08/18(金) 18:35:09.68ID:XVXUXs+1
>>601
おお、出来ました! ありがとうございます。

a.next() ではなく (&a).next() となってしまうのが心残りです。
関連型 Item のライフタイム問題が無ければ素のコードで行けるのに、
何故こんなことになってしまうのか……
0603デフォルトの名無しさん
垢版 |
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トレイトの仕様上、仕方がない
0606デフォルトの名無しさん
垢版 |
2017/08/19(土) 00:07:19.34ID:gC1uMiLY
>>592-594
変換系の命名規則はコストで決まってる。
ttps://rust-lang-nursery.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv

ただまだ質が悪いから準拠してこうぜ!ってのが2017のロードマップ。
0608デフォルトの名無しさん
垢版 |
2017/08/19(土) 08:31:32.98ID:BpKw1nHe
Copyは良いがCloneは避けたい
Cloneどんどんやって良いようなプログラムならrustで書かなくても良い
0609デフォルトの名無しさん
垢版 |
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

ありがとうございました。
0610デフォルトの名無しさん
垢版 |
2017/08/19(土) 10:56:56.32ID:i5Fk1Iv8
copyとcloneの違いって?
0612デフォルトの名無しさん
垢版 |
2017/08/19(土) 14:23:54.00ID:FnHzgZW7
crates.ioのreverse dependenciesが10ページを超えているようなcrateを「みんな使ってない」はずがない
GitHubのexamplesでなんやかんや事足りるからなあ
0620デフォルトの名無しさん
垢版 |
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万台にならなくて済む
0621デフォルトの名無しさん
垢版 |
2017/08/20(日) 15:00:56.50ID:pZQ2byHx
標準的なステーメントや型、メソッドなどがずらずら並んだ資料とかないのかな
エディタ用に定義ファイルを作りたいのだがLearning的なページだと全部載っていなくて・・・
0623デフォルトの名無しさん
垢版 |
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>)となっている理由は外から型?を追加したいためです。

よろしくお願い致します。
0625デフォルトの名無しさん
垢版 |
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>
...
0626デフォルトの名無しさん
垢版 |
2017/08/20(日) 23:13:22.65ID:T53roUwE
一応impl<'a> PartialEq for &'a Serializeはできる
クソの役にも立たないからやるべきでないが
0627623
垢版 |
2017/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
そんな書き方もできるんですね!参考になります!
0628デフォルトの名無しさん
垢版 |
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を入れ子に持っている
0629623
垢版 |
2017/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を入れてしまうとライブラリの使用者が型を追加できないのではと思って上の感じにしました。
何かいい方法はないのでしょうか?
0630623
垢版 |
2017/08/21(月) 02:40:57.36ID:FwjdF0gP
https://github.com/3Hren/msgpack-rust/blob/master/rmpv/src/lib.rs#L416
このライブラリだとValueの中にExtを作ってその中にシリアライズ済みのデータを入れてるみたいですね。
確かにこれならいけそうですが、Valueの中にシリアライズ済みのデータを入れるのがなんだかスッキリしないです…
これ以外には方法はないのでしょうか?
0632623
垢版 |
2017/08/21(月) 15:33:43.28ID:3Zba4J1M
>>631
すみません、sageのこと忘れてました…
0633デフォルトの名無しさん
垢版 |
2017/08/21(月) 16:25:46.95ID:oGU2m9lq
rustの使用者は型をガチガチに固めて型安全であることを至上としてる風があるから
利用者が自由に型を追加できることの方にスッキリしない印象を持つのではなかろうか
例えば、hyperのHTTP Headerとかね

それでも尚そうしたいのであればrmpvなやり方は正しいんじゃないのかね
0634623
垢版 |
2017/08/21(月) 21:07:50.83ID:3Zba4J1M
>>633
なるほど
rmpv方式でやってみようと思います!
0635デフォルトの名無しさん
垢版 |
2017/08/21(月) 21:48:43.99ID:rYDUfKH7
ライブラリを作る側はゆるゆるにする、使う側はギチギチにする、だったかな
0636デフォルトの名無しさん
垢版 |
2017/08/22(火) 02:48:14.20ID:womi0ii/
何の言語における誰の格言だい?
Rustライブラリの話じゃないよな, Rustはno_std + unsafeでもしないと作る時すらギチギチだものな
0640デフォルトの名無しさん
垢版 |
2017/08/22(火) 09:41:20.78ID:C9KUE8jE
>>638
ありがとう。
本家ソース読んでると、ドキュメント化されてない文法とか現れて時々困惑する。
0641デフォルトの名無しさん
垢版 |
2017/08/22(火) 23:09:44.08ID:SJLsCwn3
impl-specializationってfor T以外に具象型でも出来たのか。パラメタ型が現れればいいのか。

>>640
まだRFC #1331が出来てないから正式な文法は存在しない。
自分が使ってるrustcのソース読む以外に文法知る術はないよ。
0642デフォルトの名無しさん
垢版 |
2017/08/23(水) 02:50:24.84ID:4QoHymGs
チルダ記号~、owned pointer が廃止されてから余ってるけど、何かに使わないのかね
0643デフォルトの名無しさん
垢版 |
2017/08/23(水) 07:25:27.68ID:B+nj/ke1
オフラインで開発するときにどうすべきかを書いたドキュメントってないの?
インストール方法とかライブラリの取得・展開方法とか
0644デフォルトの名無しさん
垢版 |
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"
こんな感じでパスを与えれば良い。
0645デフォルトの名無しさん
垢版 |
2017/08/23(水) 09:46:49.23ID:OBNmODWh
最近のpythonではpipでコンパイル済みのバイナリをダウンロードしてインストールしてくれるけど
rustの世界でもこうなりませんかね
0646デフォルトの名無しさん
垢版 |
2017/08/23(水) 12:24:06.11ID:18+Jkbm8
前も同じ質問してたな
rpmやbrew, windows storeにバイナリをアップすればいいんじゃないの
ユーザ向けのバイナリ配布環境なんてrustやcargoが整備するモノじゃないでしょ

どうせrustやcargoを扱うのは開発者で
開発者はバイナリよりソースの方が色んな面で助かる
0648デフォルトの名無しさん
垢版 |
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に置き換わるし。
0649デフォルトの名無しさん
垢版 |
2017/08/24(木) 00:17:41.78ID:l7HQ+RMc
自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑
rustc直打ちなら問題ないけど非標準のCrateをどうするんだという話に
0650デフォルトの名無しさん
垢版 |
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.
0652デフォルトの名無しさん
垢版 |
2017/08/24(木) 09:10:11.03ID:7OYe0+S4
よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな
海外っつーか米国は半端に無線LANが整備されまくってるから大変そうだなぁとは思う
0653デフォルトの名無しさん
垢版 |
2017/08/24(木) 10:02:40.03ID:N2QX0p2s
>>652
> よく分からんけど、週末カフェでテザリングしながら開発する分には全く困ったことないけどな

節子それはオンラインだ。
飛行機に乗ってる時とかはそれなりの時間オフラインになりそう。
0654デフォルトの名無しさん
垢版 |
2017/08/24(木) 10:56:17.70ID:yyGwhDVO
>>653
清太よ、>>649の「自宅ならともかくモバイルで開発しようとするとオンライン必須は迷惑 」へのレスだよ
この「モバイルで開発」はテザリングを指しているのではないのであれば、どういう環境のこと言ってるんだろうね
0656デフォルトの名無しさん
垢版 |
2017/08/24(木) 18:47:05.57ID:NSzs0jC1
個人的にはcargoが色々手を回しすぎなのが問題だと思うよ
ちょっと想定外だけど真っ当な使い方をしようとすると面倒が増えて、それをissueとして投げるしか無いからcargoがますます巨大になる
https://github.com/rust-lang/rust-roadmap/issues/12
↑でもちょっと出てるけど、今のcargoはインターフェイスとしてそれなりに使えるので、rustc以上cargo未満なツールを作ってくれるとありがたい
他のビルドツールとの連携とか今はかなり面倒。
0657デフォルトの名無しさん
垢版 |
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
0658デフォルトの名無しさん
垢版 |
2017/08/25(金) 12:13:31.91ID:wqoYH6g/
>>656
そういう公式ツールの増大は開発環境を複雑&巨大にするばかりだからやめて欲しい
cargoサブコマンドを公式rust libよろしく外部に吐き出してしまえば鬱陶しい文句も出なくなりそう
0659デフォルトの名無しさん
垢版 |
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
0660デフォルトの名無しさん
垢版 |
2017/08/25(金) 15:38:40.83ID:J7NBnr1n
>>659
Refを返すのは思いつきませんでした。
ありがとうございます。それでもよい気がするのでやってみます。
0661デフォルトの名無しさん
垢版 |
2017/08/26(土) 10:47:16.34ID:O+zDlIdw
このスレで話題にするのはアレかもしれないが、 Servo nightly build が
いつ試してみても盛大にぶっ壊れていて、開発順調なのか心配になる。

Rust で開発していると mutability で詰むことがあって、よーく考えてデータ構造なり
を変更すればうまく解決できることが多いし、コードもより良くなっていることが多い。
でもその変更って毎回異なった自明でないものだし、局所的なもので済まないこともある。
Servo くらい大規模なプログラムになったとき、もうどうしようもなく詰んだりしないんだろうか。
0664デフォルトの名無しさん
垢版 |
2017/08/26(土) 12:14:24.38ID:3J5PaXHT
Rustに熟知してれば変更は自明であり、機能分解点を精査してれば変更は局所的なもので済むんでないかな
小規模なモノを無計画に作るにはRustは適さない言語だと心底思う

Servoは長いこと開発続けてるけどあんまり精力的に開発する気なさそうだよなぁ
Mozillaが営利団体として潰れそうだし・・・実際Mozilla Japanは潰れてるorz
0665デフォルトの名無しさん
垢版 |
2017/08/26(土) 12:48:20.45ID:qL+5xDF6
キノコ雲を見上げるsteveklabnikの画像がRust界隈でにわかにミーム化しつつあって笑う
0666デフォルトの名無しさん
垢版 |
2017/08/26(土) 16:16:56.49ID:1psTTOfA
servoで作ったモジュールがfirefoxに取り込まれていっているし、実験プロジェクトとしては成功なのでは
0667デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:25:08.80ID:YYTb5WfA
Rustに限った話ではないですけど
・構文解析
・ハイライト
・オブジェクト追跡
・入力補完
などの機能を持ち高速に動作するテキストエディタってないですかね?
JavaやNode.jsを使った物は総じて動作が重いですし、Cなどで書かれてネイティブな物は機能性で劣る気がします
0668デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:57:19.50ID:OZ/i8G6F
>>667
Node.jsで作ったエディタが重いってそれVSCodeの前で言えるの?
0669デフォルトの名無しさん
垢版 |
2017/08/27(日) 02:04:39.75ID:mxFQINt9
ageるなアホ

VSCodeつーかAtomは実際重たいからな
あとスレッドぶん回すからノートPCで動かすとバッテリー消費がシャレにならん

JetBrainsのCLionにRust Plugin入れたらブレークポイントも貼れるし良いぞ
誰かJetBrainsから有料版出る前にブレークポイント貼れるようにするPR出さないかねぇ
地味に高いから購入する気にはならんのだよな
0670デフォルトの名無しさん
垢版 |
2017/08/27(日) 02:12:16.71ID:PbodRtd5
Rustプラグインを単体の製品にするとは思えんけどねえ
彼らは例えばScalaのプラグインとかも手がけているけど別に製品化している訳じゃないし
0673デフォルトの名無しさん
垢版 |
2017/08/27(日) 07:38:59.45ID:mxFQINt9
vi使えよ、viの軽さに慣れたらvimはそりゃ重たいでしょ

>>670
Scalaなんて10年以上前に流行った言語のIDEを今更有料化しても売れないだろうからな
Rustは今現在流行ってる(?)言語だし売るんじゃねーのかね
0677デフォルトの名無しさん
垢版 |
2017/08/27(日) 19:27:41.18ID:gsqvcCn0
vscodeって重いよな?起動も動作も軽快とは言い難い
むしろvscodeが軽快に使えているという人がいるならどのような環境で使用しているのか聞きたいわ
SSDを乗せた標準電圧版Coreiモバイルノートでも結構もっさりだし
0679デフォルトの名無しさん
垢版 |
2017/08/27(日) 19:47:01.83ID:SLqFnPu1
何を妥協して「せめて」なのか分からんが数値あげてやろう

MacBookでIntelliJが6時間くらい保つ所が3時間くらいしか保たない程度に無駄処理多い
プロセス上の待機スレッド数も10〜20くらい違った覚えがある

待機中でもそんだけスレッド回してるから、コーディング中、ビルド中の負荷もでかくなるよね
VSCodeを愛用してるコーダーはemacs愛用してるコーダー並みにマゾだと思う(viユーザ感
0680デフォルトの名無しさん
垢版 |
2017/08/27(日) 19:49:16.80ID:SLqFnPu1
>>678
あ、レスするならついでに「せめて」で説明要求を妥協した点を教えてくれい
確認してる範囲であれば答えるよ
0682デフォルトの名無しさん
垢版 |
2017/08/28(月) 09:34:01.20ID:A8OmMbPi
全くだ、重たいと事実を指摘されても発狂することなく
重たくても他に良い所があるから使ってるんだと言い切っていたemacs愛用者は良い人たち

>>675
バックエンドRust, フロントエンドSwift, 通信プロトコルJSON, プラグインサンプルPython
ごった煮過ぎて笑うわw
0683デフォルトの名無しさん
垢版 |
2017/08/30(水) 13:54:58.32ID:AB0hyKA3
rustってやっぱりスペックいいパソコンと高速なネット回線がないと厳しいですね
0684デフォルトの名無しさん
垢版 |
2017/08/31(木) 22:48:16.13ID:agJG8fpm
普通の言語だと処理の一部を関数に切り出すのとか簡単に出来るけどRustだと返り値の方が分からなくてそれが難しいことがあるよね
0686デフォルトの名無しさん
垢版 |
2017/09/01(金) 13:32:10.36ID:PRuVKL7F
クロージャにすれば良い
なあに、きっと最適化で普通の関数と同じ扱いになるさ(適当)
0689デフォルトの名無しさん
垢版 |
2017/09/01(金) 23:41:11.07ID:62CxLGbq
unsafeだらけ
0694デフォルトの名無しさん
垢版 |
2017/09/02(土) 01:50:33.08ID:cF7LUBE8
なんかnightlyにPythonのジェネレータ入ったとか聞いたんだけど誰得?
もうtokioつかFutureあるし。
0695デフォルトの名無しさん
垢版 |
2017/09/02(土) 08:16:03.50ID:oilxAadu
いつまでたってもスライスパターンが標準にならないのなんで?
ほかの関数型言語みたいな言語標準?のリストと、そのパターンマッチ、があればいいけど
そういうつもりもないんならスライスパターンをはよ強化&標準装備してほしいんだが
0696デフォルトの名無しさん
垢版 |
2017/09/02(土) 08:35:22.00ID:zv/5K5Jn
私は最強のRust以外のプログラミング言語で書く気はありません
0697デフォルトの名無しさん
垢版 |
2017/09/02(土) 08:40:19.17ID:MacxmZWQ
Featureを駆使するので楽になるのはそうだが、
逐次処理的に書けるasync/awaitの方がさらに楽なので
それを実現するための要素としてgeneratorは必要

あとIteratorの実装も楽になる
0699デフォルトの名無しさん
垢版 |
2017/09/02(土) 11:39:08.16ID:Nnknp9qO
>>692
なんていうか、自分のチームの優位性を示してドヤろうとしたけど決定的な証拠がなかったから自分に有利な調整をしたという感じだな
特定のチームへの非難をしつつそのチームの人間のツイートを自分の主張の補強に使っているのもいろいろアレ
まあ競技プログラミング界のゴタゴタはどうでも良いけどとりあえずRustを巻き込まないで欲しいわ
0700デフォルトの名無しさん
垢版 |
2017/09/02(土) 12:32:15.66ID:3cz+aWzV
>>692に対してちょこちょこマジレスがいるけど
正規化の文章の注釈[4]でウォーズマン理論とか引っ張り出してるからな
0701デフォルトの名無しさん
垢版 |
2017/09/02(土) 13:10:10.49ID:U8pYefIa
マヌケは見つかったようだな…ロクにリンク先も読めないのに批判する口だけの能無しが…
0703デフォルトの名無しさん
垢版 |
2017/09/02(土) 19:03:59.64ID:AHW4eZK5
ウォーズマン理論により各言語の普及率(PG人口比)でスコアを倍加すると
数の暴力が発揮されJavaが最強のプログラミング言語であることが証明される

とでも言えば風情があるのかね?
0706デフォルトの名無しさん
垢版 |
2017/09/03(日) 02:55:54.90ID:8KnlJyLG
ネタに対する模範解答って『やはりRust最強だな!』とか?
0707デフォルトの名無しさん
垢版 |
2017/09/03(日) 09:50:38.50ID:YZmIGy7N
>>705
風情の有無を話してるのであって、寒さ暑さを話してるんじゃないんだけど

>>706
まずはageないことから始めよう、な?
0708デフォルトの名無しさん
垢版 |
2017/09/03(日) 11:35:08.63ID:CVrfF8Ix
>>702
わび・さび ですよね、わかります
I know. sorry & rust
0709デフォルトの名無しさん
垢版 |
2017/09/03(日) 12:50:33.18ID:E+2Ill1j
お前ら、associated constantsがstableになったってのにいつまで下らない話を続けているんだ
0712デフォルトの名無しさん
垢版 |
2017/09/03(日) 14:56:28.19ID:3Ui33to1
impl Trait と トレイト境界の特殊化の実装が先だろ……
これのせいで書けないコードあるんだぞ
0717デフォルトの名無しさん
垢版 |
2017/09/04(月) 01:02:25.35ID:TiSfjsBP
そもそもwasmなんて誰が必要としてるんだという問題がある
実際現状wasm使うよりV8の方が速いだろ
0721デフォルトの名無しさん
垢版 |
2017/09/04(月) 10:53:07.99ID:e2EV4sJ/
>>719
Rustなんて実用にならない言語未満使うくらいなら、クソとはいえ言語の体なしてるJS使うわクソ
0727デフォルトの名無しさん
垢版 |
2017/09/05(火) 07:50:37.72ID:JsNUX7wh
rustってまだ俺の中で実験言語だけど
そろそろプロダクト作ってる人とか出てる?
0728デフォルトの名無しさん
垢版 |
2017/09/05(火) 10:31:25.11ID:Xe9ypjwu
>>727
噂では泥箱あたりが使い倒してるとか
ずっと前から言われてるけど未だにコードの一つも公開されてないからただの提灯持ちで実際は使われてないと見てるがね
0729デフォルトの名無しさん
垢版 |
2017/09/05(火) 10:34:56.85ID:Xe9ypjwu
Rustが1.0過ぎてから今に至るまで、Rust使ってるって主張する企業は
モジカス自身と個人情報おもらしの一件で何かしら話題とお金が欲しい泥箱しか見ないって時点で色々と察するべきなんだよ

お前らいい加減目を覚ませ
0735デフォルトの名無しさん
垢版 |
2017/09/05(火) 17:49:37.05ID:RCCGTejb
dropboxやsamsungもmozillaのフロント企業の可能性が・・・?
実はmozillaってすごい会社なんじゃね
0736デフォルトの名無しさん
垢版 |
2017/09/05(火) 19:27:40.10ID:JsNUX7wh
rustっていまいち売りがないよな。
ちょっとしたツールを作るっていうのには向いてない気がする。
Goくらいの適当言語がちょうどいい。
0738デフォルトの名無しさん
垢版 |
2017/09/05(火) 19:51:45.33ID:gLY7ZEwx
Rustは、型システムがきちんとしてないとイライラしてしまう人向けの言語だよ
0741デフォルトの名無しさん
垢版 |
2017/09/06(水) 09:02:56.43ID:Sz3zXSu8
パッケージのインストールだけで長時間かかるのだけ何とか改善してくれる神様たちっていないんですかね
issueにそういう要望とか出ないものですかね
0742デフォルトの名無しさん
垢版 |
2017/09/06(水) 10:49:22.58ID:XzXTbCma
前にも出てたけど、CARGO_TARGET_DIRを設定すればさっきそれコンパイルしたじゃん!ってのが無くなる
まあコンパイルそのものは遅い方だからそれは我慢する
0743デフォルトの名無しさん
垢版 |
2017/09/06(水) 16:57:20.79ID:LVeCvIyg
Celeronの1コア、メモリ1GBなのでパッケージによっては5時間経ってもコンパイルが終了しないんですよね
例えばclippyとか。
パッケージのアップデート毎に結局更新されたものをコンパイルし直すからCARGO_TARGET_DIRの設定してもあまり変わらないような気もします
Core i7やryzen、メモリ8GBとかだともっと早く終わりますかね?
0745デフォルトの名無しさん
垢版 |
2017/09/06(水) 18:26:50.13ID:n6C9v4DP
コンパイラ、コンパイラドライバ、パッケージマネージャをそれぞれ独立して利用しやすくして欲しい
ポストC/C++を目指しているはずなのに言語仕様と関係のない制約が増えるのは勘弁
0747デフォルトの名無しさん
垢版 |
2017/09/06(水) 19:10:48.28ID:VuLMXPgk
>>745
java, phpが独立した3rd tools乱立でひどいことになったから
次世代は低レベルと高レベルの2レイヤーを公式に提供しようぜって現代の風潮でそれに沿ってると思うが
あいつら個々に独立したビルドシステム, テスター, パッケージマネージャー, ランチャーが乱立して辛い
rustやgoは公式で色んなものが利用しやすく整備されてて涙が出るよ, マジで

rustの公式ツールに不満があるなら3rd toolsを自分で作れば良いよ
誰も作るなとは言ってなくて、作ること自体は止められないはず、賛同する人がどれほどいるのか懐疑的だけど
0749デフォルトの名無しさん
垢版 |
2017/09/06(水) 19:37:16.90ID:n6C9v4DP
Rust=Cargoな感じになっているように思うのは俺だけなのか?とりあえずCargoを使え的な記事ばかりでrustcを活用する記事はほとんど見ない
ちょっと高度な事をしようとすると絶望的に情報がない。さらにrustcの不安定性(機能しないオプションがある)が追い打ちをかけるw
0751デフォルトの名無しさん
垢版 |
2017/09/06(水) 20:27:57.04ID:b9fzClHU
ビルドにcmakeを要求するのに、エラーメッセージが分かりづらくて
はっきりとcmakeの必要性が分からないcrateが結構ある

依存ライブラリ一つ一つまでreadme読まないし
0753デフォルトの名無しさん
垢版 |
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が存在してたらすまぬ
0758デフォルトの名無しさん
垢版 |
2017/09/07(木) 07:25:42.24ID:2QTh9NrO
CrateがCargo前提になっていて他のビルドマネージャやrustcからは実質的に使えないよな?
0759デフォルトの名無しさん
垢版 |
2017/09/07(木) 10:39:04.19ID:S617O9ZV
cargoって裏でやってることはrustcのラッパじゃなくて独自の方法でコンパイルしてるのか?
ひでえ仕様だな
0760デフォルトの名無しさん
垢版 |
2017/09/07(木) 18:01:04.73ID:QzkAwThZ
>独自の方法でコンパイルしてる
そんなことはないはずだが、どこからそんな情報が出てきたんだ?
0762デフォルトの名無しさん
垢版 |
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のコンパイルできるコードを書けず挫折したアンチが合わさり話が明後日に向かっておるわ
0764デフォルトの名無しさん
垢版 |
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が効いていないように見えるけど仕様なの?
コンパイラやリンカに与えられているオプションとかを見たいんだけどどうしたらいい?
0767デフォルトの名無しさん
垢版 |
2017/09/08(金) 15:02:00.13ID:2+W6iI80
スコープでインスタンスの寿命を静的に管理しようってのは面白いと思うのだが、
再帰的な構造とか扱う場合の簡易さをも少し考えるべきだったね。

まああんまこだわらなければ結構使いやすい気はするけど。
0779デフォルトの名無しさん
垢版 |
2017/09/12(火) 00:26:37.00ID:nVT3ZJzi
ていうか練習ならともかく実際に使うプログラムでポインタをつないでグラフを表現することなんてそんなに頻繁にあるか?
取りうる表現の中で効率性が最悪な部類じゃん
Vecに対するLinkedListみたいなもんだろこれ
0784デフォルトの名無しさん
垢版 |
2017/09/12(火) 14:48:49.21ID:+kMyckKw
linux の赤黒木の実装はポインタベースではあったな。
しかし個人的には配列実装のが結局速いって気はする。
0785デフォルトの名無しさん
垢版 |
2017/09/12(火) 15:07:56.52ID:yDRUgdvZ
Effective Hogeでそういうことは言及されてるけど
Rustはどうだかなとドキュメント見たらSecond Editionで"Effective Rust"の節自体が削られとる:-(
Stack vs Heapはどこかに記述されてた覚えがあるから、ツリー/リスト操作もどこかに潜り込んでるのかなぁ
0786デフォルトの名無しさん
垢版 |
2017/09/12(火) 17:41:48.32ID:r07bb/MI
配列ベースの実装はポインタの代わりにindex使うだけだからできることはあんまり変わらんわな
配列の方がデータの局所性高そうで速そうではある
0791デフォルトの名無しさん
垢版 |
2017/09/12(火) 22:20:04.05ID:SHXpQI2F
mutabilityはRefCell使えば良いのでは
Refcell使わずにVecの中身を直接触る必要ある?
0792デフォルトの名無しさん
垢版 |
2017/09/12(火) 22:27:17.20ID:wPca0Ysf
>>791
いや、それでいいかも
rcさえなくなればborrowをユーザに書かせなくてすむからそれでいいや
0793デフォルトの名無しさん
垢版 |
2017/09/13(水) 14:03:19.87ID:K9O6G+Si
低レイヤーできます!ってアピールしたい言語なんだろうけれど、
あんま向いてない言語な気はする。
0794デフォルトの名無しさん
垢版 |
2017/09/13(水) 14:56:53.13ID:6DzbMbn9
低レイヤを書くにはチェッカーが強すぎて邪魔で、高レイヤを書くには全くカジュアルさがない
どっちにもなれない哀れな言語よ
0795デフォルトの名無しさん
垢版 |
2017/09/13(水) 18:10:30.60ID:dAYfacw9
並列で大規模で低レイヤーな領域に向いた言語だからどれか一つでも欠けてる領域で使いづらいと思うのは仕方ない
0796デフォルトの名無しさん
垢版 |
2017/09/13(水) 20:06:39.58ID:fx0j+lzd
低レイヤーはやっぱC言語だな。
ポインタの習得が難しい事以外に欠点ないじゃんこの言語。
Rustはもっとポインタ扱いやすくして出直してきな。
0797デフォルトの名無しさん
垢版 |
2017/09/13(水) 20:42:07.11ID:SU8+D2f1
rustの並列処理って言うほど特化(最適化)されてる気はしないけどな・・・
スレッド跨いだオブジェクトの所有権譲渡も保障されてはいるけど、従来言語/ライブラリに比べてめっちゃ便利という感じはしない
futures-awaitとかyieldを使うと変わるのかねぇ、無くても困りはしないしと使ってないけどfutures-awaitは使ってみるかな
0798デフォルトの名無しさん
垢版 |
2017/09/13(水) 20:42:42.41ID:K9O6G+Si
C だっていろいろ批判はあるだろ。
型がゆるいとか、名前空間がグローバルしかないとか。
まあそれを差し引いてもやっぱ有効な言語と思うけど。
0799デフォルトの名無しさん
垢版 |
2017/09/13(水) 20:49:43.29ID:6DzbMbn9
>>798
Rustのコンパイル通す実力あるならCのその辺りの問題なんてないものと同じだから
Rustなんて使わずCでいいじゃんってなるんだよな
0800デフォルトの名無しさん
垢版 |
2017/09/13(水) 20:52:03.57ID:SU8+D2f1
とか思ってたら、yieldの方が公式nightlyにマージされたのか
futures-awaitもnightly要求するし素直にyieldの方を使ってみよ, stableにはいつ来るのかなぁ
0803デフォルトの名無しさん
垢版 |
2017/09/13(水) 21:54:04.29ID:8Q7unwrY
ID:6DzbMbn9っていつものモジラ/Rustネガキャン君だろ
0805デフォルトの名無しさん
垢版 |
2017/09/13(水) 22:09:43.33ID:8Q7unwrY
いつものコンパイル通らなくて発狂してる基地外かと思ったわ
0807デフォルトの名無しさん
垢版 |
2017/09/13(水) 23:56:44.36ID:kEFpToCL
Rustのコンパイルが通るならCを使えば良い君まだいたのか
自分の言葉通りRustに拘わらずにCを使っていれば良いのに
0808デフォルトの名無しさん
垢版 |
2017/09/14(木) 08:18:50.41ID:Y4hD7kDo
macro_rules! make_macro {
($id:ident) => (
macro_rules! concat_idents!{test_, $id} {
}
);
}
make_macro!{foo}

こういうの無理なのか。
0811デフォルトの名無しさん
垢版 |
2017/09/14(木) 12:55:00.43ID:NnJxH7VV
RustやSwiftとかの次世代言語ってOracle製品やSAPみたいな所あるよな。
無駄に抽象化して変な専門用語作って、プリミティブなエンジニアを寄せ付けない感じとか。

コマンドラインで一発で出来るようなことを、独自用語だらけのGUIでポチポチ操作させてんの。
こういう文化は本当に良くない。優秀なエンジニアはみんな逃げてしまう。
0815デフォルトの名無しさん
垢版 |
2017/09/14(木) 19:05:26.17ID:1DVuzpHn
バグが出ないことよりも手法に熱中しちゃう方が日本的だなとか思っちゃうけど。
0817デフォルトの名無しさん
垢版 |
2017/09/14(木) 20:08:31.29ID:wsl9UgI1
〜的ってつければなんだって形容詞になるの?

人に依存するC/C++はC/C++的
システムが面倒を見てくれるRustはRust的
0818デフォルトの名無しさん
垢版 |
2017/09/14(木) 21:28:39.91ID:ekPhWBa7
C/C++でもバグが出ないほど規模が小さい or 言語への習熟度が高いならC/C++使えばよいし
そうじゃないならRust使えば良いとしか言ってないのだが
0819デフォルトの名無しさん
垢版 |
2017/09/14(木) 21:51:38.65ID:egb+Ths/
単純に「巡回グラフを始めとした自己再帰型のデータ構造を書き下せない(コンパイラが通してくれない)」って時点で、書けないプログラムの存在を認めてしまってるんだよなRustは

その上C言語にはValgrindやらcppcheckやら、金かかっていいならCoverityやら、いくらでもその手のツールはあるわけで、
Rustならではの点ってどこにもない割に欠点だけ目立つ訳よ

肝心の抽象化も機能足りてないしな。Nightly使えばなんぼかマシだが
0821デフォルトの名無しさん
垢版 |
2017/09/15(金) 00:29:00.00ID:tkwXjMs/
△全部Rustだけ
◯全部safe Rustだけ
Escape hatchの類は使いたくないというsafe Rust信仰の裏返しというツンデレなのでは
0823デフォルトの名無しさん
垢版 |
2017/09/15(金) 13:00:11.59ID:3YdKOJD0
できるできないレベルの話をしているのか、やりやすいやりにくいレベルの話をしているのかどっち
0824デフォルトの名無しさん
垢版 |
2017/09/15(金) 13:25:48.45ID:5eAkzQwm
できない => できるよ => やりにくい => そうねー => 応答終了, 最初に戻る

こんなのをずっと繰り返してるイメージだ
モジラ/Rustネガキャン君とRustのコンパイルが通るならCを使えば良い君の二人なのかな
二人とも長いこといるし、コンパイル通せないRustが相当憎いんだろうなぁと思ってる
0825デフォルトの名無しさん
垢版 |
2017/09/15(金) 23:54:50.13ID:mfxKdXka
Cだって肝になるところをアセンブリで書くのはまれによくあることだし、
Rustで書きにくいところをCで書いたっていいよな
0826デフォルトの名無しさん
垢版 |
2017/09/16(土) 02:17:34.76ID:lHsVDIMy
Rustのコンパイルが通るならCを使えば良い君は、暗黙のうちにCで完全なメモリ管理を行うことの困難さを訴えているんだよきっと
0828デフォルトの名無しさん
垢版 |
2017/09/16(土) 12:21:42.89ID:CDKitgfC
てか細かいとこ C で書いてあとは軽い言語から呼ぶとか普通してるじゃん。
一つの言語で無理やりやろうとするからどっちつかずになるんじゃないのかね。
0830デフォルトの名無しさん
垢版 |
2017/09/16(土) 17:33:19.57ID:hyq1PMdM
C(++)の座が奪われると危機感を感じて
「Rustのコンパイルが通るならCを使えば良い」と必死なのかw
置き換わるにはまだまだ先が長いから安心して自分の巣にお帰りに
0831デフォルトの名無しさん
垢版 |
2017/09/16(土) 17:34:53.66ID:lHsVDIMy
Rustのコンパイルが通るならCを使えば良い(自分はできるとは言っていない)
0835デフォルトの名無しさん
垢版 |
2017/09/17(日) 12:44:11.46ID:7diltdBj
>>830
×まだまだ先が長い ○先にモジカスが世界から消滅する
先が長いとか言ってる時点でモジカスのステマに荷担してると理解しろ

Rustがプログラミング言語を名乗ってるのはモジラが自由をお題目にしてるのと同じレベルの害悪だ
0836デフォルトの名無しさん
垢版 |
2017/09/17(日) 15:13:14.19ID:9f3JHXln
複数のResultのNGをXORでまとめて(途中match分岐入れず)処理するのてどうすればいい?
超極稀に失敗する変な返り値を格納しても副作用の無い処理の連なりをゴソっと捨てる方法
0837デフォルトの名無しさん
垢版 |
2017/09/17(日) 16:26:31.76ID:IHBqIXQE
>>833
少なくとも firefox の c/c++ 部分の書き換えを想定してるだろう。
まあ c/c++ と一口に言っても結構レイヤーは広いように思う。
てきとうなサーバープロセスなら確かに go は書きやすいよ。
rust にそういうエリアがあると思えんというところが問題の焦点じゃないかね。
0838デフォルトの名無しさん
垢版 |
2017/09/17(日) 17:40:27.30ID:aqlfcEMy
>>836
求めてるものかどうかわからんが、Iterator<Item=Result<t, E>>はcollectでResult<Vec<T> , E>などにできる
0839デフォルトの名無しさん
垢版 |
2017/09/17(日) 19:45:22.12ID:0mVr+JRg
相当雑いけど>>838の実装例はこんな感じかな
ttps://play.rust-lang.org/?gist=c87421997c42f0dfa8aa6ecabbb7ba3b&version=stable

性能を突き詰めるならcollectしないでfilterの戻りをnextで回すべきだけど適当に
確か100万回くらい回したら数秒の差が出るくらいのはず
0840デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:03:20.12ID:xQI4uTVr
>>839
そういや、こうやって変数のシャドウイングを積極的に使っていくのってどうなんだろうな?
俺はよくやってるけど、スタイルにうるさい人から怒られるかもとか思ったり
0842デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:18:40.79ID:tCD9jFlM
collectも#inlineついてるなら手でfor書くのと同じになりそうだけど遅くなるのか
ExactSizeIteratorとただのIteratorで違うとかならわかるんだが
0843デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:25:16.47ID:ks3Dkyyp
OCamlだと普通なんで読みにくさを感じたことは無いなあ
むしろその変数はそこで終わりです、もう頭に入れとかなくても良いよってことだから脳にやさしいとまで感じる
0844デフォルトの名無しさん
垢版 |
2017/09/18(月) 08:30:10.39ID:KEjrNeQk
>>842
collectの関数コールは最適化されて消えるけど、collect内でVectorを作る分があるからな
メモリ確保して、要素をコピーしてって誤差程度だけどコストが乗っかる

filterまでだとFilterは作るけど要素のコピーはしてない感じだったから
他言語, 他ライブラリのfilterメソッドの戻りで配列/リストを作り直すIF/実装に比べて比較的早そうだと思った
0845デフォルトの名無しさん
垢版 |
2017/09/18(月) 11:26:55.19ID:/3RzmXHq
なるほど、Vec作るコストという意味なら確かにcollectはコスト掛かるね

まとめて処理というのがIteratorの要素からなる配列などのデータ構造を作って何かすると理解していたけど、
そうでないならば
f.map(¦x¦ {do_something(); }).collect::<Result<Vec<()>, _>>()
とすれば作られるのはVec<()>で、要素サイズ0だからヒープからはメモリ割り当てられないはず

これやるぐらいならfor使った方が
0846デフォルトの名無しさん
垢版 |
2017/09/18(月) 14:28:43.98ID:nF8z8OFK
一方C言語ならそんな面倒なこと考えずにallocしてforでいい
学習コスト高くて性能も低い言語Rust
0849デフォルトの名無しさん
垢版 |
2017/09/18(月) 17:40:00.45ID:2cmO/IBQ
俺たち、ついさっきまでzero-allocationな実装方針について話してなかったっけ……?
0851デフォルトの名無しさん
垢版 |
2017/09/18(月) 18:07:06.15ID:/S27bRBH
定義による
スタックから確保するものと
ヒープから確保するものを
どちらもallocと呼ぶなら含んでる
0852デフォルトの名無しさん
垢版 |
2017/09/18(月) 18:11:47.24ID:iR2mDVT9
>>849
ゼロアロケーションつっても最初の一回はallocするだろ?
その後forでナメながら変換すれば単純で早くてコンパイルも通ってモジカス涙目みんな幸せって言ってんの
無駄に難しく考えるモジカスシンパらしい話だな

>>850
非標準関数はNG
0855デフォルトの名無しさん
垢版 |
2017/09/18(月) 19:24:02.49ID:JVxZ+5NP
>>846の書くヒープアロケートするCコードはスタックアロケーションのみのRustコードより高性能なんだよきっと
0856デフォルトの名無しさん
垢版 |
2017/09/18(月) 19:39:48.02ID:K4Qo/KNH
>>853
造語症っていうんだっけか?

それはそうとRustでCのmallocやcallocと同じ操作ってBoxであってVecではないよなあ。
0857デフォルトの名無しさん
垢版 |
2017/09/18(月) 19:56:01.80ID:2cmO/IBQ
低級言語で書けばそれだけで性能が良くなるって勘違いはよくあるよな

>>856
どっちもヒープを使ってるから同じでええやろ
0858デフォルトの名無しさん
垢版 |
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コードを挙げてくれるのをちょっと待ってみようか, 流石にこれは汚すぎる
0863デフォルトの名無しさん
垢版 |
2017/09/19(火) 18:29:28.71ID:zYSzUAzu
そういえばRustってそもそもまだ言語仕様がなかったっけな(RFCが通ってない)

そんな言語を良しとするモジカスとそのお友達
0864デフォルトの名無しさん
垢版 |
2017/09/20(水) 07:39:00.40ID:D+wOfrtb
RubyやLua等も商用でも使われているけど公式な言語仕様って存在しなかった気がする
0868デフォルトの名無しさん
垢版 |
2017/09/20(水) 18:24:29.42ID:8IyKZYzR
どうせならいっそ新しいepochでbare Traitのシンタックスでimpl Traitのセマンティクスを表すように変えて欲しくもあるけれど、motivationでも言われている通り互換性の観点からしてまあ無理だわな
理念には同意できるけど、うーむ……ダサい
0869デフォルトの名無しさん
垢版 |
2017/09/20(水) 18:24:58.43ID:SerGpeBo
じゃあ討論してるIssueに行って、ダセェからこうしようぜって具体例を提案してこい
良さげだったら(y)押してやんよ
0870デフォルトの名無しさん
垢版 |
2017/09/20(水) 18:39:23.24ID:Yecv0E+U
これがダサいとかいうならimplとかpubなんてクソの山だろ

>>868
impl Traitのセマンティックスに置き換えたところで例えばVec<Display>にi32とStringを両方突っ込もうとしてエラーになるようなへまをする連中は消えないだろ

>>869
もうFCP過ぎてマージされてるんだよなあ
0875デフォルトの名無しさん
垢版 |
2017/09/23(土) 15:11:25.15ID:aCorn/qh
let str = "Hello";
let str: &str = str;

これで普通にコンパイル通るしな。
変数名に出来ないのは>>872の中じゃ mut だけだろう。
0876デフォルトの名無しさん
垢版 |
2017/09/23(土) 19:15:33.07ID:nrpIGIl5
str, len, rev
あたりは変数名として結構使うかな。
str , vec あたりは s, v くらい短くすることもある。
0879デフォルトの名無しさん
垢版 |
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
}
}
0880デフォルトの名無しさん
垢版 |
2017/09/27(水) 15:23:55.91ID:ENHC296h
Firefox Quantumリリースだってよ
0882デフォルトの名無しさん
垢版 |
2017/09/28(木) 00:21:45.83ID:FngsmGBk
時報が壊れたと思ってたら、常時一ヶ月遅れの情報サイトをソースに時刻通知がきたよ
本人じゃなく模倣者だろうけど次回からは一次ソースのサイトをトリガーにしような!
0884デフォルトの名無しさん
垢版 |
2017/09/28(木) 00:53:16.99ID:FngsmGBk
1. 時報が壊れたことに怒っている
2. 一ヶ月遅れのinfoqをソースにしたことを怒っている
3. 模倣者であることに怒っている
4. その他

どれだと思う?
0886デフォルトの名無しさん
垢版 |
2017/09/29(金) 10:21:58.71ID:YdXqj+6X
CもObjCもここ数年は仕様変更がないから、コンパイルはそのまま通る。
変なコード書いてなければ動作確認も問題なくパスする。
メンテナンスフリーって言われれば確かにそうかもな。

あとはフレームワークで非推奨にになったメソッド書き換える程度だけど、
これはSwiftと共通の作業だし、そもそもやらなくても動く。
とにかくSwift移行していない俺は毎年高みの見物してる。
0891デフォルトの名無しさん
垢版 |
2017/09/29(金) 23:43:36.68ID:w5CvkGV8
C++なんてやらんでいい。haskellよりOCaml寄りじゃね?

C++よりメモリ周りが「javaからgcとロック付きオブジェクトとモニタと
並列ライブラリがなくなった」代わりに低レベルなマルチスレッドコード書けば
型システムが守ってくれるモノが近い。
0892デフォルトの名無しさん
垢版 |
2017/09/30(土) 00:20:49.42ID:BhtSjkD0
所有権の概念はC++のmove semantics回りが近いと思うけどな
まあゲーム作るとかじゃなければわざわざC++やらなくてもいいと思うけど
0893デフォルトの名無しさん
垢版 |
2017/09/30(土) 22:05:33.32ID:uuI0Lqz4
Rust言語による第一プロダクトのFirefox Quantumですが
ベータ版リリースの時点でアドオンがお亡くなりになったとか、不安定でどうしようもないとか、メモリ食い潰して落ちるとか
様々なお声が聞こえてきますね

これがRustという安全な言語で作ったプロダクトなんですってね
おめでとうございますモジラ信者と工作員の皆様
0895デフォルトの名無しさん
垢版 |
2017/09/30(土) 22:38:45.63ID:ATIH6GBG
ベータ版の意味も知らないガイジやんけ
ガガイのガイw
0896デフォルトの名無しさん
垢版 |
2017/09/30(土) 22:39:37.33ID:ATIH6GBG
あそれあそれガイジが出た出たよよいのよいw
0897デフォルトの名無しさん
垢版 |
2017/10/01(日) 00:00:05.60ID:HKOr6Xa1
>>894
API鞍替えのせいだから全く関係ない。
メモリも関係ないし、むしろ最近はバージョン上がるたびに消費メモリ減ってる。
というかパフォーマンス良くなったのは設計が変わったからで言語は関係ない。
言語関係する部分はC++よりマシだから書きやすくなったこと。
0899デフォルトの名無しさん
垢版 |
2017/10/01(日) 23:58:38.97ID:HtGiOKW4
>>898
HTMLの描画周りがマルチスレッド前提になっただけよ。
シングル前提でやるとHTML/CSSパース、DOM構築で同期取りまくりが減っただけ。
うちのmem 4g, 2core環境だとハードが足引っ張ってたから多分mem 8g, 4coreくらい要ると思う。
ここ数年のロースペックマシン以上が恩恵受けるんじゃ?
gpu前提はwebrenderだからまだ入ってないんじゃない。
0900デフォルトの名無しさん
垢版 |
2017/10/02(月) 00:20:10.84ID:cuHSEpt/
あ、悪い。webrenderもう入ってるわ。
webrenderとstyloが入ってるからもうマルチスレッドにgpu前提。
0901デフォルトの名無しさん
垢版 |
2017/10/02(月) 11:21:20.04ID:pqkzvat0
Firefox爆速化件だけど、あのタイミングでRust化してればRustにも一気に注目集まったのにな。
もったいないな。
0908デフォルトの名無しさん
垢版 |
2017/10/04(水) 23:17:46.14ID:aUT+fN/H
参考になるベンチマーク教えてくれ
0910デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:11:32.12ID:froF/tdj
>>909
6パターンだった頃は全部実行出来てたけど速度はバラバラでたしか#5が最速でC言語より速かった
きっと最適化を人間が制御するのは難しくて頑張らないとJavaやC#にも勝てない
現在7パターンあるけど4つがmake errorになるくらい言語仕様が不安定

実に参考になる
0914デフォルトの名無しさん
垢版 |
2017/10/05(木) 09:06:46.27ID:NTKdykpp
>>910
人間が頑張って最適化した結果、C gccが上回ったんじゃないのかね

D言語はプログラミング人口少ないから・・・
2000年代の流行った頃ならもうちょっとスコアが出てたんじゃないかな
0915デフォルトの名無しさん
垢版 |
2017/10/05(木) 10:18:07.23ID:KYi0aOcC
RustもJavaも血反吐吐くほど最適化してるんじゃないの?
ポインタ扱いにくい言語でそれやると逆にコードが汚くなるから、
C言語よりも酷いコードになってるかもしれんよ。
0916デフォルトの名無しさん
垢版 |
2017/10/05(木) 10:41:40.98ID:j9fazbko
unsafe使ったらRustは更に早くなるのか・・・胸熱
取り敢えず、各コードを読んでから批評してはどうか

本家Rust Teamが改修して今のスコアだけど
彼らが直したのはI/Oにバッファ使おうぜってだけでそこまで変態的じゃないのよね
matchやmap, iterでクロージャー多用してるけど最適化コンパイルしたらif, forで書くのと同じ処理になるし

Option.mapは関数コールがあるから重たいかなと以前調べたら
LLVM中間コードの時点でインラインのif分岐(goto文)に展開されてベタコードと同じになるのかよと考えるのやめた
0917デフォルトの名無しさん
垢版 |
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の意外な速さに驚く
0919デフォルトの名無しさん
垢版 |
2017/10/05(木) 12:49:03.43ID:i3OOJkl5
Javaは実行時最適化がはまれば速い感じ
でも、カリカリにチューニングされたJavaコードは、クラスをあまり使わずArrayだらけだっりしてつらい
0922デフォルトの名無しさん
垢版 |
2017/10/05(木) 23:04:07.77ID:arvYOnSy
Javaやら.NET等のJIT系言語は速い速い言われるけど実際のアプリケーションでその速さを体感できたことは一度もないや・・・
0923デフォルトの名無しさん
垢版 |
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すればすぐに入りそう。
0924デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:32:27.39ID:ckjydJIo
>>923
>連続してることが保証されないから

それはもはやデータ構造として「配列」と呼ばれるものではないのでは……
0926デフォルトの名無しさん
垢版 |
2017/10/06(金) 01:12:44.86ID:aJzo16CX
>>923
javaの配列って連続領域の保証されてないの?
0927デフォルトの名無しさん
垢版 |
2017/10/06(金) 11:58:56.15ID:R7tcOQE1
スレチだけど、JVMの実装仕様なんてベンダー依存でしょ, OracleとGoogleでも当然違うわ
0928デフォルトの名無しさん
垢版 |
2017/10/06(金) 22:14:03.16ID:aJzo16CX
だから言語として仕様化されてないの?ってことだろ。
c++だって実装バラバラだけど連続領域な仕様だろ。
0929デフォルトの名無しさん
垢版 |
2017/10/06(金) 22:51:58.93ID:R7tcOQE1
Cはポインタ I/F仕様に引きづられて配列仕様も必然として明確にせざる得ないからでしょ
JVMはbyte codeの解釈さえあってれば良くて、データ操作の実装仕様は知るかよって話だよ
VM上では連続領域に見せかけても、実態は数チャンクに分けた配列の持ち方だってあろうよ
0930デフォルトの名無しさん
垢版 |
2017/10/07(土) 00:56:21.68ID:OPYXFct1
いやだから、データ構造としての「配列」のデータ操作の時間空間コストと
実装がズレてたらそれはもう「配列」じゃないから
0931デフォルトの名無しさん
垢版 |
2017/10/07(土) 02:30:16.92ID:tD6GhHlF
一般的に配列と呼ばれるオブジェクトがメモリアドレス上でも断片化しないことを保証される処理系ってほとんど無いのでは?
ミュータブルオブジェクトへ要素を継ぎ足していったらコードからは連続的に見えてもメモリ配置は断片化するだろう
0932デフォルトの名無しさん
垢版 |
2017/10/07(土) 04:32:31.86ID:OPYXFct1
「要素を継ぎ足していったら」がそもそもオカシイ
要素継ぎ足せるのはそもそも配列じゃなくてロープかなんかだから
0933デフォルトの名無しさん
垢版 |
2017/10/07(土) 08:20:38.57ID:PzpAWNqF
配列の要件ってインデックスで要素にアクセスすることくらいじゃないの?
要素のポインタをとって操作できる言語以外は実際の記憶領域が連続かそうでないか
判断する術はないと思うが。
0934デフォルトの名無しさん
垢版 |
2017/10/07(土) 08:39:14.98ID:rgSj2Elc
ポインタ操作だって処理系依存でどんな変態実装も理論上はあり得ると思うけど
C/C++の仕様を調べる気力がない
0935デフォルトの名無しさん
垢版 |
2017/10/07(土) 09:54:16.89ID:h9TjUWM8
>>933
> 配列の要件ってインデックスで要素にアクセスすることくらいじゃないの?

じゃリンクリストでもいいってわけ?
インデックス操作は内部でポインタたどってさ。
0936デフォルトの名無しさん
垢版 |
2017/10/07(土) 12:18:14.74ID:bipqd+gM
配列だとインデックスのアクセスにO(1)を期待してるが
それが保証できるのかという話じゃないの
0938デフォルトの名無しさん
垢版 |
2017/10/07(土) 12:40:30.10ID:efrwvuZ0
チューニングで気にするのはメモリ配置よりCPUキャッシュに乗るかどうかでは
そのとき配列のサイズが気にされるというだけで
0941デフォルトの名無しさん
垢版 |
2017/10/07(土) 14:30:31.33ID:bipqd+gM
O(1)でもO(n)でも a[i]と書けるなら配列だって感覚?
そう考えるのは自由だがまともな話はできなさそうだな。
0943デフォルトの名無しさん
垢版 |
2017/10/07(土) 16:04:55.47ID:+/+oWVUp
そんなの処理系によるわ
動作は変わらないからどうでもいい
0947デフォルトの名無しさん
垢版 |
2017/10/08(日) 00:52:44.13ID:riNh/ezn
>>943
>そんなの処理系によるわ
>動作は変わらないからどうでもいい

オーダーの違いはまさに動作の違い

> JavaScriptのArrayを配列と呼ぶのは間違いだ!
> と吠えている人がいますね

データ構造としての配列じゃないのはそうだろ
配列じゃなくてハッシュマップですよねー
というのがマトモなCS出身者の反応
0948デフォルトの名無しさん
垢版 |
2017/10/08(日) 07:38:16.10ID:whyFhQ9X
引き続きオーダー厨がフィーバーしてんなw

>>946
>>926, >>928曰く、C言語には仕様として配列は連続領域であることが決まってるらしいよ
んで、Javaでは特に連続領域で実装することを仕様と定めてないよねーって話をしてんだろ
0949デフォルトの名無しさん
垢版 |
2017/10/08(日) 08:29:08.64ID:Eg4i3QFB
>データ構造としての配列じゃないのはそうだろ
>配列じゃなくてハッシュマップですよねー

結局、それまで展開していたオーダー云々の論理はどっかにやって
「配列じゃないものは配列じゃない」ってかw
0950デフォルトの名無しさん
垢版 |
2017/10/08(日) 09:02:22.19ID:p8wkQapI
ポインタの値が連続でも実メモリ空間のアドレスは連続とは限らないし
そのあたりのアドレスの連続性の抽象化をOSでやるか言語の処理系でやるかの違いと思えば
配列の要素の仮想メモリ空間でのアドレスが必ずしも連続ではない言語処理系があっても良いと思う
0951デフォルトの名無しさん
垢版 |
2017/10/08(日) 09:38:42.04ID:whyFhQ9X
>>949
配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する
それ以外の仕様、実装による配列は配列とは認めない

という論理で一応オーダー云々も彼の中では含まれてるんじゃないかな
ポインタのポインタで配列を設計したら、それはもうハッシュであり配列ではない的なことも言ってるし
多数の言語仕様, 言語処理系で配列ではないものが配列として扱われてて大変そうだなって思うね:D
0952デフォルトの名無しさん
垢版 |
2017/10/08(日) 10:03:07.61ID:W71T9805
JSのArrayは配列じゃなくてリスト
TypedArrayが配列

メモリが連続化を気にするとかどれだけ低レベルな言語使ってるんだ
インターフェイスが同じなら実装とかどうでもいい
老害かよ
0953デフォルトの名無しさん
垢版 |
2017/10/08(日) 10:54:24.49ID:T4FplNPL
データ構造の読み書きのオーダーも仕様の内だけど、メモリ上のレイアウトまで仕様という考えはマイナーじゃない?
アドレスを当然のように明示的に扱う言語だと当然の範疇かもしれんし情報として提供して欲しいけど、そうでない言語ならn番目の要素へのアクセスがO(1)であれば配列でいい
で、Rustはアドレス直触りは可能だけど普通はやらない。Cみたいに構造体のメモリ上の表現がはっきり決まってるわけでもないし
0954デフォルトの名無しさん
垢版 |
2017/10/08(日) 15:41:19.83ID:EDHW4lpZ
>>951
> 配列とは、連続領域で確保されO(1)でアクセス可能なものと(俺の中で)定義する

そう思うのは勝手だけどそれに基づいて他人を批判するってどんだけ独善的なんだ
0957デフォルトの名無しさん
垢版 |
2017/10/08(日) 20:18:32.63ID:whyFhQ9X
>>952
(配列の定義を)お前がそう思うんならそうなんだろう お前ん中ではな
ちなみに、Rustスレ住民はRust言語を使ってるゾ

>>953
Rustのstructメンバは連続を保証してるんでなかったかいな
repr((C)で宣言した時に限ってるんだっけ、unsafe多用してる変態がいたら教えてくれ
0958デフォルトの名無しさん
垢版 |
2017/10/09(月) 00:25:52.32ID:KLfOKOYK
>>933
それって、(一次元)コンテナでは。
で、コンテナの実装方法として配列やらリンクドリストやらが存在する。
0959デフォルトの名無しさん
垢版 |
2017/10/09(月) 00:29:02.79ID:KLfOKOYK
>>952
> インターフェイスが同じなら実装とかどうでもいい
そういう目的にはrust使う必要なくね?
0964デフォルトの名無しさん
垢版 |
2017/10/09(月) 09:00:12.81ID:CsWYGxTc
>>958
もともと配列やその他のデータ構造からインターフェースのみ抽出したものがコンテナなんで、
それを言語仕様の側からは単に配列と称していることはあるだろう。
仮にそれを認めないとしても、元の質問の「JVMの配列は連続しているか」が「JVMのコンテナ(?)は
連続しているか」になるだけ。
0965デフォルトの名無しさん
垢版 |
2017/10/09(月) 10:26:26.16ID:EKQlpQJF
いるなぁC++のプロジェクトでarrayで十分なところに無駄にmap使いまくるやつ
おっさんプログラマとしては看過できないんだが(少なくとも仕事では)
これが時代なんだろうか
0968デフォルトの名無しさん
垢版 |
2017/10/09(月) 14:47:42.14ID:5Wk6yJf6
自分もどちらかと言えば効率厨のつもりだけど
実行コストと可読性が大差ないなら好きな方を使えばいいと思う
0971デフォルトの名無しさん
垢版 |
2017/10/09(月) 18:49:17.20ID:GUc1DOLO
Vec<f32> を Vec<f64>に変換したいのですがどうしたらいいでしょうか?
やりたいのは
&[f64]を引数として受け取る関数にVec<f32>の内容を渡したいのですが。
0973デフォルトの名無しさん
垢版 |
2017/10/09(月) 20:46:44.09ID:g5Xwcr4f
>>972
ありがとうございます

今回は外部ライブラリだからしょうがないかな

普通はなんのtraitで受けとるんでしょうか?
0974デフォルトの名無しさん
垢版 |
2017/10/11(水) 16:41:05.41ID:3w9jP5qe
色々あるんだろうけど、こんな一例
https://play.rust-lang.org/?gist=d00fb7f7041fce1649767ecf95bb936a&;version=stable

AsRefとかIntoとかFromとか、なんかその辺調べたらいいんじゃないかなぁ
他人に公開する目的のpub fn以外で使うのはバイナリ容量増やす一因になるからいたずらには使いたくは無い(他人がする分には気にしない
ただまぁ、枯れたおっさんプログラマの感想であって、map, arrayの使い分けに口出すおっさんは同様に口出してくると思うので注意されたし
0976デフォルトの名無しさん
垢版 |
2017/10/11(水) 20:18:32.35ID:SdSs/e3t
rustって難しいって聞くけどどうなの?

数百行程度のcliツールとか作るのにも適してる?
0978デフォルトの名無しさん
垢版 |
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
0979デフォルトの名無しさん
垢版 |
2017/10/12(木) 09:41:32.32ID:cYUXFwFa
>>975
RealがSupersetOf<f64>を継承してるから受け取る関数がf64を扱うならTrait Realを受ける形でも良さそう
Alga使ったことなくてどっちを使う方がスマートなのか分からんから、自分が取り回しやすいと思う形でどうぞ
0981デフォルトの名無しさん
垢版 |
2017/10/13(金) 15:11:36.11ID:bp4APqrz
Rustの話をしないRust板の住人
言語として形になってないから言語のことを話せないんだろうなぁ
直近もまともな更新ないし、世間の話題も下火だし
工作員さんもっと頑張らないといけませんよ(ハナホジ)
0982デフォルトの名無しさん
垢版 |
2017/10/13(金) 17:39:13.20ID:xbVdueHZ
tanakhのrustベタ褒めツイートでも列挙しようか
0983デフォルトの名無しさん
垢版 |
2017/10/13(金) 17:40:12.67ID:+y/vofi6
>>976
性能だすために生ポ触るとかしなければボローイングなんかも
そんな難しく考えずにコード書けるとは思う。
一部の馬鹿が言語機能をドヤしたいってのが一番流行るのを妨げてる。
0984デフォルトの名無しさん
垢版 |
2017/10/13(金) 17:44:57.66ID:PbP1JTIY
じゃんじゃんクローンすればいいんだよ
性能に困ったときだけ再考すればいい
0985デフォルトの名無しさん
垢版 |
2017/10/13(金) 18:36:57.97ID:FAMCtm4a
>>980
何代目の時報か知らんけど次スレよろ
あと、2年近くかかって取り込まれたrvalue static promotionをスルーするとかどうかしてんぜ
0986デフォルトの名無しさん
垢版 |
2017/10/13(金) 18:45:29.22ID:RXIUnIoB
ムーブセマンティクスをきちんと意識すれば借用はそこまで難しかないよね
まあそこでCの経験が却って邪魔になるところがあるわけだけど
0988デフォルトの名無しさん
垢版 |
2017/10/13(金) 22:43:54.95ID:dC2M8380
borrowing というか mutable aliasing だけはやっぱり辛いなあ。
多くの場合 struct メンバの false sharing なんだよね…。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 151日 10時間 44分 40秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況