何かを知るためにプログラミングする

プログラミングというか、知識を現実の問題に適用する過程。プログラミングをしていくうちに、ぼんやりとした知識に実感がともなう。しかし授業でもだらだらとグループワークしているので、そのときに気づいておけ。単に好奇心の問題、またはひとりで取り組むことが鍵なのか。はじめから最後まで自分でできる見通しが有効なのか。

座学は優れた勉強方法だ。失敗の繰り返しを先取りし、問題のフレームや便利な道具を教える。教養うんぬんはさておき、知識をプログラミングすることには座学の意味がある。現実の問題や自分の生活にいかに適用できるかを問うことで、その意味において勉強の成果を高めることができる。

情報技術を■として理解することの容易でなさ

プログラミングをやらなければ情報社会について学ぶことはできないか。情報技術を理解するという意味で大事だ。必要なのは実装する能力でなく、技術の特徴や背景を理解して、社会を批判、構想するための道具として利用することだ。どのように振る舞うかというブラックボックスな理解で足りる。しかし情報技術をブラックボックスにして情報社会の学問があるなんていうと、情報学を単純な階層構造に組み込んでしまう。さておき。

ブラックボックスを理解する。打つのが面倒なので■とする。■を理解するのは、便利で、てきとうで、現実にはたいていの場合、必要十分だ。

情報技術を学ぶうえで、なぜか納得できない。■のレベルを情報社会におけるものから情報システムにおけるものに目を移してみたり。もちろん情報システム(が何かはさておき)は実装技術(なんて言葉あるのか)の■だけでなく、より上位(と言わせてください)にある情報社会との関わりにおいて見当すべきテーマだ(じゃあ情報社会が情報学の最上位なのかよ。知るか)。ここでは日本人らしく謙虚に、上をみない。

目的のためにシステムがある(要求定義があって仕様がある、みたいなフレームも偏った世界観なので、当たり前のようにそういう指導をする教育に気をつけたい)。つまり機能を満たせばなんでもいいのであって、道具は問わない。機能を満たすための手段を突き詰めていくと、設計が必要になり、どのように実装するかという説明をつけ、結果として道具が選択される(さらにビジネス上の資源の問題が加わる)。それも全部■だ。

それじゃあグループ作業しましょうとなるとうまくいかない。設計に必要なのは設計の知識であって実装の知識じゃない。経験がなく、設計の知識も浅く、だからうまくいかない。っていうだけじゃあないように、思えるわけ。単に実装の■に対する理解が浅いのか、じゃあ座学すればいいのかと思う。そんなことを悩むまえに□に近いところに踏み込んでみれば、高い理解力のない人間でもそれなりにつかめる。学習コストはそれぞれだが。

知識をプログラミングする学習と方法のメタ認知

べつに■を理解するための最低限の□、なんか〓みたいなもんがあると感じるわけでもない。ある目的において学ぶために細かい部分をわかったつもりになるのはスマートだと思う。そういうことをできるのが、理解力のあるひとなのかなあ。

□から■に積み上げていければ堅実だ。でも目的と理解力しだいだ。で、実際のところ、そんな割り切れない〓のようなものに触れてようやっとわかったつもりになる。

技術の話だからそれまだ単純化できているほうで、実装できない知識だっていくらでもある。そういうのは実践しないと意味がない? いいえ、実践するために知識がある。あ、おんなじ?

本を読んで賢くなることはできると思う。プログラミングは成果を目にみながら勉強でき、実験が容易であることから、初期の段階において高度なメタ認知をともなわずとも勉強の方法を整えられる(教材次第だけど)。本を読むとなると、有効な方法をある程度自分で考えないといけない。べつに、そんなことしなくても本は読める。賢くなるかもしれない。まあ、窮屈だかスマートかわからないけれど、検討する余地があるってことで。