C vs C++ vs Rust Part.3

■ このスレッドは過去ログ倉庫に格納されています
2022/01/27(木) 22:19:47.56ID:avZQ9Wm7
闘え
※前スレ
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/
2022/03/14(月) 01:04:15.62ID:U570WKgz
いや俺は当時検索デスクを欠かさず読んでた検索っ子だったぞ
そんな事実はなかった
2022/03/14(月) 01:10:14.46ID:Cn/Dq9rt
>>452
検索リテラシーが低かったんじゃないの?
とにかく俺や周りの人達は98年末くらいからGoogle使ってるよ
2022/03/14(月) 01:12:22.48ID:U570WKgz
検索デスクを知らないってことは嘘だね。。。
2022/03/14(月) 01:18:10.05ID:zdS58C2+
うーん、やっぱいまいち思い出せないけど2001年頃にはVisual Studio6つかって趣味でいろんなゲーム作ってたような学生だったし、おれはとっくにGoogle使いまくってたような気がする
当時のIEって何かといろんなバーが追加されまくって表示が狭かったんだっけ、なつかしいね
初代Sleipnirとか出てからネットサーフィンも快適になったんだったかな

たしかに一般認知されるか、っていうとテレビCM出しまくるようになってからだろうし、もっとずっと後だね
2022/03/14(月) 01:42:30.09ID:j1ckIHBu
出た瞬間からアーリーが早く認知してたことをベースにするならRustは10年余裕で超えるので浸透速度が非常に遅い。
そりゃそうよ。OS付近やかなりな低レベルライブラリ向きで、アプリ開発にはバッテリーが小さすぎて向いてないんだから。
2022/03/14(月) 01:49:04.04ID:rjFiO5pI
>>437
関係無い。
RustはRubyやPerlよりも生産性が低い。
2022/03/14(月) 02:24:15.93ID:OitdNeYT
年末に世の中の流行について行こうとPython+OpenpyxlでExcelファイルいじくるプログラム書いてみた
単にワークシート読み込むだけで分オーダー
ライブラリがワークシート読み込みだけなのでこっちはなんもやってない。
こりゃあかんってなって
ためしにC#+EPPLUSで同じプログラム書いてみた
全プログラム終了するまで5秒ww
あと、既存チャートの参照範囲変更するとかEPPLUSでサクッとできることがOpenpxlじゃできねぇんだわ
どこがいいのPythonて?
2022/03/14(月) 02:25:55.59ID:U570WKgz
>>458
両方のコードを公開しない限り、誰も何とも言えないと思う
ああ、この人python使えないんだなって普通は思うよ
2022/03/14(月) 02:33:50.85ID:OitdNeYT
Pythonて集合演算ができるってんで
{a,b,c}3要素からなるべき集合のべき集合とか(ホントは位相空間を作ってみたかった)簡単に書けるかな?とおもってやってみたが、
とても簡単にできそうにない
MathematicaだとSubsets[Subsets[{a, b, c}]]で済む話
このPythonとかゆーがらくた言語なんでこんなに流行ってんの?
インターフェース誌あたりはずーっとPython一色だし。
Web scrapingとかだとC# Scriptでも実行時コンパイルで待たされるんで、
Pythonはイライラ感なく即実行できてウマーとはオモタ
2022/03/14(月) 02:44:33.00ID:OitdNeYT
>>459
ま、Python使えないとお前が思うのは勝手だが
ワークシート読み込みのはライブラリが勝手に読むこともわからないんだろな。
プログラマが手を下すとことじゃない。
Matlabあたりも同様だけどこういうインタープリタは繰返し制御文で実行するんじゃなく
ライブラリに任すようにコーディングすんだわ。そこで1分とかかかってるようじゃゴミ判定が正解
ま、Python+Openpyxlは糞だな。とても日々の業務になんか使えないシロモノ。
こんなの使ってエクセルの自動化とか糞本買った方お気の毒としか言い様がない。
会社から金貰ってるって仕事してるっていう気持あるなら、
直接エクセルファイルunzipしてxmlいじくるか、素直にC#+EPPLUS使った方がはるかにまとも
2022/03/14(月) 02:48:39.91ID:OitdNeYT
でもおれPythonには日々世話になってんのよな
fakymac+keyhac
しょっちゅう動作がおかしくなるけど、
sunキーボード+emacsで育った世代なんでさww
2022/03/14(月) 03:00:48.63ID:U570WKgz
>>460
そんな大変なんだろうか・・・
def subsets(x):
  return [y for i in range(1,len(x)+1) for y in itertools.combinations(x, i)]

