路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

XCode入門中

2005-09-30 20:26:50 | プログラミング
プロダクトをOSXに移植するためにXCodeの勉強を始めました。
Visual Studioにどっぷり浸かっていたせいか、いろいろ戸惑ってます。

XCodeでboostを使う (2005/09/30)
ーー> プロジェクトのInfoのBuildタブでHeader Searach Pathsを設定する

XCodeのエディタでバックスラッシュを入力する (2005/09/30)
ーー> [option] + [¥]

zlibを使う (2005/10/04)
ーー> コンパイルはできても、実行しようとすると「ZeroLink: unknown symbol・・・」とエラーが出る。
コマンドラインからgccを使って、-lzとすると大丈夫。
まだ原因不明。


VS2005RC雑感 - シングルスレッド廃止?(T◇T)

2005-09-30 17:00:44 | プログラミング
VS2005RC英語版をダウンロード、インストールしてみました。

VS.NETのプロジェクトを開いて変換、ビルドすると・・・

エラーチェックが厳しくなってます。VS.NETでは文句を言われなかったソースでしたが、VS2005は2つエラーを出しました。暗黙のintはだめ。メンバ関数のアドレスを取るには、関数名だけではだめで、「&クラス名::関数名」としろ。とのことでした。これはちょっと嬉しい。

その後、プロジェクトのプロパティを調べてみると、シングルスレッドのはずが、いつの間にかマルチスレッドに変更されています。元に戻すことができないというか、そもそもシングルスレッドという選択肢がありません。なぜだー。

まあそれはあきらめて(今のPCではパフォーマンス的にはかなり痛いけれど、一億総マルチコア時代には、まあこれが普通なのでしょう)、回帰テストしてみると、テスト通らないー。

原因は、オブジェクト解放のタイミングがVS.NETと微妙に違うことのようです。boost::formatの一時オブジェクトが早めに解放されてしまい、ヌルポインタエラーで落ちてました。

この様子だと、移行はかなり先になりそう。無理して年内に出さなくても、VS2007位でもいいですよ。それよりVistaを先にお願い。> MSの方々


C#2.0のテンプレートは期待して良い?

2005-09-30 01:33:59 | プログラミング
そろそろVisual Studio 2005 RCの足音も聞こえてくる今日この頃、気になってちょっとC#2.0を調べてみました。記事1記事2

Genericsで重要なのは、以下の3つだと思います。
1. 型のパラメタライズ
2. 特殊化
3. 型の制約記述

C++のテンプレートは1と2をサポートし、JavaのGenericsは1と3をサポートします。

2の特殊化がC++のテンプレートに取り入れられた理由は、テンプレートの「オーバーロード」(例えば、組込型とオブジェクト型で違うコードを使ってほしいといった要求に応える)を可能にするためでした。その後、特殊化は再帰テンプレートという技術に応用され、コンパイル時に計算されるコードの記述に使われることになりました。

3の型の制約記述は、テンプレートを型システムと整合させる(単なるマクロの代替として使うのではなく)のに重要な機能ですが、C++ではサポートしていません。

上述の記事を読む限り、C#2.0のテンプレートは1, 2, 3のすべてをサポートするようです。C#2.0のテンプレートがちゃんと機能して、うまくは流行れば、そのうちメタテンプレートライブラリがごそっと移植されて・・・うーん。後はMonoProjectがC#2.0に追いついてくれればなあ・・・。(MonoProject、いつの間にか、2.0の実装をほぼ完了“almost complete for 2.0”だそうです。早い。2005/10/06)

追記 2005/10/13
記事「動的プログラミング言語へと発展するC# 3.0とVB 9.0」によると、どうやら、C#3.0では、独自の道を行こうとしているようです。上記1, 2, 3にくわえて、型推論、および、ラムダやLINQといったこってりしたシンタックスシュガー。ここまでくると、本格的に、コンパイラのエラーメッセージが可読かどうか気になる・・・