2004年09月14日

ロビタ


富士通が、手塚治虫の「火の鳥」に出てくるロボット「ロビタ」そっくりのロボットを開発したそうです。
 「これってロビタ?――富士通が考えるサービスロボット

オフィスでの作業を前提としたロボットで、一人でエレベータにも乗れるということです。小さい頃読んだマンガの世界にまた一歩近づいたのですね。
でも、本当の意味での人工知能を持ったロボットって僕が生きているうちには出てこないんだろうな。  

Posted by gushwell at 09:20Comments(0)TrackBack(0)news

2004年09月13日

StringBuilder


<<メルマブログからの移動記事 2004.08.20>>

Cマガジン9月号の「επιστημηのオブジェクト工房」に、 「個の星(*)を返すようなstars(n);を定義する」というような話題が載っていました。 これをC#で書くと、
string stars(int n) {
    return new string('*',n);
}
となります。でも、プログラミングの勉強としては、これだと面白くありません。 では、次のコードはどうでしょうか。

    static string stars(int n) {
        string s = "";
        for ( int i = 0; i < n; i++ )
            s += '*';
        return s;
    }
C#の初心者としては、これで良いと思います。
ただ、 内部の動作を考えると、s+= '*'; のところで、インスタンスの生成と複写処理が頻発するため、見た目とは裏腹に効率の悪いプログラムとなっています。
.NETでは、このようなときのために、StringBuilderクラスが用意されています。このクラスを使えば、

    static string stars(int n) {
        StringBuilder sb = new StringBuilder(n);
        sb.Length = n;
        for ( int i = 0; i < n; i++ )
            sb[i] = '*';
        return sb.ToString();
    }
と書けます。 もちろん、実務では最初のコードで良いのですが、プログラミングの学習では、別の方法で書いて見るのも良い勉強になりますね。
ちなみに、 StringBuilderを使い、僕が最初に書いたコードを以下に示します、上のコードとの違いに注目してください。

    static string stars(int n) {
        StringBuilder sb = new StringBuilder();
        for ( int i = 0; i < n; i++ )
            sb.Append('*');
        return sb.ToString();
    }
  
Posted by gushwell at 22:15Comments(0)TrackBack(0).NET Framework

2004年09月11日

はじめまして


メルマブログから引っ越すことにしました。
よろしくお願いします。

メルマブログに書いた内容はまだそれほど多くないので、プログラミングに関する話題は、こちらに移動できればと思っています。

C#プログラミングレッスン というメールマガジンも発行していますので、興味のある方は、購読してみてください。  
Posted by gushwell at 13:46Comments(0)TrackBack(0)雑談