Rust 勉強会,面白かった!

no extension

以前から気になっていた Rust の勉強会を松江でやるというので参加してきた。

いやぁ,面白かった! C/C++ のコードを Rust に置き換えようという動きがあるのは知っていたが,マジで「アリ」だわ,これ。 やはり時代は Rust か。

実は今回,どうにかコンパイル環境のインストールまでは済ませたが事前学習が全くできなくて,初心者講座でイチから教えてもらうことにした。 以下に勉強会の内容を一部紹介する。

Rust の最大の特徴は GC (Garbage Collection) をランタイム・モジュール内に持たないことだろう。 かといって C/C++ のように自前で明示的に alloc/free するわけでもない。

どうするのかというと, Rust にはインスタンスに対して「所有権(ownership)」や「ライフタイム(lifetime)」といった概念があり,野放図にインスタンスを参照することを防いでいる。 また変数は基本的に不変(immutable)な値として宣言され,可変(mutable)にしたいのであれば可変であることを明示して宣言する必要がある。 これらの仕組みによってコンパイラが alloc/free のタイミングを決めることができる(または決められない処理についてはコンパイル・エラーにできる)わけだ。

Go の実装にも見られるように「GC = 遅い」とは言えなくなりつつあるのだが,ランタイム・モジュールに GC を組み込まなくていいというのはそれだけで設計の自由度が上がる。 それこそ,その言語で OS を組もうかと考えたくなるほどに。

コンパイル(VM 用の JIT コンパイルや他言語へのトランス・コンパイルではなく,いわゆる AOT コンパイル)言語の評価ポイントは,個人的には以下の2つと思っている1

  1. その言語自身でコンパイラが書けるか
  2. その言語を使って OS が書けるか

たとえば Go は1番目は満たすが2番目は難しい。 メモリ管理や並列処理等についてランタイム・モジュールに強く依存しているからだ。 Rust は両方を満たす2

他にも enum と match 式を組み合わせたエラー・ハンドリングとか興味深いものが色々あった。 しばらくはマジで Rust の勉強をしようかなぁ,とか思ったり。

ブックマーク

参考図書

photo
プログラミング言語Rust 公式ガイド
Steve Klabnik (著), Carol Nichols (著), 尾崎 亮太 (翻訳)
KADOKAWA 2019-06-28 (Release 2019-06-28)
単行本
4048930702 (ASIN), 9784048930703 (EAN), 4048930702 (ISBN)
評価     

公式ドキュメントの日本語版。索引がちゃんとしているので,紙の本を買っておいて手元に置いておくのが吉。

reviewed by Spiegel on 2020-02-24 (powered by PA-APIv5)

photo
実践Rust入門 [言語仕様から開発手法まで]
κeen (著), 河野 達也 (著), 小松 礼人 (著)
技術評論社 2019-04-26 (Release 2019-04-26)
Kindle版
B07QVQ7RDG (ASIN)

勉強会で薦められた本。「内容がすごく重い」とのこと。読んでないが,目次を見る限りは事例が豊富な感じ?

reviewed by Spiegel on 2020-02-24 (powered by PA-APIv5)


  1. オブジェクト指向がどうとか関数型がどうとかいうのはジオングの脚のような些末な話である。 ↩︎

  2. ただし Rust はリンカについては GCC 等の外部のツールチェーンに依存しているようだ。なのでクロス・コンパイルは(Go に比べると)少し面倒くさい。 ↩︎