現役エンジニア (メーカー勤務10年 → 現在は某大手電機会社 勤務)
子供の頃にRPGツクールに触れて独学でプログラミングを習得
AI研究、ゲーム、キャンプが生きがい
最近プログラミングを勉強する人が多くなっている気がします。
というのもプログラマーになれば会社に依存せず『自分のスキル』として持ち歩けますので
昨今の不況で現職の会社が倒産してしまっても次に行きやすくなるのも一因かなと思います。
しかし結構な人が
- プログラミングは興味あるけど数学が苦手だから手を出しにくい・・・
- プログラミングって数学と似てるって言うし数学が得意な人ができることでしょ?
と、数学が苦手なことを理由に挙げてプログラミングの習得を諦めてしまっている状況です。
google検索のサジェストがこんな感じです。
そこで僕が
- 『プログラミング = 数学が得意な人がやること』が誤解であること
- プログラミングでゴリゴリの数学を使うことはそうそうない
ということを解説していきます。
断言できますが数学が苦手でも関係ありません!
プログラミングと数学が同一視されてしまっている3つの理由
皆さんが『プログラミング = 数学』と同一視している理由を3つ解説します。
プログラミング=数学と同一視してしまう理由3つ- プログラミングは基本的に理系が扱っている
- 代入文や計算で “=” が使用されている
- どちらも厳密が定義が必要であるため
プログラミングは基本的に理系が扱っている
プログラミングと言えば理系がやるもの、と思っていませんか?
実際に2016年のマイナビエージェントさんの情報によればIT企業にIT技術者の7割は理系出身とのことです。
就職や転職を扱う業界のデータですので信頼できますし感覚として納得できますね。
代入文や計算で “=” が使用されている
プログラミングについて少し調べてみた人なら分かると思いますが
大体のプログラミング言語では代入のとき “=” を使って代入します。
これってまさに数学も一緒ですよね。
ただプログラミングの “=” は右辺から左辺で更新するという意味なので
数学の “=” とはまた違う意味になるんです。
どちらも厳密な定義が必要であるため
プログラミングも数学もしっかりとした定義が必要で1つでも欠けると成り立たないです。
そういう意味ではどちらも厳密性は同じですね。
ですから数学でケアレスミスが多くて嫌になった人もプログラミングに対して
同じような厳密性を感じてすごく堅苦しいものとして意識してしまっているかもしれません。
数学が苦手でもプログラマーになれる3つの理由
それでは数学が苦手でもプログラマーになれる理由を3つ解説します。
数学が苦手でもプログラマーになれる理由3つ- プログラミングはロジックを組み上げる『論理的思考力』が一番重要
- 大体は「足し/引き/掛け算」ができれば問題ない
- 文系出身でも活躍しているプログラマーは沢山いる
プログラミングはロジックを組み上げる『論理的思考力』が一番重要
プログラミングで一番重要なことは数学力ではなく『論理的思考力』です。
論理的思考とは一般的にこんな意味を持ちます。
論理的思考とは、物事を体系的に整理し、矛盾や飛躍のない筋道を立てる思考法です。
ある処理を追加するときを考えたとき、どういうデータをどういう風に加工するのか、
その処理は既存処理のどこに組み込むのか、それらの理由はなにかというように
現実的で具体的に必要なものを提示しどのような順番で処理を実行するを考えられるかということです。
これができなければプログラミングスキルがあってもプログラムを組むことができません。
またここでは数学的な知識や難しい数式などは一切でてきません。
大体は「足し算」と「引き算」と「掛け算」ができれば問題ない
プログラミングでは確かに数字は沢山でてきますが実は複雑な計算はそうありません。
それはよりシンプルな仕様を求められるため計算もシンプルなものが多いからです。
仕様はシンプルにできれば理解もしやすくなりますし実装や保守も簡単です。
つまり シンプルな仕様 = コストも安く理解しやすい仕様 となるのです。
ですから計算があったとしても実際はほぼ「足し算」,「引き算」,「掛け算」のみになります。
ここで割り算を書いていないのは処理が重いためです。
コンピュータは割り算が苦手 (小数点の表現が荒くなってしまう) なので処理数が多くなってしまうのです。
ですから割り算の代わりに掛け算で済ませられるように処理を組み立てることになります。
(例:10 ÷ 2 ⇒ 10 × 0.5 )
数値解析などの一部の分野はゴリッゴリに難しい数学の知識や
論文の数式を理解して実装する能力を求められますのでご留意を!
文系出身でも活躍しているプログラマーは沢山いる
これは「数学とプログラミングが同一視されてしまっている3つの理由」の内容と重複しますが
IT技術者は7割が理系出身とのことでした。
しかし裏を返せば3割は文系出身なので理系出身と比べるとプログラマーになるのは難しいかもしれませんが、絶望的な差がある訳ではありません。
そもそもプログラマーの行きつく先は顧客から要望を聞き仕様へ落とし込みを行なうソフトウェア開発の上流工程を任されることになります。
そういう意味では文系出身でも最初からソフトウェア開発の上流工程を担当できれば充分活躍できます。
前職の職場では実際に文系出身の人がいましたが最前線で活躍してましたよ!
他には事務員上がりのエンジニアの人もいました。
どうしても数学が苦手な人へ
どうしても数学が苦手!という気持ち、すごく分かります。
僕も未だに数学が苦手で難しくなるほどたくさん記号が出てきますし。 (ΣとかΠとか)
なんでそんな記号にしたのか?とか結局微分ってなんなの?と疑問が尽きませんよね。
そんな人に一度読んでもらいたい本を紹介します!
難しい微分積分などが物理的にどういう意味を持つかの分かりやすい解説がされています。
ページ数も少なめなのでサラッと読めちゃいますよ!
まとめ
この記事では
- 『プログラミング = 数学が得意な人がやること』が誤解であることと誤解する理由
- 文系出身でもプログラマーになれる理由
についてまとめてみました。
コメント