- コンパイラとインタプリタって?
- コンパイラとインタプリタの違いとは?
- コンパイラ型・インタプリタ型のプログラミング言語とは?
本記事ではこのような疑問を解決します。
プログラミング学習をはじめるといくつかはコンパイラとインタプリタという言葉に出会います。
現在多くのプログラミングスクールで教えられている言語はのちに説明するインタプリタ型であるため、とくに「コンパイラとインタプリタ」を意識することなく学習をしていると思います。
しかし、プログラミングを正しく理解することやコードの実行についてしっかりとわかる状態になるには「コンパイラとインタプリタ」についての理解が必要になってきます。
そこで今回はコンパイラとインタプリタについてどのようなものなのか?違いは何なのか?を解説していきます。
まずは人間とコンピューターの関係を知ろう
人間とコンピューターは、人間がある処理をコンピューターに命令して、その命令をコンピューターが実行するという関係になっています。
では人間はコンピューターにどのように命令をするのでしょうか?
そもそもコンピューターは「0」と「1」で書かれる機械語しか理解できず、HTML・CSSやプログラミング言語で書かれたソースコード(プログラム)を理解できません。
一方、人間は機械語が理解できず、ソースコードのみ理解します。
そのため、ソースコードと機械語の間に仲介役を置いてあげれば良いわけです。
そこで登場するのが、ソースコード→機械語に翻訳してくれる翻訳家です。
そして、この翻訳家の機能を担うのがコンパイラとインタプリタになります。
すなわち、以下のような仕組みになります。
コンパイラとインタプリタの違いとは?
ここまでの説明で、コンパイラとインタプリタは、人間が理解できるソースコードからコンピューターが理解できる機械語へ翻訳する役割を担っていることがわかりました。
では両者ともに翻訳家なのであれば、コンパイラとインタプリタの違いは何なのでしょうか?
それはソースコード→機械語の翻訳のやり方が違うという点にあります。
つまり、コンパイラはソースコードをすべて翻訳してからプログラムを実行します。
一方、インタプリタはソースコードを1行ずつ翻訳しながらプログラムを実行していきます。
したがって、コンパイラは、英語で書かれた本や洋画を翻訳する”翻訳家”であり、インタプリタはインタビューなどその場で通訳をする”同時通訳者”のようなものです。
それではコンパイラとインタプリタそれぞれのメリット・デメリットを見ていきましょう。
コンパイラのメリット・デメリット
コンパイラのメリットはプログラムの実行速度が速い点です。
これはソースコードから機械語への翻訳がすべて終わってからプログラムを実行するためです。
英語から日本語へ和訳するときに、すべて和訳された日本語を読むのと、1行ずつ和訳しながら読んでいくのとではスピードが異なります。
一方、コンパイラのデメリットはプログラムの実行に手間がかかる点とエラーを見つけにくい点の2つです。
コンパイラの場合、ソースコードを翻訳したファイルを作らなければならず、インタプリタに比べて手間がかかります。
さらに、コンパイラにおいてはソースコードをまとめて翻訳するため、コード内でエラーが起きても処理が途中で止まることはありません。
よって、エラーを見つけるのに一苦労かかるというわけです。
インタプリタのメリット・デメリット
インタプリタのメリットはプログラムをすぐに実行できる点とエラーが見つけやすい点の2つです。
インタプリタの場合、コンパイラのようにソースコードを翻訳したファイルの作成は不要であるため、ソースコードをそのまま実行できます。
また、インタプリタにおいてはコード内にエラー箇所があればそこでプログラムがストップするため、エラーが見つけやすいのです。
一方、インタプリタのデメリットはプログラムの実行速度が比較的遅い点です。
コンパイラのところでも説明しましたが、英語から日本語へ和訳するときに、すべて和訳された日本語を読むのと、1行ずつ和訳しながら読んでいくのとではスピードが異なります。
インタプリタは後者の方にあたるため、コンパイラに比べると実行速度が遅くなるのです。
このようにコンパイラとインタプリタのメリット・デメリットは表裏一体の関係になっています。
コンパイラ型言語の例
コンパイラ型言語の例は以下の通りです。
・C言語
・Java
・Go
コンパイラ型言語はシステム開発やiOS・Androidのようなネイティブアプリ開発によく利用されています。
インタプリタ型言語の例
インタプリタ型言語の例は以下の通りです。
・PHP
・Ruby
・Python
・Javascript
インタプリタ型言語はWeb開発でよく利用されるものが中心です。
現在プログラミングスクールのカリキュラムで扱われている言語も圧倒的にインタプリタ型言語が多くを占めています。
まとめ
人間がコンピューターに命令する際には、人間が理解できるソースコードからコンピューターが理解できる機械語へ翻訳する機能が必要になります。
その翻訳家の機能を担うのがコンパイラとインタプリタなのです。
そして、コンパイラはソースコードをすべて翻訳してからプログラムを実行する”翻訳家”であり、インタプリタはソースコードを1行ずつ翻訳しながらプログラムを実行する”同時通訳者”であることがわかりました。
このように本記事で説明した内容は必須知識とはいえませんが、知っているとプログラミング学習に対する理解を深めてくれるものばかりです。
ぜひともプログラミング学習にお役立てください!
本記事でわかること 無料体験ができるプログラミングスクール5選無料体験を受ける前に知っておくべきこと無料体験を受けるメリット3つ無料体験で確認しておきたいこと プログラミングブーム真っ只中の今、プログラミング学習を始め[…]