探検
結局C++とRustってどっちが良いの?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/02/25(土) 09:49:46.74ID:VRyB88xR C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
175デフォルトの名無しさん
2023/03/06(月) 23:56:33.22ID:h8dbx3na >>169
数字でも物理でも定数は静的に定まるものだよ
でもC++はconstをimmutableの意味で間違えて名付けてしまいました
そして定数を表すためにconstを使えなくなりconstexprと名付けたという誰でも知ってる有名な話だよ
数字でも物理でも定数は静的に定まるものだよ
でもC++はconstをimmutableの意味で間違えて名付けてしまいました
そして定数を表すためにconstを使えなくなりconstexprと名付けたという誰でも知ってる有名な話だよ
176デフォルトの名無しさん
2023/03/07(火) 00:01:46.05ID:gZ1LpnCS >>175
>でもC++はconstをimmutableの意味で間違えて名付けてしまいました
とあなたが思っているだけではないかな?
C++のconstにあなたなが「間違えて」静的に定まるものを期待しているだけでは?
>でもC++はconstをimmutableの意味で間違えて名付けてしまいました
とあなたが思っているだけではないかな?
C++のconstにあなたなが「間違えて」静的に定まるものを期待しているだけでは?
177デフォルトの名無しさん
2023/03/07(火) 00:09:47.95ID:6eBCzRN0 言われてみれば数字や物理で定数は静的に定まる値だな
どうせC++で静的に定まる値を示すキーワードも必要となるんだから素直にそれをconstにしておくべきだったか
設計ミスだな
どうせC++で静的に定まる値を示すキーワードも必要となるんだから素直にそれをconstにしておくべきだったか
設計ミスだな
178デフォルトの名無しさん
2023/03/07(火) 00:57:00.01ID:UNnBBHt0179デフォルトの名無しさん
2023/03/07(火) 01:08:45.38ID:gZ1LpnCS180デフォルトの名無しさん
2023/03/07(火) 01:27:52.75ID:phr7A4jU immutableとconstantの違いを区別できていない人がimmutableに対してconstと命名してしまったのかな
そのためconstantに対してconstと命名できなくなってconstexprと命名したと
そのためconstantに対してconstと命名できなくなってconstexprと命名したと
181デフォルトの名無しさん
2023/03/07(火) 01:31:47.04ID:CjRtBzJ1 同じ言葉や字句でも言語ごとにその概念が指すものは異なる
相対主義的に考えなさい
相手の価値観を理解しなければ説得力は生まれません
相対主義的に考えなさい
相手の価値観を理解しなければ説得力は生まれません
182デフォルトの名無しさん
2023/03/07(火) 02:21:18.68ID:oSHTm7sl ・y = ax (a=10である)
aをimmutableと呼ぶかconstantと呼ぶか
・y=f(a) (a=10である)
f(a)をconstantと呼ぶかconstant expressionと呼ぶか
まあ考え方次第だよな
aをimmutableと呼ぶかconstantと呼ぶか
・y=f(a) (a=10である)
f(a)をconstantと呼ぶかconstant expressionと呼ぶか
まあ考え方次第だよな
183デフォルトの名無しさん
2023/03/07(火) 02:29:20.82ID:phr7A4jU184デフォルトの名無しさん
2023/03/07(火) 08:05:58.19ID:oSHTm7sl >>183
かかるaについてなんと呼ぶかって話だから別にxについて気にする必要は無いよ
かかるaについてなんと呼ぶかって話だから別にxについて気にする必要は無いよ
185デフォルトの名無しさん
2023/03/07(火) 08:10:06.41ID:X5urLXgj >>182
理解できていなさ過ぎだろw
理解できていなさ過ぎだろw
186デフォルトの名無しさん
2023/03/07(火) 08:16:15.53ID:X5urLXgj187デフォルトの名無しさん
2023/03/07(火) 09:21:06.13ID:hj+ftEk+ 自演してRustゴリ推し他言語叩きをしてるのは
複製おじさんと呼ばれてるRustスレでは有名な荒らし
しかもそいつが「RustJP公式 」の中の人で間違いなさそうって話だから手に負えない
複製おじさんと呼ばれてるRustスレでは有名な荒らし
しかもそいつが「RustJP公式 」の中の人で間違いなさそうって話だから手に負えない
188デフォルトの名無しさん
2023/03/07(火) 10:27:35.30ID:QCj9HjAv >>187
「RustJP自称公式 」なのでなんの問題もない
「RustJP自称公式 」なのでなんの問題もない
189デフォルトの名無しさん
2023/03/07(火) 11:40:31.33ID:gZ1LpnCS >>180
それはお前用語なんじゃね?
それはお前用語なんじゃね?
190デフォルトの名無しさん
2023/03/07(火) 11:55:27.75ID:CdvGJ9oA y = ax
y も a も x も変数としか言いようがない
y も a も x も変数としか言いようがない
191デフォルトの名無しさん
2023/03/07(火) 12:47:12.28ID:CHI/c7S+ aを10としたときにコンパイル時
最適化してしまうかaという入れ物残しとくか更にはf(a)も計算して結果だけ使うか
最適化してしまうかaという入れ物残しとくか更にはf(a)も計算して結果だけ使うか
192デフォルトの名無しさん
2023/03/07(火) 21:59:54.08ID:6AJw5hNk 整数はconstやconstexprの有無に関係なくコンパイル時に最適化されるから整数を持ち出して来ても意味がない
C++ならクラスのインスタンスを生成する場合などを考えるとわかりやすい
コンパイル時点でそのインスタンスを定数化できる時にconstexprを使い静的に定数となる
そうでなく実行時にならないと値が定まらない変数となる時はconstexprを使えない
その変数がimmutableつまり生成以降は値を変更できない時はconstを使う
C++ならクラスのインスタンスを生成する場合などを考えるとわかりやすい
コンパイル時点でそのインスタンスを定数化できる時にconstexprを使い静的に定数となる
そうでなく実行時にならないと値が定まらない変数となる時はconstexprを使えない
その変数がimmutableつまり生成以降は値を変更できない時はconstを使う
193182
2023/03/07(火) 22:28:59.56ID:oSHTm7sl constというものの表現を語るうえで言語依存しない形で書いただけなので
少数でも文字列でも適当に読み替えてね
少数でも文字列でも適当に読み替えてね
194デフォルトの名無しさん
2023/03/08(水) 00:26:55.95ID:Ax/TB2dR195デフォルトの名無しさん
2023/03/08(水) 00:36:06.87ID:o1WhyvRq 壊れたテープレコーダは生まれてくるべきでなかった
196デフォルトの名無しさん
2023/03/08(水) 00:46:11.75ID:+ZMcnEdg 事後諸葛亮
197デフォルトの名無しさん
2023/03/08(水) 01:01:29.10ID:qkb67oYH 同じ事しか書けない命名君はGC連呼厨なのか
198デフォルトの名無しさん
2023/03/08(水) 01:22:37.49ID:9h+oJZcX 結果的に後からみればC++の命名ミスなんだろうが歴史的経緯で仕方ないだろ
昔はimmutableとconstantの概念の区別が曖昧だった
昔はimmutableとconstantの概念の区別が曖昧だった
199デフォルトの名無しさん
2023/03/08(水) 01:53:12.26ID:CbNEQcSB どうしても`immutable'を使いたければマクロ定義すれば?
#define immutable const
#define immutable const
200デフォルトの名無しさん
2023/03/08(水) 02:01:56.79ID:3vDDzLqz Rustはconstをimmutableとcompile-time constantの両方の意味で使うので一貫性が無い
>>174
>>174
201デフォルトの名無しさん
2023/03/08(水) 07:29:50.16ID:OMAPV4fU >>200
Rustでconstは常に静的な定数を表す
*constはconstとは全く別のものであり予約語を最小限にするための使い回し組み合わせ
両者は種別も異なるため混乱することもない
constは定数の定義なのでこの位置に来る
let foo: i32 = 12345;
const FOO: i32 = 12345;
*constは生ポインタの型を示すのでこの位置に来る
const BAR: &i32 = &FOO;
const BAZ: *const i32 = &FOO;
このように両者は全く別物で出現位置も異なり共存もでき混乱することもない
この生ポインタはunsafe Rustでしか使わないため通常は出て来ない
そのために新たな予約語を消費するのは馬鹿げているため既存の組み合わせという合理的な選択をした
Rustでconstは常に静的な定数を表す
*constはconstとは全く別のものであり予約語を最小限にするための使い回し組み合わせ
両者は種別も異なるため混乱することもない
constは定数の定義なのでこの位置に来る
let foo: i32 = 12345;
const FOO: i32 = 12345;
*constは生ポインタの型を示すのでこの位置に来る
const BAR: &i32 = &FOO;
const BAZ: *const i32 = &FOO;
このように両者は全く別物で出現位置も異なり共存もでき混乱することもない
この生ポインタはunsafe Rustでしか使わないため通常は出て来ない
そのために新たな予約語を消費するのは馬鹿げているため既存の組み合わせという合理的な選択をした
202デフォルトの名無しさん
2023/03/08(水) 07:30:57.28ID:/qygPgTx constはCからの流れだしな。
元々Cがシステムプログラミング向けだったことを思えば、「リードオンリーセクションに置け」っていうくらいのつもりだったんだろ。
定数は#defineで指定しろって感じかな。
元々Cがシステムプログラミング向けだったことを思えば、「リードオンリーセクションに置け」っていうくらいのつもりだったんだろ。
定数は#defineで指定しろって感じかな。
203デフォルトの名無しさん
2023/03/08(水) 08:49:19.07ID:w2ee/I/N204デフォルトの名無しさん
2023/03/08(水) 09:00:01.62ID:OMAPV4fU205デフォルトの名無しさん
2023/03/09(木) 14:43:18.74ID:lc0skjdv 本題に戻ろう
206デフォルトの名無しさん
2023/03/09(木) 19:02:01.89ID:33ubz+zP Rustは優秀なんだろうけど、言語仕様が難解なのと、「〜の分野ならRust」と言えるものがないから広がりにくいんだろうね
207デフォルトの名無しさん
2023/03/11(土) 11:27:51.97ID:E47xdjIQ それにRustは左翼的な弱者救済的な雰囲気が漂う。
VBも同じ理由で使ってるだけで駄目プログラマとみなされていったから、
同じようにRustを使ってるだけで駄目プログラマ決定されてしまう気がする。
VBも同じ理由で使ってるだけで駄目プログラマとみなされていったから、
同じようにRustを使ってるだけで駄目プログラマ決定されてしまう気がする。
208デフォルトの名無しさん
2023/03/11(土) 11:29:57.74ID:E47xdjIQ Excelもそうだ。Excelを使ってるだけで弱者扱いされてしまうようになっている。
VBもそうなったから、中味はそう変わってないのに名前を変えてC#にされた。
しかし、だんだんと、C#もVBと同じように馬鹿プログラマ専用言語とみなされる
ようになってきてる。
Rustもきっとそうなるだろう。
VBもそうなったから、中味はそう変わってないのに名前を変えてC#にされた。
しかし、だんだんと、C#もVBと同じように馬鹿プログラマ専用言語とみなされる
ようになってきてる。
Rustもきっとそうなるだろう。
209デフォルトの名無しさん
2023/03/11(土) 14:27:01.34ID:lvldJuuV Rustも悪くないけど日本語のドキュメントが酷すぎるかなあ。
たとえば第七章のパッケージとグレートの話とかでも
-------
最初に学ぶモジュールシステムの要素は、パッケージとクレートです。 クレートはバイナリかライブラリのどちらかです。 クレートルート (crate root) とは、Rustコンパイラの開始点となり、クレートのルートモジュールを作るソースファイルのことです
--------
英文の方は版が新しいこともあってか
The first parts of the module system we’ll cover are packages and crates.
A crate is the smallest amount of code that the Rust compiler considers at a time. Even if you run rustc rather than cargo and pass a single source code file (as we did all the way back in the “Writing and Running a Rust Program” section of Chapter 1), the compiler considers that file to be a crate.
と、いう具合で以下だいぶ丁寧に解説してる。
パッケージにはa library crateとあるから一つだけなの?とChatGPTに尋ねたら複数入ることもあると断言されたけど。
たとえば第七章のパッケージとグレートの話とかでも
-------
最初に学ぶモジュールシステムの要素は、パッケージとクレートです。 クレートはバイナリかライブラリのどちらかです。 クレートルート (crate root) とは、Rustコンパイラの開始点となり、クレートのルートモジュールを作るソースファイルのことです
--------
英文の方は版が新しいこともあってか
The first parts of the module system we’ll cover are packages and crates.
A crate is the smallest amount of code that the Rust compiler considers at a time. Even if you run rustc rather than cargo and pass a single source code file (as we did all the way back in the “Writing and Running a Rust Program” section of Chapter 1), the compiler considers that file to be a crate.
と、いう具合で以下だいぶ丁寧に解説してる。
パッケージにはa library crateとあるから一つだけなの?とChatGPTに尋ねたら複数入ることもあると断言されたけど。
210デフォルトの名無しさん
2023/03/11(土) 14:31:08.67ID:+PZMhSrI 面倒ならとりあえずDeepLに掛ければ良いのにね
> モジュールシステムで最初に取り上げるのは、パッケージとクレートです。
>
> クレートは、Rustコンパイラが一度に考慮する最小のコード量です。cargoで
> はなくrustcを実行し、1つのソースコードファイルを渡したとしても(第1章
> の「Rustプログラムの作成と実行」でやったように)、コンパイラはそのファ
> イルをクレートと見なします。
> モジュールシステムで最初に取り上げるのは、パッケージとクレートです。
>
> クレートは、Rustコンパイラが一度に考慮する最小のコード量です。cargoで
> はなくrustcを実行し、1つのソースコードファイルを渡したとしても(第1章
> の「Rustプログラムの作成と実行」でやったように)、コンパイラはそのファ
> イルをクレートと見なします。
211デフォルトの名無しさん
2023/03/11(土) 16:27:23.47ID:BtFFfdHV >>209
ひどすぎるのには同意するが
それはボランティアによる非公式な翻訳で
識者による監修や査読がされてないから
質が低いのは当然といえば当然
一部専門用語を除くと機械翻訳のほうが
それよりはマシな訳になることが多いので
多少英語が苦手でも公式を見たほうが断然効率がいいよ
ひどすぎるのには同意するが
それはボランティアによる非公式な翻訳で
識者による監修や査読がされてないから
質が低いのは当然といえば当然
一部専門用語を除くと機械翻訳のほうが
それよりはマシな訳になることが多いので
多少英語が苦手でも公式を見たほうが断然効率がいいよ
212デフォルトの名無しさん
2023/03/11(土) 16:39:48.49ID:47WJOH0Y >>209
7章の最初のページ見ればそれぞれどういう関係なのか一目瞭然
単数形複数形の違いを丁寧に訳してなければ重要な意味が日本語訳では消えてるかもね
・Packages: A Cargo feature that lets you build, test, and share crates
・Crates: A tree of modules that produces a library or executable
・Modules and use: Let you control the organization, scope, and privacy of paths
・Paths: A way of naming an item, such as a struct, function, or module
7章の最初のページ見ればそれぞれどういう関係なのか一目瞭然
単数形複数形の違いを丁寧に訳してなければ重要な意味が日本語訳では消えてるかもね
・Packages: A Cargo feature that lets you build, test, and share crates
・Crates: A tree of modules that produces a library or executable
・Modules and use: Let you control the organization, scope, and privacy of paths
・Paths: A way of naming an item, such as a struct, function, or module
213デフォルトの名無しさん
2023/03/11(土) 17:28:34.44ID:/GMTezZ0214デフォルトの名無しさん
2023/03/11(土) 18:00:56.32ID:bkYlWMhE215デフォルトの名無しさん
2023/03/11(土) 19:45:03.63ID:+PZMhSrI 規格がないので二流感が拭えない
かと言ってC++が登場したときのように
今はプログラミング言語の実装が
いくつも出てくる状況でもないのかな?
かと言ってC++が登場したときのように
今はプログラミング言語の実装が
いくつも出てくる状況でもないのかな?
216デフォルトの名無しさん
2023/03/11(土) 22:12:18.37ID:GtLfWJGz >>215
C++での混乱と失敗を繰り返さないことが重要
C++での混乱と失敗を繰り返さないことが重要
217デフォルトの名無しさん
2023/03/11(土) 22:59:17.84ID:+PZMhSrI 実装は複数あった方がメリットが大きいよ
218デフォルトの名無しさん
2023/03/11(土) 23:05:20.16ID:2/rFH0pr219デフォルトの名無しさん
2023/03/11(土) 23:19:14.88ID:ChsfUoNW 実装が複数あることはメリットもあるがデメリットも多くユーザを混乱させてきた
一方で言語仕様とその実現方法が確定して枯れた時は複数実装のメリットが上回る
Rustについては更なる理想の言語に向けて公開todoリストも多くまだ発展段階なので複数実装は向いていない
もちろん従来的な使い方ならば現状のRustで既に十分に利用できる
一方で言語仕様とその実現方法が確定して枯れた時は複数実装のメリットが上回る
Rustについては更なる理想の言語に向けて公開todoリストも多くまだ発展段階なので複数実装は向いていない
もちろん従来的な使い方ならば現状のRustで既に十分に利用できる
220デフォルトの名無しさん
2023/03/11(土) 23:24:45.49ID:uRw385pv >>218
ユーザーフォーラムのしかもたった二人の回答を「公式コミュニティの見解」にしてしまうオツムの人達だからさ一般常識があると思ったら大間違い
ユーザーフォーラムのしかもたった二人の回答を「公式コミュニティの見解」にしてしまうオツムの人達だからさ一般常識があると思ったら大間違い
221デフォルトの名無しさん
2023/03/11(土) 23:30:52.30ID:+PZMhSrI222デフォルトの名無しさん
2023/03/11(土) 23:34:33.13ID:2T5UBlcf223デフォルトの名無しさん
2023/03/11(土) 23:39:25.95ID:ChsfUoNW Rustは公式が提供するcargoやrust-analyzerで開発環境は十分だもんな
もちろんrust-analyzerはLSPなのでVScodeなどの既存の統合開発環境で使える
もちろんrust-analyzerはLSPなのでVScodeなどの既存の統合開発環境で使える
224デフォルトの名無しさん
2023/03/11(土) 23:51:17.37ID:3ENT9RfU225デフォルトの名無しさん
2023/03/12(日) 06:07:53.91ID:b0Zzr0Fl >>212
一目瞭然ってことはないよ。
わかってるやつにはわかるっていうレベル。
特にmodule and use以下で戸惑うと思うよ。
Rustはプログラミング言語としてはCとかで神経使っていたところで楽させてくれる感じだけど、新人を呼び込むにはドキュメントがまずいかなあ。
一目瞭然ってことはないよ。
わかってるやつにはわかるっていうレベル。
特にmodule and use以下で戸惑うと思うよ。
Rustはプログラミング言語としてはCとかで神経使っていたところで楽させてくれる感じだけど、新人を呼び込むにはドキュメントがまずいかなあ。
226デフォルトの名無しさん
2023/03/12(日) 09:19:37.91ID:XJpeOWKz 前にもこれどこかで同じレスしたことあるけど
Javascriptってドキュメントすっごい充実してるよな
2000年以前はHTMLとJavascript一緒になった解説本の最後の方に申し訳程度に乗ってたくらいで
あとは某とほほサイト見るくらいしかなかったけど
最近ちらっとみたらすごいのな
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/find
これは適当にクリックした特に選んでない一例だけど
ちょっと過剰なくらい説明と例が乗っててスゴイと思ったわ
Rustにここまでを要求したほうがいいとも思わんけど
いつかみんなが使う言語になったときはそうなってるのかもしれん
Javascriptってドキュメントすっごい充実してるよな
2000年以前はHTMLとJavascript一緒になった解説本の最後の方に申し訳程度に乗ってたくらいで
あとは某とほほサイト見るくらいしかなかったけど
最近ちらっとみたらすごいのな
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/find
これは適当にクリックした特に選んでない一例だけど
ちょっと過剰なくらい説明と例が乗っててスゴイと思ったわ
Rustにここまでを要求したほうがいいとも思わんけど
いつかみんなが使う言語になったときはそうなってるのかもしれん
227デフォルトの名無しさん
2023/03/13(月) 09:18:51.45ID:65XUJIc/ udemyからrust勉強すれば良いと思う
228デフォルトの名無しさん
2023/03/13(月) 11:30:57.14ID:QpsvkUdl C++は既に意味不明な域に来ていて、誰も新規に習得しようとはしないだろう
229デフォルトの名無しさん
2023/03/13(月) 12:04:07.60ID:wwEuDEVq >>226
ほんと。自分もノーマークだったけどすごいね。
Rustも「英文ドキュメント読め」みたいに突っぱねいようにしなくちゃね。
Rustのサイトで各国語にトランスレートされたもののリンク先の更新日付を眺めてると、中国語版に負けてる感じだね。
ほんと。自分もノーマークだったけどすごいね。
Rustも「英文ドキュメント読め」みたいに突っぱねいようにしなくちゃね。
Rustのサイトで各国語にトランスレートされたもののリンク先の更新日付を眺めてると、中国語版に負けてる感じだね。
230デフォルトの名無しさん
2023/03/13(月) 12:11:38.79ID:CJ8zcgHs 中国なんてどうでもいい
231デフォルトの名無しさん
2023/03/13(月) 12:13:17.03ID:bP2+YJD9 MDNもMDNで英語読まないとやってられない記事はちょいちょいあるけどね
CSSのpositionとか
CSSのpositionとか
232デフォルトの名無しさん
2023/03/13(月) 14:43:06.35ID:wwEuDEVq 少なくとも手解き用として、TheBookの日本語版ではねえ。
で、メモリ安全ってことだけをひたすらリピートするだけでは、新しい人は来ないでくださいと言ってるようなもん。
まあ、その方がチンケな優越感に浸れて良いのかもしれないけど。
で、メモリ安全ってことだけをひたすらリピートするだけでは、新しい人は来ないでくださいと言ってるようなもん。
まあ、その方がチンケな優越感に浸れて良いのかもしれないけど。
233デフォルトの名無しさん
2023/03/13(月) 15:10:59.37ID:cwbZasxH >>231
Wasmのところも日本語版は古い情報のままなので肝心なAPIが足りていなくて英語版を見ないと致命的
リンク先が訳せてなくて英語版を指しているのは次善策としてまだマシ
英語版
https://developer.mozilla.org/en-US/docs/WebAssembly#api_reference
日本語版
https://developer.mozilla.org/ja/docs/WebAssembly#api_%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
Wasmのところも日本語版は古い情報のままなので肝心なAPIが足りていなくて英語版を見ないと致命的
リンク先が訳せてなくて英語版を指しているのは次善策としてまだマシ
英語版
https://developer.mozilla.org/en-US/docs/WebAssembly#api_reference
日本語版
https://developer.mozilla.org/ja/docs/WebAssembly#api_%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
234デフォルトの名無しさん
2023/03/13(月) 15:27:59.03ID:kyo182dJ メモリ安全ってのは個人が始める動機としては弱い
スマートポインタで充分なんだし
チームで書くときにメモリ管理が怪しい奴が混ざり得るときに
Rustで書くことを強制されるってシチュエーションはありえるかもね
スマートポインタで充分なんだし
チームで書くときにメモリ管理が怪しい奴が混ざり得るときに
Rustで書くことを強制されるってシチュエーションはありえるかもね
235デフォルトの名無しさん
2023/03/13(月) 15:42:51.26ID:sbzZb6rB236デフォルトの名無しさん
2023/03/13(月) 15:54:03.52ID:kyo182dJ >>235
>Rustは可読性もよいし開発効率もよく
そんなのは人によるとしか言えない
所有権に割と馴染みがあるC++プログラマはともかく
他の言語からだと文法の解離に抵抗はあるだろうね
これからプログラミングを始めようという人は
特にRustだからという抵抗はないだろう
実績が増えればRustからって人が増えるかもね
>Rustは可読性もよいし開発効率もよく
そんなのは人によるとしか言えない
所有権に割と馴染みがあるC++プログラマはともかく
他の言語からだと文法の解離に抵抗はあるだろうね
これからプログラミングを始めようという人は
特にRustだからという抵抗はないだろう
実績が増えればRustからって人が増えるかもね
237デフォルトの名無しさん
2023/03/13(月) 16:03:04.23ID:UI2Ct8M3 C++はコンパイラ買う時にデバッグツールもあって、そこでメモリリーク含む大体の解析が出来ることが多いから、今の所メモリ安全で困ったことはないな。
それよりもRustはまだ新しいから、何かしら思わぬ脆弱性が潜んでいることも考えて、まだ弄りながら様子見って感じ
それよりもRustはまだ新しいから、何かしら思わぬ脆弱性が潜んでいることも考えて、まだ弄りながら様子見って感じ
238デフォルトの名無しさん
2023/03/13(月) 18:05:23.37ID:QpsvkUdl C++の有料コンパイラってそんなすげえのか?
239デフォルトの名無しさん
2023/03/13(月) 18:37:31.12ID:cwbZasxH240デフォルトの名無しさん
2023/03/13(月) 19:04:23.67ID:sbzZb6rB >>237
デバッグツールを持ち出さなくてもRustはコンパイル時点でほとんど解決する点で圧倒的に優れている
Rustはメモリ安全性だけでなくデータ競合がないことがコンパイル時点で保証される
ポインタ以外の汎用的なヌル安全とエラー処理忘れ防止もRustは標準ライブラリ全体でOptionとResult利用により保証される
C++と比べて開発効率が段違いに良くなる
デバッグツールを持ち出さなくてもRustはコンパイル時点でほとんど解決する点で圧倒的に優れている
Rustはメモリ安全性だけでなくデータ競合がないことがコンパイル時点で保証される
ポインタ以外の汎用的なヌル安全とエラー処理忘れ防止もRustは標準ライブラリ全体でOptionとResult利用により保証される
C++と比べて開発効率が段違いに良くなる
241デフォルトの名無しさん
2023/03/13(月) 19:17:45.07ID:9XZC5W3h C/C++のメモリリークと隣合わせなスリルがいいんだよ
Rustなんて補助輪付きの言語はプロのプログラマッには温すぎる
コーディングに自信がない奴や素人向けだな、Rustは
Rustなんて補助輪付きの言語はプロのプログラマッには温すぎる
コーディングに自信がない奴や素人向けだな、Rustは
242デフォルトの名無しさん
2023/03/13(月) 19:49:16.47ID:zhi7FkgJ >>241
C/C++はプログラマとして成長させてくれるよね
C/C++はプログラマとして成長させてくれるよね
243デフォルトの名無しさん
2023/03/13(月) 19:51:01.09ID:cwbZasxH >>241
C++はデバッグ時間のムダ
C++はデバッグ時間のムダ
244デフォルトの名無しさん
2023/03/13(月) 20:02:48.32ID:lNJwESa5 別にスマートポインタでええがな
245デフォルトの名無しさん
2023/03/13(月) 20:04:22.18ID:lNJwESa5 Rustは規格が出てからだな
246デフォルトの名無しさん
2023/03/13(月) 20:07:14.22ID:4NzLTP/2 マ板でやれバカども
247デフォルトの名無しさん
2023/03/13(月) 20:22:48.71ID:4VuAJC20248デフォルトの名無しさん
2023/03/13(月) 20:39:22.66ID:RfKK3GLn トラ枝 5月号 Rust 特集
249デフォルトの名無しさん
2023/03/13(月) 20:45:38.95ID:sbzZb6rB250デフォルトの名無しさん
2023/03/13(月) 21:04:50.75ID:kyo182dJ251デフォルトの名無しさん
2023/03/13(月) 21:41:54.90ID:Lx/25M/K252デフォルトの名無しさん
2023/03/13(月) 21:46:41.78ID:kyo182dJ >>251
他は? GCしか書けない人なのかな?
他は? GCしか書けない人なのかな?
253デフォルトの名無しさん
2023/03/13(月) 22:00:51.65ID:sbzZb6rB254デフォルトの名無しさん
2023/03/13(月) 22:16:19.15ID:P8sbSRo2 絵に描いたような負け犬のセリフw
255デフォルトの名無しさん
2023/03/13(月) 22:35:49.32ID:kyo182dJ256デフォルトの名無しさん
2023/03/13(月) 22:38:39.16ID:Lx/25M/K >>252
C++もRustもGC無いぞ
C++もRustもGC無いぞ
257デフォルトの名無しさん
2023/03/13(月) 22:43:20.72ID:kyo182dJ >>256
んなことぁ誰でも分かってる
んなことぁ誰でも分かってる
258デフォルトの名無しさん
2023/03/13(月) 23:26:56.50ID:sbzZb6rB259デフォルトの名無しさん
2023/03/13(月) 23:40:00.84ID:kyo182dJ260デフォルトの名無しさん
2023/03/13(月) 23:52:11.42ID:9+eE28f9 >>244
C++スマートポインタは
unique_ptrは使わずともRustでは標準で全て自動解放されるよ
shared_ptrはRustではスレッド内で使えるRcとスレッド間で使えるArcに分かれていて効率的だよ
C++スマートポインタは
unique_ptrは使わずともRustでは標準で全て自動解放されるよ
shared_ptrはRustではスレッド内で使えるRcとスレッド間で使えるArcに分かれていて効率的だよ
261デフォルトの名無しさん
2023/03/14(火) 00:08:40.65ID:nARWep6y >>260
別にunique_ptrやshared_ptrでええがな
難しくないよ
>shared_ptrはRustではスレッド内で使えるRcとスレッド間で使えるArcに分かれていて効率的だよ
効率的をも少し詳しく!
別にunique_ptrやshared_ptrでええがな
難しくないよ
>shared_ptrはRustではスレッド内で使えるRcとスレッド間で使えるArcに分かれていて効率的だよ
効率的をも少し詳しく!
262デフォルトの名無しさん
2023/03/14(火) 00:17:28.43ID:g2aa4i95 C/C++でスレッドセーフな並列処理を作ろうと思ったら一苦労だけど、Rustだとそうでもないんかな。
263デフォルトの名無しさん
2023/03/14(火) 00:51:48.86ID:mRkuEIyQ264デフォルトの名無しさん
2023/03/14(火) 00:58:40.53ID:Ff/IlIXh うわっw
排他制御の意味も知らないのかよこいつw
排他制御の意味も知らないのかよこいつw
265デフォルトの名無しさん
2023/03/14(火) 01:09:54.31ID:gRogmLJe shared_ptrは排他制御してリファレンスカウンタの増減を行うからスレッドセーフ
その代わり重い
その代わり重い
266デフォルトの名無しさん
2023/03/14(火) 01:26:54.27ID:nARWep6y >>263
なるほどね
std::shared_ptrには参照カウンタの排他制御をオフにする機能はなかったかな?
boost::shared_ptrだと美しくないけどBOOST_SP_DISABLE_THREADSマクロで切り替えられる
最近使ってないがLoki::SmartPtrは確かテンプレートパラメータで切り替えできたかな?
なるほどね
std::shared_ptrには参照カウンタの排他制御をオフにする機能はなかったかな?
boost::shared_ptrだと美しくないけどBOOST_SP_DISABLE_THREADSマクロで切り替えられる
最近使ってないがLoki::SmartPtrは確かテンプレートパラメータで切り替えできたかな?
267デフォルトの名無しさん
2023/03/14(火) 01:58:37.91ID:gRogmLJe Rustでは共存可能
スレッド内のみの共有はRc
スレッド間での共有はArc
切り替えでなく最初から二種類が用意されるべき
スレッド内のみの共有はRc
スレッド間での共有はArc
切り替えでなく最初から二種類が用意されるべき
268デフォルトの名無しさん
2023/03/14(火) 02:06:25.73ID:nARWep6y >>267
同意
std::shared_ptrもLoki::SmartPtrみたいに
テンプレートパラメータで切り替えできれば良いのにね
ただしstd::shared_ptrを規格に入れた時点で
既にboost::shared_ptrもLoki::SmartPtrもあったことを考えると
参照カウンタが競合する機会はほとんどないという見立てで
実装を単純化したのかなと予想する
誰か経緯を知らんかな?
同意
std::shared_ptrもLoki::SmartPtrみたいに
テンプレートパラメータで切り替えできれば良いのにね
ただしstd::shared_ptrを規格に入れた時点で
既にboost::shared_ptrもLoki::SmartPtrもあったことを考えると
参照カウンタが競合する機会はほとんどないという見立てで
実装を単純化したのかなと予想する
誰か経緯を知らんかな?
269デフォルトの名無しさん
2023/03/14(火) 02:13:23.45ID:nARWep6y 苦肉の策としては
#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>;
#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デフォルトの名無しさん
2023/03/14(火) 02:59:21.97ID:u9OB+g2b shared_ptr単独では完全なスレッドセーフではない、という問題もある。
shared_ptrで排他制御される対象はreference counterの増減だけであり、指している値の読み書きはもちろん排他制御されない。
したがってshared_ptrはスレッドセーフだから安心だと誤解していると、危険なプログラムが出来上がるリスクがある。
C++ではプログラマーがこれらの誤解や見落としやミスを全くしないことを求められ、それに依存するためプログラムの安全品質は危うい。
Rustではその点も安全で、Arc<T>はTへの書き込みが出来ないため、排他制御の問題は起きない。
書き込みしたいならば、Arc<Mutex<T>>やArc<RwLock<T>>など必要となる排他制御の種類に合わせて選び、組み合わせて利用する。
それら組み合わせにより、Tへの書き込みができるようになるが、必ずロックで排他制御されるため問題は起きない。
たとえプログラマーが見落としやミスや使い間違えをしても、Rustコンパイラがエラーを出し、該当箇所を教えてくれるため、常に安全性が保証される。
shared_ptrで排他制御される対象はreference counterの増減だけであり、指している値の読み書きはもちろん排他制御されない。
したがってshared_ptrはスレッドセーフだから安心だと誤解していると、危険なプログラムが出来上がるリスクがある。
C++ではプログラマーがこれらの誤解や見落としやミスを全くしないことを求められ、それに依存するためプログラムの安全品質は危うい。
Rustではその点も安全で、Arc<T>はTへの書き込みが出来ないため、排他制御の問題は起きない。
書き込みしたいならば、Arc<Mutex<T>>やArc<RwLock<T>>など必要となる排他制御の種類に合わせて選び、組み合わせて利用する。
それら組み合わせにより、Tへの書き込みができるようになるが、必ずロックで排他制御されるため問題は起きない。
たとえプログラマーが見落としやミスや使い間違えをしても、Rustコンパイラがエラーを出し、該当箇所を教えてくれるため、常に安全性が保証される。
271デフォルトの名無しさん
2023/03/14(火) 03:15:26.07ID:nARWep6y >>270
Mutex <T>を書けば良いのではないかな?
Mutex <T>を書けば良いのではないかな?
272デフォルトの名無しさん
2023/03/14(火) 03:19:38.24ID:nARWep6y >>270
>shared_ptrで排他制御される対象はreference counterの増減だけであり、指している値の読み書きはもちろん排他制御されない。
>したがってshared_ptrはスレッドセーフだから安心だと誤解していると、危険なプログラムが出来上がるリスクがある。
想定してるレベルが低すぎる
マルチスレッドで書くやつにそんなやつはいない
議論が無理やり過ぎ
>shared_ptrで排他制御される対象はreference counterの増減だけであり、指している値の読み書きはもちろん排他制御されない。
>したがってshared_ptrはスレッドセーフだから安心だと誤解していると、危険なプログラムが出来上がるリスクがある。
想定してるレベルが低すぎる
マルチスレッドで書くやつにそんなやつはいない
議論が無理やり過ぎ
273デフォルトの名無しさん
2023/03/14(火) 03:33:56.57ID:u9OB+g2b >>272
その件に限らずすべてにおいて、勘違い、見落とし、ミスなどは発生する。
複雑化したときにmutex忘れも、shared_ptr忘れも、間違えてunique_ptr使いも、その他のミスも、何でも実際に起きている。
Rustではそれらが起きてもコンパイラが通さないことで、常に安全性が保証され、無駄なデバッグを避けられる。
C++では無駄なデバッグを招くか、もしくは、そのままリリースしてセキュリティの穴が生じてしまう。
現実にC++が多数の問題を引き起こしてきた。
その件に限らずすべてにおいて、勘違い、見落とし、ミスなどは発生する。
複雑化したときにmutex忘れも、shared_ptr忘れも、間違えてunique_ptr使いも、その他のミスも、何でも実際に起きている。
Rustではそれらが起きてもコンパイラが通さないことで、常に安全性が保証され、無駄なデバッグを避けられる。
C++では無駄なデバッグを招くか、もしくは、そのままリリースしてセキュリティの穴が生じてしまう。
現実にC++が多数の問題を引き起こしてきた。
274デフォルトの名無しさん
2023/03/14(火) 12:05:32.83ID:CPf3ZEOa 暇を持て余すニートの日記
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” [ぐれ★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★3 [Hitzeschleier★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★3 [七波羅探題★]
- 【今年の漢字】吉村維新代表「成」 万博成功、連立で政策成す [蚤の市★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎます」★2 [冬月記者★]
- 【悲報】メキシコ、中国およびアジアからの輸入品に最大50%の関税、トランプ対中関税への同調圧力 [733893279]
- ネトウヨ「中国の例の証拠動画、日本側の応答が海自の無線規則とは違うので捏造です」海自の動画でネトウヨの嘘だとバレる [165981677]
- 日本人、世界で最もブランドに興味なし🇯🇵 [462275543]
- 【悲報】産経新聞「インバウンド増やした元凶は安倍晋三」 [616817505]
- 【悲報】たぬかなが渡邊渚を壮絶バッシング 「グラビア出したあたりから臭いな~と思ってたが激臭になってたわ。中居は悪くない」 [455031798]
- お昼のまったり🍵😶‍🌫🤏すこすこハウス🏡
