コンピュータ内の演算と日本語文法の親和性

基本情報技術者試験の勉強をしていると、数式記法として逆ポーランド記法が出てきます。 最初は難しそうな印象なのですが、文法を覚えてしまうとものすごく読みやすい記法です。特に日本人には。 そこで今回はこの逆ポーランド記法とコンピュータ内でのスタックによる演算、日本語との共通性についてのお話をしたいと思います。

コンピュータ内での演算は、スタックを用いた逆ポーランド記法(後置記法)で行われます。

スタックとは スタックはお皿を積み重ねる動作がよく例として用いられます。お皿を積み重ねていくと、最初に積んだお皿が一番下、最後に積んだお皿が一番上となり、お皿を取ると最後に積んだお皿から取っていく事になります。 後入れ先出し(LIFO)という言い方もされ、スーパーの陳列などで行う先入れ先出し(FIFO)などとは逆の出し入れの方法ですね。
後入れ先出しを行うのがスタック、先入れ先出しを行うのがキューです。

スタックを用いた演算では、入力がオペランド(非演算子)であればスタックへ格納し、演算子であればスタックから2つのオペランドを取り出して演算した結果をスタックに戻すという処理を行います。

例えば、
(3+2)×(5-2)
は、逆ポーランド記法で記述すると
3 2 + 5 2 - ×
です。

これはコンピュータ内では、スタックを用いて以下のように計算します。

3をスタックに積む→3
2をスタックに積む→3 2
+は演算子であるため、2つのオペランド(3と2)を取り出して足す→5
5をスタックに積む→5 5
2をスタックに積む→5 5 2
-は演算子であるため、2つのオペランド(5と2)を取り出して引く→5 3
×は演算子であるため、2つのオペランド(5と3)を取り出して掛ける→15
結果は15になります。

この逆ポーランド記法、何だか読みやすくないですか?
そう、3 2 + 5 2 - ×は、3と2を足して、5から2を引いて、(それらを)掛けると普通に日本語で読めてしまいます。 つまり、後置記法は動詞が後にくる日本語と同じ文法なのです。

コンピュータ内部でのスタックを用いた計算は、意外にも日本語の文法と同様の順番で演算を行っており、何だか興味深いですよね。 そう考えると日本語というのは、何だか先進的な言語に思えてきます。

ちなみに日本語は、いわゆる主要部終端型(文章が常に動詞で終わる)の言語ですが、完全な主要部終端型と言える言語は日本語くらいのようです。(主要部先導型と主要部終端型の混在型は多い)
基本情報技術者試験の勉強をしている方は、逆ポーランド記法=日本語記法と覚えておくと理解しやすいですよ。

参考ちになみに、ポーランド記法の命名はポーランド人の論理学者ヤン・ウカシェヴィチが考案したことに由来し、ポーランド語とは関係ありません。

以上、コンピュータ内の演算と日本語文法の親和性についてでした。

公開日:2020年01月03日

記事 > 基本情報技術者試験 > コンピュータ内の演算と日本語文法の親和性

基本情報技術者試験の記事一覧

他の記事も見る

このページのトップに戻る