スクリプト言語とコンパイル言語

 まず、PHPスクリプト言語である。

 よく対比で言われるのがスクリプト言語コンパイル言語。しかし「コンパイル」単体で検索するとそれの説明は出て来ても、ちゃんと比べて分かる説明はあまりないかも知れない。

プログラムの最初、ソースコード

 プログラムを作るにはソースコードが必要である。ソースコードとは、プログラムがどう動くかを記述したテキストファイルの事。HTMLファイルを記述した事があれば分かるかも知れないが、HTMLファイルもブラウザにどう表示するかを指定し記述したソースコードの一種である。以下の様にHTMLファイル内に記述し、xxxx.htmlファイルとして保存すればブラウザで表示することが可能だ。

<html>

<head>
メタ情報、タイトル等のタグ

</head>
<body>
HTMLの本文いろいろ

</body>
</html>

コンパイルについて

 しかし、基本的にコンピュータは人間の言葉を直接理解出来ない。ソースコードにしても同様で、そのままでは理解出来ない。コンピュータ内では二進数と呼ばれる0と1だけの世界で処理を行っているからだ。「コンパイル」とは某有名パズルゲーム発祥のメーカーソースコードをコンピュータの理解出来る言葉に変換する作業である。コンパイルを行うソフトをコンパイラと呼ぶ。つまりソースコードをプログラムとしてコンピュータで動作させるには、

  1. 各言語でプログラムのソースコードを書く
  2. コンパイラソースコードコンパイルさせて、人間語から機械語に変換してもらう
  3. コンパイル済みファイル(モジュールと呼ぶ事が多い)をコンピュータに実行させる

という作業が必要になる。

 コンパイルが必要な言語の事をコンパイル言語と呼び、現在よく使われているものとしては、Java、C、C++C#Objective-CCOBOL等がある。基本的に各言語ごと、動作環境ごとに別々なコンパイラが必要である。

コンパイルが必要ないスクリプト言語

 逆にスクリプト言語はこのコンパイルが必要なく、ソースコードを変換せずとも、そのままコンピュータがソースコードを上から順番に理解して実行してくれる。上から順番に行う事を逐次処理と呼び、インタプリタという。

 前述のサンプルの様なHTMLも、ソースコードを書いたらそのまま処理してくれる。PHPスクリプト言語なので、コンパイル言語でありがちなコンパイラの設定や環境に依存せず、スピーディーにプログラムを書くことが可能。

 PHPの場合はHTML組み込みのスクリプト言語なので、PHPファイル内にHTML言語で書かれた部分と、PHP言語で書かれた部分を混在させる事が可能。混在させて記述することにより、PHPで書かれた部分だけPHPとして理解して処理してくれる。

<html>

<head>
メタ情報、タイトル等のタグ

</head>
<body>
HTMLの本文いろいろ

<?php
     $nowdate = getdate();
?>

現在時刻:
<? printf("%04d/%02d/%02d %02d:%02d:%02d", 
     $nowdate[year],
     $nowdate[mon],
     $nowdate[mday],
     $nowdate[hours],
     $nowdate[minutes],
     $nowdate[seconds]); ?>

</body>
</html>

 上記の例では表示時の現在時刻を出力するが、「?php」や「?」で始まるタグ内に書かれた部分をPHP言語として理解し、処理を行ってくれる。ブラウザでリロードする度にPHPの処理が行われ、現在時刻も最初に表示したものからリロード時の時刻に変わる。


 という様に、本来スクリプト言語コンパイル言語は別々なものだが、コンパイル必要と不要とで対比で言われるのだ。