今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

jude-users ML での議論の続き

メールしようと思ってたところ、平鍋さんからMLの主目的にあわない話は慎め!とのメールが来たので出すのをやめた。
で、疑問その壱。

ストラクチャードプログラミング時代のCOBOLでは、パターンなど無くても、誰でもがどインデントなアプリを少しの勉強で、組めた。

「インデントなアプリ」ってどういうもの?誰か教えてー。ぐぐってたらこんなのに当たった。
http://www.geocities.co.jp/SiliconValley/5634/t82B1_0001.html

こうぞうかぷろぐらみんぐ
構造化プログラミング

【プログラミング】
COBOLプログラマの間では、IF〜END-IF、PERFORM〜END-PERFORM等のたびにインデントをつけていく事。

は?COBOLプログラマの間では「インデントをつけていくこと」が構造化プログラミングなの???これが疑問その弐。
まぁ、それはおいといて。
思うに、オブジェクト指向ってのは構造化プログラミングに基づいていて、決して相反するものではない。構造化プログラミングの基本要素は順接・反復・分岐であって、これはオブジェクト指向でも必須だ。
オブジェクト指向ってのは、構造化プログラミングの利点を保持したまま、さらに認知科学の見地に基づいてプログラムを分割する方法についての指針を示してくれている。(しかし、指針があるからといって誰もがうまくやれるわけではない。) それに対して、構造化プログラミングでは大きいものを小さく、さらに小さく、と言う程度でしかなく、分割する指針はない(よね)。
たぶん、

    (構造化プログラミング + 新しい概念 + 新しい方法論) ⊂ オブジェクト指向

    新しい概念:パッケージ、クラス、インタフェース、継承、多態などなど
    新しい方法論:全体をパッケージやクラスに分割する方法

って感じなんだろう。
minusyyさんとtyamaguchiさんのコメントを受けて追加
構造化プログラミングでは、機能で分割してプログラムを細分化していく。これはオブジェクト指向でも似たようなもの。機能面以外のプログラム分割のマクロな指針としては、アーキテクチャとかフレームワークなどが考えられる。これらもオブジェクト指向に特有なことではないので、構造化プログラミングと併用することも可能だし、併用することでよりよい設計が可能になる。