Rustを使ってみませんか?
皆さんは普段どのようなプログラミング言語を使用していますか?
私は仕事で C#、VB.net、C/C++、java。VBAあまり経験はないのではFortran、java script、アセンブラ、、、と幾つか使用経験があります。どの言語も良い点、悪い点があり、愛すべきところはどのプログラム言語でもあります。
で、今回紹介したいプログラム言語はRustです。特徴として、
- ゼロコスト抽象化
- ムーブセマンティクス
- データ競合のないスレッド
と、多々あります。詳細は公式サイトを御覧下さい。
ただ、私が最も紹介したいのは以下の要素です。
- コンパイラによる強力な静的解析
- C/C++プログラマがイメージしやすいメモリ管理
java ee 7などフレームワークが強力にサポートしてくれる環境ではアノテーションを使用して動的に処理されることで開発効率、メンテナンス性が向上します。しかし、実行時で問題が発覚するため/メタプログラムレベルでのエラーなど問題が発生したときはとても複雑な状況になります。また、高級な言語になるほどオブジェクトのライフサイクルが掴みにくく、これも複雑と思います。
Rustはコンパイラが静的にチェックしてくれる範囲が広く、実行時にエラーが出にくいように工夫されております。例えば、
- 変数の値で暗黙のアップキャストが存在しないことで不用意な値の扱いによる動的エラーの抑止
- 数値の結果がオーバーフローするとわかる時点でコンパイルエラーがでる
- 変数束縛による不定値を使用したプログラムは記述できない
- nullなし
- 例外機構なし
など、あります。これは体験いただけたらわかると思います。同傾向として関数言語(Haskellはかじったことがあります)もそうかと思いますが、関数言語は再帰で表現する処理が多く、コードはシンプルですが処理自体はイメージしにくく困った記憶があります。
次に意外とC/C++のプログラム経験者にはメモリ管理がわかりやすいです。
- スタック領域はスコープを抜けると開放
- スコープを跨ぐにはライフタイムを指定(C/C++のスコープ外に宣言、ポインタ渡し)
- もっと広いスコープではstatic指定(グローバル変数みたい)
と、近いイメージがあります。これはRustがシステム記述言語でありC/C++とターゲットが同じで、両者ともOSのメモリ管理を表現しているためでしょう。
Rustでプログラミングするとコードの実行されていくイメージが意外と掴みやすく、不思議と安心感があります。
Rustを使ってみませんか?