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

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

301デフォルトの名無しさん2018/09/05(水) 15:05:41.29ID:TnOSC8ns
>>300
抽象化データ構造+その上で動作する抽象化文がオブジェクトやクラスに相当するのだが、ダイクストラ氏はもっと大きな単位で考えていたみたい。
しかし、オブジェクト指向言語のオブジェクトはかなり細かい単位になってしまった。

302デフォルトの名無しさん2018/09/05(水) 15:09:07.29ID:blOO0QSb
機能ってのはほんらいモノではコトなわけだ
それを無理やり関数って形でモノにするのが構造化プログラム
だからまくいった構造化プログラムは断然わかりやすい

まあ構造化プログラムは頭いいやつにしかできない
凡人はオブジェクトが一番だよ

303デフォルトの名無しさん2018/09/06(木) 19:40:06.02ID:Aqi9FT3V
>>302
日本で(略

304デフォルトの名無しさん2018/09/07(金) 13:29:04.07ID:6L9Ok0F1
>>303
日本語でだろ?

305デフォルトの名無しさん2018/09/08(土) 12:29:32.73ID:GaM457i+
学校がフィルタリングの機能程度くらいしか果たしていないから
もう少し技能を見に付け入られる場にする必要が有る
小学生からやる必要は無いと思うけど
中学生くらいからどういう職業に就くか?
という視点で組みなおした方が良い

306デフォルトの名無しさん2018/09/08(土) 23:31:00.95ID:ZGoureqp
ちょっと煽られたことがあるからって排除したらダメだって。
哲学者がやっと生業を得られたもんで、今までの業界に対する
不遇を怨念のようにぶつけているだけじゃないか?
構造化がどうだのオブジェクトがどうだのということではなくて、
僕らは歴史的に言えば哲学者に相当する人種です、と区分けしたい
だけでしょ。

307デフォルトの名無しさん2018/09/09(日) 00:03:53.16ID:N103mDOh
哲学者というのは語弊があった訂正。脳筋多い人。

308デフォルトの名無しさん2018/09/11(火) 22:55:09.85ID:WmneUIpD
こんなページを見つけた。

翻訳:構造化プログラミングを最初に提唱した文書
http://calculator-cafe.com/readings/Structured_programming/Structured_programming.html

この最初の文章と書籍 "Structured programming"(1972年)とは違いがあるのかな?
同じ考え?

309デフォルトの名無しさん2018/09/16(日) 08:28:25.63ID:qJ8HI8bW
構造化プログラミングとオブジェクト指向って、
どっちか一方だけを残すようなもんじゃないだろ。

310デフォルトの名無しさん2018/09/16(日) 12:33:29.40ID:BbwnbXMm
>>309
現実には組み合わさっているよね

311デフォルトの名無しさん2018/09/16(日) 23:33:02.52ID:8hincGlt
>>308
第2章を書いたホーアが誰からアドバイスを受けたか。
たぶんホーア経由でダイクストラは何を聞いたか。

312デフォルトの名無しさん2018/10/16(火) 14:12:50.06ID:e2ZuSOro
興味深いなぁ
元々プログラミング専門でやってきてなくて転向してきたから
理屈は分かってるつもりだが本質を問われると自信ないんだよなー

313デフォルトの名無しさん2018/10/16(火) 16:34:25.11ID:9l19UDAz
>>312
大丈夫だ。日本のプログラマーのほとんどはプログラミングの本質なんて理解していない。

314デフォルトの名無しさん2018/10/16(火) 16:42:02.14ID:nQomBRvE
>>313
だが気になるんです

315デフォルトの名無しさん2018/10/16(火) 17:11:58.33ID:JHQMnpCL
タワシ、木に成ります

316デフォルトの名無しさん2018/10/17(水) 01:03:47.27ID:jvW331Nc
つーか、プログラミングの本質ってなんだ?
それをダイクストラが作ろうとしたけど、ミルズに妨害されてうやむやになったのでは?

317デフォルトの名無しさん2018/10/19(金) 10:10:41.64ID:SjrnPnkZ
アルゴリズム+データ構造=プログラミングって本があったろ。
まさにタイトルが真実ついてるなと。

検索とか出来る様になってもテキストファイルや、WinAPIが標準でサポートするbmpファイルは弄れても、世の中で求められてるのはjpegや各種カメラのRAWファイルの編集。
データ構造が分からないと触れもしない。
解析とか勉強しないとかね。

318デフォルトの名無しさん2018/10/19(金) 13:17:54.53ID:J1TJ3lIq
>>317
>アルゴリズム+データ構造=プログラミングって本があったろ。
>まさにタイトルが真実ついてるなと。

それってクラスのことじゃね?
結局、オブジェクト指向で全部いいやってなってしまった

319デフォルトの名無しさん2018/10/19(金) 13:31:32.87ID:2aaNt0Yj
アセンブラだってアルゴリズムとデータ構造じゃん
それをどう扱いやすくするかが問題なわけで

320デフォルトの名無しさん2018/10/19(金) 14:53:58.19ID:SjrnPnkZ
>>318
言われてみればそうなんだけど、実際にはクラスは型の側面が強くて、クラス作ったら手続き(アルゴリズム)を内包するデータ構造になってしまった。

321デフォルトの名無しさん2018/10/19(金) 15:07:56.87ID:KjS8CKpl
STLが最初に登場した時はデータ構造から切り離されたアルゴリズムに対してOOPな方々からフルボッコだったらしいよ
最終的には勝利したのは歴史が示すとおり

322デフォルトの名無しさん2018/10/19(金) 18:23:21.80ID:wjHh/A22
何を持って勝利なのかわからんが、
STLに相当するものが他の言語にないのはなぜか?

その答えはわかっていて、C++のオブジェクト指向は貧弱だったんだよ。
機能も貧弱だし、なにより標準のオブジェクト指向ライブラリが存在しなかった。
あとC++にGCがないから仕方なくSTLを使ってるっていうのがもう一つの大きな理由だな

323デフォルトの名無しさん2018/10/19(金) 19:14:15.80ID:tElZQQub
GCデフォだと困る場面もある
仮想マシン使うならGCデフォでも良いがそーじゃないでしょ

324デフォルトの名無しさん2018/10/19(金) 19:23:24.09ID:wjHh/A22
>>323
それが本当の理由。構造化がとかアルゴリズムがうんたらじゃなくて
GCでは困る場合に対応しようとしたためにSTLが必要になった

325デフォルトの名無しさん2018/10/19(金) 19:25:19.05ID:rqXdnb0r
pythonはSTL相当の機能を備えてると言える?

326 ◆QZaw55cn4c 2018/10/19(金) 19:46:08.41ID:akKjNeBd
>>322
いわゆる instantiate なる語が C++ 界隈以外ではほとんど聞かれない、のと同値なのではないでしょうか?

327デフォルトの名無しさん2018/10/19(金) 19:52:49.56ID:wjHh/A22
instantiateでぐぐったらUnityしかでてこんのだがw

328デフォルトの名無しさん2018/10/19(金) 19:55:00.77ID:wjHh/A22
>>325
STLが不要と言える機能は搭載してますね。

1. GCを備えてるから、STLのなんたら_ptrが不要
2. コンテナデータ型を備えてるから、STLのコンテナ型およびイテレータが不要

329デフォルトの名無しさん2018/10/19(金) 22:29:37.07ID:KjS8CKpl
STLの肝かつ叩かれた部分はアルゴリズムをコンテナのメソッドにせずに外出ししているところで
コンテナ部分が言語組込みかライブラリ実装かはどうでもいい

pythonに関して言えば(今は違うが)変数に型が付かないので特に意識しなくても
関数を異なる型に使いまわせるのだから同じようなもんだ

330デフォルトの名無しさん2018/10/19(金) 22:39:19.49ID:cspw41QP
英語版の Structured programming も構造化定理と構造化プログラミングを混同しているようだぜ
https://en.wikipedia.org/wiki/Structured_programming#Structured_programming_languages

やれやれ

331デフォルトの名無しさん2018/10/27(土) 00:05:03.56ID:dyCGgWaa
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

これこそが構造化プログラミングなんだよね。

332デフォルトの名無しさん2018/10/27(土) 00:59:14.43ID:J9QkDzO6
これ読むとなんらオブジェクト指向と相反しないなw
というか現在に至るプログラミングの基礎を提唱しただけに見えるわ

333デフォルトの名無しさん2018/10/27(土) 00:59:19.03ID:4RrrP6U6
はい。私が書き換えました。ほめてほめて

334デフォルトの名無しさん2018/10/27(土) 07:47:09.96ID:p3Z91K38
>>333
よーしよしよしよしよし( ^∀^)ノシ

335デフォルトの名無しさん2018/10/27(土) 13:01:57.21ID:zWVC9CbW
>>331
分かりやすくなったと言うよりは以前の記事の構成が悪すぎて歴史のところ以外は意味不明だった。
しかも I.hidekazu とか言う構造化定理と構造化プログラミングの区別のできないアホがさらに酷くなりそうになったところをここの住民が元に戻した。

336デフォルトの名無しさん2018/10/27(土) 13:03:42.25ID:zWVC9CbW
>>335
正 区別のできないアホがさらに酷くしてしまった
誤 区別のできないアホがさらに酷くなりそうになった

337デフォルトの名無しさん2018/10/27(土) 23:04:35.16ID:u1e24Y7s
>>332
オブジェクト指向と相反はしないけど一緒でもないんだよね。

338デフォルトの名無しさん2018/10/28(日) 00:27:01.00ID:PnJQ4LJT
そりゃ構造化プログラミングに足りないものを
補ったのがオブジェクト指向なんだから当然だろう

339デフォルトの名無しさん2018/10/29(月) 02:23:59.61ID:guXPkMEj
>>338
Simulaがまさにそんな感じ
ALGOL+Classだったからなあ

340デフォルトの名無しさん2018/10/30(火) 14:25:56.75ID:B+tN66pj
値だけで論理演算する機能ってほしいと思ってるんだけどなかなかないのかな
例えば
if(value == (1 || 2 || 3) )
だったらvalueが1~3のあいだならtureになるとか。
if(value == (1 || '1' || true) )
みたいに型を飛び越えられたらなお便利。
OR演算が書きやすくなるな。

341デフォルトの名無しさん2018/10/30(火) 20:37:25.24ID:0wy2mEm7
UnkoValues.contains(value)

342デフォルトの名無しさん2018/10/30(火) 20:44:45.86ID:ZgZ/9CmG
>>340
値だけで論理演算してないじゃん
それ、論理演算子 == とか || に
そういう意味をもたせてるだけでしょ?

343デフォルトの名無しさん2018/10/31(水) 01:05:49.20ID:HeFGeSPn
value in [1, 2, 3] のように書ける言語はたくさんある
こういうのは論理演算じゃなく集合演算
値の論理演算のニュアンスに近いのはJavaScriptの x = y || -1 みたいな式

344デフォルトの名無しさん2018/10/31(水) 03:18:58.29ID:dwxEKbTI
>>331
やっとまともな記事になった。
構造化プログラミングは構造化定理と別物なんだよ。

345デフォルトの名無しさん2018/10/31(水) 06:42:15.37ID:+MBvfB12
自演臭い

346デフォルトの名無しさん2018/10/31(水) 13:35:30.72ID:Qq+hlwEM
I.hidekazuさん降臨

347デフォルトの名無しさん2018/10/31(水) 15:36:04.81ID:r5XrrK9l
>>343
inみたいな演算子が無くても関数はあるよな

348デフォルトの名無しさん2018/10/31(水) 23:12:42.24ID:THFaDY1P
モナダイスキきてるだろ

349デフォルトの名無しさん2018/10/31(水) 23:55:59.43ID:zoWehdgp
構造化プログラミングって
1980年頃はやはったなー

350デフォルトの名無しさん2018/10/31(水) 23:58:16.08ID:zoWehdgp
ダイキストラも懐かしいー
95年頃に銀行で顧客サービスの最短パスもとめるのに
つかったわ〜

351デフォルトの名無しさん2018/11/01(木) 00:02:17.60ID:/VGbn+eQ
>>349
たいてい構造化定理のことを指しているけどな

新着レスの表示
レスを投稿する