java

携帯開発用言語(2)

continuationを用いれば次のようにコーディングできる。 class Hoge { coroutine void some_callback_function(){ A(); yield(); B(); yield(); while (C()){ D(); yield(); E(); yield(); } F(); } // 呼び出し側 static void test(){ some_callback_functi…

携帯開発用言語(1)

携帯の複数のデバイスをサポートしようと思うと、たいていJavaとC/C++の両方のコードを書かないといけない。JavaからC/C++、あるいはその逆をうまく変換することが出来れば理想的なのだが、ポインタの問題ひとつとってみてもそう簡単な問題ではない。 そこで…

Borland Together体験記(3)

クラスの名前をファイル名とするファイルを作ったり、雛形を書いたりする作業は、普段のプログラムでも作業時間の1,2割を占めているだろう。まして、リファクタリング作業を行なうときなど、ほとんどがどこかのクラスのメソッドを別のクラスに移し変えるだと…

Borland Together体験記(2)

Togetherは体験版なので、適用できるパターンが限られているものの、クラスのメソッドをこちらのクラスからあちらのクラスに移動させたりするのはdrag & dropで行なうことが出来る。(体験版では出来ない?) クラスのテンプレートをUML図の上にマウスでドロッ…

ネットで講義を配信しちゃうぞ、と。

昨日、久しぶりに講義っぽいことをした。ホワイトボードの代わりにOffice One Noteを立ち上げ、タブレットで画面に殴り書きながら説明をするという方式を採用した。 これが意外とわかりやすいし、聞くほうがノートをとらなくとも電子的に記録が残せるのでな…

ゲームプログラムの教育

そんなわけで、たったひとりのためだけに教材を用意した。構想は以下のような感じだ。 いまどきのしとが、いつまで経ってもポインタあたりでつまずくのは、計算機アーキテクチャが理解できていないからだと勝手に決めつけ、アセンブラレベルから出発し、つぎ…

Borland Together体験記(1)

VS2005ではUMLによるモデリングは採用されないということで、BorlandのTogetherを導入してUMLを用いて設計していくべきか、VS2005が出て市場が落ち着くまで静観すべきなのか容易に結論が出せなくなってしまった。 そこで、Borland Togetherの体験版をインス…

MicrosoftはUMLを敬遠

昨日、いずれUMLを用いて開発していかなければなる、と書いたばかりだが、気になるニュースがあるので紹介したい。 「Whitehorse」は、Windowsソフトウェア開発に革命を起こすか? - CNET Japanhttp://japan.cnet.com/news/ent/story/0,2000047623,20064465,0…

UMLを用いたモデリング

世のなかUMLでの設計・開発がさかんに言われて来ている。やねうらおも、時代の趨勢には逆らえないので、いずれは否応なしにUMLを用いてモデリングを行なわなければならないと考えている。 UMLの表記自体は別段難しくはない。UMLの資格試験やら何やらがあるが…

.NETのILの仕様(3)

おまけに、CILから.NETのライブラリやら何やら呼び出すことも簡単である。ふつう、言語を自作すると言語に付随するライブラリを作ったりする作業が出てくるが、そういった、言語とは本質的に関係のない(と思われる)作業に手間暇かける必要がない。誰でも気…

.NETのILの仕様(2)

コンパイラを自作ようと考えたことのある人ならばわかるだろうが、Pentiumのアセンブラですら、レジスタ割付はかなり難しい問題だ。まして、レジスタにほとんど直交性のないプロセッサや、パイプラインを考慮した最適化をコンパイラに行なわせるのは結構辛い…

.NETのILの仕様(1)

それでは、CIL(Common Intermediate Language:(.NETで使用する)共通中間言語)について見ていこう。CILの言語仕様は、CLI(Common Language Infrastructure:共通言語基盤)に含まれる。そこで、CLIの仕様を参照するとヨロシイ。 ECMA-335: http://www.ecma-inte…

yaneuraoGameSDK.NET構想

OneNote2003のテストがてらに適当に書いてみたyaneuraoGameSDK.NET構想。 http://yaneu.com/cgi/uploader/files/yaneSDK4DPlan20040415.mht 結構いいアイデアだと思ったので、炎羅君に見せたら「落書き読めナー」と言われて大ショック。読めないのか..私の…

.NETの威力

yaneSDK4DをC#に移植されているmeiさんが、VB(VisualBasic.NET)からyaneSDK4Cs(C#版yaneSDK)を呼び出すことに成功した。http://d.hatena.ne.jp/akiramei/20040412#p1 これは素直に喜んで良いのだろうか?それというのも.NETでのクロス言語開発はそう単純でも…

GC付きの言語での大規模開発

http://d.hatena.ne.jp/yaneurao/20040410#p1で、保守的なGCでは大規模開発は難しいんじゃないかと書いたが、2chのD言語スレの反応を見ていると、どうも私の書き方がまずかったんじゃないかという気がしてきたので補足してみたい。 まず、一般的なGCの仕組み…

SunとMicrosoftとの和解

先日、SunとMicrosoftとが和解した。てっきりエープリルフールのネタかと思った人も多いだろう。そのいきさつについては、次の文章が詳しい。 http://www.microsoft.com/presspass/legal/04-02-04SunPressConference.asp文中で何度か説明なしに出てくるIPと…

conservativeなGC

BoehmのGCは保守的(conservative)なGCである。これは、root集合から辿れるならば、配列の中身すべての要素を辿ることを意味する。画像imageのように大きな配列を扱う場合、こんなことをされてはたまらない。配列の要素がでたらめな数字だと、そんなところを…

64bit processor

私の一昨日の日記 http://d.hatena.ne.jp/yaneurao/20040406#p1 に対して次のようなコメントをもらった。 サーバアプリケーションにJavaが多いことを考えると int32にペナルティーの付くプロセッサがこれから開発されるとは 思えないのですがいかがでしょう…

変数のbit長

C言語に代表されるような関数型言語には、たいてい整数型(int型)がある。これが何bitであるかは言語系で違う。また処理系でも異なるかも知れない。C言語では、int型は実装依存であり、その処理系でもっともパフォーマンスの優れているbit長である。ふつう、3…

GC付きの言語におけるゲームプログラミング(2)

さて、携帯のような省メモリ環境におけるGCのまずさを書いたところで、Windowsマシンのようにふんだんにメモリのある環境でのGCの挙動について考えていこう。まあ、メモリがふんだんにあるとは言ってもビデオメモリのようなリソースは限度があるので、unmana…

ソースコードのmodularityの低さ(4)

長々と書いてしまった。全然話しが進みやしねぇ。もう、ソースコードがコンパイラの特定のバージョンを強要するのは別にあっても構わないと思う。COMインターフェースで特定のバージョンの実装を要求するのと同じである。それが叶わないならば、コンパイラを…

ソースコードのmodularityの低さ(3)

C++の標準もどんどん進化している。それはそれで構わないのだが、古いバージョンのコンパイラ向けに書かれたコードは新しいバージョンでコンパイルできないという事態は起こりうる。そういう事態が起こったとき、プログラマは通例FDIS/ISではどちらが正しい…

ソースコードのmodularityの低さ(2)

バイナリレベルでの相互呼び出しに関しては、COMでもCORBAでも、まあ何でもいいのだが、それほど実現するのは難しくはない。これと同じことをソースレベルで行なえるかというと、そりゃもう、不可能に近い。なんでか?ソースコードが特定のコンパイラ、ある…

ソースコードのmodularityの低さ(1)

いまだに、やねうらおはC++でプログラムを書かないといけないことがある。この状態はまだしばらくの間は続くと思う。C++は、ライブラリを部品のように使うことが出来ない。namespaceを使って書けば、名前空間を形成することは出来る。それは、部品ではないの…

携帯ゲームプログラミングHells(2)

FOMAのような高速にJavaを実行できるマシンにすると携帯の単価があがる、だから今後はbrew(C/C++)を採用する、というauの方針は正しいと思う。それはともかく、brewとJavaについてもう少し技術的に突っ込んでみる。brew用のアプリにキャリア側の認証が必要な…

携帯ゲームプログラミングHells(1)

ABAさんが昨日の私の記事についてフォローしてくださったので紹介。 http://d.hatena.ne.jp/ABA/20040324#p1 BREWの問題点は、キャリアから認定されていないアプリ、いわゆる 勝手アプリが作れないことにある。これは単なるauの方針なのか、 それともJavaの…

GC付きの言語におけるゲームプログラミング(1)

GC(Garbage Collector)はオブジェクトを解放する手間が不要になる。世紀の大発明だったと言っても過言ではないだろう。しかし、それが便利なのかどうかは微妙なところだと思う。実際のところ、C#やJavaでまともな(市販レベルの)プログラムが組まれるようにな…

近未来的プログラミング(1)

D言語のテンプレート機構は、明示的なインスタンス化が必要になる代わりに、C++には出来ないようなことまで出来る。それば事実なのだが、それがいいか悪いかは別問題である。思えばJavaやC#にもGenericsが導入され、いよいよ本格的に足並みをそろえた感もあ…