X



Rust Part7
レス数が1000を超えています。これ以上書き込みはできません。
0003デフォルトの名無しさん
垢版 |
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).
0004デフォルトの名無しさん
垢版 |
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」で検索すれば?
0005デフォルトの名無しさん
垢版 |
2019/07/15(月) 23:08:24.27ID:VplRLaA9
32bit mingwで64bitのコンパイルしようとした時のエラーの話だからrust付けると出てこないだろうな。
*-pc-windows-gnuはツールチェーン含んでるから余計な環境でビルドせずに含んでるもの使えばいいんだよ。
0006デフォルトの名無しさん
垢版 |
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
みたいに関数を介せば出来ると思うけど
0008デフォルトの名無しさん
垢版 |
2019/07/16(火) 19:17:48.80ID:HPUIeONI
できない
00106
垢版 |
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と実装されているみたいですね。こんな書き方しかないのかな
0013デフォルトの名無しさん
垢版 |
2019/07/16(火) 22:30:18.97ID:p9rPVFUU
マクロ使えば見た目は似せられるかも?
bit! {
od = 0;
od.b0 = 1;
}
みたいにしてASTいじって関数呼び出し形式に変換する感じの。
0014デフォルトの名無しさん
垢版 |
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
001514
垢版 |
2019/07/17(水) 00:29:17.38ID:OvMw+j5/
すみません。誤爆しました。14は無視してください。
0016デフォルトの名無しさん
垢版 |
2019/07/17(水) 04:37:31.38ID:0r3gt+vm
>>10
配列でいいじゃん
00196
垢版 |
2019/07/17(水) 17:35:45.39ID:rYwqYjNV
>>12
一応no_std予定なので・・・

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

>>16
あ、そうか。Index、IndexMutを書けば[]と[]=で読み書きできるようになりそう。やってみよう
0022デフォルトの名無しさん
垢版 |
2019/07/17(水) 21:24:51.41ID:0r3gt+vm
>>19
enum Bit { On, Off }
let byte = [Bit::Off; 8]
こんなんじゃダメけ?
0023デフォルトの名無しさん
垢版 |
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
0024デフォルトの名無しさん
垢版 |
2019/07/18(木) 05:56:44.97ID:5vDlE6vb
(1) .gitignore

に書かれてないやつ
0025デフォルトの名無しさん
垢版 |
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
0026デフォルトの名無しさん
垢版 |
2019/07/18(木) 22:23:30.40ID:cexb+rGl
>>25
普通はmake不要でcargoのみ。そのサイトはどこかから持ってきたアセンブラをnasmするのにmakeつかってるだけっぽいのでrust関係ない。
0027デフォルトの名無しさん
垢版 |
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が行ってきた取り組みを今後も紹介していくという。
00296
垢版 |
2019/07/19(金) 03:55:32.80ID:vDoYj/5c
参照しか返せない状態で計算結果を返すって方法ってあるんだっけ。通常なら値を返すように宣言すればすむ話ですが
Indexは参照しか返せないようです。たとえば*addr >> idx & 1の結果を返したいです

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

>>22
ググるとそのような例が出てきますね。Rust的に正論だと思いますが元となるハードウェアのマニュアルでは
0:○○になる
1:××になる
みたいな表記が主流に見えます。ここから外れた表現の強制は言語の安全性とは別なところでリスクを抱えるように思います
0030デフォルトの名無しさん
垢版 |
2019/07/19(金) 06:34:47.15ID:hHIdkAH0
>>29
ほんなら0と1でプログラム書けやタコスケ
プログラミング言語ってのはハードウェアを抽象化するためにあるんだぞ
00326
垢版 |
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やアセンブラで低レベルの処理をする場合は多用される書き方だと思いますが結構危なっかしいと思います
0036デフォルトの名無しさん
垢版 |
2019/07/19(金) 21:05:45.56ID:g6GhiJm/
義務教育受けてたらwhy rustの訳だろうなってすぐ分かるよなたとえ翻訳かけてたとしても
00376
垢版 |
2019/07/19(金) 21:40:27.14ID:EuFVnXjl
Index、IndexMutが何でこんな仕様なのかと思ったらC++の[]に合わせたのか
C++ぽく使えるがそれ以外の使い方は想定されていないと

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

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

こういう理由

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

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

皆さんc/c++の置き換えとしてrustやってるの?
自分は関数型言語由来の機能が多くてネイティブで動く言語が欲しい
そういう理由でrustに手を出す人って少ないのかな
rust製のcliツールとかめっちゃ多いし、低レイヤのためだけにrustやってる人のほうが少ないんじゃないかな
0050デフォルトの名無しさん
垢版 |
2019/07/25(木) 21:54:26.88ID:6TAkPITO
難しいからなんなんだよってかんじ
勉強すればそのうち使えるようになるんだからどうでもいいことじゃん
俺はPHPの置き換えで使ってるけど
0051デフォルトの名無しさん
垢版 |
2019/07/25(木) 22:40:39.89ID:PNoIdPh5
rust, c++より少しはマシくらいの言語だわな。
実装系含めたらまだc++のがマシになるが。
0052デフォルトの名無しさん
垢版 |
2019/07/25(木) 22:50:06.02ID:w/leXg8D
C++がましってどのへん?学習コストはどうしようもないとして、学習してしまった今となってはC++に戻る気とか一切しないんだけど。
0054デフォルトの名無しさん
垢版 |
2019/07/26(金) 18:13:40.72ID:a+EwZNsG
ながいから要約たのむ
0061デフォルトの名無しさん
垢版 |
2019/07/27(土) 17:07:58.74ID:lIukHdgf
>>58
zigはGCあるからダメ
0062デフォルトの名無しさん
垢版 |
2019/07/27(土) 23:21:52.36ID:YuLtVEnV
rustがリアルタイムで使われてるの聞いたこと無いんだけど
どうせgcあるから駄目とか言ってるやつはメモリの開放タイミングが
予測不能でも致命的にならない事しかしてないんだろ?
0067デフォルトの名無しさん
垢版 |
2019/07/28(日) 09:18:55.32ID:t62k8itt
リアルタイムでってなに?
目の前でrust書いてくれるってこと?
0070デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:16:23.87ID:G72VT/2G
GCは結局メモリ以外のリソースはまともに管理できなくて、自分でデストラクタ呼ぶはめになるのがつらい
0074デフォルトの名無しさん
垢版 |
2019/07/28(日) 15:01:36.78ID:+9hlsOXW
まだ実装終わってないけどnightlyなら一応使えるっぽいよ

#![feature(const_generics)]
0075デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:04:25.79ID:5UHV96py
高機能なマクロもクロージャも使えるのだから値パラメータなジェネリクスは冗長
なキモス
0077デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:22:39.84ID:5UHV96py
んまー値パラメータなクラステンプレートを実現しようとしたらマクロでは済まないのか
そうか
0078デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:31:07.73ID:jklii+Ft
>>70
GCは全く関係ないがな。
try使うとかwith使うとかgoならdefer使うとかそういう話だろ。
オーバーヘッドガー言い出すやつって
ただまともにメトリックとるスキルがないってだけだろ。
0080デフォルトの名無しさん
垢版 |
2019/07/28(日) 20:15:28.70ID:60uqYffv
>>78
RustやC++のスマートポインタならスコープ抜けたときのデストラクタできれいにリソース解放できるけどGCだとできないね、って話なんだが。
それを部分的に解決する方法としてC#のusingとかがあるけど、関数を跨ぐような寿命の長いリソースには使えない。
try-finallyやGoのdeferなんて、絶対書き忘れてリソースリークするパターンだろ。
0086デフォルトの名無しさん
垢版 |
2019/07/28(日) 23:01:30.64ID:jklii+Ft
>try-finallyやGoのdeferなんて、絶対書き忘れてリソースリークするパターンだろ。
一理あるが、資源を正しく管理するデストラクタ書くのそんなに楽じゃねーぞ。
舐めすぎだわ。
0087デフォルトの名無しさん
垢版 |
2019/07/28(日) 23:39:20.86ID:G08azDw2
>>86
他言語でもさんざん書いたからデストラクタの難しさは知ってるつもりだけど、
ライブラリ作成者が注意深く書いたデストラクタをみんなで使うのと、各自finallyやdeferを正しく実装しましょう、なら前者がましでは?
0088デフォルトの名無しさん
垢版 |
2019/07/28(日) 23:58:54.12ID:5UHV96py
ちょっデストラクタで開放処理を書けない資源とかもはやプロセスをkillするしか、
0089デフォルトの名無しさん
垢版 |
2019/07/29(月) 00:07:34.10ID:9xGY09/M
Vecはただのfat pointerのnewtype patternだからアラインが合えば自動ベクトル化できるんじゃないの?

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

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

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

どこにかいてあるかわかるひといますか?
0099デフォルトの名無しさん
垢版 |
2019/08/01(木) 00:10:45.06ID:zC1laZAw
効率的なTreeってなに?
代数的データ型なら普通はsum type(rustのenum)で書くけど。
0100デフォルトの名無しさん
垢版 |
2019/08/03(土) 11:04:41.72ID:RLY9hdXo
???@???
Rustとの戦いにつかれたのでDを触った次第

