式 (プログラミング)
プロシージャをサブルーチンとして呼び出す式。
f(x, y)
といったように、表面上の見た目では数学における関数の記法と同様な構文であることが多い。これは、関数型言語ではないプログラミング言語でも、多くはこのような記法であり、あるいはこの言語機能を持っている。
数式などで見慣れている以下のような、
〈式〉〈演算子〉〈式〉
というような構文となる。FORTRANのように数値計算のことだけを考えていれば良かった時代にはごく普通の言語機能だと考えられていたが、その後あらゆるデータ型をプログラミング言語が扱うようになった際に、それらのデータ型と演算子をどう扱うかは、言語ごとにまちまちとなった。言語によっては、代入なども、代入演算子などによる式でおこなうという設計の場合もある。
このような構文における頭痛のタネに、「演算子の結合性」(en:Operator associativity)と「演算子の優先順位」(operator precedence)がある。直感的には、少なくとも初等教育以来ずっと慣れている「乗除が先、加減が後」という規則があったほうがわかりやすいが、その他にもいくつもの「コンピュータのプログラミングではこれも使いたい」という演算、たとえばビット演算などを追加してゆくと、階層が何段階も増えてしまう。
C言語の設計ミスに、ビット演算子の & や | の優先順位が == よりも低い、という点があるが、これは以前にはC言語に論理演算子の && や || が無く、文脈によって演算子の意味が変わるという仕様であったことが遠因である。
そういったように、演算子が関係する文法の仕様を設計するのは難しく、さらに近年は前述のようにデータ型が増えたことによって余計に難しい要素が増えている。後述するような、他の種類の演算子も含めるとさらに複雑になる。