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/02/04(金) 00:36:35.60ID:tMDf8XuC
>>99
Cにクラスを入れたものとしてC++を使っている人は多いはず。
MFCなどもそう。
2022/02/04(金) 00:44:19.25ID:uF1Qc9S6
>>101
いやいや、スレタイ通りこのスレではCとC++は対立する物として区別すべき
2022/02/04(金) 00:45:03.38ID:zhkygWhI
今どき言語マウントするやつは
メンタルも技術力もアマチュア
2022/02/04(金) 00:47:42.81ID:tMDf8XuC
C++はCを基礎にしてるくせに、Cに歯向かって宿主を殺してしまう寄生虫みたいな
ことになってるからな。
2022/02/04(金) 05:41:15.73ID:3M0ClPfa
いまのc++の拡張がな
autoとラムダとdecltypeくらいでやめときゃいいのにあとでボツになりそうな仕様までモリモリに盛りやがって下手したらobjective-cみたいになりそう
なのにいまだにpropertyも実装されてないとか
2022/02/04(金) 06:48:54.05ID:GRC0hKFU
conceptsは許せる
2022/02/04(金) 08:29:55.22ID:rPvrWkyY
>>105
それほどへんなもの追加されてるか?
右辺値参照、constexpr、可変引数テンプレートは必要だしな
2022/02/04(金) 08:53:37.86ID:O81zVfQh
色々理解できない機能が増えて辛いんだろw
109デフォルトの名無しさん
垢版 |
2022/02/04(金) 09:58:17.78ID:nTZc+xED
conceptはむしろ必須だろうよ
2022/02/04(金) 10:06:51.33ID:xcjLhLWs
C++11移行では、変数定義で、
TYPE a = b;
の形式が非推奨で、
TYPE a{b};
が推奨になった。
これは、C/C++の今までの伝統を全否定している。
C++11以後は、宿主を殺すウイルス的な存在に成り下がった一例。
2022/02/04(金) 11:28:12.62ID:i2fLUlAL
http://hp.vector.co.jp/authors/VA000092/jokes/strup.html
すこ
2022/02/04(金) 11:33:17.83ID:O81zVfQh
>>110 みたいな爺さんは書き方変わるだけでアタフタw
2022/02/04(金) 12:53:41.07ID:6YwPoRaj
>>110
TYPE a{b};
↑これって何がうれしいの?
c++よく知らんので教えてほしい
2022/02/04(金) 12:55:43.71ID:m8EcUnam
コンパイラ都合じゃね?知らんけど
2022/02/04(金) 14:18:18.78ID:vKz9Nbsj
>>113
オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を
決定することになるが、初期化子には次の4種類ある :
T a{b};
T a={b};
T a = v;
T a(v);
・このうち、あらゆる局面で利用できるのは、最初の T a{b}の形式のみ
 (なおこの形式はC++11で新しく導入された。)。
・一番大きな理由はこの形式は「縮小変換を許さないから」とされる。

ただし、ややこしいのが、Tの部分を autoにした場合は、T a{b}の形式は
落とし穴がされるので使うべきではないとされている。
なぜなら:
auto z1{99]; // z1は initializer_list<int>型になってしまう。
auto z2 = 99; // z2は、int型。

ところが、Tが具体的な型の場合には、T a{b} が推奨される:
int x1{99}; // 推奨される書き方。
int x1 = 99; // 縮小変換があるので推奨されない書き方。

全く一貫性が無く、C++11が駄目な部分の一つ。
2022/02/04(金) 14:21:57.65ID:vKz9Nbsj
>>115
[誤字訂正版]

オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を
決定することになるが、初期化子には次の4種類ある :
T a{b};
T a={b};
T a = b;
T a(b);
・このうち、あらゆる局面で利用できるのは、最初の T a{b}の形式のみ
 (なおこの形式はC++11で新しく導入された。)。
・一番大きな理由はこの形式は「縮小変換を許さないから」とされる。

ただし、ややこしいのが、Tの部分を autoにした場合は、T a{b}の形式は
落とし穴が有るので使うべきではないとされている。
なぜなら:
auto z1{99]; // z1は initializer_list<int>型になってしまう。
auto z2 = 99; // z2は、int型。

ところが、Tが具体的な型の場合には、T a{b} が推奨される:
int x1{99}; // 推奨される書き方。
int x1 = 99; // 縮小変換があるので推奨されない書き方。

