プログラミングに数学は必要か?

AkrosはWebスクールですので、

「私文系で数学が苦手でもエンジニアになれますか?」

という質問をよくいただきます。
今回はWebスクールという立場から、お答えしたいと思います。

数学が必要な分野もあれば、不要な分野もある

結論としてはありがちですが、必要な分野もあれば不要な分野もあります。
人工知能の開発、統計処理などは数学の力が必要となりますが、
お問合せフォームや、料金シミュレーターでは四則演算さえできれば支障はありません。

数学はいらない?

しかしプログラミングには、正しく動作するように組み立てる力「アルゴリズム力」が必要になります。

アルゴリズム力とは

そもそも「アルゴリズム」とはなんでしょうか。
Google検索で検索してみました。

ざっくりと言うと「やり方」、「手順」ということですね。
つまり「アルゴリズム力」とは「やり方や手順」を組み立てる力ということです。

プログラミングで有名なFizzBuzz問題を例にしてみましょう。

以下の条件で好きな言語でプログラムしてみましょう。
– 1から順番に100まで出力する。
– 3で割り切れるときは「Fizz」を出力
– 5で割り切れるときは「Buzz」を出力
– 両方で割り切れるときは「FizzBuzz」を出力

極端な例にはなりますが、順番に、
1
2
Fizz
4
Buzz


と手打ちをしても、
For文とIf文で条件分岐しながら数行で答えても答えは一緒になります。

では問題文を修正して、
3で割り切れるとき → 2で割り切れるとき
と修正してみましょう。

実際の現場でも、手打ちでどうにかすることもありますが、
更新や修正があることを考えると数値を変えたり、変数の内容を変えるだけで修正が容易なように組んでいきます。

アルゴリズムを組むには、数学の数列のようにルールを見つけて、表現する能力が求められています。

数学を学ぶ時に身に付けていた

数学は論理的に考えること、公式や定理をあてはめるためのひらめき力が必要です。
ですので、数学力がある人=プログラミングが得意なことが多いです。

時間はかかるかもしれませんが、アルゴリズム力は鍛えられるものなので、

問題を出してみる。

ちょっとした問題を解いてみましょう
みなさんならどうやってプログラムをしますか?

問題:〇と●を指定された順番に出力してみましょう。

問1
〇〇〇〇〇
〇〇〇〇〇
〇〇〇〇〇
〇〇〇〇〇

問2
●●●●●
〇〇〇〇〇
〇〇〇〇〇
〇〇〇〇〇
〇〇〇〇〇

問3
●●●●●
〇〇〇〇〇
●●●●●
〇〇〇〇〇
●●●●●

問4
●〇〇〇〇
〇●〇〇〇
〇〇●〇〇
〇〇〇●〇
〇〇〇〇●

問5

〇●
〇〇●
〇〇〇●
〇〇〇〇●

解答例についてはお問合せや、
ご要望が多ければ、ブログにて紹介しますね。

物足りない人は・・・

AtCorderにチャレンジしてみよう

最近ニュースでも取り上げられましたがAtCorderは競技プログラミングを行うことができます。
簡単な問題から、プログラムを実行するためのメモリ、実行時間を気にしながら解くような難しい問題まで幅広く取り扱っています。

もっと数学的な問題に取り組みたい人

プロジェクトオイラーの問題にチャレンジしてみましょう。
海外のサイトですので英語で難しいかもしれませんが、Wikiに問題がまとめてあります。

フロントエンドでもアルゴリズム

バックエンドだけではなくフロントエンドでも複雑なアニメーションを実装する場合にはアルゴリズム力が必要です。

本気で学びたい人に本気で向き合うAkros Academy

Akrosの授業は全て、先生1人に生徒1人の1対1授業です。
先生が現場で培ってきた技術を、必要なところをみっちりと授業しますので、
現場でも通用する技術を身に着けられます。

まずは無料のカウンセリングでご相談ください。
プロの先生がお待ちしています。

無料カウンセリングで相談する