プログラミングに数学は必要か?
こんにちは、これが355本目の記事となったすうじょうです。今日は、大学で情報系を学んでいる一学生である私の個人的な考えを話したいと思います。
※この記事で書くのはあくまで個人的な意見です。私個人はあらゆるプログラミングを経験しているわけではないですが、それでも私の経験からいえる範囲について書いたつもりです。
よく話題になることにプログラミングを学ぶのに数学は必要かというものがある。まず結論としては、プログラミングで何をしたいかによって必要かどうかは異なるということになります。
すごく曖昧な言い方になりましたが、この理由としてはプログラミングといっても様々な対象があり、それぞれによって要求されている数学レベルが異なるからです。
例えば、用意したデータセットに、直接ライブラリを用いて機械学習や深層学習を行うだけの場合、数学はあまり必要ないです。(ただ、その内部構造を理解しようと思うと数学が必要です)
Webサイトの制作やアプリの制作には数学が必要になる場合は少ないと思います。ただ、アプリゲームでアクションゲームを作る場合は、数学というよりも物理の知識が必要になるかもしれません。
逆にどういった場面で数学が必要かと言えば、アルゴリズムやAIの理論(計算量や背景となる数学的理論)を理解したいときです。また、データサイエンスの分野では、統計の知識が必要となります。
個人的に最低限あった方がよい知識としては、高校数学までで出てくる関数(三角・指数・対数関数など)とその基本的な計算、場合の数は理解しておいた方がいいと思います。
また、必要になる場合があるものとしては、行列の計算の知識です。
ただ、プログラミングをするだけなら極限、微分、積分、確率、統計などの計算は出来なくても困らない場合が多いと思います。
ここまで具体的な数学の知識について必要かどうかを考えましたが、それよりもプログラミングにおいて、必要だと思う能力は、数学的思考力です。これは、物事を論理的に考える力で、数学の演習によって培われる人が多いと思われる能力です。論理的な考え方は、プログラミングで用いられる、論理演算(andやor)、条件分岐(if)や繰り返し処理(forやwhile)、再帰処理などをいつ・どのように使えばよいのかを考えるときに必要になります。
プログラミングをするだけではなく、AI(機械学習、深層学習)やデータサイエンスなどの背景や理論を理解するためには、大学の教養レベルの数学が必要となります。
また、実現したい処理に必要なプログラミングの方法やエラー対処のために、検索を行う力は必要です。つまり、どんなキーワードで検索すれば自分が知りたい情報が手に入るのかということです。これは、ある程度経験でカバーできると思います。また、最近は対話型AI(ChatGPTなど)に聞いてもいいと思います。ただ、その場合もどんな言葉で質問をするかが大事になってきます。
ここまでの話をまとめると、プログラミングにおいて重要なのは論理的に考える力と検索する力で、数学の知識としては高校数学までで出てくる関数とその計算、場合の数の知識があったほうがよいということです、ただ、プログラミングで行う内容によっては、行列や統計、微積などの内容が必要になってくる場合があります。
昨今、小学生からプログラミング教育が行われていますが、その教育の本質はプログラミングで必要な数学的思考力を養うことだと思っています。
プログラミングを始めるのに大事なのは、まず簡単なところからやってみることだと思います。やってみて数学の知識が必要だと思えば、復習や勉強をしていくことをおすすめします。では。