>>461
別に俺何を使っても書けるし、大昔から出来るし、時間かかるなら使い方悪いだけだと思う=お前はpython使えない
2022/03/14(月) 08:06:12.15ID:fAU8x8Os
>>431
それだと使える人間が少なくなって全体の生産性は落ちるだろ。
Haskellの二の舞コースじゃね?
2022/03/14(月) 11:35:31.82ID:A2g22mwQ
>>461
直接って、xlxsの仕様を理解している前提じゃん。

Pythonは、速度要らなくて、目的で検索してライブラリが出て来て、コードコピペでも大体動く的なそういう使い方が多いと思う。
2022/03/15(火) 12:52:11.85ID:s8pRYrZQ
rustが広まったらどっちにしろ大して理解してない奴が投入されて地獄見るわ。
そういう当たり前のことすら想像できない奴がrustマンセーしてるんだよな。
2022/03/15(火) 15:22:25.57ID:sRZMI6dS
>>466
一番儲かるのはスコップ売る奴という落ちだろうな。
2022/03/15(火) 15:34:13.41ID:O0maCHfq
参考文献というお布施
2022/03/15(火) 16:52:44.24ID:Vpjp3tKl
習得難易度が多少高くても自由度が低い言語を使う場合
低スキルメンバーが混ざっても惨事になりにくい

逆に習得難易度が低くても自由度の高い言語を使う場合は
高スキルメンバーで揃えないとすぐに破綻する
2022/03/15(火) 17:42:54.49ID:DajlRg+n
昔はJavaの習得難易度高かったからな(VBに比べて)
その頃はそういう言い分もあって、実際にJavaはVBから来たコピペ野郎の洗礼は受けたものの、簡単なことしかさせないフレームワークという武器を得て、人海戦術の片腕となり得た

しかし今は当時より更に難しくなったJavaが習得難易度低に分類されているw
そのJavaより習得難易度がはるかに高く、ライブラリの使い方ではなく言語レベルでの書き方が難しいRustが低スキルメンバーに扱えるかというと・・・w
2022/03/15(火) 18:36:25.33ID:O0maCHfq
C++が出来ないからRustに移ったのにそれも習得できないってあとナニをがんばるのやおまいら
2022/03/15(火) 18:46:13.42ID:t3FNLZzV
C++理解できんようなやつがRustを理解できるわけないやろ
2022/03/15(火) 18:58:34.72ID:DajlRg+n
でも多分ほとんどそういう連中だと思うぞ
普通に勉強対象としてgoとRustを比べてるところがもう死ぬほどおかしいんだけど、そこに思い至らないってことは・・・
2022/03/15(火) 19:00:10.43ID:N6RMeM8u
言語を習得するのは最低限必要なスキルレベルでしかないのに
それをもってプログラミングスキルを推し測ろうとする人って所詮そのレベルなんだよね
2022/03/15(火) 19:02:39.63ID:H3mwwYQo
C++はバカでも使えるが、バカは使えこなせず、C++コンパイラはバカコードを通すので、問題を起こす
Rustもバカは使えこなせない点で同じだが、Rustコンパイラはバカコードを通さないため、問題が起きない
2022/03/15(火) 19:03:52.90ID:DajlRg+n
あとC++が理解出来ないからRustに移るということはない
C++で開発し続けることに挫折して、Rustに移るだけだと思う
2022/03/15(火) 19:11:28.15ID:DajlRg+n
Rustが問題が起きないということもなくて、Rustを使ったらプログラムを書けなくなる人がかなりの量出るだけw
2022/03/15(火) 19:13:15.97ID:H3mwwYQo
>>460 >>463
二人ともそれぞれsubsetsとcombinationsというライブラリ関数に頼って書いているだけに過ぎない
ライブラリ関数が充実してると言いたいのか、プログラムを書きやすいと言いたいのか、中途半端
そして自力で書けるならばライブラリ関数の有無は大した問題ではないから何が要点かわからない
2022/03/15(火) 19:17:58.62ID:H3mwwYQo
>>476
C/C++/Rustいずれか一つでも挫折するような人は、いずれも使いこなせないから結果は同じ
C/C++/Rustいずれも使える人はRustを使う
なぜなら言語の機能が他より高くてプログラミングしやすいため
2022/03/15(火) 19:29:06.52ID:DajlRg+n
>>478
自力で用意できるかできないかはどうでもよくて、標準ライブラリにあるかないかが大きく違う
だってどの言語でも用意できないわけがないからw
俺はpythonでやるならという条件で書いただけ