全く一貫性が無く、C++11が駄目な部分の一つ。
2022/02/04(金) 14:40:30.04ID:MGyBlJhW
ふーん、レガシー言語は大変だね
2022/02/04(金) 14:44:09.08ID:vKz9Nbsj
Rustはもっと最悪に汚い。
C++の最大の欠点は、仕様が難しいことに有るが、
Rustはさらに仕様が難しい。
よって、RustはC++をさらに悪くしたと言えて、改良には全くなってない。
2022/02/04(金) 14:54:48.13ID:WO7o5PWJ
ふーん、レガシー脳は大変だね
2022/02/04(金) 14:59:52.64ID:vKz9Nbsj
>>119
馬鹿は黙ってろ。
2022/02/04(金) 15:11:33.72ID:dFWqGnrm
つまり仕様が簡単な方が良いということ?
2022/02/04(金) 15:17:49.19ID:wTfQ05na
>>119
ばーかw
2022/02/04(金) 16:13:01.17ID:sAwXze1R
効きすぎだろwww
2022/02/04(金) 16:23:37.19ID:J8iEhnuL
c++は(ランタイム速度落とさなくても)できらぁ!ってなったらとりあえず入れるからな。
ある意味とてもガキくさいがそれはそれでありなポジションに到達してる気はする。
2022/02/04(金) 20:04:05.51ID:JLdS+NWr
そんな凄いんだったらもっと普及してるよねRust
でも現実はブビにもコボルにも負けてる泡沫言語
2022/02/04(金) 20:40:31.16ID:b3SZZj/4
単純に新しい言語だから累積となるユーザ数でまだ不利なだけ
2019年11月のasync導入で非同期プログラミングがまともに使えるようになってまだ2年余り
Linux OSのようにC++を頑なに拒否していたプロジェクトでもRustは受け入れられたように
C++に未来はないがRustには未来がある
2022/02/04(金) 20:44:24.76ID:JLdS+NWr
最後間違い
C++に未来はないがRustも未来はない
2022/02/04(金) 20:49:40.24ID:jGBmcDmC
日本は先進国の技術トレンドから5年以上遅れてるからね
2022/02/04(金) 20:53:24.16ID:rIsLZ1dN
C++erはレガシー脳が多いから

いい意味でのレガシーね
オリンピックレガシーみたいなw
2022/02/04(金) 20:54:41.42ID:aq7ZCAbr
C++はあんなみすぼらしいラムダ式用意して哀れやわ
貧乏の家の子が自家製ボタモチもって突っ立ってるようやわ
2022/02/04(金) 21:01:52.67ID:JLdS+NWr
Rustやってる奴は現状アーリーアダプターで普及するにしてもまだ年月掛かると思う
んでその間にまた新しい言語が開発されみんなそっちに移って行くと
2022/02/04(金) 21:06:34.54ID:3IKuZnie
新しい言語はどんな問題解決してくれるんだろうな
動的型付けが復権するんだろうか
2022/02/04(金) 21:15:25.28ID:V2NB9pIC
>>131
アーリーアダプターは数年前の時期
今は大手IT各社GAFAMがRustに本腰

プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/
Facebook(現Meta)が「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
2022/02/04(金) 22:59:18.87ID:ckxp+S+3
>>131
それならそれで無駄にはならない気がするが
考え方は継承されるだろうし
2022/02/05(土) 01:30:11.76ID:6GVIsHGT
SNS見てる限り、若い人でも人気は Rust より C/C++ の圧勝。
2022/02/05(土) 02:39:36.18ID:ye9/tceq
大学の課題とかはまあC/C++よね
2022/02/05(土) 06:15:36.04ID:LYyRCemg
>>133
RustはVisual studioでデフォルトで選択できるようになったら普及するだろうな
2022/02/05(土) 09:06:42.96ID:E0droKIF
北京五輪と東京五輪の開会式をプログラミングで例えるとどうなるやろ?
2022/02/05(土) 16:44:42.87ID:bofW+oE9
そのまま普通に
東京五輪 Rust
北京五輪 C++
2022/02/05(土) 17:35:54.33ID:O/WKZnIq
東京五輪 FAMILY-BASIC
141138
垢版 |
2022/02/06(日) 17:01:26.43ID:LMR3oS4I
ちょっとセンシティブな話だったか
与太話と思ってスルーしてくれ
すまんかった
142デフォルトの名無しさん
垢版 |
2022/02/10(木) 11:18:14.49ID:sUV8whwi
>>139
Rustってそんな酷い言語だったんだ
手出さなくて良かったわ〜
2022/02/10(木) 11:25:47.65ID:ylUFM8HS
Rust 拝金主義
C++ ハイキング
144デフォルトの名無しさん
垢版 |
2022/02/10(木) 20:10:06.55ID:9RAaYAUg
RustはC,C++を駆逐すると思う。アレに拘泥する理由はない。
2022/02/10(木) 21:00:13.02ID:ylUFM8HS
HighKingの至高の頂に座居するC++に勝てると本気で思っているのかね
146デフォルトの名無しさん
垢版 |
2022/02/10(木) 21:47:05.33ID:o2ECnsWv
>>144
過去資産があるから駆逐まではいかないかな。
でももっと利用されるだろう。
けど非同期のやつとかの分断をどうにかして欲しい。
2022/02/10(木) 21:50:08.15ID:dDg7TD3H
ジワジワと侵食して気が付いたらいつの間にか利用していたって広がり方するんだろうな
148デフォルトの名無しさん
垢版 |
2022/02/10(木) 21:51:34.38ID:9RAaYAUg
>>116
これ見てクソ言語だなって思わないヤツいるのかね。
149デフォルトの名無しさん
垢版 |
2022/02/10(木) 21:53:35.73ID:LnXBonLg
>>116
なんでこんな言語が使われるようになったんや?
150デフォルトの名無しさん
垢版 |
2022/02/10(木) 23:38:10.62ID:o2ECnsWv
>>149
使われるようになったんじゃなく、既に使われてた言語を過去との互換性を崩さずに 変更しようとして/変更して そうなったんだよ。
その変化は今なお止まってないんよ。
2022/02/10(木) 23:40:02.53ID:TPkaON1O
>>149
はい
http://hp.vector.co.jp/authors/VA000092/jokes/strup.html
2022/02/11(金) 01:30:20.07ID:ieudecgp
>>149
C++が最初に使われ始めたころは、T a{b}のような記法はなく、
C++11で登場した。
使われ始めたころのC++はCの後継として丁度良いと思われるようなもので
あって、>>116のような変な仕様は入ってなかった。
最初は良かったが、後を突いていくと時々「え?」と思うような仕様が入り込み、
C++11で如実になった。
・templateの仕様も「え?」と思うことが多いものだった。
 Stroustrap氏によれば、高速化に重点を置いて導入されたものらしいから、
 分かり易さは犠牲になっているようだが、それにしても分かりにくいことが多い。
・C++にはライブラリが無かったので、C++11で導入されたが、それが
 賛否の分かれるもので、恐らく6割くらいの人には質が悪く感じるものであった。
