スクリプト言語とコンパイル言語
よく対比で言われるのがスクリプト言語とコンパイル言語。しかし「コンパイル」単体で検索するとそれの説明は出て来ても、ちゃんと比べて分かる説明はあまりないかも知れない。
プログラムの最初、ソースコード
プログラムを作るにはソースコードが必要である。ソースコードとは、プログラムがどう動くかを記述したテキストファイルの事。HTMLファイルを記述した事があれば分かるかも知れないが、HTMLファイルもブラウザにどう表示するかを指定し記述したソースコードの一種である。以下の様にHTMLファイル内に記述し、xxxx.htmlファイルとして保存すればブラウザで表示することが可能だ。
<html> <head> メタ情報、タイトル等のタグ </head> <body> HTMLの本文いろいろ </body> </html>
コンパイルについて
しかし、基本的にコンピュータは人間の言葉を直接理解出来ない。ソースコードにしても同様で、そのままでは理解出来ない。コンピュータ内では二進数と呼ばれる0と1だけの世界で処理を行っているからだ。「コンパイル」とは某有名パズルゲーム発祥のメーカー、ソースコードをコンピュータの理解出来る言葉に変換する作業である。コンパイルを行うソフトをコンパイラと呼ぶ。つまりソースコードをプログラムとしてコンピュータで動作させるには、
という作業が必要になる。
コンパイルが必要な言語の事をコンパイル言語と呼び、現在よく使われているものとしては、Java、C、C++、C#、Objective-C、COBOL等がある。基本的に各言語ごと、動作環境ごとに別々なコンパイラが必要である。
コンパイルが必要ないスクリプト言語
逆にスクリプト言語はこのコンパイルが必要なく、ソースコードを変換せずとも、そのままコンピュータがソースコードを上から順番に理解して実行してくれる。上から順番に行う事を逐次処理と呼び、インタプリタという。
前述のサンプルの様な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の処理が行われ、現在時刻も最初に表示したものからリロード時の時刻に変わる。