こんにちは、モントリオール在住エンジニアのHaru(@hathle)です。
「数学が苦手だけど、プログラミングを習得できるの?」
と感じている人は多いと思います。
今回は、プログラミングに数学の知識は必要なのかを解説します。
プログラミングに数学は必要か?
よくプログラミングをする上で、数学がとても大切になると言われています。
しかし、実はそれほど必要になることはありません。
もちろん全く必要ないというわけではありませんし、小学校で習う算数レベルの知識は必要になります。四則演算ができれば問題はないです。
実際に私はエンジニアとしてプログラミングをしていますが、専門的な知識がないと仕事ができなくなることはありません。
例えば、Webサイトの作成や、オンラインショップの作成には、特別な数学の知識は必要ありません。
実際に小学生時代から算数が苦手で、いつも平均点以下だった人が、エンジニアとして活躍している人も多くいます。
さらに、算数が苦手だった人が、起業しIT分野で成功した人もいるのです。
実際に仕事をしてみると、周りにも子供のころから算数が苦手という人もたくさんいることがわかります。
ただし、エンジニアの仕事はとても幅が広く、いろいろな分野があります。
分野によっては四則演算だけではなく、もっと高度な数学の知識が必要になってきます。
・1人では続かない方のためのパーソナルメンターがつくブートキャンプ。
・週2回マンツーマンでのメンタリング、毎日15~23時のチャット・レビューサポートで短期間でオリジナルサイトをデザインできるようになる学習プログラム。
・あなたのオリジナルWebサイトをインターネット上に公開することがゴールです。
数学ができると有利な分野
数学の知識は、プログラミングの仕事をする上では必須ではないですし、必ずしも必要になるとは限りません。
しかし、ある一定の分野では高い知識がないと難しい場合もあります。
AI(人工知能)や機械学習
AIや機械学習をしようと思うと、ある程度の数学の知識が必要になってきます。
以下の数学の知識が必要です。
- 線形代数
- 微分・積分
- 確率・統計
線形代数
機械学習は大量のデータを使用します。
大量のデータを並列に処理するために、行列やベクトルの計算が必要になります。
行列やベクトルを使う上で線形代数の知識が役に立ってきます。
微分・積分
大量のデータから挙動に係るパラメータを算出する際に、パラメータの誤差を最小限にする必要があります。
誤差がないということは、関数にすると傾きが0になります。
この傾きを計算する時に微分・積分の知識が役に立ってきます。
確率・統計
大量のデータから未来を予測するのに、確率・統計の知識が役に立ってきます。
これからは、AIや機械学習を扱えるエンジニアの市場価値はさらに高くなってくるので、もし興味がある方は数学と一緒にプログラミングを学んでみてはいかがでしょうか?
・1人では続かない方のためのパーソナルメンターがつくプログラミングブートキャンプ。
・週2回マンツーマンでのメンタリング、毎日15~23時のチャット・レビューサポートで短期間でPython・機械学習が学べるプログラム。
・機械学習プログラムを開発することがゴールです。
プログラミングに求められる能力
プログラミングを行う上では、分野にもよりますが、四則演算ができる程度の知識があれば十分です。
では、どのような能力が求められているのでしょう。
それは、
- 論理的な思考能力
- コミュニケーション能力
論理的な思考能力
例えば、プログラムにバグが発生した場合、
- 何が原因?
- 対処方法は?
- 他にも影響は?
などを考える必要があります。
どんなに難しい問題にも必ず答えがあります。
その答えを見つけるために、論理的な思考能力が必要になってきます。
コミュニケーション能力
エンジニアは、1人で黙々と作業する仕事ではないかと思う人もいるでしょう。
しかし、仕事にはそれぞれに役割があります。
例えば、Webページを作成する場合、
- ディレクター:チームを管理
- デザイナー:デザイン、イラストを担当
- エンジニア:コーディングを担当
- ライター:文章をの担当
1人で全ての作業はできませんので、複数人でチームを組んで仕事をすることになります。
だからこそ、効率よく仕事をするために、コミュニケーション能力が必要になるのです。
1人で黙々と作業をしなければいけないこともあるので、根気は必ず必要になってきます。
まとめ
基本的には、プログラミングに難しい数学の知識は必要ないです。
四則演算ができれば問題ありません。
しかし、分野によります。
例えば、AIや機械学習をする場合は、下記のような専門的な数学の知識が必要です。
- 線形代数
- 微分・積分
- 確率・統計
数学よりも大事なのは、下記の能力です。
- 論理的な思考能力
- コミュニケーション能力
ぜひプログラミングに挑戦してみてください。