プログラミングに数学の知識は必要ですか?
数学の知識がないとプログラムを書くことができないと思われるかもしれません。プログラマーは理系でないと無理なの?のところでも書いたように、プログラマーと数学など理系的なイメージが結びついているのが原因のようです。
ここでいう「数学の知識」というのは、足し算引き算、割り算など基本的な算数の知識を行っているわけではありません。これを苦手とするようでしたら、残念ながらプログラムを書くことはできないでしょう。足し算・引き算や掛け算、割り算の余りを求めたり、四捨五入といった処理は必ずと言っていいほど行います。この部分は避けては通れませんので、苦手だと思うのであれば克服してください。
ここでは「数学の知識」というのは、微分積分やフーリエ変換、行列処理や幾何学、統計学、三角関数、機械学習など、やや高等な数学を意味しているものとします。指数関数やlog変換なども含めていいかもしれません。
これらの高等な数学が必要かどうかという答えに対しては、「業務による」、ということになります。
ここでは、数学が必要でない場合と必要な場合について、簡単に紹介したいと思います。
数学が必要でない場合
一般的なウェブアプリケーションを開発するような場合には、あまり数学を意識することはありません。
データベースにあるデータを検索して画面に表示するようなものであったり、ユーザー登録などの管理機能や掲示板やアンケートシステムを作る、といった場合にはほとんど数学を意識することはありません。
これらの業務はとても一般的ですので、これらの業務を行う会社にいくのであれば、あまり心配する必要は無いと思います。もし、気になるようでしたら面接の際にでも質問してみたり、会社に直接問い合わせをしてみてもいいかもしれませんね。
高度な処理、科学系、ゲームプログラミングには数学が必要
数学を使う例として、いくつか紹介したいと思います。
画像認識を行ったり信号処理などには、フーリエ変換や微分積分などの数学知識を使うことがあります。
テキストマイニングでは、サポートベクターマシンといった機械学習のアルゴリズムを活用することが多々あります。テキストマイニングとはアンケートや文献などの文字情報から、意味のある情報を取り出す解析作業のことを言います。
研究機関を顧客としてシステムを組む場合であれば、データの解析をするところからシステムを組む場合もあります。データの処理として、T検定などの統計処理を行うこともあります。統計処理を行うのであれば、最低限平均値や分散、中央値、標準偏差などの基礎統計量については理解しておく必要があります。
データをわかりやすいようにグラフィカルに描くのであれば、2次元や3次元で図形を描くための幾何学的な知識が必要でしょう。ライブラリを用いれば簡単に実現できることもありますが、自分で作らないといけないような場合は、幾何学の知識は必要になります。
また、ゲームプログラミングの世界では、線形代数や物の動きを現実的にするために物理の法則を利用することもあります。人がジャンプしたときなど、物体の自然な動き方をプログラムで実現させるために用います。ニュートン力学など高校の物理程度の知識は必要になります。
自分が希望する業務に数学が必要そうであれば、基本的なプログラミングを勉強しつつ、数学の知識も基礎的な部分から身につけていかれると良いでしょう。プログラミングができれば、数学の公式も実装できるようになれると思います。