[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2ch.scのread.cgiへ]
Update time : 03/23 08:38 / Filesize : 137 KB / Number-of Response : 454
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2023/02/25(土) 09:49:46.74 ID:VRyB88xR.net]
C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?

82 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 14:11:06.82 ID:4/ee2SHc.net]
試しにChatGPT先生にRustにキラーアプリがあるか聞いたらSolanaやRayonだって
>SolanaやRayonがUNIXやMFCのようにプログラミング言語を新たに習得しようと
>する人を爆発的に増やすことは、現時点では考えにくいと言えます。
>UNIXやMFCが広く普及した理由の一つは、それらが当時の主流であったプラッ
>トフォームやアプリケーションの開発に必要不可欠であったためです。一方、
>SolanaやRayonは、それぞれ特定の分野において高いパフォーマンスを発揮す
>るためのライブラリやプラットフォームであり、必ずしも全ての開発プロジェ
>クトに必要不可欠なものではありません。
>また、Rust自体がまだ比較的新しい言語であるため、多くのプログラマがRust
>を習得する必要性を感じているわけではありません。ただし、Rustの安全性や
>パフォーマンスが注目されるにつれ、より多くのプログラマがRustに興味を持
>ち、学習する可能性はあります。
>つまり、SolanaやRayonがプログラミング言語を新たに習得しようとする人を
>爆発的に増やすことに貢献するかどうかは、それらが必要不可欠なライブラリ
>やプラットフォームとして広く普及するかどうかにかかっていると言えます。

83 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 14:16:45.49 ID:4/ee2SHc.net]
例えばRustで書かれたOSをAndroidやiOSの後継にするとか
携帯に匹敵する新たな情報端末が出現して
それがRustで制御されているとか

84 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 14:23:37.36 ID:N97puPhx.net]
質問がバカだと回答もバカになるいい例
ググり力と同じくジピり力が求められる

85 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 14:36:25.48 ID:4/ee2SHc.net]
「ジピり力」かぁw 大事だね
SolanaやRayonが返ってきた質問は以下
>あるプログラミング言語が流行るにはC言語におけるUNIXやC++のMFC、最近だ
>とpythonがAIによって流行ったようにキラープロダクトが重要だと思います。
>キラープロダクトがあれば、その言語を習得したプログラマが一気に増えます。
>Rustにそのようなキラープロダクトはありますか?
Rustの爆発的普及にはキラープロダクトが不可欠

86 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 14:38:15.81 ID:D5BhE+0S.net]
>>79
C++は今も違法増改築を続けて無数に部屋(仕様)が作られていくような言語
そして新たな増改築が決まっても、完成(実装)されなかったり、新たな部屋の存在が知られていなかったり、ほとんどの部屋は極一部の人しか使われていない
結果的に良い機能があっても使われないのは無駄に大きく重複もある複雑な言語仕様のせい
例えばC++20で導入されたstd::rangesはRustでいうとIteratorなどの基本的なデータ取り扱い機能で超重要だが今後も広まらないのだろう
歴史的な事情でC++の全容は複雑怪奇となっていて理念の一貫性もなくどうしようもない状態

Rustは洗練された言語仕様となっていてC++と比べれべるとシンプルで分かりやすい
全体の理念も統一されており特に安全性に関する保証が与える信頼性はこのセキュリティ重視の時代に完全にマッチしている
今後Rust人口が増えてくると企業案件でC/C++が使われてきたものはRust指定(必須)となっていくだろう

87 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 14:45:55.72 ID:4/ee2SHc.net]
>>86
普及して長いことたてばRustもご多分に漏れずいずれ複雑怪奇になるってw
若いと分からんかもしれんが
C++は複雑怪奇に見えるかもしれんが規格変更には慎重の方だと思うよ
ところでRustって規格あるの? 仕様しかない?

88 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 15:24:09.80 ID:4/ee2SHc.net]
実装が1つしかないから規格はないかな

89 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 15:30:29.97 ID:o+lCraYI.net]
C++もスマートポインタでメモリ安全を取り込んできているけどね。なんでも飲み込む奴だからなあ。

