- 1 名前:デフォルトの名無しさん [2023/02/25(土) 09:49:46.74 ID:VRyB88xR.net]
- C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
- 263 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 00:51:48.86 ID:mRkuEIyQ.net]
- >>261
shared_ptrは常に排他制御されコストが高い 共有を増減すると排他制御のコストがかかる さらに単なる受け渡しも要注意でmoveしないとそのコストが無意味に余分にかかってしまう 一方でRustは排他制御するArcとしないRcの2つが用意されていてそれらの問題なく使い分けられる >>262 Rustはコンパイルが通った時点でデータ競合がないことを保証されるのでかなり楽
- 264 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 00:58:40.53 ID:Ff/IlIXh.net]
- うわっw
排他制御の意味も知らないのかよこいつw
- 265 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 01:09:54.31 ID:gRogmLJe.net]
- shared_ptrは排他制御してリファレンスカウンタの増減を行うからスレッドセーフ
その代わり重い
- 266 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 01:26:54.27 ID:nARWep6y.net]
- >>263
なるほどね std::shared_ptrには参照カウンタの排他制御をオフにする機能はなかったかな? boost::shared_ptrだと美しくないけどBOOST_SP_DISABLE_THREADSマクロで切り替えられる 最近使ってないがLoki::SmartPtrは確かテンプレートパラメータで切り替えできたかな?
- 267 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 01:58:37.91 ID:gRogmLJe.net]
- Rustでは共存可能
スレッド内のみの共有はRc スレッド間での共有はArc 切り替えでなく最初から二種類が用意されるべき
- 268 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 02:06:25.73 ID:nARWep6y.net]
- >>267
同意 std::shared_ptrもLoki::SmartPtrみたいに テンプレートパラメータで切り替えできれば良いのにね ただしstd::shared_ptrを規格に入れた時点で 既にboost::shared_ptrもLoki::SmartPtrもあったことを考えると 参照カウンタが競合する機会はほとんどないという見立てで 実装を単純化したのかなと予想する 誰か経緯を知らんかな?
- 269 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 02:13:23.45 ID:nARWep6y.net]
- 苦肉の策としては
#include <memory> #define BOOST_SP_DISABLE_THREADS #include <boost/shared_ptr.hpp> template <typename T> using Arc = std::shared_ptr <T>; template <typename T> using Rc = boost::shared_ptr <T>;
- 270 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 02:59:21.97 ID:u9OB+g2b.net]
- shared_ptr単独では完全なスレッドセーフではない、という問題もある。
shared_ptrで排他制御される対象はreference counterの増減だけであり、指している値の読み書きはもちろん排他制御されない。 したがってshared_ptrはスレッドセーフだから安心だと誤解していると、危険なプログラムが出来上がるリスクがある。 C++ではプログラマーがこれらの誤解や見落としやミスを全くしないことを求められ、それに依存するためプログラムの安全品質は危うい。 Rustではその点も安全で、Arc<T>はTへの書き込みが出来ないため、排他制御の問題は起きない。 書き込みしたいならば、Arc<Mutex<T>>やArc<RwLock<T>>など必要となる排他制御の種類に合わせて選び、組み合わせて利用する。 それら組み合わせにより、Tへの書き込みができるようになるが、必ずロックで排他制御されるため問題は起きない。 たとえプログラマーが見落としやミスや使い間違えをしても、Rustコンパイラがエラーを出し、該当箇所を教えてくれるため、常に安全性が保証される。
- 271 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 03:15:26.07 ID:nARWep6y.net]
- >>270
Mutex <T>を書けば良いのではないかな?
- 272 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 03:19:38.24 ID:nARWep6y.net]
- >>270
>shared_ptrで排他制御される対象はreference counterの増減だけであり、指している値の読み書きはもちろん排他制御されない。 >したがってshared_ptrはスレッドセーフだから安心だと誤解していると、危険なプログラムが出来上がるリスクがある。 想定してるレベルが低すぎる マルチスレッドで書くやつにそんなやつはいない 議論が無理やり過ぎ
- 273 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 03:33:56.57 ID:u9OB+g2b.net]
- >>272
その件に限らずすべてにおいて、勘違い、見落とし、ミスなどは発生する。 複雑化したときにmutex忘れも、shared_ptr忘れも、間違えてunique_ptr使いも、その他のミスも、何でも実際に起きている。 Rustではそれらが起きてもコンパイラが通さないことで、常に安全性が保証され、無駄なデバッグを避けられる。 C++では無駄なデバッグを招くか、もしくは、そのままリリースしてセキュリティの穴が生じてしまう。 現実にC++が多数の問題を引き起こしてきた。
- 274 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 12:05:32.83 ID:CPf3ZEOa.net]
- 暇を持て余すニートの日記
- 275 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 12:21:44.83 ID:nARWep6y.net]
- >>273
「Rustはコンパイルが通っていればマルチスレッドで 競合問題が起きないことが保証される」 これで正しい? 正しいとすれば マルチスレッドを習得したときの苦労を考えると有用なので 新しくプログラミングを始める人には勧めたい動機になる 俺自身は困ってないので使おうとはあんまり思わんけどね
- 276 名前:デフォルトの名無しさん [2023/03/14(火) 12:39:04.29 ID:RkFbHwTA.net]
- Rustが流行るとすればどの分野になるんだろうか?
一番は安全装置とかに使われる小規模な組み込みソフトかな。 CPUとか開発環境とかがまだ整ってないだろうから、ゆっくりだと思うけど
- 277 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 12:50:59.56 ID:nARWep6y.net]
- 普及するのにはキラープロダクトが必要
UNIX(C)やMFC(C++)や.NET(C#)のように 大手がプロダクトに採用してトップダウンで流行らせるしか 普及の道はないと思う ゆっくり普及なんてのはないと思う
- 278 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:34:32.70 ID:/poSvH9Z.net]
- Visual Studio Rust .Netがでるまで待とう
- 279 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 19:40:00.62 ID://qYwEcn.net]
- あらためてJavaって良い言語だなって思うわ
ここ十数年だと人類一番の功績じゃね 良い点: シンプルさ。C#で言う値型を入れようかどうか迷ったときもあったんだろうけど(想像)、 プリミティブと参照型変数の二個だけでやってくという線引がセンスある。 悲しい点: 立てまし。個人的にはジェネリクスもいらんかった。 C++のテンプレートを潔く排除して出てきたのすごいすっきり感あった。 でもあとでジェネリクスは押し負けて?付いてきちゃったけど。 あと貧相な貧相なラムダ式。クロージャを期待したけど結局はanonymous classのといっしょ。 異論は無いと思う
- 280 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 22:31:24.61 ID:CPQICLea.net]
- >>275
Rustはマルチスレッド時でもマルチタスク時(=グリーンスレッドをRustではタスクと呼ぶ)でも データ競合を起こさないことが静的に保証されている 唯一のプログラミング言語
- 281 名前:デフォルトの名無しさん [2023/03/14(火) 23:07:45.86 ID:5gRl/D4e.net]
- んなわけねえだろ
- 282 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 23:17:29.22 ID:CPQICLea.net]
- >>281
Rust以外の言語があるならば教えて
- 283 名前:デフォルトの名無しさん mailto:sage [2023/03/14(火) 23:54:49.43 ID:AgG33ThB.net]
- Ownershipの元ネタのCycloneはやってねーのけ?
- 284 名前:デフォルトの名無しさん [2023/03/15(水) 02:10:25.53 ID:itMePwRG.net]
- Rust、コンパイル遅いっていうけどどれ程なの?C++と比べて遅い?
- 285 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 02:53:43.28 ID:aLgn/lBf.net]
- コンパイル後の実行デバッグ時間が激減したのでトータルで要する時間は減少した
- 286 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 03:26:18.55 ID:DXTHIxnh.net]
- 現状はバカがイキる為だけに持ち上げられるRust
万一普及したとしてバカが使いこなせるはずもなく
- 287 名前:デフォルトの名無しさん [2023/03/15(水) 07:08:24.89 ID:SNoM8taV.net]
- 今まで C++ で制御して成功率 99.99% だった
ロケットをわざわざ Rust で描き替えて墜落しても Rust は悪くない悪いのは GC のせいだと言い張るのが Rust 信者
- 288 名前:デフォルトの名無しさん [2023/03/15(水) 09:03:13.60 ID:n0l+w21l.net]
- >>277
Android(Java) iOS(Objective-C++)
- 289 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 09:51:38.96 ID:d2iGalsS.net]
- ロケットでGCは無いわ
- 290 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 10:13:26.89 ID:aLgn/lBf.net]
- >>287
C++もRustもGCないよ
- 291 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 10:52:34.36 ID:d/hulDPr.net]
- プログラミング言語「Rust」は世界のセキュリティレベルを底上げする
https://wired.jp/article/rust-secure-programming-language-memory-safe/ Androidでは今、暗号鍵を管理する機能の多くがRustで書かれているとGoogleのクライダーマーカーは話す。 たとえば、暗号化したインターネット通信の機能である「DNS over HTTPS」、新バージョンの超広帯域無線(UWB)チップスタック、 そしてグーグルの独自のチップである「Tensor G2」で使用される新しい「Android 仮想化フレームワーク(AVF)」 などもRustで書かれている。 また、BluetoothやWi-Fiなどの通信接続に使われるスタックも、Androidの開発チームによってRustへの変換が積極的に進められている。 理由は、これらが業界の複雑な標準規格に基づいており、脆弱性を多く含む傾向にあるからだとGoogleのクライダーマーカーは付け加える。 つまり最も狙われやすい、あるいは最も重要なソフトウェアの部分からRustに書き換えて、 そこから徐々にRustで書く範囲を広げることで段階的にセキュリティ上の恩恵を受けようという戦略である。
- 292 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 10:57:42.49 ID:QVyWv/mn.net]
- >>280
デッドロックは静的検出はできないでしょ?
- 293 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 12:50:04.82 ID:FGvum1vT.net]
- やっぱりC++だよね
- 294 名前:デフォルトの名無しさん [2023/03/15(水) 15:17:28.42 ID:6d2zOTAf.net]
- 段階的に置き換えることができるだけのお金と能力のあるエンジニアを確保できるアメリカの大企業ならいいんだろうけどね
両方無い日本企業には無理無理カタツムリ
- 295 名前:デフォルトの名無しさん [2023/03/15(水) 19:11:32.56 ID:Raq+Bs5u.net]
- 能力ない人の発想だね
- 296 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 19:46:51.43 ID:rzl5B1H1.net]
- まず初めにの人はRustは選ばんと思う
Rustがターゲットとしているところで プログラミングをやるなら 現状でCの習得は避けて通れない となると学習コストの問題で 文法がほぼ包含関係にあるC++を選ぶことになる OSの基盤からRustにしないと一向に増えないよ
- 297 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 19:49:13.81 ID:N9nUYl96.net]
- >>3で終わってんだよこのスレ
うだうだ続けたい奴はコード書く能力もないからここで自己顕示欲発揮しちゃうんだろw
- 298 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 19:50:50.82 ID:zbLR3nEh.net]
- 能力ある人からRustへ移行していってる
>>294 ほとんどのシステムは複数のプログラムから構成されているため それら各機能をグレードアップで更新するときにRustへ書き換えることで進んでいる もちろん新規システムは最初からRustで書くことが多くなっている
- 299 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 19:55:49.97 ID:rzl5B1H1.net]
- Rustユーザが増えるストーリーは
トップダウンで基盤を整備するしか有り得ない Cと文法が乖離してるのはメリットもあるだろうけど 普及にはデメリットとして働いている
- 300 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 20:02:03.89 ID:zbLR3nEh.net]
- セキュリティ観点から新規システムはC/C++禁止でRust必須が要件になっていってる
この動きはそれが出来るところから着実に進んでいるので止めようがない
- 301 名前:デフォルトの名無しさん [2023/03/15(水) 20:52:20.68 ID:QVyWv/mn.net]
- >>300
>新規システムはC/C++禁止でRust必須が要件 どこで?
- 302 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 21:00:17.63 ID:QVyWv/mn.net]
- デファクトスタンダードの強さは
MSを見ていればまぁ自明だわな
- 303 名前:デフォルトの名無しさん [2023/03/15(水) 21:15:24.65 ID:itMePwRG.net]
- 結局コンパイルってどのくらい遅いの?
- 304 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 21:55:22.51 ID:46PmQs8i.net]
- 今日のMicrosoftの発表が面白い
発表デモでなぜかPythonからRustへ https://www.msn.com/en-us/news/technology/microsoft-s-new-bing-ai-chatbot-arrives-in-the-stable-version-of-its-edge-web-browser/ 2023/03/15 本日マイクロソフトは、Edgeウェブブラウザの安定バージョンのサイドバーに、新しいBing AIチャットボットが含まれるようになったことを発表しました。 デモンストレーションで、AIにStack Overflowのヒントを調べながらコードのスニペットを書くように依頼しました。 AIはPythonコードをRustに変換することができました。
- 305 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 21:58:57.19 ID:46PmQs8i.net]
- >>304
正しいURLはこれ https://www.msn.com/en-us/news/technology/microsoft-s-new-bing-ai-chatbot-arrives-in-the-stable-version-of-its-edge-web-browser/ar-AA18CPK2
- 306 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 22:07:43.40 ID:QVyWv/mn.net]
- Rust普及はMSの動向が鍵だよ
自然に増えるもんじゃない
- 307 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 22:20:44.44 ID:46PmQs8i.net]
- Microsoftは自社製品のRust化を進めると同時に普及も進めてるね
日本語ドキュメントも充実してる Rustを使用したWindowsでの開発 https://learn.microsoft.com/ja-jp/windows/dev-environment/rust/overview
- 308 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 00:10:36.78 ID:srO8KDRm.net]
- PriorityはF#の次だな
https://learn.microsoft.com/ja-jp/windows/dev-environment/
- 309 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 00:12:05.34 ID:srO8KDRm.net]
- 「C++とCの概要」の位置に来ないと普及には程遠い
- 310 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 00:25:01.88 ID:AJSi61e9.net]
- RustがC++と同じ土俵へ採用されてしまった時点で
何もかも優れているRustの勝利 疑われる「C++」の安全性、今後の動きはどうなる https://japan.zdnet.com/article/35199018/
- 311 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 06:24:59.05 ID:R4dgmdEC.net]
- 次の10年はRustが取った、となると、APIがRustになる
ならば、RustなAPIにC++がきちんと接続できるようになってもおかしくない そうすると、Rustが実績を積んだ「正しい縛り」を、C++でも使えるようになってくるんではないだろうか もうそういう試みある?
- 312 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 08:50:45.88 ID:zwODLYWH.net]
- 何言ってんだこのバカ
- 313 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 09:08:29.35 ID:wZlU7tIR.net]
- >>311
既にRustとC++の相互呼び出しは実現されているが Rustから見てC/C++部分は当然unsafe扱い 最終的にC/C++部分が無くなる形で完成することになる
- 314 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 09:15:14.89 ID:3C3pOHVn.net]
- OSもアプリケーションも、pure Rustになるんだろ、理想論としては
だとしたら、境界面であるAPIには、縛りにかかる属性情報が露出するはず C++がそれに対応できないなら、今後C++ではアプリケーションを書けないことになってしまう
- 315 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 09:54:57.99 ID:hwbAfXXm.net]
- 慣れて使いこなせるようになると、
Rustの方が書きやすいとほとんどの人が言うほど差があるのだから、 C++がいずれ消えるのは間違いない。
- 316 名前:デフォルトの名無しさん [2023/03/16(木) 10:39:34.81 ID:N2/NSeFa.net]
- >>298
>能力ある人からRustへ移行していってる まるでKENYAの作文だな
- 317 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 10:43:46.43 ID:fxj0X8UB.net]
- Rustからインラインアセンブラでレジスタいじって安全性が担保されつつC++と遜色ないならもういらんわな
- 318 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 10:45:31.49 ID:X3XJCWQc.net]
- ここでぐちゃぐちゃ言っても何も変わらないからさっさとC/C++で書かれた森羅万象の移植やってこいよ
- 319 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 10:57:52.25 ID:n4rBBOEi.net]
- >>317
もちろんRustの変数を使う形でインラインアセンブリをRustでは記述できるが 当然ながらRustコンパイラによる保証範囲外となるunsafe部分になる Rustはunsafe部分のみ人間が安全性を担保すれば全体についてはRustコンパイラが保証する形で役割分担できる その点でプログラム全体が常にunsafe状態となってしまうC/C++とは根本的に異なる
- 320 名前:デフォルトの名無しさん [2023/03/16(木) 10:59:13.64 ID:mkPG1w5O.net]
- >>303
ここの最後の方に載ってるよ https://quick-lint-js.com/blog/cpp-vs-rust-build-times/ OSによっても違うみたいだけど、C++の方がちょっと早いくらいだね
- 321 名前:デフォルトの名無しさん [2023/03/16(木) 11:04:29.29 ID:srO8KDRm.net]
- まぁRustでスクラッチから書かれたOSでWindowsやiOSやAndroidを取っ替えるか
スマホみたいな何らかの新しいハードウェアが誕生して それがRust製で書かれたOSで制御されている状況にならんと普及はせんよ
- 322 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 11:11:37.43 ID:r79frV++.net]
- >>321
頭の弱い子ですね JavaやPerlやJavaScriptやRubyやPHPやPythonなどで書かれたOSは普及していませんが それらの言語は普及しました
- 323 名前:デフォルトの名無しさん [2023/03/16(木) 11:19:37.68 ID:srO8KDRm.net]
- >>322
JavaやPerlやJavaScriptやRubyやPHPやPython使ってるところで普及はするかもね じゃこれで良い? ニッチと言って分かるかな?
- 324 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 11:22:05.57 ID:3C3pOHVn.net]
- マイコンでRustを使う試みは結構普及してるみたいだね
- 325 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 12:18:46.17 ID:xA7F3jfw.net]
- Rustは電気ドリルや3Dプリンタのような道具なんだから、本当に良いと思えば
自分が使って生産効率を上げたり良い作品を作って披露すれば良いだけなのに、 信者達が無理やり広めようとしているのが嫌だ。 困るのは、C++を使ってる人を馬鹿にすること。
- 326 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 12:23:14.36 ID:0EJvJf6l.net]
- Rust製の高速なwebpack互換バンドラ「Rspack」登場。現時点で5倍から10倍の性能向上 https://www.publickey1.jp/blog/23/rustwebpackrspack510.html
- 327 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 12:23:28.58 ID:xA7F3jfw.net]
- C++をディスってC#を上げまくっていた人達が、Rustに鞍替えした模様。
彼らは5chやtwitterで徹底的にRustを褒めまくっている。 どうしてそんなことをするのか。思想家や哲学者なのか。 マルクスもそういう感じで結果、大勢の人々を苦しめた。
- 328 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 12:31:35.94 ID:srO8KDRm.net]
- Rustはポテンシャルはあるけど現状で普及するパスが見えていないですから
Rustを愛する者にとってはそこがフラストレーションなのでしょう 普及するパスが見えたら解消すると思うよ
- 329 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 12:37:22.05 ID:3C3pOHVn.net]
- C++が怠っていた部分を成し遂げたんだから、Rustは誇っていい
エンジニアが本職なら、C++でもRustでも、なんでも読み書きできないといけないだろう まあ、じきにC++も追いつくだろ 問題はC
- 330 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 13:52:30.33 ID:xA7F3jfw.net]
- 本当に優秀なプログラマなら、C++でもRustでもどっちでも簡単に使えるので、
必要あらば、どっちでも使うだろうが、C++でもメモリーエラーなんて滅多に 起こさないし、起きても原因究明して直せるから、敢えてRustに行く動機もない。 別にRustが使えないからC++を使ってるわけじゃないのに、Rust使う人の方が 憂愁みたいに言われるのはおかしい。
- 331 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 13:53:26.57 ID:xA7F3jfw.net]
- >>330
書き間違えた。 憂愁 ---> 優秀
- 332 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 13:55:47.65 ID:xA7F3jfw.net]
- >>329
「Rustは誇っていい」という意味が分かりにくい。Rustを作った人はちょっと 誇っていいかも知れないが、Rustの解説本を書いている人や、Rustを道具として 使っている人が誇っていいわけではない。
- 333 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 13:57:50.83 ID:3C3pOHVn.net]
- ああ、うん
Rust(言語と言語チーム)は誇っていい その一派につらなる「信者」が誇るのは…まあ人の常かなって
- 334 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:00:22.48 ID:xA7F3jfw.net]
- >>333
>その一派につらなる「信者」が誇るのは…まあ人の常かなって 信者が誇って良い分けないと思うが。
- 335 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:06:46.30 ID:3C3pOHVn.net]
- Rust派先鋒衆がいうのは、Rustに移れば、大多数の脆弱性は自然につぶれるのに、
C++に固執するのがもうクズ。っていう発想 それもわかるんだけどね なんでも書けてこそのC++ 縛りを記述できないなんて、欠陥でしかない だから、C++の進化には期待してる 遅々たるものになるかもしれないけど
- 336 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:20:33.51 ID:xA7F3jfw.net]
- >>335
>Rustに移れば、大多数の脆弱性は自然につぶれるのに、 >C++に固執するのがもうクズ。っていう発想 それもわかるんだけどね 本当に優秀ならば、C++でも脆弱性がが入らない。 mozillaやgoogleの社員がタコなだけ。
- 337 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:30:08.42 ID:srO8KDRm.net]
- >>314
C++からRustライブラリを呼ぶ場合もRustからC++ライブラリを呼ぶ場合も 文法違いすぎて大変そうだけどどうしてるんかな? Cのライブラリを呼ぶのはどのプログラミング言語からでも余裕だけども JavaとC++もかなり歪だよね?
- 338 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:31:40.01 ID:hABarloL.net]
- >>336のような勘違いしてる自信過剰なダメな人たちが今までセキュリティの穴を多数あちこちで生じさせてきた
人間は必ずミスをするという当たり前のことも受け入れられない人はキチガイのみ
- 339 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:33:21.04 ID:3C3pOHVn.net]
- >>336
一人で作るもんでもないからねえ、大人数だと、体調の悪いヤツとかも混じるだろ コンパイラに任せたいってのはわからんでもない 俺も、(たとえば)gccとヘッダライブラリに任せて、自分は気楽にごりごり書きたいw
- 340 名前:デフォルトの名無しさん [2023/03/16(木) 14:34:51.94 ID:srO8KDRm.net]
- >>338
自信過剰も何もC++書ける人だとなぜに スマートポインタで失敗するのか理解不能だよ 原因は生ポインタ使ってるからなんだろうけど それなら生ポインタをプロジェクトで禁止にするだけで充分 あとマルチスレッドにおけるデッドロックはRustで検出できるのかい?
- 341 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:37:50.95 ID:srO8KDRm.net]
- ボローチェッカだっけ? CとC++で実装できんのかな?
- 342 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 14:39:57.56 ID:3C3pOHVn.net]
- ていうか、Rustがもたらそうとしてるのは、プログラミングパラダイムだから、
C++でおんなじように書ければいいんだよ ハズしてたらコンパイルエラーになってくれてだな Rustは実績を積んだ C++は早くその成果を取り込むべき ラムダといいコルーチンといい、C++が他に学んだ前例はいくらでもある >>341 まじそれ
- 343 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:04:51.89 ID:bO6zkRLm.net]
- >>338
それはプログラマーのレベルが少なくとも俺よりは低いから。
- 344 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:07:17.05 ID:3C3pOHVn.net]
- >>343
お前みたいな優秀なヤツが、【わざと】脆弱性を仕込んだコードをコミットしたりするんだよw 他人は信用できねえ 俺クラスになったら、自分自身が一番信用できねえww
- 345 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:14:34.72 ID:N2/NSeFa.net]
- use 描くだけでコンパイル中にダウンロード始まって
何分も待たされたらそりゃ遅いわ!!!ぷんぷんって 怒るアホも出て来るだろうね
- 346 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:18:25.89 ID:N2/NSeFa.net]
- >>334
Rust(人気)は俺が育てた!(AA略)
- 347 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:36:54.04 ID:07ACJDqQ.net]
- >>341
現状では無理 C++33くらいで可能になるかもね
- 348 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:38:33.76 ID:07ACJDqQ.net]
- >>340
>あとマルチスレッドにおけるデッドロックはRustで検出できるのかい? コンパイルエラーになるかという意味ならならない その辺はGoとかと一緒でイディオムで対処
- 349 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:42:21.06 ID:I4Z9PBKv.net]
- >>348
メモリ安全だけだとあんまり有り難くないな もしミスってもデバッガで直ぐ分かる訳だし
- 350 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 15:51:10.02 ID:TBYrYTSU.net]
- >>349
メモリ安全だけでなく C++とは異なりRustはデータ競合を完全に防げる C++とは異なりRustは広義のヌル安全であることも大きい
- 351 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 16:02:01.69 ID:PpEtLqb1.net]
- >>350
それでも言語が汚いから使いたくない。
- 352 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 16:24:46.13 ID:TBYrYTSU.net]
- 様々なプログラミング言語と比較してもRustは美しい側に入るとともに
言語機能が強力で可読性が高い とくにパターンマッチング これはC++でも導入しようとしているが進んでいないだけでなく C++で出ている提案では強力でなく可読性もよくないようにみえる Rustはパターンマッチングが非常に強力で可読性の向上の最大要因となっている
- 353 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 16:52:12.01 ID:3grScBM3.net]
- >>351
Rustかどうかは別として10年後くらいには 今Rustが実現してるやり方が標準的なものになるのは間違いないから 考え方やメリットデメリット、限界をある程度学んでおいた方がいいかもよ Rust自体はいいところもあれば悪いところも沢山あるので実際に使うかどうかは状況次第
- 354 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 17:04:30.58 ID:YeYGULup.net]
- 結局Rustがもひとつ流行らないのって
①エコシステム ②ライブラリ なんじゃやいの? ①は流行ってきたら充実するものでニワトリと卵だけど、②はどうなん? ②が中々充実しないのは何かRustのライブラリ書いてやろうと言う人が出てこない理由あるんかな?
- 355 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 17:12:09.28 ID:3C3pOHVn.net]
- 採用宣言が大手から出たんだし、そのへんは急ピッチで進むっしょ
>>353 10年後には、いまRustが提示しているものを踏まえた、さらにスマートなものが出ているかもしれない でも、それを理解するには、ここから10年間、Rustの成果を学び、踏まえるのがいい だから俺はいま学ぶぜ 願わくば、10年後にも、しぶとい感じでC++が現役であってほしいな
- 356 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 17:15:50.99 ID:QTF1+6wX.net]
- C++は次々と新たな機能を増やし続けてきたが増築工事だから色んな点で限界が多い
例えば話が出ている広い意味のnull安全はC++がoptionalの導入をとっくに行っているが ・なかなか普及しない ・既存ライブラリの仕様とのチグハグ ・パターンマッチング機能の導入がまだなので使い勝手が悪い などの問題が山積みであまり使われていない C++の他の機能導入でも似たような状況が多い Rustが美しく書きやすく読みやすいのはそれらの多くが最初から解決されているからだと感じる C++をさっさと棄てるのが現実解であると理解できた
- 357 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 17:23:01.97 ID:3C3pOHVn.net]
- C++はなんでも書けるかわりに、いまや考えなしに勝手に組み合わせると めちゃくちゃになるんだよね
Rustには引き算の美学の成果が入ってる C++も、先頭で縛りを宣言できるようにして、美しく書けるようになるべきだ 絶対に
- 358 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 17:47:47.57 ID:VzH+f4s6.net]
- ソースコードのコンパイル・ビルドの時点ですべての問題点をエラーで全部弾いてくれたら理想的だね
大抵はテストツールまで書かないと使えない
- 359 名前:デフォルトの名無しさん [2023/03/16(木) 19:59:01.19 ID:srO8KDRm.net]
- >>350
コンストラクタでlockしてデストラクタでunlockするproxyクラス作って その一時オブジェクト経由で触れば良いだけなので何を今更という感じ メモリ安全は別にデバッガですぐ特定できるし マルチスレッドではRustの利点がない デッドロックが検出できたらまぁ嬉しいが?
- 360 名前:デフォルトの名無しさん [2023/03/16(木) 20:03:11.00 ID:u3ZLVO1D.net]
- クラス笑
- 361 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 20:03:55.24 ID:srO8KDRm.net]
- >>354
多くの人に使ってもらおうと思ったらCで書いて 各言語のラッパーを提供するってのが多い RustにこのCの代わりができれば良いんだけども? もしRustユーザしかリンクできないライブラリだったら Rustはそもそもユーザー数が少ないし Rustで書く動機が減る
- 362 名前:デフォルトの名無しさん mailto:sage [2023/03/16(木) 20:07:00.05 ID:srO8KDRm.net]
- >>357
多人数でやるプロジェクトにはC++は自由過ぎて その点は書き方にある程度拘束される意義はあると思う
- 363 名前:デフォルトの名無しさん [2023/03/16(木) 23:56:33.56 ID:ufHOK4fg.net]
- >>320
ありがと 意外と変わらないんだ
- 364 名前:デフォルトの名無しさん [2023/03/17(金) 00:02:12.50 ID:aeVIJ/KU.net]
- Rustでゲームエンジンやグラフィックソフト作れたら認めてやるよ
- 365 名前:デフォルトの名無しさん [2023/03/17(金) 00:04:03.80 ID:aeVIJ/KU.net]
- DTMに使いそうなDAWソフトとかでもいいぞ
書き方はGitHubにいろんなOSSの見本があるから簡単でしょ?
- 366 名前:デフォルトの名無しさん [2023/03/17(金) 00:04:27.28 ID:aeVIJ/KU.net]
- Rust使いこなせるくらいなら余裕のはず
- 367 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:14:30.94 ID:o5CBT2m0.net]
- SDLのRustバインディングはあるけども
Rustで本体を書いて他の言語のバインディングって出来るの? 他の言語との乖離でRustならではの部分が封じられて あんまり嬉しくないような気もするのだが? それともRustでライブラリ書いたらターゲットはRustだけになるのかな?
- 368 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:14:49.50 ID:6s2Kuhdf.net]
- >>356
>Rustが美しく書きやすく読みやすいのはそれらの多くが最初から解決されているからだと感じる 俺とは感覚が違う。Rustを美しく感じない。
- 369 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:21:48.75 ID:6s2Kuhdf.net]
- これは理解できるし、はっきりそう書けばよい:
・Rustの本を書きました。Rustは良い言語なので本を買ってください。 ・Rust用のライブラリを書きました。Rustは良い言語なのでライブラリを買ってください。 これは理解できないし、問題: ・C++は害悪なのでRustをみんなが使って世の中を良くしよう。 ・自分がC++を使いこなせないのに、使いこなせる人が許せないから、使いこなせるRustを普及させたい。
- 370 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:39:18.46 ID:2hBAQcCo.net]
- RustはC++なんかよりずっと簡単! <- これならわかる
- 371 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:51:57.03 ID:6s2Kuhdf.net]
- >>370
それも意見が分かれそうだ。
- 372 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 00:54:59.09 ID:UJajhYy7.net]
- >>367
出力をcdylibにすれば一般的なCソースのライブラリと同じ形式(soとかdll)で出力されるはず 当然FFI絡みの制約は出てくるしextern指定とかも必要だけど境界部分だけ気を付ければ内部は自由にRustできる wgpuはRustで書かれたグラフィックライブラリだけどその機能をC/C++から呼ぶためのwrapperでwgpu-nativeがあって さらにそのC用のwrapper経由で別言語(Pythonとか)のwrapperが作られてたりする 依存関係がややこしいけど wgpu (Rust製、Rust用Lib出力) ← wgpu-native (Rust製、C用Lib出力) ← wgpu-py (C+Python製、Python用ライブラリ) みたいな構造
- 373 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 01:04:51.03 ID:o5CBT2m0.net]
- >>372
なるほどー
- 374 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 05:58:07.48 ID:HbMAHHRq.net]
- >>359
Rustならマルチスレッドでもマルチタスク(=グリーンスレッド)でも書きやすく さらにデータ競合を完全に防げるRustしか現状の言語では選択肢ないと思うよ 各言語で書き比べてみれば一目瞭然 そのため並行並列を使うプログラムはC++→RustだけでなくJava→Rustの移行も進んでる
- 375 名前:デフォルトの名無しさん [2023/03/17(金) 10:42:47.45 ID:o5CBT2m0.net]
- >>374
>>そのため並行並列を使うプログラムはC++→RustだけでなくJava→Rustの移行も進んでる 全く進んでいないのだが?w 俺の周りではC++やJavaでマルチスレッドで書く奴の方が多い というかそもそもRustを使っている奴は一人もいないw 妄想なのか詐欺師なのか... Linuxでも さもRustの導入が進んでるように言うが実際は>>39だし...
- 376 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 10:55:37.94 ID:FKqwIQQI.net]
- マルチスレッドはまあ普通だけどマルチタスクはめちゃくちゃ書きにくいぞ
単純なWeb Serverくらいならいいがちょっと凝った処理を書こうとするとくっそ面倒くさい tokio依存なのもダメなところ
- 377 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:06:44.98 ID:tBmmskox.net]
- そここそ、OSがRust化するっていうんだから、きれいなAPIが出てきてほしいね
結局、効率を求めたらC API に肉薄することになるし
- 378 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:15:24.56 ID:TZnQdWAf.net]
- Linuxの現状はRustでドライバが書けるようになったってだけだよ
誤解なきよう
- 379 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:17:48.64 ID:RPqYd1dp.net]
- >>376
マルチタスク(並行)で綺麗に書ける言語はRustとGoだけだな GoはPromise(Future)使わないあのスタイルに寄せられるのとGC言語であるため Rustが汎用では筆頭言語になる
- 380 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:33:47.61 ID:Igk62yzo.net]
- >>376
だよな Rustの非同期が簡単だと勘違いしてるやつはチュートリアルレベルしかやったことないやつだと思うわ
- 381 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:43:37.53 ID:RPqYd1dp.net]
- >>380
自分でpollしたりするのも含めて色んなレベルで書いているが簡単だぞ Rustで並行並列が難しいと言うならばとこが難しいのかを具体的に述べよ そしてそのケースでRustの代わりに使える別言語があるならば述べよ
- 382 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:51:53.17 ID:UWSndCzi.net]
- Goと比較したら性能面でも劣ることが多くて同程度の性能を実現したければ手動であれこれやらないといけないからな
- 383 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:19:57.65 ID:CZQwnfV3.net]
- >>381
そうやって自分が分かってない事を無料で聞き出してしまおうとする。ずる賢い。
- 384 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:31:22.55 ID:RPqYd1dp.net]
- >>382
Goが速い遅いと言ってたのは昔の話 今はGoもRust tokioも改善してほぼ同じwork stealing方式になり似たりよったりの速度 C++をあきらめてRustに対抗できるGoを持ち出すしかないほど追い込まれてるのかね >>383 Rustで並行並列が他の言語より難しいことはない 難しいと主張するならば何が難しいのかを述べたまえ もし本当に具体的に困ったことがあるならばアドバイスできる
- 385 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:38:18.49 ID:YQ2F/Sw2.net]
- 追い込まれてるってなんだろうね
楽しそうだね
- 386 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:39:30.67 ID:o5CBT2m0.net]
- この人は妄想癖がある
- 387 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 12:56:40.90 ID:LTrpjv8n.net]
- >>384
>Rustで並行並列が他の言語より難しいことはない >難しいと主張するならば何が難しいのかを述べたまえ >もし本当に具体的に困ったことがあるならばアドバイスできる 問題意識があること、気付くこと、それが大事。 あなたにはそれがない。
- 388 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 13:03:24.97 ID:Gi38nai6.net]
- >>383
わかり味 こいついつも教えて君だよなぁ 総論しか書けないところみると マニュアルだけ読み込んだペーパープログラマーがそれを隠すためのネタを欲してるようにしか見えない
- 389 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 13:03:47.55 ID:T8dNhcTz.net]
- Goはgoroutine間のデータ競合の発見を実行時のランタイムでやるしかなく
Goはあまりお勧めできないなあ メモリ共有せずチャネルを使う範囲ならGoでもいいけど Rustでもチャネルはもちろん使えるし 共有メモリで安全にデータ競合を起こさず使えるからRustがいいよ
- 390 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 14:28:10.79 ID:ZRpBqjDt.net]
- ほんと嘘ばっかりだな
- 391 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 15:04:18.42 ID:RPqYd1dp.net]
- >>389
Goに限らずデータ競合を実行時にしか検出できない言語ではデータ競合が時々しか起きない場合のデバッグが難しい Rustを使うべき理由はデータ競合を静的に検出できる点にある
- 392 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 15:55:42.60 ID:LTrpjv8n.net]
- >>391
それはマルチスレッドプログラミングのアルゴリズムをRustは強く制限しているから。 だから、その制限から外れるようなアルゴリズムは使えないので柔軟性は欠く。
- 393 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:03:41.59 ID:tBmmskox.net]
- そこが、新規書き起こしのRustのメリットでもあるわけよな
- 394 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:05:57.04 ID:LTrpjv8n.net]
- >>393
そして、独自のアルゴリズムは使えないので、アルゴリズムの研究には向かない。
- 395 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:11:31.46 ID:TZnQdWAf.net]
- 第n次LinkedListおじさんvsGCおじさん戦争
- 396 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:16:19.10 ID:tBmmskox.net]
- 頑張ったら書けるんじゃねーの、それもsafeで
そのへんはC++もおなじ 自分も、ニッチすぎる薄いラッパなら頑張って書くし
- 397 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:20:04.75 ID:KZujdKGk.net]
- >>392
Rustで記述できないマルチスレッドプログラミングのアルゴリズムなんてものは存在しない Rustは柔軟性が非常に高い
- 398 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:32:10.93 ID:LTrpjv8n.net]
- >>397
嘘を書かないで。
- 399 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:41:56.97 ID:T8dNhcTz.net]
- Rustで書けないのがあると主張している人が例を出せばいいんじゃね
Rustにそんな制限はないからすべて書けるよたぶん
- 400 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 16:52:07.05 ID:4tGjgBNl.net]
- 結局何年か後にはlinux kernelを全部rustで書くつもりなんかな
- 401 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:00:34.34 ID:tBmmskox.net]
- 書けなくはないだろ、書きやすいかどうかだ 実際どうなん
C++は、なんでも書けるが、油断すると複雑すぎる代物ができあがる そんで、「でも例外がくるとー」「でも異常値がくるとー」って
- 402 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:01:41.44 ID:LTrpjv8n.net]
- >>399
マルチスレッドのアルゴリズムは非常に多く存在していて、ある意味では無限に 考えられる。Rustは数個しかサポートしていないから、無理。
- 403 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:26:21.78 ID:T8dNhcTz.net]
- >>402
Rustで書けない例があると主張したいなら例を出せばいいんじゃね Rustに何か制限があるわけじゃないからおそらくなんでも書けるよ
- 404 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:31:51.55 ID:LTrpjv8n.net]
- >>403
unsafeになる。
- 405 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:42:50.37 ID:T8dNhcTz.net]
- >>404
マジ?信じられん もし本当ならそのunsafeを使わざるを得なかった例を具体的に出せばいいんじゃね
- 406 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:43:39.56 ID:tBmmskox.net]
- unsafeをゼロにするよりも、極小なunsafeブロックを組み込んで華麗にキメてほしいね
これはC++も同様
- 407 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 17:52:35.17 ID:2s/kFNH6.net]
- >>400
そういう枯れた古いものをわざわざ書き直すことに熱意を燃やせる人間は少ない 新世代のデータベースやcrypt/blockchainのように金になる新しい成長分野ではc/c++よりもrustがよく使われてる 技術の自然な世代交代は既存システムの置き換えから始まるものではない
- 408 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:01:30.86 ID:LTrpjv8n.net]
- >>405
次のことが成り立っていれば教えてもらわなくても自然に分かる: ・マルチスレッドの事を理解している。 ・Rustのことを理解している。 ・算数的直観力に優れる。
- 409 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:03:48.04 ID:u99ocdLb.net]
- 複製おじさん vs 100点おじさん
Fight!
- 410 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:24:08.50 ID:NC4w42Nt.net]
- >>401
そのへんの問題もRustだと安全安心なのがいいよなー 特に例外機構を無くしたのは大成功 あとResult放置してると警告もしてくれるしな >>404 そのunsafe使わないと書けなかったコードを出してみ 寄ってたかって添削してやろう
- 411 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 18:36:02.65 ID:LTrpjv8n.net]
- >>410
俺は天才だから、お前みたいな凡人に無料でヒントをくれてやらない。
- 412 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 19:13:16.48 ID:tBmmskox.net]
- Rustって、削ぎ落したものは復活させません、って宣言とかしてるん?
- 413 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 19:55:25.86 ID:9o1NNcpX.net]
- >>408
Rustをあんまり知らんけど言語間に根本的な差はなくね?
- 414 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 20:02:50.35 ID:kImSYq8C.net]
- >>408はいつものキチガイ
RustもC++もコードを書けたことがない 相手にするだけ無駄
- 415 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 20:19:10.88 ID:TZnQdWAf.net]
- >>414
今さらなに言ってるんだ? ここにはキチガイしかいないぞ? 俺もお前もな
- 416 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 20:29:34.70 ID:Zxg/DnHC.net]
- >>413
ん?だから何?
- 417 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 21:29:42.97 ID:o5CBT2m0.net]
- >>416
アルゴリズムを書ける書けないの差はでない
- 418 名前:デフォルトの名無しさん [2023/03/17(金) 23:44:57.66 ID:Lcw0Ean/.net]
- Rustほとんど知らん俺でも総合的にRustのほうがC++よりはいいだろと思う
C++より後発言語で、で、ライバルになるC++に劣っているようじゃダメだからな で、お前らは、すごいRustで具体的に何を作っているんだ?
- 419 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:11:15.51 ID:6kQD14Ek.net]
- ChatGPT先生に聞いてみた
>>404の言う通り template <typename T> class LockFreeStack { public: void push(const T& value) { Node* new_node = new Node(value); new_node->next = head.load(std::memory_order_relaxed); while (!head.compare_exchange_weak(new_node->next, new_node, std::memory_order_release, std::memory_order_relaxed)); } std::shared_ptr<T> pop() { Node* old_head = head.load(std::memory_order_relaxed); while (old_head && !head.compare_exchange_weak(old_head, old_head->next, std::memory_order_acquire, std::memory_order_relaxed)); return old_head ? std::make_shared<T>(old_head->value) : nullptr; } private: struct Node { T value; Node* next; Node(const T& value) : value(value), next(nullptr) {} }; std::atomic<Node*> head{nullptr}; };
- 420 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:31:48.86 ID:jelBOeFa.net]
- 先生にからかわれとるぞw
- 421 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:53:02.93 ID:rMRLIFsD.net]
- >>419はこれと同じのをRustで書いたらunsafeになる(だろ?)
って言いたいんだろ 偉大なるChatGPT先生が言うんだから間違いないだろな
- 422 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 00:58:57.68 ID:6kQD14Ek.net]
- >>421
いやChatGPTは信用しない方が良い 俺はRustは良く分からんがChatGPT曰く >Rustには、このようなロックフリーなデータ構造を提供する >クレート(ライブラリ)が存在します。その一つがcrossbeamです。 >このクレートは、スレッドセーフで効率的なデータ構造を提供しており、 >crossbeam内でUnsafeな操作が行われているにもかかわらず、 >APIを通じて安全に使用できます。 だそうな crossbeamってRustで書かれとらんのかな?
- 423 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 01:14:24.86 ID:pMxUNH+f.net]
- >>422
本当は、ライブラリの中だけをunsafeにして、アプリ側はsafeに出来るケースも有れば、 アプリ側も unsafe を消せないケースもありえる。
- 424 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 01:17:39.13 ID:6kQD14Ek.net]
- unsafeってキーワード使えばチェックをオフにできるのね
- 425 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 01:29:02.55 ID:6kQD14Ek.net]
- >>420
Rustで書いてみよう!
- 426 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 04:35:18.48 ID:+IGrKU6n.net]
- ArcとAtomicでほぼそのまま書けるけど
pointer dereferenceのためにunsafeは必須
- 427 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 10:03:55.24 ID:fNuha5Rk.net]
- 言語マウントごっこにしか使われてないrust
- 428 名前:デフォルトの名無しさん [2023/03/18(土) 10:25:46.77 ID:fSPMk7mF.net]
- no chance
- 429 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 11:41:47.24 ID:ux4diyjf.net]
- 平日の昼にID真っ赤なのは仕事か
板違いのスレで必死に毎日お疲れさん
- 430 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 14:02:46.54 ID:d2/CRNVk.net]
- ちょうどオライリーから「Rust Atomics and Locks」という本が出てるよ
基本的な内容を説明してる本なのでC++でatomicsやmemory orderingに慣れ親しんでる人がわざわざ買うほどのものではないかもしれないけど かなりわかりやすくまとまってるのでRustでこの辺りの機能を使ったコードを良く書く人は読んで置いて損はないと思う
- 431 名前:デフォルトの名無しさん [2023/03/18(土) 16:09:57.63 ID:fSPMk7mF.net]
- ほう
https://bokuweb.github.io/undefined/articles/20230205.html
- 432 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 18:42:10.12 ID:kFUsfJhu.net]
- Lock-Freeなデータ構造を自分で作りたい人はこれを見るといい
Porting Java's ConcurrentHashMap to Rust (part 1) https://www.youtube.com/watch?v=yQFWmGaFBjk
- 433 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:22:41.89 ID:LfQxDddq.net]
- > cargo new hoge
> cargo run → 3MB main.rs に use clap::Parser; 追加すると > cargo run → 100MB 超えるんだが どうすれば容量減らせるん?
- 434 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 12:44:51.20 ID:TIfaDrwo.net]
- とりあえず--releaseつける
- 435 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:32:03.94 ID:fPDrKYk/.net]
- しらんけど
https://igaguri.はてなぶろぐ.com/entry/2020/06/07/133847 https://crates.io/crates/cargo-clean-recursive
- 436 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 13:35:18.59 ID:fPDrKYk/.net]
- とりあえずは
cargo clean で良いはず 最初から余計なのは造りたくないって言う話ならほんまにしらん
- 437 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 14:03:33.37 ID:4KWNgnTF.net]
- >>436
ありがとうございました
- 438 名前:デフォルトの名無しさん mailto:sage [2023/03/20(月) 08:59:55.73 ID:8VwEKWf+.net]
- やっぱC++にもボローチェッカ欲しい
なんならCにも欲しい attributeとか併用したら、やってできないことはないんじゃねーの
- 439 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 17:20:17.93 ID:icU0z8mb.net]
- rg3d はなぜ
https://github.com/rg3dengine/rg3d から https://github.com/FyroxEngine/Fyrox に改名したのですか?
- 440 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 17:50:34.39 ID:5MGYYNx+.net]
- rustの読み物公式が面白いのしっかり出してるから
それ読むだけでも大分良い 後発言語らしくイイトコどりしまくってる null無くした代わりになんでもかんでもラップしてるから若干だるいけど すげー面白い
- 441 名前:デフォルトの名無しさん [2023/03/21(火) 19:41:09.03 ID:4irMO5jk.net]
- Unity超えるゲームエンジン作ってから言え
- 442 名前:デフォルトの名無しさん [2023/03/21(火) 19:42:14.14 ID:4irMO5jk.net]
- Blenderとかでもいいよ
- 443 名前:デフォルトの名無しさん mailto:sage [2023/03/21(火) 21:54:25.24 ID:gItZ+a0F.net]
- cpp2rsみたいのがじきできるから、そしたら一発
ただ、それだと、safeではあるけど、Rustのシンプルさは(メリットとして)失うな
- 444 名前:デフォルトの名無しさん [2023/03/22(水) 07:30:44.03 ID:7nCtmzjD.net]
- >>443
ほんとにできる?
- 445 名前:デフォルトの名無しさん [2023/03/22(水) 09:09:27.85 ID:II3LrhVD.net]
- 文法がRustなだけで
Rustのコードとして使い物にならん ゲテモノが出て来るわ 今のGPTも酷い
- 446 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 09:47:28.48 ID:RLKJ2atP.net]
- ああ、あと全自動とは言わない あっちこっちで、あれなおせーこれなおせーって言われるかと
- 447 名前:デフォルトの名無しさん [2023/03/22(水) 10:40:01.19 ID:Motackg9.net]
- たしかに、C++でメモリ安全性を静的チェックするツールを作るのはなかなか難しいもんかね?
- 448 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 12:19:59.74 ID:jZlOcGNt.net]
- gccだとvargrindとかあるけどね
- 449 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 14:27:48.09 ID:RqRpj7Ax.net]
- valgrindはgcc関係なくないか?
rustでもメモリリークの確認に使う 有用なツールだけど静的チェックと呼べるのかは疑問
- 450 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:31:28.83 ID:vDLoPLCP.net]
- valgrindは実行時チェックだから出現レアケースだと時間内に検出できない
- 451 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:43:05.82 ID:jZlOcGNt.net]
- AddressSanitizerでもValgrindでもmtraceでも好きなの選べ
https://kivantium.hateblo.jp/entry/2018/07/14/233027
- 452 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:46:10.74 ID:vDLoPLCP.net]
- 全て実行時チェックだな
- 453 名前:デフォルトの名無しさん mailto:sage [2023/03/22(水) 21:54:30.07 ID:jZlOcGNt.net]
- 静的ツールだとこんなのもあるね
https://cppcheck.sourceforge.io/ スマートポインタ使えばそもそもいらんがね
|

|