見出し画像

「1 + 2」と「2 + 1」

「1 + 2」と「2 + 1」は同じものでしょうか。
それとも異なるものでしょうか。

色々な捉え方があると思いますが、私の個人的な意見は「意味は異なるけど性質は同じ」と捉えるのが正しい。

「元々2個だったものに、1個追加する」と
「元々1個だったものに、2個追加する」では、意味は異なります。
ですが、「1 + 2」も「2 + 1」も、計算結果は3になるので、数の性質は同じになります。

「3」が持つ性質とは、例えば
・奇数
・素数
・整数
・3の倍数

などなど。

「1 + 2」も「2 + 1」も、計算結果が3である以上、奇数だし、素数だし、整数だし、3の倍数です。3に当てはまる性質は、「1 + 2」にも「2 + 1」にも当てはまります。

なんの話をしているのかわからないですよね。

なんというか、「1 + 2」と「2 + 1」は書き方が違うだけで、本質的に持っている性質は同じですが、そのことに気づかない人が意外と多い。
「1 + 2」と「2 + 1」はどちらも答えが3になるのだから、同じ性質であることぐらい誰でも分かる、と思うかもしれません。確かに足し算を習っている人であれば分かるでしょう。

けど、話が足し算よりも複雑になってくると、意外と多くの人が気づかなくなります。

今プログラミングを教える仕事をしていますが、人にプログラミングを教えているとこういう現象がよく起きます。「1 + 2」と書いているものは理解できるけれど、書き方を「2 + 1」に変えると、全く違うものに見えるらしく、混乱してしまう人が多いです。ここで言う「1 + 2」と「2 + 1」は例えですが、私的には「1 + 2」と「2 + 1」くらいの違いにしか見えないけれど、困惑している人からすると全く違うものに見えるらしい。

人に教える仕事をしている中で、この認識の違いを埋めるのが非常に難しいと感じます。

異なるものから共通している部分を見つけることを「抽象化」とか「一般化」と呼びますが、プログラミングのおいては抽象化、一般化の能力が極めて重要だなと感じます。

おそらくですが、抽象化や一般化の能力の差は、学生時代に国語と数学にどれだけ触れてきたかが大きく関係している気がします。義務教育期間の勉強はなんだかんだで重要です。


サポートいただくとめちゃくちゃ喜びます。素敵なコンテンツを発信できるように使わせていただきます。