« プロジェクトリーダーやマネージャに問われる能力は何か? | トップページ | Ruby関西勉強会に行ってきた »

2005/10/07

.NETよりもJavaの方が面白い

 .NETは面白くないなー、と違和感を感じつつやってます(m_m)
 オブジェクト指向設計とか、AAfNによる3層構造とか、Webサービスとか、技術的には面白いのですが、Javaと違うなーという点がすごく多すぎな気がしてます。

【1】オブジェクト指向をやっているという感覚よりもWindowsAPIを必死に覚えている感じ

 C#、ASP.NET、VB.NETをやると、確かにプログラミングはオブジェクト指向っぽいけれど、何か感覚が違う。
 昔C++をやっていた頃、C++をやっているのではなく、MFCライブラリを必死に覚えているのと同じのと同じ感覚に近い。
 プロパティ、イベント、デレゲート、属性、など、Javaよりも優れている部分は確かにある。
 でも、フォームを作って、コントロールをペタペタ貼り付けて画面を作っていく操作に、オブジェクト指向設計を意識している人は多いのだろうか?

【2】.NETは、昔のVBで作ったC/Sシステムの置き換えの延長にあるから、ややこしい

 レジストリに登録したり、COMを使ったり、仮想ディレクトリを設定する時にセキュリティレベルを考慮したり、Windows特有の環境構築が面倒なことが多い。
 つまり、昔の遺産(VB資産)があるので捨てられないのではないか? 実際の案件でも、過去にVBやAccessでやっていたシステムを.NETで置き換えるシステム開発は多い。。
 .NETを使う最大の理由は、VB資産を再利用できる所にあるからだろう。
 でも、ネックになるのは、COMじゃないだろうか? .NETで作ったDLLは、Javaのjarのように自然に使えるのに、COMだと使いづらい。
 Javaなら、過去の古い資産はないから、簡単なのかもしれない。

 MSツールの理想系は、C/Sシステムではなかろうか?
 リッチクライアントはその流れにあるのではないか?
 C/Sシステムは、本質的に2層構造にならないか?
 以前のASP(VBScript)のシステムは、開発者が設計を意識しないと2層構造のアーキテクチャになり、ぐちゃぐちゃになる。
 ASP.NETは、AAfNのおかげで3層構造を意識させられるけれど。

【3】何故、いちいちコンパイルするのに、必ずビルドボタンを実行しなくてはならないのか?

 Eclipseを使っていた人から見ると、保存(Ctrl+S)でコンパイルしてくれなくて、いちいちビルド(F5)を幼くてはならないのは、違和感がすごくある。
 プログラミングは、やっぱり書きながら、ああだこうだと考える部分が多い。だから、リファクタンリングをよくするけれど、その作業はサクサクやってほしい。考える作業を邪魔する作業はなくして欲しい。
 こんなことを感じるのは、かつてVBでえらい目に遭った僕だけだろうか?


 僕がJavaに惹かれるものは、「なぜJavaにこだわるのか」の記事と全く同じ。
 Javaを突き詰めることは、IT業界の最新技術を追いかけるのと同義。オブジェクト指向をマスターすることにつながるし、更には、開発プロセスやオブジェクト指向設計、デザインパターン、ビジネスモデリングまでつながる。すごく面白い。
 Javaには「愛嬌」がある。全くその通り。興奮させられる所がある。
 オープンソースを探してみれば、Javaの方がはるかに多いし、ERPやプロジェクト管理など、とてもフリーとは思えない業務システムも転がっている。
 全ては、プログラマがJavaの潜在力を知っていたから。

 .NETやJavaを比較すると、開発環境もプログラミング・スタイル以上に大切であるように思う。
 丁度、SmallTalkでも、ガベージコレクションなどオブジェクト指向開発環境が表裏一体であったように。

|

« プロジェクトリーダーやマネージャに問われる能力は何か? | トップページ | Ruby関西勉強会に行ってきた »

日記・コラム・つぶやき」カテゴリの記事

プログラミング」カテゴリの記事

コメント

初めまして。今都内女子大の情報数理学科に通うsaoです。
学校のプログラミングでJavaをやっていますが、いまいち・・・・で苦痛になってます。
でも必修なので必死にやってます。
上達する方法ってなにかありますか?
ひたすら、やるにもどうしたらいいのかわかりません。
いいアドバイスいただけたらうれしいです。

投稿: sao | 2005/10/08 16:38

SAOさん、こんばんは。
Blogを拝見させて頂きました。
バンドをやっているんでしょうか? 
勉強もバイトもバンドもやって生活が充実していて羨ましいなあ、と思いました(m_m)

さて、Javaが上達する方法ですが、僕も教えてもらいたいぐらいです。
SAOさんが求めている答えが何なのか、分かりませんが、以下、僕の想像で書いてみます。

1.プログラムを書く前に、書きたい処理をきちんと明確に分割していますか?

プログラミングに慣れていない人は、書きたい処理を逐次実行、条件判断、繰り返し処理の3つへ分解できませんが、SAOさんは大丈夫でしょう。

プログラミングの経験が浅い人は、書きたい処理を一つのメソッドでダラダラと長く書いてしまう人が多い気がします。
#うちの会社の新人も、100行以上のメソッドを書いていた。コラ!

1メソッドのステップ数が多いと、下記のような弱点があります。
a.書いた後に読んでも、ロジックの流れを追いかけにくく、理解しにくい。
b.テストパターンが増えるため、バグが混在しやすい。

メソッドの行数は10ステップ以下になるように、メソッドを分割しましょう。
このテクニックとしてリファクタリングがありますし、テストプログラムから先に書くテスト駆動という手法があります。
僕のIT本棚にリンクしてある
「リファクタリング:プログラムの体質改善テクニック」「バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発」を読んでみてはいかがでしょう?

2.プログラムは、コンピュータの動作に関する箇所と、実際に動かしたい処理の箇所の2つを分けて書く

コンピュータの動作に関わる箇所(配列操作、スレッド等)は、Javaならライブラリとして提供されており、あまり細かい内容を知らなくても書けますので、活用しましょう。
実際に動かしたい処理(いわゆるロジックそのもの)をどう書くべきか、に意識を集中できるように、プログラムの構造をきちんと分けましょう。


投稿: あきぴー | 2005/10/09 00:52

以上ですが、他にも色々あるかも。。

情報数理学科でJavaを勉強しているのは、IT業界へ就職する時にアドバンテージになるので、努力すれば必ず役立つと思いますよ。頑張って下さいね。

#関係ないですが、MIXIに入ってますか?
#分からないことがあったら、MIXIを通じて連絡してもらっても構いません。

投稿: あきぴー | 2005/10/09 00:55

遅くなってしまいもうしわけありませんでした★
予約語とか、そういった型にまで疑問を抱いてしまっていて・・・。
ただ、成績を取りたくて、期限までに提出しなくちゃとあわてるまま半年が過ぎ去りまして・・・・
後期単位を落とさない為にも、少し参考図書とか読みつつ、うまく処理を追える達人になろうかと、がんばりはじめました☆
せっかく浪人までして大学入ったんだし☆
ちゃんとマスターしないとですよね☆
沢山ありがとうございました☆
どうにもならなくなった時には助けてください!
m(^ _ -)m ☆  sao

投稿: sao | 2005/10/10 16:50

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: .NETよりもJavaの方が面白い:

« プロジェクトリーダーやマネージャに問われる能力は何か? | トップページ | Ruby関西勉強会に行ってきた »