デザインパターンのうち、誰でも無意識のうちに使っているデザインパターンというのは意外に多いものです。これらは基本中の基本かもしれません。
- テンプレートメソッド
- ナルオブジェクト
- ファクトリ
しかし、ナルオブジェクトは自然と思いつくかと言うとちょっと難しいような気がする。オブジェクト指向に慣れていて知ると使いたくなるという感じはする。ファクトリもそれに近いかな。やっぱりnew演算子でインスタンスは作るよなぁ、何も言われなければ…
デザインパターンのうち、誰でも無意識のうちに使っているデザインパターンというのは意外に多いものです。これらは基本中の基本かもしれません。
しかし、ナルオブジェクトは自然と思いつくかと言うとちょっと難しいような気がする。オブジェクト指向に慣れていて知ると使いたくなるという感じはする。ファクトリもそれに近いかな。やっぱりnew演算子でインスタンスは作るよなぁ、何も言われなければ…
「第1回 Javaパフォーマンスチューニングのルール」という記事を見つけた。HP-UXを対象としているような感じだが、参考になりそう。JavaVM Performanceで紹介した記事が秀逸なので、どっちがいいかというと微妙だけど。
それで、実はJava Performance Tuning News(日本語版)もかなり充実していたりする。Sunから公開されている「Java HotSpot/パフォーマンス」もいいかもしれません。
Matzにっきからの情報ですが、デブサミ2005 (2日目)に「オブジェクト脳をなぜ作るのか」という話があったようです。とっても疑問なのは、従来のプログラムって手続き型とか関数型とか論理型だったのですが、これらはあまり人間にとって理解しやすいものではなかったと思います。実際のところ数学にある程度強くないと理解するのに時間がかかって、人を選んでいたと思います。一方、オブジェクト指向は現実にある物からプログラミングへアプローチできるので、理解しやすいという気がしています。
なので、「オブジェクト脳」をわざわざ作るってどういうことなんだろうか?、と疑問に思うわけです。コンピュータよりの考え方しかできなくなってしまった人間に対して、人間らしさを取り戻せ、と言っているような感じもしてしまうのですが…
また、コンピュータプログラミングの教育においてオブジェクト指向の「たとえ話」で「つばめ」や「すずめ」は「鳥」で同じように「鳴く」というようなことをするのが良いのか、良くないのか、ということもたまに聞くのですが、これがプログラム初心者にとって問題になっていることなのか、というとなんとなくそうではないと思ったりします。まず最初に、学校で情報の勉強をしている人には、プログラムができる人(2割ぐらい)とできない人(8割ぐらい)がいて、次にプログラムができる人はオブジェクト指向で考えた方がわかりやすい人(1割ぐらい)と手続き型で考えた方がわかりやすい人(9割ぐらい)がいるような気がするわけです。ということで、「プログラムができる人を9割ぐらいにする方法」を開発することができたら、会社はじめられるんじゃないか、と思うわけです。まぁ、この話はとりあえずこれくらいにしておきます。
次に、プログラムができる人には、なぜ手続き型で考えた方がわかりやすい人が多いのかというと、学習の順番として先に手続き型を勉強してしまって、それにある意味毒されてしまったからではないかという推測をしています。それで、手続き型に慣れてしまった人には、コンピュータプログラムと関係ない抽象的な話をされても、興味が持てないから、コンピュータプログラムと関係ある具体的な話をした方が良いわけです。
しかし、本当のプログラミング初心者としては、そもそもプログラムはどうやって作るかもわからないので、あまり具体的な話をされても結局わからないはずなのです。それで仕方がないので基本的なプログラミングの話を最初にするのですが、このときにどうしても手続き型に近い話をすることになるので、初心者を「手続き型に慣れた人」に育ててしまうことになります。これが、いけないよなぁ、と漠然と思っています。なんというのか、「オブジェクト指向プログラミング」をプログラミング初心者へすんなりと教える方法論がまだまだ熟成されていないのだろうな、と個人的には思っています。いや、もちろんドリトルやNigariやRobocodeやCodeRaceやBlueJのように、色々あるんですけどね、決定打にはなっていない気がするんです。
ちょっと騒がしい環境で書いているので、話がまとまらないのですが、まぁ、こんなことを考えたのでメモとして残しておきます。
昔、「九州地方は面白い」と結構有名なJava開発者に話を聞いたことがあったが、今年の5月に出張で情報処理学会の研究会へ参加したときに、それを実感した覚えがある。最近は「みかまま」さんの日記もよくチェックしているのだが、実に楽しそうにしている(なんか、今は限界に達していて風邪で倒れているようですが、お大事に)。
こちらの地元でJavaイベントをやりたいなぁ、と思ったことは何度かあるのだが、下手に首都圏に近くなってしまったのであまり盛り上がらなさそうなため、話をしたこともない。ということで、お隣の県はSunと協力して「 岐阜県にJavaの一大拠点が誕生、サンもサポートへ」というようなニュース性のあることをやっているのを見て、羨ましいなぁ、と思っているのが関の山という感じだ。
なぜ、このようなことを急に書いているかというと、「Java Seminar in Fukuoka」というエントリを読んでいるからなのだが、このように地方でも技術者の熱気があるところは楽しそうでいい。こちらの地方は製造業が強くて、その影響力が根強いせいか情報分野で芽が出てくる会社というのは少ないと感じている。仲間を増やしていきたい所なのだが、これからも頑張るしかなさそう。
最近は自分のことで手一杯なのだが、何とかもう少し大きな視野を持っていろいろなことができるようになりたいと考えている。
Sun CEOが語る「Javaをオープンソース化しない理由」
JCPとSolarisのオープンソース化との差異は何か。
IBMの例としては、IBMはPCについては組み立てと流通をしてただけでコア技術を握っていたわけではないと言っている。これは1つのキーとなる視点かな。
Sunの石原さんがブログを開始したということで、トラックバック!
英語でブログするなんて、さすが、の一言。
たまにはJava語で書いて欲しいけれど、贅沢は言えないので続けてください。
Mr. Ishihara had started blog.
He wrote entries in English, and it’s great.
I wonder if he wrote in Java language in some day.
Anyway, I hope he continues blog.
面白そうな記事を見つけた。対比させるべきなのは.Netだと思うのだが、なぜかWindowsを持ってきているあたりに、広告色の強さを感じた。ちょっとした感想を述べておく。
Ref:Webアプリケーション・プラットフォームとしてWindowsを選択する7つの理由<前編>
前編では、次の項目について解説をしている。
たしかに、リッチクライアント開発へ業界が移行すると、デスクトップアプリケーション用開発環境が充実しているWindowsは、開発環境としては魅力がでてくるのかもしれない。ただし、それと実行環境としてはどうか、というのは別に分析しないといけないだろう。実際、JBossなどはWindowsでも動作するようになっているので、「Windows+.NET Framework/Linux+フリーJavaの構造」の図は恣意的であるように見える。IISだとOSの選択肢が少なくなるという点をわざとぼかしているのではないだろうか。また、読者にはJBossはLinuxなどのUNIX系でないと動作しないという誤解を与えかねない。知っている人が読めば、そういう問題は起きないが、きちんとした比較をしようとするときは、こういった点には神経を使って行うべきだと思うので、ちょっと残念だ。