スレタイ以外の言語もok
前スレ
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1629590343/
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
2021/11/28(日) 16:59:19.16ID:gZqbEyz/
2022/01/31(月) 10:12:07.29ID:qlFEomu1
>>89
C/C++の可読性の悪さは
Rustで改善されていてとても使いやすくなっている
GC依存で設計された既存システムをそのまま移植するのは無謀だが
最初からGCに依存せずに設計が可能でありRustなら可読性が問題になることはない
C/C++の可読性の悪さは
Rustで改善されていてとても使いやすくなっている
GC依存で設計された既存システムをそのまま移植するのは無謀だが
最初からGCに依存せずに設計が可能でありRustなら可読性が問題になることはない
2022/02/01(火) 01:49:52.13ID:vhj8p7kX
自分はRustのCargoとその気になればunsafeで自由に書けるのが気に入ってる
Rustはとにかく美しいと思うな
Rustはとにかく美しいと思うな
2022/02/01(火) 01:53:40.31ID:0bEAn4zq
たしかに、Cargoらへんのエコシステムに関してはC++とは勝負にすらならないな
npmを反面教師にしたのかな、よくできてるよね
npmを反面教師にしたのかな、よくできてるよね
2022/02/01(火) 14:13:16.30ID:Az2aYbYt
Rustが美しいと思うのはどういう点なのか、具体的に聞きたくなる。これはC/C++と比べてる話じゃなく現代的な言語の話で
無駄にタイプ量が多くマクロと言語が一貫してなく、アトリビュートも独立しおり言語との一貫性が全くない
無駄にタイプ量が多くマクロと言語が一貫してなく、アトリビュートも独立しおり言語との一貫性が全くない
2022/02/01(火) 14:17:41.49ID:Az2aYbYt
例えば const fnやコンパイル時定数などはコンパイル時にコードを動かして計算したりするが、一方でアトリビュートで
#[cfg(unix)]とかやったりして思想がバラバラ、まあ破綻はしてないしC/C++のマクロなんかと比べれば100倍ましだけど
#[cfg(unix)]とかやったりして思想がバラバラ、まあ破綻はしてないしC/C++のマクロなんかと比べれば100倍ましだけど
2022/02/01(火) 14:19:22.77ID:fJKShZ3h
2022/02/01(火) 15:56:11.68ID:aP+3H5wQ
2022/02/01(火) 19:27:41.48ID:vhj8p7kX
2022/02/02(水) 09:03:27.50ID:j07gQdao
2022/02/02(水) 20:32:31.23ID:yDHN0aKU
100デフォルトの名無しさん
2022/02/03(木) 02:33:37.86ID:u6HUT2aq もしかしてrustってめちゃくちゃ完成度高くね?
バックエンドだけじゃなくて
wasmでブラウザのフロントエンドにも進出してくるっぽいし
typescriptのシェアも奪いそう
バックエンドだけじゃなくて
wasmでブラウザのフロントエンドにも進出してくるっぽいし
typescriptのシェアも奪いそう
101デフォルトの名無しさん
2022/02/03(木) 11:10:49.98ID:6/uRDE/t Go人気らしいけど嫌い
やっぱりC++使いはRustに行くべきなんかな
やっぱりC++使いはRustに行くべきなんかな
102デフォルトの名無しさん
2022/02/03(木) 11:48:25.31ID:2zDY1ewV Rust、アルゴリズム書くのに超絶向いてないよ。
103デフォルトの名無しさん
2022/02/03(木) 13:51:46.29ID:I6DodtQJ アルゴリズム書くのは普通疑似言語でやるわな
104デフォルトの名無しさん
2022/02/03(木) 17:00:23.94ID:2zDY1ewV >アルゴリズム書くのは普通疑似言語でやるわな
何言ってんの?
何言ってんの?
105デフォルトの名無しさん
2022/02/03(木) 18:00:00.71ID:I6DodtQJ アルゴリズム自体の記述には自然言語か疑似言語かpythonみたいなスクリプト言語使うのが多いのでは
「アルゴリズムを書く」ってアルゴリズムを使ったプログラムを書くという意味?
そうだとしたら対象が広すぎるのでもうちょっと具体化して欲しい
「アルゴリズムを書く」ってアルゴリズムを使ったプログラムを書くという意味?
そうだとしたら対象が広すぎるのでもうちょっと具体化して欲しい
106デフォルトの名無しさん
2022/02/03(木) 18:01:17.86ID:2zDY1ewV そんなしょーもない誤魔化しはしなくていいよ。
107デフォルトの名無しさん
2022/02/03(木) 18:07:41.52ID:I6DodtQJ アルゴリズムと一概に言ったってソートみたいなのは別にrustでも普通に書けるでしょ
どういうアルゴリズムを実装しようとして困ったのか教えて欲しい
どういうアルゴリズムを実装しようとして困ったのか教えて欲しい
108デフォルトの名無しさん
2022/02/03(木) 18:24:36.45ID:2zDY1ewV じゃあB-tree、赤黒木、ダイクストラ、フィボナッチtree、なんでもいいから書いてみりゃいいよ。
109デフォルトの名無しさん
2022/02/03(木) 18:28:40.55ID:I6DodtQJ 木構造やグラフ構造が書きづらいって話かな
110デフォルトの名無しさん
2022/02/03(木) 18:59:23.99ID:Ajxf7YAY 変な日本語だな
アルゴリズムの勉強には向いてない、ということを言いたいんだろうけど
アルゴリズムの勉強には向いてない、ということを言いたいんだろうけど
111デフォルトの名無しさん
2022/02/03(木) 19:05:25.62ID:2zDY1ewV どうでもいいイチャモンづけにこだわるやつだな。。
だから実際組んで見ろって。。何もしないくせに。
だから実際組んで見ろって。。何もしないくせに。
112デフォルトの名無しさん
2022/02/03(木) 19:12:44.13ID:I6DodtQJ 新しいrustの弱点の話聞けるかと思ったら結局いつものグラフ構造の話だったので興味を失ってしまっただけです
113デフォルトの名無しさん
2022/02/03(木) 19:23:59.05ID:5yAN5s9n114デフォルトの名無しさん
2022/02/03(木) 19:34:47.62ID:I6DodtQJ115デフォルトの名無しさん
2022/02/03(木) 19:51:02.49ID:5yAN5s9n116デフォルトの名無しさん
2022/02/03(木) 19:57:30.61ID:uKT4xKIF >>113
言語と切り離して論理的に考えた時に
安全な構成と操作ならばRustでも簡単
危険な構成や操作ならばRustでは出来ない(unsafe使えばCと同じ操作が可能)
さらに加えて
危険な構成や操作に成り得るが
限られた一貫した用い方をしている限り安全な場合
新たな型を作って危険な操作を内部に閉じ込めてしまい
安全な操作のみ外部に提供することで利用者はunsafeを用いずに済むことができる
Rustの標準ライブラリもそのようにして作られている
言語と切り離して論理的に考えた時に
安全な構成と操作ならばRustでも簡単
危険な構成や操作ならばRustでは出来ない(unsafe使えばCと同じ操作が可能)
さらに加えて
危険な構成や操作に成り得るが
限られた一貫した用い方をしている限り安全な場合
新たな型を作って危険な操作を内部に閉じ込めてしまい
安全な操作のみ外部に提供することで利用者はunsafeを用いずに済むことができる
Rustの標準ライブラリもそのようにして作られている
117デフォルトの名無しさん
2022/02/03(木) 23:53:53.52ID:2zDY1ewV >>112
毎回そうやって曖昧にして逃げてるんだね。進歩ないね。
毎回そうやって曖昧にして逃げてるんだね。進歩ないね。
118デフォルトの名無しさん
2022/02/04(金) 00:36:32.80ID:uF1Qc9S6 >>117
そこはグラフも表現できないクソ雑魚言語乙ってあおるべきなのになんで下手くそな人格攻撃してしまうのか
そこはグラフも表現できないクソ雑魚言語乙ってあおるべきなのになんで下手くそな人格攻撃してしまうのか
119デフォルトの名無しさん
2022/02/04(金) 12:24:28.50ID:gER3CGZG 具体的にするならミュータブルなグラフ構造をスレッドセーフに扱うのは人類が思っている以上に難しいことで、それを言語側の制約で扱うならこうならざるを得ないくらい難しい問題だ、ということではないの?
120デフォルトの名無しさん
2022/02/04(金) 13:24:42.43ID:ZD21CbAH 例えば何かノードをたどっている最中にいつの間にか戻り先が変わってるとかいちいちケアしてコード書けないから、結局排他処理やスナップショットすりなんらかの工夫が必要
データ構造の操作だけ完璧に仕上げても応用きかないからそこまで深く考える必要ない
データ構造の操作だけ完璧に仕上げても応用きかないからそこまで深く考える必要ない
121デフォルトの名無しさん
2022/02/04(金) 15:25:21.40ID:ZnSz9FK0 そうね
スレッドセーフを諦めれば他の言語に近いくらいに簡単にできるのではないか
スレッドセーフを諦めれば他の言語に近いくらいに簡単にできるのではないか
122デフォルトの名無しさん
2022/02/04(金) 15:44:53.55ID:E1vT/glc C言語→Rustするトランスパイラーですべて解決じゃね?
Rustだからメモリも安心安全だぞ
Rustだからメモリも安心安全だぞ
123デフォルトの名無しさん
2022/02/04(金) 17:43:24.41ID:7ZNTSlZY >>95-99
今どきのコンパイル型言語で型推論が強力でない言語なんてありますか?#[attribute(key = "value", value2)]とか書いててタイプ量は少ない?
最近は自作のアトリビュートが書けるようになりましたが、普通は言語サブセットは小さくして、そのサブセット言語でアトリビュートを実現してれば
このように無理やりカスタムアトリビュートを出す必要はなかった。
一番の最低なところはCargoだと思う、これのせいでコンパイルが異常に遅い。Pythonでもpipやデコレーターはありますがホントにマンセーですね
マクロの定義文法も変換が主たるものだから別記法が理にかなっているとの事ですが、設計段階では、そんな事は一言もホアレは
言ってません。0.2でクラスが導入され、0.3でインターフェースが導入され、0.4でトレイトが出来てクラスが削除された。1.0以降も酷い互換性の
破壊が続いて、安定しだしたのは1.20以降です。
個人的に気に入らないのはfunctionはfnとするのにmutableはmutと使用頻度が高いものがfnよりタイプ量が多い事。「::」も無意味に
2回打たせる意味が分からない。アトリビュートも#[...]とか異常に無駄。ほかの言語のようにパターン束縛表現があるので@は使えませんが
「#」だけで良いでしょう・・・
確かにマクロ呼び出しは「!」とわざと区別するように思想が影響していますが、マクロ中の$はマクロ展開ではコンパイラを単純化させて
コンパイルを速くするためだけにプログラマへ負担を押し付けているだけです。ただ「!」もNeverと別の意味があり、暗黙の型強制なんて
わざと敷居を高くすることに言語設計者は考えているとしか思えない
Occamで最初のバージョンが作られたけど、インデントスタイルのオフサイドじゃなくC/C++風にしたのは、好みで{}スタイルを好む人が
多いから(タイプ量は増えますが)許容範囲でしょうが・・・
今どきのコンパイル型言語で型推論が強力でない言語なんてありますか?#[attribute(key = "value", value2)]とか書いててタイプ量は少ない?
最近は自作のアトリビュートが書けるようになりましたが、普通は言語サブセットは小さくして、そのサブセット言語でアトリビュートを実現してれば
このように無理やりカスタムアトリビュートを出す必要はなかった。
一番の最低なところはCargoだと思う、これのせいでコンパイルが異常に遅い。Pythonでもpipやデコレーターはありますがホントにマンセーですね
マクロの定義文法も変換が主たるものだから別記法が理にかなっているとの事ですが、設計段階では、そんな事は一言もホアレは
言ってません。0.2でクラスが導入され、0.3でインターフェースが導入され、0.4でトレイトが出来てクラスが削除された。1.0以降も酷い互換性の
破壊が続いて、安定しだしたのは1.20以降です。
個人的に気に入らないのはfunctionはfnとするのにmutableはmutと使用頻度が高いものがfnよりタイプ量が多い事。「::」も無意味に
2回打たせる意味が分からない。アトリビュートも#[...]とか異常に無駄。ほかの言語のようにパターン束縛表現があるので@は使えませんが
「#」だけで良いでしょう・・・
確かにマクロ呼び出しは「!」とわざと区別するように思想が影響していますが、マクロ中の$はマクロ展開ではコンパイラを単純化させて
コンパイルを速くするためだけにプログラマへ負担を押し付けているだけです。ただ「!」もNeverと別の意味があり、暗黙の型強制なんて
わざと敷居を高くすることに言語設計者は考えているとしか思えない
Occamで最初のバージョンが作られたけど、インデントスタイルのオフサイドじゃなくC/C++風にしたのは、好みで{}スタイルを好む人が
多いから(タイプ量は増えますが)許容範囲でしょうが・・・
124デフォルトの名無しさん
2022/02/04(金) 17:50:56.66ID:ZD21CbAH 趣味・好みじゃなくて問題があるという話なら
なぜ本家じゃなくここに書くw
なぜ本家じゃなくここに書くw
125デフォルトの名無しさん
2022/02/04(金) 18:12:52.54ID:3IKuZnie 0.2からおっかけてたのならattributeの文法議論の時にそれ主張しとけば良かったのに
あとcargoのせいでコンパイルが遅くなるというのはどういうこと?
パッケージマネージャーがあるせいでcrateが細分化されてリンク時間が延びることを言いたい?
あとcargoのせいでコンパイルが遅くなるというのはどういうこと?
パッケージマネージャーがあるせいでcrateが細分化されてリンク時間が延びることを言いたい?
126デフォルトの名無しさん
2022/02/04(金) 19:21:26.70ID:b3SZZj/4 >>123
Rust 1.0がリリースされた2015年よりも昔の0.x時代の話で叩いても無意味ですぜ
あとは1文字タイプ量が多いとかどうでもよい話ばかり
言語機能については批判がないということはRustの優秀性を認めてるわけか
Rust 1.0がリリースされた2015年よりも昔の0.x時代の話で叩いても無意味ですぜ
あとは1文字タイプ量が多いとかどうでもよい話ばかり
言語機能については批判がないということはRustの優秀性を認めてるわけか
127デフォルトの名無しさん
2022/02/04(金) 23:40:44.00ID:V2NB9pIC Rust並に実行速くて
Rustよりもプログラミングしやすい言語がない
結果として現時点でのベストな選択肢はRust
Rustよりもプログラミングしやすい言語がない
結果として現時点でのベストな選択肢はRust
128デフォルトの名無しさん
2022/02/05(土) 00:06:09.72ID:zObCURfd c言語の型宣言も後置にしてくれねーかな。
129デフォルトの名無しさん
2022/02/05(土) 08:13:51.74ID:N1G1oPSC Rustの唯一の欠点は、メモリ管理をしないといけないところだな。
ここも選択肢を用意してくれれば良いのに。
ここも選択肢を用意してくれれば良いのに。
130デフォルトの名無しさん
2022/02/05(土) 10:00:32.68ID:v7hUCDwa 手動でメモリ管理したい人向けの言語に何言ってんだ
131デフォルトの名無しさん
2022/02/05(土) 12:03:26.16ID:N1G1oPSC そうは言っても、メモリ管理したい人って需要少なくない?
今のままでは、C.C++代替以上にはなれない気がする。
今のままでは、C.C++代替以上にはなれない気がする。
132デフォルトの名無しさん
2022/02/05(土) 12:54:51.75ID:Oj0LBzT3 それ以上に何を求めるってんだ
133デフォルトの名無しさん
2022/02/05(土) 13:14:08.46ID:vyyfl1Q+ 言うほどメモリ管理してるか?RAIIとスマポに頼りっきりのくせに
参照カウンタとかもはや実質的に確定的ですらないやん
参照カウンタとかもはや実質的に確定的ですらないやん
134デフォルトの名無しさん
2022/02/05(土) 14:54:37.48ID:WBcMnxrA135デフォルトの名無しさん
2022/02/05(土) 15:02:39.39ID:WBcMnxrA その上でRustは現代的なプログラミングパラダイムが洗練されて採り入れられているため書きやすい
つまりちょっとしたメモリ管理を意識してプログラミングするだけで他より数倍〜十倍速くなることもあるのだから
例えばサーバー経費を何分の1に激減させつつレスポンスも良いという実利的なメリットにも効いてくる
つまりちょっとしたメモリ管理を意識してプログラミングするだけで他より数倍〜十倍速くなることもあるのだから
例えばサーバー経費を何分の1に激減させつつレスポンスも良いという実利的なメリットにも効いてくる
136デフォルトの名無しさん
2022/02/05(土) 17:29:39.72ID:T2gEmbbx137デフォルトの名無しさん
2022/02/05(土) 17:48:34.36ID:WBcMnxrA138デフォルトの名無しさん
2022/02/05(土) 18:36:32.12ID:XET6D0Ck RAIIとGCは対立する概念じゃないがな。C++/CLIで共存できてる。
139デフォルトの名無しさん
2022/02/05(土) 20:00:06.29ID:WBcMnxrA RAII言語は必要があれば言語の枠外でGCライブラリなどを用いてGC利用も可能
その逆にGC言語はRAII利用が不可能
その逆にGC言語はRAII利用が不可能
140デフォルトの名無しさん
2022/02/05(土) 20:40:28.08ID:XET6D0Ck それはRAIIの機能がない言語ではRAIIが使えないと言っているに等しい。
141デフォルトの名無しさん
2022/02/05(土) 21:10:31.12ID:FjY4Ra8B 循環参照もプログラマが自分でWeak<T>使ってなんとかするっていう言語だ
面構えが違う
面構えが違う
142デフォルトの名無しさん
2022/02/07(月) 00:03:08.00ID:VGiKPeyV >>126
で、Rustって駄目ブラウザ以外に何作れんの?お前何作ってんの?内容ゼロで優秀性なんて言い出すウンコのコード見せろよ
で、Rustって駄目ブラウザ以外に何作れんの?お前何作ってんの?内容ゼロで優秀性なんて言い出すウンコのコード見せろよ
143デフォルトの名無しさん
2022/02/07(月) 00:13:06.30ID:fEIDu85e >>142
Deno
Deno
144デフォルトの名無しさん
2022/02/07(月) 02:07:52.70ID:AIR0UfFP 数年前ならいざ知らず未だにRustに実用プロダクトあるのという
煽りは痛い人になっちゃったな
煽りは痛い人になっちゃったな
145デフォルトの名無しさん
2022/02/07(月) 03:24:58.20ID:P1hmcD3J なんかRuby界隈みたいに知識のアップデート止まってる人たち多いね
もうRustなんてそこら中で使われまくってんのに
もうRustなんてそこら中で使われまくってんのに
146デフォルトの名無しさん
2022/02/07(月) 09:18:42.53ID:EcWsuH+Z Rustは低レイヤやライブラリから徐々に侵食していく感じだからなかなか気付かれにくいかもね
Cのライブラリと思ってたら実装はRustに置き換わってた、とかよくある
Cのライブラリと思ってたら実装はRustに置き換わってた、とかよくある
147デフォルトの名無しさん
2022/02/07(月) 12:33:27.96ID:JxckRG42 「よくある」んなら具体例をどうぞ
148デフォルトの名無しさん
2022/02/07(月) 12:54:30.50ID:E3rdzbcC 自分はGNOMEとFirefoxしか知らんな
既存の実装がrustに置き換わるというよりrustで書き直された代替実装が登場してる印象
既存の実装がrustに置き換わるというよりrustで書き直された代替実装が登場してる印象
149デフォルトの名無しさん
2022/02/07(月) 12:56:04.35ID:E3rdzbcC VSCodeの検索にripgrepが使われるようになったのも広義の置き換えとは言えるか?
150デフォルトの名無しさん
2022/02/07(月) 13:02:36.93ID:AIR0UfFP この手の手合はそんなものは下らない一般的じゃないと
言い続けるだけだからなあ
言い続けるだけだからなあ
151デフォルトの名無しさん
2022/02/07(月) 13:48:06.41ID:/AGVY34O curlとかpycaもかな
この手のは最初に入るときはレガシープラットフォーム対応の問題とかで話題になるけど
一度入ってしまうと採用が広がっても特に取り上げられることはないからなぁ
この手のは最初に入るときはレガシープラットフォーム対応の問題とかで話題になるけど
一度入ってしまうと採用が広がっても特に取り上げられることはないからなぁ
152デフォルトの名無しさん
2022/02/07(月) 14:27:21.78ID:Y0LlvzrX pythonのファンシーコンソール風ゲームライブラリであるpyxelの実装がrustで書かれてて、お?ってなったわ
153デフォルトの名無しさん
2022/02/07(月) 15:19:33.56ID:yxxEmbcM その言語で書き直された〜みたいなことが話題になるうちはほぼ広がってないと考えて良いわ。
154デフォルトの名無しさん
2022/02/07(月) 15:43:24.90ID:AIR0UfFP >>153
こうなったらOKというお前の合格ラインは?
こうなったらOKというお前の合格ラインは?
155デフォルトの名無しさん
2022/02/07(月) 17:52:12.40ID:JxckRG42156デフォルトの名無しさん
2022/02/07(月) 18:19:47.49ID:AIR0UfFP157デフォルトの名無しさん
2022/02/07(月) 22:00:41.23ID:E3rdzbcC >>153
スクリプト言語のボトルネック部分をCで書き直さしたなんてよく話題になるからCもマイナー言語ということで良いか?
スクリプト言語のボトルネック部分をCで書き直さしたなんてよく話題になるからCもマイナー言語ということで良いか?
158デフォルトの名無しさん
2022/02/07(月) 22:12:11.68ID:jZIVUuZq Rustは現代的なマルチパラダイムが洗練されて採り入れられているためプログラミングがしやすい
それなのにCやC++のように最高速で動いてくれて快適かつリソースや経費の節減となってくれる
さらにオマケとしてメモリ安全やデータ競合安全などの保証まで付いてくる
それなのにCやC++のように最高速で動いてくれて快適かつリソースや経費の節減となってくれる
さらにオマケとしてメモリ安全やデータ競合安全などの保証まで付いてくる
159デフォルトの名無しさん
2022/02/07(月) 22:14:03.66ID:ybgdxcXS まあまあ他人に期待するのではなく自分で何か書けばいいだけでしょ
今なら車輪の再発明と叩かれることもないだろう
今なら車輪の再発明と叩かれることもないだろう
160デフォルトの名無しさん
2022/02/07(月) 22:42:44.19ID:JxckRG42 「よくある」はずなのダンマリw
161デフォルトの名無しさん
2022/02/08(火) 01:03:57.80ID:v5+/0O15 いうほどランタイム速度を必要とするようなアプリ、どいつもこいつも書いてないってのが現実。
はったりかましたバカはよくいるけど。
はったりかましたバカはよくいるけど。
162デフォルトの名無しさん
2022/02/08(火) 01:36:44.45ID:VTVvKaZV だいたいのアプリはAPI呼び出しの塊だからアプリ自体が実行時間のボトルネックになることはレアかもね
163デフォルトの名無しさん
2022/02/08(火) 10:12:32.37ID:PiQ5+lbT Nimを使って作られたゲームを紹介しよう。
https://goodboygalaxy.com/
ゲームボーイアドバンス向けに作られた2Dアクションゲーム。
https://store.steampowered.com/app/1444480/Turing_Complete/
論理回路を組み立てて自作CPUを作るゲーム。Godotっていうゲームエンジンが使われている。
https://goodboygalaxy.com/
ゲームボーイアドバンス向けに作られた2Dアクションゲーム。
https://store.steampowered.com/app/1444480/Turing_Complete/
論理回路を組み立てて自作CPUを作るゲーム。Godotっていうゲームエンジンが使われている。
164デフォルトの名無しさん
2022/02/09(水) 13:13:49.61ID:6TuSvhfg >>157
そんなこといちいちドやって報告しないって意味だよ。どこぞの言語と違ってな。
そんなこといちいちドやって報告しないって意味だよ。どこぞの言語と違ってな。
165デフォルトの名無しさん
2022/02/09(水) 13:57:31.22ID:vgc3U9wf >>164
へー、リリースノートとかにも載せずにしれっと更新するのが世の中では当たり前なのね
へー、リリースノートとかにも載せずにしれっと更新するのが世の中では当たり前なのね
166デフォルトの名無しさん
2022/02/09(水) 13:58:40.10ID:YiTBO+kR >>164 CからRustに書き直されることはあっても逆は無いから当然だろ
167デフォルトの名無しさん
2022/02/09(水) 21:57:32.65ID:FZ8wgwBk まっ、Cはこれだけ広範囲に使われているからね。基礎教養みたいなもの。
知っていて、使えて当たり前。
Rustでなにか画期的に高速化されるわけでもないし、コーディングの量が圧倒的に減るわけでもない。Pythonのように特定分野で格段の強みがあるわけでもなし。
メモリ安全性といっても、それが課題になってくるほど大きなプロジェクトに関わってるわけでもないしなぁ・・・
組み込み的にはオブジェクト志向な方がハードウェアと馴染みがいいって感じもあるかな。
知っていて、使えて当たり前。
Rustでなにか画期的に高速化されるわけでもないし、コーディングの量が圧倒的に減るわけでもない。Pythonのように特定分野で格段の強みがあるわけでもなし。
メモリ安全性といっても、それが課題になってくるほど大きなプロジェクトに関わってるわけでもないしなぁ・・・
組み込み的にはオブジェクト志向な方がハードウェアと馴染みがいいって感じもあるかな。
168デフォルトの名無しさん
2022/02/09(水) 23:51:15.16ID:Th41z547169デフォルトの名無しさん
2022/02/10(木) 02:47:32.09ID:rtSKPHyc170デフォルトの名無しさん
2022/02/10(木) 08:14:50.21ID:03eq58Oj >>169
相手にしちゃだめ
相手にしちゃだめ
171デフォルトの名無しさん
2022/02/10(木) 12:40:20.38ID:tTxcUdMu デバイスドライバーみたいなソフトウェアだと、linuxのVFSみたいなインターフェイスを意識するのが普通だから
オブジェクト指向や関数ポインタ渡しが普通。
動的に操作方法を変える必要性が大きいものはこういう仕組みは必要になる。
オブジェクト指向や関数ポインタ渡しが普通。
動的に操作方法を変える必要性が大きいものはこういう仕組みは必要になる。
172デフォルトの名無しさん
2022/02/10(木) 12:43:32.46ID:ED4fd292 そういやRustって、コールスタック重視なのになんで所有権移動をデフォルトにしたのかね?
スタックにデータがあるなら、戻ってくるのを想定して借用をデフォルトにした方が効率良い気がするけど。
スタックにデータがあるなら、戻ってくるのを想定して借用をデフォルトにした方が効率良い気がするけど。
173デフォルトの名無しさん
2022/02/10(木) 13:01:13.03ID:UEcyIvoW 値渡し警察「参照渡しは存在しない。あるのは借用<T>の値渡しだけだ」
174デフォルトの名無しさん
2022/02/10(木) 19:06:35.96ID:pZ8EtH2T >>172
そこはRustでは最適化される
例えば大きな構造体 struct Foo { 略 } があったとして
fn main() {
let foo = sub1();
}
fn sub1() -> Foo {
let foo1 = sub2();
return foo1;
}
fn sub2() -> Foo {
let foo2 = Foo { 略 }; // 上述の大きな構造体
return foo2;
}
と多段の関数の深いところから大きな構造体を返すとする
(注: 他言語の人にもわかりやすく敢えて「return」を明記してます)
Rustではこれは最適化されて
深いsub2()の変数foo2の格納場所はmain()のスタックの位置となる
特に今回の場合だと次々に渡していくだけなので
変数foo2のアドレスとfoo1のアドレスとfooのアドレスは一致する
(もちろんこのコードでヒープは一切利用されない)
つまり返り値(の格納場所)をポインタ渡ししているのと同じことになる
C言語ではそれを自分でコードとして記述しなければならないが
Rustでは概念上や記述コード上は「値返し」でシンプルにわかりやすく
実行コードでは最適化されて「返り値の格納場所を参照渡し」になる
もちろん小さな型を返す場合は実行コードも効率よく「値返し」のままである
そこはRustでは最適化される
例えば大きな構造体 struct Foo { 略 } があったとして
fn main() {
let foo = sub1();
}
fn sub1() -> Foo {
let foo1 = sub2();
return foo1;
}
fn sub2() -> Foo {
let foo2 = Foo { 略 }; // 上述の大きな構造体
return foo2;
}
と多段の関数の深いところから大きな構造体を返すとする
(注: 他言語の人にもわかりやすく敢えて「return」を明記してます)
Rustではこれは最適化されて
深いsub2()の変数foo2の格納場所はmain()のスタックの位置となる
特に今回の場合だと次々に渡していくだけなので
変数foo2のアドレスとfoo1のアドレスとfooのアドレスは一致する
(もちろんこのコードでヒープは一切利用されない)
つまり返り値(の格納場所)をポインタ渡ししているのと同じことになる
C言語ではそれを自分でコードとして記述しなければならないが
Rustでは概念上や記述コード上は「値返し」でシンプルにわかりやすく
実行コードでは最適化されて「返り値の格納場所を参照渡し」になる
もちろん小さな型を返す場合は実行コードも効率よく「値返し」のままである
175デフォルトの名無しさん
2022/02/10(木) 19:53:19.62ID:HLYz9uYe >174
いや、RVOの話じゃなくて、
スタックにあるオブジェクトの所有権を関数呼び出し先に移動するのを
デフォルトにした設計的な意図は何なんだろう
という話。
継続を第一級オブジェクトとしてサポートするのでもなければ
サブルーチンはいずれリターンしてくるんだから、スタックに積んだ
オブジェクトも呼び出し先に所有権を移動しないで持ち続けるのが
自然な感じがするんだよね。
それをわざわざ移動してスタックの奥で破棄する(=スタックに残骸が残る)
ようにしたのはなんでかね、と。
いや、RVOの話じゃなくて、
スタックにあるオブジェクトの所有権を関数呼び出し先に移動するのを
デフォルトにした設計的な意図は何なんだろう
という話。
継続を第一級オブジェクトとしてサポートするのでもなければ
サブルーチンはいずれリターンしてくるんだから、スタックに積んだ
オブジェクトも呼び出し先に所有権を移動しないで持ち続けるのが
自然な感じがするんだよね。
それをわざわざ移動してスタックの奥で破棄する(=スタックに残骸が残る)
ようにしたのはなんでかね、と。
176デフォルトの名無しさん
2022/02/10(木) 20:19:32.65ID:rtSKPHyc >>175
ヒープにあるオブジェクトだと deep copy にコストかかるから shallow copy (move) をデフォルトにして
コストかかる処理はソースコード上明確になるようにしたかったからだと思う
ヒープにあるオブジェクトだと deep copy にコストかかるから shallow copy (move) をデフォルトにして
コストかかる処理はソースコード上明確になるようにしたかったからだと思う
177デフォルトの名無しさん
2022/02/10(木) 20:31:58.46ID:HLYz9uYe >176
Rustもなんだかんだ言ってヒープ使用を想定している、ということかね。
それなら所有権移動をデフォルトにした理由は判る。
Rustもなんだかんだ言ってヒープ使用を想定している、ということかね。
それなら所有権移動をデフォルトにした理由は判る。
178デフォルトの名無しさん
2022/02/10(木) 20:36:51.31ID:zC9/cVAd https://www.reddit.com/r/rust/comments/fa9pkp/what_is_the_motivation_behind_default_move/
このスレで作者が答えているけど、すでに参照を示す&が広く使われてるのにデフォルトを借用にすると、moveを示すために「非参照演算子」みたいなものが必要になって整合性が取れないから、とのこと
あとはスタックにどう置いてどうアクセスするかはコンパイラの最適化の問題であって
言語のセマンティクスとは別、みたいな話も
このスレで作者が答えているけど、すでに参照を示す&が広く使われてるのにデフォルトを借用にすると、moveを示すために「非参照演算子」みたいなものが必要になって整合性が取れないから、とのこと
あとはスタックにどう置いてどうアクセスするかはコンパイラの最適化の問題であって
言語のセマンティクスとは別、みたいな話も
179デフォルトの名無しさん
2022/02/10(木) 20:48:03.49ID:pZ8EtH2T >>175
Rustではそんな無駄なことはしていないので大丈夫
まずメソッド定義は以下の3つの方法がある
(1) fn method1(self: Self, 引数)
(2) fn method1(self: &Self, 引数)
(3) fn method1(self: &mut Self, 引数)
Selfは自分の型を示す特別な型であり省略して以下のように略記も可能
(1) fn method1(self, 引数)
(2) fn method1(&self, 引数)
(3) fn method1(&mut self, 引数)
ここで>>175が最初に言っている方法は(1)のケース
参照しか利用しないメソッドなれば(2)のように定義して所有権は移動しない
参照を利用して書き換えるならば(3)のように定義して所有権は移動しない
そして所有権を移動させたいメソッドのみ(1)の定義を用いる
この3つの区別があるためRustでは無駄なことは起きない
Rustではそんな無駄なことはしていないので大丈夫
まずメソッド定義は以下の3つの方法がある
(1) fn method1(self: Self, 引数)
(2) fn method1(self: &Self, 引数)
(3) fn method1(self: &mut Self, 引数)
Selfは自分の型を示す特別な型であり省略して以下のように略記も可能
(1) fn method1(self, 引数)
(2) fn method1(&self, 引数)
(3) fn method1(&mut self, 引数)
ここで>>175が最初に言っている方法は(1)のケース
参照しか利用しないメソッドなれば(2)のように定義して所有権は移動しない
参照を利用して書き換えるならば(3)のように定義して所有権は移動しない
そして所有権を移動させたいメソッドのみ(1)の定義を用いる
この3つの区別があるためRustでは無駄なことは起きない
180デフォルトの名無しさん
2022/02/10(木) 21:34:34.23ID:3aizDYBf >>174
Rustは所有権がはっきりしてるためコンパイラが安全に最適化をガンガン出来る点が良いな
しかもプログラマーはそれを意識せずにRustのセマンティクスだけ把握して書けば後はコンパイラが勝手に最適化してくれる
これがC/C++だと自分で戻り値の場所を確保して自分でポインタを渡していき競合安全性も含めて自分でメモリ管理しなければならない
CG言語だとスタック上はあきらめてヒープで確保して返して後始末はGC任せ
Rustが有利
Rustは所有権がはっきりしてるためコンパイラが安全に最適化をガンガン出来る点が良いな
しかもプログラマーはそれを意識せずにRustのセマンティクスだけ把握して書けば後はコンパイラが勝手に最適化してくれる
これがC/C++だと自分で戻り値の場所を確保して自分でポインタを渡していき競合安全性も含めて自分でメモリ管理しなければならない
CG言語だとスタック上はあきらめてヒープで確保して返して後始末はGC任せ
Rustが有利
181デフォルトの名無しさん
2022/02/10(木) 21:40:15.72ID:3aizDYBf >>178
どちらかに指定が必ず必要なのだから
ライフタイムを管理する必要のある参照の方に&指定する現方法が大正解だな
参照にはsingle writer XOR multi readersのルール義務もあるしな
どちらかに指定が必ず必要なのだから
ライフタイムを管理する必要のある参照の方に&指定する現方法が大正解だな
参照にはsingle writer XOR multi readersのルール義務もあるしな
182デフォルトの名無しさん
2022/02/10(木) 21:50:15.02ID:ZN2u8Rs1 ある程度は既存のメジャー言語と作法を揃えないと、タダでさえヤバい学習曲線がさらにとんでもないことになるしねえ
183デフォルトの名無しさん
2022/02/10(木) 22:07:58.55ID:pZ8EtH2T 可変参照と可変じゃない参照の区別が安全性保証の要になっているため
参照の方に記号を付けるのは理に適っている
いずれにしてもC/C++で安全に書く時はそれら含めて意識せざるをえない
それがRustでは様々な点でかなり楽になっているのだからC/C++より学習が大変ということはない
参照の方に記号を付けるのは理に適っている
いずれにしてもC/C++で安全に書く時はそれら含めて意識せざるをえない
それがRustでは様々な点でかなり楽になっているのだからC/C++より学習が大変ということはない
184デフォルトの名無しさん
2022/02/11(金) 12:06:27.49ID:vAEawTbN185デフォルトの名無しさん
2022/02/11(金) 12:49:33.03ID:MSfgatap186デフォルトの名無しさん
2022/02/11(金) 13:38:34.47ID:vAEawTbN187デフォルトの名無しさん
2022/02/11(金) 13:47:41.99ID:MSfgatap188デフォルトの名無しさん
2022/02/11(金) 14:39:24.16ID:vAEawTbN189デフォルトの名無しさん
2022/02/11(金) 15:19:57.69ID:HTnX1mLl >>187
>ヒープなんか一切用いなくてスタック上しか使わなくても参照返しは必ず起きるしライフタイムの管理が必須となる
これは嘘だろ。実際fortranはヒープ使わないし、変数の寿命なんて問題は考えなくて済む。
そういう意味じゃめっちゃ安全。
>ヒープなんか一切用いなくてスタック上しか使わなくても参照返しは必ず起きるしライフタイムの管理が必須となる
これは嘘だろ。実際fortranはヒープ使わないし、変数の寿命なんて問題は考えなくて済む。
そういう意味じゃめっちゃ安全。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【🐼🇨🇳】「高市総理VS中国」で日本からパンダはゼロに? 上野動物園「パンダ返還期限」まであと4カ月…★2 [BFU★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★5 [樽悶★]
- 【裁判】山上徹也被告の妹「この人は母のふりをした旧統一教会の信者だと思いました」「でも、母の形をしているから突き放せなかった」 [1ゲットロボ★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★6 [樽悶★]
- 【速報】 米大使声明 「日本を支えていく」「中国が威圧的手段に訴えるのは断ち難い悪癖」 [お断り★]
- WHO、職員の約4分の1を削減へ アメリカの脱退表明受け [どどん★]
- 自民党 防衛費GDP比2%超へ協議開始 強い!強いぞ! [163661708]
- 外国人「日本の立ちんぼガールやばすぎるwwwwwwwww [977790669]
- 珍🏡珍
- 「あれ?円安加速の戦犯って高市じゃなくて岸田と石破じゃね?」という風潮、急速に高まるwww [759043982]
- 高市コインまもなく158円 [931948549]
- 日本「中国のレアアースに71%依存してます。2024年のデータです」 ネトウヨ「え?youtube解説と違うんだけど」 [633746646]