>>479
C/C++/Rustはそれぞれ共同開発する人が誰かによって変わるだけ
自分で使うだけなら速いし面白いし安定してるし、C++で書く
C使いが多ければCを使うし
Rust自体を使うことが目的でないのなら、Rustやってみたい人が多いときRustにするだけ
量的には
C > C++ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Rust
かなぁ
2022/03/15(火) 19:35:38.12ID:bERyk9+R
C/C++/Rustの3つならば明白に言語が提供する機能差がある
3つとも書けるプログラマーならば99%がRustを選ぶのは間違いない
2022/03/15(火) 19:38:32.90ID:WcCf8R0B
どんだけ馬鹿にされようが罵られようが構わないけど
C++は糞すぎるワイには手に負えない言語とだけは言っておく
C++20以前はジェネリックスに渡す型引数の制約を実現するために偶然見つかった「SFINAE」という「コンパイラの挙動を応用する方法」を用いるのが標準レベルでデファクトスタンダードになっていたとかヤバすぎだろ
普通の人なら気にも留めないような挙動を一般ユーザーにも把握させることを強要する時点で狂っているとしか思えない
SFINAEの代替手法として導入されたconceptsですらごちゃごちゃしているしそこらの一般ユーザーはc++のバージョンアップについていけるほど忍耐強くはない
だからみんなRustに移る
2022/03/15(火) 19:46:14.60ID:H3mwwYQo
>>480
その様子だと君にはどちらも無理だろう
もし書けると言うならば
そのcombinationsをRustで型Tのイテレータとして実装コードを出してごらん
2022/03/15(火) 19:57:31.66ID:DajlRg+n
>>481
そんなことねーよw

>>482
まあね。その剥き出し感がいいんだよ遊びで使う分には。見えてない部分がないところ。
一応言っておくと難しい機能は公開するようなコードでは使わないよ。

>>483
https://docs.rs/itertools/0.7.8/src/itertools/combinations.rs.html
2022/03/15(火) 20:02:15.14ID:H3mwwYQo
>>482
C++のSFINAEはもちろん酷くて論外だが
逆にRustの現状のトレイト実装ルールは実装型を互いに排他を満たす必要があり厳しすぎる
もちろんRustコンパイラは進化し続けていて一部特殊化がそろそろ安定化しそうで少し緩和となり期待
2022/03/15(火) 20:03:31.49ID:kxxb+wWf
若い頃はSFINAEのパズル解く感じが好きでヤバいコード結構書いてたけど、だんだんあれは正気ではなかったなと思うようになってきた
2022/03/15(火) 20:06:07.03ID:DajlRg+n
>>486
やめてそういうこと言うのw
2022/03/15(火) 20:13:48.68ID:bERyk9+R
>>484
あなたはそのリンクを出すことでRustを全く知らない無知だとバレました
なぜならそのリンクのitertoolsバージョン0.7.8は4年前なのです
検索でリンクを拾ってこない限りそんな超古いバージョンを示す人はいません
あなたはプログラミング未経験者もしくは初心者であることがバレてしまいました
2022/03/15(火) 20:30:44.95ID:H3mwwYQo
>>484
偉そうなこと言っていてRustを理解できす挫折した落ちこぼれだったのか
>>480でRustを蔑んでいたから怪しいと思っていたらやっぱりか
2022/03/15(火) 20:46:50.19ID:DajlRg+n
>>488-489
別に最新だろうがすぐ行けるだろw
俺が自分で書いたら正解はコレって出す予定だったからわざわざ出題したチキンなんだろ?
だからこれにしただけw
2022/03/15(火) 21:05:33.57ID:H3mwwYQo
>>490
言い訳ばかりだな
じゃあもう一つの>>460のsubsetsイテレータをRustで書けたら認めてやろう
2022/03/15(火) 21:23:06.07ID:H3mwwYQo
もしプログラミングが不慣れで難しいようだったら
イテレータを「どんな仕様」にしてしまってもいいぜ
それがヒントだ
2022/03/15(火) 21:27:42.88ID:DajlRg+n
お前に認めてもらう必要なんてねーよw Rustを使うやつはバカしかいないんだなw
2022/03/15(火) 21:37:04.88ID:bERyk9+R
>>493
今回は検索してリンクを拾ってこれなかったのね
2022/03/15(火) 21:38:31.66ID:DajlRg+n
煽って正解もらいたいバカしかいないの?w
2022/03/15(火) 22:05:39.63ID:bERyk9+R
>>492
subsetsをどんな仕様のイテレータでもいいってことは
初心者でもすぐ出てくるあれでいいってことか

