« 手を動かす | メイン | 少し興味をもって欲しい »

細かく砕く

本日、ちょっとプログラムの依頼をされた。
そこで相手の方とやり取りしながらどういうものを創ったらよいかということを聞いていくうちに
気づいたことがある。

まるっきりプログラムが分からない方だとばかり思っていたら(失礼ですが)
どうも、相手の方もプログラムがなんなのかは分かるようだ。
構文や制御構造、条件分岐や変数の概念はわかってくださる。
たぶん、簡単なプログラムは書けるし、読めるだろう。
説明もしやすい。

しかし、私が以前に作ったプログラムを眺めながら
「よくこのようなプログラムを組めますね」
と言われた。
そんなこたぁない、私のつくるへっぽこプログラムなんて長いだけでバグも良くある。
が、その方は長くて、自分には分からない部分が多くあるという雰囲気で言葉を発したようだ。
だが、どんなに面倒くさい処理であっても、普通は細かい区切りにどんどんと砕いていくことができる。
そうでなければ、プログラムは限られた命令と制御構造だけでできていないことになる。

ある問題を解決するためには、それをコンピュータが分かる形にする必要がある。
その問題はどうなったら終わりなのか?
終わらせるための条件は?
制御構造は?
変化させる数値は?その範囲は?
そのときに必要となる機能は?
(もちろん、実際は上級者になるほどいろいろ増えると思います。
実行速度
リソースの消費量
コードの可読性
再利用性
開発途中での変更に強いくみ上げ方
GUIの操作性
セキュリティの話
などなど)

しかし、まず
その問題を捉え、噛み砕く力がプログラムの構文、命令の知識の他に必要だと思いました。

もちろん、ある程度の基礎知識は必要だと思います。
また、ある言語をある程度やっておけばその類推がほかでも使えるということはよくあります。
Cなどでは良く最初にある「分からない場所はとりあえずおまじないだと思って無視する」なんていう考え方なども必要かも。
さらにいえば、自分で他人のコードやリファレンス、本などを調べる力があればあとは一人でやれます。
プログラムを始められる方全てがこのレベルまで到達できればなぁ、と思いつつ
これを書いています。

トラックバック

このエントリーのトラックバックURL:
http://www.blindwalk.com/cgi-bin/mt32/mt-tb.cgi/169

コメントを投稿