C++言語解説:1.構造化プログラミング
2002-06-30

[概要] 構造化プログラミングについて説明します。従来で言うところの「C言語」学習に
    相当していますが、説明する文法はC++に準拠します。


構造化プログラミングとは

 プログラミングについて最初に考えること
 
  ・プログラミングについて最初に考えることは「言語」ではありません。プログラム
   の「設計手法」が土台になります。
  
  ・例えばC++は「複雑で大規模」な論理を分析/設計するために考え出された「オブジ
   ェクト指向プログラミング」
を実践するために作られた言語です。
  
  ・「複雑で大規模」とはどの程度か? それは「構造化プログラミング」では開発と保
   守がつらいと言われる分量(一般的に25,000〜100,000行)です。
この管理限界は1970
   年代後半から叫ばれていた問題でした。
  
  ・「C++を学ぶ」というのは「オブジェクト指向プログラミングを学ぶ」ということな
   のですが、何故これが必要かを理解するには、その前段階となる「構造化プログラ
   ミング」を知っている必要があります。
 
 
 ダイクストラのgoto有害論
 
  ・「構造化プログラミング(Structure Programming)」の思想は、オランダの学者であ
   るダイクストラ(Edsger Wybe Dijkstra)が、1968年に論文
     Go To Statement Considered Harmful
   で提唱したものです。
  
  ・ここでは「プログラムは連接(successive)、選択(conditional)、反復(repetition)
   で記述できる」
という考え方を示しています。gotoは結果的に排除される(*1)と言
   っています。まともに設計されたプログラムならば、このように記述できるし、あ
   とで変更が入っても保守性が高くなります。
  
  ・「まともな設計」とは、分割統治(divide and conquer)の考え方が基本となってい
   ます。つまり全体の処理を小さな単位に分割し、複雑さを軽減させていくというも
   のです。
   
  ・この小さな単位を構成する際「処理の入口と出口は一つ」というのが構造化プログ
   ラミングのポイントであり、それを実現するために「連接、選択、反復」で論理を
   構築していきます。
  
  ・さて、構造化プログラミングをサポートする言語は何種類か存在しますが、最もメ
   ジャーなものは「C」です。そしてC++は構造化プログラミングという点においてCを
   完全に包含します。

  
  ・そこで第1編では、C/C++でほぼ共通(*2)となる、構造化プログラミングの観点から
   C++を学習していきたいと思います。

                                      以上

(*1)現実的にはgotoも残っています。論理の外、つまり「例外」を処理する際にはgotoが
  便利というケースもあるからです。

(*2)C++はオブジェクト指向への拡張機能を持つため、Cが従来持っていた部分でも若干異
  なる表記があります。

[Revision Table]
 |Revision |Date    |Comments
 |----------|-----------|-----------------------------------------------------
 |1.00   |2002-05-06 |初版
 |1.01   |2002-05-12 |リンク,概要コメント追加
 |1.02   |2002-05-18 |ファイル名変更
 |1.03   |2002-06-30 |タイトル変更
[end]
Copyright(C) 2002 Altmo