2004年11月08日

newは不要でしょ。


private void button1_Click(object sender, System.EventArgs e)
{
localhost.Service1 MyWS = new localhost.Service1();
localhost.CustDS MyDS = new localhost.CustDS();
MyDS = MyWS.GetCustomers();
dataGrid1.DataSource = MyDS.Customers;
}



こんなソースを、MSのサイトで見かけましたが、2行目の new は不要でしょう。
これ、OO初心者がよくやる間違いですね。
2行目と3行目を一緒にして、
    localhost.CustDS MyDS =  MyWS.GetCustomers();

とすべきですね。
まあ、.NETは、GC がサポートされてるから、メモリーリークすることはありませんから実害はないんですが、初心者を導くべきコードがこれでは困ったものです。
  

Posted by gushwell at 14:54Comments(0)TrackBack(0)C#

2004年11月05日

C#プログラミングレッスン No.013 を発行する


今回の「C#プログラミングレッスン N0.013」では、「定数は、値を変更できない変数のようなものです」と書こうとしたのだけれど、ここで、ちょっとキーボードを打つ手が止まりました。
「定数は、値を変更できない変数のことです」だと、意図することは伝わると思いますが、C#では、readonly 変数があるので、混同してしまいますし、実行時に値が求まるようなイメージになってしまうので、あまり良い表現ではありません。なので、「ようなものです」と曖昧な表現で逃げたのですが、これも、ちょっとなー、ということで、手が止まったわけです。
他の人はどんな表現をしているのだとろうと、いくつかのWebサイトを参考に、今回は、
「プログラムの中で変化しない(定まった)値に名前を付けたものです」
という表現にしました。
MSDNには、「定数式は、コンパイル時にすべて評価されます。」と、定数と変数の違いをさらっと説明しています。まあ、これでも十分なのかもしれませんが、プログラミング初心者には、これでは何のことか解らないのかな、とも思います。
正確に書こうとすると難しくなり、やさしく書こうとすると意味が曖昧になってしまいます。文章を書くのって難しいですね。
  
Posted by gushwell at 12:07Comments(0)TrackBack(0)メルマガ

2004年11月04日

「歌う鳥」の脳、人間の言語能力を解明する手がかりに


WIRED NEWS によると、ある種の鳴禽類(めいきん)類[songbird:スズメ目スズメ亜目の別称]は、脳のサイズがほんの米粒大から大きくてもピーナッツほどしかないのに、一生のうちに数百ものメロディーを習得できるのだそうです。代表的なのがカナリアですね。
この驚くべき能力に目をつけ、新しい歌を作る能力のメカニズムを解明する研究をしている科学者たちがいるそうです。脳が小さいぶんだけ、歌う能力が鳥の脳のどこに存在するのかを特定しやすいということで、これらの脳の解明ができると、人間の音声言語の仕組みの理解や、さらには動物が新たなニューロンを発達させたり、ものを記憶したりするメカニズムの謎の解明に役立つ可能性があるということです。
いつかは、これらの研究が、人工知能に結びつくことがあるのかな。良い成果が出るのを期待しています。
ところで、僕の家で飼っているインコは何目なのか調べたら、スズメ目ではなく、インコ目で違う種別らしいです。電話の音やブザーの音を良くまねしますが、人の声の真似はあまり得意じゃないです。
  
Posted by gushwell at 12:51Comments(0)TrackBack(0)news

2004年10月29日

人気blogランキング


人気blogランキングでプログラミング部門23位にランキングされていました。上位のblogと比較するとまだまだですが、23位というのは嬉しいですね。
たぶん、まぐまぐから「C#プログラミングレッスン」を発行したのが影響しているのだと思います。
  
Posted by gushwell at 22:57Comments(0)TrackBack(0)雑談

2004年10月28日

DateTimePickre の Value プロパティ


DateTimePickre の Value プロパティって、日付/時刻が設定されているんですね。てっきり、時刻は、00:00:00 が設定されていると思っていました。
ちょっと、調べてみたのですが、DateTimePickerのFormat プロパティが Long の場合(他の値では調べていません)には、日付を選んだ時の時刻が入るわけではなさそうです。かといって、DateTimePickerが生成された時刻が入るわけでもないし、ちょっと不思議です。
DateTimePcikerを生成し、何もしないときに、Value プロパティを参照すると、Valueプロパティを参照した時刻が設定されるようです。参照するたびに時刻が変っていきます。しかし、一度、DateTimePicker をマウスで操作し、日付を変更すると、時刻は変らなくなります。そんな変な動きをさせずに、時刻は常に 00:00:00 にしてくれれば良いのにね。
でも、これって、Win32API側の仕様? それとも .NET Framework の仕様? どっちなんでしょう。いずれにせよ、日付の比較や日数差を求める場合にバグが入り込む危険がありますから、
DateTime dt = dateTimePicker1.Value.Date;
のように、日付だけを持って来るコーディングをした方がよさそうです。
  
Posted by gushwell at 19:00Comments(0)TrackBack(0)WindowsForms

2004年10月27日

プログラミングの良書100冊!


日経ソフトウエア2004年12月号に「プログラミングの良書100冊!」という特集が載るそうですが、ここで紹介されている100冊がどんな本なのか、見てみました。僕が読んだ事があるのは、18冊、1冊は途中で断念、4冊は、手元にあるけどまだ読んでいないもの、という内訳でした。これが多いのか、少ないのか分かりませんが、僕としては、「リファクタリング」をここに加えてほしかったな、と思います。
  
Posted by gushwell at 09:04Comments(0)TrackBack(0)