今日は最近気になるプログラミング言語の「Rust」についてどんなものか調べてみたので概要レベルですが、ざっくり記載していきたいと思います。
技術的な内容ではないのでありからず。
Rustとは?
Wikipediaによると以下のように書かれています。
RustはMozillaが支援するオープンソースのシステムプログラミング言語である。 Rust言語は速度、並行性、安全性を言語仕様として保証するC言語、C++に代わるシステムプログラミングに適したプログラミング言語を目指している。
Wikipedia
Rustの日本語ドキュメントでは「Rustは安全性、速度、並行性の3つのゴールにフォーカスしたシステムプログラミング言語です。」と同様のことが書かれていますね。
プログラミング言語Rust – Rustの日本語ドキュメント
ニュースではセキュリティに強い言語としてよくRustが紹介されていたりします。
なので、Rustを使うメリットとしては高いセキュリティがポイントなのでしょう。
MicrosoftもWindows 10のコンポーネントの一部をプログラミング言語のRustを使って書き換えを進めているとニュースにありました。
セキュリティの高いRustを使ってWindows 10に発生する脆弱性を回避する目的のようです。
https://msrc-blog.microsoft.com/2019/11/07/using-rust-in-windows/
Rustの現状
現在Rustは、Google、Microsoft、Mozilla、Yelp、Dropbox、Cloudflare、AWSといった有名大手企業がシステム開発言語としてRustを採用していますね。
その他だと、前述したMicrosoftはWindowsをRustで書き直していますし、ブラウザのFirefoxもRustで書き直しをしているそうです。
また、Facebookの仮想通貨「Libra」のコアはRustで開発されているとのこと。
最近では、Amazon Web ServicesがRustのスポンサーになっています。
こう大手企業の動向をみるとなかなか勢いがすごいのを感じますね。
Rustの特徴
RustはC/C++と類似したシステムプログラミング言語です。
もともとRustはMozillaで働いていたGraydon Hoareにより、C++の問題点を改善するための個人プロジェクトとして誕生した経緯があるので C++ と類似しているのは当たり前かもしれませんが。
簡単な特徴としては、オブジェクト指向、関数型・手続き型プログラミングといった複数の特徴を備えています。
C/C++と同様に高速でメモリセーフかつ並列性に優れるという特徴があるとされていますね。
CやC++の代替を目指している言語です。
少し細かく見てみますと以下のような感じ。
安全性の面ではメモリセーフに基づき設計されいるそうです。
速度の面ではガベージコレクション( プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能)がなく、コンパイル(プログラミング言語から機会語に変換)時に全ての変数の寿命が分かるため、自動でメモリを破棄し、C++と同程度の処理速度を誇っているらしい。
mallocしてfreeするとかの手間がないのがいいですね。
だいたいバグの原因になりますし、デバックしてもわかりずらいので自動ってところがステキです。
また、並列性の面ではCやC++では難しかったマルチスレッドが実装しやすいらしいです。
という感じです。
といかC言語ってマルチスレッドできたんですね。
CやC++とかはメモリを手動で管理するので、メモリの管理が開発者に委ねられていて未割り当てのメモリにアクセスしたりしてしまいます。
やっぱり、自動でメモリの管理をしてくれるのは素晴らしい印象です。
StackOverflowによる開発者調査でもここ数年最も人気の高い言語となっており、その人気はさらに高まると予想されているようです。
その他、特徴として書くのはおかしいかもしれませんが、日本語のソースが多くあります。
特にチュートリアルが日本語であるのはうれしいですね。
https://doc.rust-jp.rs/book/second-edition/
まとめ
CやC++の代替になりそうだと個人的には思います。日本ではあまりメジャーではないプログラミング言語です。
ですが、大手企業の動向をみると今後普及しそうな予感がします。
ただ、Rustは学習コストが高いプログラミング言語です。言語仕様が複雑で難しい。
独自概念として「ライフタイム」「オーナーシップ」「静的ディスパッチ」「動的ディスパッチ」などが導入されています。
C++の後継の位置付けなのでC++やっている人なら比較的にいいかもしれませんが、勉強は頑張る必要がありそうです(^^;
他にもRustの記事を書いていますのでよかったらどうぞ。
公式は以下をどうぞ。
公式サイトURL:https://www.rust-lang.org/
レポジトリURL:https://github.com/rust-lang/rust