1 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 22:19:47.56 ID:avZQ9Wm7.net] 闘え ※前スレ C++ vs Rust https://mevius.5ch.net/test/read.cgi/tech/1619219089/ C vs C++ vs Rust Part.2 https://mevius.5ch.net/test/read.cgi/tech/1639539350/
463 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 01:49:04.04 ID:rjFiO5pI.net] >>437 関係無い。 RustはRubyやPerlよりも生産性が低い。
464 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:24:15.93 ID:OitdNeYT.net] 年末に世の中の流行について行こうとPython+OpenpyxlでExcelファイルいじくるプログラム書いてみた 単にワークシート読み込むだけで分オーダー ライブラリがワークシート読み込みだけなのでこっちはなんもやってない。 こりゃあかんってなって ためしにC#+EPPLUSで同じプログラム書いてみた 全プログラム終了するまで5秒ww あと、既存チャートの参照範囲変更するとかEPPLUSでサクッとできることがOpenpxlじゃできねぇんだわ どこがいいのPythonて?
465 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:25:55.59 ID:U570WKgz.net] >>458 両方のコードを公開しない限り、誰も何とも言えないと思う ああ、この人python使えないんだなって普通は思うよ
466 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:33:50.85 ID:OitdNeYT.net] Pythonて集合演算ができるってんで {a,b,c}3要素からなるべき集合のべき集合とか(ホントは位相空間を作ってみたかった)簡単に書けるかな?とおもってやってみたが、 とても簡単にできそうにない MathematicaだとSubsets[Subsets[{a, b, c}]]で済む話 このPythonとかゆーがらくた言語なんでこんなに流行ってんの? インターフェース誌あたりはずーっとPython一色だし。 Web scrapingとかだとC# Scriptでも実行時コンパイルで待たされるんで、 Pythonはイライラ感なく即実行できてウマーとはオモタ
467 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:44:33.00 ID:OitdNeYT.net] >>459 ま、Python使えないとお前が思うのは勝手だが ワークシート読み込みのはライブラリが勝手に読むこともわからないんだろな。 プログラマが手を下すとことじゃない。 Matlabあたりも同様だけどこういうインタープリタは繰返し制御文で実行するんじゃなく ライブラリに任すようにコーディングすんだわ。そこで1分とかかかってるようじゃゴミ判定が正解 ま、Python+Openpyxlは糞だな。とても日々の業務になんか使えないシロモノ。 こんなの使ってエクセルの自動化とか糞本買った方お気の毒としか言い様がない。 会社から金貰ってるって仕事してるっていう気持あるなら、 直接エクセルファイルunzipしてxmlいじくるか、素直にC#+EPPLUS使った方がはるかにまとも
468 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:48:39.91 ID:OitdNeYT.net] でもおれPythonには日々世話になってんのよな fakymac+keyhac しょっちゅう動作がおかしくなるけど、 sunキーボード+emacsで育った世代なんでさww
469 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 03:00:48.63 ID:U570WKgz.net] >>460 そんな大変なんだろうか・・・ def subsets(x): return [y for i in range(1,len(x)+1) for y in itertools.combinations(x, i)] >>461 別に俺何を使っても書けるし、大昔から出来るし、時間かかるなら使い方悪いだけだと思う=お前はpython使えない
470 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 08:06:12.15 ID:fAU8x8Os.net] >>431 それだと使える人間が少なくなって全体の生産性は落ちるだろ。 Haskellの二の舞コースじゃね?
471 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 11:35:31.82 ID:A2g22mwQ.net] >>461 直接って、xlxsの仕様を理解している前提じゃん。 Pythonは、速度要らなくて、目的で検索してライブラリが出て来て、コードコピペでも大体動く的なそういう使い方が多いと思う。
472 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 12:52:11.85 ID:s8pRYrZQ.net] rustが広まったらどっちにしろ大して理解してない奴が投入されて地獄見るわ。 そういう当たり前のことすら想像できない奴がrustマンセーしてるんだよな。
473 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 15:22:25.57 ID:sRZMI6dS.net] >>466 一番儲かるのはスコップ売る奴という落ちだろうな。
474 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 15:34:13.41 ID:O0maCHfq.net] 参考文献というお布施
475 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 16:52:44.24 ID:Vpjp3tKl.net] 習得難易度が多少高くても自由度が低い言語を使う場合 低スキルメンバーが混ざっても惨事になりにくい 逆に習得難易度が低くても自由度の高い言語を使う場合は 高スキルメンバーで揃えないとすぐに破綻する
476 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 17:42:54.49 ID:DajlRg+n.net] 昔はJavaの習得難易度高かったからな(VBに比べて) その頃はそういう言い分もあって、実際にJavaはVBから来たコピペ野郎の洗礼は受けたものの、簡単なことしかさせないフレームワークという武器を得て、人海戦術の片腕となり得た しかし今は当時より更に難しくなったJavaが習得難易度低に分類されているw そのJavaより習得難易度がはるかに高く、ライブラリの使い方ではなく言語レベルでの書き方が難しいRustが低スキルメンバーに扱えるかというと・・・w
477 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 18:36:25.33 ID:O0maCHfq.net] C++が出来ないからRustに移ったのにそれも習得できないってあとナニをがんばるのやおまいら
478 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 18:46:13.42 ID:t3FNLZzV.net] C++理解できんようなやつがRustを理解できるわけないやろ
479 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 18:58:34.72 ID:DajlRg+n.net] でも多分ほとんどそういう連中だと思うぞ 普通に勉強対象としてgoとRustを比べてるところがもう死ぬほどおかしいんだけど、そこに思い至らないってことは・・・
480 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:00:10.43 ID:N6RMeM8u.net] 言語を習得するのは最低限必要なスキルレベルでしかないのに それをもってプログラミングスキルを推し測ろうとする人って所詮そのレベルなんだよね
481 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:02:39.63 ID:H3mwwYQo.net] C++はバカでも使えるが、バカは使えこなせず、C++コンパイラはバカコードを通すので、問題を起こす Rustもバカは使えこなせない点で同じだが、Rustコンパイラはバカコードを通さないため、問題が起きない
482 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:03:52.90 ID:DajlRg+n.net] あとC++が理解出来ないからRustに移るということはない C++で開発し続けることに挫折して、Rustに移るだけだと思う
483 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:11:28.15 ID:DajlRg+n.net] Rustが問題が起きないということもなくて、Rustを使ったらプログラムを書けなくなる人がかなりの量出るだけw
484 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:13:15.97 ID:H3mwwYQo.net] >>460 >>463 二人ともそれぞれsubsetsとcombinationsというライブラリ関数に頼って書いているだけに過ぎない ライブラリ関数が充実してると言いたいのか、プログラムを書きやすいと言いたいのか、中途半端 そして自力で書けるならばライブラリ関数の有無は大した問題ではないから何が要点かわからない
485 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:17:58.62 ID:H3mwwYQo.net] >>476 C/C++/Rustいずれか一つでも挫折するような人は、いずれも使いこなせないから結果は同じ C/C++/Rustいずれも使える人はRustを使う なぜなら言語の機能が他より高くてプログラミングしやすいため
486 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:29:06.52 ID:DajlRg+n.net] >>478 自力で用意できるかできないかはどうでもよくて、標準ライブラリにあるかないかが大きく違う だってどの言語でも用意できないわけがないからw 俺はpythonでやるならという条件で書いただけ >>479 C/C++/Rustはそれぞれ共同開発する人が誰かによって変わるだけ 自分で使うだけなら速いし面白いし安定してるし、C++で書く C使いが多ければCを使うし Rust自体を使うことが目的でないのなら、Rustやってみたい人が多いときRustにするだけ 量的には C > C++ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rust かなぁ
487 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:35:38.12 ID:bERyk9+R.net] C/C++/Rustの3つならば明白に言語が提供する機能差がある 3つとも書けるプログラマーならば99%がRustを選ぶのは間違いない
488 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:38:32.90 ID:WcCf8R0B.net] どんだけ馬鹿にされようが罵られようが構わないけど C++は糞すぎるワイには手に負えない言語とだけは言っておく C++20以前はジェネリックスに渡す型引数の制約を実現するために偶然見つかった「SFINAE」という「コンパイラの挙動を応用する方法」を用いるのが標準レベルでデファクトスタンダードになっていたとかヤバすぎだろ 普通の人なら気にも留めないような挙動を一般ユーザーにも把握させることを強要する時点で狂っているとしか思えない SFINAEの代替手法として導入されたconceptsですらごちゃごちゃしているしそこらの一般ユーザーはc++のバージョンアップについていけるほど忍耐強くはない だからみんなRustに移る
489 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:46:14.60 ID:H3mwwYQo.net] >>480 その様子だと君にはどちらも無理だろう もし書けると言うならば そのcombinationsをRustで型Tのイテレータとして実装コードを出してごらん
490 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 19:57:31.66 ID:DajlRg+n.net] >>481 そんなことねーよw >>482 まあね。その剥き出し感がいいんだよ遊びで使う分には。見えてない部分がないところ。 一応言っておくと難しい機能は公開するようなコードでは使わないよ。 >>483 https://docs.rs/itertools/0.7.8/src/itertools/combinations.rs.html
491 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:02:15.14 ID:H3mwwYQo.net] >>482 C++のSFINAEはもちろん酷くて論外だが 逆にRustの現状のトレイト実装ルールは実装型を互いに排他を満たす必要があり厳しすぎる もちろんRustコンパイラは進化し続けていて一部特殊化がそろそろ安定化しそうで少し緩和となり期待
492 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:03:31.49 ID:kxxb+wWf.net] 若い頃はSFINAEのパズル解く感じが好きでヤバいコード結構書いてたけど、だんだんあれは正気ではなかったなと思うようになってきた
493 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:06:07.03 ID:DajlRg+n.net] >>486 やめてそういうこと言うのw
494 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:13:48.68 ID:bERyk9+R.net] >>484 あなたはそのリンクを出すことでRustを全く知らない無知だとバレました なぜならそのリンクのitertoolsバージョン0.7.8は4年前なのです 検索でリンクを拾ってこない限りそんな超古いバージョンを示す人はいません あなたはプログラミング未経験者もしくは初心者であることがバレてしまいました
495 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:30:44.95 ID:H3mwwYQo.net] >>484 偉そうなこと言っていてRustを理解できす挫折した落ちこぼれだったのか >>480 でRustを蔑んでいたから怪しいと思っていたらやっぱりか
496 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 20:46:50.19 ID:DajlRg+n.net] >>488-489 別に最新だろうがすぐ行けるだろw 俺が自分で書いたら正解はコレって出す予定だったからわざわざ出題したチキンなんだろ? だからこれにしただけw
497 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:05:33.57 ID:H3mwwYQo.net] >>490 言い訳ばかりだな じゃあもう一つの>>460 のsubsetsイテレータをRustで書けたら認めてやろう
498 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:23:06.07 ID:H3mwwYQo.net] もしプログラミングが不慣れで難しいようだったら イテレータを「どんな仕様」にしてしまってもいいぜ それがヒントだ
499 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:27:42.88 ID:DajlRg+n.net] お前に認めてもらう必要なんてねーよw Rustを使うやつはバカしかいないんだなw
500 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:37:04.88 ID:bERyk9+R.net] >>493 今回は検索してリンクを拾ってこれなかったのね
501 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 21:38:31.66 ID:DajlRg+n.net] 煽って正解もらいたいバカしかいないの?w
502 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:05:39.63 ID:bERyk9+R.net] >>492 subsetsをどんな仕様のイテレータでもいいってことは 初心者でもすぐ出てくるあれでいいってことか >>495 これは超初心者でもいいからプログラミングをしたことがあるのか それとも煽っているだけなのかが判明しちゃう良問のようです 断念ですか
503 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:10:01.54 ID:DajlRg+n.net] 断念もクソもなんでお前らに言われて俺がやる必要があるんだよw バカだろw ハッキリ言っておくが俺はRust書けるし、多分お前らより詳しいよ普通にw こういうのがRust推してる信者頭おかしくて性格歪んだやつしかいない雰囲気100%で毛嫌いされてる理由なんだろうなw
504 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:11:58.21 ID:DajlRg+n.net] 端的に言うと、流行りばかり気にするすごい頭悪い人たちと同じ匂いがするんだよw
505 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:16:52.73 ID:H3mwwYQo.net] >>497 Rustに詳しいならば 既存のこれを使えばいい、と即答できる問題 あるいはsubsetsイテレータという問題だから仕様が自由に何でもいいならば初心者でもコードを一瞬で示せる問題 どちらも出来ないならRust未経験と断定できる
506 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:31:30.23 ID:DajlRg+n.net] permutationやcombinationとか普通にはあまり使わないんだよ 競プロとかやってる実利のないコードをメインに書いてるバカがそういうのをやたら使いたがって、俺より遅いコードしか書けないし、創造的なロジックもどうやら苦手そうなのに、そういう問題やたら出してくるんだよね 俺は元々そういうの得意だけど、その手の問題を好き好んで出してくるバカに答えを書いてやるのが嫌なんだよw 納得?
507 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:43:02.13 ID:bERyk9+R.net] >>500 permutationやcombinationのアルゴリズムが少し難しいのはわかります でも今回はsubsetsですよ さらに>>492 でどんな仕様にしてもいいと言っていてしかもそれがヒントだと言ってるのでこれは気付きますよ
508 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:45:50.74 ID:DajlRg+n.net] 俺pythonで書いてるし、自分でもすぐ書けるけど、お前に回答すんのが嫌なんだよw なぜならお前がバカだからw 何度もそう書いてんだけどw
509 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:50:52.11 ID:DajlRg+n.net] ああ、ちなみにpermutationやcombinationのアルゴリズムは簡単w
510 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:53:14.37 ID:H3mwwYQo.net] さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484 ところが今回のsubsetsについては回答できない 検索で出てこないから答えられないのだとわかる
511 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:04:20.16 ID:DajlRg+n.net] 永久に書いてやるよw すぐ書けるけど、お前に回答すんのが嫌なんだよw なぜならお前がバカだからw 何度もそう書いてんだけどw
512 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:07:34.34 ID:bERyk9+R.net] >>503 なるほど subsetsのアルゴリズムは難しくて無理でしたか
513 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:09:47.42 ID:DajlRg+n.net] 永久に書いてやるよw すぐ書けるけど、お前に回答すんのが嫌なんだよw なぜならお前がバカだからw 何度もそう書いてんだけどw
514 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:20:19.51 ID:H3mwwYQo.net] >>507 さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484 itertoolsをもし本当に使ったことがあるならばsubsetsもあるだろうことくらいわかるだろ?
515 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:24:18.79 ID:DajlRg+n.net] >>508 >>507
516 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:32:35.94 ID:bERyk9+R.net] >>508 そこは英語力の問題かな subsetsが見つからなかった時にpowersetを探せるかどうか
517 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:54:14.91 ID:DajlRg+n.net] 俺理系院卒だから数学一般教養くらいはあるぞw 難しい話をしてるつもりなのかもしれんけどw
518 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 00:52:00.92 ID:2VKgWl5Z.net] >>481 俺はC++もRustも基本的部分は理解しているつもりで、書こうと思えば Rustでも 書けると思うが、書こうとは思えない。 しかし、C++は使う。
519 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 10:39:48.98 ID:iFx1kR7d.net] 同じことをやるにしてもrustは面倒くさそう
520 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 14:20:20.70 ID:4Deniw6A.net] rustは詳しく知れば知るほど使える領域が狭いことに気付く。まあ勉強して損することはないとは思うけど。
521 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 16:01:45.47 ID:FLjIdsXf.net] まぁ、Rustがものすごく人気になるようだったら、Rustを下敷きにしたC++サブセット Smart C++が出てくると思うわ。 そしてc++はライブラリアン向けのunsafe的な扱いになる、と。
522 名前:デフォルトの名無しさん [2022/03/16(水) 17:58:27.77 ID:NLGXbRJg.net] >>515 無理じゃないかな。
523 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 20:15:10.51 ID:TNL7Q8/z.net] rustが他言語の仕様に影響を与える部分はでてくるだろうね。
524 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:02:09.61 ID:0TydPa2f.net] 反面教師にはなるよねw
525 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:24:41.08 ID:MkjFLw2M.net] >>512 それはあなたの能力では理解できなかったから思うだけで留まり実際には書けていない >>513 逆だ 同じことが簡潔に書ける >>514 むしろ幅広い分野で有効 後発だからとも言えるが言語仕様が幅広いパラダイムを洗練して採り入れていることが勝因とみた [] [ここ壊れてます]
527 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:56:01.01 ID:GaQESt6l.net] 少なくともC++はリプレイスしてほしいな
528 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 21:58:33.64 ID:0TydPa2f.net] Rust信者って本当にバカだなw 妄想で他人を説得はできないんだよ グラフ構造を標準ライブラリとunsafe使わずに簡潔に書いてみろよw 他の言語で出来ないやつないから Rustも超狭い領域ではオンリーワンくらい有効なんだけど、それ以外では趣味でしか使われない
529 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:51:54.51 ID:yCGU0QjC.net] >>491 >>492 横からやけどほんまにどんな仕様にしてもええの? それなら長さlenのsubsetsイテレータは10文字で完成 『0..(1<<len)』 数字を2進数で見てbit立っている要素による各subset 0は全ての要素がないから空集合 それで納得してもらえんのやったら入力inputとして (0..(1 << len)) .map(|c| (0..len) .filter_map(move |i| (c & (1 << i) != 0).then(|| &input[i])) .collect::<Vec<_>>()) これでちゃんとしたsubsetsイテレータが完成 例えばinput = &["a", "b", "c"]ならば以下が順に出る [] ["a"] ["b"] ["a", "b"] ["c"] ["a", "c"] ["b", "c"] ["a", "b", "c"]
530 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:53:02.55 ID:yCGU0QjC.net] >>491 >>492 横からやけどほんまにどんな仕様にしてもええの? それなら長さlenのsubsetsイテレータは10文字で完成 『0..(1<<len)』 数字を2進数で見てbit立っている要素による各subset 0は全ての要素がないから空集合 それで納得してもらえんのやったら入力inputとして (0..(1 << len)) .map(|c| (0..len) .filter_map(move |i| (c & (1 << i) != 0).then(|| &input[i])) .collect::<Vec<_>>()) これでちゃんとしたsubsetsイテレータが完成 例えばinput = &["a", "b", "c"]ならば以下が順に出る [] ["a"] ["b"] ["a", "b"] ["c"] ["a", "c"] ["b", "c"] ["a", "b", "c"]
531 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 01:31:24.96 ID:HeUHSOmZ.net] collectするならfoldで十分かな fn subsets<T>(input: &[T]) -> impl Iterator<Item=Vec<&T>> { let len = input.len(); (0..(1 << len)) .map(move |c| (0..len) .fold(vec![], |mut v, i| { if c & (1 << i) != 0 { v.push(&input[i]) }; v }) ) }
532 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:22:57.24 ID:stJJ2apy.net] C++でsubsetsイテレータを書くとどんな感じになるの?
533 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:29:21.66 ID:M6s617kA.net] >>519 馬鹿
534 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:39:09.51 ID:faeKJv0z.net] Rust同様どうとでも出来るよw C++のは古いから名前がアレだけど 俺は>>522 じゃないけどfilterとmapで書いた方が分かりやすいとは思う この書き方でpushとかは見たくなかったw
535 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 02:53:46.50 ID:75al4ANx.net] うむ >>522 filter_mapとthenによるOption利用が分かりやすいな
536 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 03:28:10.97 ID:OxdqHDsn.net] >>527 ぜひC++版お願い
537 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 04:22:11.55 ID:faeKJv0z.net] >>529 何度でも言うけど、そういう要求は飲まない 金くれたら書くよw
538 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:12:49.73 ID:8E8aTCar.net] >>520 リプレースはしなくていい。 コーダーとかが通常使う安全運転版と、ライブラリアン用のフル版が住み分け・共存できればいい。 従来はコーディング規約とライブラリでやっていたところだけど、こういうのはshared ptrみたいに旨が使う共通仕様にしたほうがいい。
539 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:19:10.27 ID:H9cH52GC.net] Rustに移行すれば 色んな問題が一気に解決するだけでなく プログラミングもしやすくなって一石二鳥
540 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:41:07.21 ID:FVjeEviC.net] >>532 サンプルコードがもっと充実してきて、標準的なコーディングが普及してきてから検討するわ。 Rustは土方向け言語目指しているのに、今のRustの仕様だと土方に難しすぎるから中途半端。それならc++&コーディング規約でいいや。
541 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:49:29.01 ID:+B7ucdDW.net] >>533 君たち土方には難しいのかも知れ
542 名前:ネいが普通のプログラマーにとっては難しくないしコーティングがC++より快適 [] [ここ壊れてます]
543 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 08:57:01.71 ID:qDb9bUKB.net] Pythonくらいしかやったことない人にとって難しいのはそうだろうけど C++14/17についていってる人ならRust余裕だと思うけどなぁ
544 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 10:08:01.84 ID:faeKJv0z.net] Rustに出来てC++が似たようなことを出来ないってことはまずないよ ただ同じことをしたい場合、手間がすごいかかる(23は知らんけど) そしてどう転んでもエラーがRustほど人間に優しくなったりはしない(と思う) C++に出来てRustが似たようなことを出来ないってこともそんなに多くない まあでもこっちは本当に出来ない https://www.reddit.com/r/rust/comments/n7rjfk/what_can_c_do_that_rust_cant_2021_edition/ ただRustは初心者には難しすぎ、ある程度他の言語をやってる人にも難しいというハンデがある なのでスクリプト言語感覚でRustをやろうと思うのはちょっとオススメできない 楽を出来る場面は確かにあるので、そこをどの程度メリットと捉えるか 制約をどの程度デメリットと捉えるかで評価が分かれる
545 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 12:06:55.23 ID:wJGqDNhd.net] >>534 土方にやらせる話をしているんだよ。 Rust信者がそういう意識なら、RustがJavaみたいに流行ることは無いな。 やっぱりHaskellコースかね。
546 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:20:31.29 ID:YyXXowcK.net] >>534 >君たち土方には難しいのかも知れないが普通のプログラマーにとっては難しくないしコーティングがC++より快適 自分がどれくらい矛盾してること言ってるのかも理解してなさげ。
547 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:26:55.16 ID:kAy4MIQW.net] >>522 Rustはスクリプト言語のように簡潔に書ける点もいいね それでいてC言語並に速い C++は簡潔に書けず手間暇かかりすぎる
548 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:35:40.91 ID:+BzvG1OL.net] お手軽さっていう話だと、関数の仮引数の型も型推論してほしい、ってたまに思っちゃう
549 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:44:45.18 ID:qDwk9HhQ.net] >>540 技術的にはできるし、できるならやりたくなっちゃうところをあえて削ったのは英断だと思ってる 過去のコードや他人のコードを読むときに直近に型があるのは大きい
550 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 18:59:38.79 ID:Rcv7QaS+.net] > 仮引数の型も型推論 OCamlだとそれはフツーにできてるのにね > 過去のコードや他人のコードを読むときに直近に型があるのは大きい 同じような話だがJavaのジェネリクスで > List<Foo> list = new ArrayList<>(); > この右辺のパラメータが省略できるのを有難がるのは残念で > ホントは左を省略してvar ist = new ArrayList<Foo>(); > と書けたほうが嬉しいのにJavaはやっぱりダメダメ みたいな意見をみたことがあるが、左を残すことこそ大事なんだよな 実装に対してではなくてインタフェースに対してプログラミングするのであって 変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに それをわかってないやつはタイピング数などで判断して世迷い言を言う
551 名前:デフォルトの名無しさん [2022/03/17(木) 19:25:12.70 ID:pdkFYtDC.net] Rust学習しはじめだがEnumの仕組みは良いと思う。 C#あたりに組み込まれればいいのに。
552 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:43:27.53 ID:oh1xEFC0.net] enum Optionとか便利で簡潔に null nil undefined -1など無くして安全に出来ていいよね それでいてコンパイル後は最適化されたり消えたりして効率も両立されたり
553 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:52:32.01 ID:faeKJv0z.net] 別にC++でも同じことはできるけどね 自分で組めばC++14とかでもrxっぽく書いたり、Optionの実装も余裕 手間さえ惜しまなければw
554 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:55:03.76 ID:faeKJv0z.net] Javaも最近は左側省略できるよ おっしゃるとおり基底型何にするかは選べないけどw
555 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:58:40.56 ID:LRb50lm3.net] C++17にstd::optional<T>があるにはあるのだが... 膨大な量の既存のSTLが無効値をoptionalに置き換えられることはない つまり無効値でoptionalを返す風潮ができにくいから悲しみ
556 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 20:59:36.98 ID:oh1xEFC0.net] 引数の型推論は原理的にはかなり出来そうだけど 例えば引数がas_ref()で使われていて変換後がPathなら引数はimpl AsRef<Path>までやっちゃう? でもその利用者へのインタフェース明示や可読性と保守性を考えると型明記でいいような気がする
557 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:13:38.45 ID:faeKJv0z.net] C++もautoだらけlambdaだらけにすると引数も戻り値も結構型書かなくていいけど、遠すぎて何に怒られてるのか分からん代入エラーが出たりもするw Rustも同じだけどエラーは分かりやすい
558 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:15:46.46 ID:cEFLJG6J.net] >>545 そこはやろうと思えばできるレベルと Rustが標準ライブラリで全面採用サポートしてるレベルで天と地の差があるよね 例えば>>522 もbool値がthenでOptionを生成してそれをfilter_mapが受け取ることで簡潔なコードになっていたり
559 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:23:13.02 ID:faeKJv0z.net] そこはfilterとmapの方が分かりやすい
560 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:32:28.43 ID:7cb0HHrx.net] 一般的にfilter_mapはわかりやすと速さを両立 だからわざわざfilter_mapやfilter_map_okが用意されている
561 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:35:05.28 ID:faeKJv0z.net] そんなところは全く速さに影響しないと思うよ
562 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:43:21.73 ID:LVblziyo.net] >>553 その種類のイテレータを2段は最適化前はもちろん速さに影響するけど 最適化により最終コードが同一コードになることを確認したということ?
563 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:49:32.84 ID:faeKJv0z.net] お前は速くなることを確認したんかい?w 俺は出来るけど速くならないことを確認する必要がないと判断したw お前は恐らく出来ないw