90 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 15:41:34.24 ID:4/ee2SHc.net]
例えばstd::shared_ptr相当のものは
90年代中盤から後半にかけて使われ始めたと思うけど
(boost::shared_ptrはいつからだっけ?)
std::shared_ptrが規格に入ったのはC++11
規格の拡張は無節操というより慎重というかクソ遅いよ



91 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 15:59:19.04 ID:dC3Ayx4m.net]
>>86
Javaが出た時に聴いたことあるような文句だな
割とマジでフラッシュバック

92 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 16:08:40.39 ID:eS6QMQkY.net]
>>79
それは分類が非常に簡単
既に作られており穴も発見されないものをわざわざRustに移植する意味はない
穴が多く悩まされてるものはChromiumのようにRust併用やRustへ切り替えが進んでいる
新たに作ったり大きく作り直す場合はRust一択

93 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 16:24:01.58 ID:eS6QMQkY.net]
>>89
C++はスマートポインタがあっても言語システムとして安全を保証する枠組みがない
まともなIT企業からRustへ移動し始めている根本的な理由がそこ

94 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 16:40:50.78 ID:4/ee2SHc.net]
>>93
Rustプログラマを支障なく確保できなければ企業は
試験的採用こそすれど本格採用はしない

Rustプログラマが多い -> Rust生態圏が良くなる ->
Rustプログラマが増える -> (最初に戻る)

※Rust生態圏が良くなるとはライブラリやtipsが増えRustの仕事が増えること

この好循環を作らないことにはRustが流行りだすことはないだろう
そのためのキラーコンテンツ
>>37で上げてるようなソフトはしょぼすぎて該当しない
>>83くらいの状況になれば変わる

95 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 16:53:27.06 ID:eS6QMQkY.net]
Rust自体がプログラミング言語史上でも革新的なキラーコンテンツ
まともなIT企業からRustを導入していっている理由がそこにある
非GC言語でメモリ安全性を言語システムが保証する初で唯一のプログラミング言語がRust

96 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 17:10:59.88 ID:oc1UgWLG.net]
ダメダコリャ

97 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 18:47:07.82 ID:9x7ptNRV.net]
なんだかんだで置き換えられずにユーザ空間ソフトの基礎ライブラリになってるC言語の奴らすげーよな

98 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:04:35.27 ID:o+lCraYI.net]
とりあえずC/C++は今ところほぼ全てのCPUで環境が整備されているし、
メーカーさんのサンプルにしても、過去の資産も(FreeRTOSだのもArduinoなんかも)膨大。
それらが全て使われなくなったり、他の言語でで書き換えられるということが仮に
にあるとしても相当先の話になるだろう。
と考えると、C/C++はほぼ基礎教養かな?

あとは実務で要求されたものを身につけるっていう感じなんだろうな。
パラパラ眺めた範囲ではRustもC++知っていればさほど難しくなさそうだけど
個人で趣味レベルでやってますといっても、実務経験ないとキャリアとしてのアピール度は低いしな

99 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:14:16.94 ID:OHJUJNoL.net]
>>98
Cの基礎は必要だがC++は要らん
特殊な組み込み環境などでない通常利用ならば対応していてRustが使える

100 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:20:18.08 ID:OAWE1K4h.net]
でもお前組み込みエアプじゃん



101 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:22:55.17 ID:OAWE1K4h.net]
ルビキチも自分の実績とは関係なく人工衛星がどうのと褒めそやす奴だった
これもいずれはあのような壊れたレコードに成り果てるのだろう

102 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 19:42:00.55 ID:+4hIkzuc.net]
Firefoxだけかと思っていたらChromeもRustなのかよ

Google Chrome、プログラミング言語「Rust」の採用を発表
https://news.mynavi.jp/techplus/article/20230113-2561774/

103 名前:デフォルトの名無しさん mailto:sage [2023/03/02(木) 23:06:33.64 ID:4/ee2SHc.net]
>>102
それでRustプログラマが増えることはないな
>>83くらいの状況にならんと

104 名前:デフォルトの名無しさん [2023/03/03(金) 06:56:09.99 ID:3EPD3050.net]
>>99
その「特殊な組み込み環境」とやらでもC/C++は使えるからね。

