私たちが書いたプログラムは、そのままではコンピュータに通じません。あいだに翻訳が必要です。
初級の解説は準備中のため、初級の内容を表示しています。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何をする係?
人が書いた文字の並び(※1 ソースコード)は、人間には読めてもCPUには読めません。CPUが直接理解できるのは※2 機械語——0と1で書かれた命令だけだからです。
だから、動かす前に必ず「人のことば → CPUのことば(機械語)」への翻訳が入ります。プログラミング言語が読みやすい形をしているのは人のため、翻訳はそのギャップを埋める作業です。
登場人物メモ:
- ※1 ソースコード — 人が書いたプログラムの文字の並び(元の原稿)
- ※2 機械語 — CPUが直接実行できる、0と1で表された命令
仕事の流れ
- 人がソースコードを書く(読みやすいことばで)
- それを機械語に翻訳する(CPUのことばへ)
- CPUが機械語を1命令ずつ実行する
- 計算・表示などの結果が出る
まん中の「翻訳」があるからこそ、人は読みやすい形で書け、機械はきっちり実行できます。
2つの翻訳のやり方
翻訳をいつやるかで、大きく2つに分かれます。
- コンパイル(先にまとめて翻訳) — 実行の前にソース全体を機械語へ翻訳し、できた実行ファイルを動かす。翻訳済みなので動きが速い
- インタプリタ(その場で1行ずつ翻訳) — 動かしながら1行ずつ翻訳して実行する。すぐ試せて手軽だが、翻訳しながらなのでやや遅め
料理でたとえるなら、コンパイルは「全部作り置きしてから出す」、インタプリタは「注文が来るたびその場で作る」。どちらも最後に食べられる(実行できる)のは同じです。
⚠️ うまくいかないとき
- 書き間違い — 文法が違うと翻訳でつまずき、実行前にエラーになる
- 手元では動くのに別の環境で動かない — 翻訳結果はCPUやOSの種類に合わせて作られるため、環境が違うとそのままでは動かないことがある
- 翻訳のやり方の取り違え — 速さ重視か手軽さ重視かで向き不向きがある
翻訳のしくみをもっと詳しく(コンパイル型・インタプリタ型・バイトコード+VM)は中級で扱います。
関連する知識
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 「先にまとめて機械語へ翻訳してから動かす」やり方はどれ?
問2. 人が書いたプログラムが、そのままではCPUで動かないのはなぜ?
問3. 本文のたとえで「注文が来るたびその場で作る」料理に当たるのはどれ?
問4. プログラムが動くまでの流れとして正しい順番はどれ?
問5. コンパイルの利点として本文に合うのはどれ?
問6. 自分のパソコンでは動いたのに、別のパソコンでは動かないことがある。いちばんの理由はどれ?
問7. CPUが直接実行できる、0と1で表された命令を何と呼ぶか、漢字で答えてください。
問8. 動かしながら1行ずつ翻訳して実行するやり方を、カタカナで何と呼ぶか答えてください。