アカウント名:
パスワード:
でも最近の環境でこのようなバグが発生することは少ないのかしら?
# FORTRANでメモリの利用領域を適当に拡縮させてフラグ調整してた程度の経験しかないのでAC
逆に8ビット時代はスタックで引数送ったり、ましてや変数を置くなんてできなかったけど(再帰なんかまたのまた夢)、今はローカルのバッファを行きすぎてスタック飛ばすのがよくあったりするわけで。
32-bitや64-bitのカウンタでオーバーフロー起こすことはあまりないけど(と油断するからバグるのだが)ビットシフトだとやりがち。
厄介なのは、意図的にオーバーフローさせて上位ビットを0や1に固定するイディオムもあるので、意図的なのかバグなのか見た目では判断しづらいところ。
32bitカウンタなんて100Mhzクロックで回したら1分しないでオーバーフローを起こすけどね。
32ビット60Hzだと2年と3ヶ月ちょっとで一周する。
1/60秒毎の割り込みで++されるuint32_tなグローバルなカウンターを用意して、画面のフェード処理とか色んな演出の進度はそれで管理する、という仕様のゲーム作成に参加してた事がある。
これ、カウンターが一周回ると表示が乱れるよな、と気になって計算して、2年以上ならまあいいじゃん、という設計なのかと納得した。一応、20フレームでフェードアウトする予定が2年3ヶ月かけてのフェードアウトに引き延ばされてしまうような不具合もおきかねないんだけど。
うちが編み出した特殊なテクニックってことは無かろうから、2年と3ヶ月か、int32_tなら1年と1ヶ月ちょっとの間、動作指せ続けると何かが起こってしまうゲームは結構あるんじゃないかな。
こんなげーむにまじになっちゃってどうするの -
この前、株価が32bitの最大値を超えて問題になった記事がありましたね。
メモリがとにかく無かった時代のプログラム手法で、8ビットのカウンター用ワークで使わないビットをフラグビットとして使うなんて今はしないよね。それと今は変にフラグ管理するとデータベースとの相性が悪いっていうのもあるので、昔ほど必須のテクニックでは無いような気がする。
ビットのフラグは今でも大量にあるでしょ。単に「回数」とかの横に置かないから足されるバグを心配しないだけで。キチキチに詰めておいても、型を正確に扱えばコンパイラがはねてくれるし。
最近は富裕層のプログラミングだからw逆にこういう経験少ないので学ぶところが多いんだけど他人の間違いから学ぶスキルがないと学べない
今だとDBの設計で同じことをやってしまう学んでいれば避けられる可能性高くなるはず#パルプンテからの学ぶとか名前付いたりしてw
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
プログラミングの初歩で学んでおきたいバグ (スコア:0)
でも最近の環境でこのようなバグが発生することは少ないのかしら?
# FORTRANでメモリの利用領域を適当に拡縮させてフラグ調整してた程度の経験しかないのでAC
Re:プログラミングの初歩で学んでおきたいバグ (スコア:2)
逆に8ビット時代はスタックで引数送ったり、ましてや変数を置くなんてできなかったけど(再帰なんかまたのまた夢)、今はローカルのバッファを行きすぎてスタック飛ばすのがよくあったりするわけで。
Re:プログラミングの初歩で学んでおきたいバグ (スコア:1)
// とかいいつつバッファオーバーランでいろいろやらかすのもまた乙
Re: (スコア:0)
32-bitや64-bitのカウンタでオーバーフロー起こすことはあまりないけど(と油断するからバグるのだが)
ビットシフトだとやりがち。
厄介なのは、意図的にオーバーフローさせて上位ビットを0や1に固定するイディオムもあるので、
意図的なのかバグなのか見た目では判断しづらいところ。
Re: (スコア:0)
32bitカウンタなんて100Mhzクロックで回したら
1分しないでオーバーフローを起こすけどね。
Re: (スコア:0)
32ビット60Hzだと2年と3ヶ月ちょっとで一周する。
1/60秒毎の割り込みで++されるuint32_tなグローバルなカウンターを用意して、画面のフェード処理とか色んな演出の進度はそれで管理する、という仕様のゲーム作成に参加してた事がある。
これ、カウンターが一周回ると表示が乱れるよな、と気になって計算して、2年以上ならまあいいじゃん、という設計なのかと納得した。一応、20フレームでフェードアウトする予定が2年3ヶ月かけてのフェードアウトに引き延ばされてしまうような不具合もおきかねないんだけど。
うちが編み出した特殊なテクニックってことは無かろうから、2年と3ヶ月か、int32_tなら1年と1ヶ月ちょっとの間、動作指せ続けると何かが起こってしまうゲームは結構あるんじゃないかな。
Re: (スコア:0)
こんなげーむにまじになっちゃってどうするの -
Re:プログラミングの初歩で学んでおきたいバグ (スコア:1)
この前、株価が32bitの最大値を超えて問題になった記事がありましたね。
Re: (スコア:0)
メモリがとにかく無かった時代のプログラム手法で、8ビットのカウンター用ワークで使わないビットをフラグビットとして使うなんて今はしないよね。
それと今は変にフラグ管理するとデータベースとの相性が悪いっていうのもあるので、昔ほど必須のテクニックでは無いような気がする。
Re: (スコア:0)
ビットのフラグは今でも大量にあるでしょ。単に「回数」とかの横に置かないから足されるバグを心配しないだけで。キチキチに詰めておいても、型を正確に扱えばコンパイラがはねてくれるし。
Re: (スコア:0)
最近は富裕層のプログラミングだからw
逆にこういう経験少ないので学ぶところが多いんだけど
他人の間違いから学ぶスキルがないと学べない
今だとDBの設計で同じことをやってしまう
学んでいれば避けられる可能性高くなるはず
#パルプンテからの学ぶとか名前付いたりしてw