前置記法 (ゼンチキホウ) とは | 意味や読み方など丁寧でわかりやすい用語解説
前置記法 (ゼンチキホウ) の読み方
日本語表記
前置記法 (ゼンチキホウ)
英語表記
Prefix notation (プレフィックス ノーテーション)
前置記法 (ゼンチキホウ) の意味や用語解説
前置記法とは、数式やプログラムにおける演算の記述方法の一つである。演算子を、その演算対象となる二つ以上の被演算子(オペランド)の前に配置するのが特徴だ。ポーランドの論理学者ヤン・ウカシェヴィチによって考案されたため、ポーランド記法とも呼ばれる。我々が日常的に数学で用いる「3 + 4」のような記法は中置記法と呼ばれ、演算子を被演算子の間に置く。これに対して前置記法では、同じ計算を「+ 3 4」と表現する。この記法の最大の利点は、式の評価順序を決定するための括弧が不要になることである。式の構造そのものが演算の順序を一意に示すため、コンピュータによる構文解析が非常に容易になるという特性を持つ。 前置記法の利点を理解するためには、まず普段使っている中置記法がコンピュータにとってどのように扱われるかを考える必要がある。例えば、「3 + 4 * 5」という中置記法の式を人間が計算する場合、私たちは無意識に「乗算は加算よりも優先順位が高い」というルールを適用し、先に 4 * 5 を計算してから 3 を足す。もし加算を先に行いたい場合は、「(3 + 4) * 5」のように括弧を用いて明示的に順序を指定する必要がある。このように、中置記法を正しく解釈するためには、演算子の優先順位と括弧の対応関係という二つの複雑なルールを処理するロジックがコンピュータのプログラムに必要となる。 これに対し、前置記法ではこれらの複雑なルールが不要になる。先ほどの二つの式を前置記法に変換してみよう。「3 + 4 * 5」は、まず優先されるべき「4 * 5」が「* 4 5」となる。次に、この結果と 3 を加算するので、式全体は「+ 3 (* 4 5)」と表現される。しかし、前置記法では括弧も不要なため、最終的に「+ 3 * 4 5」となる。一方、「(3 + 4) * 5」は、先に計算する「3 + 4」が「+ 3 4」となり、この結果と 5 を乗算するため、全体は「* (+ 3 4) 5」となり、括弧を外して「* + 3 4 5」と記述される。 コンピュータが前置記法の式を評価するプロセスは非常に単純明快である。式を左から右へ一度だけ読み進めることで計算が完了する。例えば「* + 3 4 5」を評価する場合を考える。まず最初に演算子「*」を読み込む。乗算演算子は二つの被演算子を必要とすることをコンピュータは知っている。次に読み込むのは「+」であり、これも演算子である。この「+」の計算結果が、「*」の一つ目の被演算子になる。加算演算子も二つの被演算子を必要とする。次に「3」を読み込む。これは数値なので「+」の一つ目の被演算子となる。次に「4」を読み込む。これも数値なので「+」の二つ目の被演算子となる。ここで「+」に必要な被演算子が揃ったため、「3 + 4」が計算され、結果として「7」が得られる。この「7」が、最初に読み込んだ「*」の一つ目の被演算子として扱われる。続いて式を読み進めると「5」がある。これは数値なので「*」の二つ目の被演算子となる。これで「*」に必要な二つの被演算子「7」と「5」が揃ったため、「7 * 5」が計算され、最終的な結果「35」が導き出される。このように、演算子が現れたら、その演算子が必要とする数の値を後続から取得して計算するという処理を再帰的に繰り返すだけで、どんなに複雑な式でも一意に評価できる。 この特性から、前置記法は特定の分野で実際に活用されている。最も代表的な例は、LISP(Lisp)系のプログラミング言語である。SchemeやCommon Lispといった言語では、すべての処理が「(関数名 引数1 引数2 ... )」という形式のリストで記述される。これはS式(S-expression)と呼ばれ、その構造は前置記法そのものである。例えば、`(+ 3 4)` と書けば 7 が返される。この一貫した構文のおかげで、プログラムのコード自体をデータとして容易に扱うことができ、LISPの強力なマクロ機能などを実現している。また、プログラミング言語のコンパイラやインタプリタが、人間が書いた中置記法のソースコードを解析する際、内部的な中間表現として前置記法に対応する木構造(構文解析木)を生成することがある。この形式はコンピュータにとって処理しやすいため、コードの最適化や機械語への変換を効率的に行う上で重要な役割を担っている。 なお、前置記法と対になる概念として後置記法(逆ポーランド記法)も存在する。これは演算子を被演算子の後に置く記法で、例えば「3 + 4」は「3 4 +」と表現される。後置記法も前置記法と同様に括弧が不要で、スタックというデータ構造を用いると効率的に評価できるため、一部のプログラミング言語や電卓などで採用されている。システムエンジニアを目指す者にとって、人間にとって自然な中置記法だけでなく、コンピュータの処理効率を高める前置記法や後置記法といった異なる表現形式を理解することは、プログラムの内部動作やデータ構造への深い洞察を得るための基礎知識となるだろう。