プログラミング言語
読み方:プログラミングげんご
別名:プログラム言語
【英】programing language, programming language
プログラミング言語とは、計算機に対して動作手順、動作方法、動作内容などを適切に指示するために用いられる、人工的に構成された言語体系のことである。
情報処理技術者試験などでは「プログラム言語」と表記されることもある。
計算機は、機械語と呼ばれる中央処理装置が直接解釈できる命令を実行することによって動作する。しかし、人間にとって、機械語を扱うことは非常に難しい。そのため、計算機に与える指示を、より人間にとって扱いやすい表現で与えるための手段として、プログラミング言語が用いられている。
プログラミング言語において記述される個々の命令の集まりは、プログラムと呼ばれる。プログラミング言語を用いてプログラムを設計・記述する者はプログラマーと呼ばれ、プログラミング言語を用いて記述された文書はソースコードと呼ばれる。
プログラミング言語は、言語の理解のしやすさとともに、厳密さ、簡潔さ、複雑な内容も表現できる柔軟さなどが追求されている。プログラムの利用分野や実行形態などによって、さまざまな種類のプログラミング言語が開発されている。その、それぞれのプログラミング言語は、固有の文法、語彙、意味論を持ち、仕様が厳密に規定されている。
カンザス大学のWebサイト上で、Bill Kinnersleyによって管理運営されている「The Language List」では、過去から現在に至るまで存在した、およそ2500種類に上るプログラミング言語が紹介されている。
利用形態によるプログラミング言語の分類
プログラミング言語を利用形態から分類すると、アセンブリ言語、コンパイラ型言語、インタープリタ型言語(あるいはスクリプト言語)に分けることができる。
アセンブリ言語は、機械語に対応する命令をシンボリックな表現で記述する点に特徴がある。CPUのレベルに近い命令記述がとられることから、機械語とともに、低級言語と呼ばれる区分にも分類される。
コンパイラ型言語は、変数名や数式などのような、人間が読みやすい、より抽象的な表現によってプログラムを記述し、コンパイラを用いて機械語や中間言語などのより低レベルの命令に変換し、目的のプログラムを生成する。
インタープリタ型言語は、実行時にその都度、命令の解釈と実行を行うタイプであり、コンパイルの過程がないか、あるいはユーザーから隠されている形態である。コンパイラ型言語とインタープリタ型言語は、人間に近い表現を用いる高級言語の範疇にほぼ一致する。
パラダイムによるプログラミング言語の分類
プログラムをどのように構成するかという観点(パラダイム)から、プログラミング言語を分類すれば、手続き型言語、関数型言語、論理型言語、あるいは、オブジェクト指向言語などが存在する。同じパラダイムの言語は、文法の違いがあっても、大まかなプログラムの構成は互いに似通っている。
手続き型言語は、手続きの集まりをもとに、ジャンプ、条件判定、繰り返しなどを制御しプログラムを構築する。主な言語としては、Fortran、COBOL、PL/I、BASIC、Ada、C言語、Pascalなどを挙げることができる。
関数型言語においては、プログラムは、関数の合成として表現される。主な例としては、Lisp、Scheme、Haskel、Miranda、ML、Ocaml、F#などがある。
論理型言語では、プログラムは、論理式の集まりとして表現される。主な例としては、Planner、Prologなどがある。
オブジェクト指向言語では、プログラムは、オブジェクト群とその相互作用として表現される。主な例としては、Simula、Smalltalk、C++、Objective-C、Eiffel、Dylan、Java、C#、D言語などがある。
その他に、スクリプト言語と呼ばれる、インタープリタ型言語の実行形態で、アプリケーションレベルでの記述に適した言語も数多く登場している。スクリプト言語の主な例としては、GUIなどに用いられるTcl/TK、Web構築においてサーバー側で用いられるPerl、Python、Ruby、Webブラウザ側で用いられるJavaScript、Flashなどがある。
なお、プログラミング言語の多くは、英語の語彙を用いるが、日本語を用いたプログラムが作成できる「なでしこ」や「Mind」などのプログラミング言語も存在する。
その他
あるプログラミング言語のソースコードや中間ファイルなどを処理する個々のプログラムやツール類を言語処理系と呼び、論理的に規定されたプログラミング言語そのものとは区別されている。例えば、BASICのソースコードを、BASICコンパイラという言語処理系を用いてコンパイルすると、直接に実行可能な実行ファイルが生成される。しかし、同じBASICのソースコードを、別の言語処理系であるBASICインタプリタを用いて、コンパイルをせずに直接実行することもできる。つまり、あるプログラミング言語がコンパイラ型言語であるか否かということは、言語そのものではなく、実際に実装された言語処理系の問題であるといえる。
現実の商用化された言語処理系は、技術的な流行を取り入れ、複数のパラダイムを利用可能にした、ハイブリッド型、あるいはマルチパラダイム型になっている場合が多い。
参照リンク
The Language List - (英語)
ISO/IEC JTC1/SC22/WG14 - C言語ワーキンググループ - (英語)
Javaテクノロジ - (Sun Microsystems)
オブジェクト指向スクリプト言語 Ruby
|