↑RustでコンパイラとかVM作ってる人のツイート
Rustってそんなに難しい?
0101デフォルトの名無しさん
垢版 |
2019/08/03(土) 13:51:49.63ID:aqiFUikh
配列で親ノードIDや子ノードのID持たせるとかじゃなかったか。
所有権引っかからんようにするとそんな感じになる。
0103デフォルトの名無しさん
垢版 |
2019/08/05(月) 09:41:10.02ID:VmFTmeN2
>>100
面倒くさい
0105デフォルトの名無しさん
垢版 |
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のアンチパターンで大々的に書くことを余儀なくされる危険な言語
0110デフォルトの名無しさん
垢版 |
2019/08/08(木) 05:27:28.23ID:FTUf1Nuq
いや正しいていうかこの話にvalue typeは関係無い(返そうとしているStringは参照型
間違っているというならreturn mPath以外の方法でgetCWD()からStringを返してみると良い
0112デフォルトの名無しさん
垢版 |
2019/08/08(木) 07:38:49.45ID:097LZjtE
組み込みの値型以外は全て参照型で管理されてる事が理解できてないって事?
0113デフォルトの名無しさん
垢版 |
2019/08/08(木) 13:27:41.32ID:+iXEwaHu
Javaにおける参照はオブジェクトへのポインタのことで、RustやC++の参照とは違う概念なのだよ
0115デフォルトの名無しさん
垢版 |
2019/08/08(木) 14:49:51.48ID:bpfrenBa
何言いたいのかさっぱりわからん
コンパイルエラーになるがやりたいことを書いてくれ
0117デフォルトの名無しさん
垢版 |
2019/08/08(木) 15:54:03.06ID:YYsAu0ua
皮肉や冗句を言うにも一定のセンスと知能が必要と言う証左
0118デフォルトの名無しさん
垢版 |
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
藻前は顔だけは賢そうだな
0120デフォルトの名無しさん
垢版 |
2019/08/08(木) 22:49:15.66ID:FTUf1Nuq
で、Javaでは何で>>105みたいな変なことになるかというと、参照の参照をとることができないため
ここで参照とは何かというと>>113の前半部で良い
参照自体はレジスタに代入したりスタックに1語で積める値型の一種とみなせる
C#ではrefキーワードにより、参照の参照をgetCWD()に渡すことができる
Javaは参照しかgetCWD()に渡せない。よって、CWDPathみたいなクラスの参照を渡してやって、
そのクラスがメンバとして所有する参照を上書きするという手段で返さざるおえない
0121デフォルトの名無しさん
垢版 |
2019/08/08(木) 22:54:58.10ID:FTUf1Nuq
>>119
参照型を引数として関数に渡すしくみはCで完成しているのだから>>119の言い様では批判になんね
Cではポインタやんけというのは本質ではない
参照自体はレジスタに代入したりスタックに1語で積める値型の一種とみなせる(>>120)
なのであって機械語レベルでみたらオブジェクトを指すポインタに他ならない
で、Java、C#、C++、Go、Rustいずれも参照型の関数渡しは参照をスタックに積んで渡すモデルであることは変わりない
0124デフォルトの名無しさん
垢版 |
2019/08/09(金) 00:50:26.80ID:3pQudWDx
>>118
最初説明したこととまるで違うじゃないか。用語は正しく使えよ。

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

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

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

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

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

お前がまず混乱してね?
0144デフォルトの名無しさん
垢版 |
2019/08/10(土) 18:38:36.22ID:EB3chQuK
×単にポインタ渡してるだけなのに
○単にポインタを渡してるだけなのに

失礼、こう書いたほうが良かったねこの場合
0145デフォルトの名無しさん
垢版 |
2019/08/10(土) 18:39:45.26ID:EB3chQuK
×ポインタを値渡してるだけなのに
○ポインタを値渡ししてるだけなのに

こっちは完全なるタイプミス
0146デフォルトの名無しさん
垢版 |
2019/08/10(土) 18:41:40.47ID:SA5rOGgq
佐渡さんと書いて、サドさんと読む人と、サワタリさんと読む人がいるから、紛らわしい!
0153デフォルトの名無しさん
垢版 |
2019/08/12(月) 07:11:17.23ID:SKKCu+1X
RustとかC/C++は機械語までコンパイルするから速いんじゃなくて無駄なことをしないから速いのでJITとかそういう問題ではない
0154デフォルトの名無しさん
垢版 |
2019/08/12(月) 09:05:01.58ID:QXujyVaw
JITコンパイルで性的コンパイル結果より速くなるというのは都市伝説
JITのしくみを考えたらワカル

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

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

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

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

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

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

rubyとかpythonとかからrust始めた人もいるみたいだし気合入れて頑張ってみますか
0172デフォルトの名無しさん
垢版 |
2019/08/17(土) 12:01:03.69ID:ZxqGKdv4
なんでこんなめんどくさいことやってんだ
というのを理解するにはC/C++の知識があると早い
0174デフォルトの名無しさん
垢版 |
2019/08/17(土) 13:26:05.40ID:ON6K/mb3
苦しめられたほうがラクなんよね
一見苦しい縛りの結果、整理された構造という一粒の宝石を残してくれる
0175デフォルトの名無しさん
垢版 |
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 が通りません

この状況に対応しているエディタを紹介してくださると大変助かります
0178デフォルトの名無しさん
垢版 |
2019/08/18(日) 17:36:07.73ID:j9EKYeL3
助かります
ありがとう
0180デフォルトの名無しさん
垢版 |
2019/08/20(火) 15:27:32.97ID:hKY2TKrp
RustのArcとかBoxとか複数組み合わせてちゃんと動くってイメージが湧かないんだけどそんなもん?
0185デフォルトの名無しさん
垢版 |
2019/08/21(水) 22:17:56.76ID:zqKd/4GT
嘘乙。
違うというなら証拠を出せ。
0187デフォルトの名無しさん
垢版 |
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"を使う

ということをやりたいのですが、エラーでビルドできません。
どのように書けばいいでしょうか?
0188デフォルトの名無しさん
垢版 |
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を変数に束縛して所有権取らせてから、改めて参照を取得するかしないとダメ
0190デフォルトの名無しさん
垢版 |
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++を用いた安全な大規模システムの開発はムリゲーとし
同業他社の方針やツールを認め導入してしまう。日本の大手システム屋にこういう事を出来るところってあるんだろうか
0191デフォルトの名無しさん
垢版 |
2019/08/29(木) 20:39:56.79ID:7sVXLGAA
合理的ね。。
「戦うプログラマー」読む限りはそうは思えんが。
都合のいいとこだけ切り取ってるな。
むしろ無理やり言語使わせるとかもろSIerのやり口だろ。ばかすぎる。
0192デフォルトの名無しさん
垢版 |
2019/08/29(木) 21:33:28.37ID:Bp0lvm+/
闘うプログラマーと言えば当時からC++は魔境過ぎてヤベェみたいな記載があって笑った記憶ある。
0193デフォルトの名無しさん
垢版 |
2019/08/30(金) 12:23:15.14ID:Q74gFuRN
無理矢理使わせてるということは今後出てくるMSプロダクトは全部Rust製になるのか?
0195デフォルトの名無しさん
垢版 |
2019/08/30(金) 13:06:45.92ID:KMS/yKjh
JavaScript → TypeScript(型チェック) とか C++ → Rust(借用チェック) みたいな
用途・特性が似通った言語でより安全な方を使わせるってのは、単なるリスクマネジメントであって
SIerのナンデモJava事案とは違うと思う
0196デフォルトの名無しさん
垢版 |
2019/08/30(金) 15:21:18.59ID:cnXxJRuX
ポストC/C++の座にRustを据えるかどうかはともかくC/C+お払い箱は確定事項じゃね
つーかMSRCの記事の何処にも無理矢理使わせているなんて書いていないぞ?
0197デフォルトの名無しさん
垢版 |
2019/08/30(金) 15:28:58.11ID:GEn/r+mZ
Cは永遠に不滅です
C++は知らん
0198デフォルトの名無しさん
垢版 |
2019/08/30(金) 18:16:53.32ID:XBvkkCPm
Rust学び始めたけど噂通りむずい...
やりたいのはcli/tuiとかwebなので習得が無理そうだったら大人しくGoを使うことにする...(´・ω・`)
0203デフォルトの名無しさん
垢版 |
2019/08/31(土) 00:42:16.72ID:aUMbNTSE
ちゃんとしたmallocを作ること自体が難しいのであってCかRustかは難しさへは影響しない
0204デフォルトの名無しさん
垢版 |
2019/08/31(土) 15:15:02.18ID:j8rV2wO1
GCはクソ!だからRust最高!
とイキがってた奴がボローチェッカにボコボコにされてGCの良さを体感するまでが通過儀礼

どっかにドリルないですかね。>187みたいな問題がサラッと解けるようになりたい
0206デフォルトの名無しさん
垢版 |
2019/08/31(土) 20:44:28.04ID:BqsPi00f
>>187 みたいな感じのはリファレンス読んで関数やメソッドが参照返すのか値返すのか調べるだけ
0207デフォルトの名無しさん
垢版 |
2019/08/31(土) 21:13:02.78ID:apjBRhon
Rustはボローチェッカーのご機嫌取りが必要だが
GCある言語で性能が欲しいとか言い出すとGCのご機嫌取りが始まる
0209デフォルトの名無しさん
垢版 |
2019/08/31(土) 21:23:30.02ID:z8QlYv6E
所有権という概念をつかむのに苦労はしたけど、結果的にはプログラミングを簡単にしてくれていると思う
0211デフォルトの名無しさん
垢版 |
2019/09/01(日) 01:29:28.40ID:sYwYgS29
GCが糞っていうより
糞実装のGCが多過ぎて
大抵の人はGCで糞な思いをするから
GCが糞だと言う誤解というか評判になってるだけ
実際糞だが
0214デフォルトの名無しさん
垢版 |
2019/09/01(日) 10:19:52.00ID:ee5jndrf
それで >>187 はどう書くのが定番なの?
0215デフォルトの名無しさん
垢版 |
2019/09/01(日) 10:31:43.36ID:kCJZVLuH
続きを読むには会員登録が必要です
0219デフォルトの名無しさん
垢版 |
2019/09/01(日) 21:46:45.96ID:M++YO15h
同じ処理するにしてもRustだと複雑で冗長になるんだよな
もしかして糞言語なんじゃね?
0220デフォルトの名無しさん
垢版 |
2019/09/01(日) 21:54:48.86ID:yg5jHaTZ
>>218
できるよ
Resultを返すクロージャなら
0221デフォルトの名無しさん
垢版 |
2019/09/02(月) 00:09:16.32ID:O1/eX6ND
メモリ壊して苦労するか
パフォーマンスで苦労するか
コーディングで苦労するか
お好きな物をどうぞ
0223デフォルトの名無しさん
垢版 |
2019/09/02(月) 04:32:52.76ID:VKrglic+
>>219
+1
0224デフォルトの名無しさん
垢版 |
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だけど
0226デフォルトの名無しさん
垢版 |
2019/09/02(月) 17:52:48.76ID:XClX12is
そういや、String(のclone)を一生懸命に避けてほんとに意味があるのか
コードを無駄に複雑化させただけなんじゃないかと悩む事が多い
0227デフォルトの名無しさん
垢版 |
2019/09/02(月) 21:13:54.24ID:c28qQK2V
執着する必要はないと思うけど、そんな複雑になる?
0228デフォルトの名無しさん
垢版 |
2019/09/02(月) 21:43:41.81ID:+zTucd5y
>>225 だとOsStringですけど、Stringにするにはどうすれば・・・?
0230デフォルトの名無しさん
垢版 |
2019/09/02(月) 22:48:02.88ID:+zTucd5y
なるほど
Derefが必要ない場合は直接書いちゃえばいけるのか
ありがとうございます
0232デフォルトの名無しさん
垢版 |
2019/09/02(月) 23:39:57.31ID:c28qQK2V
え、こんな短いコードで?
0233デフォルトの名無しさん
垢版 |
2019/09/03(火) 00:05:15.13ID:i5o7yZzz
なんでもかんでもメソッドチェーンにしないで適当なところで束縛した方がRustのコードは読みやすくなる
0234デフォルトの名無しさん
垢版 |
2019/09/03(火) 00:26:49.25ID:vCzpmz3O
それはあるな。シャドーイングできるから変数名に悩まないし、
単に長くなったところで再束縛すればいい。
0235デフォルトの名無しさん
垢版 |
2019/09/03(火) 11:07:53.94ID:CeNKL5mb
界隈の潮流では「部分的なc++化」というものがあり、Javaですらジェネリクス/テンプレートを取り入れた
rustもそうなる
0237デフォルトの名無しさん
垢版 |
2019/09/03(火) 16:01:22.65ID:BrE32zWk
ジェネリクスはあるよね
0238デフォルトの名無しさん
垢版 |
2019/09/03(火) 16:30:08.77ID:9SeNEnhh
関数型言語で優雅にやってたことを
マクロの延長みたいな形で泥臭く実装するのがC++化
0239デフォルトの名無しさん
垢版 |
2019/09/03(火) 18:15:35.61ID:sT1C29Io
そもそもC++化の潮流なんてあるか?
各言語それぞれ取り入れあってるとは思うが。
0242デフォルトの名無しさん
垢版 |
2019/09/03(火) 22:37:59.52ID:++bLAvti
いや、javaのジェネリックスとC++のテンプレートの区別が付かないやつの言うことがそもそもおかしい。
パラメタ多相とメタプログラミングは別もんだぞ。むしろ最近のテンプレートがパラメタ多相に寄ってきたんだろ。
0243デフォルトの名無しさん
垢版 |
2019/09/03(火) 22:50:06.30ID:BrE32zWk
なんだか難しい言葉がいっぱいあるんだね
rustのが簡単でいいや
0250デフォルトの名無しさん
垢版 |
2019/09/04(水) 12:02:33.30ID:rDpqFBPU
俺は一流のエンジニアだぞ
なんてったって毎日Qiitaを見てるし足りてない知識はQiitaで検索して補ってる
0252デフォルトの名無しさん
垢版 |
2019/09/04(水) 18:49:08.58ID:U5+bjz/t
俺はなんとか多相なんて調べない
どうでもいいし
0253デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:02:15.65ID:2Txd6K3L
こないだ秋葉原で「まれいたそーまれいたそー」ってうつむきながら呟いてた黒髪ロン毛のデブがいたんだけど、
この「マレイ多相」とは何ですか?
0255デフォルトの名無しさん
垢版 |
2019/09/04(水) 21:12:03.63ID:QzZNrHDq
m array 多相といってモナディックな扱いの配列における多相性である(民明書房「世界の多相」より)
0257デフォルトの名無しさん
垢版 |
2019/09/05(木) 00:56:25.25ID:FxCb5fYw
では中世においてしばしば見られた介錯い多相とは?
0260デフォルトの名無しさん
垢版 |
2019/09/05(木) 09:14:42.45ID:Y6QHjuf9
じゃあ >>242 に言及するけどC++のテンプレートも本来はパラメトリック多相としての役割を元々は期待して導入された
パラメトリック多相は >>246 のリンクでもあるように元々の型記述に追加パラメータとなるトークンを渡す事で多相性、誤解を恐れずに言えば型の制約を緩くして記述量を減らすものである
よって多相性によって単一の記述から複数の型に対する実装の様に見えるものを生成できる

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

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

長文失礼
0261デフォルトの名無しさん
垢版 |
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>> みたいに)とすることって出来ないでしょうか
0264デフォルトの名無しさん
垢版 |
2019/09/05(木) 21:34:25.18ID:B6sVqyux
Python歴半年(=プログラミング歴)とかの人がいきなりRustに手を出すのって無謀でしょうか?
0265デフォルトの名無しさん
垢版 |
2019/09/05(木) 22:31:27.10ID:O7Dd9aK6
いいんじゃないの
ただなんでわざわざこんな事すんだよやりずれぇわ死ね
と思う回数が経験積んだ人より増えそうだけど
0267デフォルトの名無しさん
垢版 |
2019/09/06(金) 19:19:12.72ID:d+J9jL2b
いろんな言語やったあげくC++に不満がある人にとっての解がRust
この両方を満たしていない人にとってはピンとこねえのがRust
0276デフォルトの名無しさん
垢版 |
2019/09/08(日) 00:03:54.78ID:KXmQOAwm
スライスみたいなことをしようとしたら本質的にはどうにもならんだろ。
安全性か効率化か結局選ぶことになる。
0278デフォルトの名無しさん
垢版 |
2019/09/08(日) 09:53:10.07ID:46Wp6heU
21世紀の現代では何を作っても一週間程度で複雑さはMAXに達する
プログラミング言語のRustでもそれは同じ
0279デフォルトの名無しさん
垢版 |
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>`
というエラーメッセージがわかりません
どういう流れでこのメッセージが出るのでしょうか
0281デフォルトの名無しさん
垢版 |
2019/09/09(月) 10:16:14.57ID:950wQDvR
いやそれはわかる
エラーメッセージの意味がわからない
どこがどうだからこのメッセージになるのか具体的に理解したい
0282デフォルトの名無しさん
垢版 |
2019/09/09(月) 10:51:58.70ID:950wQDvR
なんというかメッセージのindexがよくわからない感じ
メッセージを日本語にするとどうなるんでしょう
0284デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:12:50.90ID:01u4b8kP
out of indexっていうけど、index内なんじゃないの?って疑問じゃないの?

俺はわからない
0285デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:16:35.82ID:8pEaV4bB
out of indexではなくてmove out ofで出ていくって意味。
move out of borrowed contentとかと同じ。
0286デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:17:42.46ID:950wQDvR
なんか move out of 〜で引っ越すとか出ていくという意味があるらしいんだけど
それでも index がよくわからなくて悩んでます
0288デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:39:50.47ID:xIOozne9
v[0]使うからindexの意味がややこしいんでは
let x = v[1]; でも同じエラーになるのを見たら、indexアクセス経由で値をmoveする(=引き剥がす)のはまかりならんと分かる
でコピーできるなら値が残るので問題にならない
0289デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:43:51.77ID:950wQDvR
Vec<String>のindex (メソッドの戻り値) はmoveできない
と言ってるわけね。理解した。ありがとう。
0292デフォルトの名無しさん
垢版 |
2019/09/09(月) 11:47:06.05ID:+2RtkJJ5
……エラーメッセージの検討と解釈が必要なところまで真似なくてもいいのに
0293デフォルトの名無しさん
垢版 |
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.
0294デフォルトの名無しさん
垢版 |
2019/09/09(月) 12:50:41.27ID:950wQDvR
まず move out of を一塊にして、index は添え字と考えてわけがわからなく・・・。
out of index を indexの戻り値 とはまったく思いつきませんでした。
わかってしまうともう他の読み方はできません。
最初から日本語に訳して欲しいとお願いすべきだったかも。
お騒がせしました。
0295デフォルトの名無しさん
垢版 |
2019/09/09(月) 18:32:42.49ID:SJyzIZeS
rustの日本語ブック、ドキュメントはかなり前からプルリクがマージされてないから期待薄いかも
0297デフォルトの名無しさん
垢版 |
2019/09/12(木) 10:55:58.45ID:LoRkJG5F
思い付きなんだけど
Box を &!、 Rc を &# で書けるシンタックスシュガーがあったらどうだろう
Box<T>を&!Tと書いたり、Rc::new(data)を&#dataと書けたりしたら?
0298デフォルトの名無しさん
垢版 |
2019/09/12(木) 12:01:05.66ID:oxTdK/zC
プログラマがコストを払うことに罪悪感を抱くようにあえて冗長にしてるんじゃなかったかな
0300デフォルトの名無しさん
垢版 |
2019/09/12(木) 13:22:56.79ID:+G4RGhf3
そういう記法実装するような思想の言語なら真っ先に mut が簡略化されてると思う
0301デフォルトの名無しさん
垢版 |
2019/09/12(木) 18:15:04.09ID:Meniefv0
環境毎のクレートのバージョン違いでコンパイル通らないようなことがないようにバージョン指定させるくせにコンパイラのバージョン違いのせいでコンパイル通らないとかクソ過ぎひん?
0302デフォルトの名無しさん
垢版 |
2019/09/12(木) 18:20:44.52ID:oxTdK/zC
rust-toolchainを作りなされ
0303デフォルトの名無しさん
垢版 |
2019/09/12(木) 19:29:03.99ID:hoEtlcNn
無知な煽りカスにまで親切に教えてくれてありがとうおかげで無事通った(`;ω;´)
0304デフォルトの名無しさん
垢版 |
2019/09/12(木) 21:04:34.30ID:jNKjrGpq
オレオレ糖衣構文が欲しければ一対一変換するトランスパイラでも書けばいいだろ
0308デフォルトの名無しさん
垢版 |
2019/09/13(金) 09:57:21.64ID:LrhujYjR
日本の場合オライリー本買ったら原著はマニングだった、なんてことも。
0311デフォルトの名無しさん
垢版 |
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のビルドと実行は出来てます
0312デフォルトの名無しさん
垢版 |
2019/09/13(金) 15:13:08.13ID:8tLP3I45
use std;
use std::io;
と先頭に追加しても
error[E0432]: unresolved import `std`
と言われる…
stdすら簡単に使わせてくれないとか恐ろしく敷居が高い言語なのは分かったけど、>>311のprintln!だけは何とか動かしたいので、
よろしくお願いしますm(_ _)m
0314デフォルトの名無しさん
垢版 |
2019/09/13(金) 16:22:57.80ID:8tLP3I45
>>313
何が?
完全にRust初心者なんだからしょうがない
多分外部ファイルに依存してるだろう事は何となく分かってきたけど、まだ解決には至らず
0315デフォルトの名無しさん
垢版 |
2019/09/13(金) 17:00:45.98ID:ucGTEY8O
正直釣りにしか見えないが…。
なぜ初心者がいきなりcoreライブラリいじろうとしてるの?
あとcoreはmallocとかもない環境で動く必要があるから
とてもprintlnなんて無理だと思うけど。
0318デフォルトの名無しさん
垢版 |
2019/09/15(日) 00:25:56.87ID:84ndTw+e
ヌルポチェック境界チェックしてたら遅くなるに決まってるやん
Cはそんなことしなくて済むから爆速な訳で
0319デフォルトの名無しさん
垢版 |
2019/09/15(日) 11:32:00.80ID:iFCAy1qK
絶対にめくれないからパンツいらないスカートで
アスレチックでもスカイダイビングだもなんでもするのがCだわな
0321デフォルトの名無しさん
垢版 |
2019/09/15(日) 12:03:39.49ID:IVfbaIvY
いいねw
0324デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:06:50.28ID:JVfSd4XU
風呂でもセックスでもパンツ脱がないのがRustだわな
0325デフォルトの名無しさん
垢版 |
2019/09/15(日) 14:41:05.29ID:CYqvBFjr
スカートも不要なのがC
0328デフォルトの名無しさん
垢版 |
2019/09/15(日) 22:55:46.82ID:IVfbaIvY
Rustはむしろ貞操帯
0331デフォルトの名無しさん
垢版 |
2019/09/16(月) 08:18:42.11ID:jUyoTXTl
何をするにも貞操帯外したり付けたりガチャガチャして複雑になるんだよなあ
0333デフォルトの名無しさん
垢版 |
2019/09/16(月) 08:38:49.73ID:5uT5V90s
そんなふうに考えていた時期が俺にもありました
でも今はderef coercionでハッピーな毎日です
0335デフォルトの名無しさん
垢版 |
2019/09/17(火) 08:51:01.90ID:/BOEHyZy
Tのままでチェックするからこうなるんでu32にしてチェックしていいならそうする
TもCopy + Into<u32>でトレイト拘束するだけですむ
0338デフォルトの名無しさん
垢版 |
2019/09/18(水) 00:07:56.14ID:H2DpgLxy
数年後、Rustの世間的な評価はマクロが濫用されてるからクソ
になってる気がする
0339デフォルトの名無しさん
垢版 |
2019/09/18(水) 08:28:44.98ID:no1kSscq
そりゃ言語拡張性からいったらマクロは最強だよ。
そんなことは30前にlispが示してる。
0342デフォルトの名無しさん
垢版 |
2019/09/18(水) 10:47:59.35ID:pbP4krHb
✗ Rustのマクロが汎用されているからクソ
○ プリプロセッサで単純に置換する不健全なマクロを汎用するからクソ
Rustはまだましなほう
0343デフォルトの名無しさん
垢版 |
2019/09/18(水) 11:34:11.09ID:RM25JK7K
ライブラリで定義するのはいいがプロジェクト内ではレビューの時に面倒だからなるべく書きたくないな
0346デフォルトの名無しさん
垢版 |
2019/09/18(水) 13:41:17.68ID:1cXUqFYA
汎用する?
0347デフォルトの名無しさん
垢版 |
2019/09/18(水) 14:40:03.73ID:5wL1TG3Q
直接依存するクレートのfeatureはdependenciesに記述できますが、依存するクレートが更に依存するクレートのfeatureをセットしたいときはどうすれば良いんでしょうか
0348デフォルトの名無しさん
垢版 |
2019/09/18(水) 15:00:15.00ID:f+hbVZ57
エアプだからよく知らんけど依存クレートが依存x2クレートのfeature使うなら依存クレートのtomlにfeature書いてあるし、
依存クレート経由しないで依存x2クレート使うなら自クレートが直接依存してるわけだから自クレートのtomlにfeature書くだけじゃないの?
0350デフォルトの名無しさん
垢版 |
2019/09/21(土) 23:26:15.34ID:ajCyJ6wo
アホに良いコードは書けないのだ
アホでも書けるとかいう奴は、アホかアホな組織に属してるかその両方かだ

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

```
#[allow(non_snake_case)]
pub fn dummy() {
let hWnd = 0;
}
```
0360デフォルトの名無しさん
垢版 |
2019/09/25(水) 18:54:51.99ID:it7hFznu
ノンスネークケースを表す識別子がスネークケースとはいかがなものか。
allow(non_snake_case)
これ自身を
allow(nonSnakeCase)
と書きたいものである
0361デフォルトの名無しさん
垢版 |
2019/09/25(水) 20:08:08.16ID:r0+GDB9/
そんなことって言うけど大事なことだよね
0362デフォルトの名無しさん
垢版 |
2019/09/25(水) 20:21:48.81ID:bkoUXP+/
ErrorやWarningを出力するときにHelpやNoteで解説も出力してくれてすごく助かる
0368デフォルトの名無しさん
垢版 |
2019/09/26(木) 16:03:54.65ID:JiUn+jUB
ジェネリクスとPhantomData使って特定の関数呼んだかとかの条件付けるんならせめてエラーメッセージもちゃんとして欲しい(´・ω・`)
0373デフォルトの名無しさん
垢版 |
2019/09/27(金) 13:19:26.24ID:I3+hYE7s
RustとRの違い

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

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

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

Rust
陰キャのおもちゃ
なにも作られてないので負債も作られていない
さすがにRubyよりは速い
0377デフォルトの名無しさん
垢版 |
2019/09/27(金) 15:10:10.66ID:FRvVNNut
FirefoxのCSSエンジンとかFirecrackerとかDropboxとかnpmとかあるけど見たくないヤツには見えないからなあ
0380デフォルトの名無しさん
垢版 |
2019/09/27(金) 20:01:19.53ID:PO8lPJ5D
dieselなんかこれじゃない感あるなと思ったらアクティブRecord作った人が作ってるのか
代替ないのかね
0385デフォルトの名無しさん
垢版 |
2019/09/29(日) 13:43:42.91ID:FBG2HAFw
人それぞれだと思うんであくまで参考に聞かせて欲しいんだけど
どれくらいのサイズまで#[derive(Copy)]つけます?
0387デフォルトの名無しさん
垢版 |
2019/09/29(日) 16:30:03.01ID:L34oTjKk
所有権の観点からCopy実装してはならないケースはあるだろうけど、
してもしなくてもいい場合に考慮するのはサイズと意味だろ。
サイズに関して言えば、自分はu64の10倍くらいまでって感じ。
0389デフォルトの名無しさん
垢版 |
2019/09/29(日) 19:21:30.01ID:GZbu7mvl
極力付けないな
ぱっと見分かんないから
0390デフォルトの名無しさん
垢版 |
2019/09/29(日) 20:25:18.89ID:FBG2HAFw
いろいろ感謝

よく例題にありそうな
struct Point { x: i32, y: i32 }
みたいなのなら#[derive(Copy)]しても害はないかなと思って聞いてみた
速度を考えてサイズがusizeの3〜4倍ぐらいまでが相場かなと思ったんだけどね
0392デフォルトの名無しさん
垢版 |
2019/09/29(日) 21:03:36.26ID:L34oTjKk
例えば
let x = y;

let x = y.clone();
があったときに前者はノーコストで後者は結構重いかもしれないって感覚があると思うけど、
大きなstructにCopyを実装すると前者で大きなmemcpyが発生してびっくりする、という話。
0393デフォルトの名無しさん
垢版 |
2019/09/29(日) 21:26:23.34ID:FBG2HAFw
イメージした状況は違うけどそんな感じ
参照経由で扱いたい大きなデータなのに
うっかりコピーされる状況にしちゃって勝手にコピーされるのはちょっと
でも小さいデータならコピーされてもいい
0394デフォルトの名無しさん
垢版 |
2019/09/29(日) 21:30:49.24ID:PihB9u3J
MicrosoftのC#のドキュメントに何バイトまでstruct (C#における#[derive(Copy)])使う方がいいか
書いてあるのを見た気がする
値は忘れた
0395デフォルトの名無しさん
垢版 |
2019/09/29(日) 21:33:28.20ID:GZbu7mvl
Sizedなのは当然としてクリッピーなりラストシーが怒ってくれれば気軽に使えるだけどな
0397デフォルトの名無しさん
垢版 |
2019/09/29(日) 23:57:00.22ID:6uuCovZS
使用頻度にも依るんだから計測しろよ
別に難しいことじゃ無いし
0398デフォルトの名無しさん
垢版 |
2019/09/30(月) 00:27:00.93ID:k5ErHMsi
>>392>>393
Copyを実装してようがいまいが(=Move)
let x = y;
したのならどちらも同様にその構造体自体のmemcpyによる複製は行われてるよ?
(もちろんフィールド内の参照が指す先の話じゃなく)
0399デフォルトの名無しさん
垢版 |
2019/09/30(月) 06:40:12.68ID:URkXaUjC
それはわかってるつもり
関数定義で引数を参照にしそこねた場合とかをイメージしてた
Copyつきだとmoveされずに残るから気づきにくい
0400デフォルトの名無しさん
垢版 |
2019/09/30(月) 08:53:42.19ID:i9kRAMDA
それで問題なく動いてるならどうでもいいだろ
遅かったら直せば?
どれだけ速かろうが、なんら価値を産まないプログラムの価値はゼロだよ
0401デフォルトの名無しさん
垢版 |
2019/09/30(月) 09:35:07.62ID:URkXaUjC
動くのは前提で最初( >>385 )から速度の話をしてるんですよ
流れで所有権の有効性の一面がでてきたわけですがね
他の人はどれくらいの速度低下を許容しているのか知りたいってのが発端
0402デフォルトの名無しさん
垢版 |
2019/09/30(月) 09:49:38.90ID:Fmg7ESu9
呼び出し規約でレジスタに乗る範囲は意識するかな
大きいのは論外だとして、小さいのは
プロファイルとっても表面化しないまま積み重なっていくだけだから
遅かったらあとで直すってのはまず実施されないよね
0405デフォルトの名無しさん
垢版 |
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が変わることになるので実装しないべき
0407デフォルトの名無しさん
垢版 |
2019/09/30(月) 11:43:56.12ID:URkXaUjC
>>405
だからcopyもmoveもしたくないんですよ
勝手にcopyを渡されるのでなく参照を渡してアクセスすべきstructのサイズがありますよね
copy vs move でなく copy/move vs 参照 ということ
勝手にcopyされないようにCopyを実装しないサイズについて
他の人の考えを聞きたかったんです

たぶん >>393 にそんな感じって書いたのが良くなかったんだろうな
>>392 の問題点を指摘するべきでした
0409デフォルトの名無しさん
垢版 |
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/
0410デフォルトの名無しさん
垢版 |
2019/09/30(月) 15:22:11.50ID:zXgxGRIB
although this is sometimes optimized away.
の部分も訳してよ
0414デフォルトの名無しさん
垢版 |
2019/10/01(火) 22:05:50.22ID:iKbLcHR3
>>412
大抵は最適化でコピー省略だろうけど
寿命の短い変数から長い変数へmoveする場合は面倒な予感
0415デフォルトの名無しさん
垢版 |
2019/10/01(火) 23:19:08.32ID:5ranOfZi
め、memmove()はmemcpy()、、
moveが真にmoveになるのはハンドルや参照やFATで指し示されたブツだけなのではないか
bittableなオブジェクトでcopyメソッドの付加をケチっても仕方が無い
bittableなコピーは所有権フリーでふつくしい
0420デフォルトの名無しさん
垢版 |
2019/10/02(水) 13:10:54.18ID:GoUXMchS
Result<(),Box<dyn Error>>を返す関数の中で、Errorトレイトを実装していない外部のクレートのエラーFooErrorを返す関数
fn f() -> Result<(),FooError>{}
に対して f()? のように?演算子を使いたい場合どうすれば良いんでしょうか?
0421デフォルトの名無しさん
垢版 |
2019/10/02(水) 13:43:42.50ID:Ra0M0x2i
Errorトレイトが自分で作ったものならFooErrorにimplする
そうでないならenun MyErrorを作ってErrorをimplし、From<FooError> for MyErrorを実装する
規模が大きいなら後者のパターンで全てのエラーを包んでResult<(), MyError>を返すようにした方がよいっぽい
0423デフォルトの名無しさん
垢版 |
2019/10/02(水) 14:19:47.22ID:qs4Bbmku
すまん不完全な解答だった
外出ちゃったからコードいじれないんだすまん
はintoを自動的に発行するので対応するFromを書けばいけるはず
ただBoxだとどうかな、やってみて
0426デフォルトの名無しさん
垢版 |
2019/10/02(水) 23:45:01.99ID:xTOjXinC
moveってしゃろーこぴー?
0429デフォルトの名無しさん
垢版 |
2019/10/05(土) 11:41:40.70ID:IzmeWHwu
レズ・トランスジェンダー・おっぱいの略。
0431デフォルトの名無しさん
垢版 |
2019/10/05(土) 15:31:30.78ID:JszGfLQj
DebugとDisplayってどう使い分けたり実装すれば良いんでしょうか

ドキュメントには前者はプログラマ向け、後者ははユーザー向けの出力とかって書いてあるので例えば数値なんかは
前者は「99u8」、後者はただ「99」みたいに表示されるのかと思ったんですが実際はどっちも同様にただ「99」としか表示されないですよね?
0432デフォルトの名無しさん
垢版 |
2019/10/05(土) 16:20:44.53ID:Kz6nPZqe
Debug は
ID: 530, name: "ほのおのつるぎ(売却可)", attack: 63, equippable: "戦士、勇者"
みたいにユーザーに見せるもんじゃない詳細とかを適当なフォーマットで含むじゃろ。
Display は
ほのおのつるぎ
みたいにエンドユーザーにフォーマルにみせる情報を、変にフォーマットせずに含むのが普通じゃろ
0433デフォルトの名無しさん
垢版 |
2019/10/06(日) 14:09:28.34ID:UJBvNAqw
RustでVulkanを使いたいのですが、現状非公式のバインディングを使うしか無いのでしょうか…?
0434デフォルトの名無しさん
垢版 |
2019/10/06(日) 16:42:20.66ID:u0a4L4+0
デバッグビルドの時に、リリースビルドした依存クレートを使う簡単な方法はありますか?
target/release/depsをtarget/debug/depsに名前を調整して移すとできてる感じですが
もっと簡単にできないでしょうか。
0436デフォルトの名無しさん
垢版 |
2019/10/06(日) 21:45:30.41ID:u0a4L4+0
なるほど
当面自作のスクリプトでdebug/depsいじります
0437デフォルトの名無しさん
垢版 |
2019/10/07(月) 19:36:11.62ID:ygKDuPd1
Rustに限った話じゃないんだがGUIツールキットもゲームエンジンもC++が主流
でもC/C++以外でC++の呼び出しが出来る処理系はほとんどない。うぼあー
0438デフォルトの名無しさん
垢版 |
2019/10/07(月) 19:40:49.20ID:PWOdjrjM
スマホゲームとか一時はUnityだらけだと思ったけど今は違うの?
0447デフォルトの名無しさん
垢版 |
2019/10/09(水) 17:58:10.09ID:PhcKq1+0
Cは社交界のオキテを知らない村娘だから
不用意に呼ぶとズッキュウウウンしちゃったりするのよ
だから簡単に呼べなかったりするけど呼べるときはシャワーも浴びずにすっ飛んでくる、そんな子
0448デフォルトの名無しさん
垢版 |
2019/10/09(水) 19:00:00.88ID:xdNe6xdo
C++のライブラリへのバインディングでほとんどのAPIがunsafe&unsafeって書いて無い奴もunsafeかもしれんから自分で気をつけてね☆
みたいのがあるんやが

これってRustで書く意味無くね…?
0449デフォルトの名無しさん
垢版 |
2019/10/10(木) 00:27:32.81ID:sVTH7Uak
貴方がRustで書き直せば喜ぶ人もいるんじゃない?
0450デフォルトの名無しさん
垢版 |
2019/10/10(木) 09:54:53.26ID:yMym0WfO
ま〜つもと
いけいけまつもと
がんばれまつもと
0451デフォルトの名無しさん
垢版 |
2019/10/10(木) 10:51:54.74ID:LImRHacY
>>448
C++のライブラリ使うからだろ。
Rustで書かれたもの使うか、Rustで書き直せ。
0452デフォルトの名無しさん
垢版 |
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?
0454デフォルトの名無しさん
垢版 |
2019/10/10(木) 14:59:57.87ID:MXl+fq4L
>>452
unsafeで囲む範囲はどの言語でも最小限にしろよ
初期化にunsafe要らんのなら囲むな
0458デフォルトの名無しさん
垢版 |
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?
0459デフォルトの名無しさん
垢版 |
2019/10/11(金) 11:00:26.28ID:hkXt1Gtm
>>455
1文字ずつ文字間開いてるとucs2で書かれてるように見える
0460デフォルトの名無しさん
垢版 |
2019/10/11(金) 15:38:54.43ID:LwZAFcHp
>>458
そのコードだけで言えばset_len()を使うことで保証されなくなるlengthの正しさを
呼び出し側が保証する必要があるのかどうか

from_utf8_uncheckedみたいな別のunsafe fn使ってればそれによって壊される安全性があるなら
その安全性を呼び出し側が保証する必要があるのかどうか
0462デフォルトの名無しさん
垢版 |
2019/10/15(火) 21:56:51.61ID:m8AinitX
その千分の一でもまだでかい
0463デフォルトの名無しさん
垢版 |
2019/10/15(火) 22:12:04.54ID:Ko1HPs1y
バイナリゴルフが流行ってんの?
0464デフォルトの名無しさん
垢版 |
2019/10/15(火) 22:36:57.07ID:icVT30E7
たった13バイトの文字列をコンソールに出力するだけで283648バイトを浪費wwwww
0465デフォルトの名無しさん
垢版 |
2019/10/15(火) 22:39:45.49ID:hhqZ1XTX
minimal runtimeってタイトルなんだからランタイムが小さいって話だろ。比較対象はGoとかHaskellとかであって、Cが小さいなんてのは当たり前。
0469デフォルトの名無しさん
垢版 |
2019/10/16(水) 13:39:20.98ID:KKGk/G0e
一方ルーストはhello, worldとコンソールに表示させるだけで277KBwww
0471デフォルトの名無しさん
垢版 |
2019/10/16(水) 19:33:59.18ID:rINTnV3z
Kbitじゃない?
0472デフォルトの名無しさん
垢版 |
2019/10/16(水) 21:08:46.19ID:9tVPGt2A
エミュROMでぐぐったら出てきた
ドラクエ3が256KByte
ドラクエ3が128KByte
ドラクエ1が64KByte
どれもKbitではない
0473デフォルトの名無しさん
垢版 |
2019/10/17(木) 00:23:19.63ID:TtVNUhvN
N88-BASICとかディスク拡張命令とか考えなければ32 KBに収まってた
数十KBというのは広大な情報量
人間の遺伝子もジャンクDNAを除けば10 KB強ぐらいなのではないか
0475デフォルトの名無しさん
垢版 |
2019/10/17(木) 17:16:51.68ID:TwA5RghT
go だと Hello, work! だけで 2MB でした本当にありがとうございました
0476デフォルトの名無しさん
垢版 |
2019/10/17(木) 18:57:57.40ID:yPX5iNuE
日本は欧米と比べてココがダメ!

韓国のほうがもっとダメなのでセーフ!
0478デフォルトの名無しさん
垢版 |
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が採用されている(関連記事)。
0479デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:27:06.30ID:RRRrLQ0r
それでも数秒かかるんか…
コールドスタートの悪夢未だ醒めず
0480デフォルトの名無しさん
垢版 |
2019/10/18(金) 08:13:39.39ID:dDUU5P0o
>例えばMicrosoftは自社製品の脆弱(ぜいじゃく)性の約7割を占めるメモリ安全性の問題を解決するためにRustが役立つと指摘している(関連記事)。

これWindowsの脆弱性の話だろうけど、
静的解析ツールでは解決しないってことなのか?
0482デフォルトの名無しさん
垢版 |
2019/10/18(金) 17:46:16.42ID:lmpJOwiE
mut を マットって読んでる人いる?

コアチーム含めミュート派が大勢なのは知ってるけど
eがないとミュートって読むのは不自然だし、時々eをタイプしそうになるから
マット派になろうかと思ってるんだが
0487デフォルトの名無しさん
垢版 |
2019/10/18(金) 18:29:52.38ID:lmpJOwiE
結構いろんな読み方してんのね
マット派いたから安心して転向するわ

ちなみにドイツ語ではムートって読んで勇気って意味らしい
0490デフォルトの名無しさん
垢版 |
2019/10/18(金) 21:57:09.28ID:lmpJOwiE
pubはまあわかるけど
fnとunwrapは他言語でもあるし普通にわかりやすいと思ってたわ

IntoIteratorとかは素直にIterableでいいのにとは思う
0491デフォルトの名無しさん
垢版 |
2019/10/19(土) 00:46:14.72ID:ZEJ60z1R
しかしRustでOS作ったらCより性能悪かったという記事があったはず
新しくOS用のプログラミング言語を作った方が良いのでは
RustはOS開発を主眼にしてるわけじゃないだろう
0497デフォルトの名無しさん
垢版 |
2019/10/19(土) 13:43:06.95ID:ZEJ60z1R
OS組もうとするとRustの言語概念を無視するような書き方をしなきゃいけない
みたいに書いてあったんだけど
0498デフォルトの名無しさん
垢版 |
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
これかな
0499デフォルトの名無しさん
垢版 |
2019/10/19(土) 17:05:59.60ID:xnS8qN86
>>497
ケースバイケースだろ。
なんでも杓子定規にとらえるなって言ってやれ。
0500デフォルトの名無しさん
垢版 |
2019/10/19(土) 18:07:21.38ID:Xn59Im0u
いや普通にOSソース見ればそらrust向いてねーわってなるよ。
杓子定規にrust使おうってほうが気が狂ってるわ。
0501デフォルトの名無しさん
垢版 |
2019/10/19(土) 18:16:31.77ID:JHoWAbaJ
Rustを使わないからそうなっているのかもしれんぞ
どこでRustだと不利なのか説明してくれ
0502デフォルトの名無しさん
垢版 |
2019/10/19(土) 18:58:13.46ID:VwkXsBh7
ストレージからプロセスを読んで起動する、とか
そもそもコンテキストスイッチングの処理とかは所有権の概念(データの寿命が入れ子)から外れてくる
気がするが、別にunsafeにせねばならないほどでもないキモス
他に何かある?
0503デフォルトの名無しさん
垢版 |
2019/10/19(土) 19:38:38.55ID:fKOzCfED
その昔はlispやforthでもos書いたりしたんだからrustで書けないことないだろう。
0505デフォルトの名無しさん
垢版 |
2019/10/20(日) 11:39:50.17ID:Q377Ee/+
それで実際Rustはバグ発生率低いの?
0506デフォルトの名無しさん
垢版 |
2019/10/20(日) 12:22:34.24ID:f+d3Kcps
バグ発生率ってどうやってカウントするのが一般的なんやろか?

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

Rustプログラミング入門、酒井 和哉、2019/10/13
0509デフォルトの名無しさん
垢版 |
2019/10/20(日) 23:22:23.45ID:ADDbXmaX
>>506
バグ発生率は、バスタブ曲線だろ。
初期によくバグる

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

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

あらかじめ勉強している人は、滅多に間違わないから、バグ発生数基準だと困るw
一方、全く勉強していない香具師は、バグが多い
0511デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:21:09.04ID:c9dhXgWB
仕様書にバグが多いのはあれわざと仕込んでるのかなるほど
0512デフォルトの名無しさん
垢版 |
2019/10/22(火) 20:56:02.71ID:pBzGAt4J
ネストした構造体のコンストラクトパターンみたいなやつはもっとチュートリアルで
説明した方がいいんでないのとは思う。
多分めんどくさい書き方にしかならんからやらんのだろうけれど。
0515デフォルトの名無しさん
垢版 |
2019/10/23(水) 17:55:49.61ID:GdFoVnvN
三項演算子は便利だったなぁ、と他言語を思い出して感動してるってことかな
0517デフォルトの名無しさん
垢版 |
2019/10/23(水) 20:07:35.94ID:r6mLYpNF
組み込みもネットワークツールもほとんどc以上の生産性を出すことないしな。。
一番有効な領域ってデバッガーじゃねーの?とは思う。
0520デフォルトの名無しさん
垢版 |
2019/10/23(水) 21:12:36.43ID:s8yqv2t4
公式に呼びやすい名前をつけないのがよくない
question mark operatorじゃわかりにくいから
error propagating operatorかerror handling operatorで
0521デフォルトの名無しさん
垢版 |
2019/10/23(水) 21:26:40.40ID:AT7YtDx+
ダサいかどうかとかどうでもよすぎる
性能、書きやすさ、読みやすさ、安全性がすべて
0522デフォルトの名無しさん
垢版 |
2019/10/23(水) 21:31:02.23ID:5Hzic27k
性能 境界チェックのせいでだいぶおそい
書きやすさ 地獄
読みやすさ 悪夢
安全性 噂ではあるらしい

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


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

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


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

file_nameに?付けてるのはディレクトリの場合無いからでしょ
なんでそんなことが疑問になるのか分からない
0532デフォルトの名無しさん
垢版 |
2019/10/24(木) 09:03:26.66ID:M5uvwdA8
Optionとか中途半端でたちわりーわ。
てかrustみたいにライフタイム意識する言語の場合、あんまり役割ない気がするけどね。
0533デフォルトの名無しさん
垢版 |
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(())
}
0534デフォルトの名無しさん
垢版 |
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"を使う

>ということをやりたいのですが、エラーでビルドできません。
>どのように書けばいいでしょうか?
0535デフォルトの名無しさん
垢版 |
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()
}
0536デフォルトの名無しさん
垢版 |
2019/10/24(木) 21:22:39.45ID:1+d2lllL
勉強になりました

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

