結局C++とRustってどっちが良いの?
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/02/25(土) 09:49:46.74ID:VRyB88xR C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな?
521デフォルトの名無しさん
2023/03/24(金) 13:55:42.43ID:GMecybVR デストラクタは所有してる変数のブロックを抜けるまでに呼ばれることが保証されてるけど
正確なタイミングはコンパイラが決めてるから予測はできない
例えば何かを解放しないと以降で競合が生じる場合はブロックの途中で解放されることもある
ただ
A()
B(&A)
みたいにBがAを参照してるような状況だとBが消えるまでAを動かせないから
結果的にC++と同じように逆順で解放されることになる
ライフタイム周りはコンパイラが制約を満たせる処理順を見つけて裏で調整する感じだから
最初は戸惑うかもしれないね
正確なタイミングはコンパイラが決めてるから予測はできない
例えば何かを解放しないと以降で競合が生じる場合はブロックの途中で解放されることもある
ただ
A()
B(&A)
みたいにBがAを参照してるような状況だとBが消えるまでAを動かせないから
結果的にC++と同じように逆順で解放されることになる
ライフタイム周りはコンパイラが制約を満たせる処理順を見つけて裏で調整する感じだから
最初は戸惑うかもしれないね
522デフォルトの名無しさん
2023/03/24(金) 14:00:41.09ID:+nRUfXDq523デフォルトの名無しさん
2023/03/24(金) 14:34:12.82ID:JpLx+uLR >>520
それどこのスマポ
それどこのスマポ
524デフォルトの名無しさん
2023/03/24(金) 14:38:27.83ID:STP4y0mB525デフォルトの名無しさん
2023/03/24(金) 14:55:23.36ID:+nRUfXDq >>523
デストラクタにスマポもポインタも関係ない
Rustでは任意の自作型にデストラクタを実装できる
(ただしCopyを実装していないことが条件)
// 例えば整数i32型のみを持つ構造体Foo
struct Foo(i32);
impl Drop for Foo {
// デストラクタ実装
fn drop(&mut self) {
println!("drop: Foo({})", self.0);
}
}
fn main() {
let _x = Foo(123); // メインブロックを終えてからdropされる
{
let _x = Foo(456); // 内ブロックを終えてからdropされる
let _x = Foo(789); // 内ブロックを終えてからdropされる
println!("内ブロック終わり");
}
println!("メインブロック終わり");
}
【実行結果】
内ブロック終わり
drop: Foo(789)
drop: Foo(456)
メインブロック終わり
drop: Foo(123)
デストラクタにスマポもポインタも関係ない
Rustでは任意の自作型にデストラクタを実装できる
(ただしCopyを実装していないことが条件)
// 例えば整数i32型のみを持つ構造体Foo
struct Foo(i32);
impl Drop for Foo {
// デストラクタ実装
fn drop(&mut self) {
println!("drop: Foo({})", self.0);
}
}
fn main() {
let _x = Foo(123); // メインブロックを終えてからdropされる
{
let _x = Foo(456); // 内ブロックを終えてからdropされる
let _x = Foo(789); // 内ブロックを終えてからdropされる
println!("内ブロック終わり");
}
println!("メインブロック終わり");
}
【実行結果】
内ブロック終わり
drop: Foo(789)
drop: Foo(456)
メインブロック終わり
drop: Foo(123)
526デフォルトの名無しさん
2023/03/24(金) 15:07:39.53ID:GMecybVR527デフォルトの名無しさん
2023/03/24(金) 15:07:52.15ID:+nRUfXDq >>524
C++とRustはiteratorで指すものが微妙に異なるので要注意だがまずは折衷するとして
例えば
let mut v = vec![1, 2, 3];
for p in v.iter_mut() {
*p += 10;
}
これでイテレータを使って11,12,13
C++とRustはiteratorで指すものが微妙に異なるので要注意だがまずは折衷するとして
例えば
let mut v = vec![1, 2, 3];
for p in v.iter_mut() {
*p += 10;
}
これでイテレータを使って11,12,13
528デフォルトの名無しさん
2023/03/24(金) 15:18:17.49ID:m8vHxf3R529デフォルトの名無しさん
2023/03/24(金) 15:28:04.96ID:STP4y0mB530デフォルトの名無しさん
2023/03/24(金) 15:30:39.43ID:+nRUfXDq >>528
変数が所有している値のデストラクタが呼ばれるのはブロックを抜けた直後だけど
変数が所有しない一時的な値や変数が所有しなくなる代入前の値などは
_へ棄てるのと同じくブロック途中でデストラクタが呼ばれるね
変数が所有している値のデストラクタが呼ばれるのはブロックを抜けた直後だけど
変数が所有しない一時的な値や変数が所有しなくなる代入前の値などは
_へ棄てるのと同じくブロック途中でデストラクタが呼ばれるね
531デフォルトの名無しさん
2023/03/24(金) 15:33:55.56ID:STP4y0mB Rustってゴミ箱(_)があるんだなw
532デフォルトの名無しさん
2023/03/24(金) 15:51:46.07ID:+nRUfXDq >>529
もちろんイテレータは参照もしくは可変参照を持つ形となるのでsingle writer or multiple readersを満たす必要がある
それを満たせなければコンパイルエラーとなりデータ競合を防げる
もちろんイテレータは参照もしくは可変参照を持つ形となるのでsingle writer or multiple readersを満たす必要がある
それを満たせなければコンパイルエラーとなりデータ競合を防げる
533デフォルトの名無しさん
2023/03/24(金) 15:55:15.22ID:+nRUfXDq >>531
棄てるのは _ へ棄てなくてもいくらでも方法があり
例えばブロックを作れば
{
let _tmp = x;
}
これで_tmpへ値が移動してブロックを抜けるときに消える
他にも例えば以下の関数を定義して
fn 棄てる<T>(_tmp: T) {
// 何もなし
}
棄てる(x); とすればその関数へ値が移動して関数ブロックを抜けるときに消える
この棄てる関数は同じものがstd::mem::drop()に用意されているので意図をはっきりさせるためにはそれを使うことで可読性を持たせる
棄てるのは _ へ棄てなくてもいくらでも方法があり
例えばブロックを作れば
{
let _tmp = x;
}
これで_tmpへ値が移動してブロックを抜けるときに消える
他にも例えば以下の関数を定義して
fn 棄てる<T>(_tmp: T) {
// 何もなし
}
棄てる(x); とすればその関数へ値が移動して関数ブロックを抜けるときに消える
この棄てる関数は同じものがstd::mem::drop()に用意されているので意図をはっきりさせるためにはそれを使うことで可読性を持たせる
534デフォルトの名無しさん
2023/03/24(金) 17:20:54.03ID:ENxn1p6S >>530
細かいことだけど一時的な値は内部的に一時変数が所有してることになってて一時変数がDrop scopeを抜けていなくなるタイミングでデストラクタが実行される
let _ = Foo(123);やx = Foo(456);は代入によって値の所有者がいなくなるからそのタイミングですぐにデストラクタが実行される
細かいことだけど一時的な値は内部的に一時変数が所有してることになってて一時変数がDrop scopeを抜けていなくなるタイミングでデストラクタが実行される
let _ = Foo(123);やx = Foo(456);は代入によって値の所有者がいなくなるからそのタイミングですぐにデストラクタが実行される
535デフォルトの名無しさん
2023/03/24(金) 20:26:32.48ID:STP4y0mB >>533
こういうことだわな
#include <iostream>
using namespace std;
struct A {
A () {cout << "constructor\n";}
~A () {cout << "destructor\n";}
};
template <typename T> void drop (unique_ptr <T> &&p) {}
int main () {
auto x {make_unique <A> ()};
{
auto _tmp = move (x);
}
drop (move (x));
return 0;
}
こういうことだわな
#include <iostream>
using namespace std;
struct A {
A () {cout << "constructor\n";}
~A () {cout << "destructor\n";}
};
template <typename T> void drop (unique_ptr <T> &&p) {}
int main () {
auto x {make_unique <A> ()};
{
auto _tmp = move (x);
}
drop (move (x));
return 0;
}
536デフォルトの名無しさん
2023/03/24(金) 21:50:27.51ID:VHzrsylr dropバグっとるがな
537デフォルトの名無しさん
2023/03/24(金) 21:51:22.79ID:STP4y0mB ごめんごめん
538デフォルトの名無しさん
2023/03/25(土) 09:38:10.15ID:M09ogOTB 屁臭
539デフォルトの名無しさん
2023/03/25(土) 20:06:44.69ID:sd+PB/iL540デフォルトの名無しさん
2023/03/25(土) 20:52:44.35ID:c5G720p2 デバッガですぐに分かることなので
みょうちくりんな文法を新たに覚えようという動機にはならん
みょうちくりんな文法を新たに覚えようという動機にはならん
541デフォルトの名無しさん
2023/03/25(土) 20:56:23.22ID:VVKoWVL2 不明な挙動があるのが発見されてない時点でもデバッガ使うの? 変なコード書いた本人に自覚がないから不具合として発現するのであって、正常に動くであろうと期待できてる時点でも?
時間の無駄では?
デバッガでわかるよりコンパイラでわかるなら圧倒的にそっちがベターでもあるし
時間の無駄では?
デバッガでわかるよりコンパイラでわかるなら圧倒的にそっちがベターでもあるし
542デフォルトの名無しさん
2023/03/25(土) 20:58:28.17ID:c5G720p2543デフォルトの名無しさん
2023/03/25(土) 20:59:37.07ID:tC35D9u3544デフォルトの名無しさん
2023/03/25(土) 21:03:00.33ID:c5G720p2 コンパイル時点でチェックが入るのはRustの利点だが
C/C++と乖離した文法を新たに覚えるというコストを払おうとは全く思わん
俺がRustを覚えるとしたらシステムコールがRustで書かれたOSを
使うことになったときだけ
当分ない
C/C++と乖離した文法を新たに覚えるというコストを払おうとは全く思わん
俺がRustを覚えるとしたらシステムコールがRustで書かれたOSを
使うことになったときだけ
当分ない
545デフォルトの名無しさん
2023/03/25(土) 21:04:16.45ID:c5G720p2 >>543
でもLockFreeQueueをsafeで実装できないんでしょ?
でもLockFreeQueueをsafeで実装できないんでしょ?
546デフォルトの名無しさん
2023/03/25(土) 21:10:35.10ID:c5G720p2 周りに使用を強制されるほどRustは普及していないので
Rust推しの諸君は自らRustを選択したのだろうけど
そんなにCでのメモリの扱い方に苦労したのかい?
Rust使う人はどちらかというと言語マニアの人達だと思ってたのだが?
Rust推しの諸君は自らRustを選択したのだろうけど
そんなにCでのメモリの扱い方に苦労したのかい?
Rust使う人はどちらかというと言語マニアの人達だと思ってたのだが?
547デフォルトの名無しさん
2023/03/25(土) 21:14:16.97ID:tC35D9u3 >>545
そういうのはすべてsafeなインタフェイスでライブラリが作られてるから
LockFree{Queue,Stack,Map,Set,Chanel}すべてsafeなインタフェイスを用いてRustプログラミングできるよ
そういうのはすべてsafeなインタフェイスでライブラリが作られてるから
LockFree{Queue,Stack,Map,Set,Chanel}すべてsafeなインタフェイスを用いてRustプログラミングできるよ
548デフォルトの名無しさん
2023/03/25(土) 21:17:55.09ID:fB31q3I6549デフォルトの名無しさん
2023/03/25(土) 21:18:50.17ID:c5G720p2550デフォルトの名無しさん
2023/03/25(土) 21:23:11.57ID:tC35D9u3 >>549
すべてがunsafeなC++と違って
RustならLockFree{Queue,Stack,Map,Set,Chanel}をsafeなインタフェイスで使うことで自分の書くプログラムをsafeにできるよ
つまりRustコンパイラが書いたプログラムの安全性の保証をしてくれるよ
すべてがunsafeなC++と違って
RustならLockFree{Queue,Stack,Map,Set,Chanel}をsafeなインタフェイスで使うことで自分の書くプログラムをsafeにできるよ
つまりRustコンパイラが書いたプログラムの安全性の保証をしてくれるよ
551デフォルトの名無しさん
2023/03/25(土) 21:36:28.93ID:c5G720p2552デフォルトの名無しさん
2023/03/25(土) 22:24:32.21ID:fB31q3I6 Rustは例えばVecすら中身はunsafeを使ったsafeなコードだらけだぞ
LockFreeも全く同様
unsafeを使ったsafeなコードで基本ライブラリを作成しsafeなインターフェースを提供できることがRustの最大の長所
それらを使うプログラムはsafeにすることが出来てコンパイル時点で各問題を排除できる
C++が敗北した理由である
LockFreeも全く同様
unsafeを使ったsafeなコードで基本ライブラリを作成しsafeなインターフェースを提供できることがRustの最大の長所
それらを使うプログラムはsafeにすることが出来てコンパイル時点で各問題を排除できる
C++が敗北した理由である
553デフォルトの名無しさん
2023/03/25(土) 22:28:23.02ID:c5G720p2554デフォルトの名無しさん
2023/03/25(土) 23:00:19.34ID:tC35D9u3 プログラムすべてがunsafeなC++という失敗作を改善したことを設計ミスと言うのは理不尽ね
555デフォルトの名無しさん
2023/03/25(土) 23:10:11.97ID:Ty/K+Fgo >>543
C++大好きだが、神の言語とはちょっと違う希がす
C++大好きだが、神の言語とはちょっと違う希がす
556デフォルトの名無しさん
2023/03/25(土) 23:25:09.01ID:c5G720p2557デフォルトの名無しさん
2023/03/25(土) 23:58:43.93ID:EBh7DtZR 現代語はコロコロ変わるが古文漢文は変化しないからそうそう消えない
理系のくせにそこに気付くとはえらいね
理系のくせにそこに気付くとはえらいね
558デフォルトの名無しさん
2023/03/26(日) 00:04:07.04ID:Vf0mvjFW 大手が採用するといったんだから当面生きてるでしょ
C/C++は進化はよ
C/C++は進化はよ
559デフォルトの名無しさん
2023/03/26(日) 00:38:53.03ID:04xno5ob もう負けたんだよC++は
向こうの方が宣伝がうまかった
向こうの方が宣伝がうまかった
560デフォルトの名無しさん
2023/03/26(日) 01:40:41.16ID:Vf0mvjFW ついこないだまで、コルーチンだって書けなかっただろ
C++が「負け」てるのは、今に始まったことじゃない
キャッチアップしていってくれればいいんだよ
C++が「負け」てるのは、今に始まったことじゃない
キャッチアップしていってくれればいいんだよ
561デフォルトの名無しさん
2023/03/26(日) 08:24:37.76ID:4yCJuAuO Nimは脳汁出るんだが
Rustからは出て来ない
::が邪魔しとるんかの
Rustからは出て来ない
::が邪魔しとるんかの
562デフォルトの名無しさん
2023/03/26(日) 08:28:50.22ID:UQsado+I563デフォルトの名無しさん
2023/03/26(日) 08:38:26.46ID:VUXuxgJn C++はたとえリアルタイム性があっても、信頼性が求められる業務をしようとすると、どうしてもCで良いじゃんってレベルまでコーディングルールをガチガチに制約するからね。
564デフォルトの名無しさん
2023/03/26(日) 08:42:34.83ID:faqu5Hbk C++のメリットが完全に無くなったな
無理に挙げるとすれば過去のプログラムと過去のプログラマーくらいか
無理に挙げるとすれば過去のプログラムと過去のプログラマーくらいか
565デフォルトの名無しさん
2023/03/26(日) 11:07:56.67ID:Vf0mvjFW C++のメリットは自由度
自由が障壁になる用途ではメリットもクソもないw
C++で書きたいというニーズは当面残る
だからC++には進化してもらわないといけない
自由が障壁になる用途ではメリットもクソもないw
C++で書きたいというニーズは当面残る
だからC++には進化してもらわないといけない
566デフォルトの名無しさん
2023/03/26(日) 11:19:02.92ID:rT1rfVXr GC無し言語でやりたいことは全部Rustでやって
C/C++には滅びて欲しい人間が増えてんだろ
プレーンCのコードぐらいRustにコンバート出来るんじゃね?
知らんけど
C/C++には滅びて欲しい人間が増えてんだろ
プレーンCのコードぐらいRustにコンバート出来るんじゃね?
知らんけど
567デフォルトの名無しさん
2023/03/26(日) 12:33:33.90ID:g6NQ2zfC C++中毒な人が多いからね(俺含む
捨てろと言われても無理だねえw Rustを使わないとは一言もいってない
>>563
これまで、自由になりすぎたC++をいかに縛るかっていう試みはいくらもあったが、普及しなかった
ついにRustが答えを出した C++は「いや~負けましたね~」とかいいながら、その成果を吸収すればいい
捨てろと言われても無理だねえw Rustを使わないとは一言もいってない
>>563
これまで、自由になりすぎたC++をいかに縛るかっていう試みはいくらもあったが、普及しなかった
ついにRustが答えを出した C++は「いや~負けましたね~」とかいいながら、その成果を吸収すればいい
568デフォルトの名無しさん
2023/03/26(日) 13:03:12.58ID:BnHATVrm 自分で自由を縛ろうというインセンティブは働かないからね
何らかの外からの圧力がない限りなかなか増えないだろうね
キラープロダクトがあれば一気に普及するだろうけど
何らかの外からの圧力がない限りなかなか増えないだろうね
キラープロダクトがあれば一気に普及するだろうけど
569デフォルトの名無しさん
2023/03/26(日) 13:05:22.20ID:BnHATVrm メモリ管理云々言ってる人もセールストークの受け売りで
自分でメモリ管理に苦労して「あ! Rustが解決法だ!」って
始めた人はいないだろうし
自分でメモリ管理に苦労して「あ! Rustが解決法だ!」って
始めた人はいないだろうし
570デフォルトの名無しさん
2023/03/26(日) 13:06:33.66ID:g6NQ2zfC C++に依存すればするほど、これgdgdだ…ってのがわかってくるもんだけど、
どう縛るのが「正解」か、なかなか答えが出なかったんだよね
スマポどころか、ハンドルや参照カウントの概念が大昔からあったけど、決定打にならなかった
どう縛るのが「正解」か、なかなか答えが出なかったんだよね
スマポどころか、ハンドルや参照カウントの概念が大昔からあったけど、決定打にならなかった
571デフォルトの名無しさん
2023/03/26(日) 13:09:22.51ID:BnHATVrm >>570
それは自然言語と同じで使う人のレベルによる
それは自然言語と同じで使う人のレベルによる
572デフォルトの名無しさん
2023/03/26(日) 13:12:55.73ID:BnHATVrm おまいらRedoxとかどうよ? GoogleのOSは一般の人は使えるの?
573デフォルトの名無しさん
2023/03/26(日) 13:14:54.55ID:Lwno4Hfq 自由には需要のある自由と需要のない自由があってだな
どっちも供給されなければ胡散臭いとか偽善だとか
需要ってあなたの願望ですよね、とかいうのが自由にまつわる典型的な詭弁
どっちも供給されなければ胡散臭いとか偽善だとか
需要ってあなたの願望ですよね、とかいうのが自由にまつわる典型的な詭弁
574デフォルトの名無しさん
2023/03/26(日) 13:19:57.22ID:BnHATVrm575デフォルトの名無しさん
2023/03/26(日) 14:41:00.96ID:g6NQ2zfC 規格となるに足る、縛り(の規格)の決定打がなかった
あーでもないこーでもないいって、混沌を放置したのはC++の落ち度
バイナリだって肥大化し放題だったしね Cに近いC++erは、忸怩たる思いで眺めてたものさ
あーでもないこーでもないいって、混沌を放置したのはC++の落ち度
バイナリだって肥大化し放題だったしね Cに近いC++erは、忸怩たる思いで眺めてたものさ
576デフォルトの名無しさん
2023/03/26(日) 14:50:08.58ID:EIuzoBSL ここって情報古い?
https://maku77.github.io/rust/
あと
if let Ok(hoge) = fuga {
}
って本当に可読性良くなってると思ってる?(嫌味じゃなくてマジでRust推しの人の意見聴きたい)
https://maku77.github.io/rust/
あと
if let Ok(hoge) = fuga {
}
って本当に可読性良くなってると思ってる?(嫌味じゃなくてマジでRust推しの人の意見聴きたい)
577デフォルトの名無しさん
2023/03/26(日) 14:57:31.39ID:BnHATVrm578デフォルトの名無しさん
2023/03/26(日) 15:01:34.10ID:g6NQ2zfC579デフォルトの名無しさん
2023/03/26(日) 15:09:14.63ID:BnHATVrm ダメだこりゃ
普及はもしするとしても30年くらいは掛かりそう
普及はもしするとしても30年くらいは掛かりそう
580デフォルトの名無しさん
2023/03/26(日) 15:58:38.13ID:LwxNksN7 どちらを習得すればセックスできますか
581デフォルトの名無しさん
2023/03/26(日) 16:29:03.94ID:v5z9D7dt >>576
Rustの if let でのenumパターンマッチングは、
まずRustのenumを理解する必要があるけど、例えば、
enum State {
StateA(i32),
StateB(i32),
StateC(i32, f32),
}
if let State::StateA(i) = x {
println!("StateA: {i}");
}
これをc++で書こうとするとこうなるのかな。
struct StateA { int i; };
struct StateB { int i; };
struct StateC { int i; float f; };
typedef std::variant<StateA, StateB, StateC> State;
if (std::holds_alternative<StateA>(x)) {
StateA& a = std::get<StateA>(x);
std::cout << "StateA: " << a.i << "\n";
}
この両者がたぶん同じ。
if let構文のおかげでRustは可読性が増していると思う。
Rustの if let でのenumパターンマッチングは、
まずRustのenumを理解する必要があるけど、例えば、
enum State {
StateA(i32),
StateB(i32),
StateC(i32, f32),
}
if let State::StateA(i) = x {
println!("StateA: {i}");
}
これをc++で書こうとするとこうなるのかな。
struct StateA { int i; };
struct StateB { int i; };
struct StateC { int i; float f; };
typedef std::variant<StateA, StateB, StateC> State;
if (std::holds_alternative<StateA>(x)) {
StateA& a = std::get<StateA>(x);
std::cout << "StateA: " << a.i << "\n";
}
この両者がたぶん同じ。
if let構文のおかげでRustは可読性が増していると思う。
582デフォルトの名無しさん
2023/03/26(日) 18:24:04.21ID:MldEMOwI >>576
>if let Ok(hoge) = fuga {
>}
>って本当に可読性良くなってると思ってる?
ResultやOptionが複数ネストしていくと可読性が低いコードはどうしてもできるけど単純なやつは何の問題もないと思ってる
ちなみに何と比べてる?
>if let Ok(hoge) = fuga {
>}
>って本当に可読性良くなってると思ってる?
ResultやOptionが複数ネストしていくと可読性が低いコードはどうしてもできるけど単純なやつは何の問題もないと思ってる
ちなみに何と比べてる?
583デフォルトの名無しさん
2023/03/26(日) 23:06:22.21ID:zumLAqyb >>581
C++は利便性のいい代数的データ型の導入に失敗したからしょうがない
さらにパターンマッチングの導入は未だに議論中のまま進みそうにない
結果としてそのような不便で分かりにくい記述をするしかない
C++は利便性のいい代数的データ型の導入に失敗したからしょうがない
さらにパターンマッチングの導入は未だに議論中のまま進みそうにない
結果としてそのような不便で分かりにくい記述をするしかない
584デフォルトの名無しさん
2023/03/26(日) 23:24:54.44ID:Lwno4Hfq C++にはswitchを使うなunionを使うなという縛りがあった
CとC++を意図的に隔離すれば縛りを無視できるから問題視されないが
CとC++を意図的に隔離すれば縛りを無視できるから問題視されないが
585デフォルトの名無しさん
2023/03/26(日) 23:35:48.82ID:BnHATVrm 何か問題でも?
586デフォルトの名無しさん
2023/03/26(日) 23:51:37.40ID:Lwno4Hfq if letとその比較対象も、言語を統一しようと思わなければ問題ないんだろう
587デフォルトの名無しさん
2023/03/27(月) 00:02:41.74ID:+gsY9S8v ぶっちゃけRUSTでなくてもいいんだよ
安全性のためには
schemeとかHaskellみたいな言語には定義外の動作が(基本的には)存在しないという強力な安全性があるわけだし
じゃあなんでこんなにRUSTがもてはやされるのかというと、単に宣伝がうまかっただけ
安全性のためには
schemeとかHaskellみたいな言語には定義外の動作が(基本的には)存在しないという強力な安全性があるわけだし
じゃあなんでこんなにRUSTがもてはやされるのかというと、単に宣伝がうまかっただけ
588デフォルトの名無しさん
2023/03/27(月) 05:32:45.27ID:UciRikyK safe Rustには未定義動作が存在しない
そしてunsafeを用いてsafeなインタフェースを提供する時にもそれが義務付けられている
したがってそれらを用いるRustに未定義動作は存在しない
未定義動作まみれのC/C++との決定的な違いである
そしてunsafeを用いてsafeなインタフェースを提供する時にもそれが義務付けられている
したがってそれらを用いるRustに未定義動作は存在しない
未定義動作まみれのC/C++との決定的な違いである
589デフォルトの名無しさん
2023/03/27(月) 06:40:49.82ID:xp5TMlgQ 間違うヤツが悪い、って世代の規格だもんな、変に不親切は徹底してるわw
590デフォルトの名無しさん
2023/03/27(月) 11:50:25.04ID:kviG1IE2 C++に憧れるのをやめましょう
憧れてしまったら超えられないんで
憧れてしまったら超えられないんで
591デフォルトの名無しさん
2023/03/27(月) 12:09:54.31ID:iTDWuTVq >>581
Rustの代数的データ型であるenumに対して
対応するC++のstd::variantは五重苦だよな
・機能が弱い
・使いにくい
・見にくい
・使われていない
・知られていない
C++の機能強化は尽く失敗していて進化が望めない
Rustの代数的データ型であるenumに対して
対応するC++のstd::variantは五重苦だよな
・機能が弱い
・使いにくい
・見にくい
・使われていない
・知られていない
C++の機能強化は尽く失敗していて進化が望めない
592デフォルトの名無しさん
2023/03/27(月) 12:10:13.46ID:B8NoQCc/593デフォルトの名無しさん
2023/03/27(月) 12:48:40.60ID:8vpfa9xS まぁRust使うくらいならC++使うよねってのはあるよね
これまでの資産が全然違うわ
DirectXとかOpenGLとかオーディオ系の低レイヤーのやつはやっぱりC++が強い
これまでの資産が全然違うわ
DirectXとかOpenGLとかオーディオ系の低レイヤーのやつはやっぱりC++が強い
594デフォルトの名無しさん
2023/03/27(月) 12:49:34.80ID:8vpfa9xS Rust信者が全部ラッパー作ってくれるならまぁわからんでも無いけど君たちどうせ人が作ったライブラリしか使わないんでしょ?
595デフォルトの名無しさん
2023/03/27(月) 13:03:55.96ID:03NojB4M 大手が採用するっていうんだから、大手がどんどんライブラリ置き換えやるでしょ
ただラッパ書くだけじゃなくて、Rustで書けばAPIを適切に使用してるって保証されるものじゃないとね
ただラッパ書くだけじゃなくて、Rustで書けばAPIを適切に使用してるって保証されるものじゃないとね
596デフォルトの名無しさん
2023/03/27(月) 13:12:32.89ID:B8NoQCc/ 人任せだなw
Cと共存なんて考えだと廃れて消えると思うよ
カーネルからRustにしないとな
以下の考察は俺も同じ印象を持っている
RustもJuliaやGoみたいに廃れて消えていく気がしている。
https://qiita.com/AKKYM/items/78c04840bc72d9db834d
Cと共存なんて考えだと廃れて消えると思うよ
カーネルからRustにしないとな
以下の考察は俺も同じ印象を持っている
RustもJuliaやGoみたいに廃れて消えていく気がしている。
https://qiita.com/AKKYM/items/78c04840bc72d9db834d
597デフォルトの名無しさん
2023/03/27(月) 13:14:48.15ID:B8NoQCc/ 技術的な良し悪しとしてはRustは充分だと思うけど
言語が使われるかどうかはその上の生態学の問題だからね
言語が使われるかどうかはその上の生態学の問題だからね
598デフォルトの名無しさん
2023/03/27(月) 13:36:37.38ID:f2pr1T08 なんでカーネルとシェルが共存する現実を学ぶことすらできないんだろうなあ
スマホにはシェルスクリプトがないから?
スマホにはシェルスクリプトがないから?
599デフォルトの名無しさん
2023/03/27(月) 13:46:30.78ID:B8NoQCc/ カーネルから書かないと
諸君のフラストレーションは解消されないと思うよ
諸君のフラストレーションは解消されないと思うよ
600デフォルトの名無しさん
2023/03/27(月) 13:50:47.73ID:B8NoQCc/ 打倒するC++の最大の特徴はCを包含していること
C++覚えればCの知識は付いてくるが
CとRust両方覚えるの面倒やん?
CをリプレースしなければC++もリプレスできん
C++覚えればCの知識は付いてくるが
CとRust両方覚えるの面倒やん?
CをリプレースしなければC++もリプレスできん
601デフォルトの名無しさん
2023/03/27(月) 14:18:03.99ID:arDcYvab >>591
C++の可読性の低さはそのような無理矢理な機能拡張の失敗にある
C++の可読性の低さはそのような無理矢理な機能拡張の失敗にある
602デフォルトの名無しさん
2023/03/27(月) 14:34:40.20ID:kviG1IE2603デフォルトの名無しさん
2023/03/27(月) 14:43:24.48ID:kviG1IE2604デフォルトの名無しさん
2023/03/27(月) 14:44:18.04ID:44rZZrUP >>603
反例は?
反例は?
605デフォルトの名無しさん
2023/03/27(月) 14:59:46.99ID:kviG1IE2606デフォルトの名無しさん
2023/03/27(月) 16:45:29.16ID:qgA22f4o607デフォルトの名無しさん
2023/03/27(月) 17:02:39.76ID:V0RoakbK 酷いのはお前の頭と顔だよ
608デフォルトの名無しさん
2023/03/27(月) 17:10:12.43ID:f4PBXzjX >>606
記事はバカだけどコメントはまあいいんじゃね?
それよりも、Rustを置き換えられる言語が出現しないと、Rustの天下が続きそ。
C並みに高速で何でも書けてGCもなく、にも関わらず様々な安全性が静的に保証される言語が、Rust以外に芽も出てこなさげ。
記事はバカだけどコメントはまあいいんじゃね?
それよりも、Rustを置き換えられる言語が出現しないと、Rustの天下が続きそ。
C並みに高速で何でも書けてGCもなく、にも関わらず様々な安全性が静的に保証される言語が、Rust以外に芽も出てこなさげ。
609デフォルトの名無しさん
2023/03/27(月) 17:19:21.38ID:8vpfa9xS >>605
MSだから
MSだから
610デフォルトの名無しさん
2023/03/27(月) 17:23:03.66ID:ztwrSg39 何が続きそ。だよ
自演バレないように新文体開拓しようとしてんのマジでキモいわ
自演バレないように新文体開拓しようとしてんのマジでキモいわ
611デフォルトの名無しさん
2023/03/27(月) 17:26:14.23ID:8vpfa9xS コメントしたった
TypeScriptはC#やDelphiを作ったアンダースヘルスバーグが設計してるからです
以上
TypeScriptはC#やDelphiを作ったアンダースヘルスバーグが設計してるからです
以上
612デフォルトの名無しさん
2023/03/27(月) 17:26:50.78ID:8vpfa9xS Rustまだ全然天下じゃないんだが…
周り見えてない人なのかな?
周り見えてない人なのかな?
613デフォルトの名無しさん
2023/03/27(月) 17:27:28.03ID:8vpfa9xS 言うほどガベコレ悪いか?って話になるんだが君たち何を作ってんだ?
614デフォルトの名無しさん
2023/03/27(月) 17:28:15.22ID:8vpfa9xS 言うほど1フレーム1フレームの処理落ちが問題になることしてんの?
ゲームくらいじゃね?
ゲームくらいじゃね?
615デフォルトの名無しさん
2023/03/27(月) 17:28:57.15ID:8vpfa9xS その点ゲームでRustは使われない
マジで何してんの?って話よな
マジで何してんの?って話よな
616デフォルトの名無しさん
2023/03/27(月) 17:35:59.10ID:tLmo//P+617デフォルトの名無しさん
2023/03/27(月) 17:37:53.83ID:8vpfa9xS >>616
ほんでその車載ソフトはRustで書かれんのか?
ほんでその車載ソフトはRustで書かれんのか?
618デフォルトの名無しさん
2023/03/27(月) 17:39:01.06ID:tLmo//P+ >>617
いや、まだ言語的に対応してないからC/C++だね、、
いや、まだ言語的に対応してないからC/C++だね、、
619デフォルトの名無しさん
2023/03/27(月) 17:40:35.92ID:8vpfa9xS620デフォルトの名無しさん
2023/03/27(月) 17:52:34.31ID:tLmo//P+ >>619
そうやね
ぶっちゃけ危なそうなものはコーディングルールで縛られるし、過去トラブルや不具合対策も沢山あるから困らないんだよね。
品質保証のためにアセンブラも見るけど、C/C++はアセンブラと比べながら見やすいし
そうやね
ぶっちゃけ危なそうなものはコーディングルールで縛られるし、過去トラブルや不具合対策も沢山あるから困らないんだよね。
品質保証のためにアセンブラも見るけど、C/C++はアセンブラと比べながら見やすいし
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相、トランプ米大統領に「早期に会いたい」 日中関係悪化受け… ★3 [BFU★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★4 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 [Hitzeschleier★]
- ホリエモン、「持ち家=幸せという価値観は過去のもの」と断言「快適な住まいが欲しいなら、賃貸住宅を次々に替えていく」 [muffin★]
- 【安倍晋三】中国船4隻が領海侵入 [828897501]
- 【実況】博衣こよりのえちえちスーパーダンガンロンパ3🧪
- 【画像】自分がオッサンか若者か、5秒で判断できる画像がこれらしい [977261419]
- えちえち女だけど
- 【新番組】轟はじめ🐧⚡のぶんぶんぶーん🚗💨!【🏡】
- 自民党のヒゲ「日本側の無線でcopyとは言ったが了解という意味ではない」 [834922174]
