フローチャートと抽象化

先日のエントリTrackbackがあったので、ちょっと反応しておく。

いや,Java程度でもフローチャートUMLで物事を考えられちゃたまらん.そういう人はJavaの機能の一割も使いこなせない上に,自分が使いこなせていないという自覚がないから尚更厄介だ.

確かに、そういうことはあるかもしれない。1割はちょっと言いすぎな気がするけど。まぁ、あくまで「新人教育の初期」のみということで。
というより、同期処理とか例外処理とかなると、もうフローチャートは使えないし、オブジェクト指向的な設計もできないしね。あぁ、あとクロージャとか、高階関数も手続き的指向だと有効利用できないよね、多分。業務で利用することも少なそうだけど。

フローチャートって名前が良くないと思うな。上から下へと流れているから書き方もそうだと誤解されそう。

達成すべき結果から逆算して一連の手順を直線的に書き出し、そこから如何に「定義済み処理」とすべき部分を見いだし、どのように名付けるか。

を泥臭く練習するにはシンプルで手頃でしょう。情報処理初心者にとってはUMLよりよほど。初心者にいきなりクラスだのなんだのは絶対に高度すぎる。それが最初から出来る人ならポンチ絵で遊んでないでさっさとコード書け、って話で。

それって「定義済み処理」が通常のプログラミングで「関数」に置き換わるだけだよね。わざわざ、実際のコードでも自然言語でもなく、図で書く意味はない。一番手軽なのは自然言語で階層付きの箇条書きではなかろうか。

ていうかさ、本当に抽象度が高いのは手順みたいな、「制御の流れ」ではなくて、各モジュール間の「データの流れ」だと思ったりするのだけれど、どうだろう。