日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2010年6月6日日曜日

プログラミング言語の学習における「具体」と「抽象」

プログラミング言語は、すべてが文字であり、具体性がない。
すべては実行してみて、結果を見てわかるのである。

この「具体性←→抽象性」というのは自分にとって結構くせ者であった。
ほとんど全ての、プログラミング言語の入門書は、このはざまに揺れているように思う。

児童心理学で有名らしい(さっきまで知りませんでした)「ピアジェの発達心理学によると、
「具体的操作期」と「形式的操作期」というのがある。
詳しくはこのホームページを参照していただきたい。

具体的操作期: 目前にある具体的なものを操作して理論的に考えられるようになる。

形式的操作期: 目前にないものでも論理的に考えられるようになる。過程や抽象的なものも扱えるので「もし~ならば~である」が可能となる。


これは人間の発達過程を研究する「発達心理学」であり、誕生から青年期までの成長過程をしめしているものだが、これは人それぞれに程度はあると思う。
特に「形式的操作期」まで完全に達していない成人も多々いると思うし、特定の分野においては「具体的操作期」程度しか能力が発揮できないこともある。
(自分の場合は、ほぼ「具体的操作期」で止まっているような気もするがw)


ここで重要なのは人は「具体的操作期」を得て、「形式的操作期」に達すると言うことだ。
これは非常に重要なことで、個人的には昨今の幼児教育でTVやコンピュータを利用するのに積極的になれない理由はここにある。
多くの教育において、「具体的操作期」において、個人(子供)が具体物にふれあい親しむ機会がどんどん失われている。
それでいて「形式的操作期」対象のものがどんどん低年齢の子供に用いられる。

TVは具体性があると思われる方もいるかもしれないが、TV、文字、写真は具体物ではない。
(例:犬の写真は犬という具体物ではない。)

これは、現在の社会においてますます「抽象性」を操る能力が必要とされているからであるが、その教育体制において人間性の未発達が問題になるのは、関連性があると個人的には考えている。
もしかしたら、突発的な犯罪や、ニートといった現象も関連性があるかもしれない。


成長段階における「具体性」を理解するにはモンテッソーリ教育の二項式、三項式のブロックが良いでしょう。
普通の生活をしていて、二項式、三項式という代数を、大人になってからもしっかりと覚えている人は少ないでしょう。
プログラミングの勉強で、数学を中学生の所からおさらいし直したというのはよく聞く話です。

「モンテッソーリ教育」においては二項式や三項式は幼稚園児のカリキュラムに組み込まれています。
うちの子供の学校でも、4歳ぐらいの子がやってました。
そういうと早期詰め込み教育だと誤解する方もいるかもしれないので、もう少し説明を補足します。

まずモンテッソーリ教育でつかわれる二項式のブロックはこのようなものです。


これは詳しく説明されないとわからないかもしれませんが、二項式の原理を非常にうまく表現しています、数学に詳しい人なら、すぐに理解できるかもしれません。
当然ながら幼稚園児に公式が説明されるわけではなく、二項式を理解することを求められてはいません。
幼稚園児がやるのはこの積み木を箱から出して、規則に従って並べて、サイズと色をみながら箱に戻すとというパズルのような作業だけです。
ここで、目的としているのは色と各ブロックのサイズにより二項式の表している内容を「具体的」かつ「感覚的」に体験することです。

その程度しかやらないのですが、大きくなって学校で二項式、三項式を勉強している子供が、この幼児体験をちゃんと覚えていて先生に「ぼく二項式を使ったことがある!」と言った例も報告されています。
 数式で教えられなくても、「具体」物を使うことで、幼稚園児でさえ、その基本的ルールを理解していたということですね。

人間の能力のすばらしさと共に、「具体」というものがいかに簡素かつ強力であるかがわかります。
 また「抽象」というものが「具体」に根ざしていると言うこともわかります。


さて、この代数のブロックの例から考えると、いかに大人の勉強で、「具体」が排除されているかがわかります。

プログラミング言語の学習においては、数学や、アルゴリズムに触れることが多いのですが、この具体性の部分はほとんどが省略されています。
そうでないと肝心の勉強が進みません。
何より大人が対象である以上、それらは省略しても理解できると言うことが前提となっています。

この部分に関する個人差が、プログラミング学習における継続できるかできないかに大きな役割を果たしているのではないかと推測しています。

なので、具体性を感覚的に理解するようにすることは、プログラミング学習において非常に助けになると思いますし、私もいつも自分の学習にはできるだけ具体性を取り入れるようにしています。



幸い我々は大人であるので写真をみて感覚的に理解することはできますから、インターネットで写真などを見ることは大きな足す池となります。
しかし、時として現物に触れることは、写真では得られない助けとなることがあります。


子供のいる方は、積み木で遊んだり、砂場で遊んだり、水遊びをする機会も多いと思います。
そういうときにいちいちプログラミング学習のことを考える必要ないのですが、感覚的な部分を呼び覚ます効果があるのはたぶん合意できる方は多いのではないかと思います。

デジタルドメインの坂口さんも水のツールを開発する時期、よく海を見ていたそうです。

0 件のコメント:

コメントを投稿