最近は

久々にがっつりJavaを書いたりしてるのですが。JavaといったらJava "VM"の人なので、Java"プログラミング"としては1.4でとまってるんだよなー。アノテーションとかジェネリックスとかワケワカンネってかんじ。プログラミング言語的にはPerlかCかRしか通常使わないので、javaのしち面倒くささといったら・・・!型があるのがそもそも面倒だし、ジェネリックスを実装してる割にはtypedefがないとか片手落ちだし、演算子オーバーロードはないし・・・。Java5でprintfが実装されて喜んだのもつかの間、"\n"がご丁寧に0x0Aなのね!Windowsでは\r\nにしないとダメとか・・・ねーよwwwって感じ。プラットフォーム非依存ならその辺気をきかしてくれ・・・。いちいちSystem.getProperty("line.separator")するのも面倒でしょう・・・。

と、いろいろと文句を言いながら書いてたのですが、慣れてくると悪くない。融通のきかなさには相変わらず辟易するけど、PerlとかRが便利すぎってことで我慢することにした。Javaのいいところといえば、Eclipse使いやすいね!あれは超便利。IDEとか使わない人だったけど、こりゃー便利だわ。ていうか、こういうIDEがあってこそのJavaなんだなあと実感させられましたよ。

使いにくいと思ってるのは、ほかの言語感覚でJavaを使うからで、Javaとしてtypicalな書き方をすれば使いやすいんだとは思うんだよなー。その辺のベストプラクティスってなかなかWebには載ってないので、そういう意味では不便だ。

Perlではよく使う、ハッシュに対して何かするときも、これほど違ってくる。

for(Iterator i=map.keySet().iterator(); i.hasNext();){
    String key  = (String)i.next();
    myData data = (myData)((myObject)map.get(key)).method()
}
foreach my $key (keys %map){
    $data = $map{$key}->method;
}

キャストがめんどくせえええええ!
そのためのジェネリックスのはずなのに、プリミティブには使えないとか変な制限があるしなー。やっぱJavaはわかりませんわ。

落ち着いたら勉強結果をupdateしてみようかな・・・。