2007/8/18 土曜日

動作を分解して考える。

Filed under: ActionScript,misc — renji @ 19:38:03

職場のWebデザイナーの子から「プログラムってどうしたら書けますか?」と聞かれた。

一応ディレクション/Flash制作担当なのだけど。。。

部署にはれっきとした「プログラマ」もいるのだけど。。。

多分時々ASをやっているので 質問してきてくれたのだと思いますが。。。

「ASだろうかCSSだろうがJavaScriptだろうが。。。書きたいことを日本語で説明できないと書けない。」

と答えました。

少しでもプログラムに挑戦したことがある方なら察しが付くと思いますが、

「実際の動作は細かい動作の積み上げの上に成り立っている」
ということに。。。

つまり、文章では一言で表現した「ドラッグ」や「ポップアップメニュー」「拡大/縮小」などというものは、細かな動作の集合の上に成り立っている動作であるということです。

そのため、本当に必要なベースとなる動作(=処理)を見極める必要がでてきます。

たとえば、一言で済むように

「珈琲を淹れてください。」
といったお願いだって。。。言われた人は「珈琲を淹れる」という認識でも。。。

「湯をわかす」
「カップ&ソーサーを用意する」
「インスタント珈琲の粉をカップへ入れる。」
「やかんの水は沸騰したかどうか?」
「沸騰したらカップにお湯を注ぐ」
「角砂糖の器とフレッシュとカップ&ソーサーをトレイに」
「依頼者へサーブ」

といった細かくわかれた処理を一つずつ積み上げながら「珈琲を淹れる」という動作を実現していますよね。^^

これが「動作を分解する」ということ。

もちろん書面や口頭で「珈琲淹れて^^」って一言で済むことを、ここまで「動作を分解」して伝える必要はないと思います。お互い人間同士なら。

それは前述したように「珈琲を淹れる」という大きな動作が「湯を沸かす」「入れ物を用意する」「珈琲豆を用意する」といった大きな動作を実現するための小さな動作を持っていて、その小さな動作を再構築することで大きな動作である「珈琲を淹れる」が実現できることを知っているから。

但し。。。「珈琲を淹れる」ために何の準備が必要で、どういう作業が必要で、そもそも珈琲が何かわからない人にお願いする場合はどうしますか?

そうですよね。
「珈琲を淹れる」という動作を事細かく説明しますよね。
説明するために「珈琲を淹れる」という動作を細かい動作に分割する筈です。

そうした行為がプログラミングには必要になると思います。

「プログラムとは、コンピュータへの命令ではなく、
コンピュータに何をしてほしいか、人に説明することだ」
Donald E. Knuth, “Literate Programming”
(ドナルド E. クヌース 『文芸的プログラミング』)

ということだと自身では理解しています。

だって、コンピュータはあなたが依頼したい事柄の何一つも知らないんですから。
あなたが親切丁寧に細かい動作に分割して一つ一つ教えてあげる必要があるんです。
「コンピュータに何をしてほしいか、人に説明すること」のように。

そのために「動作を分解して考える」ことは大切だと思います。

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.247 sec. Powered by WordPress ME