フローチャートの悪夢,ふたたび

テンプレート(死語)

えっ?
ナ,ナンダッテーーーーー!
こいつはくせえッー!ゲロ以下のにおいがプンプンするぜッーーー!


なぜかホットエントリ入りしてた.日付を確認すると「2016.11.08」と書いてある.そんなバカな.1976年とかの間違いじゃね?

古い本だから「人月の神話は必読!」とまでは言わんけど,孫引きでもいいから「人月の神話」に書かれてる常識も知らんというのはどうなんだ.*1

人月の神話【新装版】

人月の神話【新装版】

The Mythical Man-Month: Essays on Software Engineering

The Mythical Man-Month: Essays on Software Engineering

*2

フローチャートの呪い

フローチャートは、プログラム文書作成の内でまったく過大評価されてきたものの一つだ.多くのプログラマフローチャートなど全然必要としないのだ.何しろフローチャートが一ページ以上必要になるプログラムはほとんど無いのだから.

フローチャートはプログラムの判別構造を示すもので,構造の一面を示しているに過ぎない.(中略)

しかし,詳細で逐一記述したフローチャートは時代遅れの厄介者であり,アルゴリズムの考え方を初心者に手ほどきする場合に適しているだけである.(中略)

実際の所,フローチャートを描くことは,騒がれているほどには,実践されていない.プログラムを書き始める前に詳細なフローチャートを決まって書く熟練プログラマなどお目にかかったことがない.組織で決められた標準化のためにフローチャートが要求される場合,ほぼ間違いなく事後に作成されている.多くの開発現場では,完成したコードからこの「不可欠な」デザインツールを生成する機械語プログラムを誇らしげに使ってさえいる.

http://d.hatena.ne.jp/JavaBlack/20080719/p1

遅くとも「人月の神話」は1975年には出ていたらしいから,その頃にはフローチャートが役に立たないというのは,既に広く知られた事実だったと言って良い.あれからいったい何十年たったと思ってるんだよ.これが生きてる化石という奴か.staticおじさんの同類か.なんとおぞましい.

2.フローチャートを書く3つの目的
2.1.プログラム構造の整理
2.2.プログラミング速度を上げるため(効率化)
2.3.プログラム品質の向上

....悪いこと言わんから,入門書からやり直そうな.勉強できずにろくに専門学校にもいかずに入門書も読まずに,SIerで洗脳されちゃった口かなあ.哀れな.*3


老害御用達のフローチャートを勉強するくらいなら,マトモなアルゴリズムの一つでも試しに実装してみれば良いよ.フローチャートは表現力が貧弱すぎて,それで記述することに全く意味がないって分かるから.
http://d.hatena.ne.jp/JavaBlack/20151020/p2

これも2016年5月.こういうのは有害だ.

http://b.hatena.ne.jp/entry/it-koala.com/flowchart-2241

ブコメを見ると,炎上してるかと思いきや,必ずしもそうではなかった.恐い.

