SEマサヨシのブログ

システムエンジニアとしての備忘録や、勉強の記録などを残していきます。

【基本情報技術者試験】「インタプリタ」「コンパイラ」について

どうも、マサヨシです。

 

今週も基本情報技術者試験の勉強をやっております。

 

普段、平日の通勤中にちょっとずつ過去問を解き、残った問題を土日に消化するというスケジュールで進めている僕ですが、今週の僕は一味違います。

 

 

平日でやりきれなかった問題を土曜日に消化したうえで、日曜は午前試験の全80問を150分で解く、つまり本番と同じルールで過去問に挑みました。すごい。自分に拍手。

 

そして採点結果はというと、、

 

 

やるやん。

 

現時点で合格点を超える能力はあるようなので、この調子で勉強をしていけば安定して合格できる気がします。自信が湧いてきますね。

 

しかし。

 

一方でこんな悲劇も起きていました。

 

 

ここでタイトル回収になるのですが、以前けっこうしっかり勉強したはずの「インタプリタ」と「コンパイラ」について思い出せませんでした。。。不覚。。。

 

プログラミングをするうえで基本的な用語でもあるので、かなりショックを受けました。

 

ということで、本記事では「インタプリタ」「コンパイラ」ってなんぞや?というアウトプットをしていきたいと思います。

 

インタプリタコンパイラについて

 

2つの用語について解説する前に、そもそもプログラムってなんだっけ?という話をします。

 

プログラムとは機械への命令文のことで、「文字を表示してくれ」「計算をしてくれ」など、さまざまな命令を機械に与えることができます。

 

それらを書くことをプログラミングといい、プログラムを書くための言語をプログラミング言語といいます。

 

たとえば、コンソールに文字を出力したい場合の命令文(コード)は、Pythonの場合はprint("出力したい文字列")のように書きます。

 

printというコードの意味が「文字を出力する」という意味であることは、我々人間にとっては直感的にわかりやすいかと思います。

 

しかし、肝心のコンピュータは、その意味を理解できません。

 

なぜならコンピュータが理解できるのは1と0だけだからです。

 

そのため、プログラミング言語(原始プログラム)というものは、機械がわかる言葉(目的プログラム)に翻訳する必要があります。

 

ここで出てくるのが「インタプリタ」と「コンパイラ」というわけです。

インタプリタコンパイラはどちらも翻訳する方式のことを指しますが、それぞれ明確な違いがあります。

 

インタプリタ

 

インタプリタ方式は、インタプリタという言語プロセッサがソースコードに書かれた命令をひとつずつ翻訳しながら実行していきます。

 

メリット

書きながら試すことができる。

 

デメリット

実行速度が遅い。

 

Ruby, Python, JavaScript, PHPなど

 

コンパイラ

 

コンパイラ方式は、コンパイラという言語プロセッサがソースコードの内容をすべて翻訳し、機械語のプログラムを作成します。

(その後、リンカというプログラムが必要な目的プログラムをすべてくっつけることで実行可能ファイルを生成し、ローダというプログラム主記憶に読み込むことで実行されます。)

 

メリット

すべて翻訳された状態から実行できるため、プログラムの実行速度が速い。

 

デメリット

書きながら試すことができない。

 

C言語, Java, Swiftなど

 

まとめ

  • 人間が読みやすいように作られた原始プログラムは、機械がわかる目的プログラムに翻訳する必要がある。
  • インタプリタ方式はプログラムを翻訳しながら実行していく方式のこと。
  • コンパイラ方式はプログラムをすべて翻訳し、目的プログラムを作成する方式。

 

まだまだ覚えることだらけですが、ひとつずつ覚えて身につけていきたいと思います。

 

それでは。

 

 

参考文献

blog.codecamp.jp

tech-camp.in