% プログラミング的思考って...

\documentclass{jsarticle}
\pagestyle{myheadings}
\markright{tmt's Math Page}
\renewcommand\baselinestretch{1.33}

\begin{document}

\section*{▼プログラミング的思考って$\dots$▼}

小学校での学習は、昭和時代と比べて令和以降の時代では雲泥の差がある。国語、算数、音楽、体育なんてのは昔からあるが、いまでは英語やプログラミングまで習うことになっている。一日の長さは変わりないのに、やることが盛り沢山で大変である。国語や算数なんてものは社会生活に必要な素養を身につけるために学ぶのだろうが、音楽や体育なんてものは国語や算数ほど必要とされていないだろう。どちらかと言えば、生活をより豊かにするためのきっかけ程度に学ぶものかもしれない。英語やプログラミングも多分そっちの類(たぐい)だ。

なんでそんなふうに感じるかと言われれば、国語や算数なんかは小学校で学ばない限り興味をもって身につけたりしないと思うからだ。大抵の幼児は世の大人を見て、新聞を読んだり金勘定をしたいと思ったりしないだろう。でも、歌や運動なんてのは大人の真似をしたくなる。だから、ピアノやスポーツなどは小学校へ入学する前から習う子どもがたくさんいるのだ。

この$2$種類の違いは何かというと、多くの仕事で必要な「読み書きそろばん」は小学校で習うことでモノになるのに対し、「ピアノなどの習い事」は小学校で習ったところでモノになるわけではないことである。「習い事」は小学校前から習った者、または授業以外にどこかで習った者だけがモノになるのだ。もし、英語やプログラミングが小学校で習うことでモノになると考えていたら、それは大きな勘違いである。これらは音楽や体育同様、習い事に分類される。だから、たとえばプログラミングが算数程度にモノになるためには、小学校前から習うか、または授業以外にどこかで習う必要がある。

小学校でプログラミングを学習する目的の一つに
\begin{center}
\bfseries プログラミング的思考を身につける
\end{center}
というのがある。でも、実際はプログラミング的思考は小学校の授業だけで身につくものではないと思われる。そんなのが身につく子どもは、授業以外で身につけているものなのだ。小学校の授業は、あくまでも生活をより豊かにするためのきっかけを与えられるに過ぎない。

ところで、プログラミング的思考ってなんだろう。言っとくけど論理的思考とは異なるからね。そもそもプログラミングは論理的思考ができる人がするものだよ。もっとも、論理的思考または筋道立てた考え方というものは、一般に三段論法と呼ばれる
\begin{center}
\bfseries 「BはCである」「AはBである」から「AはCである」が導ける
\end{center}
程度の思考回路が備わっていればよい。そうであれば、プログラミングによって論理的思考力も高まっていく。

プログラミング的思考とは、数学的思考と同様に、プログラミングに特有な考え方のことである。それはたくさんあるが、基本的なものは次の三つ、「順次処理」「分岐処理」「繰り返し処理」だ。順次処理なんて日常当たり前のように聞こえるかもしれないが、そうではない。たとえば数学で以下の$2$通りの問い
\begin{enumerate}
\item $y = 3x$において、$x = 5$のとき$y$の値を求めよ。
\item $x = 5$のとき、$y = 3x$について$y$の値を求めよ。
\end{enumerate}
は、いずれも問題文としてとくにまずいところはなく、$y = 15$と答えればよい。しかし、プログラミング的には1.は不適切なのだ。なぜなら順次処理というものは、$3\times x$の値を``正しく''求めるためには、$3\times x$が提示される前に$x$の値が知らされている必要があるからだ。

これを、融通が効かないと捉えるのはかまわないが、プログラム言語とは大抵そういうものである。分岐処理や繰り返し処理にも特有の考え方があるので、それらをいかに論理的に組み合わせて処理を完成させるかが大事なのだ。つまりプログラミング的思考とは、(人にとっては不自由だけれど)計算機械にとっては都合よい命令だけを使って、人の思考に添うような処理をする方法を考えることである。

こういう素養は、読み書きそろばんのように仕事上必要な能力ではない。ピアノなどの習い事に近いだろう。やっていて損はないが、なくても一向に構わない。できる人だけができればよいのだ。でも思慮が浅い人に対して、その人の思考ワールド内の考えだけで世間の常識を理解させるようなときは、プログラミング的思考が役立つんじゃない?と思ったかな。そうかもしれないけど、それならプログラミング的思考ができる人に相手をさせればよいだけだ。音楽と無関係の仕事をしているときピアノを弾く必要が生じたら、ピアノが弾ける人に任せればよいように。

\end{document}