- 1 名前:デフォルトの名無しさん [2017/10/14(土) 17:38:14.04 ID:uWD69LeP.net]
- 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/
- 634 名前:デフォルトの名無しさん mailto:sage [2018/01/09(火) 15:46:18.74 ID:vtbi2ENx.net]
- 本当に必要なら
関数のアセンブリ化くらい一日でやるのがプログラマだろって話な?
- 635 名前:デフォルトの名無しさん mailto:sage [2018/01/09(火) 18:36:32.15 ID:pRblgKD+.net]
- 処理の肝の関数が一日程度のアセンブリの最適化ですむ程度なら、
絶対に手を付けないな コードの保守性を考えるとむしろ害悪 ドライバのコードを一週間かけて最適化して劇的に早くしたことがあるが、 関数に対する暗黙の前提とかを見つけて、 ひらめきでニーモニックを最適化していく作業 一日程度でやることじゃない
- 636 名前:デフォルトの名無しさん mailto:sage [2018/01/09(火) 20:29:59.87 ID:6UEtXwLz.net]
- 今時の高性能(で複雑な)なプロセッサの最適化はコンパイラ>人間
- 637 名前:デフォルトの名無しさん mailto:sage [2018/01/09(火) 23:11:43.33 ID:0nJMugwX.net]
- C++からRust移植で高速化!?
https://twitter.com/tanakh/status/950659594379968513
- 638 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 00:25:27.71 ID:GZ3v7wml.net]
- 例の会社の方ですね
- 639 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 01:04:10.48 ID:sDNuvOTB.net]
- stockfishもrustで書き直しましょう!
- 640 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 05:48:28.54 ID:zJE5XuIr.net]
- 移植で高速化する案件ってのは、大概同じ言語で書き直しても高速化するからなあ
要するに作り直しに際して全体を見直すという行為が一番効く
- 641 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 11:54:40.05 ID:kHYccep6.net]
- 詐欺会社の社員の言うことなんて信じるからRustなんかに飛び付くんやろなあ
- 642 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 12:43:57.38 ID:6PCYvjwP.net]
- 気が狂ったようなレスだな
- 643 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 15:45:01.02 ID:GLuGS5zO.net]
- >>626
お前それインタプリタ言語からコンパイル言語への移植でも同じこと言えんの?
- 644 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 15:47:29.13 ID:GLuGS5zO.net]
- GoogleのAIエンジン、別にRustで書けとは言わんがせめてGoにしろやと常々思う
演算量多いんだよバーロー
- 645 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 16:22:06.54 ID:Dg+5gWi5.net]
- GoogleのサーバサイドではPythonからGoへ置き換わりつつあるみたいだけど、そっちも置き換わるのか
- 646 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 18:47:50.56 ID:GLuGS5zO.net]
- スレチだけど、Goはマルチコアでの並列処理に適した言語だからAIエンジンをサーバで動かすなら置き換えて欲しいよね
しかしまぁ、C/C++からRustの移植で早くなるのは、オブジェクトの取り回しが無理やり矯正されることによる恩恵かねぇ mutexのlock/unlockによるブロッキングが早々起きないから待ち合わせしなくていい所の待ち合わせは矯正されてそう プログラマが意識して作るならC/C++のままで良いけど、人がやるより機械がやってくれるならそれに越したことない
- 647 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 20:16:34.04 ID:85p1Kkix.net]
- tensorflowの事言ってるなら、pythonで書かれてなかったら誰も使わないよ
- 648 名前:デフォルトの名無しさん mailto:sage [2018/01/10(水) 22:46:46.16 ID:GLuGS5zO.net]
- pythonは利用者==開発者での試験開発には非常に好ましい言語だけど、利用者!=開発者では性能悪くてver.2,3で言語仕様互換性のないRust未満のクソ言語だよ?
AIエンジンを実用ツールとして見ない日曜プログラマはtensorflow(python2 lib)をホクホクと使うけど、実用ツールとして見たらtensorflowは誰も望んでは使わないよ 同じように言語の適材適所を考えないプログラマはRustの適所を考えることもせず、アンチ活動に走るよね コンパイル通るコード書くの大変だし、ローポインタ操作は好まれないし、日本語書籍少ないしで決して便利な言語じゃないけどRustもハマれば良い言語よな
- 649 名前:デフォルトの名無しさん [2018/01/10(水) 22:54:00.21 ID:aQix+RRX.net]
- アンチの存在はともかく
アンチと戦うのが好きな人が多いのが難点ですね
- 650 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 01:05:22.99 ID:wQj3L0Ay.net]
- たなこふアンチはどっか逝って
- 651 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 03:40:32.06 ID:iyu0SjqV.net]
- 演算グラフを構築してGPUに投げる処理をrustで書けば速くなると思ってる低脳っぷりヤバイわ
GPUの100倍も遅いCPUでループ回るのが速いとかマジでどうでも良いからw
- 652 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 04:02:35.22 ID:QmzCPTgd.net]
- 今rustで業務アプリ開発してるけど、マルチスレッドでのデータ競合をコンパイル時にチェックしてくれるのが特にいい感じだわ
ただ、今まで気楽に相互参照使ってた所とかrust流の書き方しないとキツイのが結構あるな
- 653 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 11:23:35.66 ID:s4xLMRqm.net]
- まあ行列演算のコアなところは今でもアセンブラだったりするわな。
一つの言語で全てのレイヤーを賄おうとするのがそもそも馬鹿すぎる発想。
- 654 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 11:40:16.18 ID:AZiVul63.net]
- >>634
挙げてるデメリット全部致命的で、 全く嵌まれば強いように見えないな
- 655 名前:デフォルトの名無しさん [2018/01/11(木) 13:36:38.57 ID:c+w22aA0.net]
- >>640
それってpythonについて文句言ってんの?それともRust? それとも両方?
- 656 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 19:09:36.95 ID:iS+zA8r5.net]
- >>634
日曜プログラマとかレッテル貼ってdisってみたけど、 実は自分の方がクソど素人だと>>637>>639にバラされた気分はどう? 流行りだからってドカタが無理してAIとか口出さない方が良かったね
- 657 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 19:11:41.94 ID:EF30eMeR.net]
- >>641
Rust Pythonについては同意見
- 658 名前:デフォルトの名無しさん mailto:sage [2018/01/11(木) 23:02:05.67 ID:b1xHFrgv.net]
- 道具でしかないプログラミング言語ごときに何でそう愛憎うずまくレスが沸くんだぜ
- 659 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 00:01:22.91 ID:v4YvA7k7.net]
- やっぱりマイナー負け組言語マニアは余裕がないから
簡単にムキになっちゃうんじゃね
- 660 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 00:16:17.30 ID:8Bbkgawk.net]
- Rustが使える有能な言語だと思っている?お前がそう思うんならそうなんだろう お前ん中では
Rustが使えない糞な言語だと思っている?お前がそう思うんならそうなんだろう お前ん中では お前がそう思うんならそうなんだろう お前ん中では
- 661 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 10:24:05.79 ID:KQEkfNlJ.net]
- >>646
そういうお前のなかではどうなんだ?
- 662 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 15:03:45.10 ID:yzgw2U0r.net]
- >>644
本当は電気ドリル使った方が楽なのに頑なにスコップ使わせたり、 逆にブルドーザーでやれというようなアホな現場があるのが ITの世界だったりする。 まあそんなことが続けばその道具を嫌いになるのはわからんでもない。
- 663 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 16:29:33.21 ID:/01TbNc2.net]
- >>648
わかる そしてスコップやブルドーザーでも時間や犠牲を払いつつもやれてしまうのがITの世界
- 664 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 19:30:59.16 ID:RuIpixvC.net]
- >>642
とりあえず、tensorflowのコードを見てないんだなって思った GPUに投げる演算処理以外のステップ処理とか関数コールとか動的型変数の取り扱いとか インタプリタ言語がコンパイル言語より遅い理由に挙げられるデメリットをガン無視かよぉ >>643 IteratorやOption, Resultとか、ハマればC/C++で何行もかけて書いてた所が1行に収まって 短くて可読性高くて性能良いコードになるのはメリットだと思うんだけどなぁ あとは、makeだのvalgrindだのgoogletestだの色々な3rd party toolを使わなくてもcargoで完結するのホント助かる
- 665 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 20:43:22.05 ID:yzgw2U0r.net]
- >>650
3rdパーティツールを使ってないんじゃなくて、利用が簡易ってことだけどな。 そういう怪しげなこと書くくらいならモチっと使い方なり書いた方が普及には繋がると思うよ。 https://qiita.com/kubo39/items/cb84cd0ee89d257ce11e
- 666 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 20:52:57.80 ID:/u+itip5.net]
- >>650
tensorflowはボトルネックになりそうな所はC++で書かれてるよ 想像でテキトーな事を書くなよ
- 667 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 21:01:05.95 ID:/u+itip5.net]
- Pythonが科学技術分野で好まれてるのは
numpyやscipyのお陰だから言語に文句つけても意味ないし、 Rustで書くよりnumpyで行列演算した方が速いから 速度面でも移行するメリットがない
- 668 名前:デフォルトの名無しさん mailto:sage [2018/01/12(金) 21:54:28.61 ID:kjmG24Y8.net]
- >>648
ITに限らないような。低能率な環境や命令を棚に上げて生産性向上などと吠える製造業も多いぞ
- 669 名前:デフォルトの名無しさん [2018/01/13(土) 09:02:27.08 ID:PRFVc3V3.net]
- >>654
未だに設計にEXCEL使ってる現場とか多いしね。 自称IT屋がIT使ってない。
- 670 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 19:22:01.99 ID:MW2t1rKM.net]
- excelがITではないとは暴言では
- 671 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 19:34:17.26 ID:aU8wc9zz.net]
- エクセルは芸術
- 672 名前:デフォルトの名無しさん [2018/01/13(土) 21:22:56.33 ID:ZmH3DZ0F.net]
- >>656
ああ精確には「古いIT」だな。 客には「Excelで台帳管理しないでDBとWebアプリ使いましょう」とか提案する癖に、開発工程ではExcel使ってるという非効率さ。
- 673 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 21:38:44.30 ID:V4m1sF41.net]
- Excelが悪いとは思わないけど処理の規模が一線を越えてくるとプログラムを書いた方が処理効率や保守性の面で有利になる
関数山盛りの激重スパゲッティワークシートを運用しているところは少なからずあるのでは あとExcelに表計算ソフト以上の仕事をさせているところも結構あるな
- 674 名前:デフォルトの名無しさん mailto:sage [2018/01/13(土) 21:43:49.20 ID:aU8wc9zz.net]
- 経済学の論文でエクセル使ってて、しかし普通にバグってて問題になってたことがあったな。
- 675 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 00:19:53.66 ID:Qz3+ZXNT.net]
- rustスレだと思っていたがexcelスレだった
- 676 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 01:19:41.63 ID:I9Kg/0Pm.net]
- >>658
規模がでかくなるとすぐ破綻するが 使い捨て作業でつかうぶんには超優秀 なにもまちがってない
- 677 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 03:40:45.43 ID:ppap/O0M.net]
- まあ実際はエクセルとバージョン管理使ってりゃそれで十分なケースは多いけどね。
- 678 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 09:51:38.95 ID:5kx72Xik.net]
- とある公的研究施設に嘱託で行ってたときの実話なんだが
・それエクセルでマクロ書いたら多少楽になるんじゃね?って提案 →わけのわからんことに時間使わないで今すぐ手を動かして紙で管理してね ・コピペ満載糞コード見せられ「なぜこれ関数書かないんですか?」とだけ質問 →関数使うと見難くなる、保守しにくくなる、関数は書かないでね なお、必死で食い下がって関数書くことだけは許してもらった模様 公務員なんてのはPCの前に座って屁こいてるだけで時間が金になるから みんなこんなもんよ 時間を惜しむと言う発想が無いか、少なくとも民間とは違う
- 679 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 11:24:43.60 ID:pZVQT//+.net]
- rustなんて使ってるやつも同じメンタルだな
成果物出さないでコンパイラにエラーメッセージ出させてるだけで時間が金になるようなやつ 物作らなくていいなら理想の言語だわな
- 680 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 11:37:01.71 ID:BkqToWZD.net]
- けんきゅうしせつのひとが嘱託よりすべてにおいて優れているのは自然の摂理なので
本当にわけのわからない提案をしたり 既存コードに手を突っ込んで意味不明なリファクタをしようとしたりしたんだろう マクロ化したり関数作ったほうが本当に能率いいなら 許可なぞとらずに自分のところだけそれでさっさとやっちゃう うまくいくようならあとから提案する
- 681 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 11:41:16.95 ID:pZVQT//+.net]
- >>666
だーれがその「自分で勝手にやったところ」の面倒を見てくれるんだ? 嘱託ごときが定年まで面倒見れるわけもなかろうに 勝手にブラックボックス作るのは何様?
- 682 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 11:46:14.88 ID:BkqToWZD.net]
- 自分の責任範囲内の話だし
特にブラックボックスなところはないが なにがきにいらんのだ
- 683 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 11:48:39.30 ID:pZVQT//+.net]
- 嘱託に設計を勝手に変えられる「責任」が存在するならそれは嘱託ではなくね?
自分が勝手にやった、自分一人しかわからないものは十分ブラックボックスだ
- 684 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 11:57:24.04 ID:BkqToWZD.net]
- コーディングルールに関数作らないことって明記されてなかったら
べつにいいんじゃないか
- 685 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 12:26:12.32 ID:ppap/O0M.net]
- いや関数ダメとか普通にどうかしてんだろ。。
これでブラックボックス化するからダメ言うんだったら何もできんわ。
- 686 名前:デフォルトの名無しさん [2018/01/14(日) 13:02:12.25 ID:8svLfVJD.net]
- そもそもプログラミングってきちんと正しく
ブラックボックス化(カプセル化)しましょうってものだろうに。。。
- 687 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 13:39:57.15 ID:pZVQT//+.net]
- カプセル化はAPIと内部状態の分離であって
中のコードや仕様を隠蔽するのが目的じゃないんだが
- 688 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 13:57:59.71 ID:jzH2L7UL.net]
- ID:pZVQT//+ は何かズレてんな。だから必死なのか。
- 689 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 14:43:57.62 ID:b6ZBN6zi.net]
- Rustに限らないが、新しい言語ごり押しする奴や
コーディング規約ガン無視してコード書いたりする奴は、 結局そいつしかメンテできない領域を産み出すだけで、全く生産性に寄与しない ってことが言いたいだけだぞ
- 690 名前:デフォルトの名無しさん [2018/01/14(日) 14:45:29.84 ID:8svLfVJD.net]
- >>673
その「APIと内部状態の分離」をなぜ行いたいのかきちんと考えたことはあるのか? 車を運転するのに車の仕組みを知らなくても良いのと同じように、 プログラム(ソフトウェア)を使うのにそのプログラムの仕組みを知らなくても済むようにするため。 さらに言うと、プログラマが他人が書いたAPIを使うのに、そのアルゴリズムを知らなくても済むようにするためだ。 結局のところ、カプセル化の目的は「きちんと正しく」ブラックボックス化を行うことで 利用者側が内部の仕組みを知らなくても使い方を知るだけで済むようにすることだ。 「APIと内部状態の分離」を行うのはそのための手段として最も有用なものの1つというだけに過ぎない。 何の目的もなく「APIと内部状態の分離」を行えば、それは「中のコードや仕様を隠蔽する」のと大して変わらないよ。 もう少し本質をしっかりと考えよう。 君の言ってること自体は必ずしも間違っているわけではないし、言わんとしていることも分からんではないが、 なんというか、、、底が浅いと感じてしまう。
- 691 名前:デフォルトの名無しさん [2018/01/14(日) 14:56:16.89 ID:8svLfVJD.net]
- 一応補足。
かといってカプセル化した中身は汚くてもいいと言ってるわけじゃないよ。 大多数の人間はカプセル化した中のコードを読む必要性はないけど、 プログラムにバグがないことは絶対に保証できないのだし、 パフォーマンスの改善やらその他いろいろな理由で、 一部の他人は必ず中身のコードを読むことになるからね。
- 692 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 14:56:20.26 ID:ptHdDqnU.net]
- >>667 勝手にブラックボックスを作るべきではない
>>668 ブラックボックスなどないではないか >>672 プログラミングとはそういうものだ >>667への反論として>>668はわかるが>>672はなんかずれてると思うがな。
- 693 名前:デフォルトの名無しさん [2018/01/14(日) 15:03:52.23 ID:8svLfVJD.net]
- >>678
「そもそも論」の話をしたからな。 ずれてるというか議論のすり替えが起こってるな。 悪かった。申し訳ない。
- 694 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 17:34:15.38 ID:BkqToWZD.net]
- どうなんだろう
人と違うことやるときは 特に何も決まってなくても提案として言ったほうがいいの?
- 695 名前:デフォルトの名無しさん mailto:sage [2018/01/14(日) 19:43:43.81 ID:5kx72Xik.net]
- rustに関係ない話持ち込んじゃってゴメンね…
「関数書くな」って真顔で言われたときのショックを伝えたかったの Cから入った人間だから「プログラムを書く≒関数を書く」 だとどこか思い込んでたようなとこがあったのかなぁ 軽くパニックになったわ 関数書かないで何を書くんだろう…って 関数を書かないレベルの人に言葉を尽くすのは大変だったYO
- 696 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 01:12:06.90 ID:TeZ6A4z4.net]
- 昔俺が入ったプロジェクトはJavaだったけど、1クラス1スタティックメソッドのみっていう縛りがあったよ
- 697 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 10:25:31.75 ID:C2H3bXQJ.net]
- 嘱託の契約次第だろ。
まあ、無駄な時間を使わされるようだったら契約違反を盾に交渉するのは正しい。契約外だったら少なくとも追加費用を要求しないとな。
- 698 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 12:02:33.62 ID:Sawl3Tst.net]
- 嘱託の人間に「こっちの方がいいから」って理由で
そいつにしかわからないプログラム書かれた側から言わせてもらうとまじでやめろ お前がどんなにクソだと思おうと言われたようにやれ 嘱託のお前にとっては書いたらおさらばでいいんだろうが、こっちはそれを半永久的にメンテするんだぞ こっちの形式指定はメンテするためにこっちが必要な条件なんだ
- 699 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 12:05:18.28 ID:Sawl3Tst.net]
- だから「新しい言語のRust使います」だの「ナウでヤングなライブラリ使います」だの「イケてるツールのwebpack使います」だのは
お前がお前のために書くプログラムでやれ 嘱託先に納品する物で書くな。それはお前の物ではない
- 700 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 12:09:10.97 ID:Sawl3Tst.net]
- 関数切るなって指示も、メンテナンス性考えたら自然とそうなるところもあるだろう
例えばコード上あっちこっち飛ばれたら追えなくなるメンテナもいるんだ そういう人にもメンテナンス業務させるためにそういう指定になるのは自然なこと さすがにうちではないけども、そんな奴を抱えてるSIer上流も当然あるだろう
- 701 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 12:11:40.00 ID:9C6ITO5u.net]
- 人生楽しくなさそうだね
- 702 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 12:31:52.75 ID:Cin8FKvr.net]
- 逆にどんどん使ってくれというところもあるし場所によるとしか
どちらのケースが多いかは知らない
- 703 名前:デフォルトの名無しさん [2018/01/15(月) 13:32:29.94 ID:w3dU/zjB.net]
- >>684, >>685, >>686
まぁ、正しいこと言ってるとは思うよ。 納品物に使う言語とかを独断(個人の趣味)で決める奴は確かにバカだと思う。 でも、関数使うんじゃないって強制する側も大概だからな。 従うのが社会的に正しいってだけで、情報工学的には明らかにおかしいこともまた事実。 それと、全部従っておけばいいってのもどうかと思う。 おかしいと思うのなら時間をかけて説得するのも一つの手。 話が極端すぎるんだよ。
- 704 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 13:55:34.30 ID:plpGsHa9.net]
- 人間、数回の経験ですべてがそうであると錯覚しやすいからねー
特に失敗は記憶に残りやすい(将来に活かせるとは言ってない)
- 705 名前:デフォルトの名無しさん [2018/01/15(月) 14:29:56.48 ID:w3dU/zjB.net]
- ところで全く話変わるんだけど。
最近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を使うメリットはし
- 706 名前:チかりあるんだって思える明確な理由を誰か教えて。
この言語やってるともしかして俺ってすっげーバカなの?って不安になってくる。 長文すいませんが、誰か教えてください。 [] - [ここ壊れてます]
- 707 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 14:49:21.64 ID:RpZewdhM.net]
- Rustなんて使った時点で騙されてる
その辺は言語設計が破綻してる証拠 悪いこと言わんからC++きちんと勉強してRustは忘れよう
- 708 名前:デフォルトの名無しさん [2018/01/15(月) 15:28:44.95 ID:w3dU/zjB.net]
- >>692
君ははた迷惑な例のアンチかな? 破綻している証拠とやらをその辺はとか適当な言葉で誤魔化してる時点で説得力がないよ。 てか、君には聞いていない。君以外に聞いてるんだ。
- 709 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 16:35:55.57 ID:tRnPToa/.net]
- 木構造にRcは要らんだろ
各ノードは直接の親にしか所有されないんだから
- 710 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 17:21:29.47 ID:pZIK1LNL.net]
- 質問1について分かりやすいのがforループだな
あるベクタをforループ中に、forの対象にしてるベクタそのものにpushするみたいな黒魔術操作を禁止するために forループを回してる間は回す対象の配列にイミュータブル参照を作ってる状態にしてコンパイラにチェックさせる
- 711 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 17:44:57.62 ID:prlexpko.net]
- 質問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へのアクセス
- 712 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 19:10:45.82 ID:pZIK1LNL.net]
- 重箱の隅だが四行目は
*foo_mut = None だな
- 713 名前:デフォルトの名無しさん [2018/01/15(月) 20:48:46.10 ID:w3dU/zjB.net]
- >>695, >>696
なるほど。mutable参照が1つしか取れない理由はマルチスレッド以外にも理由があったのか。 単純なコードだけど実際に示されないと気が付けないな。(少なくとも俺は) やっぱりGC無しの言語はメモリ管理が難しいな。 そして、それをコンパイラがはじいてくれるのはやっぱり有難い。 納得のいく答えが得られた。教えてくれてありがとう。 >>694 それは木構造でも親から子を辿るだけで済む場合に限定されない?子から親を辿りたくなった場合だと無理じゃない? 子は複数いるんだからそれぞれの子が全て親のmutable参照を持つことはできないよね。 だって、mutable参照は1つしか作れないんだから。 そうするとRcとWeakとRefCellを使わざるを得なくなるよね?ならない?使わなくても済む方法があるの? ちなみにRcじゃなくてArenaっていう仕組みを使うって方法ならどっかのブログで見たんだけど、 その方法だと動的に追加していくことは出来るけど、動的に削除を行うことは出来ないよね。 例えばJavaScriptのDomツリーとかはparentNodeで子から親のNodeを辿れるようになってるし、 appendChildとかremoveChildとかでNodeを動的に追加したり削除したりももちろん出来るよね。 それと同じようなことをRustでもしたかったらRcとWeakとRefCellを使うしかないんじゃないかと思ってるんだけど。
- 714 名前:デフォルトの名無しさん mailto:sage [2018/01/15(月) 20:53:28.00 ID:Cin8FKvr.net]
- 双方向参照する場合はそう
RefCell使わなければならないケースでrustの方がうれしいのは、 実行時にはなってしまうが&mutのエイリアスがチェックされることかな C++だと領域破壊してもそれらしく動いてしまうとかあり得てバグの発見が遅れる
- 715 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 05:17:55.44 ID:4jams3dQ.net]
- Rustで木を作ったぞ!
https://play.rust-lang.org/?gist=dc4c67944190cb7ab83b2e25e4fdd4e2&version=stable
- 716 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 12:11:08.60 ID:JwS671kg.net]
- https://news.mynavi.jp/article/20180110-568199/
モジラ工作員ざまあ!!!wwwww いやー一年は工作でごまかせたかもしれないがさすがにメッキが剥げてきたね! これが現実!! 騙されてるやつはまだ間に合うぞ!
- 717 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 12:21:19.07 ID:Tvp4qB7j.net]
- >>701 ……
https://qiita.com/kmizu/items/b07f1dcad63f104248c5
- 718 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 13:02:13.48 ID:JwS671kg.net]
- >>702
どや顔で貼ったんだろうけど 記事内でリンクあるランキングでのRustの位置wwwwwwwwwwww Rustのゴ
- 719 名前:~さの補強にしかなってないwwwwww []
- [ここ壊れてます]
- 720 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 13:03:09.51 ID:InRpqwJl.net]
- >>702
そいつはTIOBE IndexでScalaの順位が低いから 参考にならないの事にしたいだけのScala大好きマンだから 話半分以下で聞いとけ
- 721 名前:デフォルトの名無しさん [2018/01/16(火) 13:18:52.31 ID:4ikneXPL.net]
- そもそも、みんなが使ってる言語だから良い言語みたいな理論を持ち出せば、
PHPをとても良い言語だと認識しければならなくなるんだが。 その辺を>>701はどう考えてるんだ?たぶん何も考えてないんだろうけど。 それとも、もしかしてPHP最高!とか思ってる奴だったか。
- 722 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 13:31:11.79 ID:JwS671kg.net]
- >>705
Rustは誰も見向きもしないクソ言語未満っていってるだけで みんなが使ってる言語は良い言語とは一言もいってないけど?
- 723 名前:デフォルトの名無しさん [2018/01/16(火) 13:37:29.94 ID:4ikneXPL.net]
- だれも見向きもしない言語ってのはつまり人気のない言語のことだろ。
人気のない言語はクソ言語ってことにすると、逆説的に、 人気のある言語は良い言語になっちゃうよね。
- 724 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 13:39:54.74 ID:JwS671kg.net]
- 論理学できない人?
見向きもされないのは悪い言語 が真でも 見向きされる言語は良い言語 は真じゃないよ? 論理学できないからRustなんてもてはやすんだろうけど
- 725 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 13:50:01.38 ID:0jSYVjYj.net]
- その理屈は論理学として正しいがそれを認めると
順位表では何が良い言語か一生懸命みてもわからんから意味なさそう
- 726 名前:デフォルトの名無しさん [2018/01/16(火) 14:05:58.36 ID:4ikneXPL.net]
- >>708
それは悪かった。 どうせ君は物事を1か0でしか考えられない人間だと思ってたから、 そういう思考回路の人間だと思って会話を進めようとしてしまった。 じゃあ、別の方向から突かせてもらうけど、 関数型言語って最近(最近というほどでもないか?)の流行りじゃん? でも、関数型言語の祖先ってLispとか言われてたりするよね。 で、そのLispはかなり昔から存在したわけだよね。 何で昔は一部の物好きだけが使ってて他は見向きもしなかったのに、 今更になって認められていろんな言語にラムダ式とかが採用されたの? 見向きもされない言語はクソ言語のはずなのになんで? (ちなみにこの理論は反論できる余地があります)
- 727 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 14:40:03.83 ID:JwS671kg.net]
- Lispが関数型言語の祖先かと言われると副作用だらけだし違和感しかないな
別に最近の言語のラムダ式はラムダ計算を構文に持ち込んだだけで、LispのS式まわりの成果を持ち込んだわけでもなかろうに どちらかというとHaskellとかML系列の成果の方が主だろう RustがLisp的な立ち位置になると言いたいんだろうが、言語のお粗末な出来から言ってもそれはない
- 728 名前:デフォルトの名無しさん [2018/01/16(火) 14:45:36.44 ID:4ikneXPL.net]
- 別にLispに限定した話じゃないよ。
関数型言語って昔からあるよね。でも当時は誰も見向きもしなかったよね。 見向きもされない言語がクソ言語なら関数型言語が 今更になって認められるのはおかしいよね?ってだけ。
- 729 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 16:31:38.96 ID:bxI2XEx+.net]
- 言語が変わらなくても時間の経過によって環境の方が変化して評価が変わることは十分に有り得る
プロセッサ負荷やメモリ使用量などの足枷がユルユルになって来たことで評価が高くなったのではないか 従って当時とか現在とかの時世を無視しては語れないこともある
- 730 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 16:51:39.64 ID:JwS671kg.net]
- それを認めると将来Rustがクソではなかったと証明される余地があるってことで、
それは事実ではないから違うな 今評価されてるのはあくまでラムダ計算であってLispではない、と言えば分かるか?
- 731 名前:デフォルトの名無しさん [2018/01/16(火) 16:54:05.43 ID:4ikneXPL.net]
- >>713
Yes! That's correct!! 反論の余地とは時代等の外部環境の変化により評価も変化することだね。 なんか別のIDの人が答えちゃったけど。
- 732 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 16:56:00.39 ID:6i0TmEx8.net]
- 木構造もインデックス使って書かないといけないのか
- 733 名前:デフォルトの名無しさん [2018/01/16(火) 17:19:58.51 ID:4ikneXPL.net]
- >>714
ワロタwww お前は未来人か? 未来人を肯定するならrustがクソ言語であることも認めよう。
- 734 名前:デフォルトの名無しさん mailto:sage [2018/01/16(火) 17:41:30.80 ID:O2dbzEJM.net]
- ここまで言語に粘着する精神が理解出来ない
|

|