フローチャートの擁護をしてみる

http://d.hatena.ne.jp/JavaBlack/20060805
いつも、「菱形の中に a<b と書くのも、if (a<b) と書くのも、読みやすさは全く変わらないうえ、書くのにかかる時間も修正する手間も必要な面積も圧倒的に後者の方が少ない」と言っているけど、たまに使うこともある。
たとえば、プログラマーじゃない管理者層の人に、プログラムについて説明を求められたとき。ホワイトボード上でざっくりとした動きを書くのに使う。

あと、副作用付きの状態遷移図*1を適当な記法で書く事があるけど、あれもフローチャートに近いと思う。

C言語は手続きを記述する表現力を持っているので、詳細なフローチャートは要らない。C++Javaといった手続き指向にOOP等を組み合わせたプログラミング言語は、ソフトウェアの静的な構造を表現できるので、詳細な構造図(コードと1対1になったクラス図)も要らない。
でも、動的な部分に関しては、プログラミング言語は上手く表現できていない。コードを読んで「どう動くのか」を理解するには、詳細と抽象を何度も行ったり来たりしなければならない。プログラミング言語の動的側面に対する表現力不足を補うために、UMLで言うところのシーケンス図・状態遷移図*2・アクティビティ図で補助資料を描く。フローチャートも同じ目的で利用価値があるし、やはり(菱形と四角だけで書けば)プログラマ以外を含め誰にでも判るというのは大きな利点になる。

*1:UMLのアクティビティ図みたいなの

*2:UML2では状有限状態機械図だっけ?

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。