X


Rust Part7

レス数が1000を超えています。これ以上書き込みはできません。
2019/07/14(日) 23:31:47.54ID:PySyhRf9
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

前スレ
Rust Part6
http://mevius.5ch.net/test/read.cgi/tech/1532714678/
2019/07/15(月) 14:42:37.66ID:Xch0qlQL
>>1おtsuR
3デフォルトの名無しさん
垢版 |
2019/07/15(月) 17:56:25.13ID:9ryZm2UI
ビルドエラーが出るのですが、なにか解決策はありますか?

Compiling backtrace-sys v0.1.30
error: failed to run custom build command for `backtrace-sys v0.1.30`
process didn't exit successfully: `C:\Programming\Rust_project\socket_programming\target\debug\build\backtrace-sys-159a954e4a82ac78\build-script-build` (exit code: 1)
--- stdout
cargo:rustc-cfg=rbt
TARGET = Some("x86_64-pc-windows-gnu")
OPT_LEVEL = Some("0")
HOST = Some("x86_64-pc-windows-gnu")
CC_x86_64-pc-windows-gnu = None
CC_x86_64_pc_windows_gnu = None
HOST_CC = None
CC = None
CFLAGS_x86_64-pc-windows-gnu = None
CFLAGS_x86_64_pc_windows_gnu = None
HOST_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
running: "gcc.exe" "-O0" "-ffunction-sections" "-fdata-sections" "-m64" "-I" "src/libbacktrace" "-I"
"C:\\Programming\\Rust_project\\socket_programming\\target\\debug\\build\\backtrace-sys-361946668d7e8f79\\out"
cargo:warning=cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
exit code: 1

--- stderr


error occurred: Command "gcc.exe" "-O0" "-ffunction-sections" "-fdata-sections" "-m64" "-I" "src/libbacktrace" "-I"
"C:\\Programming\\Rust_project\\socket_programming\\target\\debug\\build\\backtrace-sys-361946668d7e8f79\\out" with args "gcc.exe" did not execute successfully (status code exit code: 1).
2019/07/15(月) 18:45:30.04ID:y88H95dP
>cargo:warning=cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

「rust unimplemented: 64-bit mode」で検索すれば?
2019/07/15(月) 23:08:24.27ID:VplRLaA9
32bit mingwで64bitのコンパイルしようとした時のエラーの話だからrust付けると出てこないだろうな。
*-pc-windows-gnuはツールチェーン含んでるから余計な環境でビルドせずに含んでるもの使えばいいんだよ。
2019/07/16(火) 15:23:57.01ID:jMFvbE2f
Rustで
port0.od = 0; // 0b00000000
port0.od.b0 = 1; // 0b00000001
port0.od.b5 = 1; // 0b00100001
port0.od.b0 = 0; // 0b00100000
みたいな実装って出来るんだっけ?
port0.od = 0; // 0b00000000
port0.od.b1(1); // 0b00000010
とか
port0.od = 0; // 0b00000000
port0.od.bitset(6); // 0b01000000
みたいに関数を介せば出来ると思うけど
2019/07/16(火) 19:08:19.57ID:JinG5ry6
bitflags?
8デフォルトの名無しさん
垢版 |
2019/07/16(火) 19:17:48.80ID:HPUIeONI
できない
2019/07/16(火) 20:14:44.06ID:56kV8Vkg
>6 標準では用意されてないけど、名前の通りbitfieldってcrateがあるから試してみて
https://github.com/dzamlo/rust-bitfield
106
垢版 |
2019/07/16(火) 22:09:31.51ID:mK/lXdx0
サンキュ。やっぱ無理か
こういう記法が出来る処理系って少ないですよね。言語レベルで対応しているか=の上書きと括弧無し関数呼び出しが出来るとかじゃないと難しい

どうやって実装しよう
1.読み出し:b0()、書き込み:b0set([0|1])
2.読み出し:bit(n)、書き込み:bitset(n)、bitclear(n)
どちらもスマートじゃないな。Rustだと引数の初期値を取れないから一つの関数で読み書き兼用というのも出来ないし

>>7
機能上はマスクで足りるのですが名前でビットを指定できた方が読みやすいので

>>9
読み出し:bit、書き込み:set_bitと実装されているみたいですね。こんな書き方しかないのかな
2019/07/16(火) 22:19:22.64ID:BU48xkSV
bitmapで良くない?外部クレートなかったっけ?
2019/07/16(火) 22:25:39.33ID:BU48xkSV
間違えたbitsetだ。
2019/07/16(火) 22:30:18.97ID:p9rPVFUU
マクロ使えば見た目は似せられるかも?
bit! {
od = 0;
od.b0 = 1;
}
みたいにしてASTいじって関数呼び出し形式に変換する感じの。
14デフォルトの名無しさん
垢版 |
2019/07/17(水) 00:27:23.47ID:OvMw+j5/
初心者です。苦戦してます。お知恵を貸してください。
仮想端末を含んだ GTK+3 アプリを C++ で作りたいです。
gtkmm だと vte が使えない(?)ので、gtk-3.0 を使って試してます。
サンプルを下のリンクに置きました。

make すると main 最後の return app->run(window); の所で、
[no member named 'run' in '_GtkApplication']とエラーになってしまいます。
この部分は gtkmm の例から持って来たもなので、変える必要があるのですが、
gtk+3 ではどう書くのが正解でしょうか?よろしくお願いします。
あるいは、gtkmm でも vte を使う簡単な方法がもしあれば、教えてください。

Makefile
http://codepad.org/wldK76KY

main_test_3.cc
http://codepad.org/NopgbNXP

sample_3.h
http://codepad.org/BiQt354F

sample_3.cc
http://codepad.org/I1B7AyJL
1514
垢版 |
2019/07/17(水) 00:29:17.38ID:OvMw+j5/
すみません。誤爆しました。14は無視してください。
16デフォルトの名無しさん
垢版 |
2019/07/17(水) 04:37:31.38ID:0r3gt+vm
>>10
配列でいいじゃん
2019/07/17(水) 06:40:54.65ID:miXA5FV0
Rustって、なんでRustっていう名前なんですか
2019/07/17(水) 14:51:22.82ID:HPA9WgE0
>>5
>>4
>>3
64bit のほうでやったらいけました
196
垢版 |
2019/07/17(水) 17:35:45.39ID:rYwqYjNV
>>12
一応no_std予定なので・・・

>>13
スマン。マクロ書いたことないんで理解できないです

>>16
あ、そうか。Index、IndexMutを書けば[]と[]=で読み書きできるようになりそう。やってみよう
2019/07/17(水) 17:43:48.56ID:qxRR1SXW
そういや、マクロって保守性悪くなるんじゃない?
2019/07/17(水) 18:02:15.81ID:v7+Dn7CU
Cみたいに
port0 = BIT5
port0 = BIT2 | BIT4
val = port0 & BIT4
じゃあかんの?
22デフォルトの名無しさん
垢版 |
2019/07/17(水) 21:24:51.41ID:0r3gt+vm
>>19
enum Bit { On, Off }
let byte = [Bit::Off; 8]
こんなんじゃダメけ?
2019/07/17(水) 23:44:22.07ID:7KdSCzvc
VSCodeにrustupとrlsとC++のツールチェーンを入れてcargo new hello --bin
をShift+Ctrl+Bでビルドしてデバッグ実行もできるようにしたのですが、
できたファイルのうちのどれとどれをGitにコミットすれば一番幸せになれるの?
(1) .gitignore
(2) Cargo.toml
(3) Cargo.lock
(4) main.rs
(5) main.exe
(6) main.pdb
(7) ./vscode/task.json
24デフォルトの名無しさん
垢版 |
2019/07/18(木) 05:56:44.97ID:5vDlE6vb
(1) .gitignore

に書かれてないやつ
2019/07/18(木) 22:17:54.85ID:tHz4DA4Z
レスdクス、実はcargo cleanして残ったやつ全部コミットにしといた…

それはそうとして分割コンパイル&リンクまでするには一体どうすれば…orz
実はmake不要でcargoが面倒を見てくれる…?
いやしかし次のサイトでは(VSCode環境ではないが)めっちゃmakefile書いてるし…
ttps://yoshitsugu.net/posts/2019-06-04-haribote-os-in-rust-day3.html
2019/07/18(木) 22:23:30.40ID:cexb+rGl
>>25
普通はmake不要でcargoのみ。そのサイトはどこかから持ってきたアセンブラをnasmするのにmakeつかってるだけっぽいのでrust関係ない。
2019/07/18(木) 23:36:01.21ID:JZFbYeti
Microsoft、安全で高効率のプログラミング言語として「Rust」を高く評価:メモリ破壊
バグを避けるには 2019年07月18日 19時00分 公開
https://www.atmarkit.co.jp/ait/articles/1907/18/news122.html

 Microsoft Security Response Center(MSRC)は2019年7月16日(米国時間)、ソフト
ウェアのセキュリティを確保しつつ、効率性も保ちたい場合、利用可能なシステムプロ
グラミング言語として、「Rust」を高く評価した。

 MSRCによれば、Microsoftが「CVE(共通脆弱性識別子)」を割り当て、修正してきた同社
ソフトウェアのセキュリティ脆弱(ぜいじゃく)性の大部分は1つの要因から起こっている。
開発者がC/C++コードにうっかりメモリ破壊バグを作り込んでしまったことだ。(中略)

C#とC++のメリットを兼ね備えるのは
 C#のような言語が提供するメモリ関連のセキュリティと、C++の効率性を兼ね備えた言語
があれば、開発者にとって理想的だ。MSRCは、両方の要件を満たす最も有望なシステムプロ
グラミング言語として、Mozillaの公式プロジェクトとして進化してきた「Rust」を挙げて
いる。

 さらにMSRCは、業界として真のセキュリティ対策を進めるには、脆弱性に対処するための
ツールやガイダンスを提供するよりもむしろ、「開発者にそもそも脆弱性を発生させない
ための取り組みを行わなければならない」との見解を示した。

 MSRCは、安全性の低いレガシー言語から、モダンで安全なシステムプログラミング言語
への移行を促進するという観点から、Rustをはじめとする安全なシステムプログラミング
言語の活用に向けて、Microsoftが行ってきた取り組みを今後も紹介していくという。
2019/07/19(金) 01:03:06.37ID:GCRlNtpT
ああついにMicrosoftまでMozillaのステマの犠牲に…
296
垢版 |
2019/07/19(金) 03:55:32.80ID:vDoYj/5c
参照しか返せない状態で計算結果を返すって方法ってあるんだっけ。通常なら値を返すように宣言すればすむ話ですが
Indexは参照しか返せないようです。たとえば*addr >> idx & 1の結果を返したいです

>>21
それだとセットとクリアでAND or ORと値の両方を変更せねばならずどちらかを忘れてバグを産む可能性があります

>>22
ググるとそのような例が出てきますね。Rust的に正論だと思いますが元となるハードウェアのマニュアルでは
0:○○になる
1:××になる
みたいな表記が主流に見えます。ここから外れた表現の強制は言語の安全性とは別なところでリスクを抱えるように思います
30デフォルトの名無しさん
垢版 |
2019/07/19(金) 06:34:47.15ID:hHIdkAH0
>>29
ほんなら0と1でプログラム書けやタコスケ
プログラミング言語ってのはハードウェアを抽象化するためにあるんだぞ
2019/07/19(金) 08:09:28.17ID:1jAR2vN7
>>29
and or orと値の両方を変更せねばならずってどういうこと?
326
垢版 |
2019/07/19(金) 11:55:39.50ID:vDoYj/5c
>>31
port0.od = 0b00000000 // 右端を0ビット目とする
port0.od |= 0b00000100 // 2ビット目を1に → 0b00000100
port0.od |= 0b00100000 // 5ビット目を1に → 0b00100100
port0.od &= 0b11111011 // 2ビット目を0に → 0b00100000
ビット列は抽象化できるけどANDとORは一連の処理をラップできない限り手動で変更する必要があります
Cやアセンブラで低レベルの処理をする場合は多用される書き方だと思いますが結構危なっかしいと思います
2019/07/19(金) 12:19:48.14ID:4A+dpHhz
ビット反転するという脳味噌がないって話?
2019/07/19(金) 17:33:35.07ID:ARm0Ww4L
https://www.rust-lang.org/
Chromeの自動翻訳でサイトを見たら吹いてしまった。
「なぜ錆びるの?」って・・・。
2019/07/19(金) 21:01:17.76ID:wRHB2w4J
翻訳しないと読めないやつ
36デフォルトの名無しさん
垢版 |
2019/07/19(金) 21:05:45.56ID:g6GhiJm/
義務教育受けてたらwhy rustの訳だろうなってすぐ分かるよなたとえ翻訳かけてたとしても
376
垢版 |
2019/07/19(金) 21:40:27.14ID:EuFVnXjl
Index、IndexMutが何でこんな仕様なのかと思ったらC++の[]に合わせたのか
C++ぽく使えるがそれ以外の使い方は想定されていないと

結局普通の関数で妥協するしかないのかな。抽象度はCに毛が生えた程度、C++未満?か
どのみち組み込み用に拡張された処理系相当には出来そうにないっぽい
2019/07/19(金) 22:09:36.92ID:0WNLW8m0
>>37
Rustは構文的な自由度あんまりないからね。Scalaが自由度ありすぎて混乱してた反省を踏まえてるのかな、って思ってる。どうしてもやりたいならマクロがあるし、妥当な落とし所では。
2019/07/19(金) 23:31:27.88ID:ysC8gi5X
groovyと同じast変換するマクロもあるしcompiler pluginもあるし拡張は簡単。
2019/07/20(土) 12:57:28.24ID:rHpvZKFq
rayonでzipイテレータを並列処理できますか?
2019/07/20(土) 22:15:20.44ID:AjHY8stg
rust未経験者がwebプログラミングをrustで始めるのってどう思う?
俺の背景としてはocamlを1年ぐらいやってて「Real World OCaml」みたいな定番書を読んで簡単なコンパイラとかVMを作ったっていうレベル

rustでやるモチベーションとしては
・OCaml誰もやってなくて未来が見えない
・最低でもバリアントとパターンマッチが欲しい
・ネイティブが良いからscala/F#は嫌だ

こういう理由

web自体が初心者だからrailsとかのチュートリアルぐらいは先にやっておくつもり
2019/07/20(土) 22:46:21.59ID:wwp1044b
どうも何もWebアプリは言語の選定は大した問題じゃなくて、Webアプリの基礎がわかってるかどうかだぞ
セッション管理、Rest、クライアントスクリプト、見た目とロジックの分離等々
2019/07/21(日) 00:44:57.93ID:Ct/mrgVP
そうは言っても情報量の多さとかで挫折しにくい言語ってのはあるでしょ
Rustは明らかにきついほうだろうけど...
2019/07/21(日) 01:53:54.94ID:iF1O4o5j
>ocamlを1年ぐらいやってて
>コンパイラとかVMを作った
能力的にはRustでWebするのも余裕なんじゃね;
もっとも、SQLインジェクションみたいな文字列解釈やセッション絡みの脆弱性を
思わず作りこんでしまうことはRustでも避けられないから>>42のは真実だと思うが
2019/07/21(日) 22:07:53.58ID:SjT3tKFm
ocaml辺りやる人間にはつまらんぞwebは。
2019/07/25(木) 18:18:35.03ID:lKY1yvEr
rustむずい
gcのついたrustが欲しい
2019/07/25(木) 19:38:42.91ID:5L4KGe8+
存在意義を否定してどうするよ
go使えば
2019/07/25(木) 20:37:16.64ID:lKY1yvEr
最低でもヴァリアントとレコードとパターンマッチがあって全体的に式指向な言語が良い

ocamlがマルチスレッドに対応しててもっと流行ってれば...
scala/f#がネイティブであれば...
haskellが正格評価でもっとパフォーマンスが良ければ...

皆さんc/c++の置き換えとしてrustやってるの?
自分は関数型言語由来の機能が多くてネイティブで動く言語が欲しい
そういう理由でrustに手を出す人って少ないのかな
rust製のcliツールとかめっちゃ多いし、低レイヤのためだけにrustやってる人のほうが少ないんじゃないかな
2019/07/25(木) 21:49:12.38ID:E2feltVj
多いか少ないかが気になる年頃
50デフォルトの名無しさん
垢版 |
2019/07/25(木) 21:54:26.88ID:6TAkPITO
難しいからなんなんだよってかんじ
勉強すればそのうち使えるようになるんだからどうでもいいことじゃん
俺はPHPの置き換えで使ってるけど
2019/07/25(木) 22:40:39.89ID:PNoIdPh5
rust, c++より少しはマシくらいの言語だわな。
実装系含めたらまだc++のがマシになるが。
2019/07/25(木) 22:50:06.02ID:w/leXg8D
C++がましってどのへん?学習コストはどうしようもないとして、学習してしまった今となってはC++に戻る気とか一切しないんだけど。
2019/07/26(金) 15:42:10.78ID:I3xx9WAP
本当にGCが必要か?
https://boats.gitlab.io/blog/post/notes-on-a-smaller-rust/
54デフォルトの名無しさん
垢版 |
2019/07/26(金) 18:13:40.72ID:a+EwZNsG
ながいから要約たのむ
2019/07/26(金) 18:54:02.12ID:EH3/YLuD
初代wiiもいらんだろ
2019/07/26(金) 22:09:00.78ID:6wMSM/4s
>>46
pony。cliツールっていうかcoreutilsとbusyboxの代替実装とかならあるけど。
2019/07/27(土) 01:35:00.73ID:KwccJBez
>>52
cとかより低いレイヤーの言語をバインドしようとした時、より素直。
2019/07/27(土) 10:26:09.62ID:T7BomvTp
お前らが本当に必要としてるのはRustじゃなくて
ziglangなのでは?
2019/07/27(土) 10:58:34.72ID:S2cl2wQi
流行ってる言語じゃないとしんどいってocamlで学んだ
2019/07/27(土) 12:01:40.60ID:4xSO5KPL
デストラクタ的なのがあればなんでも良い
61デフォルトの名無しさん
垢版 |
2019/07/27(土) 17:07:58.74ID:lIukHdgf
>>58
zigはGCあるからダメ
2019/07/27(土) 23:21:52.36ID:YuLtVEnV
rustがリアルタイムで使われてるの聞いたこと無いんだけど
どうせgcあるから駄目とか言ってるやつはメモリの開放タイミングが
予測不能でも致命的にならない事しかしてないんだろ?
2019/07/27(土) 23:56:46.19ID:90NMqXYM
Option<char>とStringを結合させたいんですけど、どうすればいいんですか?
2019/07/28(日) 00:12:52.45ID:BWTSPDmr
>>63
Option<char>はList<char>の特殊な例と考えて良い
これ、関数型言語の常識
2019/07/28(日) 02:05:17.30ID:5UHV96py
let x: String = "Hello World!".toString();
s += Some(x)?;
いや知らんけど
2019/07/28(日) 02:07:09.62ID:5UHV96py
xはcharやったorz,
67デフォルトの名無しさん
垢版 |
2019/07/28(日) 09:18:55.32ID:t62k8itt
リアルタイムでってなに?
目の前でrust書いてくれるってこと?
2019/07/28(日) 09:43:05.38ID:2BtEWPhc
致命的(画面が時々固まる)
2019/07/28(日) 11:22:38.76ID:pMfSdwXX
>>63
>>64
unwrapしてformat!で結合できましたm(_ _)m
2019/07/28(日) 12:16:23.87ID:G72VT/2G
GCは結局メモリ以外のリソースはまともに管理できなくて、自分でデストラクタ呼ぶはめになるのがつらい
2019/07/28(日) 12:24:41.52ID:p9n7KwZ9
rustでc++のtemplate<class T, size_t N>struct array{T elm[N];}みたいな事可能なの?
2019/07/28(日) 13:40:28.12ID:GSiaruU8
抜け道はあるかも知れんがジェネリクスでは型しか取れない
2019/07/28(日) 14:40:16.56ID:+9hlsOXW
https://github.com/rust-lang/rfcs/blob/master/text/2000-const-generics.md
https://github.com/rust-lang/rust/issues/44580

できるようにする構想はあるっぽい
2019/07/28(日) 15:01:36.78ID:+9hlsOXW
まだ実装終わってないけどnightlyなら一応使えるっぽいよ

#![feature(const_generics)]
75デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:04:25.79ID:5UHV96py
高機能なマクロもクロージャも使えるのだから値パラメータなジェネリクスは冗長
なキモス
2019/07/28(日) 19:07:52.98ID:XzK5p4st
C++から機能取り入れるとクソ言語化するからやめてほしい
77デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:22:39.84ID:5UHV96py
んまー値パラメータなクラステンプレートを実現しようとしたらマクロでは済まないのか
そうか
2019/07/28(日) 19:31:07.73ID:jklii+Ft
>>70
GCは全く関係ないがな。
try使うとかwith使うとかgoならdefer使うとかそういう話だろ。
オーバーヘッドガー言い出すやつって
ただまともにメトリックとるスキルがないってだけだろ。
2019/07/28(日) 19:45:22.37ID:B+3CJM6Y
この国語力はやばい
2019/07/28(日) 20:15:28.70ID:60uqYffv
>>78
RustやC++のスマートポインタならスコープ抜けたときのデストラクタできれいにリソース解放できるけどGCだとできないね、って話なんだが。
それを部分的に解決する方法としてC#のusingとかがあるけど、関数を跨ぐような寿命の長いリソースには使えない。
try-finallyやGoのdeferなんて、絶対書き忘れてリソースリークするパターンだろ。
2019/07/28(日) 21:21:52.37ID:GSiaruU8
現状静的配列が使い物にならないから const generics は必要だと思う
2019/07/28(日) 21:26:23.70ID:B+3CJM6Y
いらねーだろ
それでどんだけ速くなんだよ
2019/07/28(日) 21:30:14.25ID:GSiaruU8
ゼロコスト抽象化を標榜してる以上は行列計算をVecでやれとは言えんだろ
2019/07/28(日) 21:36:32.69ID:B+3CJM6Y
それはzero costの履き違え
2019/07/28(日) 21:37:48.82ID:GSiaruU8
お前にとってはそうなんだろう
2019/07/28(日) 23:01:30.64ID:jklii+Ft
>try-finallyやGoのdeferなんて、絶対書き忘れてリソースリークするパターンだろ。
一理あるが、資源を正しく管理するデストラクタ書くのそんなに楽じゃねーぞ。
舐めすぎだわ。
2019/07/28(日) 23:39:20.86ID:G08azDw2
>>86
他言語でもさんざん書いたからデストラクタの難しさは知ってるつもりだけど、
ライブラリ作成者が注意深く書いたデストラクタをみんなで使うのと、各自finallyやdeferを正しく実装しましょう、なら前者がましでは?
88デフォルトの名無しさん
垢版 |
2019/07/28(日) 23:58:54.12ID:5UHV96py
ちょっデストラクタで開放処理を書けない資源とかもはやプロセスをkillするしか、
2019/07/29(月) 00:07:34.10ID:9xGY09/M
Vecはただのfat pointerのnewtype patternだからアラインが合えば自動ベクトル化できるんじゃないの?

>>80
gcあるならref objectあるだろ。今どき。
90sage
垢版 |
2019/07/29(月) 00:09:11.34ID:bStHYZl0
ていうかデストラクタ自体は問答無用に資源を開放するように作ればよいのであって
そうならないのは上位の設計がおかしい
例外のスローが許されないなどただでさえ制約が厳しいところに小難しいロジックを押し込んでどうするんじゃ…

資源の開放に一定の手順が必要ならそれはデストラクタの中ではなくデストラクタが呼ばれる前にすませるべきだし、
必要な手順が抜かされたみたいなバグのケースの救済までデストラクタの任に負わせるのはおかしい
資源の開放自体にエラーの危険性があるならインスタンスの製造元(ファクトリ)にエラー通知してから死ぬ等の
パターンに従うべき
2019/07/29(月) 00:23:30.71ID:ovYGqPmP
>>89
ref objectがなんなのかよく分からないが、GCにリソース解放させる場合の問題はタイミングを制御できないことだと思ってる。
スコープを抜けて回収可能になったからといってすぐ回収されるわけではないから次の確保が早すぎると死ぬ。
まぁたいていの場合問題ないってのはあるけど、本質的にはGCに合ってないと思う。
2019/07/29(月) 00:34:54.17ID:bStHYZl0
すぐに開放されないだけの問題なら開放されるまで待てば良いではありませんか、
さすがに今日日のGCは開放可能な資源の発生と資源の獲得要求がmeetした場合に何もしないほど馬鹿ではないと思われ
(meetのトリガタイミングがなんと2回もある

致命的に問題なのはGCには資源に空きがあるように見えるが、GCが知りようがない上位のロジックで循環依存が生じる場合
ファイルをN個まで同時に複数開けるシステムで、a、bの2個しかファイルが開かれていないんだけど
スレッドAがファイルaを出力し終えた後ファイルbのクローズを待っており、スレッドBはファイルaのクローズを待ってからbを出力せんとしている場合等、
2019/07/29(月) 01:10:00.62ID:X0vpIRmF
>>87
俺は後者のがマシだと思うけどね。
資源解放のパターンをオブジェクトで判断するとか自然な設計だと思えんよ。
解放ルーチンなりをシチュエーションごとに用意する方が明らかに自然だわ。
2019/07/29(月) 01:17:46.83ID:ovYGqPmP
>>92
実際問題例えばC#のGCはそれくらい馬鹿ではある。
というかファイルハンドルの中身と次のリソース要求を見て、適切に回収してくれるGCってあるの?
メモリ解放のタイミングでたまたまその他のリソースも解放されてるだけでは?
2019/07/29(月) 21:42:08.32ID:CSar0obt
https://i.imgur.com/l91swsP.jpg
96デフォルトの名無しさん
垢版 |
2019/07/30(火) 00:57:12.66ID:ZDjzCSg/
>>95
グロ
2019/07/31(水) 21:59:30.06ID:BBGtrgFp
効率的なTreeの書き方どこかに書いてあったはずなんだけど忘れてしまった

どこにかいてあるかわかるひといますか?
2019/07/31(水) 22:04:33.03ID:BBGtrgFp
enumをつかっていたような気がするんですが・・・
2019/08/01(木) 00:10:45.06ID:zC1laZAw
効率的なTreeってなに?
代数的データ型なら普通はsum type(rustのenum)で書くけど。
2019/08/03(土) 11:04:41.72ID:RLY9hdXo
???@???
Rustとの戦いにつかれたのでDを触った次第

↑RustでコンパイラとかVM作ってる人のツイート
Rustってそんなに難しい?
2019/08/03(土) 13:51:49.63ID:aqiFUikh
配列で親ノードIDや子ノードのID持たせるとかじゃなかったか。
所有権引っかからんようにするとそんな感じになる。
2019/08/03(土) 22:29:28.05ID:Pq9Lnt2C
他言語でもGUIのグラフとかは結局そうなるんだけどな。
103デフォルトの名無しさん
垢版 |
2019/08/05(月) 09:41:10.02ID:VmFTmeN2
>>100
面倒くさい
2019/08/06(火) 13:13:46.53ID:trr4oLNQ
Javaとの違いは何
2019/08/07(水) 01:19:35.26ID:go9nzBX4
今日知って驚愕したのだがJavaは構造体の参照を返すということができず、
どうしても参照返ししたいときは構造体のメンバを書き換えて返すという歪な手段を使う
↓こんなやつ
 class CWDPath {
  String mPath = "";
 }  
 boolean getCWD(CWDPath result) {
  result.mPath = "SomeDir";
  return true;  // 性交ステータス
 }

これはresultの寿命がmPathに代入するデータの寿命を下回らないケースでしかRustでは書けないハズ
つまりJavaはRustのアンチパターンで大々的に書くことを余儀なくされる危険な言語
2019/08/07(水) 01:49:51.15ID:KVZqz5pU
性交ステータス
2019/08/07(水) 08:31:50.75ID:eqkXQjzY
Javaすら理解できてないのにRustを使おうとするとは勇ましい
2019/08/07(水) 12:04:18.71ID:Fq68/ECQ
何もかも間違っていて突っ込む気も起こらん
2019/08/07(水) 21:02:26.47ID:bj+hpOaY
javaに構造体はないってことくらい突っ込んでやれ。
value typeは当分先だ。
2019/08/08(木) 05:27:28.23ID:FTUf1Nuq
いや正しいていうかこの話にvalue typeは関係無い(返そうとしているStringは参照型
間違っているというならreturn mPath以外の方法でgetCWD()からStringを返してみると良い
2019/08/08(木) 05:51:36.26ID:FTUf1Nuq
んまー不用意に構造体と書いてしまったのは陳謝するのですよ
2019/08/08(木) 07:38:49.45ID:097LZjtE
組み込みの値型以外は全て参照型で管理されてる事が理解できてないって事?
2019/08/08(木) 13:27:41.32ID:+iXEwaHu
Javaにおける参照はオブジェクトへのポインタのことで、RustやC++の参照とは違う概念なのだよ
2019/08/08(木) 13:30:51.54ID:+iXEwaHu
だから参照を返すという言葉の意味も Java と Rust では違う
2019/08/08(木) 14:49:51.48ID:bpfrenBa
何言いたいのかさっぱりわからん
コンパイルエラーになるがやりたいことを書いてくれ
2019/08/08(木) 15:16:04.89ID:6plAwatI
JVM上で動くJRustはまだか?
117デフォルトの名無しさん
垢版 |
2019/08/08(木) 15:54:03.06ID:YYsAu0ua
皮肉や冗句を言うにも一定のセンスと知能が必要と言う証左
2019/08/08(木) 22:35:10.82ID:FTUf1Nuq
>>115
C#の例(これは動く
void Main() { string str = new string(); bool bResult = getCWD(ref str); Console.WriteLn(str); // "some_dir"が表示される }
bool getCWD(ref string str) { str = "some_dir"; return true; // 性交ステータスとしてのtrue }

Javaで同じ事をしようとすると>>105になって、Stringを返すためだけのためにCWDPathみたいなクラスを作らねばならない

>>117
藻前は顔だけは賢そうだな
2019/08/08(木) 22:43:00.72ID:+Da//rmi
脳がC言語で止まってると色々気苦労が多くて大変だな
2019/08/08(木) 22:49:15.66ID:FTUf1Nuq
で、Javaでは何で>>105みたいな変なことになるかというと、参照の参照をとることができないため
ここで参照とは何かというと>>113の前半部で良い
参照自体はレジスタに代入したりスタックに1語で積める値型の一種とみなせる
C#ではrefキーワードにより、参照の参照をgetCWD()に渡すことができる
Javaは参照しかgetCWD()に渡せない。よって、CWDPathみたいなクラスの参照を渡してやって、
そのクラスがメンバとして所有する参照を上書きするという手段で返さざるおえない
2019/08/08(木) 22:54:58.10ID:FTUf1Nuq
>>119
参照型を引数として関数に渡すしくみはCで完成しているのだから>>119の言い様では批判になんね
Cではポインタやんけというのは本質ではない
参照自体はレジスタに代入したりスタックに1語で積める値型の一種とみなせる(>>120)
なのであって機械語レベルでみたらオブジェクトを指すポインタに他ならない
で、Java、C#、C++、Go、Rustいずれも参照型の関数渡しは参照をスタックに積んで渡すモデルであることは変わりない
2019/08/08(木) 23:28:59.60ID:+Da//rmi
とりあえず参照渡しという単語を調べなよ
2019/08/08(木) 23:33:17.49ID:FTUf1Nuq
調べてなお問題があると言うなら>>122の理解にこそ問題がある
2019/08/09(金) 00:50:26.80ID:3pQudWDx
>>118
最初説明したこととまるで違うじゃないか。用語は正しく使えよ。

結論は、戻り値で成功不成功を返そうとしたお前が全部悪い。>>119が正しい
2019/08/09(金) 01:47:43.61ID:A3Et6VBe
・カレントディレクトリを取得する
・取得の失敗を検出したい
というのが要求だとして
Javaでそんな変なことせずに
もっとまともな書き方あるから批判する前に
勉強しろや
2019/08/09(金) 02:00:37.01ID:hvzVkerT
>>118
Javaの場合は普通 >>105 みたいなことをせずに、getCWD() の返り値を CWDPath にして、失敗の場合には null を返す
CWDPathみたいなものを二つ返したいなら Pair を使うし、たくさん返したい場合に初めてクラスを作る
Java の進化系である Kotlin はこの辺を確実簡易に行うために nullable とか data class とかがある
2019/08/09(金) 07:24:48.24ID:L3ygUsvb
optional型とかnullable型みたいなヤツは色んな言語であるわな
2019/08/09(金) 10:03:40.29ID:Fvfs1Ycj
>>120
gcあるからそんなことしない
2019/08/09(金) 21:22:16.39ID:0u6cxkej
CWDてなんなんそもそもw
pwdコマンドにあるようにワーキングディレクトリってことでいいの?
それが失敗する時があるってのが想像できない
2019/08/09(金) 21:48:39.98ID:hvzVkerT
想像力が足りない
Unix だと実行中のプロセスのカレントディレクトリを消すことができるので、
そこでそのプロセスが getcwd すると No such file or directory のエラーになる
2019/08/09(金) 22:06:06.07ID:0u6cxkej
>>130
レスとんくす
勉強になりました
2019/08/09(金) 22:07:54.17ID:f7i7jNks
Cの知識しか無いけどJava語っちゃう痛い人が、参照渡しだの値渡しだのを問題にしたがる
Cを使えるからってプログラミングの技術全てが語れるわけじゃないのにね
2019/08/09(金) 23:42:56.34ID:W/azuYkt
go9nzBX4が最初から間違ってるのは置いといてFTUf1Nuqは結局なんだったの?
2019/08/10(土) 00:03:38.47ID:6zXh0uMN
僕はこう解釈したんだという日記
2019/08/10(土) 13:42:02.08ID:lQ/anG82
>>124
一連のレスの中で漏れが一度も「参照渡し」という用語を使っていない件について:
参照型の参照渡しする、という状況は比較的新しい話で、
Javaはあえてかなんだか知らんが古来からある値型の参照渡しに類似の動作に対応していない
つまり呼び出し先で引数として渡された参照型自体を交換したり出力したりできない
JavaScriptやC#は対応している(呼び出し先で参照型自体を交換できいる。C#の例は>>118。refよりoutキーワードを使ったほうが良かったかもしれん…)

>>126
それで十分使いやすいと思われたのならそれで良いが、後発言語が参照型の参照渡しに対応しているという事実、

>>133
C++脳に汚染されていたのでclassとstructの区別がなかったんじゃ
2019/08/10(土) 13:45:47.02ID:lQ/anG82
すまんまつがえたorz
JavaScriptの参照の渡し方はJavaと同じやった、
2019/08/10(土) 13:58:32.51ID:lQ/anG82
なんか今ググると参照渡しの説明に真っ先にJavaScriptが出てくるが
世の中では参照型については参照型が保持するデータを呼び出し先が書き換えられることをもって参照渡しと言っているのかそうか、
しかしそれでは渡された参照型を呼び出し先が交換したり出力したりできず、
そうしたい場合に>>105>>126(Pairの使用、ただし2個まで)みたいな技巧を要する
138デフォルトの名無しさん
垢版 |
2019/08/10(土) 14:09:40.55ID:HCvhh7in
書き込むスレをいつまで経っても間違ったまま
そのことにすら無自覚で気付けないやつは
何してもだめ
2019/08/10(土) 16:21:29.50ID:SX6PRfyx
とりあえずrust全く関係なくね?
2019/08/10(土) 16:31:04.83ID:dHQR6WD8
Java入門スレに来て何言ってるの?
2019/08/10(土) 17:36:21.57ID:EB3chQuK
Cのときからある混乱だよな

単にポインタ渡してるだけなのに
ポインタを値渡してるだけなのに
「ポインタ渡し」だとか「参照渡し」だとか言っちゃう
そーいうブログや個人サイトが今もいっぱいある

そもそもこんな状況だから
これについての議論はスタート地点からもうやる気ほぼ出ない
2019/08/10(土) 18:04:04.89ID:lQ/anG82
>ポインタを値渡してるだけ
フォートランスレにでもしてほしいのけ?
2019/08/10(土) 18:12:12.30ID:0AyH8q+k
>>141
> 単にポインタ渡してるだけなのに
> ポインタを値渡してるだけなのに
> 「ポインタ渡し」だとか「参照渡し」だとか言っちゃう

お前がまず混乱してね?
2019/08/10(土) 18:38:36.22ID:EB3chQuK
×単にポインタ渡してるだけなのに
○単にポインタを渡してるだけなのに

失礼、こう書いたほうが良かったねこの場合
2019/08/10(土) 18:39:45.26ID:EB3chQuK
×ポインタを値渡してるだけなのに
○ポインタを値渡ししてるだけなのに

こっちは完全なるタイプミス
146デフォルトの名無しさん
垢版 |
2019/08/10(土) 18:41:40.47ID:SA5rOGgq
佐渡さんと書いて、サドさんと読む人と、サワタリさんと読む人がいるから、紛らわしい!
2019/08/10(土) 21:24:12.25ID:IjQF8yoC
Javaに文句付ける以前に色々基礎知識足りない
2019/08/10(土) 22:21:45.80ID:Wv9w5VNh
じゃばはお茶ですか?
2019/08/10(土) 23:44:39.00ID:lQ/anG82
Rustは身から出た錆
2019/08/10(土) 23:47:37.52ID:nUaGQOUP
名前渡しとか嫌いじゃないよ
2019/08/11(日) 23:57:30.28ID:8dEtrjnB
結局、JITがあるからRustよりJavaの方が速いんじゃないんの?
2019/08/12(月) 02:07:24.69ID:Enx+gBa4
ベンチマークサイトだとRustのが早いっぽい
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust-java.html
gcがない分p999とかのレイテンシはRustの圧勝になりそう
2019/08/12(月) 07:11:17.23ID:SKKCu+1X
RustとかC/C++は機械語までコンパイルするから速いんじゃなくて無駄なことをしないから速いのでJITとかそういう問題ではない
2019/08/12(月) 09:05:01.58ID:QXujyVaw
JITコンパイルで性的コンパイル結果より速くなるというのは都市伝説
JITのしくみを考えたらワカル

理論上は分岐の実行時統計をとって最適化することによりローカルループがありえないぐらい爆速になって
JITコンパイラ大勝利!と言うことも考えられないではないが統計をとるオーバーヘッドが生じるし
そこまでやっているJITコンパイラは商用のにはないはず
2019/08/12(月) 09:21:07.56ID:87XSRLvd
性的コンパイル
2019/08/13(火) 02:44:50.22ID:6DdfCCpK
えっち
157デフォルトの名無しさん
垢版 |
2019/08/13(火) 08:48:40.97ID:fZHFtPHB
僕の女の子とのリンカーはどこ?
158デフォルトの名無しさん
垢版 |
2019/08/13(火) 09:05:59.58ID:6zR84Szz
優しいリンカー
2019/08/16(金) 18:52:17.34ID:0C07dzAa
Rust学び始めたけど難しすぎる...
慣れるのにどれくらいかかるだろうか
ちなc/c++経験ほとんどなし
関数型言語は少しだけ分かるっていう程度

手を出すのは無謀?
160デフォルトの名無しさん
垢版 |
2019/08/16(金) 19:38:11.01ID:T3AL3pts
なにを作ろうとしてるのかによるよ
わたしは二ヶ月くらいかかったかな
2019/08/16(金) 21:24:02.93ID:eUh+GOjO
async/await、勉強するのに良いものある?
162デフォルトの名無しさん
垢版 |
2019/08/16(金) 23:18:30.16ID:T3AL3pts
まだstableじゃないからなんとも
tokio::netとかはasync/awaitでサンプル出してたりするけどどうかな
2019/08/16(金) 23:43:23.26ID:wNXKziRk
>>159
substructural type systemとregionの前提知識がないならコンパイラに怒られるだけ時間の無駄。
先に必要な知識つけてから。

>>161
stable待つよろし。
2019/08/16(金) 23:44:14.39ID:thOVjQYW
cくらいはやっとらんとなんでこんな事してるんだって思うだけだろ。
メモリイメージがないならrustなんか使う意味がない。
165デフォルトの名無しさん
垢版 |
2019/08/17(土) 06:44:20.91ID:7ZAIflK1
そんなに大仰なことかなあ?
書いてればそのうち分かるっしょ
166デフォルトの名無しさん
垢版 |
2019/08/17(土) 07:11:11.72ID:vMO96NW+
メモリイメージちゃんとしてるならCでいいだろ
167デフォルトの名無しさん
垢版 |
2019/08/17(土) 09:56:37.40ID:wqyoFpBF
それな
168デフォルトの名無しさん
垢版 |
2019/08/17(土) 10:00:51.09ID:BwITc4Uh
>>159
C/C++やってからでも遅くない

っていうかC/C++を先にやった方が近道かも知れん
2019/08/17(土) 10:46:08.44ID:9n/jDoCG
寧ろ関数型プログラミングに慣れ親しんだ人ならimmutableなオブジェクトだけでプログラミングしてしまい、
Rustが何も言わなかったりして…
2019/08/17(土) 10:51:56.69ID:0Qq/TjEN
>>160
2ヶ月ですかー
用途としてはとりあえず簡単なCLIツールを考えています

>>168
c++はともかくcはちゃんとやっておいたほうがいいですかね

「低レイヤを知りたい人のためのCコンパイラ作成入門」を読んだのでメモリイメージ的なことは最低限は分かるかも

rubyとかpythonとかからrust始めた人もいるみたいだし気合入れて頑張ってみますか
2019/08/17(土) 11:28:04.92ID:w0cmMCtq
>>170
ガンバ
2019/08/17(土) 12:01:03.69ID:ZxqGKdv4
なんでこんなめんどくさいことやってんだ
というのを理解するにはC/C++の知識があると早い
2019/08/17(土) 12:55:15.72ID:5bHKRRQf
C++で痛い目にあった人達が作った言語だからな
2019/08/17(土) 13:26:05.40ID:ON6K/mb3
苦しめられたほうがラクなんよね
一見苦しい縛りの結果、整理された構造という一粒の宝石を残してくれる
175デフォルトの名無しさん
垢版 |
2019/08/18(日) 13:26:59.04ID:j9EKYeL3
お邪魔します
エディタを紹介してもらえませんか?

The Rust Programming Language を読みながら自習しています
第12章 Refactoring to Improve Modularity and Error Handling の最後の節
Splitting Code into a Library Crate まできたのですが
( https://doc.rust-lang.org/book/ch12-03-improving-error-handling-and-modularity.html#splitting-code-into-a-library-crate )
Listing 12-14 のように src/main.rs を変更すると
エディタが minigrep なんて知らんと文句を言いはじめました
これでは Config や run を補完で出してくれません

mod lib;
use lib as minigrep

を入れれば補完してくれますが、cargo build が通りません

この状況に対応しているエディタを紹介してくださると大変助かります
2019/08/18(日) 16:43:08.87ID:HnqnQvDm
-use lib as minigrep
+use lib::Config;
2019/08/18(日) 16:53:31.22ID:HnqnQvDm
ごめんなんか勘違いしてた
vscodeで普通に通るよ
178デフォルトの名無しさん
垢版 |
2019/08/18(日) 17:36:07.73ID:j9EKYeL3
助かります
ありがとう
2019/08/20(火) 14:01:19.61ID:gT4uMEVl
トレイト境界をトレイト拘束に置換する拡張機能を書いた
2019/08/20(火) 15:27:32.97ID:hKY2TKrp
RustのArcとかBoxとか複数組み合わせてちゃんと動くってイメージが湧かないんだけどそんなもん?
2019/08/20(火) 15:37:20.44ID:WLDVnSvX
トレイトしばり
2019/08/20(火) 18:36:33.19ID:oenkL37i
そんなもんってどんなもんや?
2019/08/21(水) 12:01:21.04ID:inIEkQey
ちゃんと動く
2019/08/21(水) 22:01:34.30ID:YTqLEh4a
>>180
それ関連のバグが確か上がってたはず。
185デフォルトの名無しさん
垢版 |
2019/08/21(水) 22:17:56.76ID:zqKd/4GT
嘘乙。
違うというなら証拠を出せ。
2019/08/22(木) 12:21:26.09ID:7th+iyEr
バグを見たことがあるからちゃんと動くというイメージが沸かないのか?
187デフォルトの名無しさん
垢版 |
2019/08/26(月) 20:55:57.18ID:hNXwMePN
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=8c44bed658726ada0deff031799664b7
1. std::env::current_exe()で実行ファイルのフルパスを得る
2. file_name()でファイル名だけにする
3. to_str()で&strにする
4. 途中でErrやNoneが返ってきた場合はデフォルトの値"foo"を使う

ということをやりたいのですが、エラーでビルドできません。
どのように書けばいいでしょうか?
2019/08/26(月) 21:16:34.03ID:e+wL38/M
std::env::current_exe() は PathBuf の"値"を返す
PathBuf::file_name() は PathBuf の中身の部分的な参照を返す

PathBuf::file_name() で生成される &OsStr を参照から値に変換するか、
std::env::current_exe() で生成されるPathBufを変数に束縛して所有権取らせてから、改めて参照を取得するかしないとダメ
2019/08/27(火) 19:57:54.12ID:u0PkUgfg
>>188
ありがとうございます、所有権を意識してto_ownedを使ったらいけました。
2019/08/29(木) 18:47:18.36ID:DitGoMrU
>>27の元ネタだが
We need a safer systems programming language
ttps://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/
Why Rust for safe systems programming
ttps://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/
あたりを読むとあっちの会社はホント合理的だなと痛感する。C/C++を用いた安全な大規模システムの開発はムリゲーとし
同業他社の方針やツールを認め導入してしまう。日本の大手システム屋にこういう事を出来るところってあるんだろうか
2019/08/29(木) 20:39:56.79ID:7sVXLGAA
合理的ね。。
「戦うプログラマー」読む限りはそうは思えんが。
都合のいいとこだけ切り取ってるな。
むしろ無理やり言語使わせるとかもろSIerのやり口だろ。ばかすぎる。
2019/08/29(木) 21:33:28.37ID:Bp0lvm+/
闘うプログラマーと言えば当時からC++は魔境過ぎてヤベェみたいな記載があって笑った記憶ある。
2019/08/30(金) 12:23:15.14ID:Q74gFuRN
無理矢理使わせてるということは今後出てくるMSプロダクトは全部Rust製になるのか?
2019/08/30(金) 12:35:18.57ID:ATaHXAWZ
>>193
C++で作るようなものを全部Rustにする
ってなったらすごいことになるな
2019/08/30(金) 13:06:45.92ID:KMS/yKjh
JavaScript → TypeScript(型チェック) とか C++ → Rust(借用チェック) みたいな
用途・特性が似通った言語でより安全な方を使わせるってのは、単なるリスクマネジメントであって
SIerのナンデモJava事案とは違うと思う
2019/08/30(金) 15:21:18.59ID:cnXxJRuX
ポストC/C++の座にRustを据えるかどうかはともかくC/C+お払い箱は確定事項じゃね
つーかMSRCの記事の何処にも無理矢理使わせているなんて書いていないぞ?
197デフォルトの名無しさん
垢版 |
2019/08/30(金) 15:28:58.11ID:GEn/r+mZ
Cは永遠に不滅です
C++は知らん
2019/08/30(金) 18:16:53.32ID:XBvkkCPm
Rust学び始めたけど噂通りむずい...
やりたいのはcli/tuiとかwebなので習得が無理そうだったら大人しくGoを使うことにする...(´・ω・`)
2019/08/30(金) 18:25:46.18ID:uWYoaax5
結局C以外でOSは厳しくないかと思うのよね
2019/08/30(金) 22:21:40.26ID:Q3blvaVM
>>199
CでOS書いた事あんの?
C意外でOS書いたことあんの?
それとも想像だけ?
2019/08/30(金) 22:22:25.51ID:HNXTienF
OSはアセンブラで書くのが常識だった
2019/08/30(金) 22:58:53.71ID:Okk0GWIA
>>200
OS書かなくても自家製メモリ管理作ってみれば想像できるだろ。
2019/08/31(土) 00:42:16.72ID:aUMbNTSE
ちゃんとしたmallocを作ること自体が難しいのであってCかRustかは難しさへは影響しない
2019/08/31(土) 15:15:02.18ID:j8rV2wO1
GCはクソ!だからRust最高!
とイキがってた奴がボローチェッカにボコボコにされてGCの良さを体感するまでが通過儀礼

どっかにドリルないですかね。>187みたいな問題がサラッと解けるようになりたい
2019/08/31(土) 16:16:15.52ID:pCVRgCCA
GCがクソだと思ったからRust使うという意識なかったな
2019/08/31(土) 20:44:28.04ID:BqsPi00f
>>187 みたいな感じのはリファレンス読んで関数やメソッドが参照返すのか値返すのか調べるだけ
2019/08/31(土) 21:13:02.78ID:apjBRhon
Rustはボローチェッカーのご機嫌取りが必要だが
GCある言語で性能が欲しいとか言い出すとGCのご機嫌取りが始まる
2019/08/31(土) 21:20:45.92ID:ny+pXiR9
結局乗りこなしたものが勝ちか、
209デフォルトの名無しさん
垢版 |
2019/08/31(土) 21:23:30.02ID:z8QlYv6E
所有権という概念をつかむのに苦労はしたけど、結果的にはプログラミングを簡単にしてくれていると思う
2019/08/31(土) 23:46:50.72ID:4X1UTBje
ライブラリの開発者以外に所有権意識させたのは良いと思う
211デフォルトの名無しさん
垢版 |
2019/09/01(日) 01:29:28.40ID:sYwYgS29
GCが糞っていうより
糞実装のGCが多過ぎて
大抵の人はGCで糞な思いをするから
GCが糞だと言う誤解というか評判になってるだけ
実際糞だが
2019/09/01(日) 02:04:31.88ID:n9Ep1hQW
ガベッジだって言う人もいるけど
俺は宝物って呼んでる
2019/09/01(日) 04:36:12.23ID:t9AOVqXM
世界を止めて宝物集めするプログラム
214デフォルトの名無しさん
垢版 |
2019/09/01(日) 10:19:52.00ID:ee5jndrf
それで >>187 はどう書くのが定番なの?
215デフォルトの名無しさん
垢版 |
2019/09/01(日) 10:31:43.36ID:kCJZVLuH
続きを読むには会員登録が必要です
2019/09/01(日) 11:33:11.94ID:gzRpR9B4
ライフタイムパラメータの省略ルールはマジ糞
2019/09/01(日) 17:44:41.81ID:ugxLNVG7
>>198
ぼくも(´・ω・`)
2019/09/01(日) 20:06:47.18ID:WaPsmCL5
クロージャの中で?が使えない…
パトラッシュ、僕はもう疲れたよ(´・ω・`)
219デフォルトの名無しさん
垢版 |
2019/09/01(日) 21:46:45.96ID:M++YO15h
同じ処理するにしてもRustだと複雑で冗長になるんだよな
もしかして糞言語なんじゃね?
220デフォルトの名無しさん
垢版 |
2019/09/01(日) 21:54:48.86ID:yg5jHaTZ
>>218
できるよ
Resultを返すクロージャなら
2019/09/02(月) 00:09:16.32ID:O1/eX6ND
メモリ壊して苦労するか
パフォーマンスで苦労するか
コーディングで苦労するか
お好きな物をどうぞ
2019/09/02(月) 01:49:49.02ID:ZvAgdUy5
>>221
C++17以降なら全部実現できるよ
223デフォルトの名無しさん
垢版 |
2019/09/02(月) 04:32:52.76ID:VKrglic+
>>219
+1
224デフォルトの名無しさん
垢版 |
2019/09/02(月) 10:25:41.82ID:+zTucd5y
Bookを6章まで読んだ俺が >>187 を書いたらこうなった

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=dc60559b7af47298d305be80b340ee98

&strじゃなくてStringだけど
225デフォルトの名無しさん
垢版 |
2019/09/02(月) 17:43:48.84ID:c28qQK2V
俺はこう
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=aa72b77d2eebc44833b647e46b13e020
Stringは必然と思う
2019/09/02(月) 17:52:48.76ID:XClX12is
そういや、String(のclone)を一生懸命に避けてほんとに意味があるのか
コードを無駄に複雑化させただけなんじゃないかと悩む事が多い
227デフォルトの名無しさん
垢版 |
2019/09/02(月) 21:13:54.24ID:c28qQK2V
執着する必要はないと思うけど、そんな複雑になる?
228デフォルトの名無しさん
垢版 |
2019/09/02(月) 21:43:41.81ID:+zTucd5y
>>225 だとOsStringですけど、Stringにするにはどうすれば・・・?
229デフォルトの名無しさん
垢版 |
2019/09/02(月) 22:09:52.04ID:c28qQK2V
こうかな
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=91e57950a6bf6c922ff4f3d0b7531a0b
230デフォルトの名無しさん
垢版 |
2019/09/02(月) 22:48:02.88ID:+zTucd5y
なるほど
Derefが必要ない場合は直接書いちゃえばいけるのか
ありがとうございます
2019/09/02(月) 23:19:28.73ID:IDvyRsTF
>>229
curry化と部分束縛が欲しくなる
232デフォルトの名無しさん
垢版 |
2019/09/02(月) 23:39:57.31ID:c28qQK2V
え、こんな短いコードで?
2019/09/03(火) 00:05:15.13ID:i5o7yZzz
なんでもかんでもメソッドチェーンにしないで適当なところで束縛した方がRustのコードは読みやすくなる
2019/09/03(火) 00:26:49.25ID:vCzpmz3O
それはあるな。シャドーイングできるから変数名に悩まないし、
単に長くなったところで再束縛すればいい。
2019/09/03(火) 11:07:53.94ID:CeNKL5mb
界隈の潮流では「部分的なc++化」というものがあり、Javaですらジェネリクス/テンプレートを取り入れた
rustもそうなる
2019/09/03(火) 12:43:41.50ID:JzHlK+VD
あれ?もうあるもんかと思ってた
237デフォルトの名無しさん
垢版 |
2019/09/03(火) 16:01:22.65ID:BrE32zWk
ジェネリクスはあるよね
2019/09/03(火) 16:30:08.77ID:9SeNEnhh
関数型言語で優雅にやってたことを
マクロの延長みたいな形で泥臭く実装するのがC++化
2019/09/03(火) 18:15:35.61ID:sT1C29Io
そもそもC++化の潮流なんてあるか?
各言語それぞれ取り入れあってるとは思うが。
2019/09/03(火) 18:21:34.78ID:kwJMCUaG
仕様がごちゃごちゃすることをC++化と呼んでるだけでしょ
2019/09/03(火) 19:54:14.07ID:66Dg9oep
ランタイム速度は落ちない?じゃいれるべ。
がc++の潮流
2019/09/03(火) 22:37:59.52ID:++bLAvti
いや、javaのジェネリックスとC++のテンプレートの区別が付かないやつの言うことがそもそもおかしい。
パラメタ多相とメタプログラミングは別もんだぞ。むしろ最近のテンプレートがパラメタ多相に寄ってきたんだろ。
243デフォルトの名無しさん
垢版 |
2019/09/03(火) 22:50:06.30ID:BrE32zWk
なんだか難しい言葉がいっぱいあるんだね
rustのが簡単でいいや
2019/09/03(火) 22:52:35.24ID:k5ZNWOhV
Rustむずい😭
2019/09/04(水) 07:28:03.17ID:YY7F2+PA
Rustは難しくないよ
ただコンパイラがいけずなだけ
2019/09/04(水) 08:42:51.41ID:PFx+vIBX
>>242
こういう輩が一番何もわかってないタイプ。
そりゃとりあえず違う言う解けば違うところは一つくらいは見つかるだろうよ。
どこが違ってどこが同じか話さずに用語を使ってけんかにしかならん。
少なくともこれくらいの説明は必要。
https://qiita.com/matarillo/items/4870bb974f7a1900ef7c
2019/09/04(水) 11:39:08.73ID:IWibi2Vo
>>246
結局人の文章引用してる()
2019/09/04(水) 11:39:12.24ID:IWibi2Vo
>>246
結局人の文章引用してる()
2019/09/04(水) 11:53:42.64ID:2WEW3nlz
本人の可能性
2019/09/04(水) 12:02:33.30ID:rDpqFBPU
俺は一流のエンジニアだぞ
なんてったって毎日Qiitaを見てるし足りてない知識はQiitaで検索して補ってる
2019/09/04(水) 13:07:39.19ID:OPoewtpz
そんなもんちょっと調べりゃすぐわかるのに
252デフォルトの名無しさん
垢版 |
2019/09/04(水) 18:49:08.58ID:U5+bjz/t
俺はなんとか多相なんて調べない
どうでもいいし
253デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:02:15.65ID:2Txd6K3L
こないだ秋葉原で「まれいたそーまれいたそー」ってうつむきながら呟いてた黒髪ロン毛のデブがいたんだけど、
この「マレイ多相」とは何ですか?
2019/09/04(水) 19:57:18.15ID:IIaKpyB5
???「黙れ多相!」
2019/09/04(水) 21:12:03.63ID:QzZNrHDq
m array 多相といってモナディックな扱いの配列における多相性である(民明書房「世界の多相」より)
2019/09/05(木) 00:15:36.96ID:QWLCfgVe
袖すり合うも多相の縁
257デフォルトの名無しさん
垢版 |
2019/09/05(木) 00:56:25.25ID:FxCb5fYw
では中世においてしばしば見られた介錯い多相とは?
2019/09/05(木) 08:01:29.13ID:3AoluiiY
結局誰も理解してないっていうw
2019/09/05(木) 09:14:01.74ID:z5gxm4PC
パラメタ多相とテンプレートを並べるのはおかしい
多相は性質
2019/09/05(木) 09:14:42.45ID:Y6QHjuf9
じゃあ >>242 に言及するけどC++のテンプレートも本来はパラメトリック多相としての役割を元々は期待して導入された
パラメトリック多相は >>246 のリンクでもあるように元々の型記述に追加パラメータとなるトークンを渡す事で多相性、誤解を恐れずに言えば型の制約を緩くして記述量を減らすものである
よって多相性によって単一の記述から複数の型に対する実装の様に見えるものを生成できる

この単一の記述から複数の実装を生成できるというのが本質的にメタプログラミング的で、C++のテンプレートはそのレイヤーがハードウェアに近いが故にコンパイル時に展開される事
また再帰が可能である事と幽霊型のような型を作れる事とSFINAEに加えて非型テンプレートパラメタにより複数の実装を生成するメタプログラミング的な運用が特別目立った

これのコンパイルエラーの煩雑さや理解の難しさからC++以降のパラメトリック多相用言語機能は敢えてメタプログラミングがしにくいようにRustでは非型パラメタは与えられなかったり(そうする提案も現在あるが)
多相性の側面を強調して利便性を上げるために部分型や構造的部分型(これまた >>246 のサブタイピング多相の一種で、同等のメソッド(関数)やフィールドがある場合にそれらを派生型と見做す)の記述構文を導入したりしている
最後の型パラメタに対する部分型記述に関してはC++もConceptとして導入するとのことだがそれはまた別の話だろう

長文失礼
2019/09/05(木) 13:08:36.58ID:aevPv9ig
https://doc.rust-lang.org/std/pin/index.html
このページのExample: self-referential structの構造体Unmovableのフィールドslice: NonNull<String>を、
Stringの実装してるトレイトのトレイトオブジェクト(slice: NoneNull<Box<Display>> みたいに)とすることって出来ないでしょうか
2019/09/05(木) 18:33:11.32ID:FLvFWYrW
>>260
Rust の const generics はすでに提案段階を過ぎてて短期的目標に入ってるゾ
2019/09/05(木) 21:06:15.78ID:Y6QHjuf9
>>262
これは失礼、間違った情報を語ってしまった
指摘ありがとう
2019/09/05(木) 21:34:25.18ID:B6sVqyux
Python歴半年(=プログラミング歴)とかの人がいきなりRustに手を出すのって無謀でしょうか?
2019/09/05(木) 22:31:27.10ID:O7Dd9aK6
いいんじゃないの
ただなんでわざわざこんな事すんだよやりずれぇわ死ね
と思う回数が経験積んだ人より増えそうだけど
2019/09/05(木) 23:11:49.08ID:KiRcB+KC
それはすらいね
2019/09/06(金) 19:19:12.72ID:d+J9jL2b
いろんな言語やったあげくC++に不満がある人にとっての解がRust
この両方を満たしていない人にとってはピンとこねえのがRust
2019/09/06(金) 19:40:53.97ID:1QpLZiiB
メモリをぶっ壊して涙目になったことがある人向け
2019/09/06(金) 23:45:30.10ID:f24aCaox
謎のメモリリークで徹夜するハメになった人向け

俺か
2019/09/07(土) 02:53:55.86ID:VkB2thai
メモリぶっ壊して(物理)涙目
2019/09/07(土) 10:51:27.79ID:rn3Y4CEm
Rust使うよりメモリモジュール買い換えた方が良くない?
2019/09/07(土) 20:04:48.19ID:KiJcQcmB
rustは安全に開発できるというのは本当か??何故バッファエラーは起きた?

https://jvndb.jvn.jp/ja/contents/2019/JVNDB-2019-008825.html
JVNDB-2019-008825
Rust 用 slice-deque crate におけるバッファエラーの脆弱性
2019/09/07(土) 20:58:29.50ID:6BNVy7tp
(´-`).。oO(なんでだろう?)
2019/09/07(土) 22:06:13.68ID:914xKiQ0
crates.ioでunsafe何ヶ所使ってるか表示して欲しいわ
2019/09/07(土) 22:19:57.54ID:fv/Y0QyY
そしてunsafeがモナドで包まれるように…
2019/09/08(日) 00:03:54.78ID:KXmQOAwm
スライスみたいなことをしようとしたら本質的にはどうにもならんだろ。
安全性か効率化か結局選ぶことになる。
2019/09/08(日) 01:39:50.98ID:D+CIKcq7
モナドって、、もすかすてRustってHaskell並に面倒なん?
2019/09/08(日) 09:53:10.07ID:46Wp6heU
21世紀の現代では何を作っても一週間程度で複雑さはMAXに達する
プログラミング言語のRustでもそれは同じ
2019/09/09(月) 09:56:40.65ID:950wQDvR
let mut v = vec!["zero".to_string(), "one".to_string()];
v[0] = v[1];

これがダメなのも対処も、まあわかるようになったのですが
error[E0507]: cannot move out of index of `std::vec::Vec<std::string::String>`
というエラーメッセージがわかりません
どういう流れでこのメッセージが出るのでしょうか
2019/09/09(月) 10:08:00.36ID:elDbcwTD
>>279
StringがCopy traitを実装してないからコピーできない
2019/09/09(月) 10:16:14.57ID:950wQDvR
いやそれはわかる
エラーメッセージの意味がわからない
どこがどうだからこのメッセージになるのか具体的に理解したい
2019/09/09(月) 10:51:58.70ID:950wQDvR
なんというかメッセージのindexがよくわからない感じ
メッセージを日本語にするとどうなるんでしょう
2019/09/09(月) 11:06:00.37ID:elDbcwTD
>>281
逆に考えて v[1] をまんまとムーブ出来たら、その跡地はどうなるの?
2019/09/09(月) 11:12:50.90ID:01u4b8kP
out of indexっていうけど、index内なんじゃないの?って疑問じゃないの?

俺はわからない
2019/09/09(月) 11:16:35.82ID:8pEaV4bB
out of indexではなくてmove out ofで出ていくって意味。
move out of borrowed contentとかと同じ。
2019/09/09(月) 11:17:42.46ID:950wQDvR
なんか move out of 〜で引っ越すとか出ていくという意味があるらしいんだけど
それでも index がよくわからなくて悩んでます
2019/09/09(月) 11:32:45.67ID:8pEaV4bB
indexは[]演算子を提供してるIndexトレイトのindexメソッドかな。
2019/09/09(月) 11:39:50.47ID:xIOozne9
v[0]使うからindexの意味がややこしいんでは
let x = v[1]; でも同じエラーになるのを見たら、indexアクセス経由で値をmoveする(=引き剥がす)のはまかりならんと分かる
でコピーできるなら値が残るので問題にならない
289デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:43:51.77ID:950wQDvR
Vec<String>のindex (メソッドの戻り値) はmoveできない
と言ってるわけね。理解した。ありがとう。
2019/09/09(月) 11:45:42.52ID:950wQDvR
ん? こっちかも。
Vec<String>のindex (メソッドの) 戻り値はmoveできない
2019/09/09(月) 11:46:37.64ID:xIOozne9
279 と 284 別人だった。ゴメン
2019/09/09(月) 11:47:06.05ID:+2RtkJJ5
……エラーメッセージの検討と解釈が必要なところまで真似なくてもいいのに
2019/09/09(月) 11:53:41.02ID:elDbcwTD
Trait std::ops::Index

container[index] is actually syntactic sugar for *container.index(index), but only when used as an immutable value. If a mutable value is requested, IndexMut is used instead.
This allows nice things such as let value = v[index] if the type of value implements Copy.
2019/09/09(月) 12:50:41.27ID:950wQDvR
まず move out of を一塊にして、index は添え字と考えてわけがわからなく・・・。
out of index を indexの戻り値 とはまったく思いつきませんでした。
わかってしまうともう他の読み方はできません。
最初から日本語に訳して欲しいとお願いすべきだったかも。
お騒がせしました。
2019/09/09(月) 18:32:42.49ID:SJyzIZeS
rustの日本語ブック、ドキュメントはかなり前からプルリクがマージされてないから期待薄いかも
2019/09/10(火) 19:31:44.26ID:q6JhvtCo
>>295
どこのリポジトリの話?
297デフォルトの名無しさん
垢版 |
2019/09/12(木) 10:55:58.45ID:LoRkJG5F
思い付きなんだけど
Box を &!、 Rc を &# で書けるシンタックスシュガーがあったらどうだろう
Box<T>を&!Tと書いたり、Rc::new(data)を&#dataと書けたりしたら?
298デフォルトの名無しさん
垢版 |
2019/09/12(木) 12:01:05.66ID:oxTdK/zC
プログラマがコストを払うことに罪悪感を抱くようにあえて冗長にしてるんじゃなかったかな
2019/09/12(木) 12:42:23.02ID:nmIq/oGm
ゴルファーは来んな
2019/09/12(木) 13:22:56.79ID:+G4RGhf3
そういう記法実装するような思想の言語なら真っ先に mut が簡略化されてると思う
2019/09/12(木) 18:15:04.09ID:Meniefv0
環境毎のクレートのバージョン違いでコンパイル通らないようなことがないようにバージョン指定させるくせにコンパイラのバージョン違いのせいでコンパイル通らないとかクソ過ぎひん?
302デフォルトの名無しさん
垢版 |
2019/09/12(木) 18:20:44.52ID:oxTdK/zC
rust-toolchainを作りなされ
2019/09/12(木) 19:29:03.99ID:hoEtlcNn
無知な煽りカスにまで親切に教えてくれてありがとうおかげで無事通った(`;ω;´)
2019/09/12(木) 21:04:34.30ID:jNKjrGpq
オレオレ糖衣構文が欲しければ一対一変換するトランスパイラでも書けばいいだろ
2019/09/13(金) 00:04:32.53ID:hO7OHJyv
昔は Box が ~ で Rc が @ だった
2019/09/13(金) 00:19:06.54ID:17Jpcv+R
俺は逆にlifetimeパラメータ省略をやめるべきだと思ってる。
2019/09/13(金) 09:11:20.49ID:ccyj1bAE
ちゃんと勉強しようと思ったらオライリー本を読むべき?
308デフォルトの名無しさん
垢版 |
2019/09/13(金) 09:57:21.64ID:LrhujYjR
日本の場合オライリー本買ったら原著はマニングだった、なんてことも。
2019/09/13(金) 14:13:51.27ID:ohNILJsT
公式リファレンスで良いやん
2019/09/13(金) 14:57:59.88ID:R+lGpgh7
俺は物理本の方がやるぞという気になるから買った
2019/09/13(金) 15:01:06.58ID:8tLP3I45
test.rs:
fn main() {
println!("{}", "hoge");
}
でコンパイル出来るのに、rust/src/libcore/num/dec2flt/algorithm.rsの関数内にprintln!を書いても
error: cannot find macro `println!` in this scope
となるのは何でなん?
コンパイル出来る用に教えてください
ちなみに、rustc自体はちゃんとコンパイル出来てtest.rsのビルドと実行は出来てます
2019/09/13(金) 15:13:08.13ID:8tLP3I45
use std;
use std::io;
と先頭に追加しても
error[E0432]: unresolved import `std`
と言われる…
stdすら簡単に使わせてくれないとか恐ろしく敷居が高い言語なのは分かったけど、>>311のprintln!だけは何とか動かしたいので、
よろしくお願いしますm(_ _)m
2019/09/13(金) 16:13:13.40ID:FZa6ZvSI
釣れますか?
2019/09/13(金) 16:22:57.80ID:8tLP3I45
>>313
何が?
完全にRust初心者なんだからしょうがない
多分外部ファイルに依存してるだろう事は何となく分かってきたけど、まだ解決には至らず
2019/09/13(金) 17:00:45.98ID:ucGTEY8O
正直釣りにしか見えないが…。
なぜ初心者がいきなりcoreライブラリいじろうとしてるの?
あとcoreはmallocとかもない環境で動く必要があるから
とてもprintlnなんて無理だと思うけど。
2019/09/14(土) 18:11:14.79ID:vJ0EfuKq
 (V)     (V)
  ヽ∧∧∧ 丿
┌<┌ ゚ ∀ ゚>┐ ラスタシアーン!!
2019/09/14(土) 18:17:32.07ID:wDFkwEGw
https://www.atmarkit.co.jp/ait/spv/1909/13/news133.html
318デフォルトの名無しさん
垢版 |
2019/09/15(日) 00:25:56.87ID:84ndTw+e
ヌルポチェック境界チェックしてたら遅くなるに決まってるやん
Cはそんなことしなくて済むから爆速な訳で
2019/09/15(日) 11:32:00.80ID:iFCAy1qK
絶対にめくれないからパンツいらないスカートで
アスレチックでもスカイダイビングだもなんでもするのがCだわな
2019/09/15(日) 11:37:40.55ID:Ms2MnLBB
素晴らしい例えだ
感動した
321デフォルトの名無しさん
垢版 |
2019/09/15(日) 12:03:39.49ID:IVfbaIvY
いいねw
2019/09/15(日) 12:40:15.54ID:RmuGhz/Y
そして落っこちて死ぬと
http://peaceman.jugem.jp/?eid=2290
2019/09/15(日) 12:41:41.15ID:p6YweuI4
何だこのストレートに脳天に突き刺さる説明!?
324デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:06:50.28ID:JVfSd4XU
風呂でもセックスでもパンツ脱がないのがRustだわな
325デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:41:05.29ID:CYqvBFjr
スカートも不要なのがC
2019/09/15(日) 15:51:33.74ID:+SG+NzSN
デバッガー「見えたぁ!!!」
2019/09/15(日) 17:00:20.75ID:kg331Dv1
パンツ履かないC言語
鉄壁のパンツRust
328デフォルトの名無しさん
垢版 |
2019/09/15(日) 22:55:46.82ID:IVfbaIvY
Rustはむしろ貞操帯
2019/09/16(月) 01:53:49.38ID:6Bt41uEu
Rust勉強し始めたんだけど、公式ドキュメント読み終わったら何しよう
2019/09/16(月) 02:52:51.25ID:h38vlOtE
その貞操帯鍵穴錆びてるよ…
331デフォルトの名無しさん
垢版 |
2019/09/16(月) 08:18:42.11ID:jUyoTXTl
何をするにも貞操帯外したり付けたりガチャガチャして複雑になるんだよなあ
2019/09/16(月) 08:35:42.66ID:K83on/o4
>>331
これ
2019/09/16(月) 08:38:49.73ID:5uT5V90s
そんなふうに考えていた時期が俺にもありました
でも今はderef coercionでハッピーな毎日です
334デフォルトの名無しさん
垢版 |
2019/09/17(火) 05:38:58.62ID:yfhtQLgD
これ読んでたんだけど
https://stackoverflow.com/questions/50786894/rust-trait-and-its-default-implementation

やっぱ 回答みたいに impl 側でがちゃがちゃやるしかないん?
おまいらならもっとうまくヤりそう
2019/09/17(火) 08:51:01.90ID:/BOEHyZy
Tのままでチェックするからこうなるんでu32にしてチェックしていいならそうする
TもCopy + Into<u32>でトレイト拘束するだけですむ
2019/09/17(火) 08:53:25.78ID:tflGIHXS
単にv1.0相当のコードをマクロで生成するのでいい気がするが。
2019/09/17(火) 23:28:59.67ID:yfhtQLgD
なんだかんだマクロ最強か
2019/09/18(水) 00:07:56.14ID:H2DpgLxy
数年後、Rustの世間的な評価はマクロが濫用されてるからクソ
になってる気がする
2019/09/18(水) 08:28:44.98ID:no1kSscq
そりゃ言語拡張性からいったらマクロは最強だよ。
そんなことは30前にlispが示してる。
2019/09/18(水) 08:40:04.21ID:PxzURkNk
何をマクロにするかだよね
341デフォルトの名無しさん
垢版 |
2019/09/18(水) 10:23:10.82ID:L8SHYgAR
マクロ最強
https://mevius.5ch.net/test/read.cgi/tech/1565187727/
2019/09/18(水) 10:47:59.35ID:pbP4krHb
✗ Rustのマクロが汎用されているからクソ
○ プリプロセッサで単純に置換する不健全なマクロを汎用するからクソ
Rustはまだましなほう
2019/09/18(水) 11:34:11.09ID:RM25JK7K
ライブラリで定義するのはいいがプロジェクト内ではレビューの時に面倒だからなるべく書きたくないな
2019/09/18(水) 13:02:58.98ID:TjjBk4yd
頻出パターンならマクロになってる方がレビューしやすい
2019/09/18(水) 13:03:25.81ID:TjjBk4yd
Cのマクロと違って見た目からマクロであることが明らかだし害は少ない
346デフォルトの名無しさん
垢版 |
2019/09/18(水) 13:41:17.68ID:1cXUqFYA
汎用する?
2019/09/18(水) 14:40:03.73ID:5wL1TG3Q
直接依存するクレートのfeatureはdependenciesに記述できますが、依存するクレートが更に依存するクレートのfeatureをセットしたいときはどうすれば良いんでしょうか
2019/09/18(水) 15:00:15.00ID:f+hbVZ57
エアプだからよく知らんけど依存クレートが依存x2クレートのfeature使うなら依存クレートのtomlにfeature書いてあるし、
依存クレート経由しないで依存x2クレート使うなら自クレートが直接依存してるわけだから自クレートのtomlにfeature書くだけじゃないの?
2019/09/21(土) 22:48:09.77ID:KOc79te2
TRPLのPDF版10章まで読んだけど挫折しそう
350デフォルトの名無しさん
垢版 |
2019/09/21(土) 23:26:15.34ID:ajCyJ6wo
アホに良いコードは書けないのだ
アホでも書けるとかいう奴は、アホかアホな組織に属してるかその両方かだ

その両方かだ、って一度言ってみたかったんだ
351デフォルトの名無しさん
垢版 |
2019/09/21(土) 23:27:32.62ID:ajCyJ6wo
書くところ間違ったアホです
2019/09/21(土) 23:54:56.27ID:B7P1QhOW
世の中アホが書いたコンパイラの教科書が広く出回っているから紛らわしいな
2019/09/22(日) 12:11:36.94ID:8mgJSnoC
アホじゃなくてエイホだっつーの
354デフォルトの名無しさん
垢版 |
2019/09/22(日) 12:22:35.80ID:OEThTvH6
ajo ← スペイン語で発音しろ
355デフォルトの名無しさん
垢版 |
2019/09/22(日) 13:20:45.75ID:NWulzMwt
AWK
356デフォルトの名無しさん
垢版 |
2019/09/25(水) 16:41:02.11ID:GHCxkzpX
ローカル変数を意図的に snake_case じゃなく書きたいんだが、警告を出さない方法ある?
例えば win32 API 関連を扱う時にやはり camelCase がスマートに思えるシーンがあるんだ
357デフォルトの名無しさん
垢版 |
2019/09/25(水) 16:56:24.39ID:r0+GDB9/
allow(non_snake_case)
を使いたまへ
358356
垢版 |
2019/09/25(水) 18:23:59.57ID:GHCxkzpX
>>357
怒られなくなりました
ありがとうございます

```
#[allow(non_snake_case)]
pub fn dummy() {
let hWnd = 0;
}
```
2019/09/25(水) 18:52:38.83ID:YV2E2PPu
そんなことで警告出るのか
360デフォルトの名無しさん
垢版 |
2019/09/25(水) 18:54:51.99ID:it7hFznu
ノンスネークケースを表す識別子がスネークケースとはいかがなものか。
allow(non_snake_case)
これ自身を
allow(nonSnakeCase)
と書きたいものである
361デフォルトの名無しさん
垢版 |
2019/09/25(水) 20:08:08.16ID:r0+GDB9/
そんなことって言うけど大事なことだよね
362デフォルトの名無しさん
垢版 |
2019/09/25(水) 20:21:48.81ID:bkoUXP+/
ErrorやWarningを出力するときにHelpやNoteで解説も出力してくれてすごく助かる
2019/09/25(水) 22:38:57.35ID:LBtfjA7U
IEEE top programming language 2019が公開
https://spectrum.ieee.org/computing/software/the-top-programming-languages-2019

Rは5位や
2019/09/25(水) 22:53:25.25ID:68BFbOjP
えっ
2019/09/25(水) 23:26:32.08ID:rQhNlpv9
どういうことなの…
2019/09/25(水) 23:55:26.38ID:mTIaTH5b
ここはRはRでもRustスレだぞ
2019/09/25(水) 23:57:15.10ID:8yvlK+3a
ほとんどいっしょじゃん
2019/09/26(木) 16:03:54.65ID:JiUn+jUB
ジェネリクスとPhantomData使って特定の関数呼んだかとかの条件付けるんならせめてエラーメッセージもちゃんとして欲しい(´・ω・`)
2019/09/26(木) 16:19:41.45ID:qa4bTo/t
要らない何も捨ててしまおう君を探し彷徨うマイソウッ!
2019/09/26(木) 17:11:23.47ID:RE9M+3kx
関数呼んだかチェックを実行時でなくてコンパイル時にできるってこと?
2019/09/26(木) 23:30:20.63ID:HeylAp30
Rust 1.38.0リリース!
2019/09/27(金) 02:38:10.86ID:boczQ2su
キタ━━━━(゚∀゚)━━━━!!
2019/09/27(金) 13:19:26.24ID:I3+hYE7s
RustとRの違い

R
データサイエンティストが仕事で使う
言語として結果を出している
速度は残念ながら遅い

Rust
陰キャが気持ちよくなるために使う
実績ナシ
速度は速いらしい(ソース無し)
374デフォルトの名無しさん
垢版 |
2019/09/27(金) 13:24:28.05ID:bGFj4S5H
R指定
2019/09/27(金) 14:09:17.54ID:foryHhOm
RustとRubyの違い

とか書くとスレが荒れる時代はもう過去なのかな
2019/09/27(金) 15:06:25.40ID:I3+hYE7s
RubyとRustの違い

Ruby
陽キャのおもちゃ
負債作成の実績がある
遅い

Rust
陰キャのおもちゃ
なにも作られてないので負債も作られていない
さすがにRubyよりは速い
2019/09/27(金) 15:10:10.66ID:FRvVNNut
FirefoxのCSSエンジンとかFirecrackerとかDropboxとかnpmとかあるけど見たくないヤツには見えないからなあ
2019/09/27(金) 18:38:35.49ID:/s5L2MEw
自分では書きたくない言語
確定申告のようなコーディングスタイル
2019/09/27(金) 19:04:11.92ID:ikgA/i06
>確定申告
わかる
380デフォルトの名無しさん
垢版 |
2019/09/27(金) 20:01:19.53ID:PO8lPJ5D
dieselなんかこれじゃない感あるなと思ったらアクティブRecord作った人が作ってるのか
代替ないのかね
2019/09/28(土) 13:12:58.36ID:VxLIFoZc
>>376
プログラマーな時点で陽キャはない
ウェイかつオタクという最悪な種族
2019/09/28(土) 19:09:22.19ID:kbZ6IYig
RustネイティブでQtやGtkレベルのツールキットがほすぃ(´・ω・`)
2019/09/28(土) 22:50:10.69ID:gNXUW3Qt
どれもやる気なくてダメポ
ttps://gitlab.com/bloom42/research/rust_gui_ecosystem
2019/09/29(日) 02:52:49.38ID:TRtZnyIq
>>382
ぼくも(´・ω・`)
2019/09/29(日) 13:43:42.91ID:FBG2HAFw
人それぞれだと思うんであくまで参考に聞かせて欲しいんだけど
どれくらいのサイズまで#[derive(Copy)]つけます?
2019/09/29(日) 15:19:26.29ID:i6efVVcg
Copyって所有権の話であってサイズとは関係なくない?
2019/09/29(日) 16:30:03.01ID:L34oTjKk
所有権の観点からCopy実装してはならないケースはあるだろうけど、
してもしなくてもいい場合に考慮するのはサイズと意味だろ。
サイズに関して言えば、自分はu64の10倍くらいまでって感じ。
2019/09/29(日) 18:25:18.99ID:hzqyoCtf
Rust Language Cheat Sheet
15.09.2019
https://cheats.rs/
389デフォルトの名無しさん
垢版 |
2019/09/29(日) 19:21:30.01ID:GZbu7mvl
極力付けないな
ぱっと見分かんないから
2019/09/29(日) 20:25:18.89ID:FBG2HAFw
いろいろ感謝

よく例題にありそうな
struct Point { x: i32, y: i32 }
みたいなのなら#[derive(Copy)]しても害はないかなと思って聞いてみた
速度を考えてサイズがusizeの3〜4倍ぐらいまでが相場かなと思ったんだけどね
2019/09/29(日) 20:46:09.39ID:SwLAQNn/
俺が間違ってんのかな、どうもCopyとMoveの意味を勘違いしてるような…

https://doc.rust-lang.org/std/marker/trait.Copy.html
こことかにも書いてあるけどMoveでもCopyでも構造体の値自体は(所有権の意味ではなくmemcpyとしての意味での)コピーされるんだから一緒じゃないの?
2019/09/29(日) 21:03:36.26ID:L34oTjKk
例えば
let x = y;

let x = y.clone();
があったときに前者はノーコストで後者は結構重いかもしれないって感覚があると思うけど、
大きなstructにCopyを実装すると前者で大きなmemcpyが発生してびっくりする、という話。
2019/09/29(日) 21:26:23.34ID:FBG2HAFw
イメージした状況は違うけどそんな感じ
参照経由で扱いたい大きなデータなのに
うっかりコピーされる状況にしちゃって勝手にコピーされるのはちょっと
でも小さいデータならコピーされてもいい
2019/09/29(日) 21:30:49.24ID:PihB9u3J
MicrosoftのC#のドキュメントに何バイトまでstruct (C#における#[derive(Copy)])使う方がいいか
書いてあるのを見た気がする
値は忘れた
395デフォルトの名無しさん
垢版 |
2019/09/29(日) 21:33:28.20ID:GZbu7mvl
Sizedなのは当然としてクリッピーなりラストシーが怒ってくれれば気軽に使えるだけどな
2019/09/29(日) 22:03:15.24ID:ciotleRh
>>394
クラスまたは構造体の選択
https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/choosing-between-class-and-struct

> インスタンスのサイズは 16 バイト未満である。

C#では16byte (128bit) か
397デフォルトの名無しさん
垢版 |
2019/09/29(日) 23:57:00.22ID:6uuCovZS
使用頻度にも依るんだから計測しろよ
別に難しいことじゃ無いし
2019/09/30(月) 00:27:00.93ID:k5ErHMsi
>>392>>393
Copyを実装してようがいまいが(=Move)
let x = y;
したのならどちらも同様にその構造体自体のmemcpyによる複製は行われてるよ?
(もちろんフィールド内の参照が指す先の話じゃなく)
2019/09/30(月) 06:40:12.68ID:URkXaUjC
それはわかってるつもり
関数定義で引数を参照にしそこねた場合とかをイメージしてた
Copyつきだとmoveされずに残るから気づきにくい
2019/09/30(月) 08:53:42.19ID:i9kRAMDA
それで問題なく動いてるならどうでもいいだろ
遅かったら直せば?
どれだけ速かろうが、なんら価値を産まないプログラムの価値はゼロだよ
2019/09/30(月) 09:35:07.62ID:URkXaUjC
動くのは前提で最初( >>385 )から速度の話をしてるんですよ
流れで所有権の有効性の一面がでてきたわけですがね
他の人はどれくらいの速度低下を許容しているのか知りたいってのが発端
2019/09/30(月) 09:49:38.90ID:Fmg7ESu9
呼び出し規約でレジスタに乗る範囲は意識するかな
大きいのは論外だとして、小さいのは
プロファイルとっても表面化しないまま積み重なっていくだけだから
遅かったらあとで直すってのはまず実施されないよね
2019/09/30(月) 10:10:48.53ID:4XC9Ks9U
価値を生まないプログラムの価値はゼロ
とかいうひどい重言
2019/09/30(月) 10:27:48.78ID:Fmg7ESu9
でも速いソフトウェアは価値があるよね、一般的に
2019/09/30(月) 10:45:45.14ID:mReccqCd
>>399
しつこくてごめんね、でも分かってるようには思えないなぁ
CopyだろうがMoveだろうがメモリの使用量も速度も何も変わらないよ?
>>391に書いてあるけど複製前の値が使えるか使えないかっていう、所有権の違いだけ


It's important to note that in these two examples, the only difference is whether you are allowed to access x after the assignment.
Under the hood, both a copy and a move can result in bits being copied in memory, although this is sometimes optimized away.

CopyとMoveの違いはassign後のxにアクセスできるか出来ないかの違いしかない
内部的にはどちらもビット単位のコピーが行われる

When should my type be Copy?
Generally speaking, if your type can implement Copy, it should.
Keep in mind, though, that implementing Copy is part of the public API of your type.
If the type might become non-Copy in the future, it could be prudent to omit the Copy implementation now, to avoid a breaking API change.

一般的にCopyが実装可能ならするべき
将来的に非Copyになる予定ならAPIが変わることになるので実装しないべき
2019/09/30(月) 11:23:56.92ID:ZVXF2Iws
moveのmemcpy()って最適化でだいたい消えるんじゃないの?
2019/09/30(月) 11:43:56.12ID:URkXaUjC
>>405
だからcopyもmoveもしたくないんですよ
勝手にcopyを渡されるのでなく参照を渡してアクセスすべきstructのサイズがありますよね
copy vs move でなく copy/move vs 参照 ということ
勝手にcopyされないようにCopyを実装しないサイズについて
他の人の考えを聞きたかったんです

たぶん >>393 にそんな感じって書いたのが良くなかったんだろうな
>>392 の問題点を指摘するべきでした
2019/09/30(月) 12:46:09.32ID:/ExrEdFZ
>>382
X.orgとWin32はいいとしてCocoaが厄介だな
2019/09/30(月) 13:02:43.26ID:7L7I6CKJ
128bitくらいまでならコピーでいいんじゃね
ttps://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/
410デフォルトの名無しさん
垢版 |
2019/09/30(月) 15:22:11.50ID:zXgxGRIB
although this is sometimes optimized away.
の部分も訳してよ
2019/09/30(月) 16:59:35.99ID:/ExrEdFZ
じょぶじょぶ〜
とりま、場合によっては最適化されるっしょ
2019/10/01(火) 20:25:14.82ID:lajlXQ9x
moveでも何かコピーされるの知らんかった。どうしてなの?
2019/10/01(火) 20:50:44.63ID:fK9M+/VL
このレベルの高速化が必要な処理なら #[inline] つけたら
2019/10/01(火) 22:05:50.22ID:iKbLcHR3
>>412
大抵は最適化でコピー省略だろうけど
寿命の短い変数から長い変数へmoveする場合は面倒な予感
2019/10/01(火) 23:19:08.32ID:5ranOfZi
め、memmove()はmemcpy()、、
moveが真にmoveになるのはハンドルや参照やFATで指し示されたブツだけなのではないか
bittableなオブジェクトでcopyメソッドの付加をケチっても仕方が無い
bittableなコピーは所有権フリーでふつくしい
2019/10/02(水) 00:51:11.12ID:Eszh3Zaw
>>413
今や言語を超えてもLTO出来るので#[inline]を付ける意味ないんじゃないかな
2019/10/02(水) 09:53:31.95ID:QICDvY23
LTOは重い
2019/10/02(水) 09:56:56.52ID:79uWriwX
LTOってよく分からん
.soとかどうなるの?
2019/10/02(水) 10:06:07.00ID:QICDvY23
その境界は当然越えられないよ
静的なリンクのものだけ
2019/10/02(水) 13:10:54.18ID:GoUXMchS
Result<(),Box<dyn Error>>を返す関数の中で、Errorトレイトを実装していない外部のクレートのエラーFooErrorを返す関数
fn f() -> Result<(),FooError>{}
に対して f()? のように?演算子を使いたい場合どうすれば良いんでしょうか?
421デフォルトの名無しさん
垢版 |
2019/10/02(水) 13:43:42.50ID:Ra0M0x2i
Errorトレイトが自分で作ったものならFooErrorにimplする
そうでないならenun MyErrorを作ってErrorをimplし、From<FooError> for MyErrorを実装する
規模が大きいなら後者のパターンで全てのエラーを包んでResult<(), MyError>を返すようにした方がよいっぽい
2019/10/02(水) 14:03:30.89ID:GoUXMchS
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=7e31f88718f5c8a1e9a11cdda48e91e4
>>421
ありがとうございます
Foo::f()?の部分はどうやって書けば良いんでしょうか…
423デフォルトの名無しさん
垢版 |
2019/10/02(水) 14:19:47.22ID:qs4Bbmku
すまん不完全な解答だった
外出ちゃったからコードいじれないんだすまん
はintoを自動的に発行するので対応するFromを書けばいけるはず
ただBoxだとどうかな、やってみて
2019/10/02(水) 14:24:05.29ID:GoUXMchS
>>423
いえ、ありがとうございます
もうちょっと試行錯誤してみます
425デフォルトの名無しさん
垢版 |
2019/10/02(水) 22:03:54.08ID:+yvFYHag
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=54aff502bb9829108b97270581494855

帰ってきたよ
これでいけたよ
426デフォルトの名無しさん
垢版 |
2019/10/02(水) 23:45:01.99ID:xTOjXinC
moveってしゃろーこぴー?
2019/10/03(木) 10:09:25.46ID:UFT9wl4W
>>425
ありがとうございます!
2019/10/05(土) 11:22:10.79ID:Kz6nPZqe
LTOって何ですか?
long transfer object? great teacher Onizuka?
429デフォルトの名無しさん
垢版 |
2019/10/05(土) 11:41:40.70ID:IzmeWHwu
レズ・トランスジェンダー・おっぱいの略。
2019/10/05(土) 11:45:44.92ID:oRBX06Fv
磁気テープ
2019/10/05(土) 15:31:30.78ID:JszGfLQj
DebugとDisplayってどう使い分けたり実装すれば良いんでしょうか

ドキュメントには前者はプログラマ向け、後者ははユーザー向けの出力とかって書いてあるので例えば数値なんかは
前者は「99u8」、後者はただ「99」みたいに表示されるのかと思ったんですが実際はどっちも同様にただ「99」としか表示されないですよね?
2019/10/05(土) 16:20:44.53ID:Kz6nPZqe
Debug は
ID: 530, name: "ほのおのつるぎ(売却可)", attack: 63, equippable: "戦士、勇者"
みたいにユーザーに見せるもんじゃない詳細とかを適当なフォーマットで含むじゃろ。
Display は
ほのおのつるぎ
みたいにエンドユーザーにフォーマルにみせる情報を、変にフォーマットせずに含むのが普通じゃろ
433デフォルトの名無しさん
垢版 |
2019/10/06(日) 14:09:28.34ID:UJBvNAqw
RustでVulkanを使いたいのですが、現状非公式のバインディングを使うしか無いのでしょうか…?
434デフォルトの名無しさん
垢版 |
2019/10/06(日) 16:42:20.66ID:u0a4L4+0
デバッグビルドの時に、リリースビルドした依存クレートを使う簡単な方法はありますか?
target/release/depsをtarget/debug/depsに名前を調整して移すとできてる感じですが
もっと簡単にできないでしょうか。
2019/10/06(日) 19:52:43.72ID:vdo0Vbvr
Nightly向けには実装されてるね
俺も早くこれ欲しい
https://github.com/rust-lang/rust/issues/48683#issuecomment-483665255
436デフォルトの名無しさん
垢版 |
2019/10/06(日) 21:45:30.41ID:u0a4L4+0
なるほど
当面自作のスクリプトでdebug/depsいじります
2019/10/07(月) 19:36:11.62ID:ygKDuPd1
Rustに限った話じゃないんだがGUIツールキットもゲームエンジンもC++が主流
でもC/C++以外でC++の呼び出しが出来る処理系はほとんどない。うぼあー
438デフォルトの名無しさん
垢版 |
2019/10/07(月) 19:40:49.20ID:PWOdjrjM
スマホゲームとか一時はUnityだらけだと思ったけど今は違うの?
2019/10/07(月) 20:36:38.94ID:MItW4Ls8
「C/C++以外で」ってCで呼べるんだ・・・
2019/10/07(月) 20:52:58.22ID:QQWXmaql
CどころかC++同士の異コンパイラ間ですら呼べなかったと思うけど。
2019/10/07(月) 23:30:27.88ID:AKFeYH7t
(´・ω・`)
2019/10/08(火) 00:43:17.33ID:EV6VUNWa
ウィンドーズホンだとC#からC++/CXを経由してネイティブなC++が呼べたお
2019/10/08(火) 00:45:06.10ID:0ezsQlmk
なるほど。開発環境が決まっててABI決めうちできるならいけるのか。
2019/10/09(水) 09:16:04.87ID:ffKM9u5G
Dがあるじゃん
2019/10/09(水) 11:04:16.03ID:+5ZYxB02
ここの住民の低レベルさが確定した
2019/10/09(水) 11:15:47.99ID:7UOBKYJf
レベルの高い話題くれ
2019/10/09(水) 17:58:10.09ID:PhcKq1+0
Cは社交界のオキテを知らない村娘だから
不用意に呼ぶとズッキュウウウンしちゃったりするのよ
だから簡単に呼べなかったりするけど呼べるときはシャワーも浴びずにすっ飛んでくる、そんな子
2019/10/09(水) 19:00:00.88ID:xdNe6xdo
C++のライブラリへのバインディングでほとんどのAPIがunsafe&unsafeって書いて無い奴もunsafeかもしれんから自分で気をつけてね☆
みたいのがあるんやが

これってRustで書く意味無くね…?
449デフォルトの名無しさん
垢版 |
2019/10/10(木) 00:27:32.81ID:sVTH7Uak
貴方がRustで書き直せば喜ぶ人もいるんじゃない?
450デフォルトの名無しさん
垢版 |
2019/10/10(木) 09:54:53.26ID:yMym0WfO
ま〜つもと
いけいけまつもと
がんばれまつもと
451デフォルトの名無しさん
垢版 |
2019/10/10(木) 10:51:54.74ID:LImRHacY
>>448
C++のライブラリ使うからだろ。
Rustで書かれたもの使うか、Rustで書き直せ。
2019/10/10(木) 13:45:05.68ID:sZ93Becg
Box<T>のTを初期化せずに返すunsafe fn box_t() -> Box<T> があったとして
let mut t;
unsafe {
t = box_t();
// Tの初期化
}
にするのと
let mut t = unsafe { box_t() };
// Tの初期化
ですますのとどっちが良いRust?
2019/10/10(木) 14:05:19.62ID:p3GDnYn8
Rustプログラミング入門
https://www.ohmsha.co.jp/book/9784274224355/
454デフォルトの名無しさん
垢版 |
2019/10/10(木) 14:59:57.87ID:MXl+fq4L
>>452
unsafeで囲む範囲はどの言語でも最小限にしろよ
初期化にunsafe要らんのなら囲むな
2019/10/10(木) 19:40:43.29ID:tKt5RHA7
なんでUnsafeメモリ領域にしなかったんだ…
2019/10/10(木) 21:10:29.28ID:emWne1To
ムンッ
2019/10/11(金) 09:08:20.83ID:15rXT0oG
>>448
unsafeなAPIに対してrustで安全なラッパーを被せてやれれば意味がある
2019/10/11(金) 09:11:01.85ID:+EEmVP7L
unsafe fn vec_t_n(n: usize) -> Vec<T> {
let mut v: Vec<T> = Vec::with_capacity(n);
v.set_len(n);
v
}

fn vec_t_n(n: usize) -> Vec<T> {
let mut v: Vec<T> = Vec::with_capacity(n);
unsafe { v.set_len(n); }
v
}

unsafe fnにするかfnにするか
例えばutf-8を保証するStringのようにTがなにかを保証する型だとして
Vec<T>の中身がTでないかもしれないからunsafe fnが良いRustでOK?
459デフォルトの名無しさん
垢版 |
2019/10/11(金) 11:00:26.28ID:hkXt1Gtm
>>455
1文字ずつ文字間開いてるとucs2で書かれてるように見える
2019/10/11(金) 15:38:54.43ID:LwZAFcHp
>>458
そのコードだけで言えばset_len()を使うことで保証されなくなるlengthの正しさを
呼び出し側が保証する必要があるのかどうか

from_utf8_uncheckedみたいな別のunsafe fn使ってればそれによって壊される安全性があるなら
その安全性を呼び出し側が保証する必要があるのかどうか
2019/10/15(火) 20:37:26.43ID:NGLZQHSs
https://keens.github.io/blog/2015/09/23/rustwokakutokinochiken/
move semanticsのお陰でGCがないので本当に小さい。hello, worldが277KBだった。

Javaででかいのが当たり前で大昔の感覚を忘れてしまったんだが
ちいさい?
462デフォルトの名無しさん
垢版 |
2019/10/15(火) 21:56:51.61ID:m8AinitX
その千分の一でもまだでかい
463デフォルトの名無しさん
垢版 |
2019/10/15(火) 22:12:04.54ID:Ko1HPs1y
バイナリゴルフが流行ってんの?
464デフォルトの名無しさん
垢版 |
2019/10/15(火) 22:36:57.07ID:icVT30E7
たった13バイトの文字列をコンソールに出力するだけで283648バイトを浪費wwwww
2019/10/15(火) 22:39:45.49ID:hhqZ1XTX
minimal runtimeってタイトルなんだからランタイムが小さいって話だろ。比較対象はGoとかHaskellとかであって、Cが小さいなんてのは当たり前。
2019/10/16(水) 08:58:56.22ID:OaKYrwsF
270kBは何が入ってるの
467デフォルトの名無しさん
垢版 |
2019/10/16(水) 13:15:16.66ID:dmmazo8P
>>465
nim
https://mevius.5ch.net/test/read.cgi/tech/1519896738/
2019/10/16(水) 13:29:20.87ID:lb+wp7Wk
ファミコン版のスターフォースのROMは16KBやったんやで
469デフォルトの名無しさん
垢版 |
2019/10/16(水) 13:39:20.98ID:KKGk/G0e
一方ルーストはhello, worldとコンソールに表示させるだけで277KBwww
2019/10/16(水) 18:54:57.62ID:7R9Tu3z4
ファミコンのドラクエ3が256KBだっけ
471デフォルトの名無しさん
垢版 |
2019/10/16(水) 19:33:59.18ID:rINTnV3z
Kbitじゃない?
2019/10/16(水) 21:08:46.19ID:9tVPGt2A
エミュROMでぐぐったら出てきた
ドラクエ3が256KByte
ドラクエ3が128KByte
ドラクエ1が64KByte
どれもKbitではない
2019/10/17(木) 00:23:19.63ID:TtVNUhvN
N88-BASICとかディスク拡張命令とか考えなければ32 KBに収まってた
数十KBというのは広大な情報量
人間の遺伝子もジャンクDNAを除けば10 KB強ぐらいなのではないか
2019/10/17(木) 00:25:43.60ID:z0Xtc2vv
https://www.tel.co.jp/museum/magazine/news/042.html
だってさ
ジャンク含めてもCD一枚分の模様
475デフォルトの名無しさん
垢版 |
2019/10/17(木) 17:16:51.68ID:TwA5RghT
go だと Hello, work! だけで 2MB でした本当にありがとうございました
476デフォルトの名無しさん
垢版 |
2019/10/17(木) 18:57:57.40ID:yPX5iNuE
日本は欧米と比べてココがダメ!

韓国のほうがもっとダメなのでセーフ!
2019/10/17(木) 20:26:17.00ID:Osa6WCSE
>>475
デバッグ情報をストリップしてください
2019/10/17(木) 20:41:23.80ID:8y1HJh15
https://www.atmarkit.co.jp/ait/articles/1910/17/news088.html
「Rust」言語を採用したAWS、Rustプロジェクト支援を開始

Amazon Web Services(AWS)は2019年10月14日(米国時間)、オープンソースのシステムプログラミング言語「Rust」について、開発プロジェクトをスポンサーとして支援することを発表した。

 Rustは、高速で信頼性が高く、効率的なコードを作成、保守できるように設計されている。2015年に最初の安定版がリリースされて以来、実システムへの導入が大きく進んでおり、GoogleやMicrosoft、Mozillaのような企業がいずれもRustを使用している。

 例えばMicrosoftは自社製品の脆弱(ぜいじゃく)性の約7割を占めるメモリ安全性の問題を解決するためにRustが役立つと指摘している(関連記事)。

 AWSでもRustの利用は大幅に拡大しており、「Lambda」「EC2」「S3」のようなサービスにおいて、パフォーマンスに敏感なコンポーネント用の言語として採用している。

 AWSは先ごろ、軽量のマイクロ仮想マシン(microVM)を数秒で起動できる安全な仮想化技術「Firecracker」をオープンソースとして公開したが、ここでもRustが採用されている(関連記事)。
479デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:27:06.30ID:RRRrLQ0r
それでも数秒かかるんか…
コールドスタートの悪夢未だ醒めず
480デフォルトの名無しさん
垢版 |
2019/10/18(金) 08:13:39.39ID:dDUU5P0o
>例えばMicrosoftは自社製品の脆弱(ぜいじゃく)性の約7割を占めるメモリ安全性の問題を解決するためにRustが役立つと指摘している(関連記事)。

これWindowsの脆弱性の話だろうけど、
静的解析ツールでは解決しないってことなのか?
2019/10/18(金) 15:26:11.27ID:/rPuRJSX
>>480
その関連記事は>>27。そのソースは>>190
静的解析ツール等を併用してもC/C++では無理があると指摘している
2019/10/18(金) 17:46:16.42ID:lmpJOwiE
mut を マットって読んでる人いる?

コアチーム含めミュート派が大勢なのは知ってるけど
eがないとミュートって読むのは不自然だし、時々eをタイプしそうになるから
マット派になろうかと思ってるんだが
2019/10/18(金) 17:52:26.42ID:+uRRCvkS
おれはミューツ派
2019/10/18(金) 17:55:14.75ID:uhy/qlU/
>>482
マット派
レットマットって発音が気持ちいい
2019/10/18(金) 17:59:19.15ID:G0LYzWL6
どう見てもムッと
2019/10/18(金) 18:12:40.01ID:7Ocq1iZd
むーと
2019/10/18(金) 18:29:52.38ID:lmpJOwiE
結構いろんな読み方してんのね
マット派いたから安心して転向するわ

ちなみにドイツ語ではムートって読んで勇気って意味らしい
2019/10/18(金) 20:27:28.69ID:4X7KT/ZF
Rustの単語のセンスだけはどうも好きになれん
2019/10/18(金) 20:30:24.39ID:uhy/qlU/
わかる
fnとかpubとかunwrapとか普通にわかりにくい
2019/10/18(金) 21:57:09.28ID:lmpJOwiE
pubはまあわかるけど
fnとunwrapは他言語でもあるし普通にわかりやすいと思ってたわ

IntoIteratorとかは素直にIterableでいいのにとは思う
491デフォルトの名無しさん
垢版 |
2019/10/19(土) 00:46:14.72ID:ZEJ60z1R
しかしRustでOS作ったらCより性能悪かったという記事があったはず
新しくOS用のプログラミング言語を作った方が良いのでは
RustはOS開発を主眼にしてるわけじゃないだろう
2019/10/19(土) 01:22:54.66ID:+gqAFVgo
OSの性能って曖昧過ぎて何測ってるのかわからん
2019/10/19(土) 04:43:06.59ID:VYVT60v2
Redoxめっちゃマッハやった
2019/10/19(土) 07:34:16.56ID:uIADZHgb
Rustは配列の境界値チェックがあるから普通に使うとCよりちょっと遅いよ
2019/10/19(土) 13:01:40.81ID:sh4W9dNy
>>494
分岐予測があるので理由はそこじゃない
2019/10/19(土) 13:28:05.60ID:a3cu9K9L
は?
497デフォルトの名無しさん
垢版 |
2019/10/19(土) 13:43:06.95ID:ZEJ60z1R
OS組もうとするとRustの言語概念を無視するような書き方をしなきゃいけない
みたいに書いてあったんだけど
2019/10/19(土) 13:44:39.15ID:xHh5MvNF
「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説
ttps://www.atmarkit.co.jp/ait/articles/1909/13/news133.html
このソースは
A high-speed network driver written in C, Rust, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python
ttps://github.com/ixy-languages/ixy-languages
これかな
499デフォルトの名無しさん
垢版 |
2019/10/19(土) 17:05:59.60ID:xnS8qN86
>>497
ケースバイケースだろ。
なんでも杓子定規にとらえるなって言ってやれ。
2019/10/19(土) 18:07:21.38ID:Xn59Im0u
いや普通にOSソース見ればそらrust向いてねーわってなるよ。
杓子定規にrust使おうってほうが気が狂ってるわ。
2019/10/19(土) 18:16:31.77ID:JHoWAbaJ
Rustを使わないからそうなっているのかもしれんぞ
どこでRustだと不利なのか説明してくれ
2019/10/19(土) 18:58:13.46ID:VwkXsBh7
ストレージからプロセスを読んで起動する、とか
そもそもコンテキストスイッチングの処理とかは所有権の概念(データの寿命が入れ子)から外れてくる
気がするが、別にunsafeにせねばならないほどでもないキモス
他に何かある?
503デフォルトの名無しさん
垢版 |
2019/10/19(土) 19:38:38.55ID:fKOzCfED
その昔はlispやforthでもos書いたりしたんだからrustで書けないことないだろう。
2019/10/20(日) 00:31:55.71ID:huwBBQor
redoxがあるけど。
505デフォルトの名無しさん
垢版 |
2019/10/20(日) 11:39:50.17ID:Q377Ee/+
それで実際Rustはバグ発生率低いの?
2019/10/20(日) 12:22:34.24ID:f+d3Kcps
バグ発生率ってどうやってカウントするのが一般的なんやろか?

完全にただの思いつきで無意味な比較だけどgithubのgoとrustで総issue数/contributor数だと1人あたり2倍ぐらいgoのが多いね
507デフォルトの名無しさん
垢版 |
2019/10/20(日) 13:14:08.41ID:Df2Q09El
issueってバグじゃないだろ。
機能要望とか議論とかあるじゃん。
2019/10/20(日) 23:15:26.37ID:ADDbXmaX
小さめのサイズの本で、初心者向けの本が出た!

Rustプログラミング入門、酒井 和哉、2019/10/13
2019/10/20(日) 23:22:23.45ID:ADDbXmaX
>>506
バグ発生率は、バスタブ曲線だろ。
初期によくバグる

土方をやってると、バグを多く出さないと、客に提出できないw

漏れは、平均的なIQ レベルより、間違いが少ないから、
いつも、アホみたいなバグを、わざと自分で作って、バグ発生数を増やしていたw

あらかじめ勉強している人は、滅多に間違わないから、バグ発生数基準だと困るw
一方、全く勉強していない香具師は、バグが多い
2019/10/21(月) 03:46:22.99ID:15XQsNX7
俺は世界で一番この本を待ってた!!!!!
511デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:21:09.04ID:c9dhXgWB
仕様書にバグが多いのはあれわざと仕込んでるのかなるほど
2019/10/22(火) 20:56:02.71ID:pBzGAt4J
ネストした構造体のコンストラクトパターンみたいなやつはもっとチュートリアルで
説明した方がいいんでないのとは思う。
多分めんどくさい書き方にしかならんからやらんのだろうけれど。
2019/10/23(水) 15:46:33.91ID:/ejQejyx
?の便利さに感動している
2019/10/23(水) 16:06:56.63ID:77J5IX+m
え、なに?
文字化けしてますよ
2019/10/23(水) 17:55:49.61ID:GdFoVnvN
三項演算子は便利だったなぁ、と他言語を思い出して感動してるってことかな
2019/10/23(水) 18:12:17.77ID:AT7YtDx+
普通にResultの話じゃなくて?
2019/10/23(水) 20:07:35.94ID:r6mLYpNF
組み込みもネットワークツールもほとんどc以上の生産性を出すことないしな。。
一番有効な領域ってデバッガーじゃねーの?とは思う。
2019/10/23(水) 20:47:39.59ID:/ejQejyx
Bookを6章まで読んだ俺が >>224 で書いたのが

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=dc60559b7af47298d305be80b340ee98

?の便利さに気づいた俺が書いたのが

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=308e7fe634f1e539c1f936c3989022f0
2019/10/23(水) 21:06:25.79ID:5Hzic27k
.file_name()?.to_str()?.to_string()
Rustだっさ
2019/10/23(水) 21:12:36.43ID:s8yqv2t4
公式に呼びやすい名前をつけないのがよくない
question mark operatorじゃわかりにくいから
error propagating operatorかerror handling operatorで
2019/10/23(水) 21:26:40.40ID:AT7YtDx+
ダサいかどうかとかどうでもよすぎる
性能、書きやすさ、読みやすさ、安全性がすべて
2019/10/23(水) 21:31:02.23ID:5Hzic27k
性能 境界チェックのせいでだいぶおそい
書きやすさ 地獄
読みやすさ 悪夢
安全性 噂ではあるらしい

?まみれになるぐらいだったらヌルポで落ちても変わらんやん
どうせ無理に回復とかしないほうがいい類のだろ
2019/10/23(水) 22:05:27.50ID:B/jcGWye
ぬるぽで落ちるのは運が良かっただけで何でも起きうるし最悪スーパーハカーの餌食になる
?はちゃんとエラーで終了してくれる


って理解でおk?
524デフォルトの名無しさん
垢版 |
2019/10/23(水) 22:31:31.88ID:xt74prfP
ヌルポって、javaのあれのこと?
シンタックスだけ比較して意味あんのかな
2019/10/23(水) 23:02:51.06ID:5Hzic27k
>>523
ちがう
ぬるぽだとまず間違いなくぬるぽエラーで落ちる

NullSafeのありがたさはnullにならないこと
場合分けを考えずに常に変数を確実なひとつの値として扱える
2019/10/23(水) 23:10:47.86ID:5Hzic27k
モナドだろうがなんだろうがNullはNullだ
へたに回復してしまうとほかに影響が波及して大惨事につながりやすい
むしろ最初からNullにならないことを保証してくれる方がうれしい


なのになんでOKで帰ってきた結果からfileNaeme取るのまで?つけさせられとんじゃ
2019/10/24(木) 00:25:03.31ID:M5uvwdA8
まあNULLで潔く死んでくれた方がってのは確かにあるわな。
2019/10/24(木) 00:39:21.69ID:1+d2lllL
エラーかどうかのチェックは、NULLかどうかのチェックとは違う
ここ大事なところなので間違えちゃダメ
2019/10/24(木) 01:03:58.72ID:LM2wjPr+
潔く死んで欲しいなら明示的にunwrapなりexceptなりすればよい
バグなのか想定されたエラーなのかを区別して明示的にコーディングできるのがrustの利点では
2019/10/24(木) 05:35:47.09ID:nklp1qoa
OptionとかResultにケチつけてるのは加齢臭キツすぎる
531デフォルトの名無しさん
垢版 |
2019/10/24(木) 06:50:04.06ID:G12eboer
下手に回復して大惨事になるのは、下手だからでしょ

file_nameに?付けてるのはディレクトリの場合無いからでしょ
なんでそんなことが疑問になるのか分からない
2019/10/24(木) 09:03:26.66ID:M5uvwdA8
Optionとか中途半端でたちわりーわ。
てかrustみたいにライフタイム意識する言語の場合、あんまり役割ない気がするけどね。
2019/10/24(木) 12:28:38.87ID:8vd5prrh
メソッドチェーンの中で「owned -> borrowed -> owned」するのはアンチパターンだと思うんだよね
不必要な処理が入るし可読性も下がるのでいいことない

fn main() -> Result<(), std::io::Error> {
let path = std::env::current_exe()?;
let file = path.file_name().unwrap();
println!("{:?}", file);
Ok(())
}
2019/10/24(木) 12:51:50.95ID:1+d2lllL
そもそものお題がこちら

>187 デフォルトの名無しさん2019/08/26(月) 20:55:57.18 ID:hNXwMePN >>206>>214>>224
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=8c44bed658726ada0deff031799664b7
>1. std::env::current_exe()で実行ファイルのフルパスを得る
>2. file_name()でファイル名だけにする
>3. to_str()で&strにする
>4. 途中でErrやNoneが返ってきた場合はデフォルトの値"foo"を使う

>ということをやりたいのですが、エラーでビルドできません。
>どのように書けばいいでしょうか?
2019/10/24(木) 20:32:12.47ID:8vd5prrh
>>534
お題があったのね
referenceを受け取ってreferenceを返す関数に抽出すればto_ownedやto_stringは不要

use std::path::PathBuf;

fn main() {
let path = std::env::current_exe().ok();
let file = file_name(path.as_ref()).unwrap_or("foo");
println!("{}", file);
}

fn file_name(path: Option<&PathBuf>) -> Option<&str> {
path?.file_name()?.to_str()
}
2019/10/24(木) 21:22:39.45ID:1+d2lllL
勉強になりました

let file = {|| Some(path.as_ref()?.file_name()?.to_str()?)}()
.unwrap_or("foo");

でも動くようですけど関数に抽出した方が良いですか?
2019/10/24(木) 21:41:02.37ID:7Zw0jZ/m
それ関数作って呼んでるのとほぼ同じだし名前がついてるかどうかの違いだから好きにせえ
2019/10/24(木) 21:55:47.24ID:8vd5prrh
Someで囲ったOptionalチェーンを返すクロージャってのが
Rustのイディオムとして認知されて来ればそういうやり方も有りかもだけど
俺は関数に抽出したほうが型が見えて読みやすいので良いんじゃないかと思う
2019/10/24(木) 22:25:03.94ID:LM2wjPr+
try blockを待て
2019/10/25(金) 20:57:15.75ID:ZeSKDyBG
これまではto_string()がチェーン末尾だったからSomeに入れてたけど
末尾がto_str()になってOption返すから必要なかった

let file = {|| path.as_ref()?.file_name()?.to_str()}().unwrap_or("foo");

なぜ昨日は気が付かなかったんだろう……
541デフォルトの名無しさん
垢版 |
2019/10/25(金) 21:01:12.42ID:d+xtEa5D
try block
ずっと待ってるあなたのことを
意味もなくクロージャで囲む日々
2019/10/25(金) 21:29:24.66ID:JK+efETy
モナド早くきてくれー
2019/10/25(金) 21:51:56.35ID:AfveIyxL
モナドられると、ややこしい人が顔出してくるんでノーセンキュー
2019/10/26(土) 06:18:18.43ID:ajDsHp6T
関数型信者がうるさくなった言語は衰退する
545デフォルトの名無しさん
垢版 |
2019/10/26(土) 09:43:29.54ID:eCInqrX9
関数型ことごとくすたれてない?
2019/10/26(土) 10:13:18.36ID:ERKSSgX1
モナド(高階型)来てもいいんじゃない?OptionとResultで同じようなことやってるし
2019/10/26(土) 13:48:16.66ID:3B/2CauT
オプショナルチェーンを矛盾なく繋げるモナドが入れば覇権だと思う
正直それだけできれば小難しい理論はいらないし
2019/10/26(土) 14:36:55.83ID:SyjizfQh
チェーンは滅んでほしい
2019/10/26(土) 14:53:14.83ID:z1scFH36
チェーンってひとくくりにするなよ。メソッドチェーンは糞だが。
550デフォルトの名無しさん
垢版 |
2019/10/26(土) 15:11:41.74ID:eCInqrX9
チェーン評価ってのも聞いたことがあるな
2019/10/26(土) 16:45:06.90ID:ZMkO6rZZ
>>547
矛盾ってのがよくわからないんだけど
今のオプショナルチェーンだと何が問題なの?
552デフォルトの名無しさん
垢版 |
2019/10/26(土) 19:08:07.88ID:2tVQRscY
この板で否定的な言い分を魔に受けないほうがいい
冗談で言ってるか、冗談みたいな馬鹿の言い分だから
553デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:02:43.13ID:JvDQOGiO
おっぱい好きだけど爆乳は好きじゃない。
2019/10/26(土) 23:16:28.89ID:yM1vAjNy
奇乳きらい
2019/10/27(日) 15:39:15.22ID:QYdsXE4U
貧乳こそ正義
556デフォルトの名無しさん
垢版 |
2019/10/27(日) 20:10:25.95ID:M2w7+A6p
π
2019/10/27(日) 21:47:29.52ID:29EcE5aV
雄π
2019/10/28(月) 07:30:15.50ID:JN5lVu+u
ちっぱいだいすき
2019/10/28(月) 11:04:07.07ID:24j/k5v2
たかが乳ですら意見割れてるのに関数型の話がまとまるわけないな
2019/10/29(火) 22:37:06.24ID:mgVguoQK
うまいことドメイン駆動設計をオブジェクト指向から切り離せないかな?
Javaでアーキテクチャを考えると、「このコードはどこに書くべきか」がずっと分からなくなる
関数のシグネチャ読めばそれがMなのかCなのか業務ロジックなのか入出力なのか、全部分かるように書けないものか
2019/10/29(火) 23:45:32.33ID:2LlnWJID
スレチ? それどもRustで考えてるのかな
JavaでもC#でもシグニチャ読めばMなのかCなのかくらいはわかるように書けると思うが

それはいいとしてDDDの本質はOOとは関係ないよ
Functional DDDの本がScalaとF#を例にしたのがそれぞれ出てるから読んでみるといいかも
F#のほうの著者のサイトみればRustのEnumでも同じような事できるのがわかるはず
https://fsharpforfunandprofit.com/ddd/
2019/10/30(水) 00:09:30.97ID:FUp1HJ0i
はえ〜
563デフォルトの名無しさん
垢版 |
2019/11/01(金) 14:20:55.93ID:uczmPzhO
Vulkanが公式でRustをサポートしてくれればRust製のゲームとかもっと出てくるのかなぁ
2019/11/01(金) 15:16:52.33ID:tfmUKGIE
enumの配列はメモリやばい?
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=0eeab60af9f7385db00275b2d168ac2c
2019/11/01(金) 15:49:15.26ID:zrbJp7o3
>>564
enum MyEnum {
Foo,
Bar(i32),
Baz(i32, i32, i32, i32, i32),
}

今のRustはEnumの一番大きいvariantに合わせてメモリを確保する
Baz(i32, i32, i32, i32, i32)が、4バイト x 5 = 20バイト
どのvariantかを示すTagバイトで+1バイトと パディングで+3バイト=24バイト
配列の要素数が3なら24 x 3 = 72バイト
2019/11/01(金) 19:25:13.98ID:+nuKsb5/
現職エントリ()のドワンゴや
タイ全裸Wantedlyの推してる言語って時点で使う気起きなくなるよね
567デフォルトの名無しさん
垢版 |
2019/11/01(金) 19:29:17.10ID:CgKHPMXI
タイ全裸って?
2019/11/01(金) 21:28:00.41ID:/XSkjXU3
>>567
タイ全裸Wantedlyでググろう
Wantedlyがタイで全裸になったわけではないが
企業としては全く信用できん
2019/11/01(金) 21:55:41.28ID:/XSkjXU3
どんなに「こんなに素晴らしい機能がある言語!」とか言われても
「でもあの個人情報お漏らし泥箱や現職エントリ()ドワンゴとかDMCA乱用のWantedlyとかが推してる時点で……」ってなるのが
正しい社会人としてのあり方
2019/11/01(金) 22:09:13.26ID:tfmUKGIE
>>565
つまりどんなenum作るでもたくさん値を持たせないほうが余計なメモリ使わずベストってことか
571デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:57:41.39ID:RJfnLfVj
アンチドワンゴがみんなC言語使ってると思うと抜ける
572デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:57:51.68ID:RJfnLfVj
↑思うとワロタ
2019/11/02(土) 02:27:34.58ID:lY37zOLC
まあ正直、いまだにえんじにゃーのファッションって部分がでかいわな。
574デフォルトの名無しさん
垢版 |
2019/11/02(土) 07:38:49.45ID:m1PoQplx
他人がなに使ってのかチラチラ伺いながら自分の使うもの決めるのか
小物すぎるだろ
2019/11/02(土) 13:57:08.64ID:uxGQ1L3w
>>574
つっても現職エントリ様やタイ全裸と一緒にされたくはねえしなあ
576デフォルトの名無しさん
垢版 |
2019/11/02(土) 14:20:09.97ID:m1PoQplx
同じ言語使ってるだけで同一視すんのはお前だけだよ
2019/11/02(土) 14:32:51.71ID:ygDc/lgM
それらの企業はRustなんか採用する前からボロボロだっただろ。
2019/11/02(土) 15:40:16.76ID:lY37zOLC
んでもって一発逆転をねらって水物のに飛びつくっていうアンチパターンね。
2019/11/02(土) 20:44:05.92ID:J/DFBFnF
あそこは一人が有名なだけだと思うがな
2019/11/02(土) 22:56:34.85ID:VM95VN5u
https://github.com/woboq/qmetaobject-rs
このcrateの中で"rust!"というマクロが使われてるんですがクレート内や依存するクレートの中を探してみても定義してる箇所が見つかりません
どこで定義してるのかわかる方いませんか?
2019/11/02(土) 23:31:33.69ID:t8MMHk4t
>>580
Rustのマクロとして定義されてるものではないみたいね
↓ここら辺に説明がある
https://docs.rs/cpp/0.5.4/src/cpp/lib.rs.html#209-241
2019/11/02(土) 23:48:47.52ID:VM95VN5u
>>581
なるほど、マクロの中で独自の擬似的なマクロを定義してるって事でしたか
そんな使い方があるなんて思いもしなかった

ありがとうございました!
583デフォルトの名無しさん
垢版 |
2019/11/03(日) 01:36:39.62ID:G+Mc14wF
マクロの中で独自マクロ定義とか、、、
そんなことされたら俺の脳はメタメタにされてしまう。
2019/11/03(日) 02:21:28.16ID:EBkVjL7h
C++テンプレートの悪夢を再現しようとしてる人たち
585デフォルトの名無しさん
垢版 |
2019/11/03(日) 14:24:34.21ID:smmSGOst
C++を理解したプログラマーはRustを使う必要がなく、C++が理解できないプログラマ―にはRustも同様に理解できない。
https://developers.srad.jp/story/15/02/20/2132207/
586デフォルトの名無しさん
垢版 |
2019/11/03(日) 17:45:13.54ID:jtCsbY8B
>>585
古い記事のリンクなんてはるな、うざい
2019/11/03(日) 20:33:09.59ID:r9lfrX/A
traitでコピーかムーブかの判断をするようにしたのはrustの最大の失敗だな。
2019/11/03(日) 22:07:42.86ID:1Y+jqSBq
直すならいまのうち

大丈夫だろ
2019/11/03(日) 23:21:37.95ID:M7pbBVsi
どうだったらよかったのか
2019/11/04(月) 02:00:10.34ID:emAGOeO/
>>586
5年前から何一つRustは進歩してないってことだよ
一方Nimは1.0迎えてどんどん進歩している
RustからNimへの流出もどんどん進んでる
2019/11/04(月) 02:02:58.89ID:emAGOeO/
http://wolfbash.hateblo.jp/entry/2017/07/30/193412
そーいや結局この記事へのまともな反論は以前のスレでも出てこなかったよな
592デフォルトの名無しさん
垢版 |
2019/11/04(月) 02:16:17.42ID:O4QbPTeM
ネタフリはいいけどもうちょっと生産的なのにしてよ
2019/11/04(月) 02:22:13.55ID:q2ozowgo
>>589
少なくとも = をオーバーロードもしくはオーバーライドするようなやり方は
すべきでなかった。
2019/11/04(月) 07:58:19.81ID:hfizXHxK
生産的というが、Rustが言語として生産的なことは過去にあったか?
それよりはNimへの乗り換えという前向きな選択肢を出すことの方が生産的だと思うが
2019/11/04(月) 09:12:04.34ID:b9TWlX4+
AWSも支援--プログラミング言語「Rust」人気が拡大
https://japan.zdnet.com/article/35144661/
2019/11/04(月) 09:16:30.74ID:TNJ/Yj6e
>>593
そうでないならどうする?
pros/consは何?
2019/11/04(月) 10:29:24.02ID:pD4BmXAp
個人的にはC/Zig/C2・C++/D/Rust・Go/Nimという棲み分けだと思っているので別にという感じだ

まぁそもそも論としてNimの話したいなら次世代言語スレかNimスレでやれよという気持ち
せっかく専用スレあるのにメインユーザーにすら使われないとか可哀想すぎるでしょう?
2019/11/04(月) 11:26:47.69ID:TQlb0Fo2
NimはPythonでパフォーマンスに困ってる人にはいい言語じゃないかと思う。Pythonスレで宣伝してくればいいのに。
Rust使ってる人が移行したくなる要素はあまりない気がするけどな。
2019/11/04(月) 12:05:28.47ID:q2ozowgo
>>596
んな簡単に示せたらおれが言語作ってるわ。
とりあえず言えることとしてはこの辺の明示性に関しては明らかに c に劣るってことくらい。
2019/11/04(月) 12:16:27.30ID:TNJ/Yj6e
「すべきでなかった〜」とか断言したわりにしょぼい回答でがっかりだよ
2019/11/04(月) 12:41:59.38ID:x85TCC2R
Rustの良さはCと同レベルの速さをキープしつつ
Cよりは安全にかけるところが良いのだから
言語についてごちゃごちゃ言うのは筋違い
多少面倒でも安全に倒した方が良いって人が使うもの
2019/11/04(月) 12:43:51.83ID:f7Qy6XgK
インデックス1始まりの地獄はVBAでさんざん味わった
一貫してるとまた違うのか?
2019/11/04(月) 14:56:29.79ID:YPBZbHG1
RustはCより身持ちが堅いけどお作法と親戚づきあいが滅茶苦茶面倒な嫁って感じ
NimとPythonは巨乳姉妹で姉は大学生、妹はフリーター
Perlはヤンデレ妹
2019/11/04(月) 17:01:43.91ID:R+mKKMUr
まあ確かにC++のauto_ptrと同じミスをしてるとは言えるよねCopyトレイトに関しては
こっちはCopyトレイトになれるものが相当限られてるのと
コンパイラがC++よりわかりやすいエラーを吐くことでギリギリ妥協の範囲を攻めてる感じ?
まあ全体的にはauto_ptrよりはマシだと思うよ
許容できるかは人次第だけど
2019/11/04(月) 18:52:40.96ID:q2ozowgo
>>601
いや全く逆のことを指摘してるんだが。
もっと面倒でもコピーと参照については明示性のある記述方法にするべきだったのでは
ということを言っている。
2019/11/05(火) 01:02:39.53ID:AzzdNH9H
>>605
横レスだけど >>601 はRustとNimについての文脈であってCopyトレイトについての文脈じゃないと思うよ
2019/11/05(火) 19:53:18.47ID:FsOBPMBu
自転車置き場の屋根の色は何色にするべきか?と同レベルの議題にしか見えない
せめてどんなコードを読んでor書いてそう思ったのかを言えよ。主観の元になった客観をよ
608デフォルトの名無しさん
垢版 |
2019/11/06(水) 11:16:50.77ID:o3tEvZiY
アワビやウニを獲りに行くのに
アクアラング使うか素潜りかの違いでしかない
609デフォルトの名無しさん
垢版 |
2019/11/06(水) 13:06:01.28ID:mtXJ9XYX
それはアクアラングのほうがいいだろ…
2019/11/06(水) 16:41:33.93ID:35bri3id
機材背負ってアワビ捕る海女がいるかよw
611デフォルトの名無しさん
垢版 |
2019/11/06(水) 16:46:31.15ID:yiWzW/nI
それなら「アクアラングより素潜りのほうがよい」ということになるが…
自転車置き場の例えはそういうことじゃないが。
2019/11/06(水) 19:54:52.61ID:NaAqW+TO
たとえが下手すぎてわかんねーよ
613デフォルトの名無しさん
垢版 |
2019/11/06(水) 21:23:00.27ID:i85ttsqs
潜水服が一番良い
2019/11/07(木) 13:42:50.63ID:4E24WBqM
Rustやってるとこんなに知能下がるのかこわ
615デフォルトの名無しさん
垢版 |
2019/11/07(木) 16:06:15.56ID:wJeAdMrJ
Rの発音が難しい
616デフォルトの名無しさん
垢版 |
2019/11/08(金) 11:30:10.82ID:3E1/z7K0
ネーミングは失敗してるよな
2019/11/08(金) 15:18:16.25ID:6uXznXC5
async来たけど、普通のプログラムには必要ないよね?
2019/11/08(金) 18:04:49.98ID:IDNGhAox
普通って何だ
2019/11/08(金) 18:37:06.96ID:FQ4gd7yJ
平均以上の学歴で
平均以上の収入で
平均以上のルックスの人が書いた、
平均以上に速く
平均以上に小さく
平均以上に美しいプログラムのことだろ
620デフォルトの名無しさん
垢版 |
2019/11/08(金) 18:43:36.10ID:J02ga/Ws
平均と同じではいかんのか?
2019/11/09(土) 03:17:35.20ID:gvjWq9Ft
お前らってRust使って何作ってんの?それともただの言語マニア?
622デフォルトの名無しさん
垢版 |
2019/11/09(土) 06:26:46.96ID:jVCSonN8
ウェブアプリケーション
今五個目
2019/11/09(土) 06:36:27.73ID:wLC8XRoz
>>621
もちろんwebブラウザ
2019/11/09(土) 06:55:04.49ID:lNA75F4e
PoCでwasmに使ってるわ
2019/11/09(土) 10:19:17.47ID:PlRJlzfP
jsで15分でできるようなものを3時間かけて作るバカ
2019/11/09(土) 11:12:14.52ID:3G853X2x
メモリの安全のためには仕方がないんだよ
2019/11/09(土) 14:11:20.38ID:d07pJzzX
早くできてもわりとしょうがない
2019/11/09(土) 17:19:37.60ID:hkI1EgUJ
>>625
三時間ならマシ
コンパイラと格闘して一日つぶれるとかザラ
2019/11/09(土) 18:17:21.85ID:AHKmnAtf
ターミナルで動くテキストエディタとCコンパイラ
2019/11/10(日) 15:18:40.14ID:47iDVxCF
開発サイクルが遅くなってデメリットが上回る
仕事で使うアホはいないと思う
2019/11/10(日) 16:00:19.02ID:6dzdFLZi
現実には使ってる企業・製品が続々と出てくるわけで
2019/11/10(日) 17:54:33.79ID:agcAAuVW
どちらかというとアホは仕事で使えない
633デフォルトの名無しさん
垢版 |
2019/11/10(日) 22:43:25.53ID:KB1QaEbz
wasmて
ウェブブラウザアプリでRust的な安全性ガッツリ必要なことあるの?
2019/11/11(月) 19:57:31.41ID:EVqu4APJ
てかメモリ安全なスクリプト言語さえまともに使えないやつに限ってrustとか騒いでんだよね。。
バカバカしい。。
635デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:07:59.59ID:khjQBy11
コンパイラより自分の腕を信じるって…
やっぱりジャップにはかなわねえや
636デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:20:19.17ID:GWl6h/g/
てか で始める
限って によるガバガバなレッテル貼り

クソバカ
2019/11/11(月) 20:48:06.84ID:dcucGLEU
Cなら3で済みことを馬鹿に合わせてRustで20かけて作ることの意味があるのかどうかが問題だ
638デフォルトの名無しさん
垢版 |
2019/11/11(月) 21:23:31.49ID:vNU4oQAO
3で済みこと
2019/11/11(月) 21:42:08.98ID:dcucGLEU
あれw
2019/11/11(月) 22:00:50.85ID:yLtQAUtP
いきなりコント始めんなや
641デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:28:55.57ID:GWl6h/g/
イニシャルコストだけ論じても意味ないしょ
作って終わりの製品もあるのは確かだだけど
642デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:30:05.95ID:199KzUbd
>>633
ない
2019/11/11(月) 23:21:00.62ID:/mnflr/W
>>641
ランニングコストも同じだよ
何をするにもコンパイラの機嫌伺いから入る必要があるんだから
2019/11/12(火) 01:23:13.19ID:xaPlPvgO
そんなこと言うなよ
コンパイラちゃんはどこが悪いかいつも教えてくれてるんだぞ
コンパイラちゃんの気持ちも考えろよ
645デフォルトの名無しさん
垢版 |
2019/11/12(火) 01:50:34.68ID:UmQHVT6w
Item1とItem2で同じ構造しててそれぞれに似たような処理をしているのにItem2にだけCloneつけろとエラー出るんですが
理由がわかりません

エラーが出るコード
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=39e9b4899374d1aca90c64836d71c161

Item2にだけCloneつけて動くコード
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=568c3f827c59a417f8d1c0f91b6bc9e4
2019/11/12(火) 03:38:31.37ID:+Tj6wPob
>>645
vec!マクロで要素数指定する形はその型がClone実装してないとだめ

Item1も要素数指定すればCloneを要求される
let mut vs = vec![Item1 {a: 0, b: 0};10];
2019/11/12(火) 05:17:14.07ID:UmQHVT6w
>>646
説明ありがとうございます
理解しました!
648デフォルトの名無しさん
垢版 |
2019/11/12(火) 07:41:14.54ID:QX/VSHUG
>>643
そんな短絡的なことを言っているんじゃないよ
2019/11/12(火) 12:52:39.30ID:75A3JV4a
コンパイラがやかましければプログラムの質が上がるっていう
短絡的なこと言ってるのはどっちだか
650デフォルトの名無しさん
垢版 |
2019/11/12(火) 12:56:25.17ID:p8WdjJyB
安全な言語を開発するようメーカーの方に心がけていただき、
kidsが安心してプログラムできるような、コンパイルできるような世の中になってほしい。
2019/11/12(火) 14:55:56.85ID:QDjqh8Or
「Rust言語」をWindowsプロジェクトに適用してみた、Microsoftの事例
https://www.atmarkit.co.jp/ait/articles/1911/12/news050.html

欲しい機能がまだまだある、Rustコミュニティーとも協調

Rustは比較的歴史が浅いため、Microsoft社内の開発に使うことを考えると、よく使う言語機能であっても欠けているものがあるという。
その最たるものは、安全な変換(“プレーンな古いデータ”型をrawバイトと間で相互に安全にキャストする)やCスタイルの共用体の安全なサポート、誤りを許容する割り当て(割り当ての失敗でパニックに陥らず、所定の手順で停止する)だ。

Cargoには優れた単体テスト機能が組み込まれているため、開発者が本番コードと同じファイルにユニットテストを記述して、開発中に簡単に実行することができる。だが、Microsoft社内の大規模で複雑なビルドシステムでは、Cargoをビルドツールとして利用できない。
そこでCargoチームとの間で、複雑なビルドシステムを持つ大企業がCargoを利用できるようにするための話し合いを開始している。
2019/11/12(火) 15:08:35.31ID:YVK5A4co
「誤りを許容する割り当て」ってなんだ?
malloc失敗した時になんか処理したいって話?
653デフォルトの名無しさん
垢版 |
2019/11/12(火) 15:54:18.41ID:BAhwfPb/
要約すると今のcargoはクソで落ち着く
2019/11/12(火) 16:32:19.58ID:+Tj6wPob
>>652
fallible allocation (fail gracefully from allocation failure, rather than panic).

https://msrc-blog.microsoft.com/2019/11/07/using-rust-in-windows/
655デフォルトの名無しさん
垢版 |
2019/11/12(火) 20:55:32.21ID:QX/VSHUG
>>649
そんな短絡的なことを言っているんじゃないよ
2019/11/12(火) 21:02:47.09ID:H9gS/H0a
口で説明できないことは
大体は説明するとすごくろくでもないことだ
2019/11/12(火) 21:04:03.04ID:H9gS/H0a
おまえが理解してると信じ込んでるものが真実だという保証は一切ない
658デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:07:52.77ID:QX/VSHUG
欠点を論うだけの雑魚に対し、フィードバックして改善しようとするMS様は立派だな
現場でも文句ばかり垂れてるお爺さんいるよな
2019/11/12(火) 21:09:26.54ID:H9gS/H0a
何にも言わないで偉そうにしてるだけのやつが言うセリフじゃねえええええええ
2019/11/12(火) 21:19:42.81ID:xi8txZuF
> 何にも言わないで偉そうにしてるだけ

なぜバレた!?
661デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:46:17.93ID:QX/VSHUG
茶々入れ小僧がわめくなよ
2019/11/12(火) 21:49:03.55ID:QwsLzoNY
MSはCargoでどういう場合困るんだろ
小さいものしか作ったことないし技術力も低いからわからない…
663デフォルトの名無しさん
垢版 |
2019/11/12(火) 22:11:56.20ID:QX/VSHUG
俺も。。
2019/11/13(水) 00:32:15.20ID:LQUpdw6j
GoogleのBazelみたいな分散環境でスケールする独自のビルドシステムを持ってるから
cargo testとかやった時にcargoのインクリメンタルビルドの仕組みじゃなく
自分たちの仕組みと連携させたいってことなんじゃないかと
2019/11/13(水) 03:04:21.12ID:DP/YD1iU
>>651
「使ってみたけどやっぱダメだったわ」をオブラート10枚くらいに包んだ
奥ゆかしい日本語の記事って感じだな
2019/11/13(水) 05:44:21.88ID:HjWmYEnS
Copyトレイトはプリミティブ型のように値としてコピーされるのが自然な型に付ける

コピーされるのは自然でない型でコピーをしたい場合にCloneトレイトでコピーを行なってると明示できるclone()メソッドを使ってコピーする
2019/11/13(水) 07:36:30.61ID:HNnV6bHC
あっちの企業って大企業でもOSSプロジェクトが使えると判断されたら支援もするけど日本じゃさっぱりだよな
2019/11/13(水) 08:07:59.49ID:h/RstPgQ
くれくれが多いと難しい
2019/11/13(水) 08:59:29.70ID:6gbwvDDZ
>>665
ほとんど英語記事の翻訳なんだが日本語訳された結果も
配慮してくれるなんてすごいな〜
2019/11/13(水) 09:00:49.38ID:87kgxo9f
近いうちにマイクロソフトはMustを発表するんだろ
2019/11/13(水) 09:15:39.91ID:+TK0hitd
>>666
せめてCopyトレイトのドキュメントぐらい嫁や
2019/11/13(水) 16:05:23.57ID:qoeka4FL
「トレイト」って訳語はないの?
673デフォルトの名無しさん
垢版 |
2019/11/13(水) 16:14:33.46ID:CN9wALpQ
特徴
2019/11/13(水) 19:27:48.53ID:hjs0qnAg
確かにマイクロソフトならこのくらいの言語なら勝手に作りそうではあるな。
そもそもの実装系がカスだし。
2019/11/14(木) 08:40:42.25ID:/QwfH319
MSがネイティブでゼロオーバーヘッドのF#を出したら用済みだね
676デフォルトの名無しさん
垢版 |
2019/11/14(木) 11:58:42.24ID:YSMwOav4
トイレット
2019/11/15(金) 00:00:29.64ID:csRpQu7P
https://i.imgur.com/aACmbKf.png
2019/11/17(日) 22:19:43.87ID:Pgjwxo9T
D言語のdebugブロックみたいなデバッグビルド時のみ有効になるコードブロックってRustにあります?
2019/11/17(日) 22:53:19.86ID:vz8eXEG6
#[cfg(debug_assertions)] か cfg!(debug_assertions)を使う

https://doc.rust-lang.org/reference/conditional-compilation.html
680678
垢版 |
2019/11/18(月) 00:08:28.84ID:0Snxbixt
>>679
ありがとうございます!
2019/11/18(月) 18:57:03.41ID:CjfZ5YZK
&strに含まれる各文字のUTF-8のバイナリ表現を
文字単位でprintしたいんだけどもう少し簡単な方法ない?

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=95162e453b679ff50c779695e9b545bf

&strをchars()でイテレートすると
char.encode_utf8でUTF8に戻するのがなんとも気持ち悪い
2019/11/18(月) 19:16:24.62ID:z+VV/8hn
>>681
char_indicesでイテレートすればposと(char.len_utf8で)lenが取れるから、それで元のスライスにアクセスする、とかかな。
そんなに短くはならないけど、bufferはいらなくなるはず。
2019/11/18(月) 22:15:40.78ID:CjfZ5YZK
>>682
なるほど
このやり方のほうが素直な気がするね
とりあえずありがとう

let baz = "aあ🦀";
for (pos, char) in baz.char_indices(){
println!("¥n{}:", char);
for byte in baz[pos..pos + char.len_utf8()].bytes() {
println!("{:b}", byte);
}
}
2019/11/19(火) 00:27:09.27ID:IXdZpGti
rustも32bitのwindows向けのメンテやサポートは終了が確定してるよね…
2019/11/19(火) 16:20:24.11ID:473MwB5J
2次元配列から最大値を有するデータ(with index)を取り出したいとき
イテレータのmax_by等を二段がけにするのと
従来プログラミング言語のように二重のforループで取り出すのと
どっちがおすすめ?
2019/11/19(火) 17:18:54.68ID:iUfotOQ6
>>685
読んだ人に意図が明確に伝わる方
2019/11/19(火) 17:44:40.62ID:IXdZpGti
forでやるとmutな変数の更新を自分でやることになるから安全性が落ちる
更新ミスによるデバッグコストのリスクがある
2019/11/20(水) 21:08:08.17ID:1bHauA1T
変なやり方するより自然なfor使った方が
結局は可読性によって安全性やデバッグコスト低下になる。
689デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:09:44.36ID:kQh16pu+
こういうお爺ちゃんはほんと迷惑
長いというだけで関数に切り出したりするし
2019/11/20(水) 22:18:02.26ID:ZJ0yiBhZ
え?長いのわけたらいかんの?
691デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:22:05.63ID:kQh16pu+
いかんからもうやらないでね
2019/11/20(水) 22:42:01.28ID:5+rTFt1E
テストが書きやすい単位で分ければそう長くもならんだろ
2019/11/20(水) 22:42:36.59ID:5+rTFt1E
テストが書きやすい単位で分ければそう長くもならんだろ
2019/11/20(水) 22:44:50.09ID:5+rTFt1E
専ブラが荒ぶった
連投スマソ
2019/11/20(水) 22:48:38.35ID:ykGdicPs
組み込みのCだとアセンブラを意識して減算カウンタでdo...while使ったりするけど
PCでそれはないな。イテレータが使える状況なら使ったほうが安全だし
2019/11/20(水) 23:40:48.65ID:1bHauA1T
>>689
いや長いならキリ出せよバカ。
こういうバカが一番迷惑。
2019/11/20(水) 23:43:20.92ID:ZhXfBtsy
関数切り出しがダメなのかRustでは
おじいちゃん驚きだわ
理由を何なの?
シャドウイングあるからとか?
2019/11/21(木) 00:12:22.19ID:ajP/wB6Z
競プロで見かける色んな人のコードでは
forループのほうが自然なとこを無理矢理イテレータのメソッドチェーンにしてたり、その逆があったり
2019/11/21(木) 00:26:18.38ID:i/7SJRFV
読みやすさが犠牲にならない範囲で短く書けるってことはよいことだけど
高階関数とかクロージャがまざるとトレースがめんどいのは確かだよね
デバッグ時にいらいらする
2019/11/21(木) 01:07:26.22ID:GN1h9TxM
>>685
1. 2重forループ
2. forループ + max系
3. fold + max系

の3択になると思うんだけど並列化も考えるような処理なら3がいい
そこまでの処理じゃないならメソッド抽出してテストを書いとけば中身はどれでもいいと思う
701デフォルトの名無しさん
垢版 |
2019/11/21(木) 07:10:43.84ID:YlKoSulN
>>696
長いだけで切り出すメリットがない

>>697
スコープが広くなるからだよ
2019/11/21(木) 08:07:30.46ID:bRawZfWI
forの方が自然てどういうケースだろうね
2019/11/21(木) 08:37:51.52ID:i/7SJRFV
>>701
いやいや
若者よもっと経験積もう
2019/11/21(木) 09:05:05.54ID:t44F/vpr
関数切り出しでスコープが広くなるとか、プログラミング言語として致命的な欠陥だろ
2019/11/21(木) 09:32:00.36ID:i/7SJRFV
切り出すと特定の関数から一度しか呼ばれない関数がででるから、
それが無意味というか、むしろ関数のシンボルが増えるし
上から下に連続的にソースコード読めなくなるしでダメだと言っているのだろう

でもそれってRust以外の言語でも同様の話であって、なぜそれでもなぜ切り出すべきかは語りつくされてる
それでもRust固有の事情で反論があるなら書いてくれ
2019/11/21(木) 11:40:09.30ID:suwFOuwq
scanとかinspect使う処理はforの方が読みやすいこと多いように思う
707デフォルトの名無しさん
垢版 |
2019/11/21(木) 12:20:05.12ID:YlKoSulN
>>705
全くあなたの言う通り、そしてRust固有の話ではない
2019/11/21(木) 13:17:36.82ID:ymw8VtjB
>>705
関数切るとその分だけ借用とか生存期間とかの問題が増えるんよ
関数跨いだ変数の扱いが非直感的すぎる
関数に分けるとコンパイル通らなくなる事例が多すぎるから
関数分けないモチベに繋がる
2019/11/21(木) 15:03:38.41ID:ByfXIyid
行儀の良くないプログラミングスタイルが
コンパイラに怒られてるだけに聞こえるなあ
例出してよ
2019/11/21(木) 17:54:01.27ID:Ju9cDeqK
>>707
長い関数書いてるかうちは半人前
うちのプロジェクトなら即リジェクト
深いネストもリジェクト
2019/11/21(木) 20:17:44.56ID:BfqobOk+
まあバカにrust使わせるとどうなるかってことがよくわかる事例だな。
2019/11/21(木) 20:54:42.20ID:yV25mt1X
グローバルな型推論が無いのと型シグネチャが人に全然優しくないことに起因する、関数大きくなりがち問題はRust特有ですよ
最初から完成形があるわけでもないのに試行錯誤のコストを無視しちゃ駄目だ
713デフォルトの名無しさん
垢版 |
2019/11/21(木) 21:02:13.57ID:YlKoSulN
>>710
小物臭すごいんで寄らないでください
2019/11/21(木) 21:26:52.12ID:2mT9kv+U
抽象的な話じゃなくてコード出せよ
2019/11/21(木) 21:32:48.48ID:gmc8FBJo
関数内関数を活用しよう
716デフォルトの名無しさん
垢版 |
2019/11/22(金) 09:52:07.52ID:G2a56k/U
苦労ぢゃ
2019/11/22(金) 10:24:47.28ID:aoRVpdgs
メソッドチェーン万歳
2019/11/22(金) 13:02:23.70ID:sYczQ2I8
>>708>>712でピンと来ないならRustエアプ
2019/11/22(金) 14:48:50.24ID:ZeXcMQQW
確かにimpl traitなかった頃のクロージャ返しとか、asyncなかった頃のFuture返しとかは煩雑だったけど
現時点でそんな大変な型シグネチャってあるか?
2019/11/22(金) 19:24:09.78ID:EyqF2Cmi
>>708
> 関数に分けるとコンパイル通らなくなる事例が多すぎるから

悲しいけどわかるw
2019/11/22(金) 19:42:58.93ID:sZn84uzB
impl trait がない時代しか知らんのだろう
722デフォルトの名無しさん
垢版 |
2019/11/22(金) 20:26:37.15ID:aoRVpdgs
バージョンアップごとにリリースノート確認するくらいの手間をかけろ
2019/11/23(土) 00:04:27.77ID:OWOiuO7H
んな手間かけるくらいならまともなテストコード書くほうが
よっぽど安全性上がるわ。
バランスがおかしい。
724デフォルトの名無しさん
垢版 |
2019/11/23(土) 00:14:14.42ID:ykHu5UNS
>>708
C/C++では関数分離は大事なこと考えずにやってたのかな?バグバグバグ
2019/11/23(土) 00:14:39.49ID:8L2VfF1O
リリースノート一回読む程度もやらない人が
Rustコンパイラと同等な網羅テストを毎回書けるとは思えんけどな。
2019/11/23(土) 00:39:42.82ID:8xX8HZu8
関数に抽出するからというよりも
関数に抽出してジェネリックにしようとすると簡単にコンパイル通らないことが多々ある

例えば少し前に出てた2次元配列からmaxとindexを取得する例だけど
main関数から、配列やVecを受け取って結果だけをprintする関数を抽出したり
foldに渡すクロージャを関数として抽出したりするのに一苦労
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=160e0290cba2c67d8090326a54c7ab62
727デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:05:15.71ID:lsT6kO8T
>>726
デバッグしてあげました

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=31427b62cf0ac30ea340084d6b7e515e
728デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:13:22.52ID:lsT6kO8T
filter_mapしゃんを使って書き換えるのは諸君らへの宿題とする
2019/11/23(土) 03:23:24.33ID:8xX8HZu8
>>727
ま、ありがとう
超バグってたね

ちょっと手直し
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=be7300d6fb44b350f1b190fa79e88d6a
730デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:39:19.44ID:lsT6kO8T
filter_mapしゃんをご存知ないのでしゅか
バグを出しにくい安全設計とはこうしゅるものでしゅ

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=5c184061ecdc7537d8eb8ccc1c146238
731デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:44:01.49ID:lsT6kO8T
真の安全性はunwrap_or(init)なんて与えないことなんでしゅがね
取得したインデックスを使うことがある場合は空の2次元配列で死にましゅよ
732デフォルトの名無しさん
垢版 |
2019/11/23(土) 04:57:43.99ID:OVg6D0Jq
インデックスとして使わなくても嘘の結果が表示されちゃうからOptionのままにして適切に表示を分けないといかんでしょな
733デフォルトの名無しさん
垢版 |
2019/11/23(土) 12:05:56.79ID:cBKKqL2b
Rust用にソース書くときに結局Cでどうなってるか意識しないといけないのなら
最初からCで書いた方が良くね?ってなるよね
734デフォルトの名無しさん
垢版 |
2019/11/23(土) 15:06:34.21ID:OVg6D0Jq
そういう世界もあるかもしれないけど意識しないでしょ
Cで書いてたって、Cでどうなってるか意識してないじゃん
2019/11/23(土) 19:35:16.54ID:2/gd1mxA
どういうアセンブリが出てるか確認しろよ
736デフォルトの名無しさん
垢版 |
2019/11/23(土) 22:15:20.19ID:OVg6D0Jq
そんなら最初からアセンブリで書いた方が良くね?
ってなるじゃん
アホくさ
2019/11/24(日) 00:42:51.11ID:np+ynBzF
うちは新しいコンパイラ出たらチームで逆アセ眺めて品評会してる
2019/11/24(日) 09:08:56.80ID:Oi+jYcGL
コンパイラだって人間が作った物だ。希に間違える事はある
739デフォルトの名無しさん
垢版 |
2019/11/24(日) 10:36:10.48ID:L4eQsSCt
>>736
してないのか?低能
740デフォルトの名無しさん
垢版 |
2019/11/24(日) 11:56:22.50ID:ce9gfhz8
朝起きたら一杯のアセンブリ茶。
毎日欠かしたことはありません。
2019/11/24(日) 13:02:06.02ID:CSNbk4W0
アセンブリ茶って体にいいの?
2019/11/24(日) 17:36:26.10ID:vCPUEEji
Clangで組み込みをする場合はアセンブリを見るがRustでWEBやCLIを作るときはあまりIRは気にしないな
Rust書いていてClangを意識したことは一度もない。普通LLVM IRだろ
743デフォルトの名無しさん
垢版 |
2019/11/24(日) 18:25:39.51ID:Ks3HYb8S
>>739
なにをだよ三下
2019/11/24(日) 20:12:55.63ID:kcqeQudy
低レイヤー向け言語だけど低レイヤーは触りたくないという
よくわからんユーザー向け言語
2019/11/24(日) 20:47:11.96ID:zJ3lZEAa
shiftjisってRustで使えるの?
746デフォルトの名無しさん
垢版 |
2019/11/25(月) 01:07:44.42ID:qlZVJnnp
巨乳レイヤーは触りたい。
2019/11/25(月) 11:16:58.97ID:OXWkeipl
>>745
「使える」の定義次第

Firefoxで使ってるやつはコレ
https://docs.rs/encoding_rs/latest/encoding_rs/
https://github.com/hsivonen/encoding_rs
748デフォルトの名無しさん
垢版 |
2019/11/25(月) 13:05:19.75ID:pjJuONFZ
>>744
ほんそれ
2019/11/25(月) 13:33:41.16ID:Gs3bQI7D
出来て当たり前の事をやって「やったぜ!」→「いいね!」になるのが今の日本
他の人がやらない事をやる人は「奴は特別だ(俺は出来なくてもしょうがない)」とレッテルが貼られる
アセンブラを馬鹿にする奴をしばしば見かけるがマイコンとかだとアセンブラが使えると可能になる処理ってまだあるしな
750デフォルトの名無しさん
垢版 |
2019/11/25(月) 13:39:32.23ID:pjJuONFZ
https://twitter.com/KSY_RasPi_Shop/status/1197084483020677121
https://twitter.com/5chan_nel (5ch newer account)
2019/11/25(月) 14:22:19.37ID:VBqp5949
Rustグラマの平均年収3000万くらいいってそう

マイクロソフト、「Rust」試用は概ね順調--不足する機能にも言及 - ZDNet Japan
https://japan.zdnet.com/article/35145098/
752デフォルトの名無しさん
垢版 |
2019/11/25(月) 16:33:29.05ID:TS/Fak3X
小学校高学年から中学二年くらいまでのアセンブリをペロペロしたいです
753デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:00:15.74ID:veETdbiQ
ペロペロ
2019/11/25(月) 19:50:53.15ID:2aQAGKkK
>>746
巨乳がそんなにいいとは思いませんね、貧乳こそ正義
755デフォルトの名無しさん
垢版 |
2019/11/25(月) 20:35:18.87ID:qlZVJnnp
フツ乳好き以外は精神異常者。
2019/11/25(月) 20:51:24.68ID:2aQAGKkK
>>755
>フツ乳
の定義は?
2019/11/25(月) 20:53:02.62ID:kVXiwW2u
今日からお前はフツ乳だし、あいつはツチ乳だからな
2019/11/25(月) 21:02:57.89ID:kvlqke/V
ここからルワンダの内戦が始まった
2019/11/26(火) 00:08:01.25ID:1kDxX+p6
>>747
これちょっと使いづらいよね
移植ものだからかな
ラッパーが欲しくなる
760デフォルトの名無しさん
垢版 |
2019/11/26(火) 03:53:06.11ID:bRozRvY7
Yo!Yo!
761デフォルトの名無しさん
垢版 |
2019/12/02(月) 16:08:55.09ID:0BLlGnXD
rustの親切コンパイラに慣れちゃった人は
他言語でもrustの親切コンパイラ感覚で雑なコーティングで不親切コンパイラを使ってバグを生み出すマシーンと化す
rust以外使えない体に…
2019/12/02(月) 16:40:00.68ID:xKYi6RDA
アホな書き方するとすぐ怒られるから
むしろまともになるのでは
2019/12/03(火) 12:05:39.67ID:n+J6zrpQ
Microsoft: We're creating a new Rust-based programming language for secure coding

https://www.zdnet.com/article/microsoft-were-creating-a-new-rust-based-programming-language-for-secure-coding/
764デフォルトの名無しさん
垢版 |
2019/12/03(火) 12:13:06.00ID:yN5r9ueQ
またオレオレ増やしたんか
それとも破壊工作か
765デフォルトの名無しさん
垢版 |
2019/12/03(火) 13:20:15.63ID:AhWfHQH2
これ前のニュースと同じじゃね?
windowsの開発に利用するのに必要なカスタムしてるだけだろ。いち利用者として。
766デフォルトの名無しさん
垢版 |
2019/12/03(火) 13:29:34.30ID:3xgyI5/y
RustってDCTのイメージ
ポルシェとかフェラーリが使ってるあれ
2019/12/03(火) 14:06:53.14ID:LOAssVxZ
ライフタイムパラメータの省略だったり、
derefやcopyをtraitで暗黙的な動作にしてたり
そういうのがバグを生みやすいってことわからんのかね。
2019/12/03(火) 14:18:20.74ID:Ay4LfeTT
具体的にどういうケースでどんなバグになるの?
2019/12/03(火) 14:25:00.78ID:jDo5c24e
>>765
前のニュースとは違うね
https://vimeo.com/376180843

- 現状はProductionレベルのruntimeが出来たところ
- プロトタイプレベルのインタプリタとタイプチェッカーもある
- コンパイラはまだ開発を始めてない
- 数週間以内にGithubに公開

前のやつも動画公開されてたけどあんまり中身なかった
https://youtu.be/o01QmYVluSw?t=1228
2019/12/03(火) 20:59:01.41ID:u7b+W8Ww
要約すると
M$「Rustゴミだけどコンセプトはいいからコンセプト部分パクるはwww
OSSなんやし文句は言わさんwww
あ、俺はライセンスで売るけどなwww」
2019/12/03(火) 21:21:57.12ID:yGKYf8HM
J++みたいなやつかな
772デフォルトの名無しさん
垢版 |
2019/12/03(火) 22:19:43.57ID:1I2DD2lf
やってるのはMSの研究部門
この部門は幾多の研究をしているが直接製品になるものはとても少ない、研究部門だから

たんにRustにダイブして良し悪しを知ろうとしているだけ
2019/12/03(火) 23:09:05.32ID:S0RbQ8S1
昔MS Researchがハードウェア記述言語向けの開発ツールを本格的に作るって言ったことがあってすごく期待したんだけど、
結局大した成果もなく立ち消えになったのを思い出した…。
774デフォルトの名無しさん
垢版 |
2019/12/04(水) 10:23:20.50ID:sb3P/SSe
昔二羽ンゴが動画配信向けのFPGAを本格的に作るって言ったことがあってすごく期待したんだけど、
結局大した成果もなく立ち消えになったのを思い出した…。
2019/12/04(水) 11:38:14.73ID:7DVYyWf8
たくさん失敗しないと成功できないしどんどん失敗して欲しい
2019/12/04(水) 14:40:34.27ID:yxObKB0u
MS Researchって「Winodwsを置き換える新OS作るぜ」とか言ってた事もあるんだぞ
現状はご存じの通りWindowsはいまだ健在

MSのポストWindows「Midori」の構想が明らかに
https://www.itmedia.co.jp/anchordesk/articles/0807/30/news076.html
777デフォルトの名無しさん
垢版 |
2019/12/04(水) 14:52:56.01ID:O7fLJ+Es
海荷
2019/12/04(水) 15:05:23.66ID:Icg49EkL
OCaml.NETことF#さんは一定の評価を得ているイメージ
2019/12/04(水) 16:32:55.05ID:zuKEiXSP
C#使ってるやつらが乗り換えるとも思えんな
780デフォルトの名無しさん
垢版 |
2019/12/04(水) 17:09:35.24ID:oHIt+BCl
現在開催中のAI Cup 2019というプログラミングコンテストにRust使って参加してRustの強さを知らしめようぜ!

https://russianaicup.ru
781デフォルトの名無しさん
垢版 |
2019/12/04(水) 17:18:14.61ID:oHIt+BCl
現在のSandBox戦での上位のRust使用率の低さ
何とかしようぜ!

https://russianaicup.ru/contest/1/standings
2019/12/05(木) 20:30:38.35ID:LdDpTgsU
>>781
だって結局Rustじゃ何も作れないんだもん
2019/12/05(木) 20:55:53.44ID:8H7awdOo
なぜなんだぜ
2019/12/05(木) 21:23:07.86ID:BGzE2aqD
とりあえずGUIフレームワークとゲームエンジンを・・・
785デフォルトの名無しさん
垢版 |
2019/12/05(木) 22:13:17.54ID:tXHfD70q
自分で作れよ
786デフォルトの名無しさん
垢版 |
2019/12/06(金) 10:11:30.49ID:uUae0oO6
Rustみたいに開発効率良くてデバッグもし易い言語ωなら
GUIフレームワークもゲームエンジンも爆高速で開発出来るよね
2019/12/06(金) 11:31:33.35ID:+xYMF8dR
ゲームエンジンはAmethystとかggezが頑張ってるのかな

GUIは作りかけができては放置されるの繰り返しであまり進まないね
moxie-native 試そうとしたけどビルド通らんかった
2019/12/06(金) 19:29:06.37ID:SuzkeVSk
ライフタイム見直したら結局structから設計し直しとかそんな感じになる。
それが開発効率を下げてる。
2019/12/06(金) 22:54:20.00ID:TijxbTpR
Azulつかっていたがクロスプラットフォーム対応が辛くてやめたわ
今はデカイ変更を加えているようだが頑張ってREADMEの内容ぐらいは完璧にして欲しい
790デフォルトの名無しさん
垢版 |
2019/12/07(土) 06:42:16.65ID:L/BKwpgN
このコンテストにRustで参加して優勝してRustのすごさを世間に知らしめようぜ!

第5回 Asprova プログラミングコンテスト
https://atcoder.jp/contests/asprocon5
2019/12/07(土) 12:34:40.83ID:ZsYnLuoj
もう少しコネクション保持したサーバープログラムをどうすんのとかサンプルほしいわ。
2019/12/07(土) 12:45:27.09ID:erYV0nIU
そんなものはGoを使えばよい
2019/12/07(土) 12:49:57.95ID:ZsYnLuoj
それはそうだが、オブジェクトの寿命を意識したプログラム例として参考にしたい。
794デフォルトの名無しさん
垢版 |
2019/12/07(土) 20:37:03.33ID:RmCIdZSZ
tokioのサンプルじゃいかんのけ?
2019/12/07(土) 21:02:50.74ID:ZsYnLuoj
サンキュー。これでよさげ。listener周りが参考になりそう。
2019/12/08(日) 23:03:36.89ID:GCQCtNmD
みんなでMSが新しいRust出すのを待とうぜ!
2019/12/09(月) 00:11:16.05ID:tIleS1RP
Rust#
2019/12/09(月) 00:13:28.83ID:JoeodElM
Rustはまず名前変えないと無理だろ
Rustってググってもゲェムしか出てこねぇよ
2019/12/09(月) 00:40:52.81ID:BygidCaR
rust langでググればよくね?
2019/12/09(月) 00:44:07.34ID:FD9BPIub
Rustでググってもほぼほぼ言語のことしか出てこない
グーグル先生のカスタマイズ次第やろ
2019/12/09(月) 06:49:32.48ID:c9WUFjLw
新しい名前はMicrosoft Rust
2019/12/09(月) 07:15:46.16ID:P5GHtIan
MSみたいな大企業的にRust(錆)ってネーミングは敬遠するんじゃね
2019/12/09(月) 08:27:48.55ID:dsA8mCuW
そんなの気にしないって
しょうもないゲン担ぎを気にする日本企業じゃあるまいし
2019/12/09(月) 08:34:08.93ID:lEQBdu8/
Visual Rust
805デフォルトの名無しさん
垢版 |
2019/12/09(月) 10:51:01.09ID:RLwtKsqp
MSが関わるとろくなことにならない
2019/12/09(月) 10:55:01.56ID:FD9BPIub
Visual Crust
パリッとサクサク!
2019/12/11(水) 06:49:16.28ID:5CG8kH4I
メソッドとかに副作用を明示出来る構文あったりする?(引数のmut明示以外の副作用で)
2019/12/11(水) 08:36:28.70ID:9rEgLiZN
orbtkが0.3.1alpha1になっていた。native, elctron,browserに対応していて、どれも一発で動いた。windows, Linuxで検証。
2019/12/11(水) 14:23:59.12ID:LIaQQ7bv
crust懐かしいな
2019/12/11(水) 16:37:17.47ID:NScZxG9p
>>808
winでサンプルさくっと動いていい感じだけど、もうちょっとネイティブな外観が欲しいんだよな
今はC#かPowerShellで書いちゃうけど
2019/12/11(水) 18:30:33.47ID:glAHoJ/D
wxRustが欲しい
2019/12/11(水) 18:37:01.74ID:wJaDkA9Q
>>810
https://github.com/redox-os/orbtk/tree/develop/res
CSSで定義されているみたいだから、比較的自由ききそう
2019/12/12(木) 02:04:36.99ID:Nnj2Mpq2
DCESみたいなオリジナルのecsと違う技術的に説明すらされてないオレオレecsが増えてゆくな。
2019/12/12(木) 12:12:21.57ID:G9zUefNb
Rustいまいち盛り上がらんなあ
どこもGoばっか使いやがってコノヤロー
815デフォルトの名無しさん
垢版 |
2019/12/12(木) 17:19:37.23ID:ZgrZOUXi
>>814
リアルタイム性が重要でなくて、
そこそこの実行速度でよければGoでいいじゃん
競合しないと思うが
2019/12/12(木) 17:31:07.39ID:Ijd1d2r8
>>815
そもそもプラットフォームにWebを選んだ時点でリアルタイム性や実行速度はそこそこで十分だからなあ
それらが重要になるのはもっと保守的な領域なので、Rustとかいうポッと出の言語は知られてすらいない
2019/12/12(木) 17:56:12.23ID:40jm9Rb/
【急募】Rustでwebサーバー建てるお仕事〔ゲーム会社除く)
818デフォルトの名無しさん
垢版 |
2019/12/12(木) 18:32:44.32ID:Lo+C9eAO
引越は引越のANT
2019/12/12(木) 20:51:45.28ID:Rc7qy7fw
ライフタイムの考えは面白いけどそれだけだな。
820デフォルトの名無しさん
垢版 |
2019/12/12(木) 21:37:13.27ID:QcnezoE2
俺はRustでいいじゃんと思うけど
2019/12/12(木) 22:14:18.36ID:G9zUefNb
でも案件無いんだなこれが
2019/12/12(木) 22:17:59.83ID:VqiNoJ2J
世界が必要としてるのは新言語ではない
Innullable Javaだ
2019/12/12(木) 22:26:30.76ID:fj3dIJyl
>>817
url貼らないけど自転車本の著者の一人がそれやってる会社にいる
824デフォルトの名無しさん
垢版 |
2019/12/12(木) 22:28:50.79ID:QcnezoE2
その人のブログはとても勉強になる
2019/12/13(金) 00:13:33.89ID:WNmLBJqN
Webって技術的には正直面白くないからなあ
だからリビドーを持て余した連中は変な言語に走る
2019/12/13(金) 01:57:25.93ID:vrg8AVXf
orbtkが熱いと聞きますた
まだ触ってない
2019/12/13(金) 06:03:41.34ID:GlNmi7Tq
じゃ、orbtkがWindowsでうごくとこ動画で見せて
2019/12/13(金) 07:00:10.85ID:vrg8AVXf
甘えんなハゲ
2019/12/13(金) 12:21:49.28ID:RHHuV/p6
取ってきて cargo run --example ... するだけなのになんで動画?
2019/12/13(金) 21:22:09.48ID:AirhCkz9
example動かしてみたけど
これはゲームUI専用のやつなんだな
OSのウィジェット使ってないからクリップボード使えないし
日本語入力も出来ない
2019/12/13(金) 22:27:30.69ID:wVI96F7k
C ABIから使えるネイティブウィジェットのGUIツールキットTcl/Tkが候補に挙がるくらい少ない
2019/12/14(土) 23:18:55.66ID:g6QtWyIm
そこまでメモリ管理にシビアなプログラムの需要が日本にはもうない。
2019/12/17(火) 21:59:30.10ID:xN+qS68V
Iced も example tour 見てみた感じよさそうに思った
ただご多分に漏れず日本語は入力できない(□になった)
難しいんかね ttps://github.com/hecrj/iced/issues/103
2019/12/18(水) 02:09:28.71ID:Y1VmG9h8
>>833
あんまり詳しく見てないけど、Elmと同じモデルを採用してるというのがセンスいいね
2019/12/23(月) 14:56:30.58ID:FLE8lYOm
JavaScript 今から覚えるくらいなら Elm やれ
836デフォルトの名無しさん
垢版 |
2019/12/23(月) 20:42:31.88ID:sS1JWXeN
elmは絶対に流行らない首をかけてもいい
2019/12/23(月) 21:58:51.00ID:j6aRoIp6
Rustの立ち位置も似たようなもんやで
838デフォルトの名無しさん
垢版 |
2019/12/23(月) 22:27:56.54ID:0aHLh1ru
もじらが作ってmsがおうえんしてくれてふだろ。
で?elmは?w
2019/12/24(火) 00:47:07.34ID:4c9jV6+e
erlang見て小ルーチンええな〜言ってるレベルだがな。
2019/12/24(火) 01:08:10.92ID:9irKuexe
軽量プロセスはコルーチンではないぞ
2019/12/24(火) 07:17:39.18ID:1am5/M78
TEAベースのKaguraもよろしくお願いしますね
2019/12/25(水) 23:32:33.59ID:MA63ugKX
軽量プロセスはコルーチンちゃうんか
2019/12/25(水) 23:38:34.92ID:rtgRmFxx
プロセスはスレッドが別のこともあるけど、別スレッドで動作するものをふつうコルーチンとは呼ばないね。
2019/12/26(木) 00:26:57.90ID:AhAD5nXk
ほなコルーチンと違うかぁ
もうちょっと詳しく教えてくれる?
2019/12/26(木) 10:48:13.00ID:s9rWqp86
名古屋コルーチン
2019/12/27(金) 20:54:40.66ID:zMa/58Jf
軽量「プロセス」とか言い出したのは誰だよ…
2019/12/27(金) 20:57:38.45ID:zMa/58Jf
>>832
兵器産業ではあるあるかもしれん
現行F-2のFBWのコードは小さいROMによく収まったなあという意味で芸術品との噂
2019/12/27(金) 23:08:45.63ID:mZEWK1vc
なーにちょっとセグフォったぐらいヘーキヘーキ
2019/12/27(金) 23:11:02.66ID:uyqJfPGf
Rustクソむかつく
訳わからんとこでエラー吐いて遅々として進まない
850デフォルトの名無しさん
垢版 |
2019/12/27(金) 23:40:09.93ID:CoHNsOHu
それをロンチ後に味わうよりずっといい
2019/12/27(金) 23:55:25.45ID:URhJW9sD
可能性の塊やぞ
2019/12/28(土) 09:01:50.45ID:vlOag0kC
https://www.redox-os.org/jp/
密かに期待してる
2019/12/28(土) 18:55:04.32ID:IqI7wbUC
>>852
今はどういう段階なの?
ブートするだけ?
2019/12/28(土) 23:58:48.46ID:REPcOsSU
>>849
Rust難しいけど相応の対価はあると思うぜ
855デフォルトの名無しさん
垢版 |
2020/01/01(水) 08:04:30.24ID:6zSEt3Eo
重量プロセス
856デフォルトの名無しさん
垢版 |
2020/01/03(金) 00:21:36.29ID:4CdCqvzm
なんか,外部クレートを取ってこれなくなってない?
サーバ側がバグってる?
857856
垢版 |
2020/01/03(金) 00:32:48.86ID:4CdCqvzm
これっぽいんだけどなー
よくわからん。俺だけ?
https://github.com/rust-lang/cargo/issues/6513
858856
垢版 |
2020/01/03(金) 00:40:14.08ID:4CdCqvzm
これで自己解決しました
失礼しました
https://kokeshing.com/unable-to-update-registry-error-cargo/
2020/01/13(月) 02:25:37.87ID:kbEHI+CO
C系のワンラインifや?演算子は悪しき文化だと思うこの頃
最近書かれたOSSのコードにも多用されていたりするから笑えない
もちろんRustでそんな邪悪な書き方は許されていないけど
2020/01/13(月) 06:53:45.05ID:j6Sgy/j5
?演算子が無いとこれができん↓↓↓
const int y = (x > 0) ? 1 : -1;

if文を使うと
int y;
if (x > 0) {
 y = 1;
} else {
 y = -1;
}
となってyがmutableにせざるおえない
2020/01/13(月) 09:12:02.94ID:Xv6FKp77
>>859
Rustは糞だな
それが好きならお前が整形ツール使えばいいだけの話

>>860
> let y = if x == 5 { 10 } else { 15 }; // y: i32
https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/if.html
2020/01/13(月) 09:13:06.23ID:Xv6FKp77
すまん、言い忘れたが、俺は出来るだけ ? を使う派だ
2020/01/13(月) 15:23:43.45ID:xcD2sz0v
そんなカスな書き方にこだわるくらいならconstでなくても困らんくらいに関数きれや。
864デフォルトの名無しさん
垢版 |
2020/01/13(月) 16:29:03.41ID:axFuJyFl
C
x = y == a ? A : B
x = y == a ? A : y == b ? B : C

Python
x = A if y == a else B
x = A if y == a else B if y == b else C

優先順が判りにくい
2020/01/13(月) 18:52:00.24ID:BwoUkKtw
なるほど
https://ideone.com/TvRR80
2020/01/13(月) 23:08:55.12ID:Xv6FKp77
>>863
俺は切ってるけどな。

が、こんなところで言い争いをする意味もないので、Rustはどうかと思ってFireFox見てみたが、
SpiderMonkeyは思いっきりC++じゃねえかよ。Rustってどこに使われてるんだ?
https://hg.mozilla.org/mozilla-central/file/d5843cae64d30255b242d051888e99bef3de5c05
2020/01/13(月) 23:22:40.80ID:xcD2sz0v
まあ実践的なコードになればなるほど、
mut, unsafe, refcell使いまくりだからな。。
2020/01/13(月) 23:35:29.58ID:oL0Ub0pZ
>>866
とりあえずservoディレクトリの下はRustだと思うけど。
2020/01/14(火) 16:22:27.20ID:uFo9dhko
>>849 俺も、昔C言語で苦しんだな。誰にも教えてもらえないし、しかしその分人より詳しくなったよ。
C言語に詳しくなるって事は、弱点も知ることになる、そしてその弱点からどう逃げるか?そういうことも考えるようになる。

Rustの逆引き辞典みたいなハンドブックがインターネットに転がってないかなぁ
2020/01/14(火) 19:15:10.25ID:3eaorBLU
こことか結構いいぞ。
https://github.com/rust-unofficial
2020/01/14(火) 19:21:50.48ID:tuFEGmKg
moveのコストってみんな気にしてる?
Cだったらポインタ渡すだけだったり
ポインタを返すだけだったりで最小限な感あるけど
rustじゃポインタ中心でやりくりしないよね
2020/01/14(火) 20:12:08.07ID:bWQIptzM
コンパイラの最適化で消えるんじゃないの?知らんけど
moveコストが気になるってどんなプログラムか想像付かないけどゲームとか?
2020/01/14(火) 22:36:34.11ID:fFlEK4SW
普通moveコストが気になるほど巨大なものをスタックに置かないのでは。
あとCでポインタ渡すケースなら普通は参照渡しだろうし。
2020/01/14(火) 22:49:49.23ID:QFWUHN7i
そやったね失礼
参照があったわw
初心者まるだしですまそ
2020/01/14(火) 23:35:09.81ID:ngXFRoSC
>>867
つまりRustは実践的でなく、FireFoxが沈みつつあるのはそのせいだと。

>>868
servoって何ぞ?と思ったらGeckoと交換か。
見た目if文多用の旧式コードに見える。
それだけで駄目なわけではないけど、CのOSSと粒度は同じだと思う。
2020/01/15(水) 08:43:43.81ID:nrskqwsi
どちらかというとCと同じ抽象度で書いても安全性が担保されることがRustのメリットでは。
より高い抽象度の操作しか許さないから安全、ってのなら他にいくらでも選択肢はあるわけで。
2020/01/15(水) 10:16:34.92ID:DPd+8sgQ
>>876
ご意見ごもっとも。
ただ、例外的とされている仕様を日常的に使用せざるを得ないのは、
言語の仕様(思想)または適用範囲(用途)を間違えているからだ。

「安全なC」を目指すのも一見良さそうにも見えるが、実際のところ、
Cが問題になるのは馬鹿が書くからであって、いわゆる「駄目なコード」はOSSには存在しない。
(正確には「駄目なコード」があるとメンテ不能となって淘汰されるから、
生き残っているOSSはメンテ可能状態=駄目なコードがない状態に保たれている)
この意味では、Cを馬鹿よけとして使っているLinusのやり方が正しい。

「非安全」だから使うなとされている機能を常用するのならRustを使う意味がまるでないし、
コーディングがしにくいだけの単なる「意識高い系ドM」でしかない。
当然、プロジェクトは沈没していく。

一方、ロシアは鉛筆を使った、に近い。
878デフォルトの名無しさん
垢版 |
2020/01/15(水) 13:15:08.87ID:eUr1BYr3
>>871
C++の話で申し訳ないけど
std::vectorとかは実装によっては
(利用者側の実装もvectorの実装も)
めっちゃ効率悪くなる罠を孕んでる
879デフォルトの名無しさん
垢版 |
2020/01/15(水) 15:26:49.41ID:vosN76E7
opensslさんから一言お願いします
2020/01/15(水) 18:02:26.14ID:lC3F4iid
>>877
どこの世界の話?
Cで書かれて開発体制もしっかりしてても
頻繁にセキュリティホールが報告されてる
OSSは結構あると思うなあ
2020/01/15(水) 21:18:04.48ID:DPd+8sgQ
>>880
Rustはどんな馬鹿が書いてもセキュリティホールが存在し得ないとでも?
多分お前はセキュリティホールが何か、すら分かってないと思うが。

むしろお前みたいな馬鹿がRust使う意味なんて全くないはず。
俺やRustの言う「駄目なコード」はそこではないし。

お前みたいな馬鹿でも分かる話をするなら、
現実として、もっと上位の記述しか出来ないPHPでもセキュリティの問題はやらかしまくってるだろ。
あれは『ホール』と呼ぶべきかどうか、という話はあるにしても、
低位の『ホール』だけ塞いだところでその上位でいくらでもやらかせるのでそれ自体に大した意味はないんだよ。
それ以前に、Rustが低位の『ホール』を全部塞いでいるかどうかなんて俺は知らんが。
あれはPHPerの頭が悪いせいにされているが、お前らがWebやったらもっと酷いことをやらかすのは確実だ。
882デフォルトの名無しさん
垢版 |
2020/01/15(水) 21:50:07.07ID:vosN76E7
あんたのいう駄目なコードの定義なんて誰も知らないだろ
2020/01/15(水) 21:53:07.43ID:JGL8Rg1T
まあ静的チェックで仕事終わりにできると思ってるバカは多いな。
そういう馬鹿が一番厄介。あの手この手でテストしない理由をこねくり回してくる。
2020/01/15(水) 22:48:54.43ID:lC3F4iid
>>881
一行目から自分が暗黙にも書いてない内容ですね
残りはゴミ
2020/01/15(水) 23:21:00.85ID:DPd+8sgQ
>>884
ではどうだと?はっきり言ってみろ。

俺の意見としては、RustとCでセキュリティガー、ってことにはならんよ。
あれは書く側の問題で、言語の問題ではない。
2020/01/15(水) 23:50:55.75ID:lC3F4iid
>>885
はっきり書いてあることと関係ないこと喚いてるだけじゃん
2020/01/16(木) 00:41:04.84ID:o+vnDRH4
>>886
日本語が不自由なら半島に帰れ
日本語が出来るつもりなら正しく伝わるように言え

Rustで書かれて開発体制がしっかりしているはずのFireFoxでも、
糞遅くてシェア落としまくりで最早ゴミになりつつあり、
セキュリティホールが存在しないって事もあり得ないと思うけど。

CとRustの対比で「セキュリティホール」を持ち出している時点で意味不明だが、
お前が言っていることに直接言及するならこうなる。
これには反論出来るのか?
2020/01/16(木) 00:43:31.18ID:AX8DDKRs
>>887
また関係ないことばかり書いて…
どっちが日本語不自由なんだか
2020/01/16(木) 00:45:07.72ID:o+vnDRH4
>>888
一応聞いておくが、>>880はお前だよな?
890デフォルトの名無しさん
垢版 |
2020/01/16(木) 01:20:17.86ID:o1pVy6eo
問題を起こさない人が書いたコードには問題がない
という主張になんの意味があるんだ
そりゃそうだろとしか言いようがない

そんな人間はいないという前提にいないならばプログラマー同士の議論にはならないだろ
891デフォルトの名無しさん
垢版 |
2020/01/16(木) 02:17:49.53ID:OG9QJoeV
>>877
お前のレスの C の部分をを他の言語にしても内容変わらないね。
つまり意味の無いレスだ。
2020/01/16(木) 05:48:47.89ID:I1VMveuP
自動車で考えると、自動運転が進むと自動車が優秀だから馬鹿が運転しても事故が起きない。

「馬鹿」は運転するなと?
「馬鹿」と言い切ってしまうから、問題がややこしくなる。感情的になるような気がする。
馬鹿除けとは、微妙な表現だ。
2020/01/16(木) 06:09:04.61ID:iXD/XJ1o
微妙だが実際linuxはそれで成功してるしな。。
馬鹿よけがびっくりするほど効果的だったという事実。
2020/01/16(木) 23:16:50.25ID:o+vnDRH4
>>892
> 「馬鹿」は運転するなと?
yes。DSL(例:Excelのマクロ)やアプリケーションレベルはやればいいが、システムレベルは止めた方がいい。

(一般的に滅茶苦茶切れると聞く)料理人用の包丁を素人が使ったら当然怪我するし、
子供に包丁を練習させるときには主婦レベルからしても切れなすぎて使えない果物ナイフ等から始めるだろ。
技量に応じた適切な道具はある。

システムレベルなんてプロの領域だから、Cすら適切に扱えない奴がやろうとするのが間違ってる。
愚直にこれ、つまり駄目なコードを目で見てrejectすることにより上手く行っているのがLinux。
RustはCすら満足に扱えない馬鹿の為にありとあらゆる補助輪を付けて
馬鹿な素人でもシステムレベルのプログラミングが出来るようになっている、
と考えるのは日本人の勘違いでしかない。
というか、どんな馬鹿でもどうにかして使って人件費を下げよう、という日本流思想が根本的に間違い。
年収を比べれば分かるはずだが、海外はざっくり2倍、つまり2倍の生産性であることを意味する。
https://qiita.com/jabba/items/72c7f9202a1a0a5616fc
といっても、ここにいるような奴は、「隣の奴より俺の方が倍働いている」「俺は平均よりは上だ」と思っているだろうし、
実際そうだとも思うが。

が、まあ、それはさておき、結果的に海外のプログラマは日本で言う「平均以上」の奴らのみで構成されているはずで、
俺らが日常的に目にしている「馬鹿」レベルはかなり少ないはずだし、結果、逆の方向、つまり、
・Cを適切に扱える奴が、もっと生産性の高い言語を使ったらどうなる?
を目指しているはずだ。だから必要であればunsafeを躊躇なく使うし、それでも問題ないわけで。
2020/01/16(木) 23:17:33.90ID:o+vnDRH4
そもそも何でもかんでも馬鹿中心に考えるのは馬鹿の思い上がりであって、
例えばGCにしても、「GCが無いとリークしまくる馬鹿の為の補助輪」ではなく、
「メモリ管理の煩わしさからプログラマを解放する」為の物であり、当然暗に「その先」を目指している。
だからそもそもCすらまともに使えない奴がRustを使うのが間違いで、
(実際どうかはさておき、目指しているところは)Rustはより生産性が高いというわけだから、
基本ラインとしては,、「Cだとメンドクセエ」「Cだと俺の理想のコードにならねえ」と思う奴が使う言語だろ。

つまり、本来は、問題を起こさないようになってから使う言語だよ、Rustは。
896デフォルトの名無しさん
垢版 |
2020/01/17(金) 00:37:23.07ID:N4X+Xwxw
そのキータには、日本人は同じレベルでも給料が安いと書いてあるようだが
897デフォルトの名無しさん
垢版 |
2020/01/17(金) 09:47:24.91ID:w7/ZzyeZ
enumがヴァリアントの最大幅とるってどういう原理?
structはCより最適化されてるよね
898デフォルトの名無しさん
垢版 |
2020/01/17(金) 11:18:32.31ID:5x//VkpE
Cのunionみたいな?
2020/01/17(金) 20:01:37.63ID:ci6pcaNH
馬鹿を自覚できてる人なら
必死の長文を連投したりはしないんだろうな
900デフォルトの名無しさん
垢版 |
2020/01/18(土) 00:49:52.56ID:LVpCcFR7
最近このスレを見始めて、過去ログから見てたんだけど、Cargoで不満言ってる人いるけど、理由って何?
単純に気になるんだけど、クソしか言ってないから分からん
2020/01/18(土) 02:06:56.11ID:PBVL2e99
あーん、actix様が死んだー
2020/01/18(土) 05:41:10.98ID:A26NF1jl
急募: actix-web 乗り換え先
2020/01/18(土) 06:25:00.35ID:MTwjFHlv
ファ!?マジでお亡くなりになってるやんけ
一体何があった?
2020/01/18(土) 07:04:10.17ID:i03lhjxa
ざっと見たところ、クソコメがひどいからactixのメンテやめるわって事かな
ベンチマーク詐欺師、バグだらけ、俺のパッチを受け入れろ
と言われて炎上したのが原因か?
2020/01/18(土) 07:05:30.30ID:5dxh/zOs
>>903
https://twitter.com/GolDDranks/status/1218153099639934976
https://twitter.com/5chan_nel (5ch newer account)
2020/01/18(土) 14:41:26.79ID:wMBhn349
なんで関係ない第三者が辞める宣言しとるんやと思ったら「辞めろ」のtypoか
ま、いうてすぐ別のフォークが誕生するやろ ハナホジー
2020/01/18(土) 20:42:42.95ID:1O2OVvd1
cargoは何でもやろうとし過ぎなのが一番のクソポイントだと思ってるけど、個人的には
・他のビルドツールと一緒に使うのが面倒
・パッケージマネージャとビルドツールが同じツールであることが非合理的
・昔は「crateはrustのコンパイル単位です」なんて戯言を抜かしていた
・rustcを改善するモチベーションが下がる
全部個人の感想だし、マンパワーが足りないならひと括りにするメリットはあったと思うけど、イケてないと常々思ってる
2020/01/19(日) 00:07:59.13ID:ZofGlu8L
以前はcargoからリンカを制御方法とか全く判らなかったけど最近出来るようになったのかな
2020/01/19(日) 06:17:00.35ID:npSn4vFb
Clangだから成功したと言えるのか?
Rustなどのモダンなシステムプログラミング言語があの時代にあればどうなったかは誰にも分からんだろ
リーナスがRustキチであっても他のプログラマとしての素質が変わらなければ成功したと俺は思うが

なんにせよ巨人の肩に乗ってマウントした気になっても万人がそれで納得するとは限らないし逆効果もあるぞ
2020/01/19(日) 06:19:04.90ID:npSn4vFb
なんか以前書き込んだはずのレスができてなくてロードしたら送信されたっぽい
>>893辺りへのレスだが恥ずかしいからROMるわ、すまんな
911デフォルトの名無しさん
垢版 |
2020/01/19(日) 09:48:12.84ID:TwfOJbH4
>>907
cargoの欠点答えてくれてありがとう
正しいcargoの立ち位置としてパッケージマネジャーの仕事だけして、今cargoがしてるビルドツールのラッパー要素を別にして、その別のでcargoとructcを単純に抽象化したら結構解決するってことかな?
2020/01/19(日) 10:13:54.83ID:L2mlhsAt
>>909
なにからなにまでずれすぎててどっからつっこだらいいのやら。。
clangとlinuxは全く関係ないし、
リーナスがrust推しだったらとかプログラムの好みからしてそれだったらlinux作っとらんしとか
どこからどこまでも間違ってるとしか言いようがない。
仮定としてできることとしたらc++テンプレートの信頼性が当時高かったらとかその程度だろう。
それでもc++を使うことはなかっただろうと思うが。
913デフォルトの名無しさん
垢版 |
2020/01/19(日) 10:31:40.67ID:PM2cmccN
LinusにRustを教えたのがアワシロイクヤ氏だったのも良かったんじゃないか。
人柄だな。
2020/01/19(日) 11:07:27.21ID:QWtapXFZ
>>909
お前は問題の本質が分かってない。
言語の問題ではなく、マネジメントの問題だ。
巨人の肩に乗ってマウントガーなんてのは、お前がコンプレックス持ちの馬鹿だからそう勘違いするだけ。
誰もそんなことしようともしていない。

駄目なコード片が混入した場合、何も保護機構がないCではプロジェクト全体が死んでしまう。
よって、どうやってそれを防ぐか、という話であって、Linusはアナログ的に「目で見てreject」をやってる。
それでLinuxは最も成功しているOSSの一つなのだから、これは結果的には正しい、とは言える。

が、当然これはデジタル的には格好悪すぎる。
よって各種言語は何とかして静的に検査をしようと、文法を拡充させてきた。
C++文法がゴテゴテになってるのも、Rustがやたらコンパイルが厳しいのもこれだ。
これで短/長期的な生産性を競おう、ということになっている。

さて、Linusの「馬鹿が書いたコードなんてイラネ」は「それ言っちゃおしめえよ」ではあるから、当然反発はされる。>>892もこれだ。
とはいえ、結果的にこれは単純には、
1. Cで問題ない奴はCで書く
2. Cでも問題ないレベル(安全装置がなくても問題ない人達)だが、Linusのやり方が気に入らないからコミットしない
3. Cでは駄目なレベル(安全装置があるから何とかなっている人達)だが、Rustならいけるかも?
で、Linuxは結果的に1だけでプロジェクトを動かしている。
その分、commit出来る人が減り、追従は遅くなるが、今のところ他よりまし、ということになっている。
一方、Rustで何かプロジェクトを起こした場合、2だけで構成するならLinuxを倒せるはずだが、3の人達の混入を防げない。
駄目なコード片の混入を防ぐのは、プルリク段階で弾くのがもっとも効率がよく、
一旦受け入れて問題が発生してデバッグだと1000倍以上の手間がかかってしまう。
よってこれはプロジェクトにとっては大問題で、絶対にやってはいけないのだが、これを防ぐことは今現在出来ない。
というか、今の言語はまだここまで進化出来ていない。
2020/01/19(日) 11:07:44.98ID:QWtapXFZ
だからこれは、長期的には「どのレベルの人まで受け入れるか」「それで十分な人数が確保出来るか」であり、
C++を丸ごと切り捨てているLinuxは相当思い切った判断だが、それでも何とかなっているし、
結果的には、全く保護機構のないCだとこれが正解だ、ということでしかない。

対してRustみたいに安全機構が付いている言語だと、そのレベルを下げられ、結果的にコミッタも増え、早く進化していけるはずで、
だからこそ進化速度が重要なブラウザをターゲットに選んだのは正しいのだが、
結果的に死につつあるのだから、確実に何かが間違っていたはずであり、
それは既に言われているが「学習曲線」、つまりそもそもチャキチャキ書けないことだろう。
1,2の人達にとっては厳しい検査なんて足枷でしかない。3を救済する為に1,2に足枷をはめていて、
結果的に総合的な生産性が落ち、プロジェクトが死につつある、というだけの話だ。

だから、個人的には、正解は「C+外部検査(リンター)」だと思っている。
今で言うとTypeScriptみたいな、チェック機構外付けの言語とかだ。
静的検査が出来る=静的検査をリンターとして外部に切り出せる、でしかないから、
静的検査メインで言語を拡張するのはナンセンスだ。
(Rustはそうではないが)
916デフォルトの名無しさん
垢版 |
2020/01/19(日) 11:13:46.05ID:PM2cmccN
アワシロさんはそうは言ってなかったな。
むしろRustは普遍的にどこでも使えると説いてた。
917デフォルトの名無しさん
垢版 |
2020/01/19(日) 11:19:38.67ID:PM2cmccN
Rustは銀の弾丸足りえると世界の重鎮が口をそろえるし、俺はお前よりアワシロイクヤ氏を信じるね。
2020/01/19(日) 11:52:50.23ID:7W3/Ww9S
・論拠と解釈がオレオレ過ぎ
・安全性に対する理解が浅すぎ
・プロジェクトの成功/失敗に対する見識が甘すぎ
・面白くないくせにレス長過ぎ
2020/01/19(日) 12:13:02.49ID:xMKry/BQ
そもそもFirefoxのほとんどはC++なんだから、言語のせいにしたいならC++のせいってことでは。
2020/01/19(日) 12:39:52.36ID:L2mlhsAt
まあlinusが良く言ってるようにじゃあそれで作ってみれば?って話なんだわな。
そして誰も作らないというのが答え。
2020/01/19(日) 13:24:12.12ID:QWtapXFZ
>>919
成功したら俺の手柄、失敗したら相手のせいか。
さすがバヨク御用達言語だな。

Rustコミュニティの問題は>>905に典型的に現れているが、(なお俺はGitHubのactixのreadmeも読んだ)
> 「つまらないPRだな」と
> 上から目線のコメントを書き、
> 関係のない(?)人から「そんな態度でお前にRustを書く権利はない、辞めろ」と怒られて
他でも言われてるとおりSJWの巣窟になってる。
これは明らかに防げた問題でしかないだろ。

これから売りになる(はずの)モジュールを別言語で、というのはもっと慎重に行うべき判断で、
比較するとしたら、
・servoをRustで書いた今のFireFox
・servoをこれまでの言語(多分C++)で書いたFireFox
なんだよ。単純には人数的に多いC++を切ってRustを入れたのだから、これだけで被害が出る。
そしてそれを上回る物をRustが持っているか、といえば、ない。結果、沈没してるだけ。
Rust自体に意味がないか、時期が早すぎたかのどちらかで、どちらかは今後確定する。
それとは別に、コミュニティがおかしな方向に腐っている、というのは既に発生しているようだが。
2020/01/19(日) 14:26:00.08ID:FAn8lf8z
> ・面白くないくせにレス長過ぎ

これなw
923デフォルトの名無しさん
垢版 |
2020/01/19(日) 15:56:33.65ID:ehZNNwbS
また禿の話してる
よく飽きないな
924デフォルトの名無しさん
垢版 |
2020/01/19(日) 17:14:22.99ID:TwfOJbH4
servoって失敗してるの?
根拠かソース欲しいな
2020/01/19(日) 17:40:01.25ID:QWtapXFZ
>>924
信者には成功と見えるのは理解した
926デフォルトの名無しさん
垢版 |
2020/01/19(日) 17:59:29.14ID:TwfOJbH4
>>925
servoの現状知らないから聞きたかっただけなんだけどなぁ・・・
他人を勝手に敵と思って攻撃するような人間で君(QWtapXFZ)を信頼できると思うのかな、他の人は。
長文先輩は興味なかったけどキモいな
2020/01/19(日) 17:59:49.13ID:L2mlhsAt
servoのコード見る限りはrustで書く意味なくね?って感じだがな。。
ほとんどunsafeコードだし。
928デフォルトの名無しさん
垢版 |
2020/01/19(日) 18:31:53.27ID:PM2cmccN
Rustはコンパイルを通ればバグが無いことがある程度保障される。
それがC++やJavaに対するアドバンテージ。
2020/01/19(日) 19:37:27.07ID:QWtapXFZ
>>928
それHaskellも言ってたけどな。

まあ静的検査で出来るところは静的検査でやるべきなのは事実。
C++もそれを目指してはいるが、結果的にグチャグチャになっている。
そしてRustもそれを目指してはいるが、
結果的に「Cだと全く問題なく動く、バグのないコード」でもコンパイルが通らずに苦労してるわけだろ。
それじゃそもそも話にならんだろ。
C++なら「やらない」という選択肢はあるが、コンパイルが通らないようでは回避しようがない。
そして全員に「Rust流」を強制することになり、これがSJWが蔓延る遠因なのかな、とも思うが。

Javaが良いとは言わんが、最も成功している言語であるのも事実だよ。
そこはわきまえた方がいい。今のRustなんてJavaからするとゴミ以下だ。

いずれにしても、俺は静的検査はリンターとして分離出来ると思っているから、
そこに差別化要因を求めるのは間違いだと思ってる。
コミュニティが機能していれば、本当にRustの静的検査能力が素晴らしいとなれば、
リンターとしてC++やJavaやPythonにポーティングしようとする奴は必ず出てくるし、技術的にも大して問題ない。
その後で何も残らんだろ、Rustには。
2020/01/19(日) 19:48:55.59ID:EjNCf+Xg
RustだJavaだとか比較する以前に
ちゃんとプログラ厶書いたか怪しいレベルなのがわかる
931デフォルトの名無しさん
垢版 |
2020/01/19(日) 20:40:52.98ID:TwfOJbH4
長文先輩がコーディングするわけないじゃん、机上の空論が大好きだから
2020/01/19(日) 21:35:55.76ID:K0reTlt5
Cを問題なく書く人がRustのコンパイル通らないから足枷になっているという議論破綻しているような
潜在的の問題になりうるコード書いているからコンパイル通らないわけで
プログラムは動けば良いわけじゃないよね
2020/01/19(日) 22:16:57.63ID:L2mlhsAt
で、そういうコンパイルエラーが生じた際の処置の仕方に問題が起きやすいわけだよ。
バカだととくにね。
資源の解放タイミングなんかはだいぶグローバルな構造によってるわけで
コンパイルエラーのときに気づくようなバカがどういう修正を行うかだいたい予想はつくわな。
2020/01/19(日) 23:10:53.79ID:QWtapXFZ
>>932
C書ける奴がRustを手こずる理由は、寿命管理の戦略が根本的に違うからだよ。
正確に言えば、Cの場合は
A. ブロックスコープと連動
B. 投げ捨て
のどちらかが大枠の戦略だけど、ちゃんとCやる人ほど殆どAでやっている筈。
Rustはブロックスコープです、と言っておきながら実はBを要求するから戸惑っているように見える。

ただ、なら最初からBで組め、というのは全くその通りで、
だから俺は「Rustなんて簡単さ」という奴が出てこないのも若干不思議に思っている。
とはいえJavaScriptも「プロトタイプが分からんからクラス入れろ」
「非同期では組めないからコールバック地獄ガー」となる奴等ばかりだから、
「人間は一度成功したらそのやり方にこだわってしまう」とは聞くが、俺の想像以上にそうなのだろう。

ただまあ、実際のところ、Cの場合は
> 資源の解放タイミングなんかはだいぶグローバルな構造によってるわけで (>>933)
の通り、その上位でそもそも「資源管理が難しくない構造」にしてしまうから、リークに困るって事はない。
実際、素人が作ったアプリでも、リークして困るって物は存在しないでしょ。

とはいえ、この「下部構造の為に上部構造をいじる」ってのはプログラミング理論としては最悪で、
これを何とかして回避しようとC++含めていろいろ努力してきているけど、
俺が見る限り今のところGCが一番ましな戦略だと思うけど。

ま、いずれにしても、C書ける奴もRustに手こずっているのは事実だよ。
それはググれば分かるはずだし、理由は上記の通りで、言い換えると、
C流でやろうとしてもRustは通さないから。
ただ、資源戦略はBよりもAの方が適切な場合が多く、デフォでB強制なのは根本的に間違っている気はするが。
2020/01/19(日) 23:55:03.54ID:EjNCf+Xg
Cすら書いたことあるか怪しいな
936デフォルトの名無しさん
垢版 |
2020/01/20(月) 03:49:44.77ID:KSbNzMqr
LinuxがRustで書き直される時代に何言ってんだか。
937デフォルトの名無しさん
垢版 |
2020/01/20(月) 04:11:09.68ID:YZhtkMgR
>>936
まじでそんな動きあるの?
938デフォルトの名無しさん
垢版 |
2020/01/20(月) 05:00:13.14ID:KSbNzMqr
んなことも知らんと議論してたのか。
939デフォルトの名無しさん
垢版 |
2020/01/20(月) 05:10:07.77ID:YZhtkMgR
ただの妄想じゃないの
940デフォルトの名無しさん
垢版 |
2020/01/20(月) 05:15:03.08ID:KSbNzMqr
俺はあわしろいくや氏を信じてる。
2020/01/20(月) 06:20:52.90ID:C5W07UVU
>>937
>>852
2020/01/20(月) 06:59:38.41ID:Ue7v6gdS
redoxをlinuxの書き直しと言うのはさすがに無理がある
2020/01/20(月) 09:40:48.70ID:Un63cF9L
信者なんてその程度
2020/01/20(月) 09:50:44.62ID:jQa3q5cx
ドライバーをRustで書くという話にLinusが
切れてないという程度
2020/01/20(月) 10:53:33.32ID:NEzbRv6D
いずれにしろC/C++のような不安全な言語は極力避けようと言うのが世界的な流れ
2020/01/20(月) 20:12:40.94ID:dqQuCzGx
別に切れちゃいないが「まあ無理だろw」みたいな感じだろね。
https://www.youtube.com/watch?v=CYvJPra7Ebk
こういう言語でなんとかしようって馬鹿な話はSIerがさんざんダメだってことを証明してるのに
バカはまだこだわってるんだな。
2020/01/20(月) 20:28:06.68ID:tbWOohPK
でも使う言語にこだわらないでいると、化石みたいな生産性で競合と戦うハメになるよ
948デフォルトの名無しさん
垢版 |
2020/01/20(月) 21:33:20.43ID:5waZG120
SIerなんてそもそもJava, PHP(笑)でゴミみたいな質のソースと、ゴミみたいなレガシー設計を量産するのが関の山だろww
2020/01/20(月) 21:57:55.02ID:cy4NQj+h
日本なんて情弱経営者ばかりだから数字さえ良ければ許されるだろ
実際はゴミクソの低能率作業が横行していようがどこ吹く風だ
2020/01/20(月) 22:12:00.69ID:sWdHB/Bv
ゴミを作れば片付ける必要があるし、作り直しもあるから金になる
951デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:23:05.21ID:KSbNzMqr
それは良い考え。
952デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:50:52.96ID:lnEeuZyw
actix-webの件はどうなるんかな
Rustが原因なわけじゃないけど、コミュニティの問題として見られるだろうし、使ってる側としては気が重い
953デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:55:48.60ID:lnEeuZyw
今見たらリポジトリ復活してた
2020/01/20(月) 23:27:00.65ID:HxwZGjH+
別の人が引き継ぐみたいだね
2020/01/20(月) 23:44:36.38ID:Y1i1RW21
MSはサポートしないの?
956デフォルトの名無しさん
垢版 |
2020/01/21(火) 11:08:07.76ID:tYXdVzB6
むしろMSがサポートするの嫌だろ
957デフォルトの名無しさん
垢版 |
2020/01/21(火) 12:35:10.79ID:USbDfMqQ
>>948
まさに使い捨てコーダーωωω
https://www.youtube.com/watch?v=7VH-N-dsq3Y
2020/01/21(火) 15:22:48.61ID:KlYj5Sls
>>950
社会的に見たらいずれにしろマイナス
2020/01/22(水) 04:33:49.88ID:/l43RMQj
>>955
そもそも前メンテナがMS社員だぞ
2020/01/22(水) 14:52:21.69ID:rj2HkyIb
>>959
メンテナがMS社員で
MS内部でもactix-webをproductionで使うプロジェクトが進んでた
そういう状況でunsafe叩きに嫌気が指してメンテナが降りたのに対して
MSはサポートに乗り出さないのだろうか?

と書けば理解できるかな?
961デフォルトの名無しさん
垢版 |
2020/01/22(水) 16:14:36.89ID:Q1SWDCUb
MS社員はろくなのいないよな
メンタル弱かったらOSSすんなよ
2020/01/22(水) 17:57:54.25ID:P151XVeS
一人がそうだからって全てそうと言える頭どうなってんだろうな
2020/01/22(水) 19:23:08.32ID:Zee9zwDz
Rust学べばCも学んだことになるだろうか
2020/01/22(水) 19:24:15.52ID:rFx4FWy6
天文学者と物理学者と数学者がスコットランドで休暇を過ごしていた。列車の窓から眺めていると、平原の真ん中に黒い羊がいるのが見えた。

天文学者:なんてこった!スコットランドの羊はみんな真っ黒なんだね。
物理学者:違う違う。せいぜい何匹かが黒いだけさ。
数学者:(天を仰ぎながらやれやれという調子で、抑揚を付けて)スコットランドには、少なくとも1つの平原が存在し、そこに1匹の羊が居て、さらにこっち側の片面が黒いということが分かるだけさ。
2020/01/22(水) 19:30:05.28ID:uoDMOHZt
>>963
いいえ
Cの真髄はメモリ破壊のデバッグにあります
2020/01/22(水) 20:24:51.49ID:OSofFadI
rust,宗教化しとるな。
2020/01/22(水) 20:34:35.15ID:Zee9zwDz
>>965
メモリセーフなRustでは不可能な(あるいは可能だが困難な)ことがCなら出来るって意味?
968デフォルトの名無しさん
垢版 |
2020/01/23(木) 13:06:23.52ID:VWfJLmDE
Cを完全に理解していてCで完全なコードが描けるならRust要らん
逆は無理
2020/01/23(木) 13:10:54.97ID:XbPKjga7
Cで完全なコード書ける人いるのかという問題
970デフォルトの名無しさん
垢版 |
2020/01/23(木) 13:12:17.92ID:qWVF2TJJ
いるだろ
2020/01/23(木) 14:25:07.96ID:Mmo4oq/r
何万行書いても一切ケアレスミスしない人とかもはや人間ではないのでは…
972デフォルトの名無しさん
垢版 |
2020/01/23(木) 14:58:11.16ID:77XEoAHk
人の命がかかってる以上、高々数万行でミスを犯すわけにはいかないだろ。
2020/01/23(木) 15:25:12.24ID:s8tAWRMy
そんなクリティカルなところにCなんて不安全な言語は使われない
2020/01/23(木) 15:46:41.21ID:9sgUs0f4
完全な仕様が書けるなら
その仕様を完全にテストすることも可能だろうし
その範囲内で完全だと言えるコードは書けるだろう

それは仕様で定義されてないからUBですねー、バグじゃないっすよー
あの時はそれで完全だと思ってたんすよねー(๑´ڡ`๑)w
975デフォルトの名無しさん
垢版 |
2020/01/23(木) 16:27:27.15ID:77XEoAHk
俺は完全な仕様が書ける。
2020/01/23(木) 17:33:46.14ID:BJTKYILD
「人間の能力は有限であるし、ミスもする」と言う認識がない奴ほど危険
このタイプ日本人に結構居るんだよな
2020/01/23(木) 21:06:17.64ID:9sgUs0f4
>>975
じゃ試しに君が考える「完全な仕様」の仕様を定義してみて
2020/01/23(木) 22:14:21.71ID:1UIl+AJY
「俺は気を付けて書いてるから絶対ミスしない」なんて認識の人が書いたコードに命預けたくないなぁ。
2020/01/23(木) 23:24:43.12ID:DK2TOstn
入力を受け付けず、処理をせず、出力をしない
2020/01/23(木) 23:42:34.70ID:cHzm9I9L
そこまで安全性気にするならGC使えや。
バカがrust使うよりもよっぽど安全だぞ。
2020/01/23(木) 23:47:09.63ID:nX/KPrtD
>>978
でも「俺は神様じゃないからミスはあるかも」なんて認識の人が書いたコードにも命預けたくはないな。
2020/01/23(木) 23:55:44.60ID:9sgUs0f4
>>979
一応突っ込んでおくけど
「完全な仕様とは何か」ってことを
仕様として定義してみてって話だぞ
983デフォルトの名無しさん
垢版 |
2020/01/24(金) 00:16:37.07ID:rwHFQKuH
>>981
そんな認識の医者に命預けてるだろ
私失敗しないので、なんて無責任なこと言う医者はいない
2020/01/24(金) 01:27:12.03ID:g1BGl0hu
ゲーデルの不完全性定理により以下略
2020/01/24(金) 01:38:54.34ID:+Rr3vO1D
「ミスしてるかも」と思うからテストするんじゃないの?
絶対ミスしないなら、書いた瞬間にテストなしでリリースできるはずなわけで。
986デフォルトの名無しさん
垢版 |
2020/01/24(金) 01:48:15.59ID:M35o3kEk
そんな心の弱い人に任せられないわ。
まず精神科受診してきて。
2020/01/24(金) 07:59:29.01ID:A/8ugPLP
「私は強い、必ず成功する。バグについて心配するのは誤りである」
「日本人はもともと繊細なのである。これだけ注意深さを持ちながら、バグに困るなどというのは、ありえないことだ」
2020/01/24(金) 08:03:08.74ID:HOssbx9V
http://plv.mpi-sws.org/rustbelt/
みたいに、rustその物と標準ライブラリを論理的な正当性を確認しようとしているプロジェクトもあるよ。
また、coqで書いたものをrustに変換する
https://github.com/pirapira/coq2rust
というのももあった。
2020/01/24(金) 08:03:15.00ID:e4qsn6ol
じゃあ「俺は気を付けてテストしたからミスは残ってない」ならどうだろう
990デフォルトの名無しさん
垢版 |
2020/01/24(金) 08:06:37.28ID:rwHFQKuH
テストではバグが無いことを証明できない
991デフォルトの名無しさん
垢版 |
2020/01/24(金) 09:24:09.09ID:NJOcoGsq
形式証明って流行ってんのかね
992デフォルトの名無しさん
垢版 |
2020/01/24(金) 11:48:17.98ID:9oO1hUHl
Rust part8
http://mevius.5ch.net/test/read.cgi/tech/1579834072/
993デフォルトの名無しさん
垢版 |
2020/01/24(金) 12:00:03.19ID:ytRnz1Ft
>>978
>>981
アポロが50年間月へ行くのを諦めてる(躊躇してる)のもそれが原因らしいな
994デフォルトの名無しさん
垢版 |
2020/01/24(金) 12:01:25.77ID:ytRnz1Ft
>>979
>>982
kneet最強ですね
2020/01/24(金) 20:21:57.21ID:f1L6KzBl
失敗しないと言い張る糞医者だったらセカンドオピニオンを薦める医者のが信用できるわ。
2020/01/24(金) 20:47:01.10ID:n3CLQrIG
>>992
サンキュウー
997デフォルトの名無しさん
垢版 |
2020/01/25(土) 09:23:43.44ID:yPlwm7j6
埋め
998デフォルトの名無しさん
垢版 |
2020/01/25(土) 09:24:03.41ID:yPlwm7j6
うめ
999デフォルトの名無しさん
垢版 |
2020/01/25(土) 09:24:14.79ID:yPlwm7j6
ウメ
1000デフォルトの名無しさん
垢版 |
2020/01/25(土) 09:24:30.39ID:yPlwm7j6
ume
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 194日 9時間 52分 43秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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