でも動くようですけど関数に抽出した方が良いですか?
0537デフォルトの名無しさん
垢版 |
2019/10/24(木) 21:41:02.37ID:7Zw0jZ/m
それ関数作って呼んでるのとほぼ同じだし名前がついてるかどうかの違いだから好きにせえ
0538デフォルトの名無しさん
垢版 |
2019/10/24(木) 21:55:47.24ID:8vd5prrh
Someで囲ったOptionalチェーンを返すクロージャってのが
Rustのイディオムとして認知されて来ればそういうやり方も有りかもだけど
俺は関数に抽出したほうが型が見えて読みやすいので良いんじゃないかと思う
0540デフォルトの名無しさん
垢版 |
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");

なぜ昨日は気が付かなかったんだろう……
0541デフォルトの名無しさん
垢版 |
2019/10/25(金) 21:01:12.42ID:d+xtEa5D
try block
ずっと待ってるあなたのことを
意味もなくクロージャで囲む日々
0545デフォルトの名無しさん
垢版 |
2019/10/26(土) 09:43:29.54ID:eCInqrX9
関数型ことごとくすたれてない?
0546デフォルトの名無しさん
垢版 |
2019/10/26(土) 10:13:18.36ID:ERKSSgX1
モナド(高階型)来てもいいんじゃない?OptionとResultで同じようなことやってるし
0547デフォルトの名無しさん
垢版 |
2019/10/26(土) 13:48:16.66ID:3B/2CauT
オプショナルチェーンを矛盾なく繋げるモナドが入れば覇権だと思う
正直それだけできれば小難しい理論はいらないし
0550デフォルトの名無しさん
垢版 |
2019/10/26(土) 15:11:41.74ID:eCInqrX9
チェーン評価ってのも聞いたことがあるな
0552デフォルトの名無しさん
垢版 |
2019/10/26(土) 19:08:07.88ID:2tVQRscY
この板で否定的な言い分を魔に受けないほうがいい
冗談で言ってるか、冗談みたいな馬鹿の言い分だから
0553デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:02:43.13ID:JvDQOGiO
おっぱい好きだけど爆乳は好きじゃない。
0556デフォルトの名無しさん
垢版 |
2019/10/27(日) 20:10:25.95ID:M2w7+A6p
π
0560デフォルトの名無しさん
垢版 |
2019/10/29(火) 22:37:06.24ID:mgVguoQK
うまいことドメイン駆動設計をオブジェクト指向から切り離せないかな?
Javaでアーキテクチャを考えると、「このコードはどこに書くべきか」がずっと分からなくなる
関数のシグネチャ読めばそれがMなのかCなのか業務ロジックなのか入出力なのか、全部分かるように書けないものか
0561デフォルトの名無しさん
垢版 |
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/
0563デフォルトの名無しさん
垢版 |
2019/11/01(金) 14:20:55.93ID:uczmPzhO
Vulkanが公式でRustをサポートしてくれればRust製のゲームとかもっと出てくるのかなぁ
0565デフォルトの名無しさん
垢版 |
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バイト
0566デフォルトの名無しさん
垢版 |
2019/11/01(金) 19:25:13.98ID:+nuKsb5/
現職エントリ()のドワンゴや
タイ全裸Wantedlyの推してる言語って時点で使う気起きなくなるよね
0567デフォルトの名無しさん
垢版 |
2019/11/01(金) 19:29:17.10ID:CgKHPMXI
タイ全裸って?
0568デフォルトの名無しさん
垢版 |
2019/11/01(金) 21:28:00.41ID:/XSkjXU3
>>567
タイ全裸Wantedlyでググろう
Wantedlyがタイで全裸になったわけではないが
企業としては全く信用できん
0569デフォルトの名無しさん
垢版 |
2019/11/01(金) 21:55:41.28ID:/XSkjXU3
どんなに「こんなに素晴らしい機能がある言語!」とか言われても
「でもあの個人情報お漏らし泥箱や現職エントリ()ドワンゴとかDMCA乱用のWantedlyとかが推してる時点で……」ってなるのが
正しい社会人としてのあり方
0570デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:09:13.26ID:tfmUKGIE
>>565
つまりどんなenum作るでもたくさん値を持たせないほうが余計なメモリ使わずベストってことか
0571デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:57:41.39ID:RJfnLfVj
アンチドワンゴがみんなC言語使ってると思うと抜ける
0572デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:57:51.68ID:RJfnLfVj
↑思うとワロタ
0574デフォルトの名無しさん
垢版 |
2019/11/02(土) 07:38:49.45ID:m1PoQplx
他人がなに使ってのかチラチラ伺いながら自分の使うもの決めるのか
小物すぎるだろ
0576デフォルトの名無しさん
垢版 |
2019/11/02(土) 14:20:09.97ID:m1PoQplx
同じ言語使ってるだけで同一視すんのはお前だけだよ
0578デフォルトの名無しさん
垢版 |
2019/11/02(土) 15:40:16.76ID:lY37zOLC
んでもって一発逆転をねらって水物のに飛びつくっていうアンチパターンね。
0582デフォルトの名無しさん
垢版 |
2019/11/02(土) 23:48:47.52ID:VM95VN5u
>>581
なるほど、マクロの中で独自の擬似的なマクロを定義してるって事でしたか
そんな使い方があるなんて思いもしなかった

