2003-11-01から1ヶ月間の記事一覧

まだかなまだかな〜

『ヴィルトのコンパイラ構成法(Niklaus Wirth著・滝沢 徹/牧野祐子訳/アジソン・ウェスレイ・パブリッシャーズ・ジャパン株式会社)』ISBN:4795297061発送が1週間延びた。やっぱ手に入らないのかな……。

Welcome to D world

ながらく巷の間で、といっても私とチーム仲間の2人ですけども(ちっとも巷じゃないよ!)、ホットなプログラミング談義は「いつになったらやねうらお(師匠)は次世代言語とやらの開発を始めるのか!?」という物でした。当然羨望と期待を込めて、ですよ。…

さて、ではMix-inとはなんでしょうか。

Mix-inは方法論であり、クラス実装上の技術の事です。多重継承を行う代わりに、単一継承と、Mix-inクラスと言う、決められた形式で実装されたクラスを継承をする事をMix-in継承と呼びます。以下の2つの条件を果たしたクラスがMix-inクラスと呼ばれます。・…

Mix-in(2)

C++

前回多重定義がもたらす問題点をいくつか挙げました。どれも致命的な問題では無く、プログラマが細心の注意を払えば回避できる所です。が、そもそもなぜプログラマがそんな事に注意を払わなければならないんだという文句があるわけです(笑) Javaでは単一継…

で、なにがいいたいのかと言うと

1で書いたダイアモンド継承の問題は、読んでいただければわかるとおり「ダイアモンド継承が起きる(または起きない)危険性をどこかで処理しなければならない」という点にあります。しかし、これは実装上の問題であって、プログラマ考慮する事では無いと思…

4愚痴(笑)

C++やってりゃわかると思うんですが、多重継承で実装を再利用するタイプのコードを書いてると、インターフェイスベースのJavaと違って、実装が散逸してしまって非常に可読性が低いコードが出来上がってしまいます。え? 俺が悪いの?(笑)

3複雑さ

1,2を見てもらえばお分かりかと思いますが、多重継承は(プログラマ)にとって大変複雑な物です。ただでさえツリーのように継承図が出来てしまう上に、ダイアモンド継承*1があると継承図がグラフ化してしまうためより複雑になってしまいます。正直、誰か…

2名前衝突

これは多重継承とは別に存在する問題だと思うのですが一応 複数のクラスを継承して新しいクラスを作りたいとします。この時、個々のクラスにおいて同じ名前のメンバがあった場合、名前衝突になります。実際問題として、外部からこのメソッドを呼び出しても、…

1 ダイアモンド継承の問題

クラスAから派生したクラスA1とA2があるとして、このA1とA2を多重継承したクラスBを作った場合、このような継承の形を(継承のパスがひし形になる事から)「ダイアモンド継承」と呼びます*1。 話はちょっとずれてキャストという物についてちこっと説明します…

Mix-in

C++

最近(?)のオブジェクト指向の流れの一つにMix-inという技術があるのですが、いまいちなんの役に立つのか良くわかってませんでした。言語によって"Mix-in"自体の意味も異なるようだし。で、最近Rubyの本読んでてこのMix-inの説明があり、自分的に納得でき…

タスクベースプログラミング言語

最近友人と「コンピュータゲーム専用のプログラミング言語というのは可能か?」という話をしていました。これはゲーム用のライブラリルーチンが豊富という意味ではありません。そういう類の物なら良質な物が多数発表されています。 サウンドノベルなど、ジャ…

最近買った本

『プログラミング言語C第2版』 いわゆるK&R本(カニ本という蔑称もある)。基本中の基本なのだろうが、今更という気がして持って無かったので一応買いました。『プログラミング言語理論への招待(Bertrand Meyer著・酒匂 寛訳/アスキー出版)』ISBN4-7561-…

日本語プログラミング

さて、日本語識別子をC++で使う為には障害がいくつもあります。なんせ、言語仕様で対応していない訳ですから^^; 1:コンパイルできない 2:1に対応できたとしてもデバッグできない 3:エディタ上でインテリセンスが効かない 1や2は致命的なのでなに…

yane3rd フレームワーク解析(1)

これはInsideYaneSDKに載せる記事の草稿ですwinmainが呼び出されてから、終了するまでのyane3rdの流れを見ていきましょう。解析する際に注意する点(誰に注意しているんだ?)2ndと異なり完全なマルチスレッドモデルになっている。 インターフェイスを多用し…

