結局C++とRustってどっちが良いの? 8traits

■ このスレッドは過去ログ倉庫に格納されています
2023/10/28(土) 13:45:00.38ID:fh9BWjjr
「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

・C/C++ <=> Rust いまさら聞けない移行質問なども適当にどぞ
・レスバはじめんのは勝手だけど、面白いこと・へぇなこと書いたヤツが優勝
・マな話は、マのスレもご活用ください↓

前スレ: 結局C++とRustってどっちが良いの? 7traits
http://mevius.5ch.net/test/read.cgi/tech/1693451813/

関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/11/01(水) 12:40:12.80ID:8C4ZzEMt
軍人を4つのタイプに分類する「ゼークトの組織論」と呼ばれる軍事ジョークがあり[注釈 2]、ゼークトが以下のように語ったとされる。
---------8<----------8=------
これは実際には同時期のドイツ軍人であったクルト・フォン・ハンマーシュタイン=エクヴォルトが副官に述べたとされるもの[31]が元になっている。
2023/11/01(水) 19:08:00.09ID:gqkX1mpA
いつの間に、こんなに積極的に、異物は排除しましょうなんて世の中に深化したのかねえ
世知辛い
2023/11/01(水) 19:59:16.09ID:r0MV67Oa
>>38
>いつの間に
いつと問われれば人が集落として生活するようになるぐらい古代から…なんじゃね
村八分とか神隠しとかぐらいは聞いたことあると思うけど
司法がない時代は私刑が日常的に行われていたんだよ
今は法律もあるしネットで大騒ぎすれば助けてくれる奴も出てくるだろうけど
属していた会社なり組織からは切り離される形に落ち着くだろうね
2023/11/01(水) 20:11:22.67ID:mATsi7Ug
Rustはリファクタリングでのエンバグ防止も強力で開発効率良いな
2023/11/01(水) 22:31:20.11ID:H181/maX
>>38
嫌なら見るな
嫌なら出ていけ
2023/11/01(水) 23:11:21.03ID:FbXsZBSZ
競技プログラミングでは何でみんなc++なのですか
43デフォルトの名無しさん
垢版 |
2023/11/02(木) 02:07:29.05ID:uLntp6kp
>>42
Rust使ったことないだろ
44デフォルトの名無しさん
垢版 |
2023/11/02(木) 09:27:36.71ID:kxWwWLf8
>>36
東近江市市長ですね判ります
45デフォルトの名無しさん
垢版 |
2023/11/02(木) 09:30:06.68ID:kxWwWLf8
>>39
私刑の大半は「自分が気に入らない相手を消す」だろ
2023/11/02(木) 10:28:31.37ID:e3rN7I7Z
ゼロサムゲームなんだよねえ あいつがいると、こっちの幸せの取り分が減る
47デフォルトの名無しさん
垢版 |
2023/11/02(木) 11:00:23.03ID:NLwKfBpd
C++のchrono
Sun=0, Mon=1, ..., Sat=6
Rustのchrono
Mon=0, Tue=1, ..., Sun=0
なんかの嫌がらせか?これ
48デフォルトの名無しさん
垢版 |
2023/11/02(木) 11:01:31.85ID:NLwKfBpd
訂正
C++のchrono
Sun=0, Mon=1, ..., Sat=6
Rustのchrono
Mon=0, Tue=1, ..., Sun=6
なんかの嫌がらせか?これ
2023/11/02(木) 11:38:23.20ID:SgY2tw2G
>>48
enumで処理するもんじゃないの?
2023/11/02(木) 12:27:57.80ID:e3rN7I7Z
いっしょは嫌だったんじゃない? (はなほじ
2023/11/02(木) 13:14:01.78ID:sR7LRQS1
>>49
0と7が日曜だと便利なんだよ
なんで変えちゃったのかね
2023/11/02(木) 14:01:21.75ID:26D/b4Fo
おまえら全員エアプログラマーだな
Rustのchronoは両対応で困ることはない
num_days_from_sunday()だと日曜日から0発進
num_days_from_monday()だと月曜日から0発進
53デフォルトの名無しさん
垢版 |
2023/11/02(木) 14:21:03.74ID:R1/lC5p9
ISO8601では月曜は1で日曜は7なんだよな。
2023/11/02(木) 14:43:04.82ID:26D/b4Fo
>>53
Rustのchronoが日曜スタートと月曜スタートの両対応にしている理由がそれ
C++のchronoでISOに変換するには日曜日だけif文するか再び%7する必要がある
2023/11/02(木) 15:51:19.67ID:C/SY5g2v
たぶん何も考えてない+誰も使わないから放置されているだけだね
Mon=0固定の前提でTryFrom<u8>なんか実装してるし
2023/11/02(木) 16:27:45.50ID:26D/b4Fo
そこは言語によって異なるんだよ

Pythonは月曜スタート
weekday() 月曜日=0 ~ 日曜日=6
isoweekday() 月曜日=1 ~ 日曜日=7

Javaも月曜スタート
DayOfWeek 月曜日=1 ~ 日曜日=7

だから両対応しているRustが最も良い状況
2023/11/02(木) 20:37:31.47ID:YFXMye4z
曜日の内部表現とかどうでもいいだろ…
2023/11/02(木) 21:59:20.29ID:SgY2tw2G
HTTPでJSONやりとりしてるとき思い込みで
バグになるというのはあるかも
2023/11/02(木) 23:52:30.67ID:M3hXBmrb
今回のchronoでイチャモン始めたやつも
日曜日開始のC++しか知らなくてそれが正しいと思い込みをしてたからな
月曜日開始のISO8601とそれに従うプログラミング言語を一つでも知っていればそんな勘違いは起きなかった
2023/11/03(金) 00:21:59.00ID:g+drsbNI
と、C言語のtm構造体から続くC/C++/UNIX系全般の伝統を知らなかった人が申しております
61デフォルトの名無しさん
垢版 |
2023/11/03(金) 00:34:37.66ID:OMWtAqQI
恥ずかしいのぉ
ああ恥ずかしい
2023/11/03(金) 00:58:32.47ID:/+LsOzGq
>>60
それも常識だな
そしてISOおよびそれに準じるJavaやPythonも常識
両派あることを知っていれば両対応のRustを批判しだすような愚かな言動はしない
63デフォルトの名無しさん
垢版 |
2023/11/03(金) 03:57:01.11ID:QmAmywB5
>>62
コウモリ野郎が一番嫌われるんだよ
おまえは獣なのか鳥なのか
2023/11/03(金) 06:56:19.57ID:N2L5n51t
伝統的には日曜始まり、商用的には月曜始まり、ということだろ。

そもそも現代主流のグレゴリオ暦自体が欠陥だらけ (素数の7を週単位にしている、月の日数がバラバラ) だから、効率を気にしてもしょうがない。
完全数の6と3素数積の30を基準にすれば全然違ったのにな。
2023/11/03(金) 08:41:35.38ID:znXtgxSS
>>59
おまい望月衣望子そっくりな人間だな
2023/11/03(金) 08:41:37.96ID:hQugpIJj
>>64
だからその日曜始まり日曜終わり両方に対応できる日曜0,7が有能だった話よ
2023/11/03(金) 10:30:38.41ID:FAT4ZC6j
C++もc_encodingとiso_encodingで両方対応はしてる
簡単に変換できるから正直どうでもいいけど

https://en.cppreference.com/w/cpp/chrono/weekday/encoding
このドキュメントはReturn valueの2) の内容が間違ってる
レビュープロセスが心配になるな
2023/11/03(金) 11:42:31.25ID:7w5cnhLp
>>58
シリアライズ時と異なるエンコーディングで復元しようとしたらそりゃバグるわな
でもそんなやつらのために内部表現を統一しろと言われても誰も相手にしないでしょ
2023/11/03(金) 12:30:23.11ID:xNBDqk0z
>>56
JavaはWeekFields経由で日曜始まりにもできる
Pythonは日曜始まりのインデックスを直接取得することはできないがcalenderモジュールで日曜始まりのカレンダーを扱える