コメなしとか「後で読む」とかもあるけど,万が一この内容を初心者が本気にしたらどう責任取るつもりだ.

  • id:cider_kondo 特に関係ないが、30年前に雑誌に載っていたプログラム(当時、紙は有力なソフト媒体だった)の解説で「フローチャートは時代遅れ」って書かれてたのを思い出した(たしかドクトルだみおこと岩崎さんのBeep掲載記事

フローチャートが役に立たないって指摘は「人月の神話」でも既に出てるくらいなので,そりゃもう当時なら常識だったろう.いまだに知らないのは不勉強な証拠.

  • id:shun_libra JavaWebの案件でフローチャートの設計を客が指定してきたことがあった。お陰で肝心な所が抜けまくりかつ余計な所ばかり細かいドキュメントが出来上がり、案の定実装が滞りまくって大炎上
  • id:kz78 「仕様書に書いてあるフローチャート通りに実装してくれればいいから」って言う客の言葉を信じてはいけない(戒め)
  • id:Hiz22J 20世紀の記事が晒し上げ目的でブクマされたのかと思った。UMLも同じだけど、設計とか実用的な目的よりも、プレゼン目的でしか書いたことない。現場を知らないお偉いさんが相手のときに渋々使う程度。

ああよかった.これが普通の反応だよな.


幻覚でも見てるのかと思った.

  • id:lovevoiceryu 博物館のようなイメージでの保存版と解釈すればよいのか?

そだねー.子供の頃はちょっと憧れたかも.大人っぽいガジェットとして

単に「テンプレート」って言えば,普通これのことだよね!*4

ウチダ テンプレート 能率定規 1-843-1601

ウチダ テンプレート 能率定規 1-843-1601

ドラパス テンプレート E402N フローチャート定規 A 31402

ドラパス テンプレート E402N フローチャート定規 A 31402

Helix Flowchart Stencil Template

Helix Flowchart Stencil Template

そして大人になる前には既にドローツールとかあったから,手書きなんて考えられんレベルになってた.フローチャート定規としての「テンプレート」は死語になり,完全に忘れ去られ,新たな意味で定着した.*5

STL標準講座―標準テンプレートライブラリを利用したC++プログラミング (Programmer’s SELECTION)

STL標準講座―標準テンプレートライブラリを利用したC++プログラミング (Programmer’s SELECTION)

経理のための Excelテンプレート徹底活用

経理のための Excelテンプレート徹底活用

「ニコニコ超百科」
インターネット用語としてのテンプレート

日本でインターネット用語としてテンプレートと言えば以下の意味でも使われる。

  • 2ちゃんねるなどの掲示板で新しいスレッドを作成した時に毎回貼られる、前のスレッドのログやQ&A、情報のまとめ。だいたいPart〇〇で続くスレッドの>>1〜>>10あたりに存在する定型文のこと。
  • 漫画やアニメなどにおけるありきたりな登場人物の特徴付け(例:金髪・ツインテールツンデレ
  • ネットの書き込みなどにおける決まりきった文章。(例:書き込みがテンプレばかりでうざい)

だいたい「定型文」「複製されたように同じような文章・造形・物」などそういった意味で使われることが多い傾向にある。

http://dic.nicovideo.jp/a/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88

フローチャートなんて,ケータイどころかワープロ登場以前の過去の遺物だろ.

「ネタ」ってタグを付けてくれよう...本気にする人がいたら恐いわ.

  • id:nightgod プログラムを始めるときの心得みたいなものも紹介してくださると幸いです

とりあえずコレかなあ.

プログラマが知るべき97のこと

プログラマが知るべき97のこと

説明すべきことが多すぎて,一口に説明できないし,言われても覚えきれない.


あとはこの辺りとか.まだまだあるぞい.いくらやってもきりがないので,斜め読みしたら適当に切り上げるのが吉.

新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道

プログラマのためのサバイバルマニュアル

プログラマのためのサバイバルマニュアル

Developer's Code 本物のプログラマがしていること (アスキー書籍)

Developer's Code 本物のプログラマがしていること (アスキー書籍)

檜山正幸のキマイラ飼育記

http://d.hatena.ne.jp/m-hiyama/20161226/1482718401
要約すると「わしにはよく分からん」.目を通すだけ時間の無駄だった.

しかし、フローチャート自体は強く擁護してきたので、ここでまたフローチャート擁護論を展開すべきかな、… と思わなくもないですが、

本気で僕は不思議に思ってるのですが、何を根拠にフローチャートを批判/否定しているの?

とりあえず「人月の神話」でも読んだら?話はそれからだ.


皆んなが忌み嫌い攻撃したがるモノと、僕が擁護しようとしているモノがズレているのかなぁ。

単に頭悪いだけでは.


何も分かってないことも分かってない.そういう人は実在するのです.

「いまどきフローチャート」、「ふっ、古過ぎる」、「昭和だ、20世紀だ」といった揶揄も見かけますが、「古いからダメ」って主張したいなら、次の命題が必要ですよね。

反論になってない.

そもそも「古いからダメ」とは主張してない.既に1970年代には問題が指摘され,80年代には廃れて,90年代にはもはや見向きもされなくなった過去の遺物であると指摘している.その間はろくにメンテもされてないので,最近のメディアを記述するには記号が足りないだろうしな.


その上で反論するのであれば,「古いから良くないは常に真とは限らないでは無いか!」ではなく,「(古いか新しいかに関係無く,)こういうメリットがある」というのを示すべきだろう.*6 フローチャートが有害なのはもはや共通認識なわけで,それを覆すくらいの圧倒的メリットが示せない限り,フローチャート復権はありえんだろうね.

http://b.hatena.ne.jp/entry/d.hatena.ne.jp/m-hiyama/20161226/1482718401
  • id:santo ネットワーク代数をフローチャートだと言い張る意味はよくわからない。同じ内容表現するのに、スペースと手間がかかるから非難されているんでしょ?

あと二度手間だし,読み難いし書くに時間かかるから,メリットが皆無のくせに手間は倍以上に増える.*7 *8

さらに差分が取りにくいこともあって,バージョン管理とかの取り扱いも面倒だったり,

  • id:yojik (狭義の)フローチャートはともかく、プログラム(というかあらゆる計算)をノードとエッジで良い感じに表現してみたい欲ってエンジニアならある程度はあるはず。決定打はないけど!

そこ重要.「あったらいいなあ」と「実現された」は天と地ほども違う.*9

プログラマーでも「自動プログラミング」とか銀の弾丸を夢見ることはあるんだ.それが実在しないことを知ってるだけで.

*1:フローチャートが糞」っていうのはもはや常識だと思うが,若い人で専門教育を受けてない人だと,運が良ければフローチャートなんて見たことも聞いたこともない人もいるかもしれない.ある意味でそれは幸せなことだ.
だけど,そんなことも知らんままで,こういう変な人に騙されると,あっさり洗脳されちゃう危険もある.やっぱ日本のIT業界で(文字通りの意味で)自分の身を守るためには,斜め読みでも良いから名著には目を通しておくべきだよ.でないと,デスマーチに巻き込まれて最悪では命を落とす.

*2:旧版

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

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

人月の神話―狼人間を撃つ銀の弾はない (Professional computing series (別巻3))

人月の神話―狼人間を撃つ銀の弾はない (Professional computing series (別巻3))

*3:こういう悪書も実在するしなあ. http://d.hatena.ne.jp/JavaBlack/20100421/p1

ずっと受けたかったソフトウェアエンジニアリングの授業1 増補改訂版

ずっと受けたかったソフトウェアエンジニアリングの授業1 増補改訂版

ずっと受けたかったソフトウェアエンジニアリングの授業2 増補改訂版

ずっと受けたかったソフトウェアエンジニアリングの授業2 増補改訂版

*4:もしかしてとは思ったが,Amazonではまだ普通に入手可能なことに驚いた.スゲーぞ.
拡大画像を見ると,普通に穿孔テープとか穿孔カードがあるのに苦笑.一応「磁気テープ」はある一方で,「オンラインストレージ」に「磁気ドラム」とかね.ここでいう磁気テープだって,バックアップ用のDATなんかじゃなくて,「大容量データ」保存用のオープンリールなんじゃないの?
やっぱフローチャートってそういう時代の遺物なんだよ.プロの世界で利用されてたら,新しい技術用の表記法がメンテされてないはずがないもの. http://ekibasya.hamazo.tv/e2924380.html http://online.general-products.net/?pid=100635806

*5:テンプレ」と略すことの方が多いか?

*6:この手のものへの反論は,「UFOが/恐怖の大王が/STAP細胞が/水素水が実在しないとは言い切れないではないか!」ではなく「それが実在し,その証拠はコレコレだ」というのを示すべきなのよね.

*7:PAD図とかもあったけど,PADはPADであって,フローチャートとは区別されるなあ.メリットがないなことも手間が増えることもフローチャートと同じだし.

*8:途中にたった一行挿入するだけの場合に,レイアウトし直して書き直す手間を想像してみるといい.行番号の悪夢再び,いやそれ以上だ.
紙で書くなら全部コードで書いてから「清書」するだろう.操作性に優れたフローチャート専用のドローツールとかあれば別だが,他に使い道がないために(しかもすでに世界的に使われていないために)おそらくそれは非常に高くつくものになる.

*9:機械翻訳とか自動運転とかも,未だに実現できたとは言い難い.