2016年03月19日の日記です


プログラム教育に対する誤解  2016-03-19 10:43:52  コンピュータ

プログラム教育に対して誤解があるな、というのは、ずっと前から気づいていた。

しかしまぁ、時がたてば誤解も解けるだろうと思っていたら、むしろ誤解が広まっている気がする。



誤解はいろいろあるし、根深い。

一言で誤解を解くようなことは出来ないのだけど、ネットなどで見かけたものをタイプ別に、「そうではない」ことを示していきたい。




▼スマホがあるからパソコンはいらない


最初から特例。プログラム教育に対する誤解ではなく、それ以前。


でも、実際そういう人が増えている。

まずは家にパソコンがないと、プログラム教育の話に入れないので、この部分から話をしよう。



テレビつければなにか映像動いているんだから、わが子のビデオ撮る必要なんてないじゃん、という人はいるだろうか?

そんな馬鹿な話はない、テレビで放映されている映像と、家族のビデオは違うものだ、と誰もが反論するんじゃないかと思う。


スマホとパソコンの関係は、テレビとビデオカメラほどはっきりとは別れていない。

でも、同じような感じだ。スマホは閲覧に適したもので、パソコンは作成に適したもの。


スマホだってメールで文章書いたりできるよ、という反論もあるかもしれない。

それは否定しない。でも僕は「適している」と言ったのだ。スマホは文章作成に適していない。


パソコンでは文章を書くだけでなく、絵を描いたり3Dのモデリングをしたりもできる。

「スマホでもできる」という反論はここでもあり得るが、明らかに得意分野ではなくなっていく。


まずは「守備範囲が違う」ことを知ってほしい。スマホがあるからパソコンいらない、はおかしな論理なのだ。




学校の授業では、教科書とノートを使う。

先生は教科書に従って板書し、皆がそれをノートに写し取る。


ということは、教科書をノートにまとめ直すのと似たようなもんだし、じゃぁ教科書を読めばいいのだから、ノートに取る必要はない。


…これは、本当にそう思っている人いそうだな。ノート取らない学生ってそこそこいるし。


この考え方は間違っている。

まぁ、良い先生なら教科書以上の情報を授業で伝えるので、それを書きとっておくと役に立つ、というのもある。



たとえそのような情報がなくとも、まとめ直すという行為に意味がある。

「まとめ直す」ということは、まとめる程度に理解する必要があるからだ。


だから、学校では教科書だけでなく、必ずノートを使う。

ノートにまとめるときに、よくわからないと思ったら手を挙げて質問しよう。

そこはきっと理解しにくいポイントだ。他の人も疑問に思っているかもしれない。


物資の少ない国の学校などでは、生徒も小さな黒板を持っていて、書いては消してしまう。

消しちゃったら記録の意味はないのだけど、ノートに書くのは記録のためではなく、「まとめ直す」ためだと考えれば納得できる。




スマホとパソコンも、教科書とノートのような関係だ。

スマホで情報を閲覧したってかまわない。急な調べものには便利だ。

でも、その情報を自分のものにしたいなら、情報を自分でまとめ直さないといけない。


もちろん、パソコンで情報を閲覧することもできるから、「スマホとパソコンを一緒につかえ」と言っているのではない。

パソコンを使えるようにするだけで、スマホだけを使っているよりも遥かに多くの知識が、技術が、身に付く。



「プログラム教育」に関しては、スマホでできる環境を整えようとする動きも、もちろんある。

でも、この文章の目的はプログラム教育の誤解を解くことだ。


スマホ向けの環境整備も、少し誤解の上に成り立っている。

プログラムの制作環境は作れるのだけど、実際にそのうえでプログラムをしようと思うと、使い勝手が悪すぎて持続しないからだ。



スマホがあればパソコンはいらない、と思っている人は、パソコンの購入を検討してみてほしい。



▼別にプログラマーになりたいわけじゃない


プログラム教育は、職業訓練ではない。プログラマーになることを目的とはしていない。

だから、プログラム言語の習得も目的とはしていない。


プログラム教育なのに、言語の習得を目的にしていないだって?



驚かれるかもしれないが、事実だ。