どちらもRustほど低レイヤーやC++を意識する必要がないからRust比べて少し高いレイヤーで日曜始まりにも対応している
Rustの開発者にとって最もいい状況が他の言語の開発者にとっても最もいい状況とは限らない
2023/11/03(金) 13:42:53.76ID:IVkiUA9g
=== 複製おじさん(通称複おじ)について ===
Rustスレを中心に活動し、2023年4月現在で1年以上ム板に住み着くRustacean。無自覚な荒らし。

Rustスレでは、基本的に他住民の意見を聞いて糧とすることなく、自らのコードが最善であると、ID変更自演を交えいつまでも主張し続ける。
同スレで「所有権が複製される」という違和感のある表現を、「違和感がある」とする他住民の意見をすべて否定してしつこく擁護し続けたことから、「複製おじさん」というあだ名が付けられた。
それ以外のム板スレでは、基本的に他住民の意見を聞いて糧とすることなく、Rustこそが最善であると、ID変更自演を交えいつまでも主張し続ける。
その基本戦術は、「GC言語は遅い」の一声でC/C++/Rust以外の言語を否定し、残ったC/C++は安全ではないので、Rustが最善であるとするもの。

しかしながら、Rust以外の言語に関しては、正当な批判を展開するのに十分な知識を持っているとは言いがたい。
本スレPart1では、C++の問題点を指摘しようとして多数の誤り・知識不足を露呈することとなった。特にしつこく食い下がったのが「動的ディスパッチ」に関する誤解である。
https://mevius.5ch.net/test/read.cgi/tech/1677286186/786-799(ID:Evbafc70とID:RiLc+pIfが複製おじさんであると考えられている)
要約すると、通常「条件分岐」と呼ばれるものを「動的ディスパッチ」と呼ぶのが正しいと主張し続けたのである。
常識的にはあり得ない誤解だが、提示されたC++のコードが自らの主張(C++にはパターンマッチが無い)に不都合であると感じたためか、C++のコードを正しく読み解くことができないにもかかわらず脊髄反射的に否定してしまい、その根拠として誤った論理をこじつけてしまったものと思われる。

