2007年1月 9日 (火)

素晴らしすぎるジェネリック!

 ここのところ、身内のことでつらい日々が続いているので、ブログどころではないのだが、、、

 それでも趣味のprogramingは少しずつやってたりする。。。

 今日はその話題を少々。(ただし、プログラミングに興味のない人には全然わからないです)

 以前、VB6(Microsoft VisualBasic Ver.6)で自作アプリをつくってた。これが結構当って?ちょっとした小遣い稼ぎにもなっていたりした。今にしてみれば、なんともひどいプログラミングだった。「オブジェクト指向」なんて知らなかったから、いたるところ無駄だらけだった。もっともVB6では仕方なかったともいえるけど。

 それから4、5年間はC言語の独習やってて、基本的なC/C++の理解が出来てきて(ホンマかい!?)、一度はVC++6(VisualC++ Ver.6.0)でアプリの骨組みあたりを作ったり、ちょっとだけAPIなるものに触れたりして、いざMFCプログラミングだ~!と思ったら、あまりの複雑さと面倒くささに嫌気がさしてしまった。だいたい一日1、2時間くらいしか趣味の時間をとれない者に(しかもおバカのオレに)MFCはつらすぎたのだ。

 しか~し!VisualStudio2005が登場して、オレの上にもひとすじの光が差してきた!なにより価格が安くなった!高価なVC++6Enterpriseを買ってから数年、VS2005Standardアップグレード版で2万を切ったのだからありがたい(T_T)

 さっそくVC++2005を使ってみる。といってもMFCは無理だからC++/CLIという中間言語.NETベースのやつ。

 入門書見ながらしばらくは順調にいっていた。実は今、あるアプリ作成計画があって、青写真はかなり出来ているので、たとえネイティブC++が無理でも、C++でアプリを作りたかったのだ。なんといってもC/C++で書くというのはオレの憧れなわけで、、、

 ところが、だんだん雲行きが怪しくなってきた。クラスを作るときclassの前に変なキーワードをつけるとこまでは許せていたんだけど、Genericだとかデリゲートだとかが出てきて頭が爆発寸前になってしまった。

 せっかく、VB6時代のようにテキストボックスとかボタンとかをペタペタ貼って、イベントの中身を埋めていくという簡単便利なプログラミングが出来ると期待してたのに、変な用語が出てくるわ、おまけにクラスのメンバにアクセスするのに"."(ドット)じゃなくてポインタのように"->"(アロー)使ったりするわで、だんだん気持ちが下がってきてしまった。とくに->を入力してもたまに候補が出てくれないことがあるのはストレスになる。

 それと、オレのように素人で独習者には、どれだけ参考書が揃っているかがキーだったりするのだが、.NETフレームワークに関する本は、基本的にVBかC#を例にして書かれている。

 そんなわけで、結局はVC#でいくことにした。C++は憧れだったからちょっと残念で心残りではあったけど、結局.NETベースでしかやれないなら、それのスタンダードでいくのが無難なんだろうと自分を説得して…。

 VBはもう忘れてしまったし、C#なら文法的にほとんどCと変わらないので、VC#しかないというわけでした。

 と、単なるVC#へ至る過程を綴ったにすぎない文章でした。でもまぁ、世の中にはオレのようにド素人で「趣味」でプログラミングをやっている人もいるだろうし、言語で迷ってる人もいるだろうから、こういう話もいいかなと思いましたわけで。

 で!

 VC#------「こりぁ、むちゃくちゃ楽しい~!」よ。Genericについても結局よくわからないままになってるけど、要は「テンプレート」みたいな機能を提供する「仕組み」ってことかな?ってことで問題ない!プログラミングはとにかく「習うより慣れろ」というもので、実際にバシバシ書いて動かしていくうちに理解していくんだよね。

  1.  *( class HOGE{ int a,b; } )
  2.  List<HOGE>  hogelist  =  new  List<HOGE>();
  3.  for(int i=0; i<3; i++){
  4.    HOGE hoge = new HOGE();
  5.    hoge.a = i;
  6.    hoge.b = i*2;
  7.    hogelist.Add(hoge);
  8.  }
  9.  TextBox1.Text = hogelist[0].a.ToString();
  10.  TextBox2.Text = hogelist[1].b.ToString();

 こうして実際に書いて動かしてみると、Genericという仕組みのひとつのList<T>は、ようはT型の動的配列を作れるということが分かる。そしてT型には自分の好きな型を入れればいい。たとえば自分で作ったクラス型を。List<T>にはあらかじめいろいろなプロパティやメソッドが備わっている。Addメソッドを使ってT型をどんどん追加していける。[index]で、個々の要素にアクセスできるし、登録した個数はCountプロパティで取得できるし、Insert(index, T)で挿入、RemoveAt(index)で削除もできる。

 まぁ、本当にGenericなるものの理解が正しいのか大間違いなのかは分からないけど、こうして振る舞いが分かって実際に使えればOKなんだからね。

 あぁ、趣味のプログラミングは実に楽しい。そろそろアプリ作りに着手できそうだし。今回はVB6の時よりすっきりしたコードが書けそうなのも嬉しい。あとは~、、、UML用のこなれたソフトがあればなぁ。いくつかの体験版を使ってみたけど、いまいちだし。Illustratorで作った方が早いというのもつらいもんだ。

| | コメント (0) | トラックバック (0)