X



Google&MS「バグの70%はC/C++。Rustにする」

1仕様書無しさん
垢版 |
2021/05/02(日) 17:14:48.90
グーグルや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/
2021/07/24(土) 12:51:23.12
C++は良い言語→わかる
C++はクソい言語→わかる
C++はクソい言語、C言語使うわ→何言ってるんだこいつ

C++使いたいけど、マイコンベンダーがC言語しか用意してないからC言語使うわ→わかる
C言語開発に慣れてるし、下手に自分のわからない機能を使われるのが嫌だからC言語使うわ→どうぞ
C++よりC言語使うべき→は?
2021/07/24(土) 19:11:11.36
>>327
上二つは分かるが、最後はそれじゃダメだって流れがあるから
rust含めpythonのtypeとかjuliaへの移行とかだろ

ちゃんと変なこと起こさない道具じゃなきゃ、楽なだけは意味ない
2021/07/24(土) 21:57:57.89
>>328
上の方で出てたLinusの意見だろ
C++ではなくCを使うだけでクソみたいなプログラマを
いくらか排除できるって言ってる
331仕様書無しさん
垢版 |
2021/07/24(土) 23:14:06.94
そういう意味では今後のこの分野はCとRustだけで十分かもな
2021/07/25(日) 00:28:55.48
RustがどこまでC/C++のシェアを奪えるかだよねぇ
LinuxはとりあえずCのままいくみたいだけど
2021/07/25(日) 01:31:20.37
Linux kernelはRustも使うつもりだって最近ニュース結構出てるよ
2021/07/25(日) 03:32:27.66
MSがそう言うってことはWDKをRust対応にするのかな
今はC言語しか使えなくてC++も使えないからすげー苦痛
335仕様書無しさん
垢版 |
2021/07/27(火) 08:02:46.90
if条件がbool型じゃなくてもOKな言語だとミスありがち

