実行モデルの詳細
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/16 16:19 UTC 版)
操作的意味論は、言語の実行モデルを指定する1つの方法である。実行中のプログラムの動作は、(言語の実行モデルを定義する)操作的意味論から派生した動作と一致する必要がある。 実行モデルは、分割できない作業単位とは何か、それらの作業単位が実行される順序の制約は何かなどをカバーする。たとえば、加算操作は多くの言語で分割できない作業単位であり、順次言語では、このような作業単位は次々に実行されるように制約される。 これを説明するために、KernighanとRichieの本で説明されているCプログラミング言語について考えてみよう 。 Cにはステートメントと呼ばれる概念がある。言語仕様では、ステートメントを「;」で終了する構文のチャンクとして定義している。次に、言語仕様には、「プログラムの実行は、次々にステートメントを順番に進める」と書かれている。 「プログラムの実行は、次々とステートメントを順番に進める」という言葉は、Cの実行モデルの一部である。これらの単語は、ステートメントが分割できない作業単位であり、コード内の構文上の外観と同じ順序で進行することを示す(IFやFORなどの制御ステートメントが順序を変更する場合を除く)。 「プログラムの実行は次々とステートメントを順番に進める」と述べることにより、プログラミングモデルは作業単位を実行する順序に関する制約を述べている。 C言語には、実際には実行モデルに追加のレベルがある。これは優先順位である。優先順位は、単一のステートメント内の操作の順序の規則を示す。優先順位は、単一のステートメント内にある作業単位の実行に関する制約を示すものと見なすことができる。そう、 ";" 「IF」と「WHILE」はステートメントの順序の制約をカバーし、優先順位はステートメント内の作業の制約をカバーする。したがって、C言語仕様のこれらの部分は、C言語の実行モデルの一部でもある。 実行モデルは、プログラミング言語から独立して存在することもできる。その例としては、 POSIXスレッドライブラリやHadoopのMap-Reduceプログラミングモデルがある。実行モデルの実装は、コンパイラまたはインタープリタを介して行い、多くの場合、ランタイムシステムが含まれる。 実行モデルの実装は、実行中に作業が行われる順序を制御する。この順序は、状況によっては事前に選択することも、実行が進むにつれて動的に決定することもできる。ほとんどの実行モデルでは、両方の程度を変えることができる。たとえば、C言語は、ステートメント内の作業の順序を修正し、IFステートメントまたはループステートメントの形式を含むステートメントを除くすべてのステートメントの順序を修正する。したがって、実行順序のほとんどは、実行が開始される前に静的に選択できるが、実行が進むにつれて、ごく一部を動的に選択する必要がある。 静的な選択は、ほとんどの場合コンパイラ内で実装されます。この場合、作業の順序は、命令が実行可能バイナリに配置される順序で表される。動的な選択は、言語のランタイムシステム内に実装される。ランタイムシステムは、コンパイラによって挿入された命令によって呼び出されるライブラリにすることも、次に実行する作業を動的に選択する分岐命令を挿入するなどして、ランタイムシステムを実行可能ファイルに直接埋め込むこともできる。 ただし、インタプリタは任意の言語用に構築することもできる。その場合、実行順序に関するすべての決定は動的となる。インタプリタは、パーツトランスレータ、およびパーツ実行モデルの実装と見なすことができる。
※この「実行モデルの詳細」の解説は、「実行モデル」の解説の一部です。
「実行モデルの詳細」を含む「実行モデル」の記事については、「実行モデル」の概要を参照ください。
- 実行モデルの詳細のページへのリンク