C++はフルには要らんかもだけど、
クラスと継承は組み込みとかでも便利に使われてたりするね。

できることが大差ないとすると、仕事でRustを使えと言われない限り、個人レベルで積極的に使う理由に乏しいかなぁ。
個人でメンテできる程度だとメモリ安全ってそれほど重要ポイントではないし。

PythonにとってのAIみたいに、こういうアプリケーションなら、C/C++より遥かに楽で簡単に実現できるというものが必要なのではないかな。

今の段階じゃ、メモリ安全にするために制約やチェックを厳しくしたC/C++ってだけって感じだもの。

105 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 07:13:09.62 ID:5+VE8dsn.net]
Rustは後発なアドバンテージで
洗練されたモダンな言語仕様のため非常に書きやすい
これが一番大きなメリット
おまけとしてメモリ安全性の自動保証とデータ競合なしの保証
これらにおかげでC/C++で書いてた時に無駄に必要だった実行時デバッグが激減して消えた
Rustは開発効率が大きく向上する

106 名前:デフォルトの名無しさん [2023/03/03(金) 09:31:41.76 ID:oC7cFOXy.net]
>>95
Dが出た時に聴いたことあるような文句だな
割とマジでフラッシュバック

107 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:09:51.97 ID:t7eEMnCD.net]
>>106
どこが似てんだよ何も区別付かないアフォ

108 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:21:04.67 ID:mNTxopBi.net]
おちんちんランドへおいでよ!

109 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:21:58.74 ID:PdMH/ctM.net]
altJSブームが落ち着いたせいで下火になっちゃったけど
やっぱりHaxeは復活すべきだよな

110 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 13:26:08.63 ID:HbtHbRsb.net]
>>107
凄い似てるよ
Javaが出たときにも聞いたぞ
「C/C++を置換する!」は人間の性なんだろうw
長くやってると何度も見るし結果もだいたい分かる



111 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 16:49:35.55 ID:lJwnZSPr.net]
>>110
しかも、Javaの普及速度は物凄く速かったが、Rustは伸びてない。

112 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 19:36:46.54 ID:NsCHD7Iu.net]
>>91 >>110
プログラミング言語の一般的な基礎知識を持たない人がRustのアンチをやっているのかしら
JavaがCやC++に置き換わらなかった理由の一つはJavaがガベージコレクション必須の言語だからですよ
CやC++の置き換えとなるためにはGCを必要としないプログラミング言語でないとダメなんですよ

GCを必要としない言語も数少ないながら今までいくつか出て来たのになぜCやC++を置き換えられなかったか分かりますか?
CやC++で問題となってきたのはメモリ操作の安全性とデータ競合の安全性です
それらを完璧に対応して言語自体が安全性を保証する言語が今までなかったからですよ
Rustが初めて対応して初めて真にCやC++を置き換えられるようになりました
だからIT大手各社がライバル関係を超えて共同してRustを支援そして採用しているのですよ

113 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 20:45:25.65 ID:56kfvkVg.net]
>>112
>>77

お前はそればっかりだなw
そんなものはこの板の住人が知らん訳ないやろw
GCくらいしか語る知識がないんだろうな

114 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 21:06:34.40 ID:NsCHD7Iu.net]
>>113
その>>77を見てみましたがリアルタイム性の話ですか
それは直接はプログラミング言語とは関係ない話ですが少し関係がありますね
言語に関わらず作成したシステム側の話でOSからゲームのようなアプリまで必要とされる時間的制約があることをリアルタイム性と言います
もちろんガベージコレクションはリアルタイム性の障害となりますのでそれを軽減する手法を取ったりリアルタイム性を必要としないタイミングでGCを実行します
しかしそれでも現実的なOSや基幹システムでGC言語の利用は厳しいでしょう
そのためOSなどの記述にはCやC++やRustが使われます
メモリ安全性などの保証をプログラマーではなく言語システムに任せることができるRustがベストとなります

115 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 21:20:32.28 ID:qLiBhaKu.net]
エアプするにしてもせめてthe embedded bookくらいざっくり読んでからにすればいいのに

