2008年11月27日木曜日

コンピュータ教育

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
まったくどこの教官だ、この質問の原因になった課題をだしたのは・・・。
http://mixi.jp/view_bbs.pl?id=37418835&comment_count=0&comm_id=602606

タイトルにある通り、テキストファイルをCSVファイルにしたいと思っております。

コンバートする際の詳細は、テキストファイルを読み込み、任意の文字列があった場合のみCSVファイルに書き出す、というものを作りたいです。

(例)

学生新聞ちゃんぽん○政治
学者学生ちゃんぽん

上記のテキストファイルの「学生」と「新聞」だけ抜き出して以下のように書き出したい


学生,新聞,学生

としたいです。

是非、分かる方いらっしゃいましたらご教授お願いいたします。

perlとかrubyとかpythonとかgaucheとかを使わない理由がわからない。VBでもいいだろうし。すぐに使える正規表現のない言語を選択するのはなぜ?マゾですか?たぶん「わかっている」大概の人は、one-linerで済ませるだろう。(多分、発生回数をカウントしたいだけのだろうから・・・。)メモ用紙を用意して正の字を一杯書くのも、人と場合によっては正しいかもしれない。

ともかく「コンピュータ・リタレシ」として考えた場合大いに問題がある。たとえて言うなら、建設工事現場の杭打ち機をステープラーの代わりに、折り紙の紙を切るのに大型チェーンソーをはさみの代わりに使いましょうみたいなノリだ。

概念的にコンピュータが動くとはどういうことかとか、ネットワークで通信できるのはなぜかとかdatabaseとはなにかを理解させる。つぎにコンピュータを使っていると必然的におこるテキスト処理をある程度(簡単な正規表現くらい)できるようにするのが先だとおもう。メールとかはいまどきほっておいても使えるようになるだろうし。たとえるなら、日常生活で紙を切りたいときに、はさみとカッター、手でちぎるの中から適切に道具を選んでつかえるような感覚を先に養ってほしい。

この辺の感覚を持った人が、発注側にまわるようになっていかないと、ソフトウェアとして何を作ればいいのか決める段階のコストが異様に高くなるし、ばかげた話がまかり通る気がする。コンピュータにまつわるコミュニケーションコストを十分に下げておくことは社会的要請だとおもうのですが、いかがでしょう?

そもそもにC/C++を使わせるためにはいろいろな準備が多すぎる。includeの説明をごまかしたり省略したりせずに、背景事情を含めてまともにできる人はどのくらいいるだろうか?ほかにもgccを使うとしてオプションの意味を説明するとか・・・したくないし、したところで「魚をとる方法ではなく魚をあたえる」ことになってしまう。何がいいたいかというと、情報収集能力(ばりばりにプラットフォーム依存)が前提になっているということだ。情報収集能力をあげる教育をしないと、変化についていけなくなってしまう。

Cに手を出す前に、構成管理ツールを使うことの意味や、文字コードの話、環境の話とかをするべきだろうし、それらを自分で解決できないとわけがわからない。

メモリへのポインタでのアクセスとかを理解させることには教育的な意味は無いとはおもわないが、順序や費用対効果というものがあるだろう。再帰の概念とかも必須だしscheme本を読ませるとか、各種アルゴリズム(quick sortなめたらあかんらしい。正しい実装は少ない。)を理解させるとか、でもこれってリタレシとよぶレベルを大幅に逸脱している。また、何かをセキュアに作ろうと思えば、OSの権限管理の知識は必須だし背景事情も知っている必要がある。体感的にわかるためには管理者経験も必要だろう。

1000行以上のコードを書こうとすれば、アルゴリズムを知っていて、言語の構文を知っていてアドホックに試して学ぶことができる以上のことが求められる。具体的には既存のよいコード(OSS, proprietaryを問わない)を読んでそこから学ぶことだ。モノが動くようにバグを入れないように書こうとすれば、どのような習慣が必要かも知らなければならない。

それでいて、いまどきのmacを買って来るといきなりhttpdが入っていたりしていきなりwebappが書けたり、本を買ってきてCD-ROM丸写しでwebapp動かして、構成するfileを単体のscriptとして動かすことを知らなかったりするんですよ。

いまいい年の大学教官が学生のころのコンピューティング環境はtime sharingとかでその当時のもっとも速いマシンよりも速いマシンをいまどきのガキンチョは一人で遊ぶために使うわけだ(PS3とか)。

旋盤とかの加工機械を一通りもっている町工場と適当なLinuxディストリビューションをもっているということは同じだ。理論上は何でも作れる。ただ作り手を選ぶし、何を作るかは注意深く選ぶ必要があるし、注意深く作る必要がある。またどう流通させるかも大事だ。


かなり話が発散したが、とにかく急激に物事が変わっていてかかわる人の意識や考えが追いついていない部分が多数あるというのは間違いない。また、急激な変化が内在している。その変化を引き起こしている要素への理解ぬきには変化に対応することはできない。リタレシとしてはその部分に触れる程度のことはしてほしいなぁ。

0 件のコメント: