コンパイラとは?インタプリタとの違いやプログラミング言語の種類、オンライン環境も紹介
今回は、コンパイラ言語とインタプリタ言語の仕組みや特徴のほか、それぞれを代表するプログラミング言語の種類について説明します。また、プログラミングを手軽に試せるオンライン環境も併せて紹介するので、ぜひ学習や練習に取り入れてみてください。
今回は、コンパイラ言語とインタプリタ言語の仕組みや特徴のほか、それぞれを代表するプログラミング言語の種類について説明します。また、プログラミングを手軽に試せるオンライン環境も併せて紹介するので、ぜひ学習や練習に取り入れてみてください。
知識・情報
2022/04/26 UP
- プログラミング
- 開発
- 技術
プログラミング言語にはさまざまな種類がありますが、大きく「コンパイラ言語」と「インタプリタ言語」の2つに分けられます。両者の違いについて正しく理解しておけば、新しくプログラミング言語を習得しようというときにも役立つでしょう。
今回は、コンパイラ言語とインタプリタ言語の仕組みや特徴のほか、それぞれを代表するプログラミング言語の種類について説明します。また、プログラミングを手軽に試せるオンライン環境も併せて紹介するので、ぜひ学習や練習に取り入れてみてください。
コンパイラとインタプリタの仕組み
プログラミングというと、「ソースコードを書いて実行する作業」をイメージする人も多いのではないでしょうか。しかし厳密にいえば、コンピュータで実行可能なプログラムとは以下のようなものです。
●実行形式:CPUが理解でき、直接実行できるもの(Windowsの.exeファイルなど)
●中間形式:仮想マシンが理解でき、仮想環境内で実行できるもの(Javaの.classファイルなど)
これらはコンピュータで実行する際の都合に合わせた形式のため、人間にとっては扱いやすいものではありません。より理解しやすいプログラミング言語でソースコードを書いてから、実行可能な形式に変換するほうが生産的でしょう。そのための仕組みが、「コンパイラ」と「インタプリタ」です。
コンパイラもインタプリタも、「ソースコードを変換して実行する仕組み」であることには違いがありません。ただし、変換と実行のタイミングに違いがあります。
コンパイラとは
コンパイラは、ソースコードを実行可能な形式に変換してくれるプログラムです。この変換作業を「コンパイル」と呼び、コンパイルできるプログラミング言語のことを「コンパイラ言語」といいます。
ソースコード全体を一度に変換し、その結果を実行ファイルとして出力するというのがコンパイラの基本的な動作です。そのため、実行時にはソースコードを必要としません。
例えるなら、外国語の本を日本語で読めるように、丸ごと翻訳するようなものだといえるでしょう。
インタプリタとは
インタプリタは、ソースコードを読み込みながらその場で実行してくれるプログラムです。また、この方式に対応したプログラミング言語のことを「インタプリタ言語」といいます。
インタプリタでは変換と実行が並行して行なわれるため、コンパイラのように実行ファイルは作られません。その代わり、実行時には毎回ソースコードを必要とします。
例えるなら、外国語のスピーチを日本語で伝えてくれる、同時通訳のようなものだといえるでしょう。
コンパイラとインタプリタの特徴
コンパイラとインタプリタには、仕組みの違いに起因するそれぞれの特徴があります。用途によってはメリットにもデメリットにもなる可能性があるため、特徴を理解して使い分けるのがおすすめです。
コンパイラを使うメリット・デメリット
実行したときの動作が速い点は、コンパイラの最大の特徴といってもよいでしょう。実行可能な形式への変換が事前に終わっているため、インタプリタよりも高速な動作が可能です。速度を重視するシステムの開発には、コンパイラのほうが向いているといえます。
また、実行ファイルさえあれば実行できるのもコンパイラのメリットです。これは、コンパイルと実行を別々のコンピュータで行なっても良いことを意味しており、実行する側のコンピュータにはコンパイラがインストールされている必要もありません。
ただし、実行可能な形式が環境ごとに異なる点には注意が必要でしょう。実行ファイルは、OSやCPUが変わると動作しないのです。
場合によっては、事前にコンパイルする手間がデメリットになるかもしれません。これは、例えばプログラムが大規模なためコンパイルに時間がかかり、すぐに動作確認ができないケースなどが考えられます。
インタプリタを使うメリット・デメリット
プログラムをすぐに実行できる点が、インタプリタの最大の特徴です。事前にコンパイルを済ませておく必要がないため、ソースコードを書いたらすぐに動作を確認できます。
ただし、ソースコードを変換しながら実行する分、実行速度についてはコンパイラほど速くありません。インタプリタは、速度が求められるシステムの開発には向かないと考えるのが無難でしょう。
プログラミングを学習中の人は、デバッグのしやすさをインタプリタのメリットと感じることも多いようです。例えば、コンパイラではソースコード中の文法エラーをすべて取り除かなければ実行できる状態になりません。これに対し、インタプリタでは実際に動かしてみて、どの行でエラーが発生したのかを確認しながら修正できます。
なお、インタプリタを使用できる環境は限られているという点には注意が必要でしょう。ソースコードのプログラミング言語に対応したインタプリタが、コンピュータにインストールされている必要があります。
コンパイラ言語とインタプリタ言語の種類
プログラミング言語にはかなりの種類があるため、すべてを習得しようとするのは現実的とはいえません。ここでは、コンパイラ言語とインタプリタ言語に分けて、比較的広く使われているものをピックアップして紹介します。
コンパイラ言語の種類
以下は、代表的なコンパイラ言語の一覧です。
・C言語
1972年から存在する歴史あるプログラミング言語で、現在でもOSや組み込みシステム、ゲームなど幅広い開発に採用されています。後発のプログラミング言語にも多大な影響を与えました。
・C++
1983年に登場した、C言語の発展型にあたる言語の一つです。オブジェクト指向の考え方を取り入れており、C言語とともに広範囲に利用されています。
・Objective-C
1983年に登場した、C言語の上位互換言語です。Apple社のプラットフォーム向けの開発で利用されています。
・Java
1996年にサン・マイクロシステムズ社が公開し、現在ではオラクル社が開発元となっているプログラミング言語です。仮想マシンを採用しているため、特定の環境に依存することなく実行できます。
・C#
2000年にMicrosoft社が発表したプログラミング言語です。当初はWindows用でしたが、現在ではmacOSやLinuxも含むさまざまなプラットフォームをサポートしています。
・Go
2009年にGoogle社が発表した、オープンソースのプログラミング言語です。Web開発で広く利用されていますが、さまざまな環境でプログラムを実行できる汎用性を備えています。
・Rust
2010年に登場した、C言語やC++の置き換えとなるような性能と安全性の高さを目標として掲げるオープンソースのプログラミング言語です。Firefoxの開発に用いられていることでも知られています。
・Kotlin
2011年に登場した、Javaの仮想マシンを実行環境とするプログラミング言語です。Androidアプリの開発用言語として推奨されていることでも知られています。
・Swift
2014年に発表された、Apple社が中心となって開発が進められているプログラミング言語です。Objective-CとともにApple社のプラットフォームで利用されることが多いですが、LinuxとWindowsでもプログラムを実行できます。
インタプリタ言語の種類
以下は、代表的なインタプリタ言語の一覧です。
・Python
1991年に発表され、現在ではLinuxに標準搭載されている汎用性の高いプログラミング言語です。データ解析や機械学習のライブラリが充実していることから、AI(人工知能)開発の分野でも注目されています。
・JavaScript
1995年に登場した、Webブラウザを起源とするプログラミング言語です。ブラウザ上で実行できることで有名ですが、サーバーサイドやデスクトップ向けの開発にも用いられています。
・Ruby
1995年に登場した、オブジェクト指向のプログラミング言語です。Webアプリケーション向けフレームワークの「Ruby on Rails」を含め、幅広く利用されています。日本人のまつもとゆきひろ氏が開発者であることでも有名でしょう。
・PHP
1995年に登場した、オープンソースのプログラミング言語です。HTMLに直接プログラムを埋め込むような書式が特徴的で、Webアプリケーションのサーバーサイド開発に適しています。
オンラインで使えるコンパイラとインタプリタ
コンパイラやインタプリタを使うには、そのための環境を整える必要があります。近年ではオンラインで手軽に利用できるサービスが充実してきているので、一度試してみるのもよいでしょう。
ブラウザから手軽に試せる実行環境
ブラウザからソースコードを入力するだけで、手軽に実行できるサービスを紹介します。コンパイラやインタプリタをインストールする必要はありません。無料で使えるものもあり、プログラミング言語の学習や練習に便利です。
・Coding Ground For Developers
コンパイラ言語・インタプリタ言語のプログラムをその場で実行できます。英語のサービスではありますが、対応するプログラミング言語の種類が豊富な点が魅力です。類似のサービスとしては、Replitなどが挙げられます。
・A Tour of Go
Go専用の公式サービスです。日本語にも対応したプログラミングのチュートリアルを読みながら、ソースコードを入力してコンパイルと実行を試せます。
・Rust Playground
Rustの公式サイト内にある専用サービスです。同サイトではRustの解説ドキュメント「the book」が、非公式ながら日本語でも提供されています。
本格的な開発もできるクラウドIDE
Visual StudioやXcodeのような本格的な開発環境(IDE)に似た機能を、オンラインで利用できるサービスもあります。さまざまな種類がありますが、ここで紹介する2つは特にメジャーでしょう。
・AWS Cloud9
Amazon社によるAWSから提供されている、クラウド型のIDEです。プログラムの実行とデバッグに必要な機能はもちろん、離れた場所にいる人とのペアプログラミングのような、オンラインならではの共同作業を容易にする機能も搭載されています。
・GitHub Codespaces
Visual Studio Codeの環境をベースとするIDEの一つです。ブラウザではGitHubのWebページからすぐにアクセスできるほか、デスクトップからの接続もサポートしています。
プログラミング言語は特徴を理解して使い分けよう
プログラミング言語はコンパイラ言語とインタプリタ言語に分けられ、それぞれ特徴が異なります。種類も豊富にあるので、違いを理解したうえで用途に応じて使い分けるのがおすすめです。
プログラムの動作を試したいときは、オンラインのコンパイラやインタプリタを活用するのも便利でしょう。本格的な開発に向いているものから、無料で気軽に試せるサービスまであるので、さまざまなプログラミング言語にチャレンジしてみてはいかがでしょうか。