Rustを勉強してみようとおもいます、まずはHello, World!

Rustプログラマにおれはなる!

ハローワールドします.

fn main() {
    // 世界よ、こんにちは
    println!("Hello, world!");
}
rustc main.rs
./main

Hello, world!

やりました、Rustプログラマになれました.

メモリ管理との戦い

かつて、原始人がマンモスと戦うようにして、組込みエンジニアはメモリリークやメモリ破壊と戦っていました. 未来の言語Rustはこれらはどのようにして解決していくのか?1

メモリリーク

プログラムが不要になったメモリを解放し忘れてしまうことで、使用可能なメモリ容量が徐々に減少していく現象.

原始時代のC言語では手動でmalloc/freeで戦っていた. Javaの時代ではガベージコレクションで自動的に小人さんたちかメモリ解放をしてくれた. Rustの革新性は所有権. 基本的には自動的に獲得と解放.

メモリ破壊

プログラムが意図しない方法でメモリの内容を変更してしまうこと.

C/C++はポインタというむき出しのメモリアドレス番地にアクセスすることができたが、Rustではdefaultではそれができない(記法にはよる). 型システムとかは、Rustオリジナルではなく、Cにだって構造体はあるが、Rustはモダンな型システムがある.

ただ、革新性でいえば、やはり所有権によるメモリリーク問題のほうが大きいように読めたのがファーストインプレッション.

生成AI時代のRust勉強法

少し前に、Courseraの講座で、ChatGPTを活用した勉強法講座を受けた. 2

Accelerate Your Learning with ChatGPT | Coursera

メタファーは学びにおいてすさまじく有用. 既存の概念と新しい概念を結びつけるための橋渡し= easy mental bridgeになる. 優れた教師はメタファーやアナロジーをつかって説明する.

しかし、そんなうまいメタファーをどうやって思い浮かべればいいの? ChatGPTだ!ということで、

Rustの所有権の概念を図書館のメタファーで説明できる?

📚 図書館における所有権システム基本ルール:一冊の本には一人の責任者

  • 太郎くんが「Rustプログラミング入門」を借りた
  • 図書館のシステムから本が除外される
  • 太郎くんが返却するまで、その本は「貸出中」

貸し借り(借用 - Borrowing)

  • 太郎くんが本を借りている
  • 花子さんが「ちょっとタイトル見せて」
  • 太郎くんは本を見せるが、所有権は渡さない
  • 花子さんが見終わったら、太郎くんに返す

編集権の貸し出し(可変借用)

  • 太郎くんが本を借りている
  • 花子さんに「付箋貼ったりしていいよ」と許可
  • 花子さんが編集作業中は、太郎くんも本を触れない
  • 花子さんが返すまで、太郎くんは待機

うーん、質問例が悪かったかもしれない.

Rustの所有権を結婚や不倫で説明できる?

💑 結婚制度における所有権システム基本原則:一夫一妻制(単一所有権)

  • 太郎くんが花子さんに「君に僕の心を捧げる」
  • 太郎くんの心は花子さんのもの
  • 太郎くんは他の人に心を捧げられない

友情や信頼(不変借用)

  • 太郎くんが友達に「今こんな気持ちなんだ」と相談
  • 友達は話を聞くだけ(心の所有権は移らない)
  • 相談後も太郎くんの心は太郎くんのもの

心を開く(可変借用)

  • カウンセラーに心の治療を任せる
  • セッション中は他の人に心を開けない
  • 治療後、癒やされた心が戻ってくる

マインドコントロール… ?! 笑いを交えれば記憶には残りそう.


  1. 諸君 私はC言語が好きだ, あらためてこのポエムがおもしろい. C言語はこういう世界で戦っていた. ↩︎

  2. 講師のJules Whiteさんの講座、昔受講してた. Web サービスのアーキテクチャを学ぶ! coursera で Programming Cloud Services for Android Handheld Systems を受けた | Futurismo ↩︎