C++
C++のtemplateについて古典と言えば『Modern C++ Design』であって、「これを読まずしてtemplateを語ることなかれ」というぐらいバイブル的な本だ。(とは言うものの、実際のところこんなに変態的なtemplate駆使したプログラムを書かれても保守が大変で困るん…
そんなわけで、C++プログラマ必携である「Boost C++ Library」(ASIN:4798007862)が手元に届いた。http://www.kmonos.net/pub/BoostBook/ いまごろ買ったのかよ!と言われそうだけど、実はこの本、私はreviewしていたので、秀和システム様からいただいたのだ…
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…
携帯の複数のデバイスをサポートしようと思うと、たいていJavaとC/C++の両方のコードを書かないといけない。JavaからC/C++、あるいはその逆をうまく変換することが出来れば理想的なのだが、ポインタの問題ひとつとってみてもそう簡単な問題ではない。 そこで…
稲葉さん*1が温めていたboost本がついに発売だそうだ。(ASIN:4798007862) http://www.kmonos.net/wlog/38.php#_1245040501 そういや、以前、秀和のなかのひとが、内容レビューしてくれたら1冊差し上げますよって言ってたのに、知らない間に発売になってて!…
クラスの名前をファイル名とするファイルを作ったり、雛形を書いたりする作業は、普段のプログラムでも作業時間の1,2割を占めているだろう。まして、リファクタリング作業を行なうときなど、ほとんどがどこかのクラスのメソッドを別のクラスに移し変えるだと…
Togetherは体験版なので、適用できるパターンが限られているものの、クラスのメソッドをこちらのクラスからあちらのクラスに移動させたりするのはdrag & dropで行なうことが出来る。(体験版では出来ない?) クラスのテンプレートをUML図の上にマウスでドロッ…
昨日、久しぶりに講義っぽいことをした。ホワイトボードの代わりにOffice One Noteを立ち上げ、タブレットで画面に殴り書きながら説明をするという方式を採用した。 これが意外とわかりやすいし、聞くほうがノートをとらなくとも電子的に記録が残せるのでな…
そんなわけで、たったひとりのためだけに教材を用意した。構想は以下のような感じだ。 いまどきのしとが、いつまで経ってもポインタあたりでつまずくのは、計算機アーキテクチャが理解できていないからだと勝手に決めつけ、アセンブラレベルから出発し、つぎ…
VS2005ではUMLによるモデリングは採用されないということで、BorlandのTogetherを導入してUMLを用いて設計していくべきか、VS2005が出て市場が落ち着くまで静観すべきなのか容易に結論が出せなくなってしまった。 そこで、Borland Togetherの体験版をインス…
昨日、いずれUMLを用いて開発していかなければなる、と書いたばかりだが、気になるニュースがあるので紹介したい。 「Whitehorse」は、Windowsソフトウェア開発に革命を起こすか? - CNET Japanhttp://japan.cnet.com/news/ent/story/0,2000047623,20064465,0…
世のなかUMLでの設計・開発がさかんに言われて来ている。やねうらおも、時代の趨勢には逆らえないので、いずれは否応なしにUMLを用いてモデリングを行なわなければならないと考えている。 UMLの表記自体は別段難しくはない。UMLの資格試験やら何やらがあるが…
C#を始めとして.NET系のcompilerはネイティブコードを生成できない。VC++(Visual C++)だけはネイティブコードを生成しようと思えば出来る。思うのだが、VC++でネイティブコードを生成できる以上、マイクロソフトの手にかかれば、C#であろうが、VB(Visual Bas…
私の一昨日の日記 http://d.hatena.ne.jp/yaneurao/20040406#p1 に対して次のようなコメントをもらった。 サーバアプリケーションにJavaが多いことを考えると int32にペナルティーの付くプロセッサがこれから開発されるとは 思えないのですがいかがでしょう…
C言語に代表されるような関数型言語には、たいてい整数型(int型)がある。これが何bitであるかは言語系で違う。また処理系でも異なるかも知れない。C言語では、int型は実装依存であり、その処理系でもっともパフォーマンスの優れているbit長である。ふつう、3…
さて、携帯のような省メモリ環境におけるGCのまずさを書いたところで、Windowsマシンのようにふんだんにメモリのある環境でのGCの挙動について考えていこう。まあ、メモリがふんだんにあるとは言ってもビデオメモリのようなリソースは限度があるので、unmana…
長々と書いてしまった。全然話しが進みやしねぇ。もう、ソースコードがコンパイラの特定のバージョンを強要するのは別にあっても構わないと思う。COMインターフェースで特定のバージョンの実装を要求するのと同じである。それが叶わないならば、コンパイラを…
C++の標準もどんどん進化している。それはそれで構わないのだが、古いバージョンのコンパイラ向けに書かれたコードは新しいバージョンでコンパイルできないという事態は起こりうる。そういう事態が起こったとき、プログラマは通例FDIS/ISではどちらが正しい…
バイナリレベルでの相互呼び出しに関しては、COMでもCORBAでも、まあ何でもいいのだが、それほど実現するのは難しくはない。これと同じことをソースレベルで行なえるかというと、そりゃもう、不可能に近い。なんでか?ソースコードが特定のコンパイラ、ある…
いまだに、やねうらおはC++でプログラムを書かないといけないことがある。この状態はまだしばらくの間は続くと思う。C++は、ライブラリを部品のように使うことが出来ない。namespaceを使って書けば、名前空間を形成することは出来る。それは、部品ではないの…
FOMAのような高速にJavaを実行できるマシンにすると携帯の単価があがる、だから今後はbrew(C/C++)を採用する、というauの方針は正しいと思う。それはともかく、brewとJavaについてもう少し技術的に突っ込んでみる。brew用のアプリにキャリア側の認証が必要な…
ABAさんが昨日の私の記事についてフォローしてくださったので紹介。 http://d.hatena.ne.jp/ABA/20040324#p1 BREWの問題点は、キャリアから認定されていないアプリ、いわゆる 勝手アプリが作れないことにある。これは単なるauの方針なのか、 それともJavaの…
GC(Garbage Collector)はオブジェクトを解放する手間が不要になる。世紀の大発明だったと言っても過言ではないだろう。しかし、それが便利なのかどうかは微妙なところだと思う。実際のところ、C#やJavaでまともな(市販レベルの)プログラムが組まれるようにな…
D言語のテンプレート機構は、明示的なインスタンス化が必要になる代わりに、C++には出来ないようなことまで出来る。それば事実なのだが、それがいいか悪いかは別問題である。思えばJavaやC#にもGenericsが導入され、いよいよ本格的に足並みをそろえた感もあ…