ちなみにこの後、同種の誤解を持って書き込むID:wHEiYRW7(これはID使用歴的に複製おじさんとは考えにくい)に対して、正しい理解に基づく指摘を行う単発IDが複数出現するが、この中にも複製おじさんが多数含まれていると考えられている。
このように自分の誤りを認識した場合、それを認める書き込みは決して行わず、別人の振りをして最初から正しく理解していた体を装うのも複製おじさんの特徴である。
2023/11/03(金) 13:43:15.14ID:IVkiUA9g
テンプレ忘れてるぞ
2023/11/03(金) 15:43:05.53ID:+wuvOqHg
ゲームプログラミングに向かない時点でRustに勝ち目は無い
2023/11/03(金) 16:17:15.97ID:TISIAi2y
ゲームとかどうでもいい
2023/11/03(金) 16:35:04.29ID:hQugpIJj
プログラミング言語は とにかくユーザ数が増えて裾野が広がらないとだめよ

とはいっても、Rustはその性格上 エンジン系にはとても強いと思う
75デフォルトの名無しさん
垢版 |
2023/11/03(金) 20:01:25.17ID:oS0jLPzO
なんでゲームに向いてないの?
2023/11/03(金) 20:18:57.74ID:L6NiYGzz
ビルド時間が長いとか主要なゲームエンジンが対応してないとかかな?
2023/11/03(金) 20:23:49.80ID:m1BMAQzf
>>74
ゲームエンジンこそどうでもいい
どうせ他人の成果物使うだけやし
つまりRustはゲームプログラミングに向いてない
2023/11/03(金) 20:27:09.44ID:DDLGlAPd
>>75
オブジェクト指向じゃないから大規模開発に向いてない
2023/11/03(金) 20:27:51.26ID:DDLGlAPd
ゲームはプログラムの積み上げ方式
Rustなんか使い物にならん
2023/11/03(金) 20:48:01.15ID:L6NiYGzz
え?rustってオブジェクト指向じゃないの?
2023/11/03(金) 20:54:38.72ID:hQugpIJj
>>77
エンジンを作る側の話やで
2023/11/03(金) 21:23:41.57ID:YDoJin8V
>>78
むしろRustは大規模開発にも適するように設計された言語
今どきの普通にマルチパラダイムで当然オブジェクト指向もサポート
83デフォルトの名無しさん
垢版 |
2023/11/03(金) 22:56:37.98ID:oS0jLPzO
これすごいわ
https://www.youtube.com/watch?v=62ZcxDGawd4
Rust もびっくり
84デフォルトの名無しさん
垢版 |
2023/11/03(金) 22:58:02.02ID:oS0jLPzO
>>75
>>79
グローバル変数が超絶面倒臭いからじゃね
2023/11/03(金) 23:50:14.81ID:DpBIrO9u
オブジェクト指向を理解してない無能が多すぎる
2023/11/03(金) 23:54:28.74ID:caMFRrqc
オブジェクト指向なんてもはや有害じゃねという
話も出てるようだけど
87デフォルトの名無しさん
垢版 |
2023/11/04(土) 00:10:04.03ID:vTgEadDD
既存のオブジェクト指向言語の置き換えを狙ってるなら
既存のオブジェクト指向言語の機能は備えんとなぁ
設計からやり直す必要が生じてまんどくさってなる
スクラッチから新たに書くのなら支障ないだろうけども
それではいつまで経ってもマイナー言語だよ
この先生きのこれん
2023/11/04(土) 00:22:53.36ID:p6vbmy4R
みんな反発しても結局オブジェクト指向に帰ってくる
みんなC++に帰ってくる
2023/11/04(土) 00:23:19.27ID:EeyeeoXm
最近のプログラミング言語は基本的にオブジェクト指向だがクラス継承だけは亡くなったらしい

