プログラミングとは何か
プログラムとは「コンピュータへの指示書」
プログラムとは、コンピュータに「何をしてほしいか」を伝える指示書です。
人間が書く指示書 コンピュータが理解
(ソースコード) → (機械語) → 実行
人間は日本語や英語で考えますが、コンピュータは「0」と「1」の組み合わせ(機械語)しか理解できません。
プログラミング言語は、人間が書きやすい形式で指示を書き、それをコンピュータが理解できる形に変換するための仕組みです。
料理のレシピに例えると
プログラムは料理のレシピに似ています。
カレーのレシピ(人間向け):
1. 玉ねぎを切る
2. 肉を炒める
3. 野菜を加える
4. 水を入れて煮込む
5. ルーを入れる
6. 完成!
プログラム(コンピュータ向け):
fn main() {
println!("玉ねぎを切る");
println!("肉を炒める");
println!("野菜を加える");
println!("水を入れて煮込む");
println!("ルーを入れる");
println!("完成!");
}
どちらも「手順を順番に書いたもの」という点で同じです。
ソースコードとは
プログラマーが書くプログラムの文章をソースコードと呼びます。
- 人間が読み書きできるテキスト形式
- 特定のプログラミング言語のルールに従って書く
- ファイルとして保存する(Rustの場合は
.rsという拡張子)
Rustのソースコード例:
// hello.rs(ファイル名)
fn main() {
println!("Hello, World!");
}
プログラミングの基本的な流れ
┌──────────────┐
│ 1. 書く │ ソースコードを書く(hello.rs)
└──────┬───────┘
↓
┌──────────────┐
│ 2. 変換 │ コンピュータが理解できる形に変換
└──────┬───────┘
↓
┌──────────────┐
│ 3. 実行 │ プログラムを動かす
└──────┬───────┘
↓
┌──────────────┐
│ 4. 結果確認 │ 期待通りに動いたか確認
└──────────────┘
この「変換」の部分が、次のドキュメントで説明する「コンパイル」です。
プログラミング言語の種類
世の中には多くのプログラミング言語があります。
| 言語 | 特徴 | 主な用途 |
|---|---|---|
| Python | 読みやすく書きやすい | AI、データ分析 |
| JavaScript | ブラウザで動く | Webサイト |
| Java | 大規模システム向け | 企業システム |
| Rust | 安全で高速 | システム、Web、組み込み |
どの言語も「コンピュータへの指示を書く」という目的は同じですが、書き方や得意分野が異なります。
なぜRustを学ぶのか
Rustには以下の特徴があります:
- 安全性: メモリに関するバグを防ぐ仕組みがある
- 高速性: C/C++と同等の実行速度
- 現代的: 最近の言語設計のベストプラクティスを取り入れている
- 成長中: 多くの企業が採用し、需要が増えている
特に「安全性」の部分は、Rust独自の「所有権」という仕組みで実現されています(Phase 2で詳しく学びます)。
エラーは味方
プログラミングを始めると、たくさんのエラーに遭遇します。
エラーは失敗ではありません。学習の機会です。
Rustは特に親切なエラーメッセージを出してくれる言語です。エラーメッセージを読む習慣をつけましょう。
error[E0384]: cannot assign twice to immutable variable `x`
--> src/main.rs:3:5
|
2 | let x = 5;
| -
| |
| first assignment to `x`
| help: consider making this binding mutable: `mut x`
3 | x = 6;
| ^^^^^ cannot assign twice to immutable variable
このエラーは「xという変数に2回値を代入しようとしているけど、変更不可(immutable)だよ。mutをつけると変更可能になるよ」と教えてくれています。
まとめ
- プログラムはコンピュータへの指示書
- ソースコードは人間が書くプログラムの文章
- エラーは学習の機会、恐れずに読もう
- Rustは安全で高速な現代的言語
確認テスト
Q1. ソースコードとは何か?
Q2. プログラミングの基本的な流れとして正しい順番は?
Q3. 以下のRustコードは何を出力する?fn main() { println!("こんにちは"); println!("Rust"); }
println!は画面に文字を出力する命令です。2回呼び出しているので、「こんにちは」と「Rust」が別々の行に出力されます。
Q4. 以下のエラーメッセージは何を伝えている?error: expected `;`, found `}`
;)が必要なのに、}が見つかった」というエラーです。Rustでは文の終わりにセミコロンが必要です。
Q5. プログラミングの本質として最も適切な説明は?
次のドキュメント: 03_compile_vs_interpret.md