で、なにが言いたいのかというと

cpp

この"pipe"なり"dup2"なりはどこでも見かける関数なんですが、C標準ライブラリには含まれていないのです。誰が定義しているんでしょうか? と思っていたのですが、これPOSIX*1の1部のようです。なるほどー。 *1:UNIXシステムが採用しなければならないAPI群…

pipe exec dup2

cpp

上にあげた関数は、子プロセス制御とか、プリミティブレベルアプリケーション間通信とかに使われる物です。今わざとわかりにくく書きましたが^^;、乱暴に言えば、アプリケーションAが、"fputs()"とかで標準出力に値を吐いた時に、これを別のアプリケーシ…

クラス内の一つのメソッドでしか使われない変数を、他のメソッドから隠蔽する手段がC++には存在しない

cpp

と、思うのでしょうがどうでしょうか。staticにするとアプリケーション全体で1個の変数になってしまいますし。これは内部関数とは違うからinner classイディオムでも解決出来ないよなあ……。こういう粒度になってしまったらクラスを一つ作るべきなのかなあ(…

どうでもいい話

今更言うのもなんですけど、この日記は勉強日記なので、断定的に書いてある所にも間違いが多数あるかと思います。もし気づかれた方は教えていただけると大変助かります^^;

共通モデリング言語

UML

ようやくというかなんというか、ついにUML2.0が正式公開されます。2004年4月に。……あと半年ね。 みはえるは、UML1.0は、プログラムの作図について国際標準が出来た点では評価しています。しかし、構造の厳密性、図同士の相互変換性などの問題から、プログラ…

C++からADOを使う

VC

C++からADOを使う必要が出てきました。ADOとは"Active Data Object"の略です(多分。ActiveXではなかったような……)。マイクロソフトが提供する汎用データアクセスエンジンで、データベースなどにアクセスする場合に「VBでは」良く使われます。大変良く出来…

gccが吐くエラーの中で

gcc

"non-POD"だとかいう言葉があって、どういう意味か解らなかったのですが、ちゃんとISO C++で定義されている用語なのだそうです(これ日本語訳されてるのかな……。JISハンドブックとかに載ってるのだろうか)http://www.kmonos.net/alang/cpp/glossary.html"Pl…

それにしても

「プリコンパイル済みヘッダーの検索中に〜」でぐぐって来る人が本当に多い(2003/11/01の日記に対処法を書いています)。日記のタイトルをコレにしちゃおうかと思うくらい(笑)。みんな苦労してるのね……。

プログラマさんに100の質問

http://park6.wakwak.com/~umui/ans100/pg/index.html に回答しようと思ってがんばって書いたのに、スクリプトがエラー返して数時間分のテキストが吹き飛んだ。自分で質問つくっちまうぞコラ(笑)。

続き

gdb

試しにちょこちょこ〜とソース追って言ったら単にstdout(標準出力へのハンドル(≒ポインタ))経由でメッセージを吐いてるだけみたい(爆)。さすがCプログラミング。stdoutなんてそれを何に使うのかもしらないよ(笑・へたれすまそ)。 そうなると、中のア…

こういうのを対話型アプリケーションと言うのか?

eclipse+CDTとgdbの間に割って入って、お互いがやりとりしているメッセージをログに落とすツールを作ろうと思っています。なんの役に立つかは聞かんといて下さい。俺が知りたいくらいです^^;。それにしても、このやり方がわからない。 これから作るツール…

覚書き

gdb

GDB/MIモードは、"gdb --interpreter=mi"で起動する

Antは

ant

Another neat toolだそうですね

で、何が言いたいのかというと

cpp

「何故「河童」なの?」です^^;。 よくみたらちゃんと書いてありました(ごめんなさいごめんなさいごめんなさい)CppUnit Pre Process Aid(CppUnitのプリプロセスでの補完)みはえるは「cuppa」と書いてあると「クッパ」としか読めない駄目日本人なので、…

河童プロジェクト

cpp

日本屈指のC++メーリングリストcppllのメンバの皆様によって進められている、C++用のユニットテストサポートツール開発プロジェクト「河童」というのがあります。 http://www.unittest.org/cuppa/

覚書き

一度閉じたC++のプロジェクトは「「C/C++ development」のパースペクティブ」の画面からは再度開くことが出来ません。「リソースパースペクティブ」に画面を移せば、メニューの「プロジェクト>プロジェクトを開く」から実行できます。