最近のプログラミング言語
【クラス継承がない】Elixir、Go、Julia、Nim、Rust、Zig
【クラス継承がある】Kotlin(=Javaの後継)、Swift(=Objective-Cの後継)
つまり過去のしがらみでクラス継承を含めざるを得なかったKotlinとSwiftを除いて
全ての言語でクラス継承は亡くなった
90デフォルトの名無しさん
垢版 |
2023/11/04(土) 00:27:29.67ID:vTgEadDD
おかげでみんなマイナー言語のままじゃんw
91デフォルトの名無しさん
垢版 |
2023/11/04(土) 00:28:23.25ID:vTgEadDD
人間は保守的なんだから
互換性を軽視したらユーザは絶対にぶんどれん
2023/11/04(土) 02:16:54.87ID:eaDg3ztu
>>89
GUI開発用言語とそうでない言語にきれいに分かれてんね
2023/11/04(土) 03:14:34.51ID:6Rm06W4Y
GUIはクラス継承要らないだろ
有害なクラス継承しかないとクラス継承を使って巨大なピラミッドを作ってしまい
その反省も各新言語が揃って意図的にクラス継承を廃止した要因
2023/11/04(土) 03:24:41.20ID:W1fOq5zR
継承無くした結果、馬鹿なことをやらされる
https://qiita.com/muumu/items/a0d111d129d20240d182
2023/11/04(土) 05:01:54.27ID:qNKpZaTJ
それはクラスの継承というよくない古い考え方しかできない人向けの方法だな
様々に方向性も異なる方針の新プログラミング諸言語がクラスの継承だけは導入しない同じ結論に至った重みは大きい
2023/11/04(土) 05:58:52.07ID:QaQpRr0T
IUnk教わい、なくなるといわれるとちょっとさみしい (なくなるとは言われてない
97デフォルトの名無しさん
垢版 |
2023/11/04(土) 06:13:35.65ID:9ClykILV
継承がない言語には大抵はmix-inという優れた代替が用意されてる
継承もmix-inもないRustは無能
2023/11/04(土) 07:37:08.58ID:tOjhAD6C
そうゆうのがない、切り捨ててるから、Linuxカーネルに来てよろしいって言われたのかもね しらんけど

やっぱり必要となりゃ、そのうち解禁(追加)になるでしょ
2023/11/04(土) 07:50:02.45ID:W1fOq5zR
>>95
極端だな
そんな考えじゃC++から移行なんて益々困難だし
こんなスレ立てて対立煽りするレベルにも達してないじゃないか
>この記事ではC++やJavaで継承を使っていた人がRustで同様の実装をしたいときにどうすればよいのかを説明します。
この課題については君はどうしたらいいと思ってる?
2023/11/04(土) 08:26:29.68ID:tOjhAD6C
第1スレはわからんけど、このスレの>>1は俺
2023/11/04(土) 09:10:11.30ID:LI9X3aVk
>>89
Javaの開発者も継承だけは間違いだったと言ってるみたいだね
2023/11/04(土) 09:32:38.86ID:0JVEbPjc
64 デフォルトの名無しさん 2023/09/26(火) 09:36
以前Javaのユーザグループミーティングに出席した際、James Gosling(Javaの生みの親)がメインの講演者として招かれていました。
すばらしいQ&Aセッションの途中に、こんな質問が出ました。
「もう一度最初からJavaを作り直すとしたら、どこを変更したいですか?」
答えは「クラスを除外するでしょうね」というものでした。
笑いが静まった後、彼が説明したのは、本当の問題はクラス自体ではなく実装継承(extendsの関係)なのだということでした。
インターフェースによる継承(implementsの関係)のほうが望ましいのです。できる限り実装継承は避けたほうがよいでしょう。
2023/11/04(土) 09:32:49.65ID:6irn+b/+
やっぱりコミットするならシープラだなとおもいました
2023/11/04(土) 09:56:14.27ID:/2/myesZ
その論法に乗っかってやると過去の
言語のパラダイム変化はどうやって起きたのか
謎になるな
2023/11/04(土) 09:59:34.34ID:eaDg3ztu
>>93
>GUIはクラス継承要らないだろ
要るか要らないかという話はしてないよ

1) Elixir、Go、Julia、Nim、Rust、Zig
2) Kotlin、Swift

