高級言語
出典: フリー百科事典『ウィキペディア(Wikipedia)』
高級言語(こうきゅうげんご)、またの名を高水準言語(こうすいじゅんげんご)は、狭義ではプログラミング言語のうち、機械語、アセンブリ言語以外のもの。この場合、アセンブリ言語を低級言語(低水準言語)という。
広義には、記述レベルが実行レベルに比べて抽象度の高いものをさす。この意味ではLISPなどが典型である。
[編集] 概要
「高級」の由来は、コンパイラなどで直接機械語にするのではなく、一度アセンブリ言語に変換されて、機械語に変換されることがあったため、アセンブリ言語を低級言語、低級言語に変換できる言語を高級言語と区別したことから。インタプリタなどでは低級言語ではなく、中間言語にされて実行されることが多い。
アセンブリ言語と比べ、
- 人間にとってわかりやすい
- CPUに依存した処理を書かなくてよい
- メモリ制御、IO制御等CPUレベルの操作を意識しなくてよい
という違いがある。広義の意味は主に三番目の理由からである。
[編集] その他
CPU固有の機能を使っていない場合も多く、速度やメモリ使用量の面ではアセンブラより不利になる場合もあるが、コンパイラでは最適化がされるので、手間をかけてアセンブラで記述するより高速になる場合が多い。近年ではコンパイラの最適化を意識して簡略化されたCPUも存在しており(RISCを参照)、また逆に高級言語に対応した命令を用意するCPUも現れるなど(CISCを参照)、言語の要請がハードウェアに影響を与えた典型例となっている。
機械語、アセンブリ言語以外のものは、たいていはCPUのニーモニックと1対1で対応する命令を持たず、何らかの形で1つの命令文、制御文が複数のCPUコードに変換されるので高級言語である。しかし、NECのメインフレーム ACOS-6シリーズのように、COBOLの1命令(MOVEやADD等)をほぼ1つの機械語に変換できるアーキテクチャを持つコンピュータもある。もちろんこのような場合でも、COBOLは高級言語の位置づけになる。
C言語は上記の分類からは高級言語に入るが、メモリアドレスをポインタで参照できることやインラインアセンブラを書けることなどから時に「中級言語」と呼ばれることがある。