>>495
これは超初心者でもいいからプログラミングをしたことがあるのか
それとも煽っているだけなのかが判明しちゃう良問のようです
断念ですか
2022/03/15(火) 22:10:01.54ID:DajlRg+n
断念もクソもなんでお前らに言われて俺がやる必要があるんだよw バカだろw
ハッキリ言っておくが俺はRust書けるし、多分お前らより詳しいよ普通にw
こういうのがRust推してる信者頭おかしくて性格歪んだやつしかいない雰囲気100%で毛嫌いされてる理由なんだろうなw
2022/03/15(火) 22:11:58.21ID:DajlRg+n
端的に言うと、流行りばかり気にするすごい頭悪い人たちと同じ匂いがするんだよw
2022/03/15(火) 22:16:52.73ID:H3mwwYQo
>>497
Rustに詳しいならば
既存のこれを使えばいい、と即答できる問題
あるいはsubsetsイテレータという問題だから仕様が自由に何でもいいならば初心者でもコードを一瞬で示せる問題
どちらも出来ないならRust未経験と断定できる
2022/03/15(火) 22:31:30.23ID:DajlRg+n
permutationやcombinationとか普通にはあまり使わないんだよ
競プロとかやってる実利のないコードをメインに書いてるバカがそういうのをやたら使いたがって、俺より遅いコードしか書けないし、創造的なロジックもどうやら苦手そうなのに、そういう問題やたら出してくるんだよね
俺は元々そういうの得意だけど、その手の問題を好き好んで出してくるバカに答えを書いてやるのが嫌なんだよw
納得?
2022/03/15(火) 22:43:02.13ID:bERyk9+R
>>500
permutationやcombinationのアルゴリズムが少し難しいのはわかります
でも今回はsubsetsですよ
さらに>>492でどんな仕様にしてもいいと言っていてしかもそれがヒントだと言ってるのでこれは気付きますよ
2022/03/15(火) 22:45:50.74ID:DajlRg+n
俺pythonで書いてるし、自分でもすぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
2022/03/15(火) 22:50:52.11ID:DajlRg+n
ああ、ちなみにpermutationやcombinationのアルゴリズムは簡単w
2022/03/15(火) 22:53:14.37ID:H3mwwYQo
さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484
ところが今回のsubsetsについては回答できない
検索で出てこないから答えられないのだとわかる
2022/03/15(火) 23:04:20.16ID:DajlRg+n
永久に書いてやるよw
すぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
2022/03/15(火) 23:07:34.34ID:bERyk9+R
>>503
なるほど
subsetsのアルゴリズムは難しくて無理でしたか
2022/03/15(火) 23:09:47.42ID:DajlRg+n
永久に書いてやるよw
すぐ書けるけど、お前に回答すんのが嫌なんだよw
なぜならお前がバカだからw 何度もそう書いてんだけどw
2022/03/15(火) 23:20:19.51ID:H3mwwYQo
>>507
さきほどcombinationsイテレータをググって古いversionのitertoolsのソースで回答したよな>>484
itertoolsをもし本当に使ったことがあるならばsubsetsもあるだろうことくらいわかるだろ?
2022/03/15(火) 23:24:18.79ID:DajlRg+n
>>508
>>507
2022/03/15(火) 23:32:35.94ID:bERyk9+R
>>508
そこは英語力の問題かな
subsetsが見つからなかった時にpowersetを探せるかどうか
2022/03/15(火) 23:54:14.91ID:DajlRg+n
俺理系院卒だから数学一般教養くらいはあるぞw
難しい話をしてるつもりなのかもしれんけどw
2022/03/16(水) 00:52:00.92ID:2VKgWl5Z
>>481
俺はC++もRustも基本的部分は理解しているつもりで、書こうと思えば Rustでも
書けると思うが、書こうとは思えない。
しかし、C++は使う。
2022/03/16(水) 10:39:48.98ID:iFx1kR7d
同じことをやるにしてもrustは面倒くさそう
2022/03/16(水) 14:20:20.70ID:4Deniw6A
rustは詳しく知れば知るほど使える領域が狭いことに気付く。まあ勉強して損することはないとは思うけど。
2022/03/16(水) 16:01:45.47ID:FLjIdsXf
まぁ、Rustがものすごく人気になるようだったら、Rustを下敷きにしたC++サブセット Smart C++が出てくると思うわ。