116 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 21:26:29.88 ID:HbtHbRsb.net]
>>114
リアルタイム性の話ではなく
GCの話しかしないことを言っている
GCくらいしか語る知識がないと俺は推測している

117 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 21:48:53.60 ID:IWtB3OsL.net]
C++とRustの比較スレだからGCない言語が前提だもんな
Javaとか持ち出す>>110>>111はアホすぎ

118 名前:デフォルトの名無しさん [2023/03/03(金) 21:51:10.69 ID:HbtHbRsb.net]
>>118
>>76

119 名前:デフォルトの名無しさん [2023/03/03(金) 21:51:28.18 ID:HbtHbRsb.net]
>>117
>>76

120 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 22:54:44.50 ID:3xVHehJY.net]
ここが新しい隔離スレちゃんですか



121 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 23:40:18.48 ID:DSH9vzOS.net]
ここは純粋にC++とRustの比較スレ
しかし無関係なGC言語を持ち出してくるバカがいてそれを邪魔をしているようだ

122 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 23:41:20.65 ID:kiJ4JQPs.net]
実務経験の乏しい人が言語機能だけで頭でっかちなアピールしてるのを見ると狙ってアンチ活動してるのかと勘繰りたくなるよね

まぁ隔離ファイト続けてくれ

123 名前:デフォルトの名無しさん mailto:sage [2023/03/03(金) 23:57:24.37 ID:gZNQib4P.net]
それらの言語を実際に書いて使っていればガッべージコレクションのある言語がC言語系を置き換えできないことくらい分かるはずだもんなー

124 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 02:04:08.56 ID:OUzFL/z0.net]
WinAPI/ATL/MFCの系譜をWinFormsが現れて.NETが置き換えていった歴史は無かったことにされたらしい

125 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 05:09:33.55 ID:zMMeSguG.net]
CやC++に置き換わる言語の話でWinAPIやWinFormsを持ち出してくるとは頭おかしいな

126 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:37:16.20 ID:4/pts6A0.net]
C#もGCないネイティブでビルドするオプションがあったら天下取れたかもな
VB6はGC無かったのになぜこうなった

127 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:41:49.65 ID:CDmz22lO.net]
>>125
君はてをにはがおかしい
寝ぼけた頭で脊髄反射で書き込むのはやめたほうがいいな

128 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 10:54:13.03 ID:RFNVa0Qi.net]
>>114
chatGPTの回答に似てるなωωω

129 名前:デフォルトの名無しさん [2023/03/04(土) 10:59:11.20 ID:RFNVa0Qi.net]
>>127
何処が可笑しいか指摘してくれ
おれには判らん

130 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:05:58.63 ID:54Un32Sk.net]
>>129
「CやC++に置き換わる言語の話」なんて誰もしていない
「CやC++に取って代わる」あるいは「CやC++を置き換える」と言いたいのだろう

あるいは本気で「CやC++に置き換わる言語の話」をしているのなら今度こそ本当に頭がおかしいな



131 名前:デフォルトの名無しさん [2023/03/04(土) 11:14:10.28 ID:RFNVa0Qi.net]
それがてにをはどどう関係あるの?

132 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 11:23:10.42 ID:33wAkDSd.net]
>>126
VB6はトレースGCではないけど参照カウンタGC方式のGC言語
VB6オブジェクトは裏で参照カウンタが自動的に使われていてそれにより使われなくなったメモリを回収している
ちなみにC++のshared_ptrなども参照カウンタ方式だが裏で勝手に使われることはなく必須でもなくプログラマー裁量なのでC++はGC言語ではない

133 名前:デフォルトの名無しさん [2023/03/04(土) 11:59:27.29 ID:Ss9j+0Cw.net]
Rustに期待している人のフラストレーションを解消したいなら
フルスクラッチでOSを書くくらいしか方法はないだろうね
OSの普及は更に至難の技だけども

134 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 12:08:40.51 ID:2fdiw2OM.net]
(実務経験ゼロ + 論理的思考力の欠落 + 自己愛性パーソナリティ障害) * Rustへの執着 = 通称複製おじさん

