【Python】プログラムとスクリプト【入門第2回】

66, 2019-07-26

目次

Pythonインタプリタの正体

こんにちは、narupoです。

前回(どうやってPythonでパソコンに命令を与えるの?【Python入門第1回】 - narupoのブログ)、コードとは命令の集まりであると書きました。
そしてそのコードで書いたプログラムをPythonインタプリタに与えると、インタプリタがパソコンに命令を伝えてくれるのでした。

今回は、このPythonインタプリタの正体に迫りたいと思います。

Pythonインタプリタは何で書かれたプログラム?

前回(どうやってPythonでパソコンに命令を与えるの?【Python入門第1回】 - narupoのブログ)、Pythonインタプリタはプログラムであると書きました。

プログラムとはコードの集まりでした。
そしてコードとはプログラミング言語で書かれた命令の集まりです。

では、Pythonインタプリタは何の言語で書かれているプログラムなのか?

Pythonでしょうか? いいえ、違います。
正解は、マシン語です。

Pythonインタプリタの中身

マシン語とは、0と1のみで書かれる言語のことです。
↓がマシン語のイメージ。

0001001011000011
1010101101010010
0101010000100100
0010011010010010

じつは、パソコンというのは0と1しか理解できません

パソコンって意外とおバカなんですね

体力と作業速度はすごいけどね

なので、

「ちょっとスーパーで焼きそば買って来てよ」

なんていう日本語の命令は、はなから理解できません

ですので、Pythonインタプリタの中身も0と1で書かれています。
インタプリタを0と1のマシン語で書くことで、パソコン(CPU)はインタプリタを理解できるようになります。
マシン語よりコンピューターに近い言語は存在しません。

CPUとは?

パソコンの脳みそのこと
中央演算処理装置と呼ばれるパソコンの核
1 + 1 という足し算をパソコンでするとき、このCPUが計算を行っている

Pythonで書かれたプログラムは、じつはそのままではパソコンは理解できません。
なぜならそのプログラムはマシン語じゃないからです。
パソコンは0と1以外は理解できません。

それではどうやってPythonで書いたプログラムをパソコンに理解させるのか?

Pythonで書かれたプログラムをパソコンに理解させるには、一度インタプリタに渡します。
そしてインタプリタに渡したプログラムを、インタプリタにマシン語に変換してもらいます
その変換したマシン語をパソコンに与えることで、初めてパソコンはPythonで書かれたプログラムを理解できるようになるのです。

つまり↓こういうことですね。

  • Pythonでプログラム(コード)を書く

  • Pythonインタプリタにプログラムを読み込ませる

  • Pythonインタプリタがマシン語に変換してパソコンに命令する

  • パソコンが命令を実行する

これを見ると、Pythonインタプリタがまるで翻訳者のような役割をしています。

  • 太朗が日本語でボブ(パソコン)に手紙(プログラム)を書く

  • 手紙を翻訳者(Pythonインタプリタ)に渡す

  • 翻訳者が手紙を英語に書き直してボブに渡す

  • ボブが手紙に書かれていた命令を実行する

必殺仕事人インタプリタって感じ

Pythonインタプリタはどうやって作られているのか?

ここら辺は余談なので別に覚えなくてもいいです。

察しのいい方はこんなことを思っているかもしれません。

「0と1だけでPythonインタプリタを作ることなんて可能なのか?」

はい。マシン語でPythonインタプリタを作ることは不可能ではありませんが、おそらく開発者が過労死するかもしれません。

マシン語というのは低級言語と呼ばれています。
低級と言うのは、いわゆる質が低いとかの意味ではなくて、パソコンに近いという意味になります。

それと対になるのが高級言語です。
高級言語は、パソコンから遠くなる代わりに、人間が扱いやすい文法を持っています。

Pythonインタプリタの実装によるのですが、多くのPythonインタプリタは高級言語で書かれています。
そして、その高級言語で書かれているプログラムをコンパイラなどを使って低級言語に変換します。
そうすることで人間が少ない労力でPythonインタプリタを開発できるようになります。

たとえばCPython(シーパイソン)というPythonの実装では、高級言語のひとつであるC言語が使われています。

コンパイラとは?

高級言語を低級言語に翻訳するプログラムのことです。
たとえばC言語にはgccなどのコンパイラがあります。

実装とは?

本来は「新しい部品とか機能を付ける(実装する)」という動詞的な意味の言葉ですが、
この文脈では「作られている中身」のことを表す意味で使われています。

スクリプト

インタプリタに読み込ませるプログラムのことを特にスクリプトと呼びます。
スクリプトはマシン語で書かれていないので、単独ではパソコンは理解することができません。
しかし、インタプリタがあれば、パソコンはそのスクリプトを理解できるようになります。

おわりに

プログラムはスクリプトとも呼べるし、マシン語とかわけわかんないのも出てきたし、

なんか混乱するなぁ!


と思ったみなさん。
その感覚、正常です

なんとなーくで把握しておきましょう。
プログラムと言った場合は、ああ、マシン語で書かれたものか、スクリプトのことなんだな。
ぐらいの理解でOKです。

以上、次回に続きます。