このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

僕の「フローチャート」のイメージ(と心情)はこんなです

昨日書いた記事「「フローチャート」騒ぎ、もう少し頭使って考えてみようよ」のなかで:

そもそも、批判/否定している対象であるフローチャートって何なの? 厳密な定義じゃなくてもいいから、どんなイメージを持っているのか知りたいですね。どこがそんなに嫌いなの? なんでダメだと思うわけ? 別に挑発や煽りではなくて言うのだけど; 誰か説明してくれないかなー。

「じゃ、お前はどんなイメージを持っているんだ?」に対して、僕が「フローチャート」という言葉からイメージするものを記しておきます。誰かと議論する機会はないような気もするけど(ほんとの批判者はいないのかも知れないので)、言葉の使い方を合意するために。

平凡で標準的なイメージだと思う

昨日の記事でも、僕のイメージは書いてます。

もう一度言うと、「四角やひし形の箱を線で繋げた図式」がフローチャートで、図式の構成要素の意味は:

  • 四角は、何らかの処理を表す。
  • ひし形は、条件判断と分岐を表す。
  • 線は、制御やデータの流れを表す。

これは、キッカケとなった記事「若手プログラマー保存版!フローチャート徹底解説と作成カンニングペーパー」を書いている野崎晋平さんなんかのイメージと同じだと思うんだよね。野崎さんの記事ではキレイな図が掲載されているけど、僕が手描きで書くと↓のようになります。while(p){f} という繰り返し構造の絵です。

fが四角じゃなくて丸いのは、手描きだと四角が描きにくいから。「ロバストネス図は素晴らしい」でも書いたことだけど、丸のほうが素早く描ける。条件判断のNo(false)側にチェックマークを付けてYes/Noを区別してます。本音は菱形もメンドクサイのだけど、これも丸にしちゃうとさすがに判読しにくいので一応菱形にしてます。

ひょっとして、「フローチャートはダメ、UMLのアクティビティ図はいい」とか言っている人って、図中の絵記号のデザインを問題にしているの? 四角のカドがチャント尖っているのか、丸のなかを塗り潰しているのか、とか。そのテの描画のお作法は、僕は気にしてないです -- 速く楽に描けるのが一番だと思ってますから。

変種

基本的な図示法とその素朴な解釈においては、僕が世間からズレているとは思わないですけど、変種も使っていて、そこは標準的フローチャート(多数派のイメージ)と違うかも知れないです。

例外は次のように描きます。

点線の左が正常処理の世界で、右が異常(例外)の世界。ここでの左右併置は直和を意味するので、例外を投げるかも知れない処理fのプロファイルは、f:A→B+Y です。

ストレージへの書き込みがある場合は、

Sがストレージ状態空間で、Mがストレージへの書き込み命令のモノイド、黒丸はMのSへの作用で、書き込みを実行します。この場合の左右併置は直積で、f:A→B×M となります。

処理が環境を参照する場合は、

Eが環境で、Eはコピー(または参照を共有)されて出力側にも現れます。fのプロファイルは f:E×A→B です。

あと、条件分岐ですけど、菱形よりガード条件を基本に置きたいです。条件式(述語、論理式)pによるガードを三角で描いて、菱形は次のように定義します。

とはいっても、これは好みの問題です。if(p) then f else g (菱形)をプリミティブにしても、p then f (三角)をプリミティブにしても、たいした違いはありません。

参考

例外の扱いは、

↑の記事に絵はありませんが、前節の最初の方法で絵に描けます。

ストレージへの書き込みは、

環境を参照する計算は、

↑の記事にも絵がありません。先に挙げた環境を参照する絵を使えば事情が分かりやすくなります。

ガード条件の図示は、

再帰方程式を解いてwhile文を構成する話は、

バエズのアイディアに基づく留め金により、指数型(関数空間)を描く方法は次の記事にあります。

心情(苛立ち)

僕が絵に対して持っているセマンティクスは、トレース付きモノイド圏やデカルト閉圏なので、素直に「ストリング図」と呼んでおけばいいじゃないか、という意見は「そりゃそうだ」と思います。こころ穏やかに図式の話をするために、呼び名を変えるのは現実的な対処法でしょう。

でもね、「平凡で標準的なイメージだと思う」に書いたとおり、描画のお作法を除けば、いわゆるフローチャートとストリング図に差はないですよ。内実が同じモノの呼び名を変えただけで批難の対象になってしまう、という状況が、すっげー苦々しいわけ。呼び名「フローチャート」が、「これは無根拠に批難してもいいモノ」を示すラベルになっている、というね。イデオローグがいるわけじゃなく、相手は空気とモブなので、議論も説得もできないし。

発端となった野崎晋平さんの記事もタイガイでさー、なんであんな安っぽい取り上げ方するかなぁ。案の定、空気とモブに叩かれるという類型的顛末。定形の手順が自動実行されるような様に、僕はイラッとくるんです。感情的反応なので、なんで苛立つか分析できないですけど。