1)の言語でGUI作れなくはないけど実際に作る開発者がかなり少ない
逆に2)の言語は大半の開発者がGUIを作ってる
それには理由があるということ
もっと言えばクラス継承的な機能の有無はトレードオフだからそれを理解しましょうねという話
2023/11/04(土) 10:34:34.64ID:2TRtrAOp
多くの高機能webサイトはGUIアプリと言って良いと思うが
ts jsのクラス機能はあるけど使わないな
2023/11/04(土) 10:49:05.41ID:XpaBBm0T
やっぱりRustが最強だなっておもいました
2023/11/04(土) 11:16:32.88ID:qG8ydW8y
最強はRust世代

俺のおかんはC++
109デフォルトの名無しさん
垢版 |
2023/11/04(土) 12:01:10.23ID:vTgEadDD
>>89
思惑の違いが見事に結果に表れている分類だね
興味深い
2023/11/04(土) 12:09:00.72ID:vTgEadDD
>>104
その「言語のパラダイム変化」って具体的にはどれを指している?
Rustがユーザを獲得する際の参考になるかもしれんね
111デフォルトの名無しさん
垢版 |
2023/11/04(土) 12:27:39.60ID:KPpuxUox
オブジェクト(classじゃなくてstructで良い)があって
正しい型指定で正しく関数が呼ばれてれば
クラス継承なんて要らないんだよな
別に禁止というほど厳しくやらなくても自然とそうなる
112デフォルトの名無しさん
垢版 |
2023/11/04(土) 12:29:16.51ID:KPpuxUox
C++ の template なんてあれオブジェクト指向じゃねーし
2023/11/04(土) 12:35:18.44ID:eFHrirh7
>>105
KotlinとSwiftは最初からGUIアプリをターゲットにしてるしそれ以外の分野では全然使われてないような
2023/11/04(土) 16:44:29.40ID:qG8ydW8y
いまさら人に聞けない
悪い継承ってのがわからなくなった

