Mozilla発のプログラミング言語「Rust」のスレです
公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
前スレ
プログラミング言語 Rust 3
https://mevius.5ch.net/test/read.cgi/tech/1495343069/
探検
プログラミング言語 Rust 4
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/10/14(土) 17:38:14.04ID:uWD69LeP600デフォルトの名無しさん
2018/01/08(月) 22:52:48.05ID:cPU/Gv3T カプコンのあれはゲーム用に超最適化されたGC詰んでるから…
601デフォルトの名無しさん
2018/01/08(月) 23:20:56.60ID:y4IOANaR >>584, >>597, >>599
そりゃぁ、ゲームエンジンは速度が求められるからC#じゃ力不足だろうな。
そこまで持ち出されるとグーの音も出ない。
だから「『普通は』気にするようなものじゃない」って書いた。
ゲーム作ろうとするのにゲームエンジンから自作しようとする奴なんて『普通は』いないだろ?
そして、仮にゲームエンジンの開発に使うんだったとしても、
C#みたいなGC付きの言語ならともかく、C, C++, Rustの差は誤差みたいなものでしょ。
なぜなら、C++とRustの差が気になるっていうのなら、当然、C++とCとの差だって気になるはずだよな?
だったらゲームエンジンの開発にC++じゃなくてCを使ってるはずだろ?
でも実際にはCじゃなくてC++が使われている。
ということはゲームエンジンみたいにシビアな領域でもCとC++の差はさほど気にされていないってことになる。
ならやっぱり、C, C++, Rustの差なんて気にするようなものじゃないと言いたかった。
そりゃぁ、ゲームエンジンは速度が求められるからC#じゃ力不足だろうな。
そこまで持ち出されるとグーの音も出ない。
だから「『普通は』気にするようなものじゃない」って書いた。
ゲーム作ろうとするのにゲームエンジンから自作しようとする奴なんて『普通は』いないだろ?
そして、仮にゲームエンジンの開発に使うんだったとしても、
C#みたいなGC付きの言語ならともかく、C, C++, Rustの差は誤差みたいなものでしょ。
なぜなら、C++とRustの差が気になるっていうのなら、当然、C++とCとの差だって気になるはずだよな?
だったらゲームエンジンの開発にC++じゃなくてCを使ってるはずだろ?
でも実際にはCじゃなくてC++が使われている。
ということはゲームエンジンみたいにシビアな領域でもCとC++の差はさほど気にされていないってことになる。
ならやっぱり、C, C++, Rustの差なんて気にするようなものじゃないと言いたかった。
602デフォルトの名無しさん
2018/01/08(月) 23:59:18.26ID:y4IOANaR >>575, >>596
Rustは実装にもよるけど vtable はほとんど使わないはずだよ。
「ジェネリックとトレイト境界」を使えば引数に関しては静的ディスパッチが可能。
戻り値のほうは「ジェネリックとトレイト境界」じゃどうにもできないけど、
こっちはTagged Union 使えば大体は何とかなる。
現状、クロージャを返す場合はトレイトオブジェクトを使わざるを得ないけど、
クロージャを返すことって稀だし、そこまで気にするようなことじゃないと思ってる。
Cにはそもそもクロージャ自体が存在しないわけだし。C++でもクロージャは一般的じゃない。
smart pointer に関しても unique_ptr なら遅くはならない。(ほとんど誤差みたいなもの)
だって unique_ptr は参照カウンタ使ってないし、Rallの仕組みを使って構造体(スタック)に
ポインタを持ってデストラクタで解放を行ってるだけだから、その程度で遅くなるわけがない。
そして、Rustはデフォルトが C++の unique_ptr と同じだからやはり遅くはならないはず。
遅くなるのは内部で参照カウンタを使ってるshared_ptrとweek_ptrの2つ。
Rustの場合は参照カウンタは Rc or Arc として標準ライブラリに用意されてる。
まあ、Rustで Rc or Arc を全く使わずに作るってのはちょっと現実的じゃないけど。
まぁ、自分もそれほど詳しいわけじゃないけど、
vtableとsmart pointer はRustが遅い理由にはならないんじゃないかな。
RustがC, C++ と比べて少し遅い理由は他にあると思うよ。
個人的にはまだコンパイラが成熟してないってのが主な理由だと思ってるけど。
結構いっぱい書いたけど、やっぱり結論としてはC, C++, Rust の速度差は普通に使う分には気にすようなものじゃないと思う。
Rustは実装にもよるけど vtable はほとんど使わないはずだよ。
「ジェネリックとトレイト境界」を使えば引数に関しては静的ディスパッチが可能。
戻り値のほうは「ジェネリックとトレイト境界」じゃどうにもできないけど、
こっちはTagged Union 使えば大体は何とかなる。
現状、クロージャを返す場合はトレイトオブジェクトを使わざるを得ないけど、
クロージャを返すことって稀だし、そこまで気にするようなことじゃないと思ってる。
Cにはそもそもクロージャ自体が存在しないわけだし。C++でもクロージャは一般的じゃない。
smart pointer に関しても unique_ptr なら遅くはならない。(ほとんど誤差みたいなもの)
だって unique_ptr は参照カウンタ使ってないし、Rallの仕組みを使って構造体(スタック)に
ポインタを持ってデストラクタで解放を行ってるだけだから、その程度で遅くなるわけがない。
そして、Rustはデフォルトが C++の unique_ptr と同じだからやはり遅くはならないはず。
遅くなるのは内部で参照カウンタを使ってるshared_ptrとweek_ptrの2つ。
Rustの場合は参照カウンタは Rc or Arc として標準ライブラリに用意されてる。
まあ、Rustで Rc or Arc を全く使わずに作るってのはちょっと現実的じゃないけど。
まぁ、自分もそれほど詳しいわけじゃないけど、
vtableとsmart pointer はRustが遅い理由にはならないんじゃないかな。
RustがC, C++ と比べて少し遅い理由は他にあると思うよ。
個人的にはまだコンパイラが成熟してないってのが主な理由だと思ってるけど。
結構いっぱい書いたけど、やっぱり結論としてはC, C++, Rust の速度差は普通に使う分には気にすようなものじゃないと思う。
603デフォルトの名無しさん
2018/01/09(火) 00:07:21.22ID:vsbSHK2s604デフォルトの名無しさん
2018/01/09(火) 00:16:14.62ID:BgSfBmJG 確かに
605デフォルトの名無しさん
2018/01/09(火) 08:02:08.21ID:dghT81NU HashTableがデフォルトで安全側に倒してSipHash使ってるのも大きい気はする
ripgrepやfont-rsなど既存の実装よりも圧倒的に高速なrust実装もあるし、言語自体の差と言うよりも、書き方の差だと思う
constexpr周りはDやC++の方が充実しているけど、build.rsなどで代替できなくもないと思う
ripgrepやfont-rsなど既存の実装よりも圧倒的に高速なrust実装もあるし、言語自体の差と言うよりも、書き方の差だと思う
constexpr周りはDやC++の方が充実しているけど、build.rsなどで代替できなくもないと思う
606デフォルトの名無しさん
2018/01/09(火) 09:33:53.22ID:4EiQrQ8s Unityが出てからC#でゲーム書く人が増えたわけだし、どこかの企業が気合い入れてRustサポートしたエンジン作れば使ってみる人も増えるやろ
607デフォルトの名無しさん
2018/01/09(火) 10:25:16.50ID:vtbi2ENx 速さの差を気にする必要はないとかいう奴って
普段どんなところでコード書いてるプログラマなんだ?
プログラマなら一番速い選択するべきだろ
普段どんなところでコード書いてるプログラマなんだ?
プログラマなら一番速い選択するべきだろ
608デフォルトの名無しさん
2018/01/09(火) 10:36:54.87ID:pRblgKD+ かけれるコストが一定という制約で一番速くなる言語を選ぶと結果は変わるんだよ
609デフォルトの名無しさん
2018/01/09(火) 10:59:57.42ID:e9VuKocG610デフォルトの名無しさん
2018/01/09(火) 12:31:14.96ID:hZWQBtrg 開発スピード優先とは言っても
アルゴリズムや計算量知らないで
とんでもない糞コード書く香具師はいる
アルゴリズムや計算量知らないで
とんでもない糞コード書く香具師はいる
611デフォルトの名無しさん
2018/01/09(火) 13:00:20.99ID:CtLIzYrP そりゃ論外だ。
開発言語の問題じゃない。開発手法は少しは関係あるか。
開発言語の問題じゃない。開発手法は少しは関係あるか。
612デフォルトの名無しさん
2018/01/09(火) 13:08:01.94ID:hgVWuJUP Rustでプログラマが意識してないのに走るランタイム処理って何かあるかな?
起動時になんか処理してる?
あとは、メモリ解放時に意外とjemallocが重いとか?
起動時になんか処理してる?
あとは、メモリ解放時に意外とjemallocが重いとか?
613デフォルトの名無しさん
2018/01/09(火) 14:20:37.33ID:vtbi2ENx かけれるコストを減らすのがプログラマの仕事だろうに……
処理の肝の関数をアセンブリで書くのに一週間かけるのか?
処理の肝の関数をアセンブリで書くのに一週間かけるのか?
614デフォルトの名無しさん
2018/01/09(火) 15:06:26.69ID:pRblgKD+ > プログラマなら一番速い選択するべきだろ
> かけれるコストを減らすのがプログラマの仕事だろうに……
一番速い言語を選択した上でかけれるコストを減らすという主張のようだが、
コストの上限って大抵あるのよ?
上限ないならプログラム全部アセンブリで書いた上で
お好きなようにかけれるコストを減らしてください
> 処理の肝の関数をアセンブリで書くのに一週間かけるのか?
元になる関数の有無、関数の規模、ボトルネックとしての割合、
複雑さ、アーキテクチャ、既存のテストコードの有無、
作業する人数、スキルと単価の前提すらなく作業時間だけ提示されても
必要なら一週間かけますとしか言えないよね?
> かけれるコストを減らすのがプログラマの仕事だろうに……
一番速い言語を選択した上でかけれるコストを減らすという主張のようだが、
コストの上限って大抵あるのよ?
上限ないならプログラム全部アセンブリで書いた上で
お好きなようにかけれるコストを減らしてください
> 処理の肝の関数をアセンブリで書くのに一週間かけるのか?
元になる関数の有無、関数の規模、ボトルネックとしての割合、
複雑さ、アーキテクチャ、既存のテストコードの有無、
作業する人数、スキルと単価の前提すらなく作業時間だけ提示されても
必要なら一週間かけますとしか言えないよね?
615デフォルトの名無しさん
2018/01/09(火) 15:08:41.92ID:Im+qxt+8616デフォルトの名無しさん
2018/01/09(火) 15:46:18.74ID:vtbi2ENx 本当に必要なら
関数のアセンブリ化くらい一日でやるのがプログラマだろって話な?
関数のアセンブリ化くらい一日でやるのがプログラマだろって話な?
617デフォルトの名無しさん
2018/01/09(火) 18:36:32.15ID:pRblgKD+ 処理の肝の関数が一日程度のアセンブリの最適化ですむ程度なら、
絶対に手を付けないな
コードの保守性を考えるとむしろ害悪
ドライバのコードを一週間かけて最適化して劇的に早くしたことがあるが、
関数に対する暗黙の前提とかを見つけて、
ひらめきでニーモニックを最適化していく作業
一日程度でやることじゃない
絶対に手を付けないな
コードの保守性を考えるとむしろ害悪
ドライバのコードを一週間かけて最適化して劇的に早くしたことがあるが、
関数に対する暗黙の前提とかを見つけて、
ひらめきでニーモニックを最適化していく作業
一日程度でやることじゃない
618デフォルトの名無しさん
2018/01/09(火) 20:29:59.87ID:6UEtXwLz 今時の高性能(で複雑な)なプロセッサの最適化はコンパイラ>人間
619デフォルトの名無しさん
2018/01/09(火) 23:11:43.33ID:0nJMugwX620デフォルトの名無しさん
2018/01/10(水) 00:25:27.71ID:GZ3v7wml 例の会社の方ですね
621デフォルトの名無しさん
2018/01/10(水) 01:04:10.48ID:sDNuvOTB stockfishもrustで書き直しましょう!
622デフォルトの名無しさん
2018/01/10(水) 05:48:28.54ID:zJE5XuIr 移植で高速化する案件ってのは、大概同じ言語で書き直しても高速化するからなあ
要するに作り直しに際して全体を見直すという行為が一番効く
要するに作り直しに際して全体を見直すという行為が一番効く
623デフォルトの名無しさん
2018/01/10(水) 11:54:40.05ID:kHYccep6 詐欺会社の社員の言うことなんて信じるからRustなんかに飛び付くんやろなあ
624デフォルトの名無しさん
2018/01/10(水) 12:43:57.38ID:6PCYvjwP 気が狂ったようなレスだな
625デフォルトの名無しさん
2018/01/10(水) 15:45:01.02ID:GLuGS5zO >>622
お前それインタプリタ言語からコンパイル言語への移植でも同じこと言えんの?
お前それインタプリタ言語からコンパイル言語への移植でも同じこと言えんの?
626デフォルトの名無しさん
2018/01/10(水) 15:47:29.13ID:GLuGS5zO GoogleのAIエンジン、別にRustで書けとは言わんがせめてGoにしろやと常々思う
演算量多いんだよバーロー
演算量多いんだよバーロー
627デフォルトの名無しさん
2018/01/10(水) 16:22:06.54ID:Dg+5gWi5 GoogleのサーバサイドではPythonからGoへ置き換わりつつあるみたいだけど、そっちも置き換わるのか
628デフォルトの名無しさん
2018/01/10(水) 18:47:50.56ID:GLuGS5zO スレチだけど、Goはマルチコアでの並列処理に適した言語だからAIエンジンをサーバで動かすなら置き換えて欲しいよね
しかしまぁ、C/C++からRustの移植で早くなるのは、オブジェクトの取り回しが無理やり矯正されることによる恩恵かねぇ
mutexのlock/unlockによるブロッキングが早々起きないから待ち合わせしなくていい所の待ち合わせは矯正されてそう
プログラマが意識して作るならC/C++のままで良いけど、人がやるより機械がやってくれるならそれに越したことない
しかしまぁ、C/C++からRustの移植で早くなるのは、オブジェクトの取り回しが無理やり矯正されることによる恩恵かねぇ
mutexのlock/unlockによるブロッキングが早々起きないから待ち合わせしなくていい所の待ち合わせは矯正されてそう
プログラマが意識して作るならC/C++のままで良いけど、人がやるより機械がやってくれるならそれに越したことない
629デフォルトの名無しさん
2018/01/10(水) 20:16:34.04ID:85p1Kkix tensorflowの事言ってるなら、pythonで書かれてなかったら誰も使わないよ
630デフォルトの名無しさん
2018/01/10(水) 22:46:46.16ID:GLuGS5zO pythonは利用者==開発者での試験開発には非常に好ましい言語だけど、利用者!=開発者では性能悪くてver.2,3で言語仕様互換性のないRust未満のクソ言語だよ?
AIエンジンを実用ツールとして見ない日曜プログラマはtensorflow(python2 lib)をホクホクと使うけど、実用ツールとして見たらtensorflowは誰も望んでは使わないよ
同じように言語の適材適所を考えないプログラマはRustの適所を考えることもせず、アンチ活動に走るよね
コンパイル通るコード書くの大変だし、ローポインタ操作は好まれないし、日本語書籍少ないしで決して便利な言語じゃないけどRustもハマれば良い言語よな
AIエンジンを実用ツールとして見ない日曜プログラマはtensorflow(python2 lib)をホクホクと使うけど、実用ツールとして見たらtensorflowは誰も望んでは使わないよ
同じように言語の適材適所を考えないプログラマはRustの適所を考えることもせず、アンチ活動に走るよね
コンパイル通るコード書くの大変だし、ローポインタ操作は好まれないし、日本語書籍少ないしで決して便利な言語じゃないけどRustもハマれば良い言語よな
631デフォルトの名無しさん
2018/01/10(水) 22:54:00.21ID:aQix+RRX アンチの存在はともかく
アンチと戦うのが好きな人が多いのが難点ですね
アンチと戦うのが好きな人が多いのが難点ですね
632デフォルトの名無しさん
2018/01/11(木) 01:05:22.99ID:wQj3L0Ay たなこふアンチはどっか逝って
633デフォルトの名無しさん
2018/01/11(木) 03:40:32.06ID:iyu0SjqV 演算グラフを構築してGPUに投げる処理をrustで書けば速くなると思ってる低脳っぷりヤバイわ
GPUの100倍も遅いCPUでループ回るのが速いとかマジでどうでも良いからw
GPUの100倍も遅いCPUでループ回るのが速いとかマジでどうでも良いからw
634デフォルトの名無しさん
2018/01/11(木) 04:02:35.22ID:QmzCPTgd 今rustで業務アプリ開発してるけど、マルチスレッドでのデータ競合をコンパイル時にチェックしてくれるのが特にいい感じだわ
ただ、今まで気楽に相互参照使ってた所とかrust流の書き方しないとキツイのが結構あるな
ただ、今まで気楽に相互参照使ってた所とかrust流の書き方しないとキツイのが結構あるな
635デフォルトの名無しさん
2018/01/11(木) 11:23:35.66ID:s4xLMRqm まあ行列演算のコアなところは今でもアセンブラだったりするわな。
一つの言語で全てのレイヤーを賄おうとするのがそもそも馬鹿すぎる発想。
一つの言語で全てのレイヤーを賄おうとするのがそもそも馬鹿すぎる発想。
636デフォルトの名無しさん
2018/01/11(木) 11:40:16.18ID:AZiVul63637デフォルトの名無しさん
2018/01/11(木) 13:36:38.57ID:c+w22aA0638デフォルトの名無しさん
2018/01/11(木) 19:09:36.95ID:iS+zA8r5639デフォルトの名無しさん
2018/01/11(木) 19:11:41.94ID:EF30eMeR640デフォルトの名無しさん
2018/01/11(木) 23:02:05.67ID:b1xHFrgv 道具でしかないプログラミング言語ごときに何でそう愛憎うずまくレスが沸くんだぜ
641デフォルトの名無しさん
2018/01/12(金) 00:01:22.91ID:v4YvA7k7 やっぱりマイナー負け組言語マニアは余裕がないから
簡単にムキになっちゃうんじゃね
簡単にムキになっちゃうんじゃね
642デフォルトの名無しさん
2018/01/12(金) 00:16:17.30ID:8Bbkgawk Rustが使える有能な言語だと思っている?お前がそう思うんならそうなんだろう お前ん中では
Rustが使えない糞な言語だと思っている?お前がそう思うんならそうなんだろう お前ん中では
お前がそう思うんならそうなんだろう お前ん中では
Rustが使えない糞な言語だと思っている?お前がそう思うんならそうなんだろう お前ん中では
お前がそう思うんならそうなんだろう お前ん中では
643デフォルトの名無しさん
2018/01/12(金) 10:24:05.79ID:KQEkfNlJ >>642
そういうお前のなかではどうなんだ?
そういうお前のなかではどうなんだ?
644デフォルトの名無しさん
2018/01/12(金) 15:03:45.10ID:yzgw2U0r >>640
本当は電気ドリル使った方が楽なのに頑なにスコップ使わせたり、
逆にブルドーザーでやれというようなアホな現場があるのが
ITの世界だったりする。
まあそんなことが続けばその道具を嫌いになるのはわからんでもない。
本当は電気ドリル使った方が楽なのに頑なにスコップ使わせたり、
逆にブルドーザーでやれというようなアホな現場があるのが
ITの世界だったりする。
まあそんなことが続けばその道具を嫌いになるのはわからんでもない。
645デフォルトの名無しさん
2018/01/12(金) 16:29:33.21ID:/01TbNc2646デフォルトの名無しさん
2018/01/12(金) 19:30:59.16ID:RuIpixvC647デフォルトの名無しさん
2018/01/12(金) 20:43:22.05ID:yzgw2U0r >>646
3rdパーティツールを使ってないんじゃなくて、利用が簡易ってことだけどな。
そういう怪しげなこと書くくらいならモチっと使い方なり書いた方が普及には繋がると思うよ。
https://qiita.com/kubo39/items/cb84cd0ee89d257ce11e
3rdパーティツールを使ってないんじゃなくて、利用が簡易ってことだけどな。
そういう怪しげなこと書くくらいならモチっと使い方なり書いた方が普及には繋がると思うよ。
https://qiita.com/kubo39/items/cb84cd0ee89d257ce11e
648デフォルトの名無しさん
2018/01/12(金) 20:52:57.80ID:/u+itip5649デフォルトの名無しさん
2018/01/12(金) 21:01:05.95ID:/u+itip5 Pythonが科学技術分野で好まれてるのは
numpyやscipyのお陰だから言語に文句つけても意味ないし、
Rustで書くよりnumpyで行列演算した方が速いから
速度面でも移行するメリットがない
numpyやscipyのお陰だから言語に文句つけても意味ないし、
Rustで書くよりnumpyで行列演算した方が速いから
速度面でも移行するメリットがない
650デフォルトの名無しさん
2018/01/12(金) 21:54:28.61ID:kjmG24Y8 >>644
ITに限らないような。低能率な環境や命令を棚に上げて生産性向上などと吠える製造業も多いぞ
ITに限らないような。低能率な環境や命令を棚に上げて生産性向上などと吠える製造業も多いぞ
651デフォルトの名無しさん
2018/01/13(土) 09:02:27.08ID:PRFVc3V3652デフォルトの名無しさん
2018/01/13(土) 19:22:01.99ID:MW2t1rKM excelがITではないとは暴言では
653デフォルトの名無しさん
2018/01/13(土) 19:34:17.26ID:aU8wc9zz エクセルは芸術
654デフォルトの名無しさん
2018/01/13(土) 21:22:56.33ID:ZmH3DZ0F655デフォルトの名無しさん
2018/01/13(土) 21:38:44.30ID:V4m1sF41 Excelが悪いとは思わないけど処理の規模が一線を越えてくるとプログラムを書いた方が処理効率や保守性の面で有利になる
関数山盛りの激重スパゲッティワークシートを運用しているところは少なからずあるのでは
あとExcelに表計算ソフト以上の仕事をさせているところも結構あるな
関数山盛りの激重スパゲッティワークシートを運用しているところは少なからずあるのでは
あとExcelに表計算ソフト以上の仕事をさせているところも結構あるな
656デフォルトの名無しさん
2018/01/13(土) 21:43:49.20ID:aU8wc9zz 経済学の論文でエクセル使ってて、しかし普通にバグってて問題になってたことがあったな。
657デフォルトの名無しさん
2018/01/14(日) 00:19:53.66ID:Qz3+ZXNT rustスレだと思っていたがexcelスレだった
658デフォルトの名無しさん
2018/01/14(日) 01:19:41.63ID:I9Kg/0Pm659デフォルトの名無しさん
2018/01/14(日) 03:40:45.43ID:ppap/O0M まあ実際はエクセルとバージョン管理使ってりゃそれで十分なケースは多いけどね。
660デフォルトの名無しさん
2018/01/14(日) 09:51:38.95ID:5kx72Xik とある公的研究施設に嘱託で行ってたときの実話なんだが
・それエクセルでマクロ書いたら多少楽になるんじゃね?って提案
→わけのわからんことに時間使わないで今すぐ手を動かして紙で管理してね
・コピペ満載糞コード見せられ「なぜこれ関数書かないんですか?」とだけ質問
→関数使うと見難くなる、保守しにくくなる、関数は書かないでね
なお、必死で食い下がって関数書くことだけは許してもらった模様
公務員なんてのはPCの前に座って屁こいてるだけで時間が金になるから
みんなこんなもんよ
時間を惜しむと言う発想が無いか、少なくとも民間とは違う
・それエクセルでマクロ書いたら多少楽になるんじゃね?って提案
→わけのわからんことに時間使わないで今すぐ手を動かして紙で管理してね
・コピペ満載糞コード見せられ「なぜこれ関数書かないんですか?」とだけ質問
→関数使うと見難くなる、保守しにくくなる、関数は書かないでね
なお、必死で食い下がって関数書くことだけは許してもらった模様
公務員なんてのはPCの前に座って屁こいてるだけで時間が金になるから
みんなこんなもんよ
時間を惜しむと言う発想が無いか、少なくとも民間とは違う
661デフォルトの名無しさん
2018/01/14(日) 11:24:43.60ID:pZVQT//+ rustなんて使ってるやつも同じメンタルだな
成果物出さないでコンパイラにエラーメッセージ出させてるだけで時間が金になるようなやつ
物作らなくていいなら理想の言語だわな
成果物出さないでコンパイラにエラーメッセージ出させてるだけで時間が金になるようなやつ
物作らなくていいなら理想の言語だわな
662デフォルトの名無しさん
2018/01/14(日) 11:37:01.71ID:BkqToWZD けんきゅうしせつのひとが嘱託よりすべてにおいて優れているのは自然の摂理なので
本当にわけのわからない提案をしたり
既存コードに手を突っ込んで意味不明なリファクタをしようとしたりしたんだろう
マクロ化したり関数作ったほうが本当に能率いいなら
許可なぞとらずに自分のところだけそれでさっさとやっちゃう
うまくいくようならあとから提案する
本当にわけのわからない提案をしたり
既存コードに手を突っ込んで意味不明なリファクタをしようとしたりしたんだろう
マクロ化したり関数作ったほうが本当に能率いいなら
許可なぞとらずに自分のところだけそれでさっさとやっちゃう
うまくいくようならあとから提案する
663デフォルトの名無しさん
2018/01/14(日) 11:41:16.95ID:pZVQT//+664デフォルトの名無しさん
2018/01/14(日) 11:46:14.88ID:BkqToWZD 自分の責任範囲内の話だし
特にブラックボックスなところはないが
なにがきにいらんのだ
特にブラックボックスなところはないが
なにがきにいらんのだ
665デフォルトの名無しさん
2018/01/14(日) 11:48:39.30ID:pZVQT//+ 嘱託に設計を勝手に変えられる「責任」が存在するならそれは嘱託ではなくね?
自分が勝手にやった、自分一人しかわからないものは十分ブラックボックスだ
自分が勝手にやった、自分一人しかわからないものは十分ブラックボックスだ
666デフォルトの名無しさん
2018/01/14(日) 11:57:24.04ID:BkqToWZD コーディングルールに関数作らないことって明記されてなかったら
べつにいいんじゃないか
べつにいいんじゃないか
667デフォルトの名無しさん
2018/01/14(日) 12:26:12.32ID:ppap/O0M いや関数ダメとか普通にどうかしてんだろ。。
これでブラックボックス化するからダメ言うんだったら何もできんわ。
これでブラックボックス化するからダメ言うんだったら何もできんわ。
668デフォルトの名無しさん
2018/01/14(日) 13:02:12.25ID:8svLfVJD そもそもプログラミングってきちんと正しく
ブラックボックス化(カプセル化)しましょうってものだろうに。。。
ブラックボックス化(カプセル化)しましょうってものだろうに。。。
669デフォルトの名無しさん
2018/01/14(日) 13:39:57.15ID:pZVQT//+ カプセル化はAPIと内部状態の分離であって
中のコードや仕様を隠蔽するのが目的じゃないんだが
中のコードや仕様を隠蔽するのが目的じゃないんだが
670デフォルトの名無しさん
2018/01/14(日) 13:57:59.71ID:jzH2L7UL ID:pZVQT//+ は何かズレてんな。だから必死なのか。
671デフォルトの名無しさん
2018/01/14(日) 14:43:57.62ID:b6ZBN6zi Rustに限らないが、新しい言語ごり押しする奴や
コーディング規約ガン無視してコード書いたりする奴は、
結局そいつしかメンテできない領域を産み出すだけで、全く生産性に寄与しない
ってことが言いたいだけだぞ
コーディング規約ガン無視してコード書いたりする奴は、
結局そいつしかメンテできない領域を産み出すだけで、全く生産性に寄与しない
ってことが言いたいだけだぞ
672デフォルトの名無しさん
2018/01/14(日) 14:45:29.84ID:8svLfVJD >>669
その「APIと内部状態の分離」をなぜ行いたいのかきちんと考えたことはあるのか?
車を運転するのに車の仕組みを知らなくても良いのと同じように、
プログラム(ソフトウェア)を使うのにそのプログラムの仕組みを知らなくても済むようにするため。
さらに言うと、プログラマが他人が書いたAPIを使うのに、そのアルゴリズムを知らなくても済むようにするためだ。
結局のところ、カプセル化の目的は「きちんと正しく」ブラックボックス化を行うことで
利用者側が内部の仕組みを知らなくても使い方を知るだけで済むようにすることだ。
「APIと内部状態の分離」を行うのはそのための手段として最も有用なものの1つというだけに過ぎない。
何の目的もなく「APIと内部状態の分離」を行えば、それは「中のコードや仕様を隠蔽する」のと大して変わらないよ。
もう少し本質をしっかりと考えよう。
君の言ってること自体は必ずしも間違っているわけではないし、言わんとしていることも分からんではないが、
なんというか、、、底が浅いと感じてしまう。
その「APIと内部状態の分離」をなぜ行いたいのかきちんと考えたことはあるのか?
車を運転するのに車の仕組みを知らなくても良いのと同じように、
プログラム(ソフトウェア)を使うのにそのプログラムの仕組みを知らなくても済むようにするため。
さらに言うと、プログラマが他人が書いたAPIを使うのに、そのアルゴリズムを知らなくても済むようにするためだ。
結局のところ、カプセル化の目的は「きちんと正しく」ブラックボックス化を行うことで
利用者側が内部の仕組みを知らなくても使い方を知るだけで済むようにすることだ。
「APIと内部状態の分離」を行うのはそのための手段として最も有用なものの1つというだけに過ぎない。
何の目的もなく「APIと内部状態の分離」を行えば、それは「中のコードや仕様を隠蔽する」のと大して変わらないよ。
もう少し本質をしっかりと考えよう。
君の言ってること自体は必ずしも間違っているわけではないし、言わんとしていることも分からんではないが、
なんというか、、、底が浅いと感じてしまう。
673デフォルトの名無しさん
2018/01/14(日) 14:56:16.89ID:8svLfVJD 一応補足。
かといってカプセル化した中身は汚くてもいいと言ってるわけじゃないよ。
大多数の人間はカプセル化した中のコードを読む必要性はないけど、
プログラムにバグがないことは絶対に保証できないのだし、
パフォーマンスの改善やらその他いろいろな理由で、
一部の他人は必ず中身のコードを読むことになるからね。
かといってカプセル化した中身は汚くてもいいと言ってるわけじゃないよ。
大多数の人間はカプセル化した中のコードを読む必要性はないけど、
プログラムにバグがないことは絶対に保証できないのだし、
パフォーマンスの改善やらその他いろいろな理由で、
一部の他人は必ず中身のコードを読むことになるからね。
674デフォルトの名無しさん
2018/01/14(日) 14:56:20.26ID:ptHdDqnU675デフォルトの名無しさん
2018/01/14(日) 15:03:52.23ID:8svLfVJD676デフォルトの名無しさん
2018/01/14(日) 17:34:15.38ID:BkqToWZD どうなんだろう
人と違うことやるときは
特に何も決まってなくても提案として言ったほうがいいの?
人と違うことやるときは
特に何も決まってなくても提案として言ったほうがいいの?
677デフォルトの名無しさん
2018/01/14(日) 19:43:43.81ID:5kx72Xik rustに関係ない話持ち込んじゃってゴメンね…
「関数書くな」って真顔で言われたときのショックを伝えたかったの
Cから入った人間だから「プログラムを書く≒関数を書く」
だとどこか思い込んでたようなとこがあったのかなぁ
軽くパニックになったわ
関数書かないで何を書くんだろう…って
関数を書かないレベルの人に言葉を尽くすのは大変だったYO
「関数書くな」って真顔で言われたときのショックを伝えたかったの
Cから入った人間だから「プログラムを書く≒関数を書く」
だとどこか思い込んでたようなとこがあったのかなぁ
軽くパニックになったわ
関数書かないで何を書くんだろう…って
関数を書かないレベルの人に言葉を尽くすのは大変だったYO
678デフォルトの名無しさん
2018/01/15(月) 01:12:06.90ID:TeZ6A4z4 昔俺が入ったプロジェクトはJavaだったけど、1クラス1スタティックメソッドのみっていう縛りがあったよ
679デフォルトの名無しさん
2018/01/15(月) 10:25:31.75ID:C2H3bXQJ 嘱託の契約次第だろ。
まあ、無駄な時間を使わされるようだったら契約違反を盾に交渉するのは正しい。契約外だったら少なくとも追加費用を要求しないとな。
まあ、無駄な時間を使わされるようだったら契約違反を盾に交渉するのは正しい。契約外だったら少なくとも追加費用を要求しないとな。
680デフォルトの名無しさん
2018/01/15(月) 12:02:33.62ID:Sawl3Tst 嘱託の人間に「こっちの方がいいから」って理由で
そいつにしかわからないプログラム書かれた側から言わせてもらうとまじでやめろ
お前がどんなにクソだと思おうと言われたようにやれ
嘱託のお前にとっては書いたらおさらばでいいんだろうが、こっちはそれを半永久的にメンテするんだぞ
こっちの形式指定はメンテするためにこっちが必要な条件なんだ
そいつにしかわからないプログラム書かれた側から言わせてもらうとまじでやめろ
お前がどんなにクソだと思おうと言われたようにやれ
嘱託のお前にとっては書いたらおさらばでいいんだろうが、こっちはそれを半永久的にメンテするんだぞ
こっちの形式指定はメンテするためにこっちが必要な条件なんだ
681デフォルトの名無しさん
2018/01/15(月) 12:05:18.28ID:Sawl3Tst だから「新しい言語のRust使います」だの「ナウでヤングなライブラリ使います」だの「イケてるツールのwebpack使います」だのは
お前がお前のために書くプログラムでやれ
嘱託先に納品する物で書くな。それはお前の物ではない
お前がお前のために書くプログラムでやれ
嘱託先に納品する物で書くな。それはお前の物ではない
682デフォルトの名無しさん
2018/01/15(月) 12:09:10.97ID:Sawl3Tst 関数切るなって指示も、メンテナンス性考えたら自然とそうなるところもあるだろう
例えばコード上あっちこっち飛ばれたら追えなくなるメンテナもいるんだ
そういう人にもメンテナンス業務させるためにそういう指定になるのは自然なこと
さすがにうちではないけども、そんな奴を抱えてるSIer上流も当然あるだろう
例えばコード上あっちこっち飛ばれたら追えなくなるメンテナもいるんだ
そういう人にもメンテナンス業務させるためにそういう指定になるのは自然なこと
さすがにうちではないけども、そんな奴を抱えてるSIer上流も当然あるだろう
683デフォルトの名無しさん
2018/01/15(月) 12:11:40.00ID:9C6ITO5u 人生楽しくなさそうだね
684デフォルトの名無しさん
2018/01/15(月) 12:31:52.75ID:Cin8FKvr 逆にどんどん使ってくれというところもあるし場所によるとしか
どちらのケースが多いかは知らない
どちらのケースが多いかは知らない
685デフォルトの名無しさん
2018/01/15(月) 13:32:29.94ID:w3dU/zjB686デフォルトの名無しさん
2018/01/15(月) 13:55:34.30ID:plpGsHa9 人間、数回の経験ですべてがそうであると錯覚しやすいからねー
特に失敗は記憶に残りやすい(将来に活かせるとは言ってない)
特に失敗は記憶に残りやすい(将来に活かせるとは言ってない)
687デフォルトの名無しさん
2018/01/15(月) 14:29:56.48ID:w3dU/zjB ところで全く話変わるんだけど。
最近Rustの勉強をしてるんだけど、まだ慣れないし、C++もあまりやってこなかったので、
俺のバカな頭じゃ理解できないことがいっぱいあるから誰か教えて。
質問1
Rustってimmutable参照は複数持てるけど、mutable参照は1つしか持てない決まりになってるよね。
それってたぶんマルチスレッドのことを考えてそうなってるんだよね?(この時点ですでに勘違いしてる?)
けどRustではSyncトレイトとSendトレイトを実装してない限り、スレッド間で変数の受け渡しできないんだよね?
これって逆に言えばSyncとSendを実装してない場合はシングルスレッドなんだからmutable参照が複数あっても問題ないんじゃないの?
なんでマルチスレッドを全く使わないコードを書いてる時でもmutable参照は1つだけしか使えないの?
SyncトレイトとSendトレイトについてなんか勘違いしてる?
質問2
Rustで木構造やグラフ構造を定義する時に循環参照(子が親の参照を持ちたいとか)する時って、たぶんRcとWeakを使うことになるよね?
そして木構造を可変にしたいときはさらにRc<RefCell<T>>って形になるよね?
このRefCell使うとボローチェッカの制約をコンパイルエラーじゃなくて実行時にパニックするように変わるんだよね?
こうするしかないのはRc<RefCell<T>>使わずに木構造を作ろうとして執行錯誤したけど無理だったからそうするしかないんだなと思って納得したんだけど、
RefCell使っちゃうとボローチェッカが効かなくなるからせっかくRustを使ってるメリットが無くなったような気がしてくるんだよね。
それでもRustを使うメリットって何?
RefCell使ってるとこ以外はボローチェッカが効くんだからunsafeコードと同じようにラッパーで包んでやれば上位層に悪影響は出ないよねってこと?
それともC++とかで同じように木構造を作ると、Rustだと単純にパニックするだけだけど、C++だとデバッグがメチャクチャ困難なバグになったりするの?
たとえRefCellを使っていたとしてもRustを使うメリットはしっかりあるんだって思える明確な理由を誰か教えて。
この言語やってるともしかして俺ってすっげーバカなの?って不安になってくる。
長文すいませんが、誰か教えてください。
最近Rustの勉強をしてるんだけど、まだ慣れないし、C++もあまりやってこなかったので、
俺のバカな頭じゃ理解できないことがいっぱいあるから誰か教えて。
質問1
Rustってimmutable参照は複数持てるけど、mutable参照は1つしか持てない決まりになってるよね。
それってたぶんマルチスレッドのことを考えてそうなってるんだよね?(この時点ですでに勘違いしてる?)
けどRustではSyncトレイトとSendトレイトを実装してない限り、スレッド間で変数の受け渡しできないんだよね?
これって逆に言えばSyncとSendを実装してない場合はシングルスレッドなんだからmutable参照が複数あっても問題ないんじゃないの?
なんでマルチスレッドを全く使わないコードを書いてる時でもmutable参照は1つだけしか使えないの?
SyncトレイトとSendトレイトについてなんか勘違いしてる?
質問2
Rustで木構造やグラフ構造を定義する時に循環参照(子が親の参照を持ちたいとか)する時って、たぶんRcとWeakを使うことになるよね?
そして木構造を可変にしたいときはさらにRc<RefCell<T>>って形になるよね?
このRefCell使うとボローチェッカの制約をコンパイルエラーじゃなくて実行時にパニックするように変わるんだよね?
こうするしかないのはRc<RefCell<T>>使わずに木構造を作ろうとして執行錯誤したけど無理だったからそうするしかないんだなと思って納得したんだけど、
RefCell使っちゃうとボローチェッカが効かなくなるからせっかくRustを使ってるメリットが無くなったような気がしてくるんだよね。
それでもRustを使うメリットって何?
RefCell使ってるとこ以外はボローチェッカが効くんだからunsafeコードと同じようにラッパーで包んでやれば上位層に悪影響は出ないよねってこと?
それともC++とかで同じように木構造を作ると、Rustだと単純にパニックするだけだけど、C++だとデバッグがメチャクチャ困難なバグになったりするの?
たとえRefCellを使っていたとしてもRustを使うメリットはしっかりあるんだって思える明確な理由を誰か教えて。
この言語やってるともしかして俺ってすっげーバカなの?って不安になってくる。
長文すいませんが、誰か教えてください。
688デフォルトの名無しさん
2018/01/15(月) 14:49:21.64ID:RpZewdhM Rustなんて使った時点で騙されてる
その辺は言語設計が破綻してる証拠
悪いこと言わんからC++きちんと勉強してRustは忘れよう
その辺は言語設計が破綻してる証拠
悪いこと言わんからC++きちんと勉強してRustは忘れよう
689デフォルトの名無しさん
2018/01/15(月) 15:28:44.95ID:w3dU/zjB690デフォルトの名無しさん
2018/01/15(月) 16:35:55.57ID:tRnPToa/ 木構造にRcは要らんだろ
各ノードは直接の親にしか所有されないんだから
各ノードは直接の親にしか所有されないんだから
691デフォルトの名無しさん
2018/01/15(月) 17:21:29.47ID:pZIK1LNL 質問1について分かりやすいのがforループだな
あるベクタをforループ中に、forの対象にしてるベクタそのものにpushするみたいな黒魔術操作を禁止するために
forループを回してる間は回す対象の配列にイミュータブル参照を作ってる状態にしてコンパイラにチェックさせる
あるベクタをforループ中に、forの対象にしてるベクタそのものにpushするみたいな黒魔術操作を禁止するために
forループを回してる間は回す対象の配列にイミュータブル参照を作ってる状態にしてコンパイラにチェックさせる
692デフォルトの名無しさん
2018/01/15(月) 17:44:57.62ID:prlexpko 質問1がそうなっている理由は、以下のようなケースで解放済みのVecにアクセスしてしまうことを防ぐというのもある
let mut foo = Some(vec![]);
let foo_mut = &mut foo;
let foo_ref = foo.as_ref().unwrap();
foo_mut = None;
println!("{:?}", foo_ref); // drop 済みのVecへのアクセス
let mut foo = Some(vec![]);
let foo_mut = &mut foo;
let foo_ref = foo.as_ref().unwrap();
foo_mut = None;
println!("{:?}", foo_ref); // drop 済みのVecへのアクセス
693デフォルトの名無しさん
2018/01/15(月) 19:10:45.82ID:pZIK1LNL 重箱の隅だが四行目は
*foo_mut = None
だな
*foo_mut = None
だな
694デフォルトの名無しさん
2018/01/15(月) 20:48:46.10ID:w3dU/zjB >>691, >>692
なるほど。mutable参照が1つしか取れない理由はマルチスレッド以外にも理由があったのか。
単純なコードだけど実際に示されないと気が付けないな。(少なくとも俺は)
やっぱりGC無しの言語はメモリ管理が難しいな。
そして、それをコンパイラがはじいてくれるのはやっぱり有難い。
納得のいく答えが得られた。教えてくれてありがとう。
>>690
それは木構造でも親から子を辿るだけで済む場合に限定されない?子から親を辿りたくなった場合だと無理じゃない?
子は複数いるんだからそれぞれの子が全て親のmutable参照を持つことはできないよね。
だって、mutable参照は1つしか作れないんだから。
そうするとRcとWeakとRefCellを使わざるを得なくなるよね?ならない?使わなくても済む方法があるの?
ちなみにRcじゃなくてArenaっていう仕組みを使うって方法ならどっかのブログで見たんだけど、
その方法だと動的に追加していくことは出来るけど、動的に削除を行うことは出来ないよね。
例えばJavaScriptのDomツリーとかはparentNodeで子から親のNodeを辿れるようになってるし、
appendChildとかremoveChildとかでNodeを動的に追加したり削除したりももちろん出来るよね。
それと同じようなことをRustでもしたかったらRcとWeakとRefCellを使うしかないんじゃないかと思ってるんだけど。
なるほど。mutable参照が1つしか取れない理由はマルチスレッド以外にも理由があったのか。
単純なコードだけど実際に示されないと気が付けないな。(少なくとも俺は)
やっぱりGC無しの言語はメモリ管理が難しいな。
そして、それをコンパイラがはじいてくれるのはやっぱり有難い。
納得のいく答えが得られた。教えてくれてありがとう。
>>690
それは木構造でも親から子を辿るだけで済む場合に限定されない?子から親を辿りたくなった場合だと無理じゃない?
子は複数いるんだからそれぞれの子が全て親のmutable参照を持つことはできないよね。
だって、mutable参照は1つしか作れないんだから。
そうするとRcとWeakとRefCellを使わざるを得なくなるよね?ならない?使わなくても済む方法があるの?
ちなみにRcじゃなくてArenaっていう仕組みを使うって方法ならどっかのブログで見たんだけど、
その方法だと動的に追加していくことは出来るけど、動的に削除を行うことは出来ないよね。
例えばJavaScriptのDomツリーとかはparentNodeで子から親のNodeを辿れるようになってるし、
appendChildとかremoveChildとかでNodeを動的に追加したり削除したりももちろん出来るよね。
それと同じようなことをRustでもしたかったらRcとWeakとRefCellを使うしかないんじゃないかと思ってるんだけど。
695デフォルトの名無しさん
2018/01/15(月) 20:53:28.00ID:Cin8FKvr 双方向参照する場合はそう
RefCell使わなければならないケースでrustの方がうれしいのは、
実行時にはなってしまうが&mutのエイリアスがチェックされることかな
C++だと領域破壊してもそれらしく動いてしまうとかあり得てバグの発見が遅れる
RefCell使わなければならないケースでrustの方がうれしいのは、
実行時にはなってしまうが&mutのエイリアスがチェックされることかな
C++だと領域破壊してもそれらしく動いてしまうとかあり得てバグの発見が遅れる
696デフォルトの名無しさん
2018/01/16(火) 05:17:55.44ID:4jams3dQ697デフォルトの名無しさん
2018/01/16(火) 12:11:08.60ID:JwS671kg https://news.mynavi.jp/article/20180110-568199/
モジラ工作員ざまあ!!!wwwww
いやー一年は工作でごまかせたかもしれないがさすがにメッキが剥げてきたね!
これが現実!!
騙されてるやつはまだ間に合うぞ!
モジラ工作員ざまあ!!!wwwww
いやー一年は工作でごまかせたかもしれないがさすがにメッキが剥げてきたね!
これが現実!!
騙されてるやつはまだ間に合うぞ!
698デフォルトの名無しさん
2018/01/16(火) 12:21:19.07ID:Tvp4qB7j699デフォルトの名無しさん
2018/01/16(火) 13:02:13.48ID:JwS671kg■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★4 [BFU★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★5 [Hitzeschleier★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 【速報】テレビ朝日本社から20代〜30代の男性が飛び降り自殺して死亡 東京・六本木 [597533159]
- お前らダウナー系だよな
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ182
- 精液がゼリー状で黄ばんでるせいで女と付き合う勇気ない
- 女はSNSで乳揺らして踊ってりゃラクにカモ集まるから羨ましい
- 【高市速報】中国、最後通牒 [308389511]