ありがとうございました!
0583デフォルトの名無しさん
垢版 |
2019/11/03(日) 01:36:39.62ID:G+Mc14wF
マクロの中で独自マクロ定義とか、、、
そんなことされたら俺の脳はメタメタにされてしまう。
0585デフォルトの名無しさん
垢版 |
2019/11/03(日) 14:24:34.21ID:smmSGOst
C++を理解したプログラマーはRustを使う必要がなく、C++が理解できないプログラマ―にはRustも同様に理解できない。
https://developers.srad.jp/story/15/02/20/2132207/
0586デフォルトの名無しさん
垢版 |
2019/11/03(日) 17:45:13.54ID:jtCsbY8B
>>585
古い記事のリンクなんてはるな、うざい
0590デフォルトの名無しさん
垢版 |
2019/11/04(月) 02:00:10.34ID:emAGOeO/
>>586
5年前から何一つRustは進歩してないってことだよ
一方Nimは1.0迎えてどんどん進歩している
RustからNimへの流出もどんどん進んでる
0592デフォルトの名無しさん
垢版 |
2019/11/04(月) 02:16:17.42ID:O4QbPTeM
ネタフリはいいけどもうちょっと生産的なのにしてよ
0593デフォルトの名無しさん
垢版 |
2019/11/04(月) 02:22:13.55ID:q2ozowgo
>>589
少なくとも = をオーバーロードもしくはオーバーライドするようなやり方は
すべきでなかった。
0594デフォルトの名無しさん
垢版 |
2019/11/04(月) 07:58:19.81ID:hfizXHxK
生産的というが、Rustが言語として生産的なことは過去にあったか?
それよりはNimへの乗り換えという前向きな選択肢を出すことの方が生産的だと思うが
0597デフォルトの名無しさん
垢版 |
2019/11/04(月) 10:29:24.02ID:pD4BmXAp
個人的にはC/Zig/C2・C++/D/Rust・Go/Nimという棲み分けだと思っているので別にという感じだ