継承おぼえたてて(一人プロジェクトが)めちゃくちゃになった経験ならあるけど、そうじゃなくてこう
115デフォルトの名無しさん
垢版 |
2023/11/04(土) 17:10:03.05ID:S8hti0fw
クラス継承は必要
オブジェクト指向を理解できないのはただのザコ
2023/11/04(土) 18:03:19.84ID:rn/KP434
>>115
最近のプログラミング言語たちが揃いも揃ってクラス継承を不要と判断しちゃいましたぁ
【クラス継承がない言語】Elixir、Go、Julia、Nim、Rust、Zig
2023/11/04(土) 18:26:15.51ID:EmvA1J0P
言語開発者が設計した基底クラス以外の継承はいらないんじゃないかなぁ
2023/11/04(土) 18:26:28.96ID:p6vbmy4R
rust以外上がり目なさそうな言語たちで草
119デフォルトの名無しさん
垢版 |
2023/11/04(土) 18:42:09.44ID:vTgEadDD
Rustも同じく普及戦略を誤った言語だよ
2023/11/04(土) 19:41:01.77ID:hPdVOFaj
Pythonスーパーセットのmojoにこのまま成長してほしいけどシープラRustの競合にはならないか
2023/11/04(土) 19:51:27.75ID:Is+FXxYG
mojoはAI関連の高速化を狙ったものだろうから限定的な利用になりそう
122デフォルトの名無しさん
垢版 |
2023/11/04(土) 21:29:47.46ID:9ClykILV
結局ユーザーが欲しかったのは「ポインタのないC++」であって所有権やtraitみたいな使いづらい独自機能じゃなかったんだよなあ
2023/11/04(土) 22:19:37.19ID:+CP/CRpL
>>122
所有権はC++にもある
traitはC++の抽象クラスからデータ(メンバー)を分離独立させてより良い設計ができるようになっている
使いづらくなっていない
2023/11/05(日) 10:25:09.84ID:ol9bMVcc
>>117
doubleがfloatを継承していないのはなぜ?
f64がf32を継承していないのはなぜ?
2023/11/05(日) 11:09:33.12ID:JT3Ktc4T
それって継承するようなもんかね
126デフォルトの名無しさん
垢版 |
2023/11/05(日) 11:48:56.89ID:8w5QKIdz
精度の違いであって継承関係無いな。
むしろ継承したらダメなやつ。
共通のインターフェースを用意するのが普通。
2023/11/05(日) 12:19:51.94ID:pw4Q0c9f
パフォーマンスを度外視するなら
浮動小数点数型をfloatとdoubleの両方とも継承するのが自然かなぁ
128デフォルトの名無しさん
垢版 |
2023/11/05(日) 17:32:34.60ID:vp0BWznn
>>127
その浮動小数点型ってどんなもの?
インターフェースじゃないんだよね?
129デフォルトの名無しさん
垢版 |
2023/11/05(日) 19:27:50.24ID:aeGT2yJ/
>>116
自分に都合の良い言語のみ列挙する
まさにザコ
自分の考えが無い
2023/11/05(日) 19:50:12.60ID:o9vKIGF+
>>129
同じくらいたくさん反例を挙げようよ
2023/11/06(月) 04:14:47.70ID:m6bVjB7O
>>130
そんなことよりこのクソスレ立てたのもお前?
https://mevius.5ch.net/test/read.cgi/tech/1693054853/
2023/11/06(月) 08:09:26.10ID:Cot/SbpY
募集してんのか、大胆だな!
133デフォルトの名無しさん
垢版 |
2023/11/06(月) 10:12:15.79ID:48qtdwXc
Rustとの相性で言えば
Rust+Pythonはかなり良い
Rust+Cが最強
Rust+C++は最悪

Nimとの相性で言えば
Nim+Pythonはとても良い
Nim+Cが最強
Nim+C++も最強

Nimの勝ち
2023/11/06(月) 10:16:59.00ID:UjpY0LiG
>>129
自分はなにも例を挙げられないの?
それでよく人を批判する気になれたね
135デフォルトの名無しさん
垢版 |
2023/11/06(月) 14:46:38.23ID:DT4BUOTR
テンプレートパターンやるにしても今は継承よりもクロージャで渡す方がわかりやすいって話やね。
まあどっちにしろ低レイヤー言語だとオブジェクトの解放タイミングとか気にしてめんどくさくはなるが。
2023/11/06(月) 14:50:37.11ID:mJLQiI1M
Nimちゃんに行くわ
RUSTとかクソゲーみたい
2023/11/06(月) 15:23:25.15ID:X0T3Y72w
C++/Rustと比べて何もかも劣るNimは選択肢に上がることがない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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