たった1文字のタイプミスで大量のChrome OSデバイスがログイン不可になってしまう
https://gigazine.net/news/20210726-google-typo-bricking-chrome-os/
Chrome OSが「バージョン91.0.4472.165」にアップデートれるとログインできなくなってしまう原因
【誤】if (key_data_.has_value() & !key_data_->label().empty()) {
【正】if (key_data_.has_value() && !key_data_->label().empty()) {
2021/07/27(火) 12:25:45.32
今時の言語ならlinterとか反応して警告出してくれても良さそうなのにな...
2021/07/27(火) 14:27:05.09
テストしたのか?
338仕様書無しさん
垢版 |
2021/07/28(水) 07:39:06.69
Facebook、次期ビルドシステムの開発でRust言語の採用を明らかに
https://www.publickey1.jp/blog/21/facebookrust.html
2021年7月28日
339仕様書無しさん
垢版 |
2021/07/30(金) 11:44:32.13
Facebook、開発言語に「Rust」採用 次期ビルドシステムの開発で
https://www.itmedia.co.jp/news/articles/2107/28/news152.html

Rustを用いることで、どのような利点があるのか。
Facebookは記事の中で次の4つの項目を挙げています。

@Rustのasync/awaitシンタックスは、非同期のコードをとてもスムーズに記述できますし、
Rustは複雑な並行処理の詳細を正しく理解するのに役立ちます。
BuckのJavaの計算を一つ一つ並行処理に移行するのは数カ月に及ぶ困難な作業でしたし、
シングルスレッドの大きなボトルネックがまだ存在しています。

ARustには、開発をより簡単で楽しいものにしてくれる多くの高レベルな言語機能があります。
それらはenum、パターンマッチング、trait、手続き型マクロなどで、
Rustの開発者の多くに愛されています。

BRust はメモリの割り当てをより細かく制御することができます。
ガベージコレクションのある言語では、たとえジェネレーショナルコレクションであっても、
Buckが行うようなインクリメンタルな演算に対応するのは困難です。

CRustは高性能です。
Rustに移植することで劇的な性能向上を私たちは見てきました。
2021/07/30(金) 18:12:19.10
オライリー、はやく改訂してくれええあええぃ!
2021/07/30(金) 21:45:27.44
しかしC/C++でバグを生まないのは至難の業と言うか不可能だな
2021/07/31(土) 00:06:01.29
不可能なの?
へぇ
2021/07/31(土) 04:15:28.86
>>341
規模が大きくなって、開発者が10人を超えるようになるともう不可能だな
2021/07/31(土) 07:32:42.09
プログラマが原因なのに言語のせいにするなよ
2021/07/31(土) 07:39:34.60
>>344
まあそうなんだけど
現実的にはバグを作り込みやすい言語とそうではない言語はあるわな
346仕様書無しさん
垢版 |
2021/08/02(月) 09:49:50.65
Jay Oster氏「Rustは、安全でパフォーマンスが高いだけでなく、次のような機能を備えている」

・ジェネリック型
・トレイト
・代数型
・マルチパラダイム
・おそらく世界で最も優れた依存関係管理ツールとビルドツールを備え、「依存関係地獄」の問題を実質的に解決
・インラインドキュメントとテスト、ベンチマークの素晴らしいサポート
・ライブラリや抽象化、ツールについてエコシステムが成長中
・手続きマクロ
・既存コードとのFFI(他言語関数インタフェース)相互運用性
・数十のプラットフォームのサポート
・有益で、間違いなく満足のいく開発者エクスペリエンスの提供

 「さらにRustは、以下を全て兼ね備えた唯一の言語だ」

・メモリ安全性
・型安全性
・データ競合が発生しない
・AOT(Ahead-of-time)コンパイル機能
・ゼロコスト抽象化に基づいており、これを促進する
・最小限のランタイム(ガベージコレクションやJITコンパイラ、VMがない)
・少ないメモリ使用量(小型マイクロコントローラーのようにリソースの制約がある環境でもプログラムが動作する)
・ベアメタルをターゲットにできる(例えば、Rustを“高次アセンブラ”として使い、OSカーネルやデバイスドライバを作成できる)
2021/08/05(木) 16:02:16.14
>>344
典型的な「日本人の悪いところ」だな。

「名人になってノーミスでクリアしないやつが悪い」って言って、
思考停止して全体効率を下げる(もしくは上げない)。
2021/08/06(金) 16:43:29.52
c++は糞野郎ほどいらん機能つかってドヤってメンテしづらいコード残して去っていく。
2021/08/06(金) 16:44:54.60
数学の差
2021/08/06(金) 18:26:51.76
>>348
C++の「いらん機能」を具体的に述べよ
2021/08/06(金) 21:14:25.70
>>350
STL!
2021/08/06(金) 21:31:03.49
機能ひとつづつ使う分には構わんが、複数コンストラクタ、演算子オーバーロード、ムーブあたりをがっつり混ぜて使うと普通に死ぬ
2021/08/06(金) 22:13:59.36
C++でバグを出さないようにするのはクモの巣の隙間に腕を通すようなもの
2021/08/06(金) 22:28:37.94
>>353
お前のししとうちんこなら通りそうだな。
どういう意味かわかるか?
C++はちんこで書け!!
2021/08/06(金) 22:43:40.37
C++使いは魔術師みたいな者じゃからのう
356仕様書無しさん
垢版 |
2021/08/07(土) 05:03:17.11
もちろんC++でも完璧にミスが起きないように注意してプログラミングしているのだがどうしてもメモリ管理ミスバグが後から見つかっている
そして大手IT企業ほどRust採用している現実を見ればわかる
2021/08/07(土) 05:08:37.46
世界最高レベルの大手ITの開発者でもバグを無くせないんだから人間の力だけでバグを無くすことは不可能に近いんだろうな
2021/08/07(土) 05:49:56.45
C++はヘタクソが組み上げると収集がつかなくなる
フリースタイルだからね
359仕様書無しさん
垢版 |
2021/08/07(土) 05:57:11.37
>>357
単純にC++が欠陥言語なだけ
だからこそC++からRustにするだけでメモリ安全性を確保できてその種のバグが生じなくなった
2021/08/07(土) 06:07:35.97
Rustに切り替えるからといって普段からバグ出している小わっぱが急に出さなくなるとは到底思えない
2021/08/07(土) 06:12:46.24
プログラミング始めた頃に比べてメモリは数千倍になったのに
まだメモリがメモリが言ってるの何でだろ
2021/08/07(土) 06:26:59.57
C++使いはまともにソフトウェアを作ることができない
C++を書くのが手段ではなく目的になっているためだ
2021/08/07(土) 06:39:41.33
言いきるアンタは見ている世界が狭いと思う
364仕様書無しさん
垢版 |
2021/08/07(土) 08:49:36.08
>>360
一流のプログラマーたちが気付かない複雑な状況で起きている
オープンソースの基本ライブラリで何年間も誰も発見できなかったものもある
人間が手動で完璧に管理するのは無理だと歴史が証明している
2021/08/07(土) 09:31:48.11
人間がダメなのにRustにしたらいいという謎理論
2021/08/07(土) 10:14:29.45
>>361
メモリバグを踏むかどうかはメモリ量とは関係ないってのが前提だが
(単に昔はセキュリティリスクも低ければ、ブルースクリーンが謝れば許されたとかもあり)

361の感覚とは逆で、要求される量に対してメモリはたいして増えてないだろ
個人利用のブラウザ一つとってもどれだけメモリ食ってると?
ましてや、商用のサービスのサーバーはじめメモリ消費がどれだけあることか
367仕様書無しさん
垢版 |
2021/08/07(土) 10:16:46.42
>>365
意図的に誤解を書いてるのか知らんが、微妙に違う
人間がミスしたら、rustのコンパイラがコンパイルさせないので
問題をコンパイル時に人間が気がつく可能性があがる
368仕様書無しさん
垢版 |
2021/08/07(土) 10:59:00.87
>>365
@理論的に、こういう使い方をしていればメモリ安全性が保たれる、というのはある。

AしかしC++プログラマーは、それを知らない or 知ってるが守らない or 守ろうとしているが人間なのでミスはあるしミスってもC++コンパイラは通してしまう。

BそこでRustはメモリ安全性が保たれている場合のみコンパイラが通すようにした。つまりコンパイルが通ったRustプログラムはメモリ安全性が保証される。
2021/08/07(土) 14:16:52.61
GCと何か違うの?
2021/08/07(土) 14:22:49.34
コンパイルいまーきみーはじんせいのーおおきなーおおきなーぶたいにーたーちー
2021/08/07(土) 14:36:41.45
>>369
javaとかの nullpointerexceptionとかがrustならコンパイル通れば起こらないとか
実行時エラーのいくつかが起きないのと
GCの実行にかかる時間がまるまる消えるので早いし、メモリ効率も良い
2021/08/07(土) 18:49:03.44
>>354
> お前のししとうちんこなら通りそうだな。
> どういう意味かわかるか?

あんたがひどく下品なのはわかる。
2021/08/07(土) 19:45:57.88
>>368
2に該当する人間がrust使ってもコンパイル通すためにunsafe使いまくる未来しか見えん。
2021/08/07(土) 20:04:23.74
>>373
「人間なので」以降の部分読み飛ばしてませんか
2021/08/07(土) 20:06:42.29
人間だもの

コンパイルだもの

果物だもの
2021/08/07(土) 20:08:45.16
メモリ確認機能があるからコンパイルに時間かかりそうだな
実際どうなの?
2021/08/07(土) 20:28:26.54
>>376
一度コンパイル通れば、それ以降についてはCとかと変わらない
初回については色々と条件が違うのもあって比較しにくいが重めかもしれない
2021/08/08(日) 00:00:28.58
普通にクソ重たいわ。なんでその種の嘘をつくのか。
2021/08/08(日) 00:05:55.98
遅く無いだろ。そもそも、基本バックエンドはllvmそのものだぞ
アホでも秒で調べられる話に嘘言い出してるのは、脳味噌どっかに捨ててきたのか?
2021/08/08(日) 00:24:10.05
いやどう考えても遅いだろ。。llvmが速いと思ってる時点でお察し。。
381仕様書無しさん
垢版 |
2021/08/08(日) 00:41:20.60
>>380
本当に脳味噌捨てて 草 www
2021/08/08(日) 03:19:54.05
--release付けなくて遅い遅い言うのは初心者あるある
2021/08/09(月) 10:30:46.07
いやもうまともな規模でc/c++でのビルドしたことないのはよくわかったよ。
そういう趣味でやってる分にはなんともないだろうし好きに言ってりゃ良いよ。
2021/08/09(月) 16:20:20.96
なんかコンパイル速度と実行速度の話題ごっちゃになっとらん?
2021/08/09(月) 17:29:04.43
使う人間が悪いっていう何よりの証拠
2021/08/10(火) 02:38:38.79
それにしても、自分の意見が通じないと分かったらファビョるの
初心者ムーブにしか見えなくて可哀想
387仕様書無しさん
垢版 |
2021/08/10(火) 03:19:31.85
開発者の「好きな言語」や「嫌いな言語」--Stack Overflow調査
https://japan.zdnet.com/article/35174931/
2021-08-09 08:30

181カ国、8万人以上の開発者がお気に入りの技術に投票した結果、プログラミング言語「Rust」が再びランキングのトップに立った。

Rustは、プログラマー向けのQ&Aサイト「Stack Overflow」が毎年実施している調査で、6年連続で「最も好ましい言語」の首位になっている。

この調査「2021 Developer Survey」は、2021年5月25日〜6月15日にかけて実施され、181カ国の開発者8万3439人から回答を得た。
2021/08/10(火) 06:41:38.67
うわぁC++嫌われ杉wワロタw
みんな頭悪いから仕方ないか
389仕様書無しさん
垢版 |
2021/08/10(火) 06:51:06.69
Rustってのはメモリ監視を強化したC言語であるから、
早くて安全なのは、まあ、そうなんだが
メモリ監視を強化しなければならないほど、
プログラマは馬鹿で無責任な奴が多いってことだ。

高卒やらFランやらの計算機を理解していないクズどもが
Cで組むとかそれがそもそも問題なわけで
クズにRustで組ませても、それはそもそもクズプログラムにしか
ならないわけで、クズプログラムの量産につながってしまうだけである。

一部の才能のある人にだけ組ませるには
Cのほうがよい
Rustは敷居が高いくせに自由度がないという、
意味不明の言語だ

まあ朝鮮人にはお似合いの言語だ(笑)
390仕様書無しさん
垢版 |
2021/08/10(火) 06:51:06.89
Rustってのはメモリ監視を強化したC言語であるから、
早くて安全なのは、まあ、そうなんだが
メモリ監視を強化しなければならないほど、
プログラマは馬鹿で無責任な奴が多いってことだ。

高卒やらFランやらの計算機を理解していないクズどもが
Cで組むとかそれがそもそも問題なわけで
クズにRustで組ませても、それはそもそもクズプログラムにしか
ならないわけで、クズプログラムの量産につながってしまうだけである。

一部の才能のある人にだけ組ませるには
Cのほうがよい
Rustは敷居が高いくせに自由度がないという、
意味不明の言語だ

まあ朝鮮人にはお似合いの言語だ(笑)
391仕様書無しさん
垢版 |
2021/08/10(火) 07:05:30.70
頭が悪い人は能力不足なよりRustでプログラミングが上手くできないケースもあるようだ
そしてアンチ化
2021/08/10(火) 07:46:58.33
公式資料よりブログ記事の「できたよーサンプルー」が参考資料になるからな
2021/08/10(火) 07:48:14.40
RustとC++ならどっちのほうが簡単なの?
2021/08/10(火) 07:53:22.32
C++の方が経験者が多いから答えを見つける機会が多い
2021/08/10(火) 08:03:24.11
>>393
最初の段階ならRustの方が簡単
公式がまぁまぁしっかりドキュメント作ってるのもあって調べるのも簡単だし
ソースが見やすい(テストがだいたい梱包で利用の仕方が分かりやすかったり)
C++は(STLとか標準ライブらいの)ソースが複雑で、まぁ初心者には意味不明
2021/08/10(火) 08:11:24.27
ココのランキングだとRustのRの字も出て来んのだがw
https://xtech.nikkei.com/atcl/nxt/column/18/01711/070500001/
397仕様書無しさん
垢版 |
2021/08/10(火) 08:13:00.70
Rustは様々な言語の良い部分を上手く洗練して取り込んでいて非常に使いやすい
C++は歴史的に増築改築を重ねて複雑化していてわかりにくいし綺麗でない
2021/08/10(火) 08:14:55.46
綺麗かどうかは書く人間による
アタマが悪いかオカシイ人が組むとあり得ない方向に行って帰ってこれなくなる
399仕様書無しさん
垢版 |
2021/08/10(火) 08:17:53.46
>>396
それは信頼できない

>日経クロステックではWebアンケート「プログラミング言語利用実態調査 2021 夏」を実施した。
>調査期間は2021年5月31日〜6月23日。455人の会員から回答を得た。

一方でRustが最も好ましい言語1位となったアンケートは以下で信頼できる

>>387
>この調査「2021 Developer Survey」は、2021年5月25日〜6月15日にかけて実施され、
>181カ国の開発者8万3439人から回答を得た。
2021/08/10(火) 08:22:24.19
どんな言語どんな環境かは開発者の好き好き
何を作ってどれだけ売れたかだろ
401仕様書無しさん
垢版 |
2021/08/10(火) 08:27:31.71
>>400
大手IT企業がこぞって従来のC++やJavaからRustへ切り替えていってる現状はこれまでのプログラミング言語たちと異なりますね
402仕様書無しさん
垢版 |
2021/08/10(火) 10:16:54.38
>>396
VBAが6位なランキング持ってきて....
逆に、そういうのにはRustが出てこないってのは其れはそれで別の意味があるだろうが
2021/08/10(火) 13:41:45.98
IT土方の動向を探るにはIT土方も入れたアンケートではないと実態を把握できないからね
404仕様書無しさん
垢版 |
2021/08/11(水) 19:57:33.89
>>335
ブーリアンといっても内部的にはただ数値だし、条件を反転させることもするから、間違いは同じくらい起こるよ。
405仕様書無しさん
垢版 |
2021/08/11(水) 19:58:29.67
>>402
マイナーなものがランキング上位のわけがない。
406仕様書無しさん
垢版 |
2021/08/12(木) 04:20:25.65
>>404
それは強い静的な型システムを知らないと自白してる
その件に限らずRustはコンパイル時点で様々なメモリ安全性や使い方の間違いの防止を保証できる
2021/08/12(木) 14:27:52.54
>>399

見てて恥ずかしくなるほどの母数の差だな。

「会員455人」対「181カ国の開発者8万3439人」て…。

前者、サンプル数が少なすぎて母集団が歪んでる可能性が高い。
2021/08/12(木) 14:47:05.65
「母数」の誤用について
https://taroyabuki.github.io/2018/01/15/misuse-of-the-word-parameter/
409仕様書無しさん
垢版 |
2021/08/12(木) 19:49:02.06
goにくらべたら全然自由だろ
2021/08/12(木) 22:34:10.33
>>408

へえ。勉強になったよ。ありがと。

でも、複数の辞書に載るほどの用法ならもはやそれは
その単語がその意味として日本語に定着しちゃってるって
ことにならないかな。

「新た」は「あらた」なのに、最近の若い女官たちが「あたら
しい」とかひっくり返した言葉をはやらせてて実にみっともない。

みたいなこと言ってた人もいたけど定着したし。

「全然大丈夫」なんて最初は抵抗あったけど、もはや全然は
否定の語尾を必ず伴うなんて思ってる人いないんじゃないかなあ。
2021/08/13(金) 06:42:05.74
まともな統計学的主張として扱われなくていいならその意味で「母数」を使い続けていいよ
412仕様書無しさん
垢版 |
2021/08/13(金) 07:46:58.15
横からだけど>>407の「母数」は「分母の数」の意味だと誰にでも明らかだから揉める必要ないように見えます
413仕様書無しさん
垢版 |
2021/08/13(金) 07:55:06.74
だから前から言ってるだろ。
それはSTLだって。
2021/08/13(金) 08:00:18.30
そもそも「母集団」も間違ってるんだよな
母数の誤用はそれ単独の問題じゃなく統計の基礎知識を誤解している兆候
415仕様書無しさん
垢版 |
2021/08/13(金) 08:15:39.58
統計の基礎知識なんか知らなくても
専門用語なんか持ち出さなくても
>>407の母数は一般用語として意味わかるし
文句をつけてる人は荒らしかキチガイかどちらか
2021/08/13(金) 11:20:34.15
普通にアスペだよ
2021/08/14(土) 07:33:48.44
Rustを敵視してCを擁護してJavaで食ってる野郎の知的レベルと人間性がよく分かる書き込みだな
418仕様書無しさん
垢版 |
2021/08/16(月) 22:38:11.33
RustはイキりPGが推してるだけで案件はほぼ無いとか。企業側は過去にイキりPGの影響で採用したgoで懲りて臆病になっているらしい。
個人的にはCが滅びてくれれば次は何だって良いが、過去の膨大な資産がある限りあと30年は難しいだろうな。
2021/08/16(月) 22:58:23.83
Golangは流行り始めてるぞ
2021/08/16(月) 23:00:32.25
Microsoft、Google、Mozilla、Huawei、Facebook「僕達イキってます」

プログラミング言語「Rust」のための「Rust Foundation」設立 -- AWS(Amazon)、Microsoft、Google、Mozilla、Huaweiが創設
https://japan.zdnet.com/article/35166267/

Facebookが「Rust Foundation」に参加
https://japan.zdnet.com/article/35170192/
421仕様書無しさん
垢版 |
2021/08/16(月) 23:26:08.19
>>419
Goは大規模だと大量に増えてきているが中規模以下だと開発の足枷で苦労話が絶えない。適材適所なんだがイキりは大規模事例が絶対という単純思考が多いようで。

>>420
それ保険やで。○○ Foundationで形骸化したものも多いやろ。Xenとか。
2021/08/16(月) 23:28:44.91
また、いつもの妄想語りか...
2021/08/16(月) 23:52:35.20
糖質なんでね
2021/08/17(火) 00:46:45.84
個人的にはC++を作り直すべきだと思う
もっとシンプルなC言語のスーパーセットを開発したほうが良い
ライブラリが豊富でユニコード対応が楽でマルチプラットフォーム
まさに夢のような言語
2021/08/17(火) 01:35:55.35
EC++みたいな話
2021/08/17(火) 01:41:21.21
まさにそれがgolangの立ち位置なのでは
2021/08/17(火) 01:43:43.90
GoはC言語のスーパーセットじゃないじゃん
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況