ほあれは21階に住んでいて、階段を上るとイライラした。 「ばかげている」と彼は思った。 エレベーター クラッシュすることなく動作します!」 そのようなクラッシュの多くは、プログラムがメモリを使用する方法に問題があることを Hoare は知っていました。 エレベーターなどのデバイス内のソフトウェアは、C++ や C などの言語で記述されることが多く、プログラマーが非常に高速で非常にコンパクトなコードを記述できることで有名です。 問題は、これらの言語がメモリ バグ (クラッシュの原因となるエラー) を誤って導入しやすいことです。 Microsoft は、そのコードの脆弱性の 70% が、これらの言語で記述されたコードのメモリ エラーによるものであると推定しています。
私たちのほとんどは、階段を 21 段も上っていることに気がついたら、ただ腹を立ててそのままにしておくでしょう。 しかし、ホーアはそれについて何かをすることに決めました。 彼はラップトップを開き、新しいコンピューター言語の設計を開始しました。これにより、メモリ バグのない小さくて高速なコードを記述できるようになることを望んでいました。 彼は、「生き残るために過剰に設計された」非常に丈夫な菌類のグループにちなんで、それを Rust と名付けました。
17 年後、Rust は地球上で最もホットな新しい言語の 1 つになりました。 の 最も暑い。 Rust で書いているコーダーは 280 万人いて、Microsoft から Amazon までの企業は Rust を将来の鍵と見なしています。 チャット プラットフォームの Discord は Rust を使用してシステムを高速化し、Dropbox は Rust を使用してファイルをコンピューターに同期し、Cloudflare は Rust を使用してすべてのインターネット トラフィックの 20% 以上を処理しています。
コーダー ディスカッション ボードの Stack Overflow が世界中の開発者を対象に年次調査を実施したとき、Rust は 7 年連続で最も「愛されている」プログラミング言語と評価されています。 米国政府でさえ、プロセスをより安全にする方法として、Rust のソフトウェアを熱心に推進しています。 この言語は、多くの成功したオープンソース プロジェクトと同様に、納屋を育てるものになりました。現在、何百人もの熱心な貢献者がおり、その多くはボランティアです。 Hoare 自身は 2013 年にプロジェクトから離れ、喜んで Mozilla のコア チームを含む他のエンジニアに任せました。
誰かが新しいコンピューター言語を作成することは珍しくありません。 多くのコーダーが常にサイド プロジェクトとして小さなものを作成しています。 しかし、JavaScript、Python、Java などと並んで有名な言語のパンテオンの一部になることはめったにありません。 Rustはどのようにそれをしましたか?
Rust が非常に便利な理由を理解するには、プログラミング言語がコンピューター メモリをどのように処理するかを詳しく調べてみる価値があります。
非常に大雑把に言えば、コンピューターの動的メモリは黒板と考えることができます。 ソフトウェアの一部が実行されると、常に小さなデータが黒板に書き込まれ、どれがどこにあるかを追跡し、不要になったら消去します。 ただし、コンピューター言語が異なれば、これをさまざまな方法で管理します。 C や C++ などの古い言語は、ソフトウェアがいつどのように黒板を使用するかについてプログラマーに多くの権限を与えるように設計されています。 この能力は役に立ちます。動的メモリを細かく制御できるため、コーダーはソフトウェアを非常に高速に実行できます。 そのため、C および C++ は、ハードウェアと直接対話する種類の「ベア メタル」コードを記述するためによく使用されます。 Windows や Linux のようなオペレーティング システムを搭載していないマシン (透析マシンからレジまですべてを含む) は、そのようなコードで実行されます。 (より高度なコンピューティングにも使用されます。ある時点で、オペレーティング システムはハードウェアと通信する必要があります。Windows、Linux、および MacOS のカーネルはすべて、大幅に C で記述されています。)
“これは 楽しい Rust を書くことは、ちょっと変な言い方かもしれませんが、言語が素晴らしいというだけです。 楽しいです。 まるで魔術師のように感じますが、それは他の言語では決してありません。」
Parker Timmerman、ソフトウェア エンジニア
しかし、C や C++ などの言語は高速ですが、トレードオフがあります。 コーダーは、どのメモリに書き込まれているか、いつ消去するかを注意深く追跡する必要があります。 うっかり何かを消し忘れたら? クラッシュを引き起こす可能性があります。実際に何かがあるときに、後でソフトウェアがメモリ内の空であると判断したスペースを使用しようとする可能性があります。 または、デジタルの侵入者に侵入する方法を与えることもできます。 ハッカーは、プログラムがメモリを正しくクリーンアップしていないことを発見する可能性があります。 したほうがいい ワイプされたデータ (パスワード、財務情報) はまだうろついていて、こっそりとそのデータを取得します。 C または C++ コードの一部がどんどん大きくなるにつれて、どんなに注意深いコーダーでも多くのメモリ ミスを犯し、ソフトウェアがバグでいっぱいになる可能性があります。