153デフォルトの名無しさん
垢版 |
2022/02/11(金) 07:42:26.56ID:KbgZfaat
www.mercari.com/jp/search/?keyword=hr400p
こういう安い中古チューナ買って、Coinyをスカパープレミアム放送のICカード化して、
スカパープレミアムのチャンネル全部見れるし、USB HDDに録画フリー。
【avoCADO】 Coiny card Part4【仮想通貨】
https://mevius.5ch.net/test/read.cgi/avi/1640762750/
2022/02/11(金) 11:09:11.39ID:X1ujBpuJ
C++は必要な機能だけ使ってれば問題ないことが多いが、
コンパイルエラーメッセージがやばすぎる
まともな言語とは言えない
2022/02/11(金) 11:36:27.12ID:08JP5jFO
アレは読むんじゃない
詠むんだ
2022/02/11(金) 11:39:59.37ID:MSfgatap
>>154
逆にRustのコンパイラのエラーメッセージは手厚く至れり尽くせりで感度もの
2022/02/12(土) 01:52:06.05ID:ct0ZlJaB
>>154
C++は、学者がtemplateメタプログラミング関連などの理論的な正しさを
見せびらかしているだけの様な気がするよ。
「ほら、これでメタプログラミングができるだろ、俺の理論の正しさがわかったか」
みたいに。
2022/02/12(土) 01:53:21.86ID:ct0ZlJaB
ただ、だからといってRustがその代わりになるということではない。
RustはRustでC++以上に問題を入れ込んでしまった。
これもまた机上の空論の様な言語。
159デフォルトの名無しさん
垢版 |
2022/02/12(土) 09:46:16.21ID:nCAwro3+
>>158
机上の空論でない言語は何よ?
2022/02/12(土) 10:21:13.78ID:ZjQpgox3
アセンブラとC言語
使わないけどFORTRANとCOBOLもそうかな
161デフォルトの名無しさん
垢版 |
2022/02/12(土) 10:44:19.07ID:lHDa3hl7
>>160
ADAは?
162デフォルトの名無しさん
垢版 |
2022/02/12(土) 11:06:25.45ID:4ZF6L5uh
>>159
横やけど
俺もC言語だと思ってる。
2022/02/12(土) 11:24:57.04ID:ZjQpgox3
>>161
Ada は(少なくとも出た当時は)けっこう机上の空論ぽい機能てんこ盛りだった
164デフォルトの名無しさん
垢版 |
2022/02/12(土) 11:27:00.51ID:nCAwro3+
Cは貧弱すぎだろう。いまさらmallocとか書く気もおきん。
2022/02/12(土) 12:03:28.21ID:yRIrPLWC
>>158
C++の問題よりはマシだろ
2022/02/12(土) 12:07:09.85ID:XghCcbPA
前にこれをC++スレかどっかで発言したら結構叩かれたけど
C++って結局はテンプレートが言語の真ん中にあるよな
他の言語色々やった上であらためてC++見ると俺にはそう見える
一応マルチパラダイム言語だからC++しかやったことない人は
テンプレートだけをフォーカスされるのは不服っぽいけど
167デフォルトの名無しさん
垢版 |
2022/02/12(土) 12:08:32.56ID:v8ccrYYP
テンプレートは強力だよな
2022/02/12(土) 12:12:41.52ID:XghCcbPA
Cではちょっとしんどいです
いろんなコンテナ使いたいです
そんとき型をパラメータ化したいです
ハゲ「テンプレートでみんな幸せ」
C++er「やったぜ」

C++規格の関係者「いろいろ仕様につっこんだぜ!」
C++er「あっはい」
2022/02/12(土) 12:42:37.24ID:Wnw3K02J
>>166
概ね同意
テンプレートは便利だけど使いすぎてワケワカメってなりがち
2022/02/12(土) 13:44:38.22ID:v8+/CWv5
Rustでバブルソート書いてみたがすげー書きやすいな
食わず嫌いだったかもしれん
コンパイルエラーがめっちゃわかりやすい
2022/02/12(土) 13:57:38.37ID:w2XePdCb
ほんとかよw
2022/02/12(土) 14:50:46.51ID:wXyEGH3A
バブルソートw
2022/02/12(土) 15:04:29.49ID:kx8mtXuQ
バブルソートw
笑うとこかよ
2022/02/12(土) 15:45:26.65ID:yRIrPLWC
確かにエラーは笑っちゃうくらい親切だわな
2022/02/12(土) 16:16:36.29ID:zOhO24og
rustのエラー報告は全てのプログラミング言語で最高の親切さだと思う
他の言語がサボりすぎなんだよな
rust書くと他の言語かけなくなる
176デフォルトの名無しさん
垢版 |
2022/02/12(土) 16:54:42.98ID:zd9UI5Og
そんなバブルソートバカにせんでもよかろうに
大学一年で最初の方に習うし、初めての言語触るにはまあまあ良い題材では
2022/02/12(土) 17:44:36.13ID:91xKDv7O
少しいじってcombソートにしたらクイックソートにもひけをとらないしな。
178デフォルトの名無しさん
垢版 |
2022/02/12(土) 17:55:38.68ID:nCAwro3+
Rustで双方向リストをマージソートでソートするとかだとめんどくさいことになる気がする
2022/02/12(土) 18:09:42.02ID:REfvKUVO
バブルソートがすげー書きやすいってどのへんが?
逆にそんなもん書きにくい言語なんてあるの?
fn main() {
let mut v = vec![8, 4, 3, 7, 6, 5, 2, 1];
let bsort = |v: &mut Vec<i32>| for i in 0..v.len() {
for j in 1..v.len() - i {
if v[j] < v[j - 1] {
v.swap(j, j - 1)
}
}
};
bsort(&mut v);
println!("{:?}", &v);
}
↑書いてみた
細かいところは日本語版wikipediaに準拠
2022/02/12(土) 18:12:12.77ID:/iL1/Dd6
ソートの話はどうでもよくて要点はRustに対してのこの部分だと受け取ったが