まぁそもそも論としてNimの話したいなら次世代言語スレかNimスレでやれよという気持ち
せっかく専用スレあるのにメインユーザーにすら使われないとか可哀想すぎるでしょう?
0598デフォルトの名無しさん
垢版 |
2019/11/04(月) 11:26:47.69ID:TQlb0Fo2
NimはPythonでパフォーマンスに困ってる人にはいい言語じゃないかと思う。Pythonスレで宣伝してくればいいのに。
Rust使ってる人が移行したくなる要素はあまりない気がするけどな。
0599デフォルトの名無しさん
垢版 |
2019/11/04(月) 12:05:28.47ID:q2ozowgo
>>596
んな簡単に示せたらおれが言語作ってるわ。
とりあえず言えることとしてはこの辺の明示性に関しては明らかに c に劣るってことくらい。
0601デフォルトの名無しさん
垢版 |
2019/11/04(月) 12:41:59.38ID:x85TCC2R
Rustの良さはCと同レベルの速さをキープしつつ
Cよりは安全にかけるところが良いのだから
言語についてごちゃごちゃ言うのは筋違い
多少面倒でも安全に倒した方が良いって人が使うもの
0602デフォルトの名無しさん
垢版 |
2019/11/04(月) 12:43:51.83ID:f7Qy6XgK
インデックス1始まりの地獄はVBAでさんざん味わった
一貫してるとまた違うのか?
0603デフォルトの名無しさん
垢版 |
2019/11/04(月) 14:56:29.79ID:YPBZbHG1
RustはCより身持ちが堅いけどお作法と親戚づきあいが滅茶苦茶面倒な嫁って感じ
NimとPythonは巨乳姉妹で姉は大学生、妹はフリーター
Perlはヤンデレ妹
0604デフォルトの名無しさん
垢版 |
2019/11/04(月) 17:01:43.91ID:R+mKKMUr
まあ確かにC++のauto_ptrと同じミスをしてるとは言えるよねCopyトレイトに関しては
こっちはCopyトレイトになれるものが相当限られてるのと
コンパイラがC++よりわかりやすいエラーを吐くことでギリギリ妥協の範囲を攻めてる感じ?
まあ全体的にはauto_ptrよりはマシだと思うよ
許容できるかは人次第だけど
0605デフォルトの名無しさん
垢版 |
2019/11/04(月) 18:52:40.96ID:q2ozowgo
>>601
いや全く逆のことを指摘してるんだが。
もっと面倒でもコピーと参照については明示性のある記述方法にするべきだったのでは
ということを言っている。
0607デフォルトの名無しさん
垢版 |
2019/11/05(火) 19:53:18.47ID:FsOBPMBu
自転車置き場の屋根の色は何色にするべきか?と同レベルの議題にしか見えない
せめてどんなコードを読んでor書いてそう思ったのかを言えよ。主観の元になった客観をよ
0608デフォルトの名無しさん
垢版 |
2019/11/06(水) 11:16:50.77ID:o3tEvZiY
アワビやウニを獲りに行くのに
アクアラング使うか素潜りかの違いでしかない
0609デフォルトの名無しさん
垢版 |
2019/11/06(水) 13:06:01.28ID:mtXJ9XYX
それはアクアラングのほうがいいだろ…
0611デフォルトの名無しさん
垢版 |
2019/11/06(水) 16:46:31.15ID:yiWzW/nI
それなら「アクアラングより素潜りのほうがよい」ということになるが…
自転車置き場の例えはそういうことじゃないが。
0613デフォルトの名無しさん
垢版 |
2019/11/06(水) 21:23:00.27ID:i85ttsqs
潜水服が一番良い
0615デフォルトの名無しさん
垢版 |
2019/11/07(木) 16:06:15.56ID:wJeAdMrJ
Rの発音が難しい
0616デフォルトの名無しさん
垢版 |
2019/11/08(金) 11:30:10.82ID:3E1/z7K0
ネーミングは失敗してるよな
0619デフォルトの名無しさん
垢版 |
2019/11/08(金) 18:37:06.96ID:FQ4gd7yJ
平均以上の学歴で
平均以上の収入で
平均以上のルックスの人が書いた、
平均以上に速く
平均以上に小さく
平均以上に美しいプログラムのことだろ
0620デフォルトの名無しさん
垢版 |
2019/11/08(金) 18:43:36.10ID:J02ga/Ws
平均と同じではいかんのか?
0622デフォルトの名無しさん
垢版 |
2019/11/09(土) 06:26:46.96ID:jVCSonN8
ウェブアプリケーション
今五個目
0630デフォルトの名無しさん
垢版 |
2019/11/10(日) 15:18:40.14ID:47iDVxCF
開発サイクルが遅くなってデメリットが上回る
仕事で使うアホはいないと思う
0633デフォルトの名無しさん
垢版 |
2019/11/10(日) 22:43:25.53ID:KB1QaEbz
wasmて
ウェブブラウザアプリでRust的な安全性ガッツリ必要なことあるの?
0634デフォルトの名無しさん
垢版 |
2019/11/11(月) 19:57:31.41ID:EVqu4APJ
てかメモリ安全なスクリプト言語さえまともに使えないやつに限ってrustとか騒いでんだよね。。
バカバカしい。。
0635デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:07:59.59ID:khjQBy11
コンパイラより自分の腕を信じるって…
やっぱりジャップにはかなわねえや
0636デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:20:19.17ID:GWl6h/g/
てか で始める
限って によるガバガバなレッテル貼り

クソバカ
0637デフォルトの名無しさん
垢版 |
2019/11/11(月) 20:48:06.84ID:dcucGLEU
Cなら3で済みことを馬鹿に合わせてRustで20かけて作ることの意味があるのかどうかが問題だ
0638デフォルトの名無しさん
垢版 |
2019/11/11(月) 21:23:31.49ID:vNU4oQAO
3で済みこと
0641デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:28:55.57ID:GWl6h/g/
イニシャルコストだけ論じても意味ないしょ
作って終わりの製品もあるのは確かだだけど
0642デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:30:05.95ID:199KzUbd
>>633
ない
0643デフォルトの名無しさん
垢版 |
2019/11/11(月) 23:21:00.62ID:/mnflr/W
>>641
ランニングコストも同じだよ
何をするにもコンパイラの機嫌伺いから入る必要があるんだから
0644デフォルトの名無しさん
垢版 |
2019/11/12(火) 01:23:13.19ID:xaPlPvgO
そんなこと言うなよ
コンパイラちゃんはどこが悪いかいつも教えてくれてるんだぞ
コンパイラちゃんの気持ちも考えろよ
0645デフォルトの名無しさん
垢版 |
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
0646デフォルトの名無しさん
垢版 |
2019/11/12(火) 03:38:31.37ID:+Tj6wPob
>>645
vec!マクロで要素数指定する形はその型がClone実装してないとだめ