そしてc++はライブラリアン向けのunsafe的な扱いになる、と。
516デフォルトの名無しさん
垢版 |
2022/03/16(水) 17:58:27.77ID:NLGXbRJg
>>515
無理じゃないかな。
2022/03/16(水) 20:15:10.51ID:TNL7Q8/z
rustが他言語の仕様に影響を与える部分はでてくるだろうね。
2022/03/16(水) 21:02:09.61ID:0TydPa2f
反面教師にはなるよねw
2022/03/16(水) 21:24:41.08ID:MkjFLw2M
>>512
それはあなたの能力では理解できなかったから思うだけで留まり実際には書けていない

>>513
逆だ
同じことが簡潔に書ける

>>514
むしろ幅広い分野で有効
後発だからとも言えるが言語仕様が幅広いパラダイムを洗練して採り入れていることが勝因とみた
2022/03/16(水) 21:56:01.01ID:GaQESt6l
少なくともC++はリプレイスしてほしいな
2022/03/16(水) 21:58:33.64ID:0TydPa2f
Rust信者って本当にバカだなw
妄想で他人を説得はできないんだよ
グラフ構造を標準ライブラリとunsafe使わずに簡潔に書いてみろよw
他の言語で出来ないやつないから
Rustも超狭い領域ではオンリーワンくらい有効なんだけど、それ以外では趣味でしか使われない
2022/03/16(水) 23:51:54.51ID:yCGU0QjC
>>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"]
2022/03/16(水) 23:53:02.55ID:yCGU0QjC
>>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"]
2022/03/17(木) 01:31:24.96ID:HeUHSOmZ
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
})
)
}
2022/03/17(木) 02:22:57.24ID:stJJ2apy
C++でsubsetsイテレータを書くとどんな感じになるの?
2022/03/17(木) 02:29:21.66ID:M6s617kA
>>519
馬鹿
2022/03/17(木) 02:39:09.51ID:faeKJv0z
Rust同様どうとでも出来るよw
C++のは古いから名前がアレだけど
俺は>>522じゃないけどfilterとmapで書いた方が分かりやすいとは思う
この書き方でpushとかは見たくなかったw
2022/03/17(木) 02:53:46.50ID:75al4ANx
うむ

>>522
filter_mapとthenによるOption利用が分かりやすいな
2022/03/17(木) 03:28:10.97ID:OxdqHDsn
>>527
ぜひC++版お願い
2022/03/17(木) 04:22:11.55ID:faeKJv0z
>>529
何度でも言うけど、そういう要求は飲まない
金くれたら書くよw
2022/03/17(木) 08:12:49.73ID:8E8aTCar
>>520
リプレースはしなくていい。
コーダーとかが通常使う安全運転版と、ライブラリアン用のフル版が住み分け・共存できればいい。
従来はコーディング規約とライブラリでやっていたところだけど、こういうのはshared ptrみたいに旨が使う共通仕様にしたほうがいい。
2022/03/17(木) 08:19:10.27ID:H9cH52GC
Rustに移行すれば
色んな問題が一気に解決するだけでなく
プログラミングもしやすくなって一石二鳥
2022/03/17(木) 08:41:07.21ID:FVjeEviC
>>532
サンプルコードがもっと充実してきて、標準的なコーディングが普及してきてから検討するわ。

Rustは土方向け言語目指しているのに、今のRustの仕様だと土方に難しすぎるから中途半端。それならc++&コーディング規約でいいや。
2022/03/17(木) 08:49:29.01ID:+B7ucdDW
>>533
君たち土方には難しいのかも知れないが普通のプログラマーにとっては難しくないしコーティングがC++より快適
2022/03/17(木) 08:57:01.71ID:qDb9bUKB
Pythonくらいしかやったことない人にとって難しいのはそうだろうけど
C++14/17についていってる人ならRust余裕だと思うけどなぁ
2022/03/17(木) 10:08:01.84ID:faeKJv0z
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をやろうと思うのはちょっとオススメできない
楽を出来る場面は確かにあるので、そこをどの程度メリットと捉えるか
制約をどの程度デメリットと捉えるかで評価が分かれる
2022/03/17(木) 12:06:55.23ID:wJGqDNhd
>>534
土方にやらせる話をしているんだよ。