>>170
> 食わず嫌いだったかもしれん
> コンパイルエラーがめっちゃわかりやすい
181デフォルトの名無しさん
垢版 |
2022/02/12(土) 18:34:19.97ID:v8ccrYYP
>>180
同意
2022/02/12(土) 19:15:40.31ID:1IxSArcj
バブルソートは理解が難しいわりに現実に使われんのがな。
それだったらクイックソートをだな。
2022/02/12(土) 19:50:02.51ID:ZjQpgox3
>>182
> バブルソートは理解が難しい
えっ?
184デフォルトの名無しさん
垢版 |
2022/02/12(土) 19:53:57.23ID:772ADf0k
>>183
頭の良さは人それぞれなんだから馬鹿にしない
185デフォルトの名無しさん
垢版 |
2022/02/12(土) 21:02:43.90ID:kBzBXJs5
ダブルアレイは原理が簡単にもかかわらず、十分バグが取れるまでずいぶん時間がかかった。
2022/02/12(土) 23:07:39.79ID:wXyEGH3A
CPU時間をたらふく使うバブリーなソートだよな
2022/02/12(土) 23:55:25.98ID:x20bdFcp
>>180
Rustはコンパイラが出すエラーメッセージが詳しすぎて解決案まで示唆してくれたり親切すぎる
他のコンパイラ言語だけでなくインタプリタ言語まで広げても一番親切なプログラミング言語システムだと断言できる
2022/02/12(土) 23:56:38.45ID:zNyDeBid
まあC++にテンプレートないならそこまで使わんわな
2022/02/13(日) 01:14:02.16ID:z8C8/2EV
Stroustrup氏の脳内では、テンプレートの目標が高速化であるということなのが
問題の始まりの気がする。
2022/02/13(日) 01:20:30.65ID:z8C8/2EV
マクロ=高速化用途で使われているもの
という見方が如何にも実用プログラムを書いたことの少ない学者だと思う。
2022/02/13(日) 09:42:52.30ID:LKJBNTq1
C++からテンプレート取ったらなにも残らない
2022/02/13(日) 09:51:25.60ID:0Lo3ZZ1+
いや残るだろ
2022/02/13(日) 10:12:41.48ID:jQxqAel+
STLなくなっちゃう
2022/02/13(日) 10:25:11.79ID:yoBtg/nD
>>186
その代わりメモリーは使わないから貧乏な俺でも使える
2022/02/14(月) 23:17:34.32ID:T9mSH3bb
>>179
そういうことではなく
おそらく>>170が言いたいのはコンパイラが出すエラーがめっちゃ親切なことだろう
こっちで書き換わってるからここにmutを付けなさいとか
ここで所有権が移動したのに後で使用してるからここに&を付けなさいとか
これをuse宣言するのを忘れてますよとか
この変数は宣言されず使われていますがこの変数名のスペルミスではありませんかとか
といった簡単なものから
複雑な借用関係をちゃんと登場人物たちをはっきりさせてあっちとそっちがこれこれでマズいのでこうしてみたらどうかなど
こんなにきめ細かく親切なエラーを出すコンパイラ&インタプリタは他の言語と比べてもトップではないか
2022/02/15(火) 00:19:44.75ID:kCmeQXW/
>>151
デマは辞めようね
197デフォルトの名無しさん
垢版 |
2022/02/15(火) 00:24:28.01ID:tssMbTRA
>>195
同意
2022/02/15(火) 07:23:31.22ID:A9ZkwK3T
>>195
そこは目から鱗だよな
ここまでできるなら、他の言語も頑張れよと言いたくなる
2022/02/15(火) 07:51:21.06ID:aaenmMxg
言語として所有権の概念がないからその辺りの指摘はしないけどVS2022のC#も結構色々提案してくれるぞ
2022/02/15(火) 09:28:59.50ID:CNcLOkDE
このながれでこれを言う意味なんてないけど
わかるやつだけわかってくれたらいいんだけど
Rustのコンパイラ昔は酷かったよな
無慈悲なボローチェッカと戦ってたよな(´;ω;`)
2022/02/15(火) 09:42:41.51ID:qxt1mofg
まだメジャーバージョン1だしそりゃまあ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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