3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

2×3 か 3×2 か?かけ算順序の問題への職業プログラマからの意見

Last updated at Posted at 2018-11-12

最近聞いた話から考えてみた

小学生のテストで、

りんごを2つずつ3人に配りました。
その時の式と答えを書きなさい

答え
  式: 2 × 3
  答: 6

みたいなのがあって、2 × 3 だと正解で、 3 × 2 だと間違いになったとか。

「結果は同じなんだからそんなの算数(数学)としておかしい!!」
「いや、考え方として順番が大事だ!!」

という論争がありましたとさ。

わたしの考え

正解?不正解?それは、

「先生が何をテストしたかったか次第では?」

結局よくある けーす ばい けーす の話ですね……

小学生のこの年代くらいであれば、先生からの教え方で 「2つ」のものを「3人」に配るのなら「2 × 3」と書きましょう、順序も大事です 、みたいな教え方をされているのだと思います。

この手のテストでこの手の採点方法のケースでは、答えが6であることではなく、学校で教えられた通りの解法で解くことがテストされているのだと思います。

であれば、掛け算を使わない 2 + 2 + 2テストとしては不正解ですし、逆順の 3 × 2テストとしては不正解です。

ただ単に答えの6を求めたかったのか、2 × 3 = 6を求めたかったのか、それはテスト出題者の意図次第だと思います。

良いか悪いかは置いておいて、世の中の「問題」と「答え」はそういうものだと思います。


世の中のテストというものは、出題者が決めたルールの中で高い点数を取るというゲームです。

ただ単に「論理的に、科学的に、答えがあっていればいいというものでは無い」というのがわたしの理解です。

電卓を使ったらダメなのも、ググるのもダメなのも、横の人に答えを聞いたらダメなのも、名前をローマ字ではなく漢字で書くのも、周りが習っていないテクニックを使って答えを出すことがダメなのも、出題者が決めたルールですよね?

ボールをゴールに入れるだけなら手で持って走ればいいのに、足しか使っちゃいけないというサッカーのルールと同じです。決められたルールの中で高得点を出すというゲームがテストです。

※ ただし、その「ルール」が明確にされていることは重要です。おそらく今回の算数のテストのケースでも先生は「順序も大事ですよ」というルールを事前に言ってくれてた……と……信じています。


ということで、わたしは学校の教え方として、かけ算の順序を教えるのはおかしい!順序を意識させた方がいい! そもそもそんなテストはおかしい! みたいな議論をしているわけではなく、まあ、テストってそんなものだよね。。。という考えです。

なんでQiitaでこんなことを?

結果が同じでも、様々な書き方が出来るもの…… そう!ソースコードです!!

どなたかがTwitterで、

「算数のしぐさみたいなものなら道徳の時間にやるべきではないか」

みたいなことを書いてました。

「え!? コーディングも同じ結果になることを様々な書き方出来るんだけど…… コーディングスタイルとかも道徳でやるべきなの??」

という違和感を覚えたからです(汗)

言った本人は「算数なんて当たり前なものは道徳ででも…」と思ったのかもしれませんが、小学生低学年のかけ算は初めて習うことで全然当人には当たり前じゃないですからね(笑)大人のプログラミングくらいには当たり前じゃないと思う。。

ソースコードもこれじゃないとイケないなんてものは無いモノの、やっぱり慣習として、ベターな書き方があります。if文の書き方、for文の書き方、==の書き方、インデントの書き方、などなど。

それに対して「答えが同じなんだからどっちでも良いべきだ」と言われると、違うかな…… と思います。可読性が変わってきます。可読性が変わってくるとレビューの効果・効率が落ちたり、保守性が悪くなったりします。

わたしが考えるキレイなソースコード

最初の算数の問題に非常に近い話ですが、「2つを3人に」であれば「2 × 3」と書かれているのが、キレイなソースコードの1つの要素だと思います。

それが絶対な正解では無いにせよ。やりたいことが素直にストレートに表現されている、文学的なソースコードというのが、がキレイなソースコードだと思います。

ちょっと極端な言い方ですが、やっぱり一般的な日本語の文脈の通りに2 × 3と書いてくれる方がソースコードとしては読みやすいです。相手が日本人ならなおさら。

もちろん速度を重視するために一部をアセンブラに書き換えるようなこともあるとおもいます(わたしもやってました)そうなると可読性もあったものじゃないので、結局はケースバイケースなのは百も承知です。それでも、やりたいことがストレートに表現されているコードを、わたしは素直でキレイなコードだと思います!!

終わりに

大人になったら、ひらがなの「はね」「とめ」なんて気にしなくても感じは通じます。だからといって漢字のテストで「はね」「とめ」を無視していいことにはなりません。習った当初にはそういうことを「学校のテスト」というツールを使ってしっかり身に着けさせることは、あながち悪い事ではないと思います。

でも、不正解にしながらも、先生にはちゃんと「本当はどっちでもいいんだけどね。でも今回は数の順番もテストの範囲だから書き方を気を付けてね^^」「大きくなったらPythonでも使って計算を解いていいから、今だけ我慢してね^^」というフォローはしていただきたいと思います。じゃないと理不尽な記憶だけが残ってしまいますので。。。

3
1
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?