Rust信者がそういう意識なら、RustがJavaみたいに流行ることは無いな。
やっぱりHaskellコースかね。
2022/03/17(木) 16:20:31.29ID:YyXXowcK
>>534
>君たち土方には難しいのかも知れないが普通のプログラマーにとっては難しくないしコーティングがC++より快適
自分がどれくらい矛盾してること言ってるのかも理解してなさげ。
2022/03/17(木) 18:26:55.16ID:kAy4MIQW
>>522
Rustはスクリプト言語のように簡潔に書ける点もいいね
それでいてC言語並に速い
C++は簡潔に書けず手間暇かかりすぎる
2022/03/17(木) 18:35:40.91ID:+BzvG1OL
お手軽さっていう話だと、関数の仮引数の型も型推論してほしい、ってたまに思っちゃう
2022/03/17(木) 18:44:45.18ID:qDwk9HhQ
>>540
技術的にはできるし、できるならやりたくなっちゃうところをあえて削ったのは英断だと思ってる
過去のコードや他人のコードを読むときに直近に型があるのは大きい
2022/03/17(木) 18:59:38.79ID:Rcv7QaS+
> 仮引数の型も型推論
OCamlだとそれはフツーにできてるのにね

> 過去のコードや他人のコードを読むときに直近に型があるのは大きい

同じような話だがJavaのジェネリクスで

> List<Foo> list = new ArrayList<>();
> この右辺のパラメータが省略できるのを有難がるのは残念で
> ホントは左を省略してvar ist = new ArrayList<Foo>();
> と書けたほうが嬉しいのにJavaはやっぱりダメダメ

みたいな意見をみたことがあるが、左を残すことこそ大事なんだよな
実装に対してではなくてインタフェースに対してプログラミングするのであって
変数の型を必要最低限の小さいインタフェースで宣言するのが嬉しいのに
それをわかってないやつはタイピング数などで判断して世迷い言を言う
543デフォルトの名無しさん
垢版 |
2022/03/17(木) 19:25:12.70ID:pdkFYtDC
Rust学習しはじめだがEnumの仕組みは良いと思う。
C#あたりに組み込まれればいいのに。
2022/03/17(木) 20:43:27.53ID:oh1xEFC0
enum Optionとか便利で簡潔に
null nil undefined -1など無くして安全に出来ていいよね
それでいてコンパイル後は最適化されたり消えたりして効率も両立されたり
2022/03/17(木) 20:52:32.01ID:faeKJv0z
別にC++でも同じことはできるけどね
自分で組めばC++14とかでもrxっぽく書いたり、Optionの実装も余裕
手間さえ惜しまなければw
2022/03/17(木) 20:55:03.76ID:faeKJv0z
Javaも最近は左側省略できるよ
おっしゃるとおり基底型何にするかは選べないけどw
2022/03/17(木) 20:58:40.56ID:LRb50lm3
C++17にstd::optional<T>があるにはあるのだが...

膨大な量の既存のSTLが無効値をoptionalに置き換えられることはない
つまり無効値でoptionalを返す風潮ができにくいから悲しみ
2022/03/17(木) 20:59:36.98ID:oh1xEFC0
引数の型推論は原理的にはかなり出来そうだけど
例えば引数がas_ref()で使われていて変換後がPathなら引数はimpl AsRef<Path>までやっちゃう?
でもその利用者へのインタフェース明示や可読性と保守性を考えると型明記でいいような気がする
2022/03/17(木) 21:13:38.45ID:faeKJv0z
C++もautoだらけlambdaだらけにすると引数も戻り値も結構型書かなくていいけど、遠すぎて何に怒られてるのか分からん代入エラーが出たりもするw
Rustも同じだけどエラーは分かりやすい
2022/03/17(木) 21:15:46.46ID:cEFLJG6J
>>545
そこはやろうと思えばできるレベルと
Rustが標準ライブラリで全面採用サポートしてるレベルで天と地の差があるよね
例えば>>522もbool値がthenでOptionを生成してそれをfilter_mapが受け取ることで簡潔なコードになっていたり
2022/03/17(木) 21:23:13.02ID:faeKJv0z
そこはfilterとmapの方が分かりやすい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況