135 名前:デフォルトの名無しさん mailto:sage [2023/03/04(土) 12:51:29.76 ID:SdQ3Tgr2.net]
           |
            |  彡⌒ミ
           \ (´・ω・`)またGCの話してる
             (|   |)::::
              (γ /:::::::
               し \:::
                  \

136 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 00:54:23.16 ID:OH6jTTZv.net]
うるせー馬鹿

137 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 00:59:18.56 ID:eidG4gk+.net]
>>133
フルスクラッチの新たなOSを普及させるのは難しいだろうが
>>74に記事があるようにGoogleがRustのみで新OSを作ってるな
あとAndroidもLinuxもWindowsもRustの一部採用を始めて
この流れはOSに限らず全てのシステムでRust化が進んでいくのだろう

GoogleとMicrosoftがRust言語でOS開発
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/

138 名前:デフォルトの名無しさん [2023/03/05(日) 09:30:23.81 ID:B0+xSixt.net]
>>137
次第に現行プロジェクトを置換して増えていくなんて展開はありえないっての
AndroidやWindowsをRust製のOSで置換するくらいしかストーリとしてはない
Linuxに入っているRustコードは>>39で書いた通り

139 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 10:00:51.19 ID:N4QaJnep.net]
私はRustで年収1億稼ぎましたみたいな話はないのかよ
マイナープロジェクトでちょっと使われたら勝利なのかよ

140 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 11:14:29.69 ID:/Qd0pRlS.net]
Winnyの作者みたいに逮捕されるかと思ったら怖くて無理



141 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 11:34:54.12 ID:ukOUhlGm.net]
話し飛躍しすぎでしょ

142 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 11:49:22.14 ID:nmaj3sub.net]
Rustで検証してうまくいったらそのままCにコンバートすれば余計なチェックコードが削れてる速く動く

とかね。

143 名前:デフォルトの名無しさん [2023/03/05(日) 14:28:35.02 ID:FAqgXVt3.net]
てかGCって別に悪いもんじゃねぇしな

144 名前:デフォルトの名無しさん [2023/03/05(日) 14:30:11.56 ID:FAqgXVt3.net]
>>133
それよりもグラフィックソフト作ったほうが広まると思うけどね
Blender参考に3Dモデリングソフトつくってよ

145 名前:デフォルトの名無しさん [2023/03/05(日) 14:54:49.80 ID:B0+xSixt.net]
>>144
それでは心が満たされないんだよ
GCの話しかしない人とか

146 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 15:15:15.70 ID:WdTi9AcG.net]
>>143
GCの有無はその言語がカバーできる範囲の差となり優劣関係が明白
GCのない言語は全てをカバーできる

147 名前:デフォルトの名無しさん [2023/03/05(日) 15:45:42.10 ID:09jM8Cxo.net]
>>146
UEとかのゲームエンジンは当たり前だがついてる
うまく付き合ってくほうが大事

148 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 15:50:56.78 ID:7nv7saAE.net]
本当にGCの話しかしないんだね
GC以外のことを語る知識がない
GCはこの板見てる人はほぼ誰でも知っているだろう

149 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 15:58:09.36 ID:Y+o3TKYe.net]
色んな言語のライブラリがC++(や最近はRust)で書かれているのを考えると
C++とRustが王者決定戦になるのは当たり前じゃね?

150 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 16:07:43.53 ID:RiJu3w7U.net]
入力にゴミデータを与えるとゴミしか出力されないことの好例



151 名前:デフォルトの名無しさん mailto:sage [2023/03/05(日) 18:26:02.22 ID:xsWqtK1g.net]
いつのまにかPythonやJavaScriptのライブラリがRustで作れるようになってるのな

152 名前:デフォルトの名無しさん [2023/03/06(月) 00:49:06.50 ID:pFRSokg0.net]
そりゃラップするだけなんだから作れるだろ
アホか

153 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 09:19:45.87 ID:93HR+LQR.net]
そして我が道をいくLISP

154 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 09:45:52.37 ID:4Z2NP+rF.net]
LISPといえばGCの元祖だな

155 名前:デフォルトの名無しさん [2023/03/06(月) 13:40:13.02 ID:diWxUEyJ.net]
           |
            |  彡⌒ミ
           \ (´・ω・`)またGCの話してる
             (|   |)::::
              (γ /:::::::
               し \:::
                  \

156 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 15:05:53.11 ID:diWxUEyJ.net]
memo
https://zenn.dev/dumblepy/articles/3db2134ff88763

