見出し画像

Retro-gaming and so on

フローチャートとは何なのか

教えて!gooの質問にしばしばフローチャートの作成に付いて、の質問が投稿される。

回答者の中には

「フローチャートはプログラムの設計に必ず必要だ」

と言う人が必ず現れる。

その度にこう思うのだ。

「え?そーなの?」

と。

恥ずかしながら、実は人生に於いて、一回もフローチャートなるモノを書いた事がない。
だからプログラミングが上達せんのか?

自覚的にプログラミングを始めたのはLispから、だったんだが。Lispの教科書では

「フローチャートを書きましょう」

なぞと言う記述には一回も出会ったことがない。コンスセルのダイアグラムは何度もお目にかかったけど。でもフローチャートなんぞはついに出会わず仕舞いである。

(コンスセル図の例)

皆、プログラミングを習う際に絶対フローチャートから始めてるのだろうか。自習組なんで良く分からん。学校、例えば大学とか専門学校とか、皆フローチャートを書いてからプログラミングを始めるんだろうか。
全くもって分からん。

そもそも、感覚的な話で言うと、フローチャートの「必要性」ってのは構造化プログラミング以前の遺物なんじゃないか、って気がしてる。そう、BASICで出会うアレ、である。要するにgotoだな。
gotoは強力なんだけど、これでコードをそのままナチュラルに記述するのは確かに骨だ。書いてる最中にも、どこにジャンプするのか、書いてる本人でさえ一発では分からなくなるだろう。
つまり、分岐先やら繰り返しやら、構造化が無いととにかくジャンプせねばならない。その場合、確かに「設計図」として明確な指標が何らか必要になるだろう。そういう場合はフローチャートは確かに必要なんだと思う。
goto有害論の是非はともかくとして、構造化プログラミング、と言う技術は、プログラミング作成段階の「フローチャートによる下書き」を消し去る効果があったんじゃなかろうか。そうじゃないと意味がないだろう、とまで、直感的には、あくまで直感的な判断だが、思うわけだ。
構造化プログラミング、と言う手法に於いて、フローチャートは彼らが言う程mustなのだろうか。
どーもその辺が分からんのだ。

大体、今のプログラミング環境、つまり、構造化プログラミングによる手法を受け付けられない人間が、フローチャートを利用したから、と言って構造化プログラミングをメキメキと理解しだすだろうか?
逆に言うと、構造化プログラミングでプログラムをいきなり書き下せる人間は、フローチャートを書け、って言われたらすぐ書けると思う。
つまり、この辺も、直感的には不可逆的なんだけどなぁ。

いずれにせよ、フローチャートがプログラミング学習における万能薬、とはとても思えないのである。
誰か識者の意見を訊きたいモノである。

注1: 本音を言うと、現代の構造化プログラミング言語を基本とした環境では、「フローチャートを描くなんて時間の無駄だ」とさえ思ってる。
が、学校に通ってプログラミングを学んだわけでもないし、学習過程でそうやってプログラミングを覚えた人もいるだろうし、そうやって教えてる人も現存してるだろうし、その辺良く分からんのでこの辺は触らんようにしてる。

注2: ちなみに、プログラミング言語の歴史を見てみると、やっぱり「初の構造化プログラミング言語」でさえ、Lispである。
1958年頃に登場したLisp1.5のマニュアルを読むと、そこには関数定義法としてLabelとDefineと言う二つの(今の言葉で言うと)「特殊形式」が紹介されていて、それによってのユーティリティである関数定義法が載っている。
また、Lispの発明者、ジョン・マッカーシーは構造化プログラミングに必須の条件式、も発明していて、かつてはプログラミング言語の条件式は「マッカーシーのcond(= condition、つまり条件式)」と呼ばれていた。そして、彼は、その後のプログラミング言語に影響を与えた、ALGOL(1958〜1960)の策定者の一人でもある。
(ループ構文が無いが、基本的にLispではループは再帰で表現するので特殊な構文は必要ないのだ)
構造化プログラミングの提唱者はエドガー・ダイクストラだが、実際は彼が提唱する(1968年)遥か以前に、「構造化プログラミング」は(理論的には)ALGOLと(実装的には)Lispによって達成されていた、と言う事だ。そして、Lispはただ、そのプログラミングメソッドを「何と呼ぶか」全然決めていなかったのである(ちなみに、単純に「関数化」と言っている)。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事