seegongsik
単語帳
プログラミング

文が機械の仕事になる道、コンパイラとインタプリタ

わたしたちは「add」「if」「名前」のような 人の言葉で コードを書きます。 でも機械は おくで、オン・オフ ていどの とても 小さな命令しか わかりません。 人の言葉と 機械の言葉の あいだには、大きな すきまが あります。 その すきまに 橋を かけるのが、コンパイラと インタプリタです。

01

人の言葉と 機械の言葉は ちがう

わたしたちが書く「add」「if」は、人が 読みやすい 言葉です。
でも機械が 本当に 知っているのは、
オン・オフを ならべた とても 小さな命令だけ。
わたしたちの文と、機械が する仕事の あいだには 大きな すきまが あります。
だから わたしたちの文は、このままでは まわせません。

わたしたちの文
二つの数を たす
?
1011 0010 1100 0101
機械の仕事

上は わたしたちの一行、下は 機械が 知る 小さな命令。あいだの すきまを 押して。

上と下が、あまりに ちがいますね。
人の言葉は ひと目で 読めるのに、機械の言葉は 見分けられません。
この すきまを、だれかが かわりに わたって くれないと いけません。
その仕事を する やり方が、二つ あります。

02

橋を かける 二つの やり方

すきまを わたるには、翻訳して くれる だれかが 必要です。
やり方は 二つ。
ひとつは、文 全体を まえもって ぜんぶ 翻訳しておくこと。
もうひとつは、一行ずつ その場で 読んで すぐ 実行すること。
前が コンパイラ、後ろが インタプリタです。

わたしたちの文コンパイル完成品実行

二つの道を 押して。「全体を 先に 翻訳」と「一行ずつ その場」で 形が ちがいます。

同じ すきまを わたるのに、やり方が ずいぶん ちがいますね。
ひとつは まえもって、ひとつは その場で。
まず「まえもって まるごと 翻訳」する ほうを くわしく 見ましょうか?
これが コンパイラの はたらき方です。

03

コンパイル: まるごと まえもって 翻訳

コンパイラは わたしたちの文を 最初から 最後まで ぜんぶ 読み、
機械が すぐ 使える 完成品に いちどに かえます。
翻訳は まえもって ただ 一回。その結果を 何度も はやく まわします。
くいちがった ところが あれば、まわす まえに 教えて くれることも。
本 一さつを まるごと 翻訳しておいて、読者に わたす ようなものです。

値を きめる
二つの数を たす
結果を 見せる

「コンパイル」で 文 全体が 完成品に かわり、「実行」は それを いちどに はやく まわします。

全体を まえもって 翻訳しておくので、実行は むだなく はやい。
そのかわり、はじめに 翻訳が おわるまで 待たねば なりません。
では 逆に、待たずに すぐ 始める やり方は ないでしょうか?
それが インタプリタです。

04

インタプリト: 一行ずつ その場で

インタプリタは 完成品を べつに 作りません。
わたしたちの文を 上から 一行 読んで すぐ その仕事を し、
つぎの行を 読んで また し、こうして その場で 進めます。
だから 待たずに すぐ 始められ、かるく ためせます。
話す そばで 一文ずつ 通訳して くれる 通訳者の ようです。

値を きめる
二つの数を たす
結果を 見せる

「実行」を押すと、一行 読んで すぐ し、つぎの行へ。その場で じゅんに 進みます。

すぐ 始めて 一行ずつ 進むので、手に なじみます。
そのかわり、まわす たびに はじめから 一行ずつ 読みなおします。
コンパイルは まえもって・はやく、インタプリトは その場で・かんたんに。
では どちらが より よいのでしょう?

05

どちらが いいかより、たがいの やりとり

どちらか 一つが むじょうけんに よい わけでは ありません。たがいに やりとりします。
コンパイルは はじまりは おそいが 走るのが はやく、エラーを まえもって 知らせます。
インタプリトは すぐ 始まり ためしやすいが、毎回 一行ずつ 読みなおします。
だから じっさいには、二つを ほどよく まぜて 使うことが 多いです。
何を より 重んじるかで 選ぶのです。

コンパイラ
インタプリタ
はじまり
翻訳 先 (おそい)
すぐ
走る はやさ
はやい
ふつう
エラーの とき
まわす前
その行に つくとき
成果物
完成品あり
べつに なし

項目を 押して。はじまり・走る はやさ・エラーの とき・成果物が、二つで どう 分かれるか 見えます。

いま、わたしたちの文が どう 機械の仕事に なるか 見ました。
でも そうして 動いている あいだ、
わたしたちが 作った 値や オブジェクトは、いったい どこに 入って いるのでしょう?
「これが あれを さす」とは、また どういう 意味でしょう?
次の、さいごの話で、その場所を のぞきます。

一言でいうと人の言葉で書いた コードは、そのままでは 機械が まわせません。コンパイラは 全体を まえもって まるごと 翻訳して 完成品を 作り、インタプリタは 一行ずつ その場で 読んで 実行します。二つは 優劣ではなく トレードオフです。はじまる はやさ、走る はやさ、エラーが 出る ときが、それぞれ ちがいます。
プログラミング
このページがお役に立ったなら支援する