2009-10-01から1ヶ月間の記事一覧

似て非なるメソッド定義

昨日の記事は何かを見間違えたらしく、まったく正確性にかけるものでした。お詫びいたします。 さて 以下のようなクラスがあったとします。 class Hoge { def foo(arg: String) = java.lang.Boolean.parseBoolean(arg) def bar = java.lang.Boolean.parseBoo…

String と java.lang.String は同じものなのか?

この記事は不正確です。無かったことにしてください。m(_ _)m Scala 2.7.5 で検証。 Scala で以下のようなトレイトがあったとします。 trait Hoge { def foo: String } それで、以下のような実装をすると怒られます。 // コンパイルが通らない class Fuga ex…

やっぱりJavaって層が厚いんだよね

「層が厚い」ってのは自分自身が積み上げたノウハウの厚さってだけで他の言語も厚いのかもしれないけど、とにかく今自分がJavaを中心とした開発でできていることを他の言語でやろうとするととてもじゃないけどやり切れないんですよ。 具体的な話をしますね。…

Whyも書け

重要なことなので何度だって言いますよ。 コンピュータシステムの仕様書を書くとき、以下の項目が文章として残されていますか? What - 何を(入力の形式) Where,Who - どこの誰が(どのコンピュータが) When - いつ(処理のタイミング。オンデマンド/バ…

再帰関数には @tailrec アノテーションを

Scala東北のMLに流れてきた記事です。後で読み返し易いようにここにもメモしておきます。 非関数型言語に慣れ親しんだ身としては、「while使わないで再帰関数使えよ」という関数型言語のスタンスを見ると真っ先に思いつくのが「言いたいことはわかるが、でか…

整数かどうかのチェックは見落としがち

Cubby の定義済みバリデーションクラスに NumberValidator というのがあります。これは、対象の値が少数であっても負の数でも数値と認識できれば OK というバリデータです。なので、正の整数だけ扱いたい場合はこれだけでは不十分だということです。 ところ…

Scala とよくあう Web アプリケーションフレームワークは?

Lift だろ常考。 なのでしょうか? Lift は Scala で作られているってだけで、そんなにいいものなのでしょうか? まだ駆け出しの私としては Lift は奇をてらいすぎてる感じがしてなりません(ORMは結構好きかも) ということで、Java の Web アプリケーショ…

本当に Scala は Java の半分のコーディング量で済むのか?

「Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)」(通称コップ本)の帯の背表紙のところに「コード量はJavaの半分以下」と書いてあります。 マジで? ということで、実験。 実験方法 みんな大好き Cubby の雛形プロジ…

Slf4J でロギング

Scala をやろうなんて尖った方は Java では Commons Logging + Log4J なんてとっくに卒業して Slf4J + LOGBack なんて構成を使っていたかと思います。 今回は、実はそれとはあんまり関係ない話で、Commons Logging でも使える話です。 Java でこんなコードが…

「より良い Java」としての Scala

「関数型言語とかって Java と違うパラダイムなら興味ないから」っていうあなた! そんなあなたも「より良い Java」として Scala を使うというのも良いと思いますよ。なぜなら Java の資産がすべて使える もちろん Java のクラスを継承することもできる Java…

関数型プログラミング脳を作るには

おそらく Scala(に限らずだと思うけど)を身につけるにあたって、Java プログラマが越えなければならない大きな壁の一つは「いかに関数型プログラミング脳を作るか」だと思います。 これは、手続き型プログラミングからオブジェクト指向プログラミング(OOP…