もっと言えば、コンピューターの動作を理解させたいわけでもない。


プログラム教育の目的は、もっと他のところにある。

何が目的かは、読み進んでもらえば追々わかる。



▼プログラムを教える前に、コンピューターの仕組みを理解させないと


この誤解は、趣味でプログラムをやっている、もしくは仕事としてプログラムをやっている人に多いようだ。


いずれにしても、プログラム経験者だね。…それも、申し訳ないが上級者レベルではない人。



プログラム言語を学ぼうとすると、多くの教科書が「コンピューターの動作原理」から入り、早いうちに「変数」の説明をする。

これが結構ややこしい。小学生に理解させようと思ったら大変だ。

だから、プログラム教育の前に1~2年使ってしっかり教えないといけない。


…と、この主張をする人たちは思っている。本当はそうではないのだけど。



そんなことは、プログラマーになりたい人だけが覚えればいいのだ。

先に書いた通り、プログラム教育はプログラマーになるための職業訓練ではない。


プログラム教育用に考慮された言語を使えば、コンピューターの動作原理を知っていなくても、OS上のアプリケーションの連携を知らなくても、変数を理解していなくても、数学一般の知識がなくても、プログラムを作り始めることができる。


実は、こうした言語は 1960年代には登場している。十分実績もある。

コンピューターの原理を知らないとプログラムできない、というのは、これらの言語の存在を知らない発言だ。


「上級者レベルでない」と書いたのは、様々な言語を経験していない程度のプログラマ、という意味合いだ。



▼あんな子供だましの言語では役に立たない


これも、プログラム経験者に多い意見のようだ。


実際、大手IT会社のプログラマが、プログラム教育を依頼されて、普段仕事で使っている「真に役立つ言語」を子供たちに教えたと、自慢げに書いているブログを読んだことがある。



申し訳ないけど、プログラマーを職業にしているというだけで、上級者ではない意見だと思う。


仕事で役立つ言語を教えた、と言っている人は、プログラムに重要なのが「言語」だと思っている。

言語は道具にすぎない。大切なのは道具を使いこなす知恵のほうだ。


プログラム教育の目的の一つは、プログラムを通じて知恵を身に着けさせることだ。

何度も書くが、職業訓練を目的としているのではない。


だから、仕事で使うような「役立つ言語」は、もっと成長してから、やりたい子供だけがやればいい。



すでに書いたように言語は「道具」にすぎないので、プログラム教育に使う言語が何であってもかまわない。

ただし、小学生に教えるのであれば、先に書いたように「コンピューターの仕組み」や「アプリケーション間の連携」「変数」、数学の「座標系」などを理解していなくても始められるものが良いだろう。




具体例を挙げないと話が進めにくいので書くと、「子供だまし」と言われているのは Scratch であることが多い。

Viscuit かもしれないけど、どちらも批判されやすい点は似たようなものだ。


批判されているのは大きく分けて2点。

プログラムを作るための「エディタ」が選べないことと、最初から画面上にかわいい絵が表示されていることだ。



Scratch は、過去にあった多くの「初心者用言語」と同じように、言語内にプログラム作成環境を組み込んでいる。

多くのプログラマにとって、これが許し難いことのようだ。自分のお気に入りのエディタを使えないなんて!


Emacs や Vim を使わないと何も書けない、という人にとっては致命的なのだろう。

でも、古くは LOGO や BASIC 、Smalltalk だってエディタを言語内に組み込んでいた。


初心者には、アプリケーション間の連携という概念が難しく、煩雑なためだ。

最初に覚えないといけないことを極力減らすなら、エディタは内蔵してしまったほうがいい。



そんなの許さない、と主張する人たちは、すでに初心者ではないので Scratch を使わなければ良いだけの話だ。

それでも批判したがる人は、使ったことがない言語が流行して、自分が時代遅れになってしまうのが嫌なのだろう。




かわいい絵に関しても同じことだ。

最初に表示されている猫の絵は、命令を出す対象を具体化したものに過ぎない。


初心者プログラマの最初の壁は、パソコンでできることが抽象的過ぎて理解できないことだ。

Scratch ではその壁をなくし、具体的に猫に命令を出すことを最初の一歩とする。


