programming

Part 16.メモリレイアウト(9)

■ 論理的なクリアの手法 ・可変長配列可変長配列の場合、配列のサイズ(どこまで使用しているのか)をどこかに格納しておき、そのサイズを0にすることにより論理的なクリアが出来る。さきほどから何度も出てきている文字列のクリアも同様である。 このとき配列…

Part 15.メモリレイアウト(8)

いま、普通のzero fillによるクリアとこのクリアとの違いを明確にするため、「文字列本体をzero fillする」手法を「物理的なクリア」と呼び、Lengthにゼロを代入することによりクリアする手法を「論理的なクリア」と呼ぶことにしよう。 物理的なクリアは目に…

Part 14.メモリレイアウト(7)

さて、「クリアする」という部分に焦点を絞っていこう。 以前、あるマジシャンが「東京タワーを消す」というマジックを披露した。ネタは簡単だ。最初にビルの屋上で、机と椅子に腰掛けてランチをしている親子と一緒に東京タワーを撮影する。実はその親子はエ…

Part 13.メモリレイアウト(6)

「プログラマは自分で好きなようにルールを作ることが出来る」とは言っても最低限守らなければいけないことはある。ゲーデルの不完全性定理を持ち出すまでもなく、ルールは無矛盾(consistent)でなければならない。(これについての哲学的な問題は、柄谷 行人…

Part 12.メモリレイアウト(5)

結局、プログラマは自分で好きなようにルールを作ることが出来る。メモリの使用のされ方について好きなように設計できる。頭のなかでルールを思い描いたあとは、実際にそのルールに基づいてコードを書いていけば良い。 頭のなかで思い描いた様子がコードとし…

Part 11.メモリレイアウト(4)

ushort Length; UCS2 StringBody[31];ただし、結局のところ、上のようにたかが2行のコードであっても必ず相手に伝わるとは限らない。 このたった2行のコードですら、暗黙的に読み手のプログラマの経験や知識に頼っているからだ。

Part 10.メモリレイアウト(3)

しかし、第三者からしてみれば、UCS2 moji[32]の先頭の2バイトが文字列長を表していて、格納できる文字列の最大長は31文字だなんて想像がつくだろうか? 出来ることならそういう特殊なルールを定めるべきではないし、特殊なルールを定めたならばそれを可能な…

Part 9.メモリレイアウト(2)

いま、文字列長を表現するfieldを追加したとしよう。 class UCS2String { typedef ushort UCS2; ushort Length; UCS2 moji[32]; } この文字列をクリアするにはどうすれば良いだろうか? moji[32]すべてをzero fillする必要はない。単にLength に 0 を代入す…

Part 8.メモリレイアウト(1)

いま、UCS-2で32文字を格納するために64byteを確保したとしよう。 この確保されたバッファに本当に文字が32文字格納されている保証はどこにもない。 むしろ、そこにUCS-2で格納されている保証すらない。すべて0かも知れない。 typedef ushort UCS2; UCS2 moj…

言語の進化

よく勘違いされるが、進化と進歩はまったく違う。進化によって、必ずしも環境に適応していくとは限らない。 たとえば、ラマルクが唱えた用不用説を考えてみよう。「よく使う器官が世代を重ねるごとに発達し、反対に使用しなくなった器官は次第に退化する」と…

PSPで漫画を

紙媒体のオンライン化を推進する私にとって、漫画をパソコンで、というのは必然的な流れである。欲を言えば、PSPのような携帯マシンで漫画が読めるとなお良い。そのためには、PSPの解像度の低さをClearTypeで補う必要がある。 ClearTypeの原理:*1 http://www…

JaSST’05行ってきた!

前日まで発表内容が準備できておらず、発表内容を考えたのが当日の深夜4時で、そこから徹夜で発表用のスライド作って..時間がなくてリハーサルもなーんもなしで、もう発表前になって頭がこんがらがって思ったことを思ったまましゃべった。 こんなんで大丈夫…

いまどきのデバッグテクニック

そういや、JaSST: ソフトウェアテストシンポジウム(http://www.swtest.jp/symposium.html)の一日目(http://www.swtest.jp/jasst05timetable-1.html)の最後。 「S5-B-2 《45分》 いまどきの デバッグテクニック やねうらお (やねう企画)」 の「S5-B-2」の文…

ゼログラ発売

ついにryoko本が出た。(→id:ryoko) 「ゼロからはじめるグラフィックスプログラミング」というタイトルになるのかと思ったら、最終的には「フルスクラッチによるグラフィックスプログラミング入門」(asin:479800958X)になったようだ。 私はレビューをしたので…

Part 7.変数の定義域(7)

一般的に前判定で書くのが辛いということがわかれば、変数の定義域をわざとある程度余裕を持たせておく、というのは現実的なプログラミングだと言える。 たとえば、通常、byteの範囲しか取らないとしても、これをintで計算する価値は十分にある。たとえば、…

まじかよランクイン!

cbook24の2004年度の売り上げランキングで5位に入ったらしい。 http://www.cbook24.com/pubinclude/sales2004/ このランキングだけ見れば美咲本はCodeReadingよか売れてるかのように見えるけど、インターネット先行で売れるタイプの美咲本と、書店で売れるタ…

JaSST: ソフトウェアテストシンポジウム

JaSST: ソフトウェアテストシンポジウム(http://www.swtest.jp/symposium.html)が迫っている。(via 結城先生のところhttp://www.hyuki.com/tf/) というか、これ、id:mikamamaさんに誘われて、なんか私も出ることになってるんだけどな..。タイムスケジュール…

D言語パーフェクトガイド

本屋でちらっと見た。見るに耐え難い内容だった。 そもそもD言語がパーフェクト(完成版)になっていないのに、パーフェクトガイドも何もあったもんじゃないと思う..。

Game Programming Gems 3 日本語版

もう出ないのかと思っていた日本語版がいまごろ出たらしい。(via : id:NyaRuRu:20041224#p2) 例によって値段が高い。3も4も英語版なら半額程度で買えるのに..。 そんなわけでGems5英語版を予約しとこう。(2005年2月10日発売?)

16進数シューティング

id:yaneurao:20041215で、16進数シューティングのことを言ったら、id:ABAさんが作ってくれたんですよ、奥さん!! 0xEDB0←ゲーム名らしい id:ABA:20041218 なんじゃコリャー!!!(絶叫)

16進数でテトリス

id:yaneurao:20041213で16進数とドット絵との関係について語ったところ、16進数でテトリスはどうか?(id:chamekan:20041213#p1)という意見をもらった。 うひゃーこれいい。最高!是非是非、誰か作ってください。(´д`)人オネガイ たぶん、16進数テトリスをや…

16進数←→2進数

16進数から2進数へ変換する。これは、アセンブラ上がりのプログラマならば誰でも出来る。そもそも、対応は16コしかないから1分もあれば覚えられる。..とぐらいに軽い気持ちで思っていた。しかし、よくよく考えてみると、そう簡単でも無いんじゃないかと気づ…

ソフトウェアの名前

自分が何かアプリを書いたとしよう。その名前を命名するときが来た。 なるべくたくさんの人に覚えてもらえる名前がいいだろう。 「般若波羅蜜多」とか「南無妙法蓮華経」とか論外だ。漢字が多すぎる上に、なんて読むのか宗教の人しかわからない。「天にまし…

Part 6.変数の定義域(6)

do { do_something(); // ループ脱出条件にかかわる何らかの演算 // (ただしこのループ脱出後に、ここでの演算結果を用いることは // ないものとする。)} while (!success);言うまでもなく、これは後判定である。これを前判定に書き換えることは難しい。do_s…

Part 5.変数の定義域(5)

ちょっと用語が紛らわしかったようで、補足から入りたい。 私の「前判定」「後判定」と呼んでいるのは、for(int i=0;i

MIDI inputによるキーボード入力(2)

まず、左右どちらの手でもすべての文字が等しく入力できるようになっていて欲しい。また、ピアノ独自の同時押しも活用したい。それでいて、あまり無理のある横移動は勘弁して欲しい。同時押しと言っても、G7sus4(11,13)とかそういう無茶区茶なのは嫌だ。せめ…

MIDI inputによるキーボード入力(1)

朝、布団から出るのが億劫になる季節がやってきた。私は、朝は布団のなかで団子虫のようになりながらノーパソでDVDを見ている。おかげで見ようと思って買いためてあったDVDが次々消化できちゃう! 昨日見たのは、戦場のピアニスト(ASIN:B0000896HN)だ。内容…

Part 4.変数の定義域(4)

前回、ループの条件は後判定になることが多いということについて書いた。 いま、次の列挙体について考えてみよう。enum A { x,y,z };列挙体Aすべての要素に対して何らかのアクションを行ないたいとする。foreach構文のようなものがあれば良いのだが、不運に…

Part 3.変数の定義域(3)

for文にせよ、while構文にせよ、条件を満たすまでループを行なうためのものである。 たとえば以下のループ構文について考えてみよう。 while ( a<=p && p<= b) 変数pが区間[a,b]の範囲にある間、ループする。もう少し違う言い方をすれば、この区間[a,b]を集…

クォータービューの描画順の問題(6)

結局、このクォータービューの描画順の問題は、painter's algorithmとして古くからいろいろな手法が考案されている。昔は、メモリやマシン速度が不足していたので本当に3Dで計算せずに、2D上の描画段階でごまかすことが多かったので、昔のほうが議論花盛りで…