「構造化プログラミング」の版間の差分
削除された内容 追加された内容
Monadaisuki (会話 | 投稿記録) →歴史: 「木村泉の見解」が分かり難いので、追記。 |
Goldensundown2 (会話 | 投稿記録) 以前の自作文にサブルーチンを構造化に含めるなど複数の誤りがあったので修正しました。あと文章も少し修正しました。駄目なら戻すか再修正してください。 |
||
(2人の利用者による、間の4版が非表示) | |||
1行目:
{{Otheruses|ダイクストラらによるソフトウェア工学的手法としての「構造化プログラミング」| goto文論争 |goto文}}
'''構造化プログラミング'''(こうぞうかプログラミング|{{lang-en-short|''structured programming''}})は、プログラム記述をより簡素明快にしてソフトウェアの品質を高め、開発期間の短縮に伴う作業コストの軽減を目的に考案されたコンピュータ・プログラミング技術である。
今日の「構造化プログラミング」は複数の誤解を招く言葉となっており、本来の定義とソフトウェア技術者を含む世間の用法の間に差異が生じている。この様な事情から構造化プログラミングには以下の3つの解釈が存在している。
# 1969年に計算機科学者の[[エドガー・ダイクストラ|ダイクストラ]]らによって提唱され反響を呼んだソフトウェア工学理論<ref name="structured_programming" />。ここで構造化プログラミング(''structured programming)の名称が初めて使われ、広く知られるようになった。''
#1966年に計算機科学者の[[コラド・ベーム|ベーム]]らが発表した[[構造化定理|構造化プログラム原則(''structured program theorem)'']]によるプログラミング理論。
#1958年に公開された「[[ALGOL|ALGOL 58]]」を先駆けとする構造化プログラミング言語を用いた開発環境。名称が確立される以前からソフトウェア技術者の間では漠然と実践されていた。
今日の構造化プログラミングに対する一般的な認識は、(2)と(3)が示す「順次、選択、反復といった制御フローをブロック単位で表現し、それらを直列または入れ子状に配置する事でプログラムの構造化を実現する」という事になっているが、(1)の[[エドガー・ダイクストラ|ダイクストラ]]が提唱した理論が本来の意味での構造化プログラミングであり、本稿では(1)について説明する。(2)と(3)については「'''[[構造化定理]]'''」が該当記事となる。
== 概要 ==
ダイクストラは1969年のワーキングペーパー<ref name="structured_programming" />で構造化プログラミングについて以下のように語っている。
# '''良く構造化されたプログラム(well-structured
# '''段階的抽象化(step-wise
# '''[[段階的詳細化法|段階的詳細化]](step-wise
# '''抽象データとその上で動作する抽象化文の共同詳細化(joint
# '''プログラムの階層化''':ダイクストラは共同詳細化の結果(オブジェクト指向のクラスに似たもの)を真珠に例えて、プログラムの階層化を説明した。ダイクストラは、階層化されたプログラムを真珠のネックレスに例えた。真珠のネックレスは真珠を交換して、変更を容易にしたり、真珠の再利用も可能である。
以上のように[[構造化定理]]とはあまり関係のないことであるが、現在でも構造化プログラミングと構造化定理は混同されている。
|