プログラミングに必要なのは数学の知識だけではない
プログラマーには理系が多い印象があるかもしれませんが、小学校の算数ができれば、たいていのプログラミングはできます。あるとき、私の職場に社会見学でたくさんの小学生が来たことがあります。その時はコンピュータグラフィクスの説明をしたのですが、「ゲームを作りたかったら、まずは算数の勉強をきちんとしてくださいね」とお願いしました。子どもたちはウエーッという顔でしたが、同行していた両親の方々は「そら見たことか」といった表情をしていました。
最近は小学生の夏休みの自由研究で、人工知能を使った工作をする子どもも増えています。これは最近の小学生のスキルが上がったからではなく、もともと子どもたちにプログラミングを習得するポテンシャルがあるということだと思います。楽器の習得などと同じで、小学生くらいがプログラミングを始めるのに適した年齢なのかもしれません。
現在、世の中にあるプログラミング環境は小学生以上が対象ですが、それ以下の幼児でもプログラミングができるような環境や道具が、現状はないだけだと思います。以前、私は乳幼児向けの玩具の企画・開発を手伝ったことがありました。この時は空間を把握するのに役立つ玩具でしたが、幼児のプログラミングに役立つものも、いずれ企画してみたいと思っています。
ちなみに、学生の頃、家庭教師先の小学生にプログラミングを教えていたこともあります。当時のN88Basicという言語を使って、迷路の中を敵の攻撃をかわしながらゴールに向かう、といったゲームを作りました。はい、ほぼパッ○マンです。
迷路をプログラムで書くためには、2次元座標系を理解する必要がありますが、小学校ではまだ教わっていない概念でした。また、矢印キーが押されたらどういうふうに自分のアイコンを動かすのが良いかとか、動かす方向に壁があったらそれ以上はアイコンが動かないようにする必要がある、といったことも理解しながらプログラミングをする必要がありました。初心者にとってはそれなりに難しいプログラミングでしたが、彼は目を輝かせながらあっという間に作り方を習得してしまいました。
もちろん、算数や国語や理科の勉強の合間にゲームを作っていることは二人だけの秘密で、親御さんには内緒でした。それでも彼はプログラミングによるゲーム作りがとても楽しかったようで、その時間を捻出するために、事前に勉強の課題は済ませてきてくれたので、成績はずいぶん上がりました。
中学校、高校の数学ができれば、もっと高度なプログラミングができるようになります。たとえばグラフィクスのプログラミングは、図形や幾何学だけでなく、ベクトル、行列、三角関数などをたくさん使います。データ分析のプログラミングでは、確率や統計、微分積分を使うことになります。これらの原理がわかっていると、プログラミングのしくみ(アルゴリズム)を組み立てるのがラクになります。私は最先端の数学の論文に出てくる数式はちんぷんかんぷんですが、やりたいことにフィットした数学をその都度取り入れるようにしています。裏を返せば、プログラマーは大人になっても勉強し続ける必要がある、ということです。
高度なインタフェースを作り込むには、人間はどのように認識して行動するか、といった心理学も必要になります。美しい画面を作るには、美術の知識も役に立つでしょう。また、物理や化学現象を模擬するシミュレータを開発するには、当然ですが対象の物理・化学現象の原理を理解する必要があります。
しかし、どれほど知識があったとしても、そもそもなんのためにプログラミングがしたいのか、というモチベーションがなければ、良いプログラムを作ることはできません。つまりプログラミングにもっとも必要なことは、何がしたいのか、つまり「目的」なのです。
この記事が気に入ったらサポートをしてみませんか?