猫は「前へ」と命令すれば前に進むし、「右へ」と命令すれば右に曲がる。

「にゃーんと言う」と命令すれば、「にゃーん」と書いた吹き出しが現れる。


歩いた後に線を残すこともできて、三角形を描く手順を指示すれば三角形を描く。

三角形を描くのなんて、単純だけどしっかりとした「プログラム」だ。


先ほど少し書いたけど、絵を描くにも関わらず座標系などの難しい概念は必要ない。

猫には「現在の状態」があるにも関わらず、それを保持する変数などの概念を知らなくてもかまわない。


「前に進む」と「曲がる」だけで三角形は描ける。


こうして、子供たちは自然にプログラムに親しんでいく。



もちろんそれで終わりではない。

三角形を拡張して、再帰処理によりシェルピンスキーのギャスケットを描けと命令すればフラクタル図形を描き出す。


100までのすべての数字で割り切れる最小の数値を教えて、と命令すれば、猫はとてつもなく大きな数字を教えてくれるだろう。



猫が表示されているから子供向け、ということはなくて、十分に複雑なことだってできるのだ。


これが子供だましだ、というのであれば、おそらくその人は Scratch を一度も使わずに批判をしている。

理解せずに批判しているのであれば、あまりにも筋違いだ。そんな批判を気にする必要はない。



▼小学校のうちは、国語や算数をしっかりやるべきだ


今度は、おそらく非プログラマーの意見。


これに類似の意見は非常に多い。全体にざっくりまとめると以下のようなものだ。


「まずは論理的に物を考え、文章で伝える力が必要だ。

 そのためにも、母国語である国語をしっかりやるのだ、算数で論理性を学ぶのだ。

 これらが完璧にこなせるようにならないと、他のことを学んでも意味がない。」


これは、国語や算数が何かわかっていない。

算数と数学を同じものだと思っているかもしれない。



国語は、表現するために必要な技術を教えてくれる。

だけど、その表現内容は個人の体験に基づくもので、国語で学ぶわけではない。


そして、「論理」は表現内容に付随するものだ。

国語の授業で、論理立てて話を展開しましょう、という「アドバイス」はするが、論理を教えるわけではない。



数学は、論理が重要になる。数学を勉強すれば論理が身に付く。

しかし、小学校で教わる算数は、数学の前段階の基礎を学んでいるだけで、まだややこしい論理は出てこない。

だから、算数をやっていても論理が身に付かない。



プログラム教育は、論理性を身につけさせようとする教育だ。

しかし、プログラム教育の反対論者は「論理性が身に付かないうちにプログラム教育をしても意味がない」という。


論理を学ぶのを禁止して、どうやって論理を身につけろっていうんだ?



余談になるけど、同じ理由で「小学校の英語教育必修化反対」という意見もある。

こちらも、日本語で文章を書けないと英語に翻訳しても意味がないからダメ、という意見だ。


英語って、日本語で考えてから翻訳するものではないよ?

最初から英語で考えて、英語でしゃべれるようになるのが目標だ。


#と言っても、僕は英語で考えてしゃべることはできない。

 読むのは、かろうじて英語のままでできる。頭の中でいちいち翻訳はしないで、なんとなくわかる。

 正確な意味が知りたいときは、やっぱり翻訳していかないとダメなのだけど。




さて、誤解としてはこんなところだろうか。

「そうじゃない」ばかり書き続けていて、プログラム教育が何なのか見えてこない、余計わからなくなった、という人も多そうだ。



文面が長くなったので、いったん区切って、次の投稿でプログラム教育の目指すところを書きたいと思う。



同じテーマの日記(最近の一覧)

コンピュータ

関連ページ

プログラム教育と義務教育【日記 16/04/18】

大川功 誕生日(1926)【日記 16/05/19】

肩の力が抜けたところで【日記 16/03/26】

プログラム教育に対する誤解【日記 16/03/19】

プログラム教育の目指すところ【日記 16/03/19】

別年同日の日記

06年 定価より高い

12年 Windows8 と Wii と AtEase


名前 内容


戻る
トップページへ

-- share --

28000

-- follow --




- Reverse Link -