OOとゲームプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/07 23:55ID:HnYWCQK1行うことが出来るのか語り合うスレです。
0027名無しさん@お腹いっぱい。
01/11/10 03:26ID:EV3x96b1そうか?
継承するとパフォーマンスが悲惨なんだが
そんな事はないか?
0028名無しさん@お腹いっぱい。
01/11/10 03:29ID:???0029アマグラマ
01/11/10 03:33ID:???try-Ace PlayStation Foundation Class Library
とかなんか誇らしげに表示されてるのは見たですが。
0030名無しさん@お腹いっぱい。
01/11/10 03:34ID:EV3x96b1我がマシンでは数倍違う
003119
01/11/10 03:49ID:???私もOOやC++崇拝者なわけではないんだけど。
C++がCと比べてオーバヘッドあるのは事実だと思うけど、Cの手法だって
インライン関数だってインラインアセンブラだって使えるわけだし。
深すぎる継承を使わないとかクリティカルなところでは伝統的な手法を
使ってゆけば、使い物にならん、ってことはないいんじゃないかと。
0032名無しさん@お腹いっぱい。
01/11/10 03:59ID:???まさにシッタカ君
全然何も分かってないらしいな
プラットフォームとは関係ない
しょうがないから本を一冊薦めといてやる
「C++/C プログラム改善法」
ただしトッパンはもうつぶれてしまった
仕方ないので
「Efficient C++」
で代用
こちらはピアソン・エデュケーションだからまだ
売ってるだろう
0033名無しさん@お腹いっぱい。
01/11/10 04:19ID:EV3x96b1そうだとすればC++は使い物にならないという事だな。
0034名無しさん@お腹いっぱい。
01/11/10 04:27ID:lPeuTMQg0035名無しさん@お腹いっぱい。
01/11/10 04:29ID:EV3x96b1同じ会社の(クラス)ライブラリが
CとC++でそう違うものなのか?
0036とむ ◆TMwDpCZo
01/11/10 05:10ID:???相性良くないような気がしています…。
昔はいいと思ったんだけどね…。
0037_
01/11/10 05:36ID:/4YFolbK延々とグローバル関数作りまくり・・
STL無いし・・
0038名無しさん@お腹いっぱい。
01/11/10 06:46ID:???call [v_table+n]
程度じゃない?
どちらかといえば、インスタンスの生成破棄を
無頓着に行うと効率さがるよね。そんなことは
Effecient C++ レベルにでも書いて有るようなことだし。
0039名無しさん@お腹いっぱい。
01/11/10 06:56ID:???コード量が約2倍になる。コードの書き方を間違えなければ、
Cと等速のコードも書ける。
0040名無しさん@お腹いっぱい。
01/11/10 07:12ID:???一人でシコシコ作る分には無理に移行する必要無しと思われ。
0041名無しさん@お腹いっぱい。
01/11/10 09:20ID:???0042名無しさん@お腹いっぱい。
01/11/10 09:49ID:???OOを完全にマスターしているか、必要以上に使わないなら、
大丈夫かと。中途半端に使うと非効率なんで。
0043名無しさん@お腹いっぱい。
01/11/10 11:20ID:???なんとなくって書いてるところにつっこむのはアレだけど、
どのへんが相性よくないと思ってる?
0044名無しさん@お腹いっぱい。
01/11/10 12:11ID:???オレはむしろOOは中途半端がいいと思う。
業務アプリみたいに、完璧なOOPではやはり速度的に厳しいんじゃないか?
OOは中途半端にいいとこだけ使って、古いやり方をラッピング+部品化ってのが
いいじゃないか。
効果的にやるのにOOの理解は中途半端じゃ困るが。
0045名無しさん@お腹いっぱい。
01/11/10 12:15ID:lDT42030最後のはなんじゃい、ってのはナシね。アポーに言ってくれ
0046とむ ◆TMwDpCZo
01/11/10 12:47ID:???難しいなあ…。本当に感覚的な問題なんだけども…。
私は、OOPは何かを分散的に処理するのに向いているような気が
している。分散的ってのは、例えばWindowsのように、多数のタスク
を同時に動かしたりするようなものね。
で、ゲームもまさにそういう分散的なアプリケーションで、確かにそう
いう面ではOOPと良く親和する部分もあると思います。でも、ゲーム
の場合突如として様々なタスクを一元的に管理する(つまり分散的の
逆)必要が出てくる場合があります。このような時、Cのような単純な
言語に比べてちょっとめんどくさいような気がするのですよ。ほんとに
なんとなくなんだけど。
ま、C++は言語仕様上OOPというスタイルが可能になっているだけ
で、Cと全く同じスタイルで組む事は出来ますし、逆にCでもある程度
まではオブジェクト指向なスタイルで組む事も可能は可能ですから、
要は組み方の問題なんですけどね。
単に私の腕がヘボだからそう思うのかも知れません。クラスのスコー
プを考えて、何をどのファイルに入れるかで死ぬほど悩みますから(笑)。
Cの時はここまで悩まなかったのに…って。
0047名無しさん@お腹いっぱい。
01/11/10 13:19ID:lDT42030正直、私もCでゴーリゴリやっていた(今でもそう)んで、
OO的設計に馴染めない自分ってのが居る(笑)
OOに限らず、場合によっては中身が見えないハコって
不安でしょうがない(笑)
0048名無しさん@お腹いっぱい。
01/11/10 13:28ID:???>でも、ゲーム
>の場合突如として様々なタスクを一元的に管理する(つまり分散的の
>逆)必要が出てくる場合があります。
いや、俺は逆にこの辺のことをスマートにできるからOOPLがいいと思ってるんだが。
タスクって要するに抽象クラスなわけで、そういうことをするのに言語の支援が受け
られるなら、そっちのほうがいいと思うし。
まぁ、もちろん、OOは概念なんだから、実装は一番やりやすいのでやればいいんだけどね。
(Cでも、ゲーム作ってるとOOに近くならない?
>クラスのスコー
>プを考えて、何をどのファイルに入れるかで死ぬほど悩みますから(笑)。
>Cの時はここまで悩まなかったのに…って。
これは激しく同意。
宣言の順序とか考えなきゃならないときもあって激しく萎える。
C++はこれだから…。
0049名無しさん@お腹いっぱい。
01/11/10 13:35ID:???中身が見えないのはOOとは関係ないなぁ。
C++だってソース公開すればブラックボックスじゃないし、
システムが複雑になってくるとクラス図にしやすい分C++の方がよさげ。
0050とむ ◆TMwDpCZo
01/11/10 13:37ID:???まだC等の非オブジェクト志向言語での制作スタイルから脱しきれて
いないからでしょう。これらの言語を何と呼ぶのかな? 良くわからな
いけど、とりあえず私は「処理志向」なんだよね。
本来、OOPというのは、オブジェクトが先にあって、それが動作すべき
処理が従になるのが正しいのだと思います。
しかし、私は頭が古いから、実現したい処理の方ばかりに考えが行って
しまうのですね。で、例えば今動作しているオブジェクト(ここで言うオブ
ジェクトは、ゲームにおけるオブジェクトね)全てに影響する処理、など
というものを考えた時に、処理が主で、クラスが従という考え方をしてし
まうのです。ある処理のためにクラスを使おう、などと思ってしまうと、
処理がプログラム全体のあちこちに散らばっていると、問題とするクラス
をどこにインクルードするかというスコープの問題で頭を抱えてしまう
のです…。
ああ、なんか自分で書いてて良くわからなくなってしまった(笑)。
ヘボコテハンの独り言だと思って下され。
0051とむ ◆TMwDpCZo
01/11/10 13:44ID:???Cで遊んでた時は、書いたコードが、アセンブラで言うところのどんな
コードに直されるか、うっすら予測しながら書いてたよ。もちろん完璧
じゃないけどね。大体どう書けばどういうループが組まれるか、とかそん
な感じでなんとなーく考えながらコードを組んでた。提供されるライブラ
リも、何がどう処理されるかとか半分くらい予測つくしね。
でもC++の場合、パッと見で「現実にはどういう処理がなされるか」と
いうのが分かりづらいんだよね。パッと見っつーか、良く見てもさっぱり
わからない。あるコードを書いた時、どこをどう参照してどういうコード
にコンパイルされるのか、ほとんど予測つかない。
「別にアセンブラのコードを予測しなくていいよ」というのが正解なんで
しょうが、例えばハードにちょっと近い処理をしたい時に、書かれるコード
の応答性がどうかとか、メモリ管理がクリティカルになる可能性があるの
かどうか、ワイルドな入力に対して堅牢なのかどうかとか、予測つかない
と不安なんだよね…。古い人だから(笑)。
0052名無しさん@お腹いっぱい。
01/11/10 13:45ID:???はは。
俺も、まだメインループ等全体にかかわることは、OOの外だよ。
どこまでをOOにするのかは意見の分かれる処なのかもしれん。
コリジョンの処理とかどこでやろう?とか、いまだに悩むよ。
0053名無しさん@お腹いっぱい。
01/11/10 13:50ID:???たぶんそれはオブジェクト指向の「すべての対象はオブジェクトです」みたいな
理想論を見てひいてしまってる感じじゃない?
そういう理想論は結局理想であって、OOPでやっても「全てに影響する」なん
てのは「処理ルーチンをクラス化して順番に解決する」という結局本質的には
>>50のやり方と大差ないものだったりするよ。
0054とむ ◆TMwDpCZo
01/11/10 13:53ID:???>>53
そうだね、現実的に考えれば、そういった広範囲に及ぶ処理はOO
の外に追い出すのが普通だね。
でも私は理想主義者なのかな?(笑) 例えば設計時に、色んな
物を美しくクラス化して、完全なヘッダを設計したりするでしょ。
けど、結局上記のような問題にぶち当たり、仕方なくそれらのクラス
を呼び出す関数を作り、広範囲な処理時にはその関数を更に呼び
出すような仕掛けにしてしまい、「これじゃC++の意味ないじゃん!」
と机を叩くわけです(笑)。
0055名無しさん@お腹いっぱい。
01/11/10 14:27ID:???「すべてがオブジェクト」ってのはOOPL自身の設計の話なので、
(しかも言語の効率とか、複雑性とかの話なので)ちょっとちがうかも。
>>54
「すべてに影響する」ってのを実現するにはVisitorパターンを使うわけだけども、
あれは、諸刃の剣だからあぁ。
どっちにしろ、「処理」だってオブジェクトなわけで、そのように設計するかしないかは
あとは慣れだろうな。
0056名無しさん@お腹いっぱい。
01/11/10 15:40ID:Pfrth29iそら、Cよりもオーバーヘッドがあるかもしれないけど、そんなに問題にならんでしょうに。
もしなるとしたら、それは実装に問題ありと思うが。
それに、無理して全部C++で書く必要もないでしょう。
最下位レベルだけアセンブラでかけばいいのでないのか。
0057とむ ◆TMwDpCZo
01/11/10 15:58ID:???間違ってない気がするのですが…。
0058がばろん@Mたんちゅきちゅき
01/11/10 16:02ID:???たぶんCなどの言語の総称は「構造化プログラミング言語」。
C++が、どんなマシン語のコードに変換されるかは、
いちどCでオブジェクト指向的なプログラムを組んでみると、
理解しやすいんじゃないでしょうか。
たしかプログラム板のどこかのスレに、そういう話題があったとおもいます。
virtual function tableとかで検索かければ見つかるかも。
あとオブジェクト指向の内部よりな話なら下の本が、おすすめ。
「 ゲーム&&オブジェクト指向プログラミング」塚越 一雄
>>27たん。
継承より問題は多態性じゃない?
それにしたって考慮するほどのものじゃないけれど。
// スレと関係ないけど、いま名前をいれて書き込んだら
// 「ERROR:名前いれてちょ。」って言われたよ。(TT
0059とむ ◆TMwDpCZo
01/11/10 16:08ID:???>たぶんCなどの言語の総称は「構造化プログラミング言語」。
あ、いや、「オブジェクト志向」に対する言葉として何か適当な言葉が
あるのかな、と。「構造化〜」は対義語というより、C++の土台になって
る概念でしょう。
0060名無しさん@お腹いっぱい。
01/11/10 16:09ID:???> でもC++の場合、パッと見で「現実にはどういう処理がなされるか」
> というのが分かりづらいんだよね。
具体例を挙げてみてください。
分かりづらい部分が想像できないんです。
0061とむ ◆TMwDpCZo
01/11/10 16:14ID:???いや、私は頭が悪いので、ちょっといくつかのクラスを継承してると
「?」になるよ。もう中で何が行われてるかわかんない(笑)。
いや、分かる人も多いとは思うんだけどね。
0062名無しさん@お腹いっぱい。
01/11/10 16:15ID:???例外処理とRTTI
0063名無しさん@お腹いっぱい。
01/11/10 16:18ID:TY+m/yMI0064名無しさん@お腹いっぱい。
01/11/10 16:26ID:???0065名無しさん@お腹いっぱい。
01/11/10 16:28ID:???それはソースだけ見てるから。
クラス図を横に置いておけば吉。
006647
01/11/10 16:29ID:???OOって、メモリ上がどのように書き換えられつつ走っているのか
想像しにくい。
なんで?とかどこが?と言われても困る(笑)
一度抽象化された、オブジェクトの意味合い的なイメージでは
もちろん流れが掴めるけど、その具体的な処理の中身の話。
とむさんも同じではないかしら?
だからどっちがどうした、っていう話ではないので誤解なきよう。
006760
01/11/10 16:31ID:???>ちょっといくつかのクラスを継承してると
>「?」になるよ。もう中で何が行われてるかわかんない(笑)。
継承したことによって、どのメソッドが呼ばれているか
ぱっと見わからないと、そうおっしゃる
その分かりづらさは、C++だからってわけじゃないですね
#include <stdio.h>
void test0() {printf("0\n");}
void test1() {printf("1\n");}
int main() {
struct {void (*method0)(); void (*method1)();} T;
T.method0 = test1;
T.method1 = test0;
(T.method0)();
(T.method1)();
return 0;
}
こういうことでしょ?
0068とむ ◆TMwDpCZo
01/11/10 16:36ID:???(むしろ処理自体はブラックボックス化されて考えなくて良い分わか
りやすいところもある)、「実際にどういう命令になって、CPUがどういう
動作をしているか」がわかりづらい、って事を言いたいのよ。
例外処理はもちろん分かりづらいけど、それはCの頃からちょっとわ
かりづらかった(笑)。アセンブラが一番わかりやすい。
0069名無しさん@お腹いっぱい。
01/11/10 16:37ID:???まぁ、そんなに問い詰めることもなかろ。
文化の違いに戸惑ってる程度の話でしょ。
マターリいぐべや。
0071がばろん@Mたんちゅきちゅき
01/11/10 16:41ID:???んじゃ「手続き型プログラミング」
http://yougo.ascii24.com/gh/21/002131.html
007260
01/11/10 16:43ID:???> 「実際にどういう命令になって、CPUがどういう動作をしているか」がわかりづらい
class B : public A;
class C : public A;
B.virtual_method() -> (*(vtbl + 0x50))();
C.virtual_method() -> (*(vtbl + 0x70))();
こんなもんですが
>>69
マターリとこりかたまった頭をほぐしてさしあげましょう
0074とむ ◆TMwDpCZo
01/11/10 16:45ID:???気がしないでもない…。
007523
01/11/10 16:51ID:fxXO3W0oそれはそうと他人の作ったクラスを利用するのは気持ち悪い
007660
01/11/10 16:53ID:???C++ではこう書いてあるけどどういう命令になるかわからん
それがどのようなソースコードなのかをすごく知りたいんです。
0077名無しさん@お腹いっぱい。
01/11/10 16:56ID:fxXO3W0oC++はそうは行かないんだよね。
名前が似ているだけのまったく違う言語になってしまっている。
Cの単純さを備えて欲しかった
0078とむ ◆TMwDpCZo
01/11/10 17:00ID:???Cの場合は、ちょっとしたプログラムなら、向こうにアセンブラのソース
が透けて見えるでしょ。ローカルで作った変数なら、きっとこのへんの
レジスタに割り当てられるな、とか。こういう条件式を書くと、こんな形
のループにコンパイルされるな、とか。主にシングルタスクOSの場合。
多少関数を呼んだって、順次スタックに積んで下ろして、という感じじゃ
ない。
ところがC++の場合、ちょっといくつかの親クラスを継承したクラスの
場合、「どの時点で実体が確保されるか」つまり、メモリが割り当てられ、
あるいはレジスタが割り当てられたのかとかが良くわからなくなるのよ。
Cってのは、ある意味CPUが順次実行している命令のプロセスをほとん
どそのまま追っている言語だと思う。だから、実際のCPUの動作がわか
る。
ところが、C++ってのは実際に実行される順番に命令を並べているのと
はちょっと違うスタイルのプログラミングを(基本的には)する言語でしょ。
だから向こうに実際のコードが見えない、という事なのよ。
0079名無しさん@お腹いっぱい。
01/11/10 17:07ID:???ボトルネックになっている部分をインラインアセンブラで書けばいいじゃん。
008060
01/11/10 17:09ID:???> 向こうにアセンブラのソースが透けて見えるでしょ。
本当にわかってますか? 小一時間問い詰めていいですか?
> メモリが割り当てられ、
> あるいはレジスタが割り当てられたのかとかが良くわからなくなるのよ。
int a; はレジスタに割り当てられてー
char b[25]; はスタックでー とか?
Cでstruct {int a; char b[25];} t;はどう配置されるの?
008160
01/11/10 17:12ID:???> はちょっと違うスタイルのプログラミングを(基本的には)する言語でしょ。
> だから向こうに実際のコードが見えない、という事なのよ。
Cでもコンパイラによるリオーダリングはありえると思いますが
それは除いたとして
C++で実際に実行される順番が異なってしまう状態例を
あげてくれると非常にうれしいです。感激しちゃう。
0082がばろん@Mたんちゅきちゅき
01/11/10 17:12ID:???うーん>>50で、とむたん自身が言ってた「処理指向」と
手続き型っていうのは、まさに同じものだと、おもうんだけど。
いかなる言語にしても過去の有効な手法は取り入れているわけだから、
C++や、ほかのオブジェクト指向型の言語が、まったく土台に取り入れていないもので、
純粋にオブジェクト指向と対になるパラダイムなんて、ないんじゃない?
ちょうどエージェント指向に
オブジェクト指向の考え方が取り入れられているようなもので。
// 手続き型プログラミングについては、こっちのほうがわかりやすかも。
// http://www.e-words.ne.jp/view.asp?ID=2397
>>75 23たん。
実行のたびにネイティブコードにコンパイルしているJavaよりは、
C++のほうが、はるかにましだよ。(TT
// あ。ただJITやHotSpotなどでネイティブコードにコンパイルされたあとなら
// JavaはC++よりも高速という話はあるけど、ほんとかな。
0083とむ ◆TMwDpCZo
01/11/10 17:13ID:???>本当にわかってますか? 小一時間問い詰めていいですか?
まあ前にも書いたけど、完全に頭でコンパイルできてるわけでは
なくて、なんとなくだってば。小一時間問い詰められたらボロが出るよ。
あと構造体だけど、それは別にそのまんまメモリに配置されるだけ
では…。構造体の直接読み取りとかやったことない?
コンパイラによっては間にパディング入れたりするけど…。
0084とむ ◆TMwDpCZo
01/11/10 17:15ID:???思った…。うーむ。ジェネレーションの差かなあ(笑)。
008560
01/11/10 17:19ID:???そこまでわかってればC++でもおんなじだと思うんですよ
メモリだけ考えると
structとclassの違いは virtual method がある場合に
vtblへのポインタが入るかどうかだけなんだから
で逐次実行ってのはCでもC++でもかわらないので
classのコンストラクタが呼ばれるタイミングは
Cでstructを使うのとかわらない
Cにはnewがないけどmallocしたあとコンストラクタが呼ばれるだけ
008660
01/11/10 17:23ID:???じゃあじゃあ
> C++ってのは実際に実行される順番に命令を並べているのと
> はちょっと違うスタイルのプログラミング
ってどんなのか聞かせてほしいですー
0088とむ ◆TMwDpCZo
01/11/10 17:24ID:???多分私の言いたい事をわかってくれた人も何人かはいたようなので、
きっと誰かが代弁してくれるでしょう。すまそ>60さん。
0089名無しさん@お腹いっぱい。
01/11/10 17:31ID:fxXO3W0oC++ではソースコードでは明示されないポインタのやり取りとか、
プロセスの移行とかがあって気持ち悪い。
009060
01/11/10 17:37ID:???一番簡単な例はメソッド呼び出しで
インスタンスのポインタが this が行きますね
これは納得
> プロセスの移行とかがあって気持ち悪い。
これはナンゾ??
0091名無しさん@お腹いっぱい。
01/11/10 17:40ID:fxXO3W0oオペレーターとか
0092名無しさん@お腹いっぱい。
01/11/10 17:41ID:fxXO3W0o0093がばろん@Mたんちゅきちゅき
01/11/10 17:42ID:???>>86 60たん。
とむたんの言う「ちょっと違うスタイルのプログラミング」とは、
たぶんオブジェクトどうしがメッセージをやり取りして物事を処理していく
アクターモデル的プログラミングスタイルのことじゃない?
// おれドキュソだから、そこまで複雑に、ものごと考えたことないけど。
0094名無しさん@お腹いっぱい。
01/11/10 17:45ID:???なんか誤解を招きそうだな。
まるで、mallocでインスタンスを作成してもコンストラクタが実行されるみたいだ。
こんな誤解をする人間はここにはいないか…。
0095外野
01/11/10 17:55ID:???気がする。
「Cでアセンブラソースが透けて見えないと気持ち悪い」って人も、CPUの
内部動作自体は気にしないでしょ?トランジスタ1つ1つの働きとか、実際に
は気にしないし、そこまで考えたらやってられない。
OOの場合、プログラムの抽象化のレベルが上がるので、その分ブラック
ボックスとして扱わないとやってられない敷居が上がって、アセンブラレベル
の動作まで考えたらやってられないので、気にしないのが一番って事に
なるのでは?
(ちょっと例えが極端かも。ま、意味は判るのね?)
0096名無しさん@お腹いっぱい。
01/11/10 17:56ID:QW8Th0qU009760
01/11/10 18:00ID:???それはインスタンスと言っていいものなのか聞いていいですか
vtblなしのclassなら実害なし?
0098名無しさん@お腹いっぱい。
01/11/10 18:12ID:???アセンブラ上がりの人で、勝手にナニやってるかわからないってC言語嫌がる人だっているわけだし。
俺は、まあオブジェクト指向レベルは許せるかなって感じで。
当然ピンポイントでインラインアセンブラは使うけどさ。
まあ、言語のメタ化が進んできてるっとことなんでしょう。
新しいメタ化の手法が普及し始めたら、OOは許容できた俺でもキモチ悪がるかもしれない。
0099名無しさん@お腹いっぱい。
01/11/10 18:26ID:???使用する言語は関係ないと思うがどうか。
オブジェクト指向方法論に基づいてアセンブラでコーディングってのは
いまどき特別なことじゃないでしょ。
0100がばろん@Mたんちゅきちゅき
01/11/10 18:26ID:???全部たどっていったら下のレスからのリンクで
ウイルスがみつかったよ。
// もしかして全板にリンクはりまわってるの?
Jr.ファンのみなさんへお願い
http://music.2ch.net/test/read.cgi/jr/994988000/264
0101名無しさん@お腹いっぱい。
01/11/10 18:33ID:???どの部分をブラックボックス化すればいいか?
なんて事は、そこそこ分かる事なんだが・・・
なんでモジュールやデータ構造を勉強せずに、
OOPに手を出すかな?
010260
01/11/10 18:50ID:???それが
> C++ってのは実際に実行される順番に命令を並べているのと
> はちょっと違うスタイルのプログラミング
なの?
順番に命令をならべてそれがそのとおりに実行されるのは
変わってないと思うんだけど
それともあれか、C++でクラス作ってインスタンス作ると
それが勝手に並列実行されるのか?
とりあえず http://www.njk.co.jp/otg/Study/ を読みなはれ >> 93
0103_
01/11/10 18:56ID:???こんな中途半端な議論になっちゃうんだよね
意味無し
0104名無しさん@お腹いっぱい。
01/11/10 19:01ID:???そう思うんなら君も中途半端に煽らずにもっと突っ込みをいれなさい
010619
01/11/10 20:29ID:???それは解るし正論だけど、だからといってC++でのゲーム開発の有効性
の議論が無意味ってわけじゃないでしょう。
今ここでは、だれも概念レベルと実装レベルのOOを混同している人は
いない。誰が見ても明らかに実装レベルの議論でしょ。
オブジェクト指向言語についての議論だよ。
0107アマグラマ
01/11/10 20:45ID:???ちょっと複雑なだけで。
ていうか、私がC++に移行したのは、
Cで自己流似非OOPモドキ(ていうかモジュール化の延長線上か)やってて
ある日C++の仕組みについてあれこれ読んで
これ俺がやってることとまったく同じじゃ〜ん、
しかも遥かにシンプルに書ける! マンセー!って動機だったですが。
010819
01/11/10 20:51ID:???>> C++ではソースコードでは明示されないポインタのやり取りとか、
>一番簡単な例はメソッド呼び出しで
>インスタンスのポインタが this が行きますね
>これは納得
それ納得しちゃうの?
ソースで明示的に書かれていなくても、言語仕様を知っていれば
自明なことでしょう。
裏で何をやっているか本当にわからないような言語でプログラミン
グなんて不可能だと思うけど。
011060
01/11/10 21:05ID:???>それ納得しちゃうの?
んー
「C++のメソッドってソースコードに書いてないのに、
本当は引数1個多いんだよねー気持ち悪いよねー」
「うん、そーだね C言語だけの知識では想像できないね」
だしょ
> 言語仕様を知っていれば自明なことでしょう。
そりゃそのとおり
0111がばろん@Mたんちゅきちゅき
01/11/10 21:33ID:???とりあえず「オブジェクト指向入門」まで読み終わったよ。
並列実行といえば話の流れは、かわるけど、
むかしJavaでゲームに登場させるすべてのキャラに
ひとつひとつスレッドをわりふって、いっせいに動かしてみたよ。
こういう時こそオブジェクト指向は、べんりかも。
オブジェクト自身が自分の状態を保存してくれるし、
ことなるクラスのオブジェクトを同一のメッセージで処理できるし。
// ただ、それでも「順番に命令をならべてそれがそのとおりに実行される」
// というのは、おれも基本的に変わってないとおもう。
// ところで>>102のリンク。60たんのおすすめのページは、どこ?
// たくさんありすぎて、つぎなに読めばいいのか、わかんないや。(TT
0112名無しさん@お腹いっぱい。
01/11/10 21:47ID:???・モジュール
構造化プログラミングで、ある機能を有する小部分をモジュールという。
容易に交換し得るような機能単位のプログラムを指す。プログラムを
モジュール化して作れば、次のような利点があり開発効率の向上が期待できる。
1)開発時に分業化できる
2)誤りの部分発生を特定できる
3)機能改善に部分変更で対応しやすい
011360
01/11/10 21:54ID:???って感じ
自分が興味を感じたタイトルから読んでくのが吉と思われます
明日の自分は今の自分より強いですか?
0114名無しさん@お腹いっぱい。
01/11/10 21:58ID:???C++のページで半年ほど独学すれば?
0115名無しさん@お腹いっぱい。
01/11/10 22:11ID:fxXO3W0o何をって何?
C++は仕様が汚くて後々再利用するものをC++で書く気にはなれない。
>言語仕様を知っていれば自明なことでしょう。
もちろん自分で作ったものに関しては自明で大変便利な機能だが
他人のものを読む時にはくだらない労力が増える。
裏で行われているかどうかではなくて、
行われている事を調べるのが大変
継承を繰り返しているともはやあほくさくてやってらんない。
>裏で何をやっているか本当にわからないような
>言語でプログラミングなんて不可能
そんなことはない
0117名無しさん@お腹いっぱい。
01/11/10 22:17ID:???モジュールの概念は、開発時にバグを減らすための技法
覚えておけば、かなりバグを減らせる
一応、情報処理技術者試験で出るんだが・・・
0118名無しさん@お腹いっぱい。
01/11/10 22:18ID:???>継承を繰り返しているともはやあほくさくてやってらんない。
藁。もうプログラミングやめた方がいいんじゃない?
0119名無しさん@お腹いっぱい。
01/11/10 22:20ID:???0120名無しさん@お腹いっぱい。
01/11/10 22:20ID:fxXO3W0o0121名無しさん@お腹いっぱい。
01/11/10 22:21ID:???ま、そーゆー事やね。
0122名無しさん@お腹いっぱい。
01/11/10 22:22ID:???・・・それでも使っちゃう・・・♪
0123名無しさん@お腹いっぱい。
01/11/10 22:22ID:???0124 ◆XAJ1OOH6
01/11/10 22:22ID:Qp+UDwx7伝統が残っていて,どのようにソースを書けば
最適コードになるか意識するという強迫観念が
あるからコードの吐き方がイメージできないと
怖いのではないのでしょうか?
0125名無しさん@お腹いっぱい。
01/11/10 22:26ID:???でも思ってるほど、最適なコードなんて書けてないのがゲームプログラマ
■ このスレッドは過去ログ倉庫に格納されています