vieweditattachhistoryswikistopchangessearchhelp

構造化プログラミング

人間の思考ロジックは、
の三要素で記述できるとした構造化理論に基づき、プログラミングを行なう手法。
従来用いられていたいわゆる“ goto 文”は使わななくてよいことが強調されるが、それのみではない。--sumim

人間の思考ロジックは
あ、そうだったのか…。--CUE

逐次処理、判断、繰り返しの3要素で記述できる
要するに、正規表現で書ける、って事ですね。--CUE

ん?すると、データの構造化とかは別問題なのかな? --戯
それともデータの構造も「逐次、判断、繰り返し」で表現する(できる)とか?まさかね?
#羅列、入れ子、参照、の3要素で表現できるような気はするが。

うーむ。構造化と、(関数などを作る論拠?である)分割統治とは、直交な概念だったんですね。
つまり構造化は、gotoの代わりに繰り返しとかを使えとは主張するけど、gotoの代わりに関数を使えとは主張しないわけね。

そういや、上記3要素を駆使するかどうかと、関数化を駆使するかどうかとは、互いに独立に実践可能だな。 --戯
#ありの氏あたり(^^;は、構造化は必要だと感じても、関数化はまた別だ、と考えているのかな…

直行するってことでは、構造化的なものと、関数的なもののほかにも、
オブジェクト指向的なもの、アスペクト指向的なものとかも皆、そうですよね。
たとえば、イテレータとかには、その実装に全部を同時に存在させられそうです。
イテレータ自体は「繰り返し」で、
それを、イテレータ「関数」(メソッド)として実装し、
それを、コレクションへの「メッセージ送信」で起動して、
処理(の一部)をイテレーション中の「アスペクトとして設計」するとか。--sumim


ってか、「関数に分ける」という関数呼び出し"構造"を構築する作業も
「構造化」の一種ないしは部分要素、なのかなと思い込んでいたので、
そうじゃ"ない"っていう話は驚きでした、っていう。

ところで、本来の(^^;「構造化」と「関数に分ける」とは
同じ(?)構造といってもかなり違いが有りますね。
逐次&判断&繰り返しでまとめるだけならば、なんていうか、記述は「途切れない」んだけど、
関数にしようとすると、記述が「途切れる」ようになる。

その結果なにが起きるかってーと、関数にしたとき(だけ)、「1つの関数が複数箇所から呼ばれる」
ということが生じ得るようになる。

でも、これって、gotoと或る面で同じなんだよね。
任意の場所に飛べる(なにせ任意の部分「を」関数として括りだせるから)ようになっちゃうのだから。

もしかして、関数化は、本来の構造化に対して背を向ける行為でもある、のかも。

本来の構造化は、あくまで処理は一本道であり、その一本をしかサポート(=影響)をしない。
でも、それだけじゃやっぱり辛い、ってことなのかも知れない。

#そういや元々のPascalはUnitの概念が無いんだっけか…
--

>任意の場所に飛べる(なにせ任意の部分「を」関数として括りだせるから)ようになっちゃうのだから。
そういう風に考えた事はなかったな、そういえば。
結局、「gotoとは何ぞや」って話になるのかな。「継続でいいじゃん」とか言われそうだな。--CUE

…どうせ、俺のブラウザは白黒表示だよ(笑)--CUE

ところで、 goto(やその亜種:関数とか)を使う世界ってのは、正規表現で書けない世界ってことなのだよね? --戯


このページを編集 (2785 bytes)


Congratulations! 以下の 2 ページから参照されています。

This page has been visited 10374 times.