yojikのlog

yojikのブログです

JavaのDateとかCalenderまわりの使いづらさ

日付時刻の扱いにJavaの難しさが凝集されている
JavaのCalender周辺は、まわりくどくて使いづらいくて必然性が感じられない、典型的な悪い設計の例だと思う。オブジェクト指向の良いところを全く活かせてない。そのわりに職業プログラマが結構使う部分だから性質が悪い。
このへんのライブラリ*1って、今は亡きTaligent社から引き継いだものという話を聞いたことがある。Taligent社はアップルとIBMが共同で設立した会社。モダンなオブジェクト指向OS(WikipediaによるとC++ベースで)を作ろうとして大失敗した会社である。そのころのアップルは何しても失敗してたらしい。*2
TaligentのOSは、アプリケーションの概念が消えて、すべての文書がコンポーネントの組み合わせとして構成されるという先進的なものだったらしい。今でいうマッシュアップみたいな感じ?
でもこんな日付ライブラリ使ってるようじゃプログラマはさぞ大変だったであろう。
ちなみにTaligent社はDolphin-Smalltalk*3のModel-View-Presenter FrameworkのC++版みたいなのを作ってた。このドキュメントを読んだことがあるけど、これが本家と違ってまどろっこしくてよく分からん感じだった。
動的言語で作られていない昔のフレームワークは、無駄に間接層が多く複雑で、柔軟性を確保してるようで結局意味無いというものが多い気がする(偏見)。このへんの設計センスを受け継いだ、ちょっと昔のJava系Webフレームワークが使いづらい原因になっていると思う(これも偏見)。
結論: 人は過去に復讐される

*1:メインは国際化まわり

*2:多分OpenDoc辺りに成果は活かされたのかな。

*3:ここらへんはあんまり詳しく無いです。。