2009年7月29日水曜日

Scala 練習3

今日もちょっと Scala をいじってみた。

引き続きネットで連載してる記事を読みながらいろいろ試してみる。連載第三回だが筆者が変わったらしく、前二回のおさらいから始まり、いったん関数型っぽい話題は保留にしてJava 側から近接するアプローチで話が進む。

コード例も「Java と違ってこうも書ける」なんてのが多くて、今回はそれほど面白そうなのはない。引き継いで初回だからしかたないか。途中、パッケージスコープで関数を定義しているようなコードのスニペットがあるが、どうしてもエラーになる。記事中のコード例に何が欠けているのか調べようかとも思うんだが、なんだか一気にテンションが下がって、面倒くさくなってきた。

最後に Java とScalaの文法の違いが箇条書きされているが、まあわざわざ Java 以外の言語を JVM 上で動かそうと言うのだから、そういうのじゃなくて、もっと抜本的に違うところを読みたい。ただ記法レベルの話に混じって、static なメンバからシングルトンオブジェクトへの移行や、for ループなどの制御構造からオブジェクト構造への移行など、パラダイムのレベルでよりオブジェクト指向になっている項目もあって、これらはちょっと面白い。

今回は特に演習する事もないので、Eclipse に Scala IDEを組み込んでみた。1年以上前のちょっと古い記事だが、ITPro の「イマドキのIDE事情 29 EclipseでScalaプログラミング!」を参考にしてみた。

いろいろいじってみると、記事中に紹介されているTestPadがコンテキストメニューに出てこない。さらに、同じく紹介されているインタプリタの方は、一瞬コンソールに表示しようとする努力が見られるのだが、速攻で消えうせて何事もなかったかのようになってしまう。EclipseのバージョンはGalileo。さらにテンションが下がる。でもクヨクヨしない。

まあ、コード補完やその他の Eclipse の良い所はまあまあ使えるので、ある程度のコード量が増えてきたら便利になってくるだろうと思う。あとScala自体が普及すれば、それに応じて品質も上がって来るのだと思う。

ここまで書いて思い出したが、前回までの記事でも書かれていたような、あるいはScalaを語る他の言説でもよく言われているような「オブジェクト指向と関数型の融合」みたいな言い方はどうなんだろう。GoF本の昔から、既に Dylan とか CLOS とかあって、古臭いというと言いすぎだけど、かなりありきたりな話だと思うんだが。

ちなみに上記の「パッケージスコープで関数を定義する」コードは、Eclipse IDE上でも同様のエラーになった。何がまずいんだろうなあ。

1 件のコメント:

  1. こんにちは。これ、ちょっとわかりにくいのですが、scalaには

    > scala Hoge.scala
    のように、.scalaファイルをscalaコマンドで直接実行する方法と、
    > scalac Hoge.scala
    > scala Hoge
    のように、事前に.classファイルにコンパイルして
    から実行する方法がありまして、「パッケージ
    スコープで関数を定義する」コードは、前者の方法
    で実行するときに出てきます。基本的には、Javaと
    同じく、パッケージスコープには、objectとtrait
    とclass宣言のみが書けるのであって、パッケージスコープで関数を定義するのは、スクリプト向けの特殊な書き方だと考えておくのが良いと思います。

    返信削除