情報学部 菅沼ホーム 目次 索引

第1章 言語の種類

  コンピュータに何かを実行させるためには,その実行手順を示したプログラムを書く必要があります.その際,日本語のような自然言語ではなく,ここで述べる C++ のようなプログラミング言語を使用する必要があります.しかし,C++ のような高級言語をコンピュータは理解することができません.コンピュータが理解できる言語-機械語-に翻訳してやる必要があります.この翻訳の方法によって,プログラミング言語は大きく分けて 2 つの種類に分類できます.一つはコンパイラ言語であり,他の一つは,インタプリータ言語です.

  コンパイラ言語では,作成されたプログラム(ソースプログラム)全体をコンパイラによって機械語に翻訳し,実行可能プログラムを生成します.一度コンパイルすれば,実行可能プログラムだけで目的の処理を行うことができます.ただし,ソースプログラムは人間が作成したものです.従って,必ず誤りがあると言っても過言ではありません.もし,ソースプログラム内に誤りがあった場合,コンパイラは,実行可能プログラムを作成することなしに,エラーメッセージを出力して停止します.そのような場合,エディタを使用してソースプログラムを修正した後,再びコンパイルする必要があります.コンパイラ言語の最大の特徴は実行速度の速さです.また,変数の型宣言を必要とする場合も多く,変数の有効範囲等が明確であり,大規模なプログラム作成に向いています.なお,プログラム上の誤りのことを,コンピュータ用語として,バグbug )と呼び,また,誤りを修正することをデバッグ虫取りdebug )と呼びます.

  コンパイラ言語とは異なり,インタプリータ言語では,ソースプログラムをインタプリータによって 1 行毎に翻訳し,1 行毎に実行していきます.そのため,翻訳・実行の際にバグがあれば,その行で停止するため,デバッグが簡単になるという長所があります.しかし,あるデータを与えた場合に実行されなかった部分のバグは,その部分が実行されるデータが与えられるまで残ってしまいます.コンパイラ言語においても同様なことが言えますが,インタプリータ言語の場合のほうが,その割合は高いと思います.さらに,ある行を繰り返し実行するような場合にも,繰り返し毎に,同じ翻訳作業が繰り返されますので,コンパイラ言語に比較し,実行速度が遅くなります.ただし,最近のインタプリータ言語においては,実行速度の遅さをカバーするため,様々な工夫がなされており,単純のインタプリータ言語とは言えない部分がありますが,ここでは,インタプリータ言語の一種とみなしていきます.

  このコンテンツで説明する C++ ,C#,VB ( Visual Basic ) はコンパイラ言語であり,JavaScript,PHP,Ruby,及び,Python はインタプリータ言語に属します.VB に関しては,インタプリータとして扱う場合もありますが,ここでは,コンパイラ言語としてみていきます.Java もコンパイラ言語の一種と言えますが,C++ とは多少異なります.一般に,あるコンピュータによってコンパイルされた実行可能プログラムは,異なる CPU を持ったコンピュータではそのまま実行できません.そのコンピュータに固有のコンパイラによって,ソースプログラムを再度コンパイルしてやる必要があります.しかし,Java の場合は,必ずしもそのようにはなりません.Java に対するコンパイラは,Java のソースプログラムをクラスファイルという中間言語に翻訳します.そして,Java VMJava Virtual Machine )という一種のインタプリータが,クラスファイルを解釈しながら実行することになります.従って,Java VM がインストールされてさえいれば,異なる CPU を持ったコンピュータでコンパイルされたプログラムも実行可能になります.

  全ての言語に対して,エディタを使用して作成し,保存したファイルを以下に示すような方法で,コマンドプロンプト上で実行しています( JavaScript の場合は,HTML ファイルをダブルクリック).また,言語によっては,GUI を扱うことも可能ですが,ここでは,その機能に関しては一切触れません.ただし,JavaScript や PHP の場合は,その一部を利用することがあります.
g++ test.cpp Wall -o test   // C++ プログラムのコンパイル
test   // 実行

javac -encoding utf-8 Test.java   // Java プログラムのコンパイル
java Test   // 実行

test.html   // JavaScript のプログラム(ブラウザで確認)

PHP test.php   // PHP プログラムの実行

Ruby test.rb   # Ruby プログラムの実行

py -3 test.py   # Python プログラムの実行

csc test.cs   // C# プログラムのコンパイル
test   // 実行

vbc test.vb   ' Visual Basic プログラムのコンパイル
test   ' 実行
		

情報学部 菅沼ホーム 目次 索引