楽しいから
一般的な理由
実行速度が速い
CやC++に代わるような言語を目指している
このため、Pythonなどのスクリプト言語よりずっと速い
メモリ管理が厳しく、安全である
CやC++だと配列などのメモリ管理をプログラマが注意する必要がある (例)
不正なメモリアクセスをすると、よくて Null Pointer Exception、悪い時は未定義動作により、アプリケーションが壊れる
しかも実行時にならないと、エラーが分からないこともある
Rustはライフタイムや所有権や借用という仕組みおよび、メモリの使い方をコンパイル時にチェックすることにより、安全なメモリ管理がしやすい
また、変数を宣言、代入するときにきちんと型を指定する必要があり、これも安全性と速度に貢献している
(ある程度は型を推論してくれる)
こんな感じ
変数の宣言は let を使う
行末はセミコロンで終わる
(初めてPythonに触った時、改行とインデントで制御しているのに驚いた…)
let a: i32 = 32;
let b: f64 = 0.64;
並列処理をしやすい
並列処理をしやすいように設計されている
また、上記メモリ管理のため、並列処理時にもデータが不用意に変更されたり、消されたりしない
とはいえ、正直この辺りは触ったことがないのでよく分からない
Rustの特徴
一般的な理由の部分で述べた通り
keenさんの分かりやすいスライド
https://keens.github.io/slide/anzennagengorust/
-
- 実行速度が速い
-
- メモリ管理が厳しく安全である
-
- 並列処理をしやすい
-
- rustupによりRustの管理が容易
- cargoにより実行コードやライブラリの管理、テストが容易
上記の事情から人気
StackOverflowではずっと人気上位
個人的な動機
-
- 学生時代にCでシミュレーションを書いていた
この記事 が面白く、CやC++に代わる言語として興味があった
書きっぷりが割と気持ちいい
コンパイラに引っかかることは多いが、エラーメッセージが親切
システムに近いような言語を触ってみたかった
データサイエンティストとしてのメリット
-
- データ量が多かったり、速度が求められるサービスを作ったりするときに有用
-
- PythonやRとは設計思想の違う言語を学ぶことで、技術の幅が広がる
- データ分析系のクレートも多数存在している (ばんくしさんの記事)
どう学ぶか
Rust by Exampleをやった後に、竸プロの問題をやるのがとっつきやすいかと
-
- Rust by Example
-
- The Book
-
- Rust初心者はまず競プロから始めたら良さそうって話
- AtCoder に登録したら解くべき精選過去問 10 問を Rust で解いてみた