【今日のQ&A】スクリプト言語とコンパイル言語の特性と需要って?【教養】

こんにちは、@codeship_techです。

  • 「言語ってたくさんあるけどどれを学んだほうがいいんだろう?」
  • 「CとかJava、PHPとかRubyとか有名な言語の中でもオススメとかどれやったほうがいいとかあるの?」

と考えたことはありませんか?

加えて、「これはスクリプト言語です」とか「コンパイル言語です」といった言語の括りも今いち違いが分かっていないという方もいるのではないでしょうか?

今回は、言語の種類についての質問です。

今一度、種類ごとの違いを明らかにしました!

スクリプト言語とコンパイラ言語って何ですか?

機械語への変換タイミングによって分類される、プログラミング言語の区分です。

言語の変換の仕組み:スクリプト言語とコンパイル言語

合わせて読みたい

プログラミング言語は、人間に読みやすい英語に近い文法の言語を、機械の解釈できる数値情報に変換することで実行ができるのでした。

ところでこの変換は、大きく分けて行われるタイミングが2種類あります。

コンパイル言語

プログラムの書かれたソースファイル1枚を、実行前に一度で全て機械語に変換してから実行します。
この変換を「コンパイル」といい、コンパイルを経て実行される言語をコンパイル言語と言います。

C#C++, Javaが該当します。

コンパイルを経る分、開発時の動作チェックに時間がかかりますので、後に紹介するスクリプト言語と比べるとコーディングには時間がかかります

しかしコンパイルを行う中で、多くのコンパイルツール(「コンパイラ」と言います)は、実行を最適に行うようソースコードの情報の適切な配置を行います。

よって一般的にスクリプト言語と比べると実行スピードは高速です。

スクリプト言語

一方、一度にコンパイルするのではなく、ソースコードを1行ごとや実行単位ごとに変換し、逐次実行していく形式の言語もあります。

これをスクリプト言語(またはインタプリタ言語)と言います。
Ruby, Python, JavaScript, PHPなどが該当します。

スクリプト言語は一般に、記述量が少なく習得が容易であることが多いです。
例えば、以下はコンパイル言語であるJavaで書かれた処理です。

package app.main;

pubic class Main{
   public static void main(String[] args){
        for(int i = 0; i<= 100; i++){
             System.out.println(i);
        }
   }
}

同じことをスクリプト言語であるRubyで書こうとするとこうなります。
(厳密にはRubyでもクラス定義などは行えるのですが、それをしなくてもRubyは動作します)

100.times do |i|
   puts i
end

これだけです。
Rubyがいかに記述量の少ない言語か、その威力を体感できると思います。

スクリプト言語は実行のたびに変換が逐次行われるので、一般的に実行速度はコンパイル言語より低速です。
まとめると以下のようになります。

  • コンパイル言語:実行時に一度だけ変換、記述量が多い、実行が高速
  • スクリプト言語:実行単位ごとに逐次変換、記述量が少ない、実行が低速

言語の特性の差による需要される現場の差

WordPressのPHP、基幹システムのJava、データ分析のPythonなど、個別の言語の特性によって求められる能力の違いはありますが、コンパイル言語とスクリプト言語は以下のように需要を大別できます。

コンパイル言語は高速に実行できるので、大量のユーザアクセスを処理する業務系システムや大規模開発の現場でよく用いられます。

スクリプト言語は記述が早く、それに伴いアプリケーションを高速で世に披露することができるため、ニーズの変化が激しいWebサービス開発によく用いられています。

エンジニアと言っても業態によって大きく必要な知識が異なります。
自分のなりたいエンジニア像と照らし合わせて、習得する言語を吟味しましょう。

授業日記についてのご意見

CodeShipの授業について「こんな事が知りたい・紹介して」というご意見・ご提案がありましたら、CodeShip公式Twitterアカウント(【CodeShip】プログラミングスクール)までDMまたはリプライにてお寄せください。