見出し画像

プログラミングと数学

プログラミングは理系の人の方が有利。
という話をよく聞くしよく見かけます。
一方で、文系で優秀やプログラマーの人も多くいるのも事実で、関係ないという話もよく目にします。

私としては、プログラミングはやっぱり理系の人の方が有利だと思います。
特に数学ができるかどうかがすごく重要です。
これは私自身のエンジニアとしての経験と、講師としてプログラミングを教える中で感じたことです。

プログラミングの中で専門的な数学の知識が必要になるかというと、実際のところあまり多くはありません。
機械学習やゲームプログラミングといった分野では、大学レベルの数学の知識を必要とする場合もありますが、少なくとも、プログラミングの基礎を学ぶ段階では専門的な数学の知識は必要ありません。
また、業務系のエンジニアやWeb系のエンジニアでも数学の知識が必要とされる場面は少ないでしょう。

じゃあ数学出来なくても問題ないのでは。
と思うかもしれません。
確かに数学に関する知識の有無はあまり関係ないかもしれません。
ただ、私の経験上、学生のときに数学をどれだけ勉強してきたか、あるいは数学がどれだけ得意だったかによって
プログラミングの習得のスピードが変わってくるように思います。

これはおそらく、論理的思考力と抽象化の能力が関係していると思います。
論理的思考力とは物事を道筋立てて考える能力のこと。
プログラミングの勉強は、専門的な知識を覚えることも必要ですが、それ以上に処理の流れ(ロジック)を考えたり、エラーや問題が発生したときに解決策を論理的に考えることができるかどうかが重要になってきます。
この論理的に考える能力は、数学(と国語)を勉強している中で養われる能力でもあります。
なので、数学を多く勉強してきた人はその点で有利となります。

そして論理的思考と並ぶくらい重要なもう一つの要素は抽象化の能力です。
抽象化とは、異なる事象から共通している部分を見つけて一般化することです。
数学では多くの公式や定理などが出てきます。
公式は、具体的な数値の計算で成り立つ式を抽象化(一般化)したものだと言えます。

私たちが普段生活する中で数学の知識が活用される場面は多くありません。
その中で学生時代に何のために数学を学ぶのかというと、この抽象化の能力を鍛えることが大きな目的であると思います。

私は学生時代から数学は割と得意な方で、大学でも数学を専攻していました。
大学で習った講義の内容は今となってはほとんど覚えていませんが、とある講義の中で聞いた
数学で最も大事な能力は似たものを見つける能力」という言葉が今でも印象に残っています。
時間が経って数学の知識を覚えていなかったとしても、似たものを見つける能力が鍛えられたのであればそれだけで数学を勉強した意義があるように思います。

自分自身がプログラミングを学ぶときや、講師としてプログラミングを教えているとき、
この「似ているものを見つける能力」が高いかどうかで習得のスピードが変わると実感します。

プログラミングを学びたいけれど数学が苦手だという方は、一度数学を学びなおしてみることをおすすめします。
数学の知識を覚えることより、「物事を一般化する能力」を鍛えることを目的として学ぶのがおすすめです。

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