
コンピューティングにおいて、言語プリミティブとは、プログラミング言語で利用できる最も単純な要素です。プリミティブとは、特定のマシンのプログラマーが利用できる最小の「処理単位」であり、言語における式の原子要素とも言えます。
プリミティブとは、意味、つまり言語における意味値を持つ単位です。したがって、プリミティブは、構文の最小要素であるパーサーにおけるトークンとは異なります。
機械命令は、通常アセンブラプログラムによって生成され、処理の最小単位とみなされることが多いが、必ずしもそうではない。通常、機械命令は、1バイトまたはバイト列をあるコンピュータメモリから別のメモリにコピーしたり、あるプロセッサレジスタを別のプロセッサレジスタに加算したりするなど、1つの操作とみなされる処理を実行する。
しかし、今日のコンピュータの多くは、実際にはマイクロコードと呼ばれる、機械語を解釈するさらに低レベルの処理単位を内蔵しており、マイクロコード命令こそが真のプリミティブと言えるでしょう。これらの命令は通常、ハードウェアベンダーのプログラマーのみが変更可能です。
高水準プログラミング言語(HLL)プログラムは、個別の文と基本データ型で構成され、単一の操作を実行したり単一のデータ項目を表現したりするようにも見えますが、機械が提供する意味レベルよりも高い意味レベルで実行されます。ある場所から別の場所へデータ項目をコピーする処理は、実際には多くの機械語命令を伴うことがあります。例えば、
最後に
一部のHLL文、特にループを含む文は、低水準プログラミング言語(LLL)において数千、あるいは数百万ものプリミティブを生成することがあり、これはプロセッサが最下位レベルで実行しなければならない命令パス長そのものを構成します。この認識は抽象化ペナルティと呼ばれています。[1] [2] [3]
インタプリタ言語の文はHLLプリミティブと類似していますが、さらにレイヤーが追加されています。文がHLL文と非常によく似た方法で実行される前に、まずインタプリタによって処理される必要があります。この処理には、対象となる機械語の多くのプリミティブが関与する場合があります。
第4世代プログラミング言語(4GL)と第5世代プログラミング言語(5GL)は、高レベルプリミティブから低レベルプリミティブへの単純な一対多の対応関係を持ちません。4GLと5GLの仕様には、インタプリタ型言語プリミティブの要素がいくつか組み込まれていますが、本来の問題へのアプローチは手続き型言語の構造というよりは、問題解決とシステムエンジニアリングに重点が置かれています。