Mozilla発のRust言語のスレ
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
Web上の実行環境
https://play.rust-lang.org
前スレ
https://mevius.5ch.net/test/read.cgi/tech/1507970294/
探検
Rust Part5
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/02/11(日) 20:07:24.54ID:ri7dLd1B2018/02/24(土) 15:42:04.98ID:F+bRKUHR
むしろコンパイルを通すことが難しくても効率的で安全なマシンコードを出力して欲しい奇特な人向けだけどな
性能無視して生産効率だけを求めるならボローチェッカーとかunsafeとかトレイトとか面倒な言語仕様はマジ辛い
ただ緩く書きたいだけならSwiftとかGoの方が絶対良いよな
ランタイムが馬鹿でかかろうが、goroutineが冗長コストだろうが、言語仕様が楽なそれらは生産効率が断然良い
性能無視して生産効率だけを求めるならボローチェッカーとかunsafeとかトレイトとか面倒な言語仕様はマジ辛い
ただ緩く書きたいだけならSwiftとかGoの方が絶対良いよな
ランタイムが馬鹿でかかろうが、goroutineが冗長コストだろうが、言語仕様が楽なそれらは生産効率が断然良い
2018/02/24(土) 16:20:16.21ID:VjJ87j7v
安全はともかく、Rustが効率的なマシンコードを出力するというのは同意しかねる
2018/02/24(土) 22:13:15.47ID:Z3ajdh1I
やはりD言語が最強か
2018/02/27(火) 14:30:57.99ID:b6IHds+I
ソースとマシンコードが一対一になる言語は安心感あるな
98デフォルトの名無しさん
2018/02/27(火) 14:35:36.74ID:UR+NQY+Q やはりアセンブラか
99デフォルトの名無しさん
2018/02/27(火) 14:36:01.06ID:MLnedvVc 【UFO】 山本太郎も横浜で遭遇 ≪W◇″型の発光体≫ 世界にテレパシー放送 【大宣言】
http://rosie.5ch.net/test/read.cgi/liveplus/1519704223/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1519704223/l50
100デフォルトの名無しさん
2018/03/01(木) 00:41:00.21 【お知らせ】Packt出版より Network Programming with Rust が発売されました。
101デフォルトの名無しさん
2018/03/05(月) 15:59:00.63ID:iGOVMObf https://play.rust-lang.org/?gist=0bed0aa16c0679665fee05cc6bfda41f&version=nightly
fn nanka() -> Option<u32>{
println!("nanka called");
None
}
fn nanka2() -> Option<u32>{
println!("nanka2 called");
None
}
fn nanka3() -> Option<u32>{
println!("nanka3 called");
None
}
fn main() {
match (nanka(), nanka2(), nanka3()){
(None, _, _) => println!("nanka ha None"),
(Some(_), Some(_), Some(_)) => println!("some"),
(_, _, _) => println!("else")
}
}
nanka2, nanka3が呼ばれなくて困る!って副作用があるパターンぐらいじゃないですか?
nanka1がNoneと判定した時点ですぐprintしてくれないものでしょうか
fn nanka() -> Option<u32>{
println!("nanka called");
None
}
fn nanka2() -> Option<u32>{
println!("nanka2 called");
None
}
fn nanka3() -> Option<u32>{
println!("nanka3 called");
None
}
fn main() {
match (nanka(), nanka2(), nanka3()){
(None, _, _) => println!("nanka ha None"),
(Some(_), Some(_), Some(_)) => println!("some"),
(_, _, _) => println!("else")
}
}
nanka2, nanka3が呼ばれなくて困る!って副作用があるパターンぐらいじゃないですか?
nanka1がNoneと判定した時点ですぐprintしてくれないものでしょうか
102デフォルトの名無しさん
2018/03/05(月) 19:46:36.35ID:S3T8EfYp println!("nanka2 called"); とか副作用あるよね
103デフォルトの名無しさん
2018/03/05(月) 21:01:55.89ID:YH1rjFLX まさに副作用あって呼ばれなきゃ困るパターン書いてて草
104デフォルトの名無しさん
2018/03/05(月) 21:44:52.21ID:rDxXu9uq 遅延評価の言語ではないから言語仕様的に全部評価することが保証されてるからなぁ
副作用なくて同じcrate内に処理があるなら最適化で消えるのでは
副作用なくて同じcrate内に処理があるなら最適化で消えるのでは
105デフォルトの名無しさん
2018/03/07(水) 19:29:12.10ID:LRCrToXv 横着してたから気づかなかった…
>>104
https://play.rust-lang.org/?gist=548477e609761c03d062880ceebec28a&version=stable
MIR見る限りあるっぽいです(これ副作用ないですよね?)
>>104
https://play.rust-lang.org/?gist=548477e609761c03d062880ceebec28a&version=stable
MIR見る限りあるっぽいです(これ副作用ないですよね?)
106デフォルトの名無しさん
2018/03/07(水) 21:27:53.74ID:VXG6nm0Z 良く分からないけどReleaseにしてASM見ると消えてるみたい
MIRに対する最適化は現時点ではそれほどやられてなさそう
MIRに対する最適化は現時点ではそれほどやられてなさそう
107デフォルトの名無しさん
2018/03/07(水) 21:51:00.14ID:LRCrToXv108デフォルトの名無しさん
2018/03/07(水) 22:06:37.97ID:5W30026P 言語仕様で消えるってどっか書いてある?探したけど見つからんかった
109デフォルトの名無しさん
2018/03/07(水) 22:42:40.55ID:MkNIh69G110デフォルトの名無しさん
2018/03/08(木) 07:35:45.52ID:VN6/Zkeb 会社大変だから許してあげよう
111デフォルトの名無しさん
2018/03/08(木) 09:01:09.79ID:SDzhQ04b >>108
最適化の話だから言語仕様では決められてないと思う
最適化の話だから言語仕様では決められてないと思う
112デフォルトの名無しさん
2018/03/08(木) 13:04:24.48ID:XQ95i3sC あのtanakhですら擁護できなくなってきたRustとかいう何か
やっぱクソ言語じゃん
やっぱクソ言語じゃん
113デフォルトの名無しさん
2018/03/08(木) 13:05:40.24ID:FYuhJ3+Z 逆にたなこふ氏が好きな言語って何だよ
Haskellくらいだろ
Haskellくらいだろ
114デフォルトの名無しさん
2018/03/08(木) 13:10:19.32ID:FYuhJ3+Z115デフォルトの名無しさん
2018/03/08(木) 13:42:39.37ID:XQ95i3sC いくつか言語……?ってなるのが混じってるな
116デフォルトの名無しさん
2018/03/08(木) 17:46:17.85ID:3H4xAb5h >>114
Rust評価高いくてGoは糞って評価だな。
Rust評価高いくてGoは糞って評価だな。
117デフォルトの名無しさん
2018/03/08(木) 20:48:12.88ID:Qr0iRnUQ 絶対一緒に仕事したくないようなコード書きそうな人柄なのがよくわかるのはいいことだね。
118デフォルトの名無しさん
2018/03/09(金) 02:34:49.09ID:C5IjE5Kn スタック使うかヒープ使うか考えなきゃいけないしマジで低級言語だなRust
119デフォルトの名無しさん
2018/03/09(金) 09:09:56.97ID:MtNghMxY 低級プログラミング言語というときの低級は必ずしも蔑む意味とはならない
120デフォルトの名無しさん
2018/03/09(金) 12:35:50.11ID:Awo4Q9T/ >>118は別に蔑んでないと思うが…
121デフォルトの名無しさん
2018/03/09(金) 12:41:07.31ID:X+hGjMr5 118が低級
122デフォルトの名無しさん
2018/03/09(金) 13:10:31.19ID:Awo4Q9T/ どう読んでも>>118は事実を言っただけでrustを誉めても貶してもいないと思うが…
「CはPythonよりも低級言語」これC言語を蔑んでる意味で取るアホなんているの?
「CはPythonよりも低級言語」これC言語を蔑んでる意味で取るアホなんているの?
123デフォルトの名無しさん
2018/03/09(金) 17:25:20.32ID:4MawrcZA 初心者は大体そのように取るよ
124デフォルトの名無しさん
2018/03/09(金) 17:29:38.88ID:Oir5mzi3 はいはいわかったわかった
125デフォルトの名無しさん
2018/03/09(金) 18:10:23.86ID:TjQY2cN8 枯れてる言われて古いんだなと思ってそう
126デフォルトの名無しさん
2018/03/10(土) 02:47:36.63ID:RGnl5SiL 高級言語のcobol最強ですかね
127デフォルトの名無しさん
2018/03/10(土) 04:12:59.75ID:YINDWKAW 蔑んでいるように見えるのはあなた自身が心の奥底でRustを蔑んでいるのです
128デフォルトの名無しさん
2018/03/10(土) 07:06:56.73ID:PbOmOUXH はいはいわかったわかった
129デフォルトの名無しさん
2018/03/11(日) 03:31:49.17ID:UKNdLJMW 1つのstructにいっぱい詰め込むと初期化が面倒なんですが
130デフォルトの名無しさん
2018/03/11(日) 04:15:48.10ID:4b/1QsDB new()用意しとけ
131デフォルトの名無しさん
2018/03/11(日) 13:22:28.79ID:vP34sga0 derive(Default)使えば
132デフォルトの名無しさん
2018/03/11(日) 13:57:51.99ID:91F3yKR+ よくインターネット上の広告で半年でエンジニアに!みたいなのあるけど、インターネット不得手、プログラム未経験者が真剣に半年頑張れば本当にそんなこと可能なんですか?
可能ならその理由はなんでしょう?人材が足りていないというのは存じ上げていますが
可能ならその理由はなんでしょう?人材が足りていないというのは存じ上げていますが
133デフォルトの名無しさん
2018/03/11(日) 13:58:22.81ID:91F3yKR+ ごめんなさい誤爆しました
134デフォルトの名無しさん
2018/03/11(日) 14:13:04.94ID:zWe+i43K >>132
言われたことやるだけなら可能じゃね?
言われたことやるだけなら可能じゃね?
135デフォルトの名無しさん
2018/03/18(日) 21:30:14.47ID:jQGugCpv >>8
今更だけどこれ書いた奴もブコメした奴も誰一人rustまともに使ったこと無さそうで草
今更だけどこれ書いた奴もブコメした奴も誰一人rustまともに使ったこと無さそうで草
136デフォルトの名無しさん
2018/03/19(月) 15:39:12.03ID:dH7nnHk9137デフォルトの名無しさん
2018/03/19(月) 19:45:41.61ID:ahbMAcYG 俺の技量不足なんだろうけどmutmut地獄は確かにわかる
138デフォルトの名無しさん
2018/03/19(月) 20:01:00.05ID:dH7nnHk9139デフォルトの名無しさん
2018/03/19(月) 20:11:12.51ID:bbBltail C++erだったのでconst地獄はむしろ慣れてるので歓迎
140デフォルトの名無しさん
2018/03/19(月) 20:37:55.38ID:+FMR/dfx 一方、記述の美しさを重視する Nim では let と var に分けた
141デフォルトの名無しさん
2018/03/19(月) 21:23:39.57ID:dH7nnHk9 Nimは引数を可変にしようとすると下記のようになる。
proc test(x: var string): string =
x = x & " world"
return x
var x = "hello"
let y = test(x)
echo y
関数宣言で引数にvarと書かなきゃ可変にできないんじゃRustとそれほど手間は変わらない
それに、宣言はvarと書かせるクセに呼び出し側がtest(var x)じゃなくてtest(x)となるのが解せない
これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
C++と同じ類の過ちを犯してる
簡潔ではあるかもしれないが全然美しくない(美しいの定義によるが…)
https://play.nim-lang.org/?gist=9e8b6b6059cf8640f6c71fd2075b07c8
proc test(x: var string): string =
x = x & " world"
return x
var x = "hello"
let y = test(x)
echo y
関数宣言で引数にvarと書かなきゃ可変にできないんじゃRustとそれほど手間は変わらない
それに、宣言はvarと書かせるクセに呼び出し側がtest(var x)じゃなくてtest(x)となるのが解せない
これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
C++と同じ類の過ちを犯してる
簡潔ではあるかもしれないが全然美しくない(美しいの定義によるが…)
https://play.nim-lang.org/?gist=9e8b6b6059cf8640f6c71fd2075b07c8
142デフォルトの名無しさん
2018/03/19(月) 21:32:11.25ID:dH7nnHk9 あとRustの場合はそもそもmutは出来るだけ使うなという方針だから
mutの記述が面倒なのはワザとやってるという点もあるし…
mutの記述が面倒なのはワザとやってるという点もあるし…
143デフォルトの名無しさん
2018/03/20(火) 08:39:12.91ID:iuzVSye9 なるほど
144デフォルトの名無しさん
2018/03/20(火) 14:11:19.46ID:J0Id73NT > これじゃ呼び出し側を見ただけじゃxが不変か可変か判断できない
珍しいご意見ですよね。
珍しいご意見ですよね。
145デフォルトの名無しさん
2018/03/20(火) 16:01:11.80ID:/+MVnq9/ >>144
よくよく考えるとRustも呼び出し側にmut付けること自体は必須ではないんだよな
所有権を借用するために大抵は&mutを書かされるってだけで…
渡す変数の型がもともと&mut Tだった場合は書かなくてもいい…
Rustの場合は呼び出し側で&mut書く羽目になる経験が多かったので
俺が勝手に「可変にしたければmutを絶対に書かないといけない」という勘違いをしていただけか…
でも、書かされた方が読むときには分かりやすいので個人的にはこっちの方が好き
俺自身がNimはどうしても好きになれなくて不満点を挙げたつもりが自ら墓穴を掘ってしまった感じだな
一般的にはNimの方がよっぽど簡潔で美しいのかもしれない…
ただ単に俺の感性の方が狂ってるだけっぽいな…
よくよく考えるとRustも呼び出し側にmut付けること自体は必須ではないんだよな
所有権を借用するために大抵は&mutを書かされるってだけで…
渡す変数の型がもともと&mut Tだった場合は書かなくてもいい…
Rustの場合は呼び出し側で&mut書く羽目になる経験が多かったので
俺が勝手に「可変にしたければmutを絶対に書かないといけない」という勘違いをしていただけか…
でも、書かされた方が読むときには分かりやすいので個人的にはこっちの方が好き
俺自身がNimはどうしても好きになれなくて不満点を挙げたつもりが自ら墓穴を掘ってしまった感じだな
一般的にはNimの方がよっぽど簡潔で美しいのかもしれない…
ただ単に俺の感性の方が狂ってるだけっぽいな…
146デフォルトの名無しさん
2018/03/20(火) 16:05:30.99ID:ck80uwiX そんな珍しくもない気もするが
147デフォルトの名無しさん
2018/03/20(火) 21:24:24.10ID:kx/m1AUo 俺もそんな珍しくもないと思う
148デフォルトの名無しさん
2018/03/20(火) 23:15:30.72ID:RYTCq15b 「変数」が値に名前を付けたイメージに人とメモリ領域に名前を付けたイメージの人と
149デフォルトの名無しさん
2018/03/21(水) 00:20:42.31ID:mtmyqFMA データがメモリのスタック領域ヒープ領域あるいは別の領域などどこに記憶されるのかという低レベルなことを考慮しながらプログラミングしなきゃならない
変数とは何かと言えば
スタック領域の特定のメモリ番地に名前をつける行為でしかなく
所有権の委譲って何かと思えばそのメモリ番地の名前を変える行為でしかない
クソ
変数とは何かと言えば
スタック領域の特定のメモリ番地に名前をつける行為でしかなく
所有権の委譲って何かと思えばそのメモリ番地の名前を変える行為でしかない
クソ
150デフォルトの名無しさん
2018/03/21(水) 21:34:47.63ID:JvyRf7uK 分かりやすい説明だね
151デフォルトの名無しさん
2018/03/23(金) 00:30:01.20ID:DIa3/8ef GBAのプログラムを書いてみたいな。どうせならRustでやってみるか
ARMポートあったよね。Thumbコードも吐けるのかな
とか思ってググっていたら先人がいた。考えることはみんな一緒かw
ARMポートあったよね。Thumbコードも吐けるのかな
とか思ってググっていたら先人がいた。考えることはみんな一緒かw
152デフォルトの名無しさん
2018/03/23(金) 08:40:36.80ID:yG5SnYrv Unityが北欧のニートから生まれたって話を聞いて
Rustでゲームエンジン作ればワンチャンあるんじゃないかと思い始めてきた。
Rustでゲームエンジン作ればワンチャンあるんじゃないかと思い始めてきた。
153デフォルトの名無しさん
2018/03/23(金) 08:44:26.71ID:0DDzAR5J 気のせい。
154デフォルトの名無しさん
2018/03/23(金) 10:01:19.78ID:+d3L/XtB あるかもね
155デフォルトの名無しさん
2018/03/24(土) 02:46:18.89ID:Q4O/QWqD unsafe使い始めたらCのがやっぱ楽じゃね?ってことにすぐなる。
156デフォルトの名無しさん
2018/03/24(土) 07:57:37.67ID:AYaIp/Or そしてメモリ周りのバグで悩まされた時にやっぱRustで書いときゃ良かったってなる
157デフォルトの名無しさん
2018/03/24(土) 11:41:10.67ID:lA18Hk/y バグなんてメモリに限ったことじゃないのにね
158デフォルトの名無しさん
2018/03/24(土) 12:51:11.00ID:6E9wdkyi 要因の種類が減るのは良いことだ
159デフォルトの名無しさん
2018/03/24(土) 19:57:38.34ID:Hl/X5tEX rust未経験者なんだけど、この言語ってweb開発には向いてないの?
goより高度なこと出来るならweb開発も全然苦じゃないように思うんだけど
何かしらweb開発に向いてない要素あんるんかな?
goより高度なこと出来るならweb開発も全然苦じゃないように思うんだけど
何かしらweb開発に向いてない要素あんるんかな?
160デフォルトの名無しさん
2018/03/24(土) 20:11:16.11ID:lcHhOSrB DOMいじれんの?
161デフォルトの名無しさん
2018/03/24(土) 20:22:46.33ID:Hl/X5tEX ごめん。聞き方がふんわりしてた。
webのバックグラウンドで動いてるrestAPIサーバに向いてない要因は何かあるのかな?
SPAとかマイクロサービスとかの構成でjavaとかgoとかの代わりに成り得るのかなって。
webのバックグラウンドで動いてるrestAPIサーバに向いてない要因は何かあるのかな?
SPAとかマイクロサービスとかの構成でjavaとかgoとかの代わりに成り得るのかなって。
162デフォルトの名無しさん
2018/03/24(土) 20:22:52.79ID:6E9wdkyi 一応WebAssemblyで吐けばRustのコードとJavaScriptのコードを混在出来るけど
軽く触っただけなんでデバッグなどの開発環境の事は未知数
軽く触っただけなんでデバッグなどの開発環境の事は未知数
163デフォルトの名無しさん
2018/03/24(土) 20:22:54.62ID:eKuOy/a9 >>160
無理
無理
164デフォルトの名無しさん
2018/03/24(土) 20:25:44.26ID:bGodUaM+ サーバ側でしょ?言語としては代わりになるだろうけどwebに向いてる部分てのが何を指してるかによるんじゃない
165デフォルトの名無しさん
2018/03/24(土) 20:33:09.05ID:Hl/X5tEX hello world出たからもう初心者と言っても過言ではない。。
>>164
個人的には静的言語ならどれも大差ないと思ってるんだけど、
その方面では全然注目されてないように見えたから何か原因があるのかなって。
>>164
個人的には静的言語ならどれも大差ないと思ってるんだけど、
その方面では全然注目されてないように見えたから何か原因があるのかなって。
166デフォルトの名無しさん
2018/03/24(土) 20:36:37.33ID:6E9wdkyi >>161
以前Goでサーバーサイド書いたことあって、バイナリ一つデプロイするお手軽さがとにかく良かった
といってもほんとに小機能で、WAFにEcho使って静的ファイル(CSS・画像)とか
レスポンスにDBから引っ張ったJSON返すRESTfulの出来損ないみたいのだけど
開発はWindows、デプロイ先がCentOSだったんだけど、
WindowsでCentOS用のバイナリ吐けるし、プロセスの再起動監視も今はDocker-composeがやってくれてるし(restart: always オプション)
Windowsで開発してPUSH、CIツールがCentOS用にバイナリ吐いて、CentOSではバイナリ受け取ったら
$ docker-compose down && docker-compose up -d --build
叩くだけでデプロイ完了っていう超絶お手軽、もちろんデプロイはAnsibleやItamaeで自動化しても良い
以前Goでサーバーサイド書いたことあって、バイナリ一つデプロイするお手軽さがとにかく良かった
といってもほんとに小機能で、WAFにEcho使って静的ファイル(CSS・画像)とか
レスポンスにDBから引っ張ったJSON返すRESTfulの出来損ないみたいのだけど
開発はWindows、デプロイ先がCentOSだったんだけど、
WindowsでCentOS用のバイナリ吐けるし、プロセスの再起動監視も今はDocker-composeがやってくれてるし(restart: always オプション)
Windowsで開発してPUSH、CIツールがCentOS用にバイナリ吐いて、CentOSではバイナリ受け取ったら
$ docker-compose down && docker-compose up -d --build
叩くだけでデプロイ完了っていう超絶お手軽、もちろんデプロイはAnsibleやItamaeで自動化しても良い
167デフォルトの名無しさん
2018/03/24(土) 20:51:06.97ID:Hl/X5tEX hello worldが10個出た。
>>166
goのシングルバイナリ良さそうだよね。
全然分かってないんだけど、rustでもちょびっと頑張れば
クロスコンパイルできるって認識なんだけど間違ってるのかな?
>>166
goのシングルバイナリ良さそうだよね。
全然分かってないんだけど、rustでもちょびっと頑張れば
クロスコンパイルできるって認識なんだけど間違ってるのかな?
168デフォルトの名無しさん
2018/03/24(土) 21:09:10.81ID:6E9wdkyi Rust経験浅いんで良く分かってない、一応nickelってWAFあるしrustupでコンパイル出来るから土台はあるけど
RustってわりとカジュアルにC製のライブラリをdllとして利用してるからそこが未知数
まあそれらのライブラリを使わなきゃいいんだろうけど
RustってわりとカジュアルにC製のライブラリをdllとして利用してるからそこが未知数
まあそれらのライブラリを使わなきゃいいんだろうけど
169デフォルトの名無しさん
2018/03/24(土) 21:09:38.20ID:6E9wdkyi rustupでクロスコンパイル
170デフォルトの名無しさん
2018/03/24(土) 21:17:38.55ID:Hl/X5tEX171デフォルトの名無しさん
2018/03/24(土) 21:29:23.70ID:LUxFSHaJ >>165
そういう観点なら学習コストが高いのがじゃくてんだと思う
そういう観点なら学習コストが高いのがじゃくてんだと思う
172デフォルトの名無しさん
2018/03/24(土) 21:45:47.85ID:glWbEBFl >>165
個人的にはGCありなしの差が大きい気はする。
特にweb系はGCがあって当たり前だから
急にlifetimeとか言われても…ってなりそうな。
C/C++だと結局脳内でlifetime管理してるから
そこの学習コストは相対的には低い。
個人的にはGCありなしの差が大きい気はする。
特にweb系はGCがあって当たり前だから
急にlifetimeとか言われても…ってなりそうな。
C/C++だと結局脳内でlifetime管理してるから
そこの学習コストは相対的には低い。
173デフォルトの名無しさん
2018/03/24(土) 22:12:42.54ID:AYaIp/Or174165
2018/03/24(土) 23:05:16.49ID:YaLUXLZ4 >>171
>>172
なるほど。確かにWEB系だと短い納期+人海戦術で乗り切ることも多いから
そういうのには辛そうだね。でも言語仕様的にWEB(の裏のサービス)が不得意という
訳では無さそうだから、細く長くやるようなサービスなら導入もアリっちゃアリという認識でいいのかな。
>>173
そだね。なんにもわからんわw っていうかWEBやっててGCであんまり困ったことないかも知れん。
困ったことがないことに起因して難易度が上がった言語を「使いたいです」って提案するにはちょっと強引さが必要そうやね。
今、初心者用の練習問題やってるんだけどメモリの管理なんて全然出てこない。
みんなどうやってRUSTの勉強してるの?やっぱり何か動くもの作ってみるのが早いかな?
>>172
なるほど。確かにWEB系だと短い納期+人海戦術で乗り切ることも多いから
そういうのには辛そうだね。でも言語仕様的にWEB(の裏のサービス)が不得意という
訳では無さそうだから、細く長くやるようなサービスなら導入もアリっちゃアリという認識でいいのかな。
>>173
そだね。なんにもわからんわw っていうかWEBやっててGCであんまり困ったことないかも知れん。
困ったことがないことに起因して難易度が上がった言語を「使いたいです」って提案するにはちょっと強引さが必要そうやね。
今、初心者用の練習問題やってるんだけどメモリの管理なんて全然出てこない。
みんなどうやってRUSTの勉強してるの?やっぱり何か動くもの作ってみるのが早いかな?
175デフォルトの名無しさん
2018/03/24(土) 23:11:45.93ID:gYQh0+lt 簡単なApp serverならrocketが楽だった
早くstableで動くようになってほしい
早くstableで動くようになってほしい
176デフォルトの名無しさん
2018/03/24(土) 23:49:05.34ID:AYaIp/Or177デフォルトの名無しさん
2018/03/24(土) 23:59:12.17ID:Z79Bg+7E GCは甘え。
プロなら自分で管理するべき。
プロなら自分で管理するべき。
178デフォルトの名無しさん
2018/03/25(日) 01:19:49.91ID:8WSI8ZZL GC無い言語でもファイルディスクリプタの解放は自前でする必要あるしリークの根幹はどっちも変わらんと思うけどな
むしろGC無い言語の方が循環参照の時の解放が面倒、C++でもweak_ptr使う必要出てきたり
むしろGC無い言語の方が循環参照の時の解放が面倒、C++でもweak_ptr使う必要出てきたり
179デフォルトの名無しさん
2018/03/25(日) 01:28:22.61ID:4Rittzre c++はやっぱraiiが便利。
gcあったって結局outofmemoryerrorになるなからなぁ。
だったらrustのようにコンパイラが所有権やライフタイムをチェックしてくれるのはいいと思う。
けど学習障壁高過ぎとも思う。
gcあったって結局outofmemoryerrorになるなからなぁ。
だったらrustのようにコンパイラが所有権やライフタイムをチェックしてくれるのはいいと思う。
けど学習障壁高過ぎとも思う。
180デフォルトの名無しさん
2018/03/25(日) 01:43:12.83ID:U5SlEUJl Nodeのメモリーリークはみんな苦戦してるみたいだけど。
181デフォルトの名無しさん
2018/03/25(日) 01:51:32.26ID:8WSI8ZZL Nodeは全部グローバル変数にするのが悪いんや
182デフォルトの名無しさん
2018/03/25(日) 02:05:56.01ID:BP/bYIjb183デフォルトの名無しさん
2018/03/25(日) 02:09:49.87ID:U5SlEUJl エラーにならないことが多すぎる。
忖度しすぎ言語の称号を与えたい。
忖度しすぎ言語の称号を与えたい。
184デフォルトの名無しさん
2018/03/25(日) 02:10:42.60ID:U5SlEUJl Nodeの問題点を一言でいえば、Javascript。
185デフォルトの名無しさん
2018/03/25(日) 03:01:01.34ID:wEE2niQx >>174
コストかけられるなら規模の大小関わらず大アリだよ
コストかけられるなら規模の大小関わらず大アリだよ
186174
2018/03/25(日) 08:53:35.72ID:tMB2K7Zl187デフォルトの名無しさん
2018/03/25(日) 09:17:52.51ID:2sZ1RJA+ >>182
イベントハンドラ解除は他言語でも明示的に書く必要ある
だけどクラスのデストラクタ・ファイナライザに書いといて各スコープで変数の寿命をちゃんと管理するコーディングの基本を守ってるだけで問題ないと言える
ここはRAII使えるC++やRustが最強、なんせ何も書かなくてもスコープから外れたらそれぞれデストラクタ・Dropを呼んでくれるんだし
次点でC#のDisposeとusingなどの専用構文、Javaはtry..finallyあるから及第点
でもグローバル変数だとそんなの働かない、プログラマが仕様とにらめっこしながらリークに気を使わないといけない、めんどい
イベントハンドラ解除は他言語でも明示的に書く必要ある
だけどクラスのデストラクタ・ファイナライザに書いといて各スコープで変数の寿命をちゃんと管理するコーディングの基本を守ってるだけで問題ないと言える
ここはRAII使えるC++やRustが最強、なんせ何も書かなくてもスコープから外れたらそれぞれデストラクタ・Dropを呼んでくれるんだし
次点でC#のDisposeとusingなどの専用構文、Javaはtry..finallyあるから及第点
でもグローバル変数だとそんなの働かない、プログラマが仕様とにらめっこしながらリークに気を使わないといけない、めんどい
188デフォルトの名無しさん
2018/03/25(日) 10:33:04.02ID:BP/bYIjb >>186
Cさえやったことないんじゃメモリ管理について説明するのは難しいな
ざっくり説明すると
C言語ではmalloc, freeを使ってプログラマが自力でメモリ管理を行う
よって、きちんとメモリ管理ができていない場合は実行時にバグになる。
対して、GCありの言語は実行時にGCがバックグラウンドで動いて自動でメモリ管理を行ってくれる
メモリ管理は実行時に自動で行われるのでプログラマは基本的にメモリ管理を行う必要はない
ただし、GCの挙動をしっかり理解していないとメモリリークのバグになることもある
そして、Rustはメモリ管理をコンパイラがコンパイル時に行う
つまり、メモリ管理ができていない場合はコンパイルエラーになる
コンパイラが正しくメモリ管理を行うためにRustには
所有権・借用・ライフタイムというルールが存在する
このルールを守らないとコンパイルが通らないため絶対に理解する必要があるが
このルールをきちんと理解してコードを書くのがなかなかに難しい
それと、このルールを完璧に遵守しようとすると循環参照さえ出来なくなる
なので循環参照等の少し複雑なことをやろうとした場合は
標準ライブラリとして用意されているRc, Weak, RefCell等の使い方も知る必要がある
因みにRc, Weak, RefCellの中身ではunsafeコードが多用されていている
unsafeコードの中ではルールを無視できる代わりにコンパイラがチェックを行わない
つまり、unsafeの中だけはCと同じように自力でメモリ管理する必要がある
だからこの言語は他言語と比べて学習コストが圧倒的に高い
Cさえやったことないんじゃメモリ管理について説明するのは難しいな
ざっくり説明すると
C言語ではmalloc, freeを使ってプログラマが自力でメモリ管理を行う
よって、きちんとメモリ管理ができていない場合は実行時にバグになる。
対して、GCありの言語は実行時にGCがバックグラウンドで動いて自動でメモリ管理を行ってくれる
メモリ管理は実行時に自動で行われるのでプログラマは基本的にメモリ管理を行う必要はない
ただし、GCの挙動をしっかり理解していないとメモリリークのバグになることもある
そして、Rustはメモリ管理をコンパイラがコンパイル時に行う
つまり、メモリ管理ができていない場合はコンパイルエラーになる
コンパイラが正しくメモリ管理を行うためにRustには
所有権・借用・ライフタイムというルールが存在する
このルールを守らないとコンパイルが通らないため絶対に理解する必要があるが
このルールをきちんと理解してコードを書くのがなかなかに難しい
それと、このルールを完璧に遵守しようとすると循環参照さえ出来なくなる
なので循環参照等の少し複雑なことをやろうとした場合は
標準ライブラリとして用意されているRc, Weak, RefCell等の使い方も知る必要がある
因みにRc, Weak, RefCellの中身ではunsafeコードが多用されていている
unsafeコードの中ではルールを無視できる代わりにコンパイラがチェックを行わない
つまり、unsafeの中だけはCと同じように自力でメモリ管理する必要がある
だからこの言語は他言語と比べて学習コストが圧倒的に高い
189デフォルトの名無しさん
2018/03/25(日) 10:35:30.44ID:BP/bYIjb 「ざっくり」と言っておきながら気付けばそれなりの長文になってるな…
190デフォルトの名無しさん
2018/03/25(日) 10:49:11.63ID:130KAu9X なんで聞かれてもいないことを長文で答えるのか
プログラマにはありがちだけど
プログラマにはありがちだけど
191デフォルトの名無しさん
2018/03/25(日) 10:51:36.32ID:GhdgZmXr >なので循環参照等の少し複雑なことをやろうとした場合は
>標準ライブラリとして用意されているRc, Weak, RefCell等の使い方も知る必要がある
>因みにRc, Weak, RefCellの中身ではunsafeコードが多用されていている
>unsafeコードの中ではルールを無視できる代わりにコンパイラがチェックを行わない
>つまり、unsafeの中だけはCと同じように自力でメモリ管理する必要がある
>だからこの言語は他言語と比べて学習コストが圧倒的に高い
この辺考えたら結局C++で、できる限りスマートポインタ使うってのと大して変わらなくね?
て話になりそう。
>標準ライブラリとして用意されているRc, Weak, RefCell等の使い方も知る必要がある
>因みにRc, Weak, RefCellの中身ではunsafeコードが多用されていている
>unsafeコードの中ではルールを無視できる代わりにコンパイラがチェックを行わない
>つまり、unsafeの中だけはCと同じように自力でメモリ管理する必要がある
>だからこの言語は他言語と比べて学習コストが圧倒的に高い
この辺考えたら結局C++で、できる限りスマートポインタ使うってのと大して変わらなくね?
て話になりそう。
192デフォルトの名無しさん
2018/03/25(日) 11:32:48.19ID:MQLp3NAe ライブラリの中でunsafe使ってたからといって、そのライブラリ使用したコード全てがunsafeになる訳でなし
気にし過ぎじゃないか
気にし過ぎじゃないか
193デフォルトの名無しさん
2018/03/25(日) 12:12:47.18ID:2sZ1RJA+ いやなるで
unsafe内Cのリソース確保を呼んだなら同じく解放処理も呼ばないとリークする
unsafe内Cのリソース確保を呼んだなら同じく解放処理も呼ばないとリークする
194デフォルトの名無しさん
2018/03/25(日) 12:21:31.84ID:5S2tvSOb■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【🐻ニャー】京都府向日市の「クマ目撃情報」は見間違いか 市が映像確認「ネコに似ていた」 [nita★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
