- オブジェクト指向システムの設計 171 [無断転載禁止]©2ch.net
831 :デフォルトの名無しさん[sage]:2016/07/01(金) 21:24:16.76 ID:Yk740OnV - これまでの将棋プロジェクトの議論を横から見ていて、思ったこと。
1)次の一手を考える思考部分を除いた部分の設計・製造においてOOPが他に比べて有利かどうかは不明。だが、どの技法を使うにしろ、そんなに大変な作業ではないと思える。 2)思考部分のThinkingクラスの作成は、作り手が将棋の戦略に詳しい必要があり、さらにOOP以外のプログラミング手法が要求されると思える。 もしかするとAI的なロジックも必要になるのかもしれない。いずれにしろ、大変な手間がかかると思える。 3)もし誰かが適切なThinkingクラス(モジュール)を提供してくれれば、将棋プログラムを短期間で完成できる。 ☆結論 OOPは、そのような再利用しやすいパーツとなるクラスを製造し、活用するのに適している技法のひとつだと思う。 ただし、「適している」としても、それの設計・製造には、OOP以外に、多くのプログラミング技法とその問題領域への深い理解が必要になる。 もし、ある問題領域に適したパーツがFORTRANで作成され提供されていたら、その人はOOPな言語じゃあなく、FORTRANを選択するかもしれない。 また、プログラムの中核になるパーツが入手できれば、それを使いこなすだけなら、あまりOOPな知識は要求されない。 逆に言えば、そういうパーツが豊富に利用できない(他人の成果物が活用しずらい)言語であるなら、OOPの有りがたみは、かなり減少すると思える。 そして、C#は.NET Frameworkと、それ以外にも有志の人たちから無償提供されている豊富なクラスライブラリが提供されている。 それらをうまく使いこなせば、プログラムの生産性・信頼性は大きく改善される。
|
- オブジェクト指向システムの設計 171 [無断転載禁止]©2ch.net
833 :デフォルトの名無しさん[sage]:2016/07/01(金) 21:47:46.86 ID:Yk740OnV - >>832
そういうことだね。 たとえば、Zip圧縮、解凍プログラムを作成するとして、C#を使えば、主要ロジックだけをみたら、圧縮部分1行、解凍部分1行だけのコーディングで終わりとなる。 そして、呼び出されるクラスライブラリは、延々とコーディングされていて、そのアルゴリズムは凡人プログラマな私などには、なかなか理解できず、作れと言われても、困難なものだと思う。
|
- オブジェクト指向システムの設計 171 [無断転載禁止]©2ch.net
850 :デフォルトの名無しさん[sage]:2016/07/01(金) 23:20:20.40 ID:Yk740OnV - >>841
OOPでも、メソッドの部分のほとんどは、手続き型だよ。 手続き型を使わず、すべて関数型で書くのかな? それとも宣言型? 手続き型プログラム抜きでは、現時点ではプログラム書けない。 フローチャートも複雑な処理では、アルゴリズムの整理に必要なことが多いよ。
|