Google&MS「バグの70%はC/C++。Rustにする」 (805レス)
上下前次1-新
1(2): [] 2021/05/02(日)17:14 AAS
グーグルやMSが「Rust」言語でOS開発、背景に国家による諜報活動の影
1970年代初めにUNIXの開発にC言語が採用されて以来、OS開発はCやその後継であるC++の独壇場だった。グーグルはこれまでもAndroidの開発にJavaやKotlinを採用していたが、カーネルやデバイスドライバーなどOSの下位レイヤーの開発にはC/C++しか使ってこなかった。RustはC/C++と同様に下位レイヤーの開発に使用する。
グーグルは数千万行にも及ぶ既存のC/C++のコードを書き換えるのは不可能としており、新規のコードの開発にのみRustを適用する方針だ。それでもOS開発の常識が数十年ぶりに変わるのだけは間違いない。
RustはWebブラウザー「Firefox」を開発する米Mozilla Foundation(モジラ財団)が開発を主導するプログラミング言語だ。開発が始まったのは2006年で、安定版であるバージョン1がリリースされたのも2015年のことだ。まだ新しいプログラミング言語をグーグルやマイクロソフトがOS開発に採用する理由は、OSのセキュリティー強化にある。
Rustは、プログラムに必要なメモリーの確保や解放に関連するバグが生じない「メモリー安全」が保証されたプログラミング言語である。それに対してこれまでのOS開発に使われてきたC/C++は「大規模な開発においてメモリー安全なコードを記述することがほぼ不可能」(マイクロソフトのブログ「We need a safer systems programming language」より)なのだという。
脆弱性の70%がメモリー管理バグに起因
グーグルによればAndroidに存在した深刻なセキュリティー脆弱性の70%近くがメモリー安全に関するバグに起因するという。同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
742(1): [sage] 04/01(火)17:42 AAS
Cは早いし小さい
マネージド言語に比べたらめちゃくちゃ小さい
743: [sage] 04/01(火)18:49 AAS
マネージドコードと比べるな
744: [] 04/01(火)19:50 AAS
>>742
Rustも同じ
RustはCと同じことが全てできる
Rustはインラインアセンブラも対応している
745: [sage] 04/01(火)19:53 AAS
そこは張り合うとこじゃない
C++派だが、C++もへたくそがこねくったソースからは、スパゲッティみたいなバイナリが吐かれるからな
それはおなじ
746(1): [sage] 04/01(火)20:55 AAS
前から言われていることだが
所有権の確認などツールを使えばいいのではないか
747: [sage] 04/01(火)21:48 AAS
現実世界にそんなツールが無いことを除けば素晴らしいアイデアだね
748(2): [sage] 04/01(火)22:12 AAS
メモリ安全を確保するツールなど山のようにあるはずだ
749: [sage] 04/01(火)22:16 AAS
なんかなんとなくRustに置き換わっていっているが
Rustにして成果が出たというようなレポートを見ない
750: [] 04/01(火)22:26 AAS
>>748
そんなツールは無い
世界中で長年色々な試みが行われてきたが
C/C++の言語仕様が悪いと結論が出ている
そのためIT各社がRustへと舵を切った
751: [] 04/01(火)23:58 AAS
>>746
>>748
おすすめのツールおせーて
752(1): [sage] 04/02(水)00:03 AAS
ちょっとぐぐったらいっぱいでてくる
Valgrindが一番いっぱいでてきた
753: [] 04/02(水)00:11 AAS
>>752
> 最もよく利用されている標準のツールはMemcheckである。Memcheckはほぼすべての命令に特別な計測用のコードを挿入し、「正当性」(初期化が行われるまでは、割り当て済みでないメモリはすべて無効であるか、未定義である)があり、「アドレス可能」(メモリアドレスが割り当て済みで、解放されていないメモリブロックを指している)であるかという情報が、それぞれVビットおよびAビットに格納されているかを追跡する。
………
> こうした機能への代償として性能が低下する。Memcheckの元で動作するプログラムはValgrindなしで動作する場合と比べて5倍から20倍遅く、より多くのメモリを使用する(メモリ確保ごとにかなりのメモリを追加で消費する)。
うーん…
Rust使ったほうがよくない?😅
754: [sage] 04/02(水)00:15 AAS
そりゃあ実行時に検出するよりはコンパイル時に弾くほうがいいだろうな
755: [] 04/02(水)00:20 AAS
監視・検出処理を挿入してランタイムにメモリリークチェックします
vs
メモリリークのおそれがあるコードをコンパイルエラーで弾きます
ファイッ
756: [sage] 04/02(水)00:23 AAS
偉そうに理想論ぶちあげてるくせに、そういうツールの実務での利用経験すらねえのかよ
757: [sage] 04/02(水)00:55 AAS
静的解析機能もついてたはずだ
758: [sage] 04/02(水)11:27 AAS
あっちを立てればこっちが立たずみたいなことが結構あってあんまり意味ないのよねその手のツール…
759: [] 04/02(水)11:57 AAS
コンパイルが通ればメモリ安全性だけでなくデータ競合すらないことが保証されるRustへIT各社移行中
760(1): [sage] 04/02(水)13:48 AAS
データ競合のバグなんて生涯でまだあったことないんだが
761: [] 04/02(水)15:07 AAS
>>760
CPUマルチコアを生かすプログラミングしたことすらない初心者か?
762: [sage] 04/02(水)16:26 AAS
ないな
763: [sage] 04/02(水)18:40 AAS
いままでC言語でなにして遊んでたんだ
764: [sage] 04/02(水)19:03 AAS
スレッド関係ないときまで余計なこと考えんといかんじゃないか
765(1): [sage] 04/02(水)19:18 AAS
可読性ゼロのC++テンプレートメタ地獄よりはマシですわw
766(1): [sage] 04/03(木)17:20 AAS
ライブラリ作成は数学の得意そうな人とかに任せますわw > テンプレメタ地獄
Rustだったら安全と投資家も認めた
はよその知見C++に来い まったく同じにやればいいんだ
767(1): [] 04/03(木)17:44 AAS
>>766
C/C++の言語仕様があまりにも酷いためRustのような安全性を導入できないことが判明している
解決策としてはC/C++とは互換性がない制約と拡張を行なうしか手がない
特にC/C++の未定義動作は全て無くす必要があり根本的に別の言語となってしまう
そのため今後の進む道は『C/C++改造版』ではなくRustが選ばれた
768: [sage] 04/03(木)17:58 AAS
Rustもマクロあるんよね
769: [sage] 04/03(木)18:42 AAS
Rustのマクロは強力すぎる分、意識高い系に触らせると
C++のテンプレートメタパズルよりもっと酷いものがシステムに持ち込まれると思う
770: [] 04/03(木)19:05 AAS
マクロは関係ない
ジェネリック関数を記述する時に
Rustは関数そのままに型名をジェネリックパラメーターに置き換えるだけでよい
C/C++はテンプレートを使わないと書けない
771(1): [sage] 04/03(木)21:41 AAS
C/C++はすごいよ
コンピューターのかなり低いところまで好きなようにいじれてしまう
人間には過ぎたシロモノだったんだ
772: [] 04/03(木)22:10 AAS
>>771
このスレでそんなアホなこと言うか?
Cで出来ることは全てRustでも出来る
RustはCと同様にインラインアセンブラ機能まであるため万能
773: [sage] 04/04(金)12:20 AAS
いまやインラインアセンブラがあるだけでは優位とはいえんな
インラインアセンブラが、unsafe なしで書けてこそRust
774: [sage] 04/04(金)12:21 AAS
>>767
> C/C++の言語仕様があまりにも酷いためRustのような安全性を導入できないことが判明している
ソースplz
775: [] 04/05(土)11:39 AAS
>>765
上層のクラス含め何でもテンプレートで書く独りよがりいるけど止めて欲しいよな
あくまで型違いで共用するコードの冗長を減らす目的に限定
なおかつ他者は使い方だけ把握して、コード内を見ず使えるように実装すべきだな
776(1): [] 04/05(土)11:45 AAS
Rustはなあ、人を用意できんだろ?特に日本じゃ
c++だってstlテンプレラムダmoveとかは見ずに使えて
デザインパターンで設計できてc++17くらいまでさえOKな人はなかなか捕まらない
777(1): [] 04/05(土)11:47 AAS
>>776
俺を呼べ😎
778: [] 04/05(土)11:51 AAS
>>777
ここの人は当然リーダーをやるべきでしょう
それでrustかc++23か、とにかくやりたい言語で人を集めないと
779: [sage] 04/05(土)12:48 AAS
C++ジジイばっかり集まるぞ
780: [sage] 04/05(土)17:52 AAS
実際自称C++出来る人って、9割ぐらいは未だにC++11未満の知識しかないんじゃない?
ある程度いける口はRustに行っちゃってそうだし
781: [sage] 04/06(日)07:25 AAS
23になってなんか文法劇的に変わったのある?
782(1): [sage] 04/07(月)10:18 AAS
全然昔からあるが、ラムダぜんぜん使いこなせない
783: [sage] 04/07(月)12:22 AAS
ラムダ式は設計書に書くメソッド一覧にどう書けばいいのやら
784: [sage] 04/07(月)12:50 AAS
新規関数追加申請書にちゃんと印鑑を押して提出してから書かないとダメだぞ
785: [sage] 04/07(月)15:13 AAS
関数名が分からないw
786: [] 04/07(月)22:02 AAS
>>782
はじめつらかったけど、気がついたら当たり前みたいに使うようになった
787: [sage] 04/07(月)23:07 AAS
キャプチャとか
788: [sage] 04/08(火)19:03 AAS
C++のアルゴリズムって、JavaのStreamやRustのIteratorに比べてなんか直感的じゃなくて使いにくいよな
789: [] 04/09(水)22:12 AAS
Rustを蛇蝎のごとく嫌ってる人間が相当数いるよな
790(1): [sage] 04/10(木)09:42 AAS
一部のRust教徒キライ
俺の かあちゃんであるC++を侮辱するんだ
Rustに恨みはない
それどころか、知見を学ばないとって当然思ってる
仕事でつかえっていわれたらつかうよ なんとかなるはず
791: [sage] 04/10(木)13:10 AAS
まともにC++使える人間なら、実際Rustは使えると思う
最近は流行ってるせいか、人生でスクリプトしか触ってないようなイケイケのWeb屋も手を出してるみたいだけど
そいつらのほうが苦しむだろうな
792(1): [sage] 04/10(木)21:42 AAS
文字列ひとつ戻り値で返すのに七転八倒
793: [] 04/10(木)21:45 AAS
>>792
Rustをつかえば安全で簡単だよ
794: [sage] 04/11(金)08:14 AAS
>>790
お前のかあちゃんは立派だったけどそろそろ年金生活の歳だからな
795: [sage] 04/12(土)09:20 AAS
まだごりごり畑耕してるぞw 最近は孫の面倒見て大忙し
796: [sage] 04/20(日)02:49 AAS
rustはあまりaiは学習していない印象
797: [] 04/20(日)17:55 AAS
Rustのようにスレッドセーフが保証される型があってAtomic型を使えばマルチスレッドでもロックフリーで高速にすることも可能な言語
PythonのようにGIL(グローバルインタプリタロック)があってマルチスレッドでも十分に性能が出ない言語
プロと素人くらいの差があって驚いた
798: [sage] 04/21(月)09:46 AAS
こりん星から来たまんこりんです
799(2): [sage] 05/02(金)18:14 AAS
https://www.c-nexco.co.jp/corporate/pressroom/2025_crisis-management_etc/pdf/2025_crisis-management_etc05.pdf
Rust使ってたら避けれたの?
800: [sage] 05/02(金)19:45 AAS
>>799
まあ
大量のレコードを移動する事無く再利用してたけど、書き込むサイズを間違えて後ろのデータに上書きしちゃった、てへ
って事だから
Rustだとしても回避出来ないかな
801: [] 05/02(金)20:36 AAS
>>799
別領域へ書き込んでるから、Rustなら必ず回避できていて、今回の問題は避けられた
Rustは領域を最終的にスライスで抽象化し、それは内部的には始点アドレスと長さのペアになる
そしてRustでその領域を超えた書き込みは絶対に起きず、安全が保証される
802: [sage] 05/02(金)21:17 AAS
ストレージ容量の不足かと思ってたけど意図しないアドレスへのデータ書き込みが原因だったのか
803: [sage] 05/02(金)21:41 AAS
障害時の対応いろいろ考えてて大変だなと思った
バグみたいな障害起こったらどうせだめなんだから止めたらいいじゃんって思うんだが
804: [] 05/02(金)22:17 AAS
Rustはスライスが始点だけでなくサイズも伴ってペアで管理されるため、こういった問題も防げるね。
805: [sage] 05/02(金)23:10 AAS
後ろのレコードにはみ出して上書いちゃうって
どんな作りしたらそうなるんだよ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.217s*