構造化プログラミングはまだ必要ではないのか?

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/15(水) 00:28:28.85ID:mWz8Up0Y
構造化プログラミングで言うところの「抽象化データ構造とその操作の抽象文の共同詳細化」はオブジェクト指向のクラスで実現された。
しかし、オブジェクト指向だけでは、階層化と段階的詳細化と段階的抽象化が実現できない。

まだ構造化プログラミングは必要なのではないのか?
しかし、今は風化しているように思えて仕方がないし、ダイクストラの考えを知っていれば、もっとマシなコードが書けそうだが。

(Wikipedia の構造化プログラミング)
https://ja.wikipedia.org/wiki/%E6%A7%8B%E9%80%A0%E5%8C%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0
2018/08/15(水) 11:01:29.41ID:i49BHTWw
コード書くときに「これはオブジェクト指向、あっちは構造化プログラム」っていちいち意識するかバカ者
3デフォルトの名無しさん
垢版 |
2018/08/15(水) 11:43:51.12ID:XWCO6767
>>2
とはいえオブジェクト指向だけで説明できないことも多い。
クラスにすれば全て解決ではない。
構造化プログラミングを意識しないと無駄なクラスをたくさん作ることになる。
2018/08/15(水) 14:01:49.63ID:/D7pa/qT
>>1
構造化プログラミングについて少し歴史的なことをメモしておこう

構造化定理は逐次的プログラム(つまり並行して動作し得る複数のプロセス・スレッド・タスクが存在せず単一のプログラムカウンタで済むプログラム)について
3基本構造(順接、分岐、反復)の表現能力に関する数学的事実を述べた定理に過ぎず、書かれるプログラムの信頼性とか読み易さ・理解し易さとは無関係

それをさも関係があるように錯覚させたのが実務畑のHarlan D. Millsの狡猾なところであり、またある意味では有能なところでもある
つまり、多くのプログラマはバカだから単純なクライテリアでなければ理解できないから、バカ向けの単純なクライテリアを与えてやった、これが確信犯Millsの功績であり罪過でもある
言い換えればDijkstraの高尚な“structured programming”の精神などはバカな大衆プログラマには理解不能で豚の耳に念仏だとMillsは悟っていたから
Dijkstraの提唱した“structured programming”という標語だけ借りて中身はバカ向けに完全に換骨奪胎したのがMills流の“structured programming=goto-less programming”という一種の運動
そして、この運動を権威づけるために使ったのが単なる表現定理に過ぎない構造化定理だったわけだ
つまり「この運動が正しいことはちゃんと数学で保証されてるんだよ!」って権威づけをしたわけね

アカデミアの世界にずっと身を置いていたDijkstraとは違い、MillsはIBMの研究員として開発現場の指導なども行って現場プログラマのほとんどはバカばかりだと嫌というほど思い知らされていたはず
だからこそ「正しいが難し過ぎてバカには正しく理解するのは不可能」なDijkstra流の高尚な“structured programming”からキャッチフレーズの“structured programming”だけ流用して
「正しくないがバカにも理解し実行できて多少は効果が見込める」Mills流の低俗な“structured programming”を広めたのだよ

そしてMichael Jacksonパパが構造化定理に基づいて事務処理向けのプログラミングを入出力データ構造の対応から3基本構造を用いる形で系統的に導出する手法として
JSP (Jackson Structured Programming) を提案して大人気を博したことでMills流の低俗な“structured programming”運動は一層の盛り上がりを見せたというわけ
5デフォルトの名無しさん
垢版 |
2018/08/15(水) 17:57:46.43ID:XWCO6767
>>1
Wikipediaより

>1987年の第9回ソフトウェア工学国際会議(ICSE)において、Millsは会場にチューリング賞受賞者がいないことを確かめると
>「ダイクストラやホーア達はどこへ行ってしまったのか。我々はもう彼らから学ぶものがないのか。」とその現状を批判した
>(しかし木村泉の見解が当たっていたとするならば、「ソフトウェア工学」をそういったものにしていった張本人こそが、その発言をしたMillsであるということになる)。

酷いよなあ
ダイクストラの研究を粉砕した張本人がよくこんなことを言えるわ
6デフォルトの名無しさん
垢版 |
2018/08/15(水) 20:19:38.78ID:9o1ne3nM
(きちんとクラスが整理された上での)OOPこそ構造化プログラミングの結実したものと思っていたんだが違うのか
2018/08/15(水) 20:52:41.51ID:0gxCPQjR
構造化とオブジェクトは別物だと思っていたが
8デフォルトの名無しさん
垢版 |
2018/08/15(水) 21:28:28.97ID:mWz8Up0Y
今はオブジェクト指向さえできれば十分という風潮がある。
しかし、オブジェクト指向は主にクラスを使うというだけであって、
綺麗で分かりやすいプログラムを書けるかどうかとは別問題。

