結局C++とRustってどっちが良いの?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/02/25(土) 09:49:46.74ID:VRyB88xR C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
588デフォルトの名無しさん
2023/03/27(月) 05:32:45.27ID:UciRikyK safe Rustには未定義動作が存在しない
そしてunsafeを用いてsafeなインタフェースを提供する時にもそれが義務付けられている
したがってそれらを用いるRustに未定義動作は存在しない
未定義動作まみれのC/C++との決定的な違いである
そしてunsafeを用いてsafeなインタフェースを提供する時にもそれが義務付けられている
したがってそれらを用いるRustに未定義動作は存在しない
未定義動作まみれのC/C++との決定的な違いである
589デフォルトの名無しさん
2023/03/27(月) 06:40:49.82ID:xp5TMlgQ 間違うヤツが悪い、って世代の規格だもんな、変に不親切は徹底してるわw
590デフォルトの名無しさん
2023/03/27(月) 11:50:25.04ID:kviG1IE2 C++に憧れるのをやめましょう
憧れてしまったら超えられないんで
憧れてしまったら超えられないんで
591デフォルトの名無しさん
2023/03/27(月) 12:09:54.31ID:iTDWuTVq >>581
Rustの代数的データ型であるenumに対して
対応するC++のstd::variantは五重苦だよな
・機能が弱い
・使いにくい
・見にくい
・使われていない
・知られていない
C++の機能強化は尽く失敗していて進化が望めない
Rustの代数的データ型であるenumに対して
対応するC++のstd::variantは五重苦だよな
・機能が弱い
・使いにくい
・見にくい
・使われていない
・知られていない
C++の機能強化は尽く失敗していて進化が望めない
592デフォルトの名無しさん
2023/03/27(月) 12:10:13.46ID:B8NoQCc/593デフォルトの名無しさん
2023/03/27(月) 12:48:40.60ID:8vpfa9xS まぁRust使うくらいならC++使うよねってのはあるよね
これまでの資産が全然違うわ
DirectXとかOpenGLとかオーディオ系の低レイヤーのやつはやっぱりC++が強い
これまでの資産が全然違うわ
DirectXとかOpenGLとかオーディオ系の低レイヤーのやつはやっぱりC++が強い
594デフォルトの名無しさん
2023/03/27(月) 12:49:34.80ID:8vpfa9xS Rust信者が全部ラッパー作ってくれるならまぁわからんでも無いけど君たちどうせ人が作ったライブラリしか使わないんでしょ?
595デフォルトの名無しさん
2023/03/27(月) 13:03:55.96ID:03NojB4M 大手が採用するっていうんだから、大手がどんどんライブラリ置き換えやるでしょ
ただラッパ書くだけじゃなくて、Rustで書けばAPIを適切に使用してるって保証されるものじゃないとね
ただラッパ書くだけじゃなくて、Rustで書けばAPIを適切に使用してるって保証されるものじゃないとね
596デフォルトの名無しさん
2023/03/27(月) 13:12:32.89ID:B8NoQCc/ 人任せだなw
Cと共存なんて考えだと廃れて消えると思うよ
カーネルからRustにしないとな
以下の考察は俺も同じ印象を持っている
RustもJuliaやGoみたいに廃れて消えていく気がしている。
https://qiita.com/AKKYM/items/78c04840bc72d9db834d
Cと共存なんて考えだと廃れて消えると思うよ
カーネルからRustにしないとな
以下の考察は俺も同じ印象を持っている
RustもJuliaやGoみたいに廃れて消えていく気がしている。
https://qiita.com/AKKYM/items/78c04840bc72d9db834d
597デフォルトの名無しさん
2023/03/27(月) 13:14:48.15ID:B8NoQCc/ 技術的な良し悪しとしてはRustは充分だと思うけど
言語が使われるかどうかはその上の生態学の問題だからね
言語が使われるかどうかはその上の生態学の問題だからね
598デフォルトの名無しさん
2023/03/27(月) 13:36:37.38ID:f2pr1T08 なんでカーネルとシェルが共存する現実を学ぶことすらできないんだろうなあ
スマホにはシェルスクリプトがないから?
スマホにはシェルスクリプトがないから?
599デフォルトの名無しさん
2023/03/27(月) 13:46:30.78ID:B8NoQCc/ カーネルから書かないと
諸君のフラストレーションは解消されないと思うよ
諸君のフラストレーションは解消されないと思うよ
600デフォルトの名無しさん
2023/03/27(月) 13:50:47.73ID:B8NoQCc/ 打倒するC++の最大の特徴はCを包含していること
C++覚えればCの知識は付いてくるが
CとRust両方覚えるの面倒やん?
CをリプレースしなければC++もリプレスできん
C++覚えればCの知識は付いてくるが
CとRust両方覚えるの面倒やん?
CをリプレースしなければC++もリプレスできん
601デフォルトの名無しさん
2023/03/27(月) 14:18:03.99ID:arDcYvab >>591
C++の可読性の低さはそのような無理矢理な機能拡張の失敗にある
C++の可読性の低さはそのような無理矢理な機能拡張の失敗にある
602デフォルトの名無しさん
2023/03/27(月) 14:34:40.20ID:kviG1IE2603デフォルトの名無しさん
2023/03/27(月) 14:43:24.48ID:kviG1IE2604デフォルトの名無しさん
2023/03/27(月) 14:44:18.04ID:44rZZrUP >>603
反例は?
反例は?
605デフォルトの名無しさん
2023/03/27(月) 14:59:46.99ID:kviG1IE2606デフォルトの名無しさん
2023/03/27(月) 16:45:29.16ID:qgA22f4o607デフォルトの名無しさん
2023/03/27(月) 17:02:39.76ID:V0RoakbK 酷いのはお前の頭と顔だよ
608デフォルトの名無しさん
2023/03/27(月) 17:10:12.43ID:f4PBXzjX >>606
記事はバカだけどコメントはまあいいんじゃね?
それよりも、Rustを置き換えられる言語が出現しないと、Rustの天下が続きそ。
C並みに高速で何でも書けてGCもなく、にも関わらず様々な安全性が静的に保証される言語が、Rust以外に芽も出てこなさげ。
記事はバカだけどコメントはまあいいんじゃね?
それよりも、Rustを置き換えられる言語が出現しないと、Rustの天下が続きそ。
C並みに高速で何でも書けてGCもなく、にも関わらず様々な安全性が静的に保証される言語が、Rust以外に芽も出てこなさげ。
609デフォルトの名無しさん
2023/03/27(月) 17:19:21.38ID:8vpfa9xS >>605
MSだから
MSだから
610デフォルトの名無しさん
2023/03/27(月) 17:23:03.66ID:ztwrSg39 何が続きそ。だよ
自演バレないように新文体開拓しようとしてんのマジでキモいわ
自演バレないように新文体開拓しようとしてんのマジでキモいわ
611デフォルトの名無しさん
2023/03/27(月) 17:26:14.23ID:8vpfa9xS コメントしたった
TypeScriptはC#やDelphiを作ったアンダースヘルスバーグが設計してるからです
以上
TypeScriptはC#やDelphiを作ったアンダースヘルスバーグが設計してるからです
以上
612デフォルトの名無しさん
2023/03/27(月) 17:26:50.78ID:8vpfa9xS Rustまだ全然天下じゃないんだが…
周り見えてない人なのかな?
周り見えてない人なのかな?
613デフォルトの名無しさん
2023/03/27(月) 17:27:28.03ID:8vpfa9xS 言うほどガベコレ悪いか?って話になるんだが君たち何を作ってんだ?
614デフォルトの名無しさん
2023/03/27(月) 17:28:15.22ID:8vpfa9xS 言うほど1フレーム1フレームの処理落ちが問題になることしてんの?
ゲームくらいじゃね?
ゲームくらいじゃね?
615デフォルトの名無しさん
2023/03/27(月) 17:28:57.15ID:8vpfa9xS その点ゲームでRustは使われない
マジで何してんの?って話よな
マジで何してんの?って話よな
616デフォルトの名無しさん
2023/03/27(月) 17:35:59.10ID:tLmo//P+617デフォルトの名無しさん
2023/03/27(月) 17:37:53.83ID:8vpfa9xS >>616
ほんでその車載ソフトはRustで書かれんのか?
ほんでその車載ソフトはRustで書かれんのか?
618デフォルトの名無しさん
2023/03/27(月) 17:39:01.06ID:tLmo//P+ >>617
いや、まだ言語的に対応してないからC/C++だね、、
いや、まだ言語的に対応してないからC/C++だね、、
619デフォルトの名無しさん
2023/03/27(月) 17:40:35.92ID:8vpfa9xS620デフォルトの名無しさん
2023/03/27(月) 17:52:34.31ID:tLmo//P+ >>619
そうやね
ぶっちゃけ危なそうなものはコーディングルールで縛られるし、過去トラブルや不具合対策も沢山あるから困らないんだよね。
品質保証のためにアセンブラも見るけど、C/C++はアセンブラと比べながら見やすいし
そうやね
ぶっちゃけ危なそうなものはコーディングルールで縛られるし、過去トラブルや不具合対策も沢山あるから困らないんだよね。
品質保証のためにアセンブラも見るけど、C/C++はアセンブラと比べながら見やすいし
621デフォルトの名無しさん
2023/03/27(月) 18:00:15.28ID:BAd7DBJ1 >>616
そこでリアルタイムGCですよ
そこでリアルタイムGCですよ
622デフォルトの名無しさん
2023/03/27(月) 18:06:46.35ID:f2pr1T08 噂によると節電のためにRustを使うらしいな
電気代よりも例えば家賃の方がよっぽど高い人生だったら一生使わないのでは
電気代よりも例えば家賃の方がよっぽど高い人生だったら一生使わないのでは
623デフォルトの名無しさん
2023/03/27(月) 18:13:00.08ID:arDcYvab このままC++は消えていくだろう
アドバンテージが何も残っていない
アドバンテージが何も残っていない
624デフォルトの名無しさん
2023/03/27(月) 18:17:46.08ID:9iT9giTF 上の方で
「Rustのライブラリはあらかた揃って退屈なメンテ作業しか残ってない状態、そんなつまらない作業誰もしないから誰もメンテしなくなってだんだん人が離れていく一歩手前」みたいなQiiitaの記事あったけど、そんなライブラリ充実し始めてる?
「Rustのライブラリはあらかた揃って退屈なメンテ作業しか残ってない状態、そんなつまらない作業誰もしないから誰もメンテしなくなってだんだん人が離れていく一歩手前」みたいなQiiitaの記事あったけど、そんなライブラリ充実し始めてる?
625デフォルトの名無しさん
2023/03/27(月) 18:18:17.10ID:8vpfa9xS >>624
いやしてないよ
いやしてないよ
626デフォルトの名無しさん
2023/03/27(月) 18:27:56.70ID:IKh8n5QH 新規プロジェクトは大方Rustになったが
既存プロジェクトは大規模な更新でしか切り替わらないだろな
既存プロジェクトは大規模な更新でしか切り替わらないだろな
627デフォルトの名無しさん
2023/03/27(月) 18:43:27.53ID:9iT9giTF どっちかって言うと今Pythonとかでちゃんと動いてる、例えばAI用のテンソル計算処理、統計処理のライブラリをRuby用のために用意し直すのっていわゆる「車輪の再発明」みたいになってしまうからわざわざRustに移植するのってどうなん的な感じで充実してこないんじゃないかという気はする
ライブラリが充実してきてみんなが使い出すかどうかって技術的な問題だけじゃなくてその言語が出てきたタイミングとか社会情勢とか背景とかそういう要素もかなり濃密に効いてて、その意味でPythonはすげぇタイミングよかったという気はする
ライブラリが充実してきてみんなが使い出すかどうかって技術的な問題だけじゃなくてその言語が出てきたタイミングとか社会情勢とか背景とかそういう要素もかなり濃密に効いてて、その意味でPythonはすげぇタイミングよかったという気はする
628デフォルトの名無しさん
2023/03/27(月) 19:22:16.60ID:dqg9sWUs Rustで仕事してないやつらばかりだの
儲かるから流行るんだぞ
儲かるから流行るんだぞ
629デフォルトの名無しさん
2023/03/27(月) 19:23:51.08ID:IKh8n5QH 既存のものを移植するのは無駄な行為
既存のものはそのまま使えば良くそのまま使われている
新たなものはRustになっている
それだけの話
既存のものはそのまま使えば良くそのまま使われている
新たなものはRustになっている
それだけの話
630デフォルトの名無しさん
2023/03/27(月) 19:25:47.39ID:ZBCIgMCl Rustの仕事あるかい?
631デフォルトの名無しさん
2023/03/27(月) 19:33:28.90ID:byKu+Dgz >>627
rustもキラープロダクトが出れば一気に普及する
rustもキラープロダクトが出れば一気に普及する
632デフォルトの名無しさん
2023/03/27(月) 19:43:52.09ID:f4PBXzjX >>622
節電というか、こちらはクラウド利用だけど間接的には当たりじゃね?
GC言語からRustへだけど、CPUコストとメモリコストが激減、だからクラウド側では節電となり、Rustはエコ。
GCなく自動メモリ解放する言語Rustの出現が今までの流れを変えた。
節電というか、こちらはクラウド利用だけど間接的には当たりじゃね?
GC言語からRustへだけど、CPUコストとメモリコストが激減、だからクラウド側では節電となり、Rustはエコ。
GCなく自動メモリ解放する言語Rustの出現が今までの流れを変えた。
633デフォルトの名無しさん
2023/03/27(月) 20:10:16.56ID:eSmIEcJi Rustへの動きは2系統あるよな
C/C++からRustへの安全性を高める動き
GC言語からRustへの高速化&省メモリ化の動き
まれに片方の動きの意識しかない人が想像力の欠如した書き込みをしている
C/C++からRustへの安全性を高める動き
GC言語からRustへの高速化&省メモリ化の動き
まれに片方の動きの意識しかない人が想像力の欠如した書き込みをしている
634デフォルトの名無しさん
2023/03/27(月) 20:59:51.90ID:f2pr1T08 目的は1つだけ・手段はいくらでもあるという世界観はしつこく宣伝されてきた
逆に1つの道具で色々できるという話はあまり聞かない
逆に1つの道具で色々できるという話はあまり聞かない
635デフォルトの名無しさん
2023/03/27(月) 21:16:18.71ID:ztwrSg39 Rust製のTurbopackでjsのバンドルが数百倍高速になってもじゃあ俺もRust使おうとはならんのよ
AWSのバックエンドでRust使ってエネルギー効率が向上してもじゃあ俺もRust使おうとはならんのよ
理性的に考えろ
AWSのバックエンドでRust使ってエネルギー効率が向上してもじゃあ俺もRust使おうとはならんのよ
理性的に考えろ
636デフォルトの名無しさん
2023/03/27(月) 21:18:03.30ID:CXyrf6Yu オジの自演は特徴出すぎで草
こちらはクラウド利用www
こちらはクラウド利用www
637デフォルトの名無しさん
2023/03/27(月) 21:25:42.06ID:B8NoQCc/ Windows3.1からMacOSにも流れなかったし
Cのニッチェを奪わなければRustはこの先生
きのこれない
Cのニッチェを奪わなければRustはこの先生
きのこれない
638デフォルトの名無しさん
2023/03/27(月) 21:59:50.76ID:dqg9sWUs アンチは願望ばっかだな
エンジニアの上澄が認めたのだから争っても無駄
エンジニアの上澄が認めたのだから争っても無駄
639デフォルトの名無しさん
2023/03/27(月) 22:10:09.18ID:B8NoQCc/640デフォルトの名無しさん
2023/03/27(月) 23:10:41.22ID:6TNfXJr3641デフォルトの名無しさん
2023/03/27(月) 23:13:47.59ID:xSQDJ/La js、ptyhon、やってきて
rustは新鮮で学べてるけど
c++はやばくね、、、
依存やらのコンパイルの時点で挫折しそうなんだが
ドキュメントもわけわからんし
rustは新鮮で学べてるけど
c++はやばくね、、、
依存やらのコンパイルの時点で挫折しそうなんだが
ドキュメントもわけわからんし
642デフォルトの名無しさん
2023/03/27(月) 23:20:50.21ID:B8NoQCc/643デフォルトの名無しさん
2023/03/27(月) 23:43:11.84ID:Y8evRbQy 余裕だろ
ただ他言語もこぞってと言ってもGC言語は対象外なのでメジャーな言語で可能性があるのはC++のみ
ただ他言語もこぞってと言ってもGC言語は対象外なのでメジャーな言語で可能性があるのはC++のみ
644デフォルトの名無しさん
2023/03/27(月) 23:51:52.30ID:B8NoQCc/ >>643
デフォルトでコピーコンストラクタやコピー代入演算子が起動するところを
moveコンストラクタやmove代入演算子が起動するように変更するってことでしょ?
余裕な訳ないじゃん
copy by valueな言語では後方互換性が犠牲になるので導入無理だよ
デフォルトでコピーコンストラクタやコピー代入演算子が起動するところを
moveコンストラクタやmove代入演算子が起動するように変更するってことでしょ?
余裕な訳ないじゃん
copy by valueな言語では後方互換性が犠牲になるので導入無理だよ
645デフォルトの名無しさん
2023/03/28(火) 00:23:27.41ID:Q1TWiepd >>644
いろんなやり方があるけど実装ができないようなものはない
やろうとすればどのやり方にするのがいいか
細かい仕様をどうするのがいいか
そういう意思決定に時間がかかるだけ
所有権システムをあとから取り込めないなんて発想をする人がRustを宣伝してるのがむしろ驚き
いろんなやり方があるけど実装ができないようなものはない
やろうとすればどのやり方にするのがいいか
細かい仕様をどうするのがいいか
そういう意思決定に時間がかかるだけ
所有権システムをあとから取り込めないなんて発想をする人がRustを宣伝してるのがむしろ驚き
646デフォルトの名無しさん
2023/03/28(火) 00:42:21.55ID:ecLsJgbH >>645
文章読めないのかな?
今まででのコードでインスタンスがコピーされるところを
勝手にmoveにすり替えられたら大惨事だろw
今まで書いたコードを全部書き換えることになる
つまり後方互換性が犠牲になる
C++の開発当初からの方針で最大の特徴はCを内包していること
CもC++もcopy-by-valueな言語
文章読めないのかな?
今まででのコードでインスタンスがコピーされるところを
勝手にmoveにすり替えられたら大惨事だろw
今まで書いたコードを全部書き換えることになる
つまり後方互換性が犠牲になる
C++の開発当初からの方針で最大の特徴はCを内包していること
CもC++もcopy-by-valueな言語
647デフォルトの名無しさん
2023/03/28(火) 00:54:04.89ID:9+wNikJy 視野の狭い人だな
648デフォルトの名無しさん
2023/03/28(火) 01:08:09.67ID:ecLsJgbH >>647
問題についてどう解決するかを書きな?
問題についてどう解決するかを書きな?
649デフォルトの名無しさん
2023/03/28(火) 01:35:54.97ID:m2o7Qw0d 既にCとC++に互換性はない
しかし許された
また同じことをやってまた許されることは可能かもな
しかし許された
また同じことをやってまた許されることは可能かもな
650デフォルトの名無しさん
2023/03/28(火) 01:46:32.83ID:ImlVuHSq まあ拡張子変えれば許されるよcpoとか
あとはsafeブロックとか?
あとはsafeブロックとか?
651デフォルトの名無しさん
2023/03/28(火) 02:00:41.86ID:ecLsJgbH >>649
ほぼ互換性あるだろ? どういったケースのこと書いてるの?
ほぼ互換性あるだろ? どういったケースのこと書いてるの?
652デフォルトの名無しさん
2023/03/28(火) 02:21:00.53ID:gbUXYbOA >>626
新規プロジェクトって例えばどれよ?
新規プロジェクトって例えばどれよ?
653デフォルトの名無しさん
2023/03/28(火) 02:21:41.39ID:gbUXYbOA >>628
なんの仕事してんの?
なんの仕事してんの?
654デフォルトの名無しさん
2023/03/28(火) 02:22:00.97ID:WlqhC76+655デフォルトの名無しさん
2023/03/28(火) 02:24:01.41ID:gbUXYbOA656デフォルトの名無しさん
2023/03/28(火) 02:25:39.63ID:6yQ3WRoT657デフォルトの名無しさん
2023/03/28(火) 02:31:45.17ID:6yQ3WRoT >>644
現状のスマポとmoveを用いたC++の所有権システムはRustのシンプルな記述と比べると面倒で忘れたりミスしたりしてしまうがあれが限界っぽい
後方互換性を保ったままC++を快適にするのは不可能
現状のスマポとmoveを用いたC++の所有権システムはRustのシンプルな記述と比べると面倒で忘れたりミスしたりしてしまうがあれが限界っぽい
後方互換性を保ったままC++を快適にするのは不可能
658デフォルトの名無しさん
2023/03/28(火) 02:43:54.99ID:6yQ3WRoT >>655
そいつが書いている3つの言語ともにオブジェクト指向なのでC#は不要だろう
Pythonは普通
JavaScriptはプロトタイプ方式の継承だがそれ以外は普通
Rustは継承を排除していて機能(メソッド群)毎にトレイトで合成するがそれ以外は普通
そいつが書いている3つの言語ともにオブジェクト指向なのでC#は不要だろう
Pythonは普通
JavaScriptはプロトタイプ方式の継承だがそれ以外は普通
Rustは継承を排除していて機能(メソッド群)毎にトレイトで合成するがそれ以外は普通
659デフォルトの名無しさん
2023/03/28(火) 03:31:25.51ID:gbUXYbOA >>658
Pythonやってるやつはオブジェクト指向理解できてないやつ多いよ
JavaScriptはまぁ基本使わんし
Rustはオブジェクト指向的なことできるようにしてるけどオブジェクト指向わからんやつ向けに制限かけてるって印象
Pythonやってるやつはオブジェクト指向理解できてないやつ多いよ
JavaScriptはまぁ基本使わんし
Rustはオブジェクト指向的なことできるようにしてるけどオブジェクト指向わからんやつ向けに制限かけてるって印象
660デフォルトの名無しさん
2023/03/28(火) 05:56:18.37ID:uty8q6BB 複雑になりすぎないようにするのは、それはそれでメリットでもある
C++では、やたらとややこしいクラスが上がってくる
それ〇〇使いたいだけちゃうん、みたいな
Rustが普及したら、Rust流のスマポにみんな慣れるから、自分の母語でも使うようになるよ
C++では、やたらとややこしいクラスが上がってくる
それ〇〇使いたいだけちゃうん、みたいな
Rustが普及したら、Rust流のスマポにみんな慣れるから、自分の母語でも使うようになるよ
661デフォルトの名無しさん
2023/03/28(火) 06:40:30.67ID:qh0NVSBO >>659
その3つの言語をやってることから例えばウェブ方面だとしても
PythonでDjangoなどのフレームワークを使うにはオブジェクト指向は基本知識として不可欠
JavaScriptもReactなどののフレームワークを使うにはオブジェクト指向は基本知識として不可欠
Rustに対してはデタラメな印象だけで基礎的な理解すらなし
このスレで連投してる人の中で最もレベル低すぎ
その3つの言語をやってることから例えばウェブ方面だとしても
PythonでDjangoなどのフレームワークを使うにはオブジェクト指向は基本知識として不可欠
JavaScriptもReactなどののフレームワークを使うにはオブジェクト指向は基本知識として不可欠
Rustに対してはデタラメな印象だけで基礎的な理解すらなし
このスレで連投してる人の中で最もレベル低すぎ
662デフォルトの名無しさん
2023/03/28(火) 06:47:56.40ID:uty8q6BB C++のOOPって、CRTPとかがすっと書ける、読めるレベルだからねえ
そんな難しくないけど、美しく書くには多少の経験は必要
あと、吐かれるコードにはもうちょい気を留めてほしいなと、マシン語寄りの俺は思っちゃうな
「そういう」用途ばっかりじゃないのはわかるんだけど
そんな難しくないけど、美しく書くには多少の経験は必要
あと、吐かれるコードにはもうちょい気を留めてほしいなと、マシン語寄りの俺は思っちゃうな
「そういう」用途ばっかりじゃないのはわかるんだけど
663デフォルトの名無しさん
2023/03/28(火) 07:05:58.21ID:uty8q6BB そういや気にしてなかったけど
webも、APIがOOP式で提供されてるから、OOP無関係とは言えないけど、
自分でどんどんクラスを編み出して問題解決するC++とは、OOPに向かう姿勢は異なってくるね
クラスは簡潔なほうが、結局効率もいいんだけどねw
webも、APIがOOP式で提供されてるから、OOP無関係とは言えないけど、
自分でどんどんクラスを編み出して問題解決するC++とは、OOPに向かう姿勢は異なってくるね
クラスは簡潔なほうが、結局効率もいいんだけどねw
664デフォルトの名無しさん
2023/03/28(火) 07:15:22.07ID:qh0NVSBO >>663
それはPythonでもJavaScriptでも同じ
Web APIと関係なくプログラム独自の部分も自分でどんどんクラスを編み出して問題解決する
他を知らないためC++だけを何か特別だと思い込んでそうだな
それはPythonでもJavaScriptでも同じ
Web APIと関係なくプログラム独自の部分も自分でどんどんクラスを編み出して問題解決する
他を知らないためC++だけを何か特別だと思い込んでそうだな
665デフォルトの名無しさん
2023/03/28(火) 07:20:37.19ID:uty8q6BB >>659 をちょっとだけ擁護してみたくなっただけだよw
どこだって、ライブラリ作成者はOOPに精通してるもんだが、
C++は、OOPに精通してないと、使ってますとか公言できないもんね
むっちゃ煽られるよw その違いはあるなって思った
どこだって、ライブラリ作成者はOOPに精通してるもんだが、
C++は、OOPに精通してないと、使ってますとか公言できないもんね
むっちゃ煽られるよw その違いはあるなって思った
666デフォルトの名無しさん
2023/03/28(火) 07:41:04.68ID:qh0NVSBO OOPは精通するしないとか難しいものではないだろ
初心者かね
初心者かね
667デフォルトの名無しさん
2023/03/28(火) 07:49:36.20ID:uty8q6BB C++でOOPができるといったら、当然のようにSTLが使え、boostが使える
あるいは、traitsやattribute,constexpr を織り交ぜて、ほぼゼロサンクなバイナリを叩き出せるレベル
俺は初心者だからそのレベルにはないな
ちょっとよそよりは要求レベルは高いだろって思ってる
母語のことはちょっとだけ誇りに思ってるけど、それより、一長一短的立場
あるいは、traitsやattribute,constexpr を織り交ぜて、ほぼゼロサンクなバイナリを叩き出せるレベル
俺は初心者だからそのレベルにはないな
ちょっとよそよりは要求レベルは高いだろって思ってる
母語のことはちょっとだけ誇りに思ってるけど、それより、一長一短的立場
668デフォルトの名無しさん
2023/03/28(火) 08:58:26.51ID:C7yLEzi8 上のほうでだれかいってたけど、まともなC++erは、スマポくらい使えて当然
なんだけど…ソース単位で生ポ禁止ってのが普及しないんだよね
なんだけど…ソース単位で生ポ禁止ってのが普及しないんだよね
669デフォルトの名無しさん
2023/03/28(火) 09:04:22.01ID:u9f8RzdU newを書かなきゃ良いだけなのにね
670デフォルトの名無しさん
2023/03/28(火) 09:37:27.95ID:fedCMYV9671デフォルトの名無しさん
2023/03/28(火) 09:39:21.00ID:fedCMYV9672デフォルトの名無しさん
2023/03/28(火) 09:56:21.67ID:cZnvlJgt >>661
君がオブジェクト指向理解できてなさそう
君がオブジェクト指向理解できてなさそう
673デフォルトの名無しさん
2023/03/28(火) 10:06:33.49ID:C7yLEzi8 >>669
C++も なんでもスタックに置きたいんだけど、きつきつなのが本来なんだよね
どんどんスタックを食うのは野暮っていう流儀もある
Rust流はメモリ使用の局所化を促進するから、
メモリキャッシュまで考慮すると、悔しいけどC++より効率出る余地がある
まあ実測してみないと、知らんけどw
C++も なんでもスタックに置きたいんだけど、きつきつなのが本来なんだよね
どんどんスタックを食うのは野暮っていう流儀もある
Rust流はメモリ使用の局所化を促進するから、
メモリキャッシュまで考慮すると、悔しいけどC++より効率出る余地がある
まあ実測してみないと、知らんけどw
674デフォルトの名無しさん
2023/03/28(火) 10:06:36.56ID:vBvHBfxi >どんどんクラスを編み出して問題解決する
奴はクラスを書けたらオブジェクト指向を理解してると思ってるみたいだからな
奴はクラスを書けたらオブジェクト指向を理解してると思ってるみたいだからな
675デフォルトの名無しさん
2023/03/28(火) 10:09:59.68ID:fedCMYV9676デフォルトの名無しさん
2023/03/28(火) 10:28:38.80ID:u9f8RzdU677デフォルトの名無しさん
2023/03/28(火) 10:51:13.90ID:P0df9Gxx JavaScriptとPythonは
極力オブジェクト指向的な書き方をしないほうが
メンテナンス性も可読性も高まる言語だから
C++やC#とは事情が違うわな
極力オブジェクト指向的な書き方をしないほうが
メンテナンス性も可読性も高まる言語だから
C++やC#とは事情が違うわな
678デフォルトの名無しさん
2023/03/28(火) 17:06:18.21ID:aUMSgZvE >>662
CRTPはC++のOOPで最も効率よい実装となり必須なテクニックであるが
美しいというのはウソでむしろC++の汚さの象徴の一つになっている
初心者や他言語の人たちもいるようだからわかりやすいコード
例として各派生のadd1()を用いて共通のadd2()やadd3()などを用意する場合
template<typename T>
struct AddN {
void add2() {
static_cast<T*>(this)->add1();
static_cast<T*>(this)->add1();
}
void add3 ...略
};
struct Foo : AddN<Foo> {
int x;
Foo(int i) : x(i) {}
void add1() {
this->x++;
}
};
以上となり慣れてしまうと感覚が麻痺してしまうが
CRTP (Curiously Recurring Template Pattern)の名の通り
「Foo : AddN<Foo>」といちいち自分をパタメータとして与えなければならない
「static_cast<T*>(this)」といちいちダウンキャストをしなければならない
このように「美しくない無駄なコード」になっている
つづく
CRTPはC++のOOPで最も効率よい実装となり必須なテクニックであるが
美しいというのはウソでむしろC++の汚さの象徴の一つになっている
初心者や他言語の人たちもいるようだからわかりやすいコード
例として各派生のadd1()を用いて共通のadd2()やadd3()などを用意する場合
template<typename T>
struct AddN {
void add2() {
static_cast<T*>(this)->add1();
static_cast<T*>(this)->add1();
}
void add3 ...略
};
struct Foo : AddN<Foo> {
int x;
Foo(int i) : x(i) {}
void add1() {
this->x++;
}
};
以上となり慣れてしまうと感覚が麻痺してしまうが
CRTP (Curiously Recurring Template Pattern)の名の通り
「Foo : AddN<Foo>」といちいち自分をパタメータとして与えなければならない
「static_cast<T*>(this)」といちいちダウンキャストをしなければならない
このように「美しくない無駄なコード」になっている
つづく
679デフォルトの名無しさん
2023/03/28(火) 17:07:43.55ID:aUMSgZvE >>678のつづき
一方でRustではトレイトを用いて以下のコードとなる
C++での「美しくない無駄なコード」部分を消し去った状況とほぼ一致している
trait AddN {
fn add1(&mut self);
fn add2(&mut self) {
self.add1();
self.add1();
}
fn add3 ...略
}
struct Foo(i32);
impl AddN for Foo {
fn add1(&mut self) {
self.0 += 1;
}
}
逆にRustのこのコードと同じことを同じようにゼロコストで実現するには
C++ではCRTPを「美しくない無駄なコード」とはいえ使わざるをえない
一方でRustではトレイトを用いて以下のコードとなる
C++での「美しくない無駄なコード」部分を消し去った状況とほぼ一致している
trait AddN {
fn add1(&mut self);
fn add2(&mut self) {
self.add1();
self.add1();
}
fn add3 ...略
}
struct Foo(i32);
impl AddN for Foo {
fn add1(&mut self) {
self.0 += 1;
}
}
逆にRustのこのコードと同じことを同じようにゼロコストで実現するには
C++ではCRTPを「美しくない無駄なコード」とはいえ使わざるをえない
680デフォルトの名無しさん
2023/03/28(火) 17:58:49.48ID:C7yLEzi8681デフォルトの名無しさん
2023/03/28(火) 20:04:32.17ID:jfKwOIRn >>679
CRTPを使わないで仮想関数にすると実行時のvtable経由のオーバーヘッドがあるんだよな
Rustは何も指定しなくてもCRTPと同じ状況になるから記述はシンプルで実行時オーバーヘッドもなく速いわけか
CRTPを使わないで仮想関数にすると実行時のvtable経由のオーバーヘッドがあるんだよな
Rustは何も指定しなくてもCRTPと同じ状況になるから記述はシンプルで実行時オーバーヘッドもなく速いわけか
682デフォルトの名無しさん
2023/03/28(火) 20:17:15.74ID:fedCMYV9 そういえば初心者向けのサイト無いな
アイペンテックとか?
アイペンテックとか?
683デフォルトの名無しさん
2023/03/28(火) 20:32:01.59ID:iKmwqFtY C++のオブジェクト指向は動的ポリモーフィズムだから遅い
関数呼び出しのvtableオーバーヘッドがあるだけでなくインライン展開ができず最適化の機会も失われている
Rustは基本が静的ポリモーフィズムだからそれらのコストがなく速い
関数呼び出しのvtableオーバーヘッドがあるだけでなくインライン展開ができず最適化の機会も失われている
Rustは基本が静的ポリモーフィズムだからそれらのコストがなく速い
684デフォルトの名無しさん
2023/03/28(火) 20:33:07.14ID:QUV/Fh6a CRTP使うと全部インライン展開されるのマジで不思議だよな
685デフォルトの名無しさん
2023/03/28(火) 21:00:58.63ID:HSIaJTs3686デフォルトの名無しさん
2023/03/28(火) 21:30:24.26ID:pvMX8JEc >>627
Rubyの話はもういいよ
Rubyの話はもういいよ
687デフォルトの名無しさん
2023/03/28(火) 21:35:05.32ID:iKmwqFtY >>684
CRTPを使えば常にインライン展開されるわけではない
CRTPを使った時のみ(vtable経由にならず静的に動作が確定するため)インライン展開が可能となり最適化の可能性も広がり速くなるという話
C++ではCRTPを使わないとRustと同等の速さになれない
CRTPを使えば常にインライン展開されるわけではない
CRTPを使った時のみ(vtable経由にならず静的に動作が確定するため)インライン展開が可能となり最適化の可能性も広がり速くなるという話
C++ではCRTPを使わないとRustと同等の速さになれない
■ このスレッドは過去ログ倉庫に格納されています
