35歳を過ぎて、はじめてプログラミングというものに興味を持つようになりました。
なぜ興味を持つようになったのかは大して面白い話でもないので割愛させてもらいますが、働きながら、ちょいちょい初学者を対象にした入門本を読みつつ、UdemyでPython&データサイエンスの人気オンライン講座を受講してみました。
Udemyの講座を仕事の合間に眺めている程度でも、プログラミングの魅力がガンガンと伝わってきてしまい、もう少し本格的に勉強してみたいという気持ちが抑えられず、36歳にもなって地元の大学院に通うことを決心しました。
これまでプログラミングの「プ」の字も知らないまま生きてきたわけですが、40歳までにはそっち方面の知識を身につけて、思い切って転職するのも面白いかなとか考えてしまっています。
私の身の上話はこのくらいにして、ここではプログラミングの基礎の基礎を学んで感じた私なりのプログラミング・マインドを紹介してみることにします。
プログラミングと数学の本質的な違い
高校から大学時代は理系学部だったこともあり、数学という学問にはそれなりに触れてきました。
せっかくブログをやっているし、ネタにもなるかという思いから、学びなおした数学の知識を自分の理解を深めることを目的に、当ブログで記事化してきました。
こんな感じです。
そんな数学好きの私が感じた数学とプログラミングの本質的な違いをまずは紹介します。
数学的思考力の本質
さて、この答えはというと…当然「2」が答えですよね。
この1と1を足し合わせたらいくつになるのか考えることが数学的な思考だと私は捉えています。
こんなこと言われても意味が分からないですよね。
この説明は後程するとするとして、次に私が感じているプログラミング的な思考の本質についても紹介します。
プログラミング的思考力の本質
こちらがプログラミングを行う際に考える問題です。
さて、この答えはというと…当然「1」が答えです。
言いたいことが伝わりましたでしょうか。
プログラミングと数学が似ているけど違う所
数学とプログラミングを考えていく上で、本質的に違うと感じた思考があります。
数学は定義に従い答えを導出することを目指すのに対し、プログラミングは答えが与えられており、その答えに辿りつくプロセスを導出するという思考が必要になるという違いです。
もっと言えば、プログラミングでは先ほどの質問をもう少し変え、次のような問題を考えていく感覚があります。
上の式の丸(〇)と四角(□)には、
- 1+1=2
- 2+0=2
- (-1)+3=2
のように様々な数を入れることができます。
もっと複雑な数を使おうと思えば、分数や少数、無理数などを入れて「2」を作り出すこともできます。
このように無限にあるプロセスの中から、よりシンプルな式で求められている答えにたどり着く方法(コード)を導き出すことがプログラミング的思考力なのではないかと感じています。
以上が、数学とプログラミングの本質的な違いになります。
数学とプログラミングを結び付けていきたい
今後の展望について考えていることを書きます。
プログラミングの技術は大学院で学んでいくとして、自分としては数学とプログラミングを紐付けていくことに挑戦したいと思っています。
プログラミングの技術+数学力がかなり破壊力のある組み合わせであることは、何となく理解しているのですが、この破壊力を上げていくには2つの知識を結び付けつつ、車輪のように両方を効率よく学んで前に進んでいければと考えています。
特に、プログラミングと結び付けていきたい数学としては「統計学」と「線形代数」から攻めていくつもりですで、統計学についてはぼちぼちやっているので、線形代数にも手を出していきたいです。
こんな面白い本を発見したので、1次変換や固有ベクトルなど大学時代に学んだ数学の知識がどうプログラミングと結び付くのか楽しみながら読んでいます。
まとめ
本日は、36歳になってプログラミングを学び始めた初学者が感じたプログラミングと数学の違いについて書いてみました。
上級プログラマーの方からしたら「勘違いも甚だしい」や「こんなことは常識だ」といったレベルのことを書いているかもしれませんが、ひとまず私がプログラミングを学び始めて現時点で感じたことをまとめてみました。
今後も社会人大学院生としてプログラミングを学んでいく日常や学んだことを発信していければと思っています。
興味がある方はぜひ読者登録&Twitterフォローをしてください。