Item1も要素数指定すればCloneを要求される
let mut vs = vec![Item1 {a: 0, b: 0};10];
0648デフォルトの名無しさん
垢版 |
2019/11/12(火) 07:41:14.54ID:QX/VSHUG
>>643
そんな短絡的なことを言っているんじゃないよ
0649デフォルトの名無しさん
垢版 |
2019/11/12(火) 12:52:39.30ID:75A3JV4a
コンパイラがやかましければプログラムの質が上がるっていう
短絡的なこと言ってるのはどっちだか
0650デフォルトの名無しさん
垢版 |
2019/11/12(火) 12:56:25.17ID:p8WdjJyB
安全な言語を開発するようメーカーの方に心がけていただき、
kidsが安心してプログラムできるような、コンパイルできるような世の中になってほしい。
0651デフォルトの名無しさん
垢版 |
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を利用できるようにするための話し合いを開始している。
0652デフォルトの名無しさん
垢版 |
2019/11/12(火) 15:08:35.31ID:YVK5A4co
「誤りを許容する割り当て」ってなんだ?
malloc失敗した時になんか処理したいって話?
0653デフォルトの名無しさん
垢版 |
2019/11/12(火) 15:54:18.41ID:BAhwfPb/
要約すると今のcargoはクソで落ち着く
0655デフォルトの名無しさん
垢版 |
2019/11/12(火) 20:55:32.21ID:QX/VSHUG
>>649
そんな短絡的なことを言っているんじゃないよ
0658デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:07:52.77ID:QX/VSHUG
欠点を論うだけの雑魚に対し、フィードバックして改善しようとするMS様は立派だな
現場でも文句ばかり垂れてるお爺さんいるよな
0659デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:09:26.54ID:H9gS/H0a
何にも言わないで偉そうにしてるだけのやつが言うセリフじゃねえええええええ
0661デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:46:17.93ID:QX/VSHUG
茶々入れ小僧がわめくなよ
0662デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:49:03.55ID:QwsLzoNY
MSはCargoでどういう場合困るんだろ
小さいものしか作ったことないし技術力も低いからわからない…
0663デフォルトの名無しさん
垢版 |
2019/11/12(火) 22:11:56.20ID:QX/VSHUG
俺も。。
0664デフォルトの名無しさん
垢版 |
2019/11/13(水) 00:32:15.20ID:LQUpdw6j
GoogleのBazelみたいな分散環境でスケールする独自のビルドシステムを持ってるから
cargo testとかやった時にcargoのインクリメンタルビルドの仕組みじゃなく
自分たちの仕組みと連携させたいってことなんじゃないかと
0665デフォルトの名無しさん
垢版 |
2019/11/13(水) 03:04:21.12ID:DP/YD1iU
>>651
「使ってみたけどやっぱダメだったわ」をオブラート10枚くらいに包んだ
奥ゆかしい日本語の記事って感じだな
0666デフォルトの名無しさん
垢版 |
2019/11/13(水) 05:44:21.88ID:HjWmYEnS
Copyトレイトはプリミティブ型のように値としてコピーされるのが自然な型に付ける

コピーされるのは自然でない型でコピーをしたい場合にCloneトレイトでコピーを行なってると明示できるclone()メソッドを使ってコピーする
0667デフォルトの名無しさん
垢版 |
2019/11/13(水) 07:36:30.61ID:HNnV6bHC
あっちの企業って大企業でもOSSプロジェクトが使えると判断されたら支援もするけど日本じゃさっぱりだよな
0673デフォルトの名無しさん
垢版 |
2019/11/13(水) 16:14:33.46ID:CN9wALpQ
特徴
0674デフォルトの名無しさん
垢版 |
2019/11/13(水) 19:27:48.53ID:hjs0qnAg
確かにマイクロソフトならこのくらいの言語なら勝手に作りそうではあるな。
そもそもの実装系がカスだし。
0676デフォルトの名無しさん
垢版 |
2019/11/14(木) 11:58:42.24ID:YSMwOav4
トイレット
0678デフォルトの名無しさん
垢版 |
2019/11/17(日) 22:19:43.87ID:Pgjwxo9T
D言語のdebugブロックみたいなデバッグビルド時のみ有効になるコードブロックってRustにあります?
0680678
垢版 |
2019/11/18(月) 00:08:28.84ID:0Snxbixt
>>679
ありがとうございます!
0681デフォルトの名無しさん
垢版 |
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に戻するのがなんとも気持ち悪い
0682デフォルトの名無しさん
垢版 |
2019/11/18(月) 19:16:24.62ID:z+VV/8hn
>>681
char_indicesでイテレートすればposと(char.len_utf8で)lenが取れるから、それで元のスライスにアクセスする、とかかな。
そんなに短くはならないけど、bufferはいらなくなるはず。
0683デフォルトの名無しさん
垢版 |
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);
}
}
0685デフォルトの名無しさん
垢版 |
2019/11/19(火) 16:20:24.11ID:473MwB5J
2次元配列から最大値を有するデータ(with index)を取り出したいとき
イテレータのmax_by等を二段がけにするのと
従来プログラミング言語のように二重のforループで取り出すのと
どっちがおすすめ?
0687デフォルトの名無しさん
垢版 |
2019/11/19(火) 17:44:40.62ID:IXdZpGti
forでやるとmutな変数の更新を自分でやることになるから安全性が落ちる
更新ミスによるデバッグコストのリスクがある
0688デフォルトの名無しさん
垢版 |
2019/11/20(水) 21:08:08.17ID:1bHauA1T
変なやり方するより自然なfor使った方が
結局は可読性によって安全性やデバッグコスト低下になる。
0689デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:09:44.36ID:kQh16pu+
こういうお爺ちゃんはほんと迷惑
長いというだけで関数に切り出したりするし
0691デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:22:05.63ID:kQh16pu+
いかんからもうやらないでね
0695デフォルトの名無しさん
垢版 |
2019/11/20(水) 22:48:38.35ID:ykGdicPs
組み込みのCだとアセンブラを意識して減算カウンタでdo...while使ったりするけど
PCでそれはないな。イテレータが使える状況なら使ったほうが安全だし
0697デフォルトの名無しさん
垢版 |
2019/11/20(水) 23:43:20.92ID:ZhXfBtsy
関数切り出しがダメなのかRustでは
おじいちゃん驚きだわ
理由を何なの?
シャドウイングあるからとか?
0698デフォルトの名無しさん
垢版 |
2019/11/21(木) 00:12:22.19ID:ajP/wB6Z
競プロで見かける色んな人のコードでは
forループのほうが自然なとこを無理矢理イテレータのメソッドチェーンにしてたり、その逆があったり
0699デフォルトの名無しさん
垢版 |
2019/11/21(木) 00:26:18.38ID:i/7SJRFV
読みやすさが犠牲にならない範囲で短く書けるってことはよいことだけど
高階関数とかクロージャがまざるとトレースがめんどいのは確かだよね
デバッグ時にいらいらする
0700デフォルトの名無しさん
垢版 |
2019/11/21(木) 01:07:26.22ID:GN1h9TxM
>>685
1. 2重forループ
2. forループ + max系
3. fold + max系

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

>>697
スコープが広くなるからだよ
0704デフォルトの名無しさん
垢版 |
2019/11/21(木) 09:05:05.54ID:t44F/vpr
関数切り出しでスコープが広くなるとか、プログラミング言語として致命的な欠陥だろ
0705デフォルトの名無しさん
垢版 |
2019/11/21(木) 09:32:00.36ID:i/7SJRFV
切り出すと特定の関数から一度しか呼ばれない関数がででるから、
それが無意味というか、むしろ関数のシンボルが増えるし
上から下に連続的にソースコード読めなくなるしでダメだと言っているのだろう

でもそれってRust以外の言語でも同様の話であって、なぜそれでもなぜ切り出すべきかは語りつくされてる
それでもRust固有の事情で反論があるなら書いてくれ
0707デフォルトの名無しさん
垢版 |
2019/11/21(木) 12:20:05.12ID:YlKoSulN
>>705
全くあなたの言う通り、そしてRust固有の話ではない
0708デフォルトの名無しさん
垢版 |
2019/11/21(木) 13:17:36.82ID:ymw8VtjB
>>705
関数切るとその分だけ借用とか生存期間とかの問題が増えるんよ
関数跨いだ変数の扱いが非直感的すぎる
関数に分けるとコンパイル通らなくなる事例が多すぎるから
関数分けないモチベに繋がる
0709デフォルトの名無しさん
垢版 |
2019/11/21(木) 15:03:38.41ID:ByfXIyid
行儀の良くないプログラミングスタイルが
コンパイラに怒られてるだけに聞こえるなあ
例出してよ
0710デフォルトの名無しさん
垢版 |
2019/11/21(木) 17:54:01.27ID:Ju9cDeqK
>>707
長い関数書いてるかうちは半人前
うちのプロジェクトなら即リジェクト
深いネストもリジェクト
0712デフォルトの名無しさん
垢版 |
2019/11/21(木) 20:54:42.20ID:yV25mt1X
グローバルな型推論が無いのと型シグネチャが人に全然優しくないことに起因する、関数大きくなりがち問題はRust特有ですよ
最初から完成形があるわけでもないのに試行錯誤のコストを無視しちゃ駄目だ
0713デフォルトの名無しさん
垢版 |
2019/11/21(木) 21:02:13.57ID:YlKoSulN
>>710
小物臭すごいんで寄らないでください
0716デフォルトの名無しさん
垢版 |
2019/11/22(金) 09:52:07.52ID:G2a56k/U
苦労ぢゃ
0719デフォルトの名無しさん
垢版 |
2019/11/22(金) 14:48:50.24ID:ZeXcMQQW
確かにimpl traitなかった頃のクロージャ返しとか、asyncなかった頃のFuture返しとかは煩雑だったけど
現時点でそんな大変な型シグネチャってあるか?
0722デフォルトの名無しさん
垢版 |
2019/11/22(金) 20:26:37.15ID:aoRVpdgs
バージョンアップごとにリリースノート確認するくらいの手間をかけろ
0723デフォルトの名無しさん
垢版 |
2019/11/23(土) 00:04:27.77ID:OWOiuO7H
んな手間かけるくらいならまともなテストコード書くほうが
よっぽど安全性上がるわ。
バランスがおかしい。
0724デフォルトの名無しさん
垢版 |
2019/11/23(土) 00:14:14.42ID:ykHu5UNS
>>708
C/C++では関数分離は大事なこと考えずにやってたのかな?バグバグバグ
0725デフォルトの名無しさん
垢版 |
2019/11/23(土) 00:14:39.49ID:8L2VfF1O
リリースノート一回読む程度もやらない人が
Rustコンパイラと同等な網羅テストを毎回書けるとは思えんけどな。
0726デフォルトの名無しさん
垢版 |
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
0728デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:13:22.52ID:lsT6kO8T
filter_mapしゃんを使って書き換えるのは諸君らへの宿題とする
0730デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:39:19.44ID:lsT6kO8T
filter_mapしゃんをご存知ないのでしゅか
バグを出しにくい安全設計とはこうしゅるものでしゅ

https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=5c184061ecdc7537d8eb8ccc1c146238
0731デフォルトの名無しさん
垢版 |
2019/11/23(土) 03:44:01.49ID:lsT6kO8T
真の安全性はunwrap_or(init)なんて与えないことなんでしゅがね
取得したインデックスを使うことがある場合は空の2次元配列で死にましゅよ
0732デフォルトの名無しさん
垢版 |
2019/11/23(土) 04:57:43.99ID:OVg6D0Jq
インデックスとして使わなくても嘘の結果が表示されちゃうからOptionのままにして適切に表示を分けないといかんでしょな
0733デフォルトの名無しさん
垢版 |
2019/11/23(土) 12:05:56.79ID:cBKKqL2b
Rust用にソース書くときに結局Cでどうなってるか意識しないといけないのなら
最初からCで書いた方が良くね?ってなるよね
0734デフォルトの名無しさん
垢版 |
2019/11/23(土) 15:06:34.21ID:OVg6D0Jq
そういう世界もあるかもしれないけど意識しないでしょ
Cで書いてたって、Cでどうなってるか意識してないじゃん
0736デフォルトの名無しさん
垢版 |
2019/11/23(土) 22:15:20.19ID:OVg6D0Jq
そんなら最初からアセンブリで書いた方が良くね?
ってなるじゃん
アホくさ
0739デフォルトの名無しさん
垢版 |
2019/11/24(日) 10:36:10.48ID:L4eQsSCt
>>736
してないのか?低能
0740デフォルトの名無しさん
垢版 |
2019/11/24(日) 11:56:22.50ID:ce9gfhz8
朝起きたら一杯のアセンブリ茶。
毎日欠かしたことはありません。
0742デフォルトの名無しさん
垢版 |
2019/11/24(日) 17:36:26.10ID:vCPUEEji
Clangで組み込みをする場合はアセンブリを見るがRustでWEBやCLIを作るときはあまりIRは気にしないな
Rust書いていてClangを意識したことは一度もない。普通LLVM IRだろ
0743デフォルトの名無しさん
垢版 |
2019/11/24(日) 18:25:39.51ID:Ks3HYb8S
>>739
なにをだよ三下
0744デフォルトの名無しさん
垢版 |
2019/11/24(日) 20:12:55.63ID:kcqeQudy
低レイヤー向け言語だけど低レイヤーは触りたくないという
よくわからんユーザー向け言語
0746デフォルトの名無しさん
垢版 |
2019/11/25(月) 01:07:44.42ID:qlZVJnnp
巨乳レイヤーは触りたい。
0748デフォルトの名無しさん
垢版 |
2019/11/25(月) 13:05:19.75ID:pjJuONFZ
>>744
ほんそれ
0749デフォルトの名無しさん
垢版 |
2019/11/25(月) 13:33:41.16ID:Gs3bQI7D
出来て当たり前の事をやって「やったぜ!」→「いいね!」になるのが今の日本
他の人がやらない事をやる人は「奴は特別だ(俺は出来なくてもしょうがない)」とレッテルが貼られる
アセンブラを馬鹿にする奴をしばしば見かけるがマイコンとかだとアセンブラが使えると可能になる処理ってまだあるしな
0752デフォルトの名無しさん
垢版 |
2019/11/25(月) 16:33:29.05ID:TS/Fak3X
小学校高学年から中学二年くらいまでのアセンブリをペロペロしたいです
0753デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:00:15.74ID:veETdbiQ
ペロペロ
0754◆QZaw55cn4c
垢版 |
2019/11/25(月) 19:50:53.15ID:2aQAGKkK
>>746
巨乳がそんなにいいとは思いませんね、貧乳こそ正義
0755デフォルトの名無しさん
垢版 |
2019/11/25(月) 20:35:18.87ID:qlZVJnnp
フツ乳好き以外は精神異常者。
0760デフォルトの名無しさん
垢版 |
2019/11/26(火) 03:53:06.11ID:bRozRvY7
Yo!Yo!
0761デフォルトの名無しさん
垢版 |
2019/12/02(月) 16:08:55.09ID:0BLlGnXD
rustの親切コンパイラに慣れちゃった人は
他言語でもrustの親切コンパイラ感覚で雑なコーティングで不親切コンパイラを使ってバグを生み出すマシーンと化す
rust以外使えない体に…
0764デフォルトの名無しさん
垢版 |
2019/12/03(火) 12:13:06.00ID:yN5r9ueQ
またオレオレ増やしたんか
それとも破壊工作か
0765デフォルトの名無しさん
垢版 |
2019/12/03(火) 13:20:15.63ID:AhWfHQH2
これ前のニュースと同じじゃね?
windowsの開発に利用するのに必要なカスタムしてるだけだろ。いち利用者として。
0766デフォルトの名無しさん
垢版 |
2019/12/03(火) 13:29:34.30ID:3xgyI5/y
RustってDCTのイメージ
ポルシェとかフェラーリが使ってるあれ
0767デフォルトの名無しさん
垢版 |
2019/12/03(火) 14:06:53.14ID:LOAssVxZ
ライフタイムパラメータの省略だったり、
derefやcopyをtraitで暗黙的な動作にしてたり
そういうのがバグを生みやすいってことわからんのかね。
0769デフォルトの名無しさん
垢版 |
2019/12/03(火) 14:25:00.78ID:jDo5c24e
>>765
前のニュースとは違うね
https://vimeo.com/376180843

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

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

