概要
この記事では、PythonでPCツール等を作成していた人がRustを触ってみての感想を書いたものです。
まだまだRustを触ったばかりなので、間違ったことを言っているかもしれませんが、Rustを勉強しようと思っている人や僕と同じように勉強中の人に、Rustの初学者がどんなことを感じるのか?が伝わればいいと思います。
なぜRustを勉強し始めたのか?
理由としてはいくつかあります。
Rustはメモリを安全に使用するために他の言語ではあまりみられない方法を採用していると聞いてその仕組みに興味を持ったからです。
現在Pythonで作成しているツールの実行速度が遅くて時間がかかるというシチュエーションがあったため、Rustにしたら改善しないかと考えたからです。
Rustは独特な言語形態を採用しているために学習コストが高いと言われているが実際どんなものなのか?というのが知りたかったからです。
RustとPythonの比較
まずはRustの利点です。
当たり前ですが、インタプリタのPythonと比較すると、かなり速いように感じます。今度比較してみたいと思います。
Rustのコンパイラはとても優秀です。Pythonはそもそもコンパイルしませんが、Rustではプログラム実行前に様々なバグを検知してくれるため、バグの発見がとてもしやすいです。
例えば、Pythonでは実行まで実際の変数の中身の型はわかりませんが、Rustは実行前にわかるので型に合っていない操作によってエラーになるこはありません。
Rustの欠点
Rustは型に厳格な言語なため、型に対してコンパイラがうるさいです。これがRustの利点ではあるのですが、Pythonを使っていると変数にはなんでも入るため、少し面倒に感じると思います。
さらに、所有権という独特な仕様(C++のスマートポインタも同じような仕様)があり、変数を扱うだけでも、Pythonなどと比較すると難しいです。
まだ勉強し始めたばかりというのもあると思いますが、エラーの処理が面倒に感じます。エラーが発生した時に、プログラムが強制終了しても良いなら難しいことはあまりありません。ただ、正しくエラーハンドリングしようとすると、エラーが発生する可能性のある場所にその都度エラー処理を書く必要があり、面倒です。(Pythonのtry構文のようなものがないため、エラーが発生する可能性のある個所にif文みたいのを毎回書く)
Rustは結局おすすめか?
結論として、Rustはプログラム初心者にはおすすめではありません!!
なぜなら、Rustの特徴である”所有権"周りの仕様がC++などのポインタや参照などを理解していないと難しいと思ったからです。プログラム初心者はPythonなどから入った方が、細かい制約などを気にすることなく、もっとプログラムの本質的な部分を学べると思います。
ただし、PythonやC++をある程度扱える人ならば、Rustは勉強する価値があると思います。その理由としては、CやC++と同等の速度を保ちながら、メモリ安全な言語はとても有用だと思うからです。他にも、Rustを学ぶ上で、メモリアクセス等の仕組みを知る必要があるため、他の言語への理解も深まると思います。
Rustは他の言語の中でも難しい部類に入ると思いますが、将来性がある言語だと思うので、これからも勉強していこうと思います。
この記事が誰かの参考になれば幸いです。