- 1 名前:デフォルトの名無しさん [2016/05/19(木) 22:07:47.87 ID:9fCVrsOw.net]
- 手順とかノウハウとか語りたい
- 876 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:20:13.35 ID:Cf71caC3.net]
- >>861
率直に言うと、レベルが低過ぎてお話にならないと判断した。 将棋ソフトを設計しろって言われて [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] だけ書いて完成したと思うのは>>652並みのお粗末さだぞ…。 思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] って何じゃそりゃ?
- 877 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:22:38.20 ID:uH1/jPAH.net]
- >>862
お粗末ってなんだ? 設計というのはシンプルにするものだ。 たくさん書けばいいってわけじゃねーぞw
- 878 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:23:38.63 ID:uH1/jPAH.net]
- だいたい、間違っていると思うならば、
お前こそ、間違ってる理由を言えよ。 お前が考えるさいきょうのせっけい(笑)の紹介じゃなくて、 何が間違っているのかを言えって。
- 879 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:25:48.76 ID:uH1/jPAH.net]
- 思考部分のコンポーネント図が間違っているというなら訂正したコンポーネント図を書けよ。
[ 思考ロジック ] ↑ 思考ロジックの正しい設計 何度も言ってる
- 880 名前:デフォルトの名無しさん [2016/05/29(日) 19:31:51.54 ID:nCNZLCDh.net]
- ID:Cf71caC3
もうほとんどあらしだな
- 881 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:45:13.81 ID:hqWpcQ8C.net]
- >>862
レベルが低い以前に話聞いてないじゃん 将棋の思考ロジックの設計なんかはもうアルゴリズムの設計とほぼ同じ 計算機科学の分野でしょ
- 882 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:19:13.03 ID:vZz5+wdA.net]
- ざっくりいうとさ、将棋の盤のデータは
char ban[9][9]; こんなんで十分なわけでしょ これに相手と自分の持ち駒の配列を付け加えて あと少々何かあればそれで充分な世界 人によってはcharですらデカすぎるというかもしれない この時点でオブジェクト指向らしさは全然ないよね どちらかといえば画像処理とかに近いデータ構造 将来将棋が仕様変更して、いきなり金の振る舞いが変わるとか そういうことはあり得ないから、駒をオブジェクトにするとか意味不明なことはする必要ないし オブジェクト指向でよく言うような、仕様変更に強くするとか 継承とオーバーライドで差分プログラミングとか、全く関係ないよね だって、将棋のルール(仕様)は決まっているわけだからさ、仕様変更とか考えなくてよい むしろ実行時間や効率が問われているのだから 意味のない柔軟性を持たせる分のオーバーヘッドがもったいないし、必要もない
- 883 名前:デフォルトの名無しさん [2016/05/29(日) 20:30:30.60 ID:Cf71caC3.net]
- >>868
モジュール構成は? 相互の関係は? コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ?
- 884 名前:デフォルトの名無しさん [2016/05/29(日) 20:32:05.69 ID:Cf71caC3.net]
- あと>>608もな。
- 885 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:42:21.72 ID:f/sZpflr.net]
- 察して欲しかったら察してもらえるように言葉考えて伝えなよ。
業務プログラマなんだろ?
- 886 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:44:29.81 ID:uH1/jPAH.net]
- [ 思考ロジック ]
↑ 思考ロジックの正しい設計 [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] ↑ UIまで含めた、将棋ソフトの正しい設計 > コンポーネント図を見ればどういう領域を整理しようとしているかくらい分かるだろ? これみて、どういう領域を整理しよとしているかわからないの?w
- 887 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:59:39.40 ID:1omdCt5G.net]
- 外とのインタフェースだけきめて内部はTDDすれば勝手に決まっていく派
最初から全部決めようなんて無理無理
- 888 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:03:08.22 ID:1mIQzqS0.net]
- AIモジュールはハードウェアも絡むからOOPはない
将棋ソフト全体をOOPで作ったとしてもAIモジュールとはだいぶ隔たりがあるよ ユーザーの入力した結果から低レベルな盤面データを生成して丸ごと渡すだけとかそんなレベル
- 889 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:13:37.84 ID:vZz5+wdA.net]
- いやだからさ、将棋ってのはルールが決まっているんだよ
歴史のあるゲームであって、いきなりルールが変わって金の動きが変わるとか そういったことは今の時点では全く考慮する必要がないわけだよ で、オブジェクト指向のメリットは、大体において仕様変更に強くすることなんだよ 仕様変更が全くないのであれば、どんな方法でどんな汚い書き方をしたって プログラマだってプロなんだから、書き上げることはできるんだよ ただ、突然の仕様変更は怖いよねって話で、そのためにオブジェクト指向にコストを掛けているわけじゃないですか その点、将棋はルールが決まっていて、仕様変更など気にする必要ないし むしろ実行速度が強さに直結していて、一手でも先を読んだ方が有利なわけだから 仮想関数なんかを使うオーバーヘッドがもったいないし その二つの面からオブジェクト指向である必要性が薄い題材 仮にオブジェクト指向で作ったとしても、仕様変更がないことが分かっているわけだから オブジェクト指向設計の腕の見せ所が全くないし、題材として不適切なんだよ 将来にわたって必要の無いであろう拡張性や柔軟性を持たせても、無駄が多いと言われるだけ 将棋のAIのアルゴリズムには大変興味深いものがあるとおもうが オブジェクト指向としては見るべき点が「全く」ない
- 890 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:32:59.51 ID:vZz5+wdA.net]
- つまりは、将棋AIをオブジェクト指向で作るにあたって、どんなに不味い設計をしたとしても
仕様変更が発生しない題材なわけだから、オブジェクト指向的に良いも悪いもなく、動けばOKだよねっていう話になる どんなに不味いオブジェクト指向の設計であっても、仕様変更さえなければ大体は問題にならない 当初の予定通り動く ついでに、将棋AIである以上は強くなくてはならない この強くなければならないという案件は、通常ではない 業務システムが他のシステムと喧嘩して勝っただの負けただの言わない 普通は仕様変更に強いように、拡張性があるように、プログラムを設計するし オブジェクト指向の設計の良し悪しもそこに集約されるわけだが 将棋AIは強さが求められているわけで、オブジェクト指向設計でいうところの 良し悪しとは違ったものが求められている しかも仕様変更がない、とくればハードコーディングも止む無しだろう
- 891 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:36:48.37 ID:JprInoKj.net]
- 暗黙のうちに拡張将棋が題材になってるんでしょうね
ワープ駒とか二回倒さないと死なないとか 範囲攻撃とか装備とかアイテムとか擬人化とかイケメン武将とかキャラアドオンとかガチャとか課金とか マルチプラットフォーム対応もするしサービスとして長くメンテナンスし拡張を加えていく前提 当然AIもそれに対応しなければならないからゲームやアプリは良くモデル化されていなければならない
- 892 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:38:49.46 ID:uH1/jPAH.net]
- >>877
で、そんなことを言い出すと。 YAGNIだってとどめを刺すわけだw だからそうする目的を聞いている。目的がないのにわざわざ分割するのは、 必要だからやるのではなく、設計(?)をすること自体が目的になっている。
- 893 名前:デフォルトの名無しさん [2016/05/29(日) 21:47:24.89 ID:Cf71caC3.net]
- >>877
現実のプロジェクトなら設計者が設計書に記述するであろう内容についての前提が違うんだと思う。 「将棋ソフトを設計してくれ」って客に言われたら、オブジェクト指向だろうが、他の設計手法だろうが 構成を記述しないってことはあり得ないからさあ。 そこを分からない人に説明してもしょうがないことは分かったから流すようにする。 毎日IDが変わるから新しい人かもと思って対応していたけど、どうも同じ人みたいだし、 対応してもスレが汚れるだけだからスルーすべきだったと反省。
- 894 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:50:11.02 ID:uH1/jPAH.net]
- > 構成を記述しないってことはあり得ないからさあ。
構成は記述されてありますが? そもそも将棋ソフトを設計してくれって言われたら 思考ロジック部分だけを設計しませんよwww [ 思考ロジック ] - [ 駒の配置データ ] - [将棋UI] こんな感じで設計します。 当然、思考ロジック部分は一つです。 シンプルイズベスト。理由がなければ分割しない。
- 895 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:52:08.59 ID:uH1/jPAH.net]
- 「将棋ソフトを設計してくれ」って客に言われたら、
どんな仕様か詳しく聞きますね。 その上で必要なら、それを満たすように設計しますが、 あんたのように何も言ってないのに過剰な分割なんかしませんよwww
- 896 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:53:29.31 ID:1omdCt5G.net]
- 客の定義による
ただ将棋ソフトで遊びたい人にとって内部設計なんてなんの意味もない 外部の人間が自分たちのソース引き継いでメンテするのが前提ってこと?
- 897 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:04:37.03 ID:qPPHNZFg.net]
-
- 898 名前:ogg vorbis形式のファイルを自前でデコードして再生するソフトを「設計」しろとか、
円周率を出すソフトを「設計」しろとか、 そういう類の無意味な題材だってことが理解できているのか心配になる。 動物とか自動車とかモデル化するだけの人なのかもしれんが。 [] - [ここ壊れてます]
- 899 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:05:37.63 ID:uH1/jPAH.net]
- >>882
何を言ってるんだ? たとえばネット対戦をしたいって言えば それが出来るような設計にするだろ? 客の要求を聞いた上で、それを実現できるように設計する。 客がネット対戦をしたいって言ってもいないのに あらかじめ先手(笑)を打ってネット対戦機能をつけましたとか それは過剰な設計であり無駄なコストを発生させたに過ぎない。 だからいきなり設計すんなって言ってるんだよ。 客の要望を聞いて、必要であるという理由があれば それが可能なように設計すればいい。 だから、そうした理由を聞いてるのに、明確な理由もなくて、 そうするのがいいと思いましたーでやってるから馬鹿にされてるんだよ。
- 900 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:06:35.28 ID:1ogDAOAr.net]
- 別に思考ルーチンも学習機能なんて要件に上がってないしね
ここで話せるのはここまでじゃん だから題材が悪いって俺が最初に言ったじゃん 基本的にオブジェクト指向ってz80で作れるものに威力を発揮しないんだよ 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ どうせ設計に必要な項目も他人に説明できないしできなかっただろ それは将棋ソフトの全容が他人に聞くまでもなく みんなある程度わかっちゃってるからなのさ
- 901 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:07:18.13 ID:+DJ914Ec.net]
- >>883
できるだけ抽象的に作ればいいと思ってる抽象馬鹿だと思われ。
- 902 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:09:35.02 ID:uH1/jPAH.net]
- >>883
ogg vorbis形式のファイルというのは、正確には音声ファイルフォーマットで Oggがコンテナ、Vorbisがコーデックという設計で、 元々内部の役割が分割されてるからちょっと違うけどねw
- 903 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:11:26.67 ID:uH1/jPAH.net]
- >>885
> 将棋ソフトなんて作ったこともないのに題材に選んだ奴責任とって腹切れ ↓こいつかな?w 346 名前:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 16:27:04.89 ID:sxeEi6BC [38/89] ちょうど今電王戦見てるから将棋ソフトで考えてみるとさ。 駒クラスがあって王・飛車とかは駒のサブクラスにしようかって感じだろ。 盤面情報と思考ロジックはどんな感じのクラスにするのがいいだろう? 354 返信:デフォルトの名無しさん[] 投稿日:2016/05/22(日) 16:44:19.40 ID:sxeEi6BC [43/89] >>351 具体例があったほうが分かりやすいから将棋ソフトの例で考えてみてよ。
- 904 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:14:11.15 ID:auBo7N3K.net]
- スーパーエヴァンジェリストの僕がこのスレの混乱の原因を教えてあげよう
ここには顧客ロールの担当者がいないのさ
- 905 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:17:37.23 ID:1ogDAOAr.net]
- 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね
はじめの話で思考ルーチンが ディープラーニング当然でしょみたいな話になんて絶対ならないわけで
- 906 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:19:59.67 ID:+DJ914Ec.net]
- んでは OS の設計でもしてみるかい?
Linux あたりと比較できるしいいんじゃないの? よりよいオブジェクト指向で設計してもらいたいですな。
- 907 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:24:35.04 ID:hqWpcQ8C.net]
- >要件定義が曖昧
これ 「将棋ソフト」を設計しろだと いきなり実装の話に入らざるを得ない
- 908 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:26:13.01 ID:uH1/jPAH.net]
- >>890
> 要件定義が曖昧なのに求めてる設計書のレベルが見合わないんだよね それもあるけど「何のためにそうしているか?」が存在しないんだよ。 いえばいいだけなのに、言わない。 そうするのが当然だって思い込んでる。
- 909 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:27:58.83 ID:uH1/jPAH.net]
- >>892
お題だから、いきなり実装の話に入ってもいいんだけどさ、 それならそれで、どういう「要件を想定した」っていうのを 明確に言わないといけない。 それを言わずに、なんかわけのわからん分割の仕方をしてるから 突っ込み入れられまくってるわけ。
- 910 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:33:44.93 ID:RrRCCmyQ.net]
- スレタイに沿ったオブジェクト指向の設計なら
将棋の駒はクラスで正解 しかし設計のきれいさではなく 処理速度を求めるなら構造化で書く 前提が違うのにみな上から目線で書きこむから ただ混乱するだけ やっぱ2ちゃんは雑談はともかく ちゃんとした議論に向かないな
- 911 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:35:40.39 ID:1ogDAOAr.net]
- 要件定義がグチャグチャだとダメだね
得に将棋ソフトなんて疑問が無いもん 勝手に作っちゃうでしょ そこは要件を出した方も悪いし聞かないまま進めちゃう方も悪いし
- 912 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:36:26.79 ID:uH1/jPAH.net]
- > 将棋の駒はクラスで正解
それはゲームとかで駒を 2Dや3Dでレンダリングする時の話だよw 思考ロジックの中でクラスにする理由はない charなりintなりの二次元配列に defineで定義した定数を入れれば十分
- 913 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:40:50.33 ID:RrRCCmyQ.net]
- >>897
処理速度を考慮しない前提で言うと それはオブジェクト指向じゃなくて 構造化の考えから抜け出せてない
- 914 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:45:42.31 ID:1ogDAOAr.net]
- ところで将棋ソフトにオブジェクト指向を適用するとダメだね
駒なんかクラスにされたらどう作ってもクソになっちまう
- 915 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:47:10.49 ID:1ogDAOAr.net]
- でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな
つまりオブジェクト指向ってもしかして(笑)
- 916 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:49:05.67 ID:uH1/jPAH.net]
- >>898
それで理由は?
- 917 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:51:44.59 ID:uH1/jPAH.net]
- >>900
> でもオブジェクト指向的に将棋の駒をクラスにするのは間違ってないと思うな > つまりオブジェクト指向ってもしかして(笑) 最後まで書きなよw つまりオブジェクト指向ってもしかして、(思考ロジックの)将棋の駒を クラスにすることには役に立たない。 だろ? だから俺は最初から何のためにそれをクラスにするのかと聞いてるわけ。 する理由がある、つまり適切な場所をオブジェクト指向にして、 こんな関数レベルの思考ロジックをわざわざ無意味に分割するんじゃないって言ってるんソア。
- 918 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:52:01.50 ID:+DJ914Ec.net]
- >>898
抜け出す必要がない場面で無理に抜け出そうとする事がそもそもおかしい。 オブジェクト指向は万能ではない、処理フローがほとんど決まってるものに対しては不向き。
- 919 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:54:48.91 ID:vZz5+wdA.net]
- 構造体どころかintかcharの配列で良いって話
charでも何か勿体ないという人もいるかもしれない 画像なら、画像全体が何らかのオブジェクトでラップしてあるならわかるが 画像の1ピクセル1ピクセルを全てオブジェクトにする人はいない こんなものはデータで十分 構造体的発想を抜け出せないというのも意味不明 データで十分なものをオブジェクトにする方が 何も理解していないと言いたい
- 920 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:58:31.03 ID:1ogDAOAr.net]
- >>902
でもさ 全員の共通認識を一致しやすいって手法だろ? でもこの方法は将棋ソフトに関してははっきり言ってクソ どう作ってもクソにしかならない オブジェクト指向ってダメなのかもしれんね
- 921 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:59:10.96 ID:1omdCt5G.net]
- オブジェクト指向は万能じゃないよ
- 922 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:01:49.14 ID:vlcsE4Oa.net]
- >>904
うんうん。将棋のコマって 王将・玉将 金将 銀将 → 成銀 桂馬 → 成桂 香車 → 成香 飛車 → 竜王 角行 → 竜馬 歩兵 → と金 うまい具合に15種類なんだよねぇ。 4bitでじゅーぶんですよね。空白含めても。
- 923 名前:デフォルトの名無しさん [2016/05/29(日) 23:02:20.91 ID:Cf71caC3.net]
- 実力を示したいなら
「設計は>>652」 「設計は思考ロジック!」 とか言ってないで、設計を提示すりゃいいじゃん。 設計書を書いたことなくて、書き方知らないんだからおとなしくしてりゃいいのに。 あと、要件についは十分説明したから読み直せ。 参加者はあれで読み取ってるんだから読み取れない自分が問題だといい加減気付けよ。
- 924 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:06:00.21 ID:RrRCCmyQ.net]
- >>901
仕様の変更や追加に強くなるから >>903 ある程度の規模になると必要がある >>904 >構造体的発想 構造化ね そりゃ速度が重要ならOOにはしないが 逆に複雑なもので多少のオーバヘッドを 犠牲にできるならOOの方が楽に組める
- 925 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:08:23.54 ID:hqWpcQ8C.net]
- >>908
実力を示すってのが意味不明だけど アルゴリズムの設計をすればいいのか? >MoveGenerator→MovePicker→Evaluator こんなの設計しても将棋には意味ないぞ
- 926 名前:デフォルトの名無しさん [2016/05/29(日) 23:10:51.26 ID:Cf71caC3.net]
- 簡単な部分だけをみて簡単だって言ってる奴が多いけど
ソフト全体の構成がどうなるかを聞いている。 手が進むと局面が増えるのはどうやって管理する? 手と局面の関連付けは? 手の分岐もおそらく管理する必要がある。 手の生成、局面の評価、手の選択の機能の連携は? マルチスレッド対応もある。 などなど含めた全体の設計はどうなるんだろう?って話だ。
- 927 名前:デフォルトの名無しさん [2016/05/29(日) 23:14:39.98 ID:Cf71caC3.net]
- 「構造化で十分」って言うなら構造化による構成を提示して欲しいよな。
設計手法って問題を整理して、考えを明示して関係者と共有することが大きな目的であって 構造化だろうが、オブジェクト指向だろうが基本は一緒。 機能的な固まりをきれいに整理して、疎結合を実現するというのはどの手法でも目的になっているし。
- 928 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:14:43.33 ID:1ogDAOAr.net]
- >>911
あーまず要件を定義してからな
- 929 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:14:44.37 ID:hqWpcQ8C.net]
- >仕様の変更や追加に強くなるから
空気を読まずに言うと データ型(クラス)がどういうインターフェースを実装するのかってのを データ型の定義時に決めなきゃいけない静的型付けのOOPより データ型が実装しているインターフェースを後つけで拡張できる型クラスのほうが仕様の変更や追加に強いのではなかろうか つまり手続き型でオブジェクト指向で関数型なRust最強という事だ
- 930 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:17:54.53 ID:1omdCt5G.net]
- mixinか
- 931 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:17:56.58 ID:RrRCCmyQ.net]
- まあ将棋のルールは固定されてるから
やはり処理速度がどうとか抜きにすれば OOより関数型が向いてるかもしれないね
- 932 名前:デフォルトの名無しさん [2016/05/29(日) 23:18:07.91 ID:Cf71caC3.net]
- >>914
言語的にそれを許されたからって楽になるものじゃない。 変更する前には設計して、変更して、テストしてってやるのはどんな言語でも一緒。 変更を楽にするのは正しい設計。
- 933 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:20:12.27 ID:1omdCt5G.net]
- 今回どんな変更があるのかが要件に入ってないんだよね
- 934 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:20:17.48 ID:hqWpcQ8C.net]
- >>911
簡単だと思わないしむしろ難しいと思うが しかし >手が進むと局面が増えるのはどうやって管理する? >手と局面の関連付けは? >手の分岐もおそらく管理する必要がある。 >手の生成、局面の評価、手の選択の機能の連携は? >マルチスレッド対応もある。 これももうアルゴリズムのお話でoopプログラミングの手法で解決するものではなないでしょう
- 935 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:23:30.65 ID:hqWpcQ8C.net]
- 追記
将棋みたいに計算機をガリガリ使う計算って 並列化にはcpuよりGPGPUを使うものだと思うんだけど そうするとますますオブジェクト指向の付け入る隙はなくなるなぁ
- 936 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:27:16.56 ID:hqWpcQ8C.net]
- ググってみるとクラスタリングか
PC1台に限定する意味ないから当たり前だった
- 937 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:29:06.15 ID:1omdCt5G.net]
- 規模の話がでてたけど
別な視点で考えるとプログラマが10人いたとして 全員が一つのソースファイルを同時にプログラムすることはできないから どのように分割するか、という話になるのだろうか
- 938 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:29:20.83 ID:RrRCCmyQ.net]
- 計算速度と戦うタイプのソフトを作るのにOOは向いてない
ターン制のRPGやカードゲームみたいなのの方が向いてる ゲームルールがすごい複雑でしかも仕様変更されうるもの
- 939 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:32:07.51 ID:E1aQWpks.net]
- 将棋ダメ
オセロだめ トランプだめ テトリスだめ シューティングゲームもだめ PRGも作れません シミュレーションも無理です OS?無理ですね ドライバ?向いてません ミドルウェア?処理速度がー Web系?用途が違うんで 組み込み?ありえないでしょ
- 940 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:36:17.35 ID:1omdCt5G.net]
- Web系なんてほぼ全部MVCやん
- 941 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 23:38:45.16 ID:RrRCCmyQ.net]
- いやRPGやシミュレーションは作れるでしょ
なぜ作れないと思い込んでいるのか?
- 942 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:09:08.89 ID:8pkfhQuv.net]
- 例にするRPGのルールを誰が決めるんだ?
非現実的なので却下。
- 943 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:09:39.22 ID:Fopy0H2h.net]
- >>926
ゲームは向いてない
- 944 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:25:30.42 ID:j9NktVXe.net]
- 3Dゲームで使われてるUnrealエンジンのAPIとかもろオブジェクト指向前提だが
- 945 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:25:41.59 ID:MwTEJuIp.net]
- ゲームは向いてないってのは、確かにそうかもしれない
特にアクションゲームは普通のアプリと比較しても オブジェクト同士の相互作用がとても多いし、プレイヤーもそれを求めてプレーしている以上 ゲームの面白さに直結しているので減らすわけにはいかない これをまともにオブジェクト指向の流儀にのっとって設計すると メッセージの投げ合いだらけになって、だれがどこで何をしているのかわからなくなって バギーになる可能性がある ところがオブジェクト指向が便利な場面もあるから、そのサジ加減が難しい題材という意味では 非常に良いかもしれないが、将棋以上に荒れるのは必須 荒れない範囲で書くなら、大きく分けて ・描画エンジン ・サウンドエンジン ・物理エンジン ・入力処理 ・ロジック処理 ここまでは問題ないだろうが、ここから先の細かいことを言い出すと荒れる 描画エンジンとサウンドエンジンと物理エンジンと入力処理に関しては、わりと決まりきったことを機械的にするだけなので 問題ないだろうが、ロジック処理はかなり個性が出るというか荒れる
- 946 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:30:09.97 ID:AVs/GCxh.net]
- 夢は語るが
現実を逃避する オブジェクト指向?
- 947 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:34:19.68 ID:j9NktVXe.net]
- でもゲームエンジンなんて根底は
ダブルディスパッチというかVisitorパターンでしょ
- 948 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:37:55.36 ID:ND1XxSGp.net]
- >>928
むしろゲームにこそ向いている
- 949 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 00:57:53.90 ID:RhU6P4T4.net]
- 規模というより粒度の問題。
荒い粒度でならオブジェクト指向するのは当然だろうけれど、細かい粒度でも同じ事やったら 明らかにオーバヘッドで性能がでない。 で、「粒度による」ってのが人それぞれというか経験的なものでしかないので 共有が難しいってこと。
- 950 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:24:41.28 ID:ewV/OC7O.net]
- >>905
> どう作ってもクソにしかならない > オブジェクト指向ってダメなのかもしれんね そういう結論に持っていこうとする 意図があからさま過ぎたが、正体ばらしたかw
- 951 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:25:30.03 ID:ewV/OC7O.net]
- >>909
> 仕様の変更や追加に強くなるから どういった理由で? 特定の場合にしか当てはまらない設計をすることは 仕様の変更や追加に弱くなる。
- 952 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:30:01.13 ID:ewV/OC7O.net]
- 例の奴の設計がクソだっていうのは、
役割の分担じゃなくて、 処理の分担になっているって所。 こいつは恐らく検索処理はどんなものであっても 検索処理コンポーネントにまとめるに違いない。
- 953 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:08:47.31 ID:MwTEJuIp.net]
- 俺的には処理の分担で良いと思うがな
もっと言えば機能の分担で良いと思う
- 954 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:12:13.65 ID:ewV/OC7O.net]
- それでいいよ。オブジェクト指向的に言えば
一つのクラスの中で処理(メソッド)を2つに分ける。 どうせ思考ロジックなんてデータ構造も必要な処理も そのロジックに最適化された形で決まるんだから、 それらは「思考ロジック」という役割にまとめるしかない。
- 955 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:14:00.77 ID:ewV/OC7O.net]
- ちょっと訂正
それでいいよ。オブジェクト指向的に言えば 一つのクラスの中で処理(メソッド)を 幾つかに分ける。 別に2つに限定する必要はなかったねw
- 956 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:14:49.89 ID:MwTEJuIp.net]
- いやだから、思考ロジックという機能にまとめればよいのでは?
- 957 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 03:19:59.83 ID:ewV/OC7O.net]
- >>941
だから最初からそう言っている。 オブジェクト指向的に〜とかいう話をしてるから、 一つのクラスにするって話になるってだけ。 思考ロジック部分をインターフェースだけ決めて そのインターフェースを実装する形にすれば 思考ロジックを切り替えやすくなるからね。 と言っても「思考ロジックを切り替えられるようにする」という 要件は明確には出てない。これはこっちのギリギリの譲歩で 無理やりオブジェクト指向の枠内に入れただけ。 ゲームでは難易度調整で思考ロジックの切り替えは当然あるだろうし、 強いAIを作るための研究であっても、別々の思考ロジック同士を 戦わせるってことはあるだろうしさ。
- 958 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 08:11:02.74 ID:ekC4cwoE.net]
- 荒れるので要件の定義をせずに設計するの禁止
- 959 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 10:28:51.98 ID:rIAW5ZZo.net]
- >>819
これは流石にお粗末だと思うし、設計が未熟な新人ならもう少し謙虚になるべきだと思う
- 960 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 11:47:28.04 ID:8pkfhQuv.net]
- >>939
OCPに違反した劣悪な設計
- 961 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 11:58:04.55 ID:PEEN5NGh.net]
- OCPって広く長くリリースされてる有名ライブラリなら意味あるのかも知れないけど
規模も小さくプログラマの質も低いそこらのプロジェクトじゃ意味無いよな きっちり動くのだけ残すべきだし、継承なんて安易にするもんじゃない
- 962 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:04:11.10 ID:8pkfhQuv.net]
- 将棋ソフトにはオブジェクト指向が向かいない厨はAperyがオブジェクトを使っていることを知ったら
小便漏らして泣き出しちゃうの?
- 963 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:32:24.29 ID:ND1XxSGp.net]
- >>927
これはよく分からん スレで例にする話なら ドラクエとか既存のRPGでいんじゃね
- 964 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:59:01.99 ID:g392/VKX.net]
- 向かないのは、将棋ソフトじゃなく思考ロジックな
すきあらば話をすり替えようとしてるの、 バレバレだw
- 965 名前:デフォルトの名無しさん [2016/05/30(月) 13:17:27.81 ID:8pkfhQuv.net]
- >>949
間違いを明確に指摘されても分からない突き抜けたバカ Aperyを確認したら
- 966 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:31:40.52 ID:23kor2oM.net]
- >>947 aperyのソース読んでねえなお前。
aperyのソースのうち、classは18個ある。ちなみにenumは22個。 classのうち継承を使っているのは4個で、親は全て標準ライブラリからのもの。 このうちメソッドを追加し
- 967 名前:ただけのものが3個。
virtualを使っているクラスはThreadのみで、実装も1つだけ。 メンバ変数として他のクラスを保持しているクラスはMovePickerのPositionのみ。 Positionクラスも含めその他の全ては構造体+メソッド。他のクラスも同様。 aperyはC++をbetter Cとして使っている。オブジェクト指向で設計したものではない。 具体的にはテンプレート、演算子のオーバーロード、クラスの使い方も構造体に付随する関数をまとめるというもの。 オブジェクト間の相互作用も無いしクラスの階層構造を使ったコードの再利用も外側のごく一部だけ。 ますます例として不適切だと分かるわな。 [] - [ここ壊れてます]
- 968 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:44:44.86 ID:eYr/WPsF.net]
- apery読んでも手続きだなぁとしか思えん
- 969 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 14:57:17.60 ID:eYr/WPsF.net]
- https://github.com/HiraokaTakuya/apery/blob/master/src/position.cpp#L69
ここらへんなんてオブジェクト指向としてみたら糞だよね enumをswitchで判定してreturnで値を返すってのは パターンマッチって感じでむしろ関数型プログラミングに近い
- 970 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:26:25.89 ID:W9xaEvpV.net]
- いるよね。
switchをオブジェクトにしたがるやつ。
- 971 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:28:07.91 ID:3FEoI+9e.net]
- classを使えばOOP!
ん〜学生さんは気楽でいいなぁ〜
- 972 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:30:09.07 ID:ekC4cwoE.net]
- ああ邪魔だな
switchで書かれていれば一覧になっていて一目瞭然なのにワザとか馬鹿なのか知らないけど 抽象化されてて全部で何種類処理が分かれてるのか分からないの
- 973 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:39:10.62 ID:ILfmqIwk.net]
- このスレ面白いなw
次スレたつのかね
- 974 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 15:49:54.27 ID:cLUfCSU4.net]
- 何種類あるか意識する必要があるなら負け
- 975 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 16:48:44.47 ID:ekC4cwoE.net]
- >>958
どうやってテストしたのか言ってごらんよ
- 976 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:36:35.20 ID:8pkfhQuv.net]
- クラスは1つ、分けるのはおかしい!そもそもクラスじゃない!オブジェクト指向で設計するのは不可能!
ってバカな主張はさすがにやめたんだw
|

|