プログラム教育に対して誤解があるな、というのは、ずっと前から気づいていた。
しかしまぁ、時がたてば誤解も解けるだろうと思っていたら、むしろ誤解が広まっている気がする。
誤解はいろいろあるし、根深い。
一言で誤解を解くようなことは出来ないのだけど、ネットなどで見かけたものをタイプ別に、「そうではない」ことを示していきたい。
▼スマホがあるからパソコンはいらない
最初から特例。プログラム教育に対する誤解ではなく、それ以前。
でも、実際そういう人が増えている。
まずは家にパソコンがないと、プログラム教育の話に入れないので、この部分から話をしよう。
テレビつければなにか映像動いているんだから、わが子のビデオ撮る必要なんてないじゃん、という人はいるだろうか?
そんな馬鹿な話はない、テレビで放映されている映像と、家族のビデオは違うものだ、と誰もが反論するんじゃないかと思う。
スマホとパソコンの関係は、テレビとビデオカメラほどはっきりとは別れていない。
でも、同じような感じだ。スマホは閲覧に適したもので、パソコンは作成に適したもの。
スマホだってメールで文章書いたりできるよ、という反論もあるかもしれない。
それは否定しない。でも僕は「適している」と言ったのだ。スマホは文章作成に適していない。
パソコンでは文章を書くだけでなく、絵を描いたり3Dのモデリングをしたりもできる。
「スマホでもできる」という反論はここでもあり得るが、明らかに得意分野ではなくなっていく。
まずは「守備範囲が違う」ことを知ってほしい。スマホがあるからパソコンいらない、はおかしな論理なのだ。
学校の授業では、教科書とノートを使う。
先生は教科書に従って板書し、皆がそれをノートに写し取る。
ということは、教科書をノートにまとめ直すのと似たようなもんだし、じゃぁ教科書を読めばいいのだから、ノートに取る必要はない。
…これは、本当にそう思っている人いそうだな。ノート取らない学生ってそこそこいるし。
この考え方は間違っている。
まぁ、良い先生なら教科書以上の情報を授業で伝えるので、それを書きとっておくと役に立つ、というのもある。
たとえそのような情報がなくとも、まとめ直すという行為に意味がある。
「まとめ直す」ということは、まとめる程度に理解する必要があるからだ。
だから、学校では教科書だけでなく、必ずノートを使う。
ノートにまとめるときに、よくわからないと思ったら手を挙げて質問しよう。
そこはきっと理解しにくいポイントだ。他の人も疑問に思っているかもしれない。
物資の少ない国の学校などでは、生徒も小さな黒板を持っていて、書いては消してしまう。
消しちゃったら記録の意味はないのだけど、ノートに書くのは記録のためではなく、「まとめ直す」ためだと考えれば納得できる。
スマホとパソコンも、教科書とノートのような関係だ。
スマホで情報を閲覧したってかまわない。急な調べものには便利だ。
でも、その情報を自分のものにしたいなら、情報を自分でまとめ直さないといけない。
もちろん、パソコンで情報を閲覧することもできるから、「スマホとパソコンを一緒につかえ」と言っているのではない。
パソコンを使えるようにするだけで、スマホだけを使っているよりも遥かに多くの知識が、技術が、身に付く。
「プログラム教育」に関しては、スマホでできる環境を整えようとする動きも、もちろんある。
でも、この文章の目的はプログラム教育の誤解を解くことだ。
スマホ向けの環境整備も、少し誤解の上に成り立っている。
プログラムの制作環境は作れるのだけど、実際にそのうえでプログラムをしようと思うと、使い勝手が悪すぎて持続しないからだ。
スマホがあればパソコンはいらない、と思っている人は、パソコンの購入を検討してみてほしい。
▼別にプログラマーになりたいわけじゃない
プログラム教育は、職業訓練ではない。プログラマーになることを目的とはしていない。
だから、プログラム言語の習得も目的とはしていない。
プログラム教育なのに、言語の習得を目的にしていないだって?
驚かれるかもしれないが、事実だ。
もっと言えば、コンピューターの動作を理解させたいわけでもない。
プログラム教育の目的は、もっと他のところにある。
何が目的かは、読み進んでもらえば追々わかる。
▼プログラムを教える前に、コンピューターの仕組みを理解させないと
この誤解は、趣味でプログラムをやっている、もしくは仕事としてプログラムをやっている人に多いようだ。
いずれにしても、プログラム経験者だね。…それも、申し訳ないが上級者レベルではない人。
プログラム言語を学ぼうとすると、多くの教科書が「コンピューターの動作原理」から入り、早いうちに「変数」の説明をする。
これが結構ややこしい。小学生に理解させようと思ったら大変だ。
だから、プログラム教育の前に1~2年使ってしっかり教えないといけない。
…と、この主張をする人たちは思っている。本当はそうではないのだけど。
そんなことは、プログラマーになりたい人だけが覚えればいいのだ。
先に書いた通り、プログラム教育はプログラマーになるための職業訓練ではない。
プログラム教育用に考慮された言語を使えば、コンピューターの動作原理を知っていなくても、OS上のアプリケーションの連携を知らなくても、変数を理解していなくても、数学一般の知識がなくても、プログラムを作り始めることができる。
実は、こうした言語は 1960年代には登場している。十分実績もある。
コンピューターの原理を知らないとプログラムできない、というのは、これらの言語の存在を知らない発言だ。
「上級者レベルでない」と書いたのは、様々な言語を経験していない程度のプログラマ、という意味合いだ。
▼あんな子供だましの言語では役に立たない
これも、プログラム経験者に多い意見のようだ。
実際、大手IT会社のプログラマが、プログラム教育を依頼されて、普段仕事で使っている「真に役立つ言語」を子供たちに教えたと、自慢げに書いているブログを読んだことがある。
申し訳ないけど、プログラマーを職業にしているというだけで、上級者ではない意見だと思う。
仕事で役立つ言語を教えた、と言っている人は、プログラムに重要なのが「言語」だと思っている。
言語は道具にすぎない。大切なのは道具を使いこなす知恵のほうだ。
プログラム教育の目的の一つは、プログラムを通じて知恵を身に着けさせることだ。
何度も書くが、職業訓練を目的としているのではない。
だから、仕事で使うような「役立つ言語」は、もっと成長してから、やりたい子供だけがやればいい。
すでに書いたように言語は「道具」にすぎないので、プログラム教育に使う言語が何であってもかまわない。
ただし、小学生に教えるのであれば、先に書いたように「コンピューターの仕組み」や「アプリケーション間の連携」「変数」、数学の「座標系」などを理解していなくても始められるものが良いだろう。
具体例を挙げないと話が進めにくいので書くと、「子供だまし」と言われているのは Scratch であることが多い。
Viscuit かもしれないけど、どちらも批判されやすい点は似たようなものだ。
批判されているのは大きく分けて2点。
プログラムを作るための「エディタ」が選べないことと、最初から画面上にかわいい絵が表示されていることだ。
Scratch は、過去にあった多くの「初心者用言語」と同じように、言語内にプログラム作成環境を組み込んでいる。
多くのプログラマにとって、これが許し難いことのようだ。自分のお気に入りのエディタを使えないなんて!
Emacs や Vim を使わないと何も書けない、という人にとっては致命的なのだろう。
でも、古くは LOGO や BASIC 、Smalltalk だってエディタを言語内に組み込んでいた。
初心者には、アプリケーション間の連携という概念が難しく、煩雑なためだ。
最初に覚えないといけないことを極力減らすなら、エディタは内蔵してしまったほうがいい。
そんなの許さない、と主張する人たちは、すでに初心者ではないので Scratch を使わなければ良いだけの話だ。
それでも批判したがる人は、使ったことがない言語が流行して、自分が時代遅れになってしまうのが嫌なのだろう。
かわいい絵に関しても同じことだ。
最初に表示されている猫の絵は、命令を出す対象を具体化したものに過ぎない。
初心者プログラマの最初の壁は、パソコンでできることが抽象的過ぎて理解できないことだ。
Scratch ではその壁をなくし、具体的に猫に命令を出すことを最初の一歩とする。
猫は「前へ」と命令すれば前に進むし、「右へ」と命令すれば右に曲がる。
「にゃーんと言う」と命令すれば、「にゃーん」と書いた吹き出しが現れる。
歩いた後に線を残すこともできて、三角形を描く手順を指示すれば三角形を描く。
三角形を描くのなんて、単純だけどしっかりとした「プログラム」だ。
先ほど少し書いたけど、絵を描くにも関わらず座標系などの難しい概念は必要ない。
猫には「現在の状態」があるにも関わらず、それを保持する変数などの概念を知らなくてもかまわない。
「前に進む」と「曲がる」だけで三角形は描ける。
こうして、子供たちは自然にプログラムに親しんでいく。
もちろんそれで終わりではない。
三角形を拡張して、再帰処理によりシェルピンスキーのギャスケットを描けと命令すればフラクタル図形を描き出す。
100までのすべての数字で割り切れる最小の数値を教えて、と命令すれば、猫はとてつもなく大きな数字を教えてくれるだろう。
猫が表示されているから子供向け、ということはなくて、十分に複雑なことだってできるのだ。
これが子供だましだ、というのであれば、おそらくその人は Scratch を一度も使わずに批判をしている。
理解せずに批判しているのであれば、あまりにも筋違いだ。そんな批判を気にする必要はない。
▼小学校のうちは、国語や算数をしっかりやるべきだ
今度は、おそらく非プログラマーの意見。
これに類似の意見は非常に多い。全体にざっくりまとめると以下のようなものだ。
「まずは論理的に物を考え、文章で伝える力が必要だ。
そのためにも、母国語である国語をしっかりやるのだ、算数で論理性を学ぶのだ。
これらが完璧にこなせるようにならないと、他のことを学んでも意味がない。」
これは、国語や算数が何かわかっていない。
算数と数学を同じものだと思っているかもしれない。
国語は、表現するために必要な技術を教えてくれる。
だけど、その表現内容は個人の体験に基づくもので、国語で学ぶわけではない。
そして、「論理」は表現内容に付随するものだ。
国語の授業で、論理立てて話を展開しましょう、という「アドバイス」はするが、論理を教えるわけではない。
数学は、論理が重要になる。数学を勉強すれば論理が身に付く。
しかし、小学校で教わる算数は、数学の前段階の基礎を学んでいるだけで、まだややこしい論理は出てこない。
だから、算数をやっていても論理が身に付かない。
プログラム教育は、論理性を身につけさせようとする教育だ。
しかし、プログラム教育の反対論者は「論理性が身に付かないうちにプログラム教育をしても意味がない」という。
論理を学ぶのを禁止して、どうやって論理を身につけろっていうんだ?
余談になるけど、同じ理由で「小学校の英語教育必修化反対」という意見もある。
こちらも、日本語で文章を書けないと英語に翻訳しても意味がないからダメ、という意見だ。
英語って、日本語で考えてから翻訳するものではないよ?
最初から英語で考えて、英語でしゃべれるようになるのが目標だ。
#と言っても、僕は英語で考えてしゃべることはできない。
読むのは、かろうじて英語のままでできる。頭の中でいちいち翻訳はしないで、なんとなくわかる。
正確な意味が知りたいときは、やっぱり翻訳していかないとダメなのだけど。
さて、誤解としてはこんなところだろうか。
「そうじゃない」ばかり書き続けていて、プログラム教育が何なのか見えてこない、余計わからなくなった、という人も多そうだ。
文面が長くなったので、いったん区切って、次の投稿でプログラム教育の目指すところを書きたいと思う。
同じテーマの日記(最近の一覧)
関連ページ
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |