はじめに
こんにちはfujitasan-createと申します。
最近は長期インターンでPythonやTypescriptでコードを書くことなどが多いのですが、最近C++に置き換えを目指している「Rust」という言語を知りました。
私自身、普段はPythonがメインで、インタープリタや、型安全など保証されていない環境なので、コンパイルの必要がある言語に触れた経験が全然ない状態です。
そんな私が、ゆったりRustを勉強していくブログにしていこうと思っています。
理由は特にありません。なんとなくです。
というか、私自身5か月ほど前に初めてprint("Hello world")を書いたくらいの、かなりのプログラミング初心者で、その時もなんとなく始めてここまで続けられているので、勘は結構信用できると思ってます(笑)
環境構築
とりあえず環境を立てないと何も始められないと思い、環境構築をしました。
最初に驚いたのが、Rustのインストーラーでインストールするときに、C++のビルドツールが必要ということです。
どうやら、LLVMをバックエンドとして使っていて、内部的にC++のビルド環境が使うようなツールチェーンが必要という理由らしいです。
Rust自体はC++がなくても動くけど、C製のライブラリをリンクするときに必要らしいです。
また、例えばPythonでHello worldを出力するときは、直接▶を押して実行できるのですが、Rustの場合はできないです。
それは、インタープリタ言語と違い、コンパイルをしなければいけないからで、その依存関係はCargo.tomlというので管理して、バージョンはCargo.lockで固定する感じです。
Cargo.tomlは、Pythonで言うところの、pyproject.tomlやNode.jsのpackage.jsonみたいなもので、Cargo.lockはPythonのpoetry.lockやNode.jsのpackage-lock.jsonみたいなものです。
Helloworldの出力
Helloworldは環境構築をした時点で最初から書かれていて、
fn main(){
println!("hello world");
}
から始まります。
lnというのは、\nを付けてくれるやつらしいです。
fnは関数で、Rustではすべての処理は関数の中で書く必要があるので、プログラムの最初の入り口(エントリーポイント)を main という関数にしているらしいです。
main関数を作ったのに、呼び出す必要がないのは、コンパイラが自動でmainを探して、プログラムの入り口にするからです。
おわりに
今回はHelloworldを出力してみるところまでやりました。
次回以降は、基本文法やPythonにはない新しい概念に関して勉強していきたいです。
間違った解釈やなにかアドバイスなどありましたら教えていただけるとありがたいです。