さて前回、コンピュータを使う一番の理由は「処理速度」だと書いた。
付け加えて言うならば、よりその実感を得られるのは、「処理を自動化」したときだ。
これは初めてスクリプトを使って、いままで手作業でおこなっていた一連の作業を、一瞬で行った経験を持つ人には、わかっていただけると思う。
しかしGUIベースでソフトウエアを利用しているだけでは、その開発者以外に、実感を得ることは難しいかもしれない。
Photoshopで、画像にフィルタをかけて、その変化を楽しむことはあっても、その処理速度の速さに感動する人はほとんどいないだろう。
話が少しそれるが、Mayaでソフトボディーのシミュレーションをしたときに、処理速度に関しては感動よりもむしろイライラを覚える人の方が多いぐらいだと思う。
そういったGUIベースのソフトウエアでも、いくつかのステップを自動で処理できるようになったときには、少しながらコンピュータのパワーに感動する。
Mayaでスクリプトエディターから、一連の自分の作業をシェルフに登録して、ワンクリックで同じ作業ができるようになったとき、うれしかった人は多いだろう。
いままでコンピュータを使ったこともない人が、初めてExcelで表計算を行ったときに、SUM機能で一列に含まれる数字の合計が出せたときには、その便利さに感動を覚えるだろう。
こういった感動は「処理速度」とう範疇だけでは語れない。
もちろん「処理速度」はそのバックボーンにあるのだが、「処理の自動化」はコンピュータを利用している実感が得られる大きなポイントだ。
--------------------
「処理の自動化」とは何か?
特定の作業、操作を
1)「ワンクリックで行える」
2)「任意のタイミングで自動的に行う。」
とうことだと思う。
それは、それまで人間が行ってきた
1)繰り返し行わなくてはいけない作業。
2)タイミングを知るためにさまざまな状態遷移を見張る作業
から解放してくれる。
またそれは別の視点から見ると
1)人間にも行える作業の自動化
2)大量の情報を処理しなくてはならず、非人間的な作業の自動化
プログラミングにおいて、これを実現するためのカギとなるのは何か?
それを考えたときに、思いつくのは
1)for文によるループ
2)比較演算子、if文による条件判定。
である。
いままでも演算子についてはいろいろと追求してきたし、、
最近、Melの練習ではできるだけfor文を使うようにしている、その一つの理由はそこにある。
普通に勉強してもfor文は最初に習う物だが、それはコンピューターの大きな利点だからだと思う。
まさに、コンピュータを利用するという本質をついている。
実際、for文をつかってsphereを作ってみるだけでも初心者には楽しいと感じる人もいるだろう。
実用的ではないかもしれないが、このように楽しいと感じること、コンピュータを利用していることを実感できることを繰り返し体験することは、ひとつひとつのコマンドを覚えるよりも初学者にとっては重要だと思う。
なぜかというと初学者はそもそもプログラムをしなくてはいけない理由がみえていないことが多いだろうし、実感もないからだ。
情報工学を勉強したことがないのに、仕事でMelを使わなくてはならなくなった人は特にそうだろう。
そして参考書などの例を使って一度や二度の実体験を終えたからと行って、それで身についたとは言えない。
より実感を高めるために、for文、if文を使っていろいろな練習を続けた方が良い。
そして繰り返し練習をすることによって、for文、if文の文法も身についてくる。
少なくとも複雑なスクリプティングにはいる前に、マニュアルを見ずに、バグ無くfor文、if文が入力できるようにまではしておきたい。
これは何も複雑なスクリプトを作れと言うのではない。
for文、if文自体ではなく、その中で使われる個々のコマンドなどはエラーがあっても気にする必要はない。それはまた別のことだ。
最初なら、sphereを複数作ったり、ただ1~10までの数字をスクリプトエディタに表示したり、そういったことを思いついたときに、繰り返すとよい。
大切なのは、
1)まずマニュアルを見ないで入力する。
2)エラーがあればまず、自分でバグを見つけられるかどうかトライする。
3)それでダメならマニュアルを見直し、本来の文法と自分の入力した物の差異を見つける。
4)なぜそのような間違いを起こしたのかをできれば記録しておく。
5)何も見ないで、習慣であるかのように考えることなく、何の苦もなく入力できるようにする。
実はこの練習が、以前のエントリ「プログラミング教育の難しさ。」
で述べた学習のステップ「2)適用」に、あてはまる。
基礎を身につけるとは、マニュアルを読んでその情報を頭にたたき込むだけでなく、その知識を現実のものごとに何の苦もなく適用できるということだ。
マニュアルをみなくてもその詳細を思い出すために手が止まるようではいけない。
まるで友達にE-mailを書くかのようにすらすらと入力できる必要がある。
(ただしそこで習っていることに対してだけ。たとえばfor文であれば、中で実行するコマンドは、マニュアルを見てもエラーがおきてもかまわない。それはそのコマンドを習得するときに必要なら上記のようなステップを踏めばよい。)
詳しい文法を記憶することは「プログラミング学習」ではない。
それがバグ無く入力できるということに反映されていないのであればあまり意味がないからだ。
また、後でマニュアルをチェックすればよいというのは「3)応用」段階においては、言い訳にしかならないように思う。
就職したことがある人ならわかるだろう。「そんなことは学生の内にすませておけ」という段階だ。
「3)応用」の段階は「実践」の段階であり、基礎を身につける段階ではない。
基礎を身につけるのは「2)適用」までのステップだ。
0 件のコメント:
コメントを投稿