Rust は Mozilla によって開発されているシステムプログラミング用のプログラミング言語です。C/C++ と同じく、プログラムはネイティブコードにコンパイルされ、実行速度も C/C++ に匹敵するといわれています。これはあとで試してみましょう。
Rust は 2015 年 5 月 16 日に ver 1.0 がリリースされた新しい言語です。並列処理、関数プログラミング、オブジェクト指向プログラミングなど、最近の言語の良いところを取り入れています。ガベージコレクションはありませんが、データに「所有権」[*1] という概念を導入することで、効率的で安全性の高いメモリ管理を行うことができるそうです。
M.Hiroi は Rust のことを C++ と同じく何でもできるプロフェッショナルツールという印象を持っています。メモリ管理のほかにも難しいところがたくさんあるとは思いますが、Rust は新しい言語なので、C++ よりも学習しやすいのではないか、と期待しています。
M.Hiroi は Rust でプログラムを作るのは初めてです。本稿では、簡単なプログラムを作りながら Rust を勉強していきたいと思っています。まあ、初心者が作るプログラムなので、Rust らしいプログラムは書けないと思います。間違いやお気づきの点がありましたら、メールでご指摘いただけると助かります。本稿は M.Hiroi の「覚え書」にすぎません。たいしたことはできませんが、よろしければお付き合いくださいませ。
Rust は次のページからインストールすることができます。
Ubunts 系の OS の場合、インストールは簡単です。次のコマンドを入力して画面の指示に従うだけです。
curl https://sh.rustup.rs -sSf | sh
curl (cURL) は URL シンタックスを用いてファイルを送信または受信するコマンドラインツールです。次のコマンドでインストールすることができます。
sudo apt install curl
その後、シェルで rustc --version が実行できればインストールは成功です。rustc は Rust のコンパイラです。
mhiroi@mhiroi-VirtualBox:~$ rustc --version rustc 1.18.0 (03fc9d622 2017-06-06)
Windows の場合、rustup-init.exe をダウンロードして実行します。ただし、この方法は Visual C++ビルドツール が必要になります。このツールをインストールしたくない場合、次のページから別のインストーラをダウンロードして実行します。
x86_64-pc-windows-gnu.msi
M.Hiroi の環境では、このインストーラで Rust をインストールすることができました。
それでは、お馴染みの「たらいまわし関数」を使って、Rust と clang, clang++ (version 3.8.1) の実行時間を計測してみましょう。Rust の場合、たらいまわし関数は次のようになります。
リスト : たらいまわし関数 (tarai.rs) fn tak(x: i32, y: i32, z: i32) -> i32 { if x <= y { z } else { tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y)) } } fn main() { println!("{}", tak(24, 12, 0)); }
Rust の拡張子は .rs です。時間計測はコマンド time を使います。time で時間を計測する場合、プログラムの起動時間も含まれることに注意してください。実行結果は次のようになりました。
mhiroi@mhiroi-VirtualBox:~/work$ rustc -O tarai.rs mhiroi@mhiroi-VirtualBox:~/work$ time ./tarai 1 real 0m7.555s user 0m7.536s sys 0m0.000s mhiroi@mhiroi-VirtualBox:~/work$ clang -O2 tarai.c mhiroi@mhiroi-VirtualBox:~/work$ time ./a.out 1 real 0m7.788s user 0m7.768s sys 0m0.004s mhiroi@mhiroi-VirtualBox:~/work$ clang++ -O2 tarai.cpp mhiroi@mhiroi-VirtualBox:~/work$ time ./a.out 1 real 0m7.753s user 0m7.744s sys 0m0.000s
Rust は C/C++ とほぼ互角の速度を叩き出しています。Rust がこんなに速いとは驚きました。興味のある方はいろいろ試してみてください。
『お気楽 Rust プログラミング超入門』の著作権は筆者「広井誠 (Makoto Hiroi)」が保持します。無断使用や無断転載は禁止いたします。『お気楽 Rust プログラミング超入門』で作成したプログラムはフリーソフトウェアとします。ご自由にお使いください。プログラムの改造や配布もご自由にどうぞ。その際は出典を明記してくださるようお願いいたします。
ただし、ドキュメントの内容とプログラムは無保証であり、利用したことにより生じた損害について、作者「広井誠 (Makoto Hiroi)」は一切の責任を負いません。また、これらのプログラムを販売することで利益を得るといった商行為は禁止いたします。