2009-09 << 2009-10 >> 2009-11

2009-10-03 (土)

Webシステム開発に使われる言語にこそ,まともな型チェックが必要だと思う.明らかに間違った引数を与えているのに,テストしてみる時まで気づかないなんて.

あと,クライアントから渡されたURLの引数とかが,printで標準出力に出せたり,SQLなどの文字列に埋め込むことが出来る型に入っているというのは,ちょっとおかしいと思う.せめて,PerlやRubyの汚染モードみたいなのが無いと危険だと思う.

PHPへの愚痴です.

*お酒飲んだら体調悪くなった

sangoが東京にいるらしいので,meshi,goto,safii,gazyuあたりで集まって上野のキリンシティで飲む.

*オブジェクトは参照で

C++で

class Test : public Object<Test> {
public:
    Test(Test *o):Object(o){}
    Test():Object(self){}
    struct _data{
    protected:
        string s;
    public:
        _data(){cout << "new Test" << endl;}
        ~_data(){cout << "delete Test" << endl;}
        int b;
    };

    Test(string s) {self->s=s;self->b=0;}
    void hello(){ cout << self->s << " " << self->b << endl;}
};

int main()
{
    Test t = new Test("world");
    {
        Test b = t;
        b->b = 123;
        t->hello();
        cout << t->refs << endl;
    }
    cout << t->refs << endl;
    return 0;
}

出力

new Test
world 123
2
1
delete Test

sizeof(Test)=4です.省メモリ.Testクラスをもう少しきれいに書けるようにしたいなぁ.

最初は,実体である_Testクラスから参照型のTestクラスを作る方針だったけど,コンストラクタを全部書かないといけないのがつらくてこっちに.はやくコンストラクタの委譲ができるようになれば,いいのになぁ.

仕方ないから,std::auto_ptrやsmart_ptrで我慢するか.