構造化プログラミングは綺麗で分かりやすいプログラムを書く手法としては今でも大事かと。
2018/08/15(水) 21:34:08.82ID:PyNbth/v
>>8
>オブジェクト指向は主にクラスを使うというだけであって

そりゃいくら何でも偏見
2018/08/15(水) 21:41:38.81ID:X+03HcfZ
COBOL、VB、Java…と時代が流れても馬鹿は馬鹿なコードを書く。
11デフォルトの名無しさん
垢版 |
2018/08/15(水) 22:39:09.18ID:9+ksv3W6
>>1
選択するようなもんじゃないじゃん・・・
何で片っぽだけで存在出来ると思ってんの?
12デフォルトの名無しさん
垢版 |
2018/08/15(水) 22:43:49.88ID:mWz8Up0Y
>>11
自分は片方だけとは書いていないが?
2018/08/16(木) 00:11:08.97ID:qKowi4/2
>>1 がクソコードしか書けないのは分かったからいちいちスレ立てんな。
2018/08/16(木) 00:21:20.74ID:zxs39t0T
>>13
いや、スレ建ての言い分は稚拙かもしれないが、
型クラスベース+継承でソフトウエアを表現すると
依存の茂みを作ってスパゲティーの山になる欠点に薄々気がついて
王様の耳はロバの耳と、あえて言っているのかもしれない…
2018/08/16(木) 00:46:01.96ID:uRZjuhnI
>>14
オブジェクト指向で却ってややこしくなった面もあるかもね
16デフォルトの名無しさん
垢版 |
2018/08/16(木) 01:20:22.82ID:G6TcbKDp
オブジェクト指向技術はエディタの機能で代替できるような気がする。
エディタにはコードの検索や置換機能があるし、
VimやSublime,サクラエディタで高速に既存コードを再利用できる。
だからエディタの機能やVimを極めれば継承とかほぼ要らないし、
再利用性重視でなくてもいい。
変更の影響範囲とかもエディタを使って洗い出せば、管理できる。
だからオブジェクト指向の高度な機能を使わなくてもエディタや
ツールで代替えできる。
コードの差分はGitやWinMergeで洗い出せる。
オブジェクト指向のガチガチの設計を書くととにかく
変数名、メソッド名などの名前が長くなる。
名前が横に長いと非常に読みにくく画面外に隠れるし、
名前というのはスペース区切りもカンマ区切りもないわけだから、
上記のエディタ機能で編集がやりにくい。
だからJavaみたいなガチガチのオブジェクト指向ってもう今の時代
必要ないんだと思う。JavaScriptやPythonくらいのオブジェクト指向
だけで十分だもの。
Javaの作法の時代遅れ感とか、馬鹿馬鹿しさってそろそろ気付くべき。
17デフォルトの名無しさん
垢版 |
2018/08/16(木) 09:06:07.27ID:xlcF1CtQ
>>12
>>1
>まだ構造化プログラミングは必要なのではないのか?

条件が整えば不要になると自分で書いてるじゃん。
18デフォルトの名無しさん
垢版 |
2018/08/16(木) 09:09:40.06ID:xlcF1CtQ
>>15
2010年のインタビューでは、オブジェクト指向の御大は「実現方法に欠点があった」と考えてるようだ。

オブジェクト指向プログラミングは間違いだったか?
https://www.infoq.com/jp/news/2010/07/objects-smalltalk-erlang
>このインタビューを受けたのは、Erlangの最初の開発者であるJoe Armstrong博士とSmalltalk、OOP、パターンに長い間関係している
>Ralph Johnson博士だ。私たちは「間違った道」を当てもなくさまよって
>きたが、これはオブジェクトの考え方の実現方法に欠点があったため
>であり、この考え方自体の欠点ではないと2人は述べた。
19デフォルトの名無しさん
垢版 |
2018/08/16(木) 09:45:07.99ID:c55d0qec
>>18
これってクラスが良くないってこと?
Erlangの仮想マシンのプロセスみたいなものが良いってこと?
2018/08/17(金) 09:05:58.30ID:tlmPPTdZ
元祖オブジェクト志向は俺らのモノだってだけの主張
21デフォルトの名無しさん
垢版 |
2018/08/17(金) 09:31:41.05ID:n+YTyfNv
そもそもオブジェクト指向は、データとアルゴリズムをクラスとして組み合わせただけのこと。
構造化プログラミングみたいに綺麗なコードを書くためのものではない。
22デフォルトの名無しさん
垢版 |
2018/08/17(金) 21:12:36.99ID:MPzZ3o4u
>>21
なるほど、構造化プログラミングは設計手順でもあるのかー

オブジェクト指向だとドメイン駆動とかユースケース駆動なんかが
それにあたるのかね

Wikipediaの構造化プログラミングには↓こう書いてあって

> プログラムを記述するのではなく、機能を抽象化した「仮想機械」を想定し、その「仮想機械が提供する命令群」でプログラムを構成する

これってオブジェクトの設計にも当てはまるよね
オブジェクトは構造化の手段の一つとみることもできそう
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況