「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていうスレ。
前スレ: 結局C++とRustってどっちが良いの?
https://mevius.5ch.net/test/read.cgi/tech/1677286186/
探検
結局C++とRustってどっちが良いの? 2traits
レス数が1000を超えています。これ以上書き込みはできません。
2023/04/02(日) 00:42:57.53ID:W9/nq+tL
972デフォルトの名無しさん
2023/05/03(水) 19:39:09.58ID:CZOik0F4 何かしらのフレームワーク使ってるならそこに分ける方針とかだいたい書いてんじゃねーの
そういうのが無いならご自由にどうぞ
別に分け方を間違えたからって困ることは無い
そういうのが無いならご自由にどうぞ
別に分け方を間違えたからって困ることは無い
973デフォルトの名無しさん
2023/05/03(水) 20:14:37.30ID:CpOUjLJu それは言いがかりだ!Rustはすばらいぃいいいいと言う人が出て来ないんだけど
自分のような初級三軍質問者の愚問には答えられないんだろうか?
自分のような初級三軍質問者の愚問には答えられないんだろうか?
974デフォルトの名無しさん
2023/05/03(水) 21:54:10.72ID:FqNPXkOF プラクティスがわからないんじゃなくて
結局メカニズムがよく理解出来ませんって話みたいね
ファイルを分けたときに分けたファイルをどうやって使えばいいか分からないってことでいいのかな?
結局メカニズムがよく理解出来ませんって話みたいね
ファイルを分けたときに分けたファイルをどうやって使えばいいか分からないってことでいいのかな?
975デフォルトの名無しさん
2023/05/03(水) 23:29:24.40ID:ZZCdQXOG >>960
Rustはファイル分割の自由度が高く簡単に分割することが可能
分割するか否かは自分やプロジェクトの方針次第
最初はmain.rs一つから始めて進行とともに分割していく方針でも構わない
名前空間としてはファイル名がそのままモジュール名となる
その同名ディレクトリを作ればその下のファイルがサブモジュールになる
いずれもmod foo;と書くだけで使えるようになる
あとはfoo::TypeNameやfoo::boo::func_nameで自由に使える
長くて面倒ならuse foo::boo::func_name;すればfunc_nameで使える
ただしモジュール側ではモジュール外で使えるようにpub宣言が必要
逆に言えばpub宣言しなければモジュール内にプライベートにできる
pub宣言はpub(crate)やpub(super)など公開範囲の制限も可能
以上がモジュール分割
その一部を複数のプロジェクトから使えるライブラリとして独立させたくなったらクレート分割
クレートは並列コンパイル単位にもなるので専属利用でも敢えてクレート分割することもある
他にも構文解析木を入出力とする手続きマクロを作るときも単独クレート化が必須
Rustはファイル分割の自由度が高く簡単に分割することが可能
分割するか否かは自分やプロジェクトの方針次第
最初はmain.rs一つから始めて進行とともに分割していく方針でも構わない
名前空間としてはファイル名がそのままモジュール名となる
その同名ディレクトリを作ればその下のファイルがサブモジュールになる
いずれもmod foo;と書くだけで使えるようになる
あとはfoo::TypeNameやfoo::boo::func_nameで自由に使える
長くて面倒ならuse foo::boo::func_name;すればfunc_nameで使える
ただしモジュール側ではモジュール外で使えるようにpub宣言が必要
逆に言えばpub宣言しなければモジュール内にプライベートにできる
pub宣言はpub(crate)やpub(super)など公開範囲の制限も可能
以上がモジュール分割
その一部を複数のプロジェクトから使えるライブラリとして独立させたくなったらクレート分割
クレートは並列コンパイル単位にもなるので専属利用でも敢えてクレート分割することもある
他にも構文解析木を入出力とする手続きマクロを作るときも単独クレート化が必須
976デフォルトの名無しさん
2023/05/04(木) 00:00:52.77ID:E2F33yJd977デフォルトの名無しさん
2023/05/04(木) 00:27:31.14ID:dgAQoWCg978デフォルトの名無しさん
2023/05/04(木) 00:31:42.11ID:BOGxwae7 >>976
Rustは自由度が高い
分割する時にはモジュール=ファイルにすぎない
一部の言語のようにモジュールの意味や位置付けや使い方を限定していない
さらにコード上(=ファイル上)はモジュールやサブモジュールにあっても公開位置付けは別にできる
例えばpub use foo::Foo;とすることでFooがfooの下にあるにも関わらず直上にあるものとして公開できる
つまりプログラミングするときは完全に自由にファイル分割やディレクトリ分割していくことが可能
それらを公開するときにその分割内部構造を見せたくないならば見せずに整理して公開することが可能
公開するときのモジュールの位置付けとコーディングするときのファイル分割の自由度それぞれが独立に存在できる
Rustは自由度が高い
分割する時にはモジュール=ファイルにすぎない
一部の言語のようにモジュールの意味や位置付けや使い方を限定していない
さらにコード上(=ファイル上)はモジュールやサブモジュールにあっても公開位置付けは別にできる
例えばpub use foo::Foo;とすることでFooがfooの下にあるにも関わらず直上にあるものとして公開できる
つまりプログラミングするときは完全に自由にファイル分割やディレクトリ分割していくことが可能
それらを公開するときにその分割内部構造を見せたくないならば見せずに整理して公開することが可能
公開するときのモジュールの位置付けとコーディングするときのファイル分割の自由度それぞれが独立に存在できる
979デフォルトの名無しさん
2023/05/04(木) 07:51:33.36ID:z+qB+AKQ 新スレ、プレオープン
好きな資料勝手に貼ってくれ
マ板のスレも入れておいたから、適宜御贔屓に
結局C++とRustってどっちが良いの? 3traits
https://mevius.5ch.net/test/read.cgi/tech/1683154196/
好きな資料勝手に貼ってくれ
マ板のスレも入れておいたから、適宜御贔屓に
結局C++とRustってどっちが良いの? 3traits
https://mevius.5ch.net/test/read.cgi/tech/1683154196/
980デフォルトの名無しさん
2023/05/04(木) 08:18:45.38ID:tHpAcWOx Javaとかはその当たり結構うるさいけど他の言語ってそもそもあまりそういうのうるさくないよな。JVM系の言語はJava文化圏の中にあったりクラスファイルの仕様が言語側のモジュールの粒度を規定してしまうけど、そういうのがない言語だとどういう分け方がベストかみんな試行錯誤している期間があったり、ベストプラクティスが結局ない状態になるよな。
俺から見るとGoとかは現代の言語としてはありえないぐらい無法なディレクトリ構成がまかり通ってると思うけど、ああいうのが性に合ってる人もいる。
俺から見るとGoとかは現代の言語としてはありえないぐらい無法なディレクトリ構成がまかり通ってると思うけど、ああいうのが性に合ってる人もいる。
981デフォルトの名無しさん
2023/05/04(木) 09:11:56.85ID:4+acb+xt982デフォルトの名無しさん
2023/05/04(木) 09:18:33.73ID:4+acb+xt 1ファイルが1モジュール限定なら1960~80年代の古代の言語じゃん
ファイルの冒頭でモジュール名やプロシージャー名を指定するあれ
ファイルの冒頭でモジュール名やプロシージャー名を指定するあれ
983デフォルトの名無しさん
2023/05/04(木) 09:23:38.28ID:aSm9nQgp >>979
ありがとう
ありがとう
984デフォルトの名無しさん
2023/05/04(木) 09:28:14.17ID:BOGxwae7985デフォルトの名無しさん
2023/05/04(木) 12:05:42.79ID:XE2Na1jR 自由度が高いからJavaのように何も考えなくてもファイル分割できる指針がなくて困ってるんでしょ
モジュール分割って疎結合高凝集になるようグルーピングしましょうという当たり前の話なんだけどたぶんやったことがないと難しいんだよ
だからどうモジュール分割すべきかなんて小難しいそうなことを考えなくてもファイルを分割できる指針を”ベストプラクティス”という名で求めてるんだと思う
モジュール分割が先にあってそれに合わせてファイル分割するのが本来の姿だから考え方が逆なんだけどね
モジュール分割って疎結合高凝集になるようグルーピングしましょうという当たり前の話なんだけどたぶんやったことがないと難しいんだよ
だからどうモジュール分割すべきかなんて小難しいそうなことを考えなくてもファイルを分割できる指針を”ベストプラクティス”という名で求めてるんだと思う
モジュール分割が先にあってそれに合わせてファイル分割するのが本来の姿だから考え方が逆なんだけどね
986デフォルトの名無しさん
2023/05/04(木) 12:16:56.04ID:UA4lEoz+ >>985
「公開されるモジュール仕様」に対して
「実際にプログラミングする際のファイルやディレクトリ構成」の自由度がどの程度かが焦点だろ
前者の「公開されるモジュール仕様」はプログラミング言語やその機能とは直接関係ない話でありこのスレでも対象外
後者の「実際にプログラミングする際のファイルやディレクトリ構成」の自由度が言語により異なってくる部分
Rustは最大限の自由度がある言語の一つ
「公開されるモジュール仕様」に対して
「実際にプログラミングする際のファイルやディレクトリ構成」の自由度がどの程度かが焦点だろ
前者の「公開されるモジュール仕様」はプログラミング言語やその機能とは直接関係ない話でありこのスレでも対象外
後者の「実際にプログラミングする際のファイルやディレクトリ構成」の自由度が言語により異なってくる部分
Rustは最大限の自由度がある言語の一つ
987デフォルトの名無しさん
2023/05/04(木) 12:27:57.50ID:BxJFarE7 Javaも
クラス大きすぎるとダメだから分けろとか
クラス多すぎるとダメだからまとめろとかパッケージ分けろとか
パッケージまたぐと絡まるから変な分け方するなとか
それなりに悩みはあったと思う
ただC++でも似たような悩みはあるはずだからファイル分割の仕組みの違いで戸惑いがあるのかもしれない
C/C++はソース単位でコンパイルして最後にリンカでくっつけるけど
Rustは全体を分割された1つのソースの塊とみなして一気にコンパイルする感じだから
とりあえず部品から考えるボトムアップ的なアプローチの人は引っ掛かりそう
クラス大きすぎるとダメだから分けろとか
クラス多すぎるとダメだからまとめろとかパッケージ分けろとか
パッケージまたぐと絡まるから変な分け方するなとか
それなりに悩みはあったと思う
ただC++でも似たような悩みはあるはずだからファイル分割の仕組みの違いで戸惑いがあるのかもしれない
C/C++はソース単位でコンパイルして最後にリンカでくっつけるけど
Rustは全体を分割された1つのソースの塊とみなして一気にコンパイルする感じだから
とりあえず部品から考えるボトムアップ的なアプローチの人は引っ掛かりそう
988デフォルトの名無しさん
2023/05/04(木) 12:34:51.67ID:x0Q1J+Im 私の頭がわるいんだろうけどファイル分割は他よりわかりにくかったわ
989デフォルトの名無しさん
2023/05/04(木) 12:47:28.68ID:nFTKSuN5 >>987
どういう方針でモジュールを分けるかはプロジェクトの方針やライブラリの方針でしょう
その方針に対してプログラミング言語によってはモジュール分けやファイル分けやディレクトリ分けに何らかの制限があって方針が引き摺られてしまうかどうかが重要なところでしょう
Rustはそこに制限はないから方針が言語によって引き摺られることはないでしょう
仮にどんなにファイルを分けたとしてもRustではそれとは関係なく外に対して見せずに済みますから外向けと内部構造は互いに自由度があります
>>988
外に対してどう見せるかと内部をどう分けるかを別々に決められるようになっているからその区別する意識を持たないと迷う人が出るかもしれませんね
どういう方針でモジュールを分けるかはプロジェクトの方針やライブラリの方針でしょう
その方針に対してプログラミング言語によってはモジュール分けやファイル分けやディレクトリ分けに何らかの制限があって方針が引き摺られてしまうかどうかが重要なところでしょう
Rustはそこに制限はないから方針が言語によって引き摺られることはないでしょう
仮にどんなにファイルを分けたとしてもRustではそれとは関係なく外に対して見せずに済みますから外向けと内部構造は互いに自由度があります
>>988
外に対してどう見せるかと内部をどう分けるかを別々に決められるようになっているからその区別する意識を持たないと迷う人が出るかもしれませんね
990デフォルトの名無しさん
2023/05/04(木) 13:05:47.30ID:Sq+gJjNT >>986
Javaの1クラス/インターフェースで1ファイルという指針があれば自由度は低いけど考えなくて済むでしょ
Rustではstructの定義とimplをtraitの実装と同じモジュールに入れることもあればtraitを定義してるモジュールのほうにstructのtrait実装を含めることもある
そんなに自由だとどうしていいかわからないからもっとルール(ベストプラクティス)で縛って欲しいというのが最初の質問者の本音だと思うわけ
だとしたら君の返答は的外れじゃないかい?ってこと
Javaの1クラス/インターフェースで1ファイルという指針があれば自由度は低いけど考えなくて済むでしょ
Rustではstructの定義とimplをtraitの実装と同じモジュールに入れることもあればtraitを定義してるモジュールのほうにstructのtrait実装を含めることもある
そんなに自由だとどうしていいかわからないからもっとルール(ベストプラクティス)で縛って欲しいというのが最初の質問者の本音だと思うわけ
だとしたら君の返答は的外れじゃないかい?ってこと
991デフォルトの名無しさん
2023/05/04(木) 13:23:02.85ID:JNVfsZ/B 何でそんなつまらんことで議論してるのか分からんC/C++ユーザの俺
992デフォルトの名無しさん
2023/05/04(木) 13:27:53.50ID:Pbw0n2Gt バカだから
993デフォルトの名無しさん
2023/05/04(木) 13:42:19.29ID:JNVfsZ/B モジュールの分け方なんてC/C++で完成されてると思うんだけども
後発の言語は何が便利になったのかね?
後発の言語は何が便利になったのかね?
994デフォルトの名無しさん
2023/05/04(木) 13:56:22.33ID:i7Oqolfe Rustだと何かができなくて困る、ってことは何もない
Java方式でも他の方式でも何でも各自や所属先やプロジェクトの方針でやればいい
まともなプログラマーは標準ライブラリや有名クレートのソースを読むのでRustでの普通の流儀を分かっている
参考になるものが公開されているのに見ずに文句を言うバカは放置しとけ
Java方式でも他の方式でも何でも各自や所属先やプロジェクトの方針でやればいい
まともなプログラマーは標準ライブラリや有名クレートのソースを読むのでRustでの普通の流儀を分かっている
参考になるものが公開されているのに見ずに文句を言うバカは放置しとけ
995デフォルトの名無しさん
2023/05/04(木) 14:17:24.34ID:VOb3FI4m rustだけで見ていてはダメだな。
CとRustが混在するprojectを考えないと本当の用途は分からない
CとRustが混在するprojectを考えないと本当の用途は分からない
996デフォルトの名無しさん
2023/05/04(木) 14:18:33.91ID:c9bfGq1+ リファレンス読む前に、概要を教わりたい派だから、ゆるい議論は役に立ってるよ
文句は言わないから
文句は言わないから
997デフォルトの名無しさん
2023/05/04(木) 14:43:36.62ID:Rp6nFyYP >>993
完成してんのにC++20でも変更するのかよw
完成してんのにC++20でも変更するのかよw
998デフォルトの名無しさん
2023/05/04(木) 14:46:43.50ID:7/I9T8P9 >>997
モジュール化に関わる変更あったっけ?
モジュール化に関わる変更あったっけ?
999デフォルトの名無しさん
2023/05/04(木) 14:48:32.70ID:K35qCUKZ RustのmoduleはPythonと似てる
違うのは
Rustはmodule.rsと同じsubdirectory(./module)を造ってsubmodule.rsを入れる
module.rsにsubmoduleを描く人もいる
Pythonはsubdirectory(./module)を造って__init__.pyを描く
__init__.pyの中にsubmoduleを描く人もいるし./module/submodule.pyを描く人もいる
違うのは
Rustはmodule.rsと同じsubdirectory(./module)を造ってsubmodule.rsを入れる
module.rsにsubmoduleを描く人もいる
Pythonはsubdirectory(./module)を造って__init__.pyを描く
__init__.pyの中にsubmoduleを描く人もいるし./module/submodule.pyを描く人もいる
1000デフォルトの名無しさん
2023/05/04(木) 14:49:18.87ID:K35qCUKZ10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 32日 14時間 6分 22秒
新しいスレッドを立ててください。
life time: 32日 14時間 6分 22秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- 【北海道】帯広vs釧路 不良グループが30人規模の大乱闘 廃墟での肝試しで鉢合わせトラブルに…自称解体工の男ら逮捕 [ぐれ★]
- 【福岡】ミカンの木に逆さ吊りになっていた高齢の男性が死亡 [雑用縞工作★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- ネトウヨ「日本人の命を守るために中国とケンカしろ!え、薬が作れない?じゃあ死ね!」 こいつらの言う安全保障とはいったい何なのか? [314039747]
- 東大名誉教授「中国は誤った宣伝を繰り広げ、対立を煽り、経済の失敗による国内の不満を日本に向けている」 [903292576]
- 【悲報】Suica、セキュリティを突破されたのが販売されはじめる [347751896]
- 【悲報】米問屋「助けて!米がとんでもない量余ってるのに全然売れないの!でも絶対値下げしたくない…どうしたらいいの…」 [802034645]
- コンビニ店長、ついにキレる「なんであなた達にトイレを貸さないといけないんですか?私達はトイレレンタル業ではありません」 [329329848]
- 【高市悲報】大暴落 [115996789]