たんにRustにダイブして良し悪しを知ろうとしているだけ
0773デフォルトの名無しさん
垢版 |
2019/12/03(火) 23:09:05.32ID:S0RbQ8S1
昔MS Researchがハードウェア記述言語向けの開発ツールを本格的に作るって言ったことがあってすごく期待したんだけど、
結局大した成果もなく立ち消えになったのを思い出した…。
0774デフォルトの名無しさん
垢版 |
2019/12/04(水) 10:23:20.50ID:sb3P/SSe
昔二羽ンゴが動画配信向けのFPGAを本格的に作るって言ったことがあってすごく期待したんだけど、
結局大した成果もなく立ち消えになったのを思い出した…。
0777デフォルトの名無しさん
垢版 |
2019/12/04(水) 14:52:56.01ID:O7fLJ+Es
海荷
0780デフォルトの名無しさん
垢版 |
2019/12/04(水) 17:09:35.24ID:oHIt+BCl
現在開催中のAI Cup 2019というプログラミングコンテストにRust使って参加してRustの強さを知らしめようぜ!

https://russianaicup.ru
0785デフォルトの名無しさん
垢版 |
2019/12/05(木) 22:13:17.54ID:tXHfD70q
自分で作れよ
0786デフォルトの名無しさん
垢版 |
2019/12/06(金) 10:11:30.49ID:uUae0oO6
Rustみたいに開発効率良くてデバッグもし易い言語ωなら
GUIフレームワークもゲームエンジンも爆高速で開発出来るよね
0787デフォルトの名無しさん
垢版 |
2019/12/06(金) 11:31:33.35ID:+xYMF8dR
ゲームエンジンはAmethystとかggezが頑張ってるのかな

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

第5回 Asprova プログラミングコンテスト
https://atcoder.jp/contests/asprocon5
0791デフォルトの名無しさん
垢版 |
2019/12/07(土) 12:34:40.83ID:ZsYnLuoj
もう少しコネクション保持したサーバープログラムをどうすんのとかサンプルほしいわ。
0793デフォルトの名無しさん
垢版 |
2019/12/07(土) 12:49:57.95ID:ZsYnLuoj
それはそうだが、オブジェクトの寿命を意識したプログラム例として参考にしたい。
0794デフォルトの名無しさん
垢版 |
2019/12/07(土) 20:37:03.33ID:RmCIdZSZ
tokioのサンプルじゃいかんのけ?
0798デフォルトの名無しさん
垢版 |
2019/12/09(月) 00:13:28.83ID:JoeodElM
Rustはまず名前変えないと無理だろ
Rustってググってもゲェムしか出てこねぇよ
0800デフォルトの名無しさん
垢版 |
2019/12/09(月) 00:44:07.34ID:FD9BPIub
Rustでググってもほぼほぼ言語のことしか出てこない
グーグル先生のカスタマイズ次第やろ
0803デフォルトの名無しさん
垢版 |
2019/12/09(月) 08:27:48.55ID:dsA8mCuW
そんなの気にしないって
しょうもないゲン担ぎを気にする日本企業じゃあるまいし
0805デフォルトの名無しさん
垢版 |
2019/12/09(月) 10:51:01.09ID:RLwtKsqp
MSが関わるとろくなことにならない
0807デフォルトの名無しさん
垢版 |
2019/12/11(水) 06:49:16.28ID:5CG8kH4I
メソッドとかに副作用を明示出来る構文あったりする?(引数のmut明示以外の副作用で)
0808デフォルトの名無しさん
垢版 |
2019/12/11(水) 08:36:28.70ID:9rEgLiZN
orbtkが0.3.1alpha1になっていた。native, elctron,browserに対応していて、どれも一発で動いた。windows, Linuxで検証。
0810デフォルトの名無しさん
垢版 |
2019/12/11(水) 16:37:17.47ID:NScZxG9p
>>808
winでサンプルさくっと動いていい感じだけど、もうちょっとネイティブな外観が欲しいんだよな
今はC#かPowerShellで書いちゃうけど
0813デフォルトの名無しさん
垢版 |
2019/12/12(木) 02:04:36.99ID:Nnj2Mpq2
DCESみたいなオリジナルのecsと違う技術的に説明すらされてないオレオレecsが増えてゆくな。
0815デフォルトの名無しさん
垢版 |
2019/12/12(木) 17:19:37.23ID:ZgrZOUXi
>>814
リアルタイム性が重要でなくて、
そこそこの実行速度でよければGoでいいじゃん
競合しないと思うが
0816デフォルトの名無しさん
垢版 |
2019/12/12(木) 17:31:07.39ID:Ijd1d2r8
>>815
そもそもプラットフォームにWebを選んだ時点でリアルタイム性や実行速度はそこそこで十分だからなあ
それらが重要になるのはもっと保守的な領域なので、Rustとかいうポッと出の言語は知られてすらいない
0818デフォルトの名無しさん
垢版 |
2019/12/12(木) 18:32:44.32ID:Lo+C9eAO
引越は引越のANT
0820デフォルトの名無しさん
垢版 |
2019/12/12(木) 21:37:13.27ID:QcnezoE2
俺はRustでいいじゃんと思うけど
0824デフォルトの名無しさん
垢版 |
2019/12/12(木) 22:28:50.79ID:QcnezoE2
その人のブログはとても勉強になる
0825デフォルトの名無しさん
垢版 |
2019/12/13(金) 00:13:33.89ID:WNmLBJqN
Webって技術的には正直面白くないからなあ
だからリビドーを持て余した連中は変な言語に走る
0830デフォルトの名無しさん
垢版 |
2019/12/13(金) 21:22:09.48ID:AirhCkz9
example動かしてみたけど
これはゲームUI専用のやつなんだな
OSのウィジェット使ってないからクリップボード使えないし
日本語入力も出来ない
0831デフォルトの名無しさん
垢版 |
2019/12/13(金) 22:27:30.69ID:wVI96F7k
C ABIから使えるネイティブウィジェットのGUIツールキットTcl/Tkが候補に挙がるくらい少ない
0833デフォルトの名無しさん
垢版 |
2019/12/17(火) 21:59:30.10ID:xN+qS68V
Iced も example tour 見てみた感じよさそうに思った
ただご多分に漏れず日本語は入力できない(□になった)
難しいんかね ttps://github.com/hecrj/iced/issues/103
0836デフォルトの名無しさん
垢版 |
2019/12/23(月) 20:42:31.88ID:sS1JWXeN
elmは絶対に流行らない首をかけてもいい
0838デフォルトの名無しさん
垢版 |
2019/12/23(月) 22:27:56.54ID:0aHLh1ru
もじらが作ってmsがおうえんしてくれてふだろ。
で?elmは?w
0843デフォルトの名無しさん
垢版 |
2019/12/25(水) 23:38:34.92ID:rtgRmFxx
プロセスはスレッドが別のこともあるけど、別スレッドで動作するものをふつうコルーチンとは呼ばないね。
0847デフォルトの名無しさん
垢版 |
2019/12/27(金) 20:57:38.45ID:zMa/58Jf
>>832
兵器産業ではあるあるかもしれん
現行F-2のFBWのコードは小さいROMによく収まったなあという意味で芸術品との噂
0850デフォルトの名無しさん
垢版 |
2019/12/27(金) 23:40:09.93ID:CoHNsOHu
それをロンチ後に味わうよりずっといい
0855デフォルトの名無しさん
垢版 |
2020/01/01(水) 08:04:30.24ID:6zSEt3Eo
重量プロセス
0856デフォルトの名無しさん
垢版 |
2020/01/03(金) 00:21:36.29ID:4CdCqvzm
なんか,外部クレートを取ってこれなくなってない?
サーバ側がバグってる?
0859デフォルトの名無しさん
垢版 |
2020/01/13(月) 02:25:37.87ID:kbEHI+CO
C系のワンラインifや?演算子は悪しき文化だと思うこの頃
最近書かれたOSSのコードにも多用されていたりするから笑えない
もちろんRustでそんな邪悪な書き方は許されていないけど
0860デフォルトの名無しさん
垢版 |
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にせざるおえない
0863デフォルトの名無しさん
垢版 |
2020/01/13(月) 15:23:43.45ID:xcD2sz0v
そんなカスな書き方にこだわるくらいならconstでなくても困らんくらいに関数きれや。
0864デフォルトの名無しさん
垢版 |
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

優先順が判りにくい
0867デフォルトの名無しさん
垢版 |
2020/01/13(月) 23:22:40.80ID:xcD2sz0v
まあ実践的なコードになればなるほど、
mut, unsafe, refcell使いまくりだからな。。
0869デフォルトの名無しさん
垢版 |
2020/01/14(火) 16:22:27.20ID:uFo9dhko
>>849 俺も、昔C言語で苦しんだな。誰にも教えてもらえないし、しかしその分人より詳しくなったよ。
C言語に詳しくなるって事は、弱点も知ることになる、そしてその弱点からどう逃げるか?そういうことも考えるようになる。

Rustの逆引き辞典みたいなハンドブックがインターネットに転がってないかなぁ
0871デフォルトの名無しさん
垢版 |
2020/01/14(火) 19:21:50.48ID:tuFEGmKg
moveのコストってみんな気にしてる?
Cだったらポインタ渡すだけだったり
ポインタを返すだけだったりで最小限な感あるけど
rustじゃポインタ中心でやりくりしないよね
0872デフォルトの名無しさん
垢版 |
2020/01/14(火) 20:12:08.07ID:bWQIptzM
コンパイラの最適化で消えるんじゃないの?知らんけど
moveコストが気になるってどんなプログラムか想像付かないけどゲームとか?
0873デフォルトの名無しさん
垢版 |
2020/01/14(火) 22:36:34.11ID:fFlEK4SW
普通moveコストが気になるほど巨大なものをスタックに置かないのでは。
あとCでポインタ渡すケースなら普通は参照渡しだろうし。
0875デフォルトの名無しさん
垢版 |
2020/01/14(火) 23:35:09.81ID:ngXFRoSC
>>867
つまりRustは実践的でなく、FireFoxが沈みつつあるのはそのせいだと。

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

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

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

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

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

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

俺の意見としては、RustとCでセキュリティガー、ってことにはならんよ。
あれは書く側の問題で、言語の問題ではない。
0887デフォルトの名無しさん
垢版 |
2020/01/16(木) 00:41:04.84ID:o+vnDRH4
>>886
日本語が不自由なら半島に帰れ
日本語が出来るつもりなら正しく伝わるように言え

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

CとRustの対比で「セキュリティホール」を持ち出している時点で意味不明だが、
お前が言っていることに直接言及するならこうなる。
これには反論出来るのか?
0890デフォルトの名無しさん
垢版 |
2020/01/16(木) 01:20:17.86ID:o1pVy6eo
問題を起こさない人が書いたコードには問題がない
という主張になんの意味があるんだ
そりゃそうだろとしか言いようがない

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

「馬鹿」は運転するなと?
「馬鹿」と言い切ってしまうから、問題がややこしくなる。感情的になるような気がする。
馬鹿除けとは、微妙な表現だ。
0893デフォルトの名無しさん
垢版 |
2020/01/16(木) 06:09:04.61ID:iXD/XJ1o
微妙だが実際linuxはそれで成功してるしな。。
馬鹿よけがびっくりするほど効果的だったという事実。
0894デフォルトの名無しさん
垢版 |
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を躊躇なく使うし、それでも問題ないわけで。
0895デフォルトの名無しさん
垢版 |
2020/01/16(木) 23:17:33.90ID:o+vnDRH4
そもそも何でもかんでも馬鹿中心に考えるのは馬鹿の思い上がりであって、
例えばGCにしても、「GCが無いとリークしまくる馬鹿の為の補助輪」ではなく、
「メモリ管理の煩わしさからプログラマを解放する」為の物であり、当然暗に「その先」を目指している。
だからそもそもCすらまともに使えない奴がRustを使うのが間違いで、
(実際どうかはさておき、目指しているところは)Rustはより生産性が高いというわけだから、
基本ラインとしては,、「Cだとメンドクセエ」「Cだと俺の理想のコードにならねえ」と思う奴が使う言語だろ。

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

なんにせよ巨人の肩に乗ってマウントした気になっても万人がそれで納得するとは限らないし逆効果もあるぞ
0910デフォルトの名無しさん
垢版 |
2020/01/19(日) 06:19:04.90ID:npSn4vFb
なんか以前書き込んだはずのレスができてなくてロードしたら送信されたっぽい
>>893辺りへのレスだが恥ずかしいからROMるわ、すまんな
0911デフォルトの名無しさん
垢版 |
2020/01/19(日) 09:48:12.84ID:TwfOJbH4
>>907
cargoの欠点答えてくれてありがとう
正しいcargoの立ち位置としてパッケージマネジャーの仕事だけして、今cargoがしてるビルドツールのラッパー要素を別にして、その別のでcargoとructcを単純に抽象化したら結構解決するってことかな?
0912デフォルトの名無しさん
垢版 |
2020/01/19(日) 10:13:54.83ID:L2mlhsAt
>>909
なにからなにまでずれすぎててどっからつっこだらいいのやら。。
clangとlinuxは全く関係ないし、
リーナスがrust推しだったらとかプログラムの好みからしてそれだったらlinux作っとらんしとか
どこからどこまでも間違ってるとしか言いようがない。
仮定としてできることとしたらc++テンプレートの信頼性が当時高かったらとかその程度だろう。
それでもc++を使うことはなかっただろうと思うが。
0913デフォルトの名無しさん
垢版 |
2020/01/19(日) 10:31:40.67ID:PM2cmccN
LinusにRustを教えたのがアワシロイクヤ氏だったのも良かったんじゃないか。
人柄だな。
0914デフォルトの名無しさん
垢版 |
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倍以上の手間がかかってしまう。
よってこれはプロジェクトにとっては大問題で、絶対にやってはいけないのだが、これを防ぐことは今現在出来ない。
というか、今の言語はまだここまで進化出来ていない。
0915デフォルトの名無しさん
垢版 |
2020/01/19(日) 11:07:44.98ID:QWtapXFZ
だからこれは、長期的には「どのレベルの人まで受け入れるか」「それで十分な人数が確保出来るか」であり、
C++を丸ごと切り捨てているLinuxは相当思い切った判断だが、それでも何とかなっているし、
結果的には、全く保護機構のないCだとこれが正解だ、ということでしかない。

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

だから、個人的には、正解は「C+外部検査(リンター)」だと思っている。
今で言うとTypeScriptみたいな、チェック機構外付けの言語とかだ。
静的検査が出来る=静的検査をリンターとして外部に切り出せる、でしかないから、
静的検査メインで言語を拡張するのはナンセンスだ。
(Rustはそうではないが)
0916デフォルトの名無しさん
垢版 |
2020/01/19(日) 11:13:46.05ID:PM2cmccN
アワシロさんはそうは言ってなかったな。
むしろRustは普遍的にどこでも使えると説いてた。
0917デフォルトの名無しさん
垢版 |
2020/01/19(日) 11:19:38.67ID:PM2cmccN
Rustは銀の弾丸足りえると世界の重鎮が口をそろえるし、俺はお前よりアワシロイクヤ氏を信じるね。
0918デフォルトの名無しさん
垢版 |
2020/01/19(日) 11:52:50.23ID:7W3/Ww9S
・論拠と解釈がオレオレ過ぎ
・安全性に対する理解が浅すぎ
・プロジェクトの成功/失敗に対する見識が甘すぎ
・面白くないくせにレス長過ぎ
0919デフォルトの名無しさん
垢版 |
2020/01/19(日) 12:13:02.49ID:xMKry/BQ
そもそもFirefoxのほとんどはC++なんだから、言語のせいにしたいならC++のせいってことでは。
0920デフォルトの名無しさん
垢版 |
2020/01/19(日) 12:39:52.36ID:L2mlhsAt
まあlinusが良く言ってるようにじゃあそれで作ってみれば?って話なんだわな。
そして誰も作らないというのが答え。
0921デフォルトの名無しさん
垢版 |
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自体に意味がないか、時期が早すぎたかのどちらかで、どちらかは今後確定する。
それとは別に、コミュニティがおかしな方向に腐っている、というのは既に発生しているようだが。
0923デフォルトの名無しさん
垢版 |
2020/01/19(日) 15:56:33.65ID:ehZNNwbS
また禿の話してる
よく飽きないな
0924デフォルトの名無しさん
垢版 |
2020/01/19(日) 17:14:22.99ID:TwfOJbH4
servoって失敗してるの?
根拠かソース欲しいな
0926デフォルトの名無しさん
垢版 |
2020/01/19(日) 17:59:29.14ID:TwfOJbH4
>>925
servoの現状知らないから聞きたかっただけなんだけどなぁ・・・
他人を勝手に敵と思って攻撃するような人間で君(QWtapXFZ)を信頼できると思うのかな、他の人は。
長文先輩は興味なかったけどキモいな
0927デフォルトの名無しさん
垢版 |
2020/01/19(日) 17:59:49.13ID:L2mlhsAt
servoのコード見る限りはrustで書く意味なくね?って感じだがな。。
ほとんどunsafeコードだし。
0928デフォルトの名無しさん
垢版 |
2020/01/19(日) 18:31:53.27ID:PM2cmccN
Rustはコンパイルを通ればバグが無いことがある程度保障される。
それがC++やJavaに対するアドバンテージ。
0929デフォルトの名無しさん
垢版 |
2020/01/19(日) 19:37:27.07ID:QWtapXFZ
>>928
それHaskellも言ってたけどな。

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

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

いずれにしても、俺は静的検査はリンターとして分離出来ると思っているから、
そこに差別化要因を求めるのは間違いだと思ってる。
コミュニティが機能していれば、本当にRustの静的検査能力が素晴らしいとなれば、
リンターとしてC++やJavaやPythonにポーティングしようとする奴は必ず出てくるし、技術的にも大して問題ない。
その後で何も残らんだろ、Rustには。
0930デフォルトの名無しさん
垢版 |
2020/01/19(日) 19:48:55.59ID:EjNCf+Xg
RustだJavaだとか比較する以前に
ちゃんとプログラ厶書いたか怪しいレベルなのがわかる
0931デフォルトの名無しさん
垢版 |
2020/01/19(日) 20:40:52.98ID:TwfOJbH4
長文先輩がコーディングするわけないじゃん、机上の空論が大好きだから
0932デフォルトの名無しさん
垢版 |
2020/01/19(日) 21:35:55.76ID:K0reTlt5
Cを問題なく書く人がRustのコンパイル通らないから足枷になっているという議論破綻しているような
潜在的の問題になりうるコード書いているからコンパイル通らないわけで
プログラムは動けば良いわけじゃないよね
0933デフォルトの名無しさん
垢版 |
2020/01/19(日) 22:16:57.63ID:L2mlhsAt
で、そういうコンパイルエラーが生じた際の処置の仕方に問題が起きやすいわけだよ。
バカだととくにね。
資源の解放タイミングなんかはだいぶグローバルな構造によってるわけで
コンパイルエラーのときに気づくようなバカがどういう修正を行うかだいたい予想はつくわな。
0934デフォルトの名無しさん
垢版 |
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強制なのは根本的に間違っている気はするが。
0936デフォルトの名無しさん
垢版 |
2020/01/20(月) 03:49:44.77ID:KSbNzMqr
LinuxがRustで書き直される時代に何言ってんだか。
0937デフォルトの名無しさん
垢版 |
2020/01/20(月) 04:11:09.68ID:YZhtkMgR
>>936
まじでそんな動きあるの?
0938デフォルトの名無しさん
垢版 |
2020/01/20(月) 05:00:13.14ID:KSbNzMqr
んなことも知らんと議論してたのか。
0939デフォルトの名無しさん
垢版 |
2020/01/20(月) 05:10:07.77ID:YZhtkMgR
ただの妄想じゃないの
0940デフォルトの名無しさん
垢版 |
2020/01/20(月) 05:15:03.08ID:KSbNzMqr
俺はあわしろいくや氏を信じてる。
0945デフォルトの名無しさん
垢版 |
2020/01/20(月) 10:53:33.32ID:NEzbRv6D
いずれにしろC/C++のような不安全な言語は極力避けようと言うのが世界的な流れ
0947デフォルトの名無しさん
垢版 |
2020/01/20(月) 20:28:06.68ID:tbWOohPK
でも使う言語にこだわらないでいると、化石みたいな生産性で競合と戦うハメになるよ
0948デフォルトの名無しさん
垢版 |
2020/01/20(月) 21:33:20.43ID:5waZG120
SIerなんてそもそもJava, PHP(笑)でゴミみたいな質のソースと、ゴミみたいなレガシー設計を量産するのが関の山だろww
0949デフォルトの名無しさん
垢版 |
2020/01/20(月) 21:57:55.02ID:cy4NQj+h
日本なんて情弱経営者ばかりだから数字さえ良ければ許されるだろ
実際はゴミクソの低能率作業が横行していようがどこ吹く風だ
0951デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:23:05.21ID:KSbNzMqr
それは良い考え。
0952デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:50:52.96ID:lnEeuZyw
actix-webの件はどうなるんかな
Rustが原因なわけじゃないけど、コミュニティの問題として見られるだろうし、使ってる側としては気が重い
0953デフォルトの名無しさん
垢版 |
2020/01/20(月) 22:55:48.60ID:lnEeuZyw
今見たらリポジトリ復活してた
0956デフォルトの名無しさん
垢版 |
2020/01/21(火) 11:08:07.76ID:tYXdVzB6
むしろMSがサポートするの嫌だろ
0960デフォルトの名無しさん
垢版 |
2020/01/22(水) 14:52:21.69ID:rj2HkyIb
>>959
メンテナがMS社員で
MS内部でもactix-webをproductionで使うプロジェクトが進んでた
そういう状況でunsafe叩きに嫌気が指してメンテナが降りたのに対して
MSはサポートに乗り出さないのだろうか?

と書けば理解できるかな?
0961デフォルトの名無しさん
垢版 |
2020/01/22(水) 16:14:36.89ID:Q1SWDCUb
MS社員はろくなのいないよな
メンタル弱かったらOSSすんなよ
0964デフォルトの名無しさん
垢版 |
2020/01/22(水) 19:24:15.52ID:rFx4FWy6
天文学者と物理学者と数学者がスコットランドで休暇を過ごしていた。列車の窓から眺めていると、平原の真ん中に黒い羊がいるのが見えた。

天文学者:なんてこった!スコットランドの羊はみんな真っ黒なんだね。
物理学者:違う違う。せいぜい何匹かが黒いだけさ。
数学者:(天を仰ぎながらやれやれという調子で、抑揚を付けて)スコットランドには、少なくとも1つの平原が存在し、そこに1匹の羊が居て、さらにこっち側の片面が黒いということが分かるだけさ。
0967デフォルトの名無しさん
垢版 |
2020/01/22(水) 20:34:35.15ID:Zee9zwDz
>>965
メモリセーフなRustでは不可能な(あるいは可能だが困難な)ことがCなら出来るって意味?
0968デフォルトの名無しさん
垢版 |
2020/01/23(木) 13:06:23.52ID:VWfJLmDE
Cを完全に理解していてCで完全なコードが描けるならRust要らん
逆は無理
0970デフォルトの名無しさん
垢版 |
2020/01/23(木) 13:12:17.92ID:qWVF2TJJ
いるだろ
0972デフォルトの名無しさん
垢版 |
2020/01/23(木) 14:58:11.16ID:77XEoAHk
人の命がかかってる以上、高々数万行でミスを犯すわけにはいかないだろ。
0974デフォルトの名無しさん
垢版 |
2020/01/23(木) 15:46:41.21ID:9sgUs0f4
完全な仕様が書けるなら
その仕様を完全にテストすることも可能だろうし
その範囲内で完全だと言えるコードは書けるだろう

それは仕様で定義されてないからUBですねー、バグじゃないっすよー
あの時はそれで完全だと思ってたんすよねー(๑´ڡ`๑)w
0975デフォルトの名無しさん
垢版 |
2020/01/23(木) 16:27:27.15ID:77XEoAHk
俺は完全な仕様が書ける。
0976デフォルトの名無しさん
垢版 |
2020/01/23(木) 17:33:46.14ID:BJTKYILD
「人間の能力は有限であるし、ミスもする」と言う認識がない奴ほど危険
このタイプ日本人に結構居るんだよな
0978デフォルトの名無しさん
垢版 |
2020/01/23(木) 22:14:21.71ID:1UIl+AJY
「俺は気を付けて書いてるから絶対ミスしない」なんて認識の人が書いたコードに命預けたくないなぁ。
0980デフォルトの名無しさん
垢版 |
2020/01/23(木) 23:42:34.70ID:cHzm9I9L
そこまで安全性気にするならGC使えや。
バカがrust使うよりもよっぽど安全だぞ。
0981デフォルトの名無しさん
垢版 |
2020/01/23(木) 23:47:09.63ID:nX/KPrtD
>>978
でも「俺は神様じゃないからミスはあるかも」なんて認識の人が書いたコードにも命預けたくはないな。
0982デフォルトの名無しさん
垢版 |
2020/01/23(木) 23:55:44.60ID:9sgUs0f4
>>979
一応突っ込んでおくけど
「完全な仕様とは何か」ってことを
仕様として定義してみてって話だぞ
0983デフォルトの名無しさん
垢版 |
2020/01/24(金) 00:16:37.07ID:rwHFQKuH
>>981
そんな認識の医者に命預けてるだろ
私失敗しないので、なんて無責任なこと言う医者はいない
0985デフォルトの名無しさん
垢版 |
2020/01/24(金) 01:38:54.34ID:+Rr3vO1D
「ミスしてるかも」と思うからテストするんじゃないの?
絶対ミスしないなら、書いた瞬間にテストなしでリリースできるはずなわけで。
0986デフォルトの名無しさん
垢版 |
2020/01/24(金) 01:48:15.59ID:M35o3kEk
そんな心の弱い人に任せられないわ。
まず精神科受診してきて。
0987デフォルトの名無しさん
垢版 |
2020/01/24(金) 07:59:29.01ID:A/8ugPLP
「私は強い、必ず成功する。バグについて心配するのは誤りである」
「日本人はもともと繊細なのである。これだけ注意深さを持ちながら、バグに困るなどというのは、ありえないことだ」
0990デフォルトの名無しさん
垢版 |
2020/01/24(金) 08:06:37.28ID:rwHFQKuH
テストではバグが無いことを証明できない
0991デフォルトの名無しさん
垢版 |
2020/01/24(金) 09:24:09.09ID:NJOcoGsq
形式証明って流行ってんのかね
0993デフォルトの名無しさん
垢版 |
2020/01/24(金) 12:00:03.19ID:ytRnz1Ft
>>978
>>981
アポロが50年間月へ行くのを諦めてる(躊躇してる)のもそれが原因らしいな
0994デフォルトの名無しさん
垢版 |
2020/01/24(金) 12:01:25.77ID:ytRnz1Ft
>>979
>>982
kneet最強ですね
0995デフォルトの名無しさん
垢版 |
2020/01/24(金) 20:21:57.21ID:f1L6KzBl
失敗しないと言い張る糞医者だったらセカンドオピニオンを薦める医者のが信用できるわ。
0997デフォルトの名無しさん
垢版 |
2020/01/25(土) 09:23:43.44ID:yPlwm7j6
埋め
0998デフォルトの名無しさん
垢版 |
2020/01/25(土) 09:24:03.41ID:yPlwm7j6
うめ
0999デフォルトの名無しさん
垢版 |
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を超えています。これ以上書き込みはできません。