157 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 17:14:45.53 ID:93HR+LQR.net]
ふと思ったんだけど、Rustのmutableな構造体の中にimmutableなフィールドって持てるんだっけ?

158 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 20:00:50.97 ID:BPh5rEIJ.net]
>>157
そういえば、C++のcv属性は、論理和方式で、constは足し算の様に0から1に
変わるが、mut 属性はそうはならないだろうから、どうなるんだろうな。
constは意味的に考えてもcastしない限りは、、constなものはいくらやっても
書き込めるようにはならない、というのは安全性から当然なんだけど、
mutだとそうはいかない。

159 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 20:09:02.49 ID:BPh5rEIJ.net]
>>158
mutとconstは逆さまの働きみたいだから、どっちで行くかは言語設計者の自由と
思われがちだけど、constな構造体のメンバは勝手に全てconst扱いになるという
単純な論理に出来るけど、mut方式の場合は、constキーワードも別に必要になりそう。

160 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 21:18:31.55 ID:HKTArltY.net]
>>157
他の言語と同じでsetter相当をなくしてgetterだけにすればいい
専用のラッパーを作る方法もあるができて当然の機能なので誰もやらないだろうね



161 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 21:44:09.47 ID:l1NoBYC6.net]
>>159
C++でconstを誤用しているのとは異なり
Rustではconstを正しく定数の意味で使っているので注意
つまりconstは定数でありコンパイル時に静的に定まる
もちろんconstとは別の概念としてmutableとimmutableがあり、これらは可変性の有無を表す
さらにそれらと別の概念として所有権があり、所有権を持っていればimmutableであろうと関係なくmutableな変数へ移すことで可変性を得られる
一方で所有権を持たないimmutableな参照からは可変性を得られない

162 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 21:51:25.41 ID:1935XsNt.net]
>>161
>C++でconstを誤用しているのとは異なり
誤用なの?

163 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 22:01:32.22 ID:l1NoBYC6.net]
>>162
そうだよ
実行するたびにあるいは関数を呼ぶたびに値が変わりうる変数(=静的に値が定まらず変わりうること)に対して、
変数がimmutableであることを間違えてconstと付けてしまった
そのためC++では定数(=静的に値が定まること)の場合は苦肉の策でconstexprと変な名前を付けることになった

164 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 22:21:12.53 ID:1935XsNt.net]
>>163
C++では単に値が`constant'って意味で使っただけではないのかな?
それを誤用とは言わんと思う

ところで何でconstexprではないconst変数は
静的に定まらないことになってるの?

165 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 22:37:19.16 ID:l1NoBYC6.net]
>>164
もちろんC++は整数などに限ればconstで静的な定数となるが
それ以外C++のconstは定数ではなく静的にコンパイル時に定まらない
そのため真のconstを表すためにconstexprというキーワードを新たに用意する本末転倒な状況となった

166 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 22:52:19.69 ID:1935XsNt.net]
以下の2つは矛盾してないかい?

>>163
>実行するたびにあるいは関数を呼ぶたびに値が変わりうる変数(=静的に値が定まらず変わりうること)に対して、
>変数がimmutableであることを間違えてconstと付けてしまった

>>164
>もちろんC++は整数などに限ればconstで静的な定数となるが

2つ目はなるんだっけ?

167 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 22:53:11.95 ID:1935XsNt.net]
>>165
>そのため真のconstを表すためにconstexprというキーワードを新たに用意する本末転倒な状況となった
「本末転倒」とは違うと思うよ

168 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:09:16.19 ID:h8dbx3na.net]
>>166
C++で何らかのクラスのインスタンスを作ってconstに入れることを考えてみるとわかりやすいよ
もちろんこのconstのインスタンスはコンストラクタの引き数の値によって変わるから静的な定数じゃないよね
つまり単なるimmutableな変数に過ぎないわけだけどC++はそれに対してconstと間違えて名付けちゃった
だから本当の定数に対してconstexprと名付けることになった有名な話だよ

169 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:20:34.22 ID:1935XsNt.net]
>>168
>つまり単なるimmutableな変数に過ぎないわけだけどC++はそれに対してconstと間違えて名付けちゃった
C++のconstは単なる`constant'の意味で
静的な定数という意味でないというだけなのでは?
本当に「間違えて」名付けたのかな?
俺にはC++のconstにあなたが「間違えて」静的な定数という意味を
期待しているだけに見えるのだが?

170 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:31:32.57 ID:l1NoBYC6.net]
>>169
環境によって実行毎に、または、関数の引き数によって関数が呼ばれるごとに、>>168の示してる例だと値が変わりうる
その変わりうるものに対して、C++がconstと付けたのは失敗としか言いようがないのではないか
そしてC++は本当にconstantなものに対して、後からconstexprと付けざるをえなかったことが、C++の失敗を誰の目にも明らかにしている



171 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:33:40.69 ID:1935XsNt.net]
>>170
>環境によって実行毎に、または、関数の引き数によって関数が呼ばれるごとに、>>168の示してる例だと値が変わりうる
これはどいう状況か分かりにくい? ソースで書いてみて

172 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:42:46.60 ID:l1NoBYC6.net]
>>171
関数に渡ってきた毎回変わりうる引き数を使ってそれを渡してインスタンス作成してconstに突っ込む場合でもよい
あるいは環境変数やargv使ってインスタンス作成でもよい
いずれも毎回インスタンスの値が変わりうるため定数ではないがC++ではconstと付けてしまった
そして本当の定数にconstexprと付けた

173 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:47:46.47 ID:1935XsNt.net]
>>172
曖昧さを避けたいのでソースで書いて
反論する

174 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:52:15.11 ID:p7JhiTtQ.net]
ただし*const Tのconstだけはコンパイル時定数の意ではなく、C++と同じで書き換えを行えないという意味です
一貫性がありませんね

175 名前:デフォルトの名無しさん mailto:sage [2023/03/06(月) 23:56:33.22 ID:h8dbx3na.net]
>>169
数字でも物理でも定数は静的に定まるものだよ
でもC++はconstをimmutableの意味で間違えて名付けてしまいました
そして定数を表すためにconstを使えなくなりconstexprと名付けたという誰でも知ってる有名な話だよ

176 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 00:01:46.05 ID:gZ1LpnCS.net]
>>175
>でもC++はconstをimmutableの意味で間違えて名付けてしまいました
とあなたが思っているだけではないかな?
C++のconstにあなたなが「間違えて」静的に定まるものを期待しているだけでは?

177 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 00:09:47.95 ID:6eBCzRN0.net]
言われてみれば数字や物理で定数は静的に定まる値だな
どうせC++で静的に定まる値を示すキーワードも必要となるんだから素直にそれをconstにしておくべきだったか
設計ミスだな

178 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 00:57:00.01 ID:UNnBBHt0.net]
>>175 >>177の頭が設計ミス

179 名前:デフォルトの名無しさん [2023/03/07(火) 01:08:45.38 ID:gZ1LpnCS.net]
>>177
>言われてみれば
www

180 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 01:27:52.75 ID:phr7A4jU.net]
immutableとconstantの違いを区別できていない人がimmutableに対してconstと命名してしまったのかな
そのためconstantに対してconstと命名できなくなってconstexprと命名したと



181 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 01:31:47.04 ID:CjRtBzJ1.net]
同じ言葉や字句でも言語ごとにその概念が指すものは異なる
相対主義的に考えなさい
相手の価値観を理解しなければ説得力は生まれません

182 名前:デフォルトの名無しさん mailto:sage [2023/03/07(火) 02:21:18.68 ID:oSHTm7sl.net]
・y = ax (a=10である)
aをimmutableと呼ぶかconstantと呼ぶか
・y=f(a) (a=10である)
f(a)をconstantと呼ぶかconstant expressionと呼ぶか

まあ考え方次第だよな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<137KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef