C++

beyond the Modern C++ Design

C++

C++のtemplateについて古典と言えば『Modern C++ Design』であって、「これを読まずしてtemplateを語ることなかれ」というぐらいバイブル的な本だ。(とは言うものの、実際のところこんなに変態的なtemplate駆使したプログラムを書かれても保守が大変で困るん…

Boost C++ Library

そんなわけで、C++プログラマ必携である「Boost C++ Library」(ASIN:4798007862)が手元に届いた。http://www.kmonos.net/pub/BoostBook/ いまごろ買ったのかよ!と言われそうだけど、実はこの本、私はreviewしていたので、秀和システム様からいただいたのだ…

携帯開発用言語(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++、あるいはその逆をうまく変換することが出来れば理想的なのだが、ポインタの問題ひとつとってみてもそう簡単な問題ではない。 そこで…

boost本が出るらしい

稲葉さん*1が温めていたboost本がついに発売だそうだ。(ASIN:4798007862) http://www.kmonos.net/wlog/38.php#_1245040501 そういや、以前、秀和のなかのひとが、内容レビューしてくれたら1冊差し上げますよって言ってたのに、知らない間に発売になってて!…

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の資格試験やら何やらがあるが…

ネイティブコンパイラの善悪

C#を始めとして.NET系のcompilerはネイティブコードを生成できない。VC++(Visual C++)だけはネイティブコードを生成しようと思えば出来る。思うのだが、VC++でネイティブコードを生成できる以上、マイクロソフトの手にかかれば、C#であろうが、VB(Visual Bas…

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が導入され、いよいよ本格的に足並みをそろえた感もあ…