今時フローチャートだと?

フローチャートの力を思い出そう」
http://itpro.nikkeibp.co.jp/article/OPINION/20060727/244533/
メモ.

最初にフローチャートをたたき込まれた
就職していきなりやらされたのが「朝,起きてから会社に来るまでのことをフローチャートに描け」という問題。最初は当然,雑なものしか描けなかった。

それって私だったら小学生レベルでやってたことだな.
今となっては完璧に死語だが,いわゆる「パソコン少年」とか「ナイコン族」*1などがやることだ.

もちろんフローチャート「だけ」書けたってまともなプログラムが作れるはずもなく,悪名高き「BASIC」でスパゲティプログラムを量産していた.この頃の失敗経験があったからこそ,高品質なコードを書くことの重要性を嫌と言うほど理解できた.その後C言語JavaPrologLISPFortranPerlなどを学ぶにつれ*2,言語ごとに様々な特性があり,プログラミングスタイルも生産性も大きく異なることを理解するようになる.

重要性を強調するのが,「必ず2分岐にする」ということだ。「三つに分かれるのは許せない。

switch-caseは無視ですか.メソッド呼び出しや例外処理などは論外ですね.

http://d.hatena.ne.jp/odz/20060801/1154491911

羽生氏は講演を「抽象化能力を極限まで高めるにはフローチャート程度がちょうどいい」と締めくくった。(フローチャートの力を思い出そう:ITpro)

フローチャートのどこが抽象化なのかと。あんなもん、コードの制御構造を可視化しているだけじゃないか。
ついでにいえば、Pythoniterator/generatorを使ったり、Javaで拡張for構文を使ったりしている身としてはフローチャートで繰り返しを分岐で書くとか有り得ん。それって、for 文を禁止するようなもんだよなぁ。どのへんが抽象化だよ。

全く同感.

フローチャートの呪い
フローチャートは、プログラム文書作成の内でまったく過大評価されてきたものの一つだ.多くのプログラマフローチャートなど全然必要としないのだ.何しろフローチャートが一ページ以上必要になるプログラムはほとんど無いのだから.
フローチャートはプログラムの判別構造を示すもので,構造の一面を示しているに過ぎない.(中略)
しかし,詳細で逐一記述したフローチャートは時代遅れの厄介者であり,アルゴリズムの考え方を初心者に手ほどきする場合に適しているだけである.(中略)
実際の所,フローチャートを描くことは,騒がれているほどには,実践されていない.プログラムを書き始める前に詳細なフローチャートを決まって書く熟練プログラマなどお目にかかったことがない.組織で決められた標準化のためにフローチャートが要求される場合,ほぼ間違いなく事後に作成されている.多くの開発現場では,完成したコードからこの「不可欠な」デザインツールを生成する機械語プログラムを誇らしげに使ってさえいる.

しかしこれまでのそうした努力からは,説得力のあるものはおろか,好奇心をそそるようなものも何ら出てきていない.私は今後もないだろうと思っている.
第一,別の所でも述べたように,フローチャートはソフトウェア構造を抽象化したものとしては非常に貧弱なものだ,実際,A.W.バークスやフォンノイマン,それにゴールドスタインが自分たちの提唱したコンピュータに必要とされる高水準制御言語を必死で提供しようとしたことから一目瞭然だ.フローチャートは現在改良されてはいるが,痛ましい数ページに渡る小型の連結形式では,デザインツールとしては本質的に不要だと言うことがはっきりしている.プログラマは,プログラムを書く前ではなく,書いてからフローチャートを書いているのだ.
(中略)
さらに基本的なこととして,既に述べたことだが,ソフトウエアの視覚化は難しいのだ.私たちの図示するものが制御の流れだろうが,変数範囲のネストだろうが,そのほか何であろうとも,複雑に運動しているソフトウェアの「象」を一次元的にしか感じられない.様々な関連する視点によって作られた図を全て重ね合わせたなら,全体としての概観を取り出すことが困難になってしまう.

人月の神話―狼人間を撃つ銀の弾はない (Professional Computing Series)

人月の神話―狼人間を撃つ銀の弾はない (Professional Computing Series)

まぁ、新人教育の初期ならいいのかなぁ。関数型を排除した手続き型パラダイム限定で。企業なら大抵関数型のプログラミングとかしにくい言語が多いだろうから問題ないか。

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

*1:若い人だと知らない人もいるかもしれないが,パソコンが高くて買えないので,店頭に飾ってある展示品のパソコンでプログラムを打ち込んで、動作させ,結果をオーディオテープにセーブして帰って行く人達のことだ.いまだとオーディオテープもマイクロフロッピーも絶滅寸前だが,当時はオーディオテープに保存してたんだな.メインメモリも数十KBのオーダーだったし.
みんながコレで燃えた!NEC8ビットパソコン PC-8001・PC-6001 CD-ROM1枚(Windows 2000、XP対応)」「蘇るPC-8801伝説 永久保存版

*2:学んだだけで使えない物も当然あるよ.SmalltalkLISPも未だに使えない.