技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

noop の設定してみる。

コレ見た以上はやらねばな。
http://sourceforge.jp/magazine/09/09/18/0256251

まずは本家の概要を読む。
http://code.google.com/p/noop/

超意訳。
>>NoopはJVM上で動く、既存のいい所取りの言語。ちょうど開発が始まった所で、まだ面白いものではありませんよ。何故新言語?経験上、知らず知らずにテストも保守もできないコードってどうしても量産されちゃうでしょ?大きなプロジェクトだとチーム内でこういうのが問題になる。こんなのを解析すると、結構いろんな所で誤解が生まれる。グローバルな変数の状態然り、腐ったサブクラス化、容易に誤解してしまうAPIども然り。こんなの解決したくて作ってる。<<

で、早速落としてみる。
開発が始まったばかりで、downloads は空(9/20)だったので、ソースを落とす。

hg clone ht...

水銀か。さすが google だ Pythonista 多いだけのことはある。
ソースを見たところ、どうも Scala コードが多い。というか Scala でできてるのかこいつはっ!
Scala は触ったことがないが構うか!Scala入れてしまえ!
そして中身を見ると、、、、buildfile 発見。
ちぃっ!UNIX向けかっ!(当然といえば当然だが)まぁ何とかなるだろう。
JDKを突っ込む。
buildfile は ApacheBuilder のビルド設定らしい。で、Ruby使うとのコト。
幸いRubyは突っ込んでるので、アプリを突っ込むだけ。
そしてさくっと

gem install builder
ruby "C:\Program Files\ruby-1.8\lib\ruby\gems\1.8\gems\buildr-1.3.4\bin\buildr"

通常であれば特に問題なくビルドできる。
出来上がりは target ディレクトリ。どうにもコンパイラ型ではなくインタプリタ型らしい。
antlr-runtime-3.1.1.jar」も含めてCドラ直下にでも突っ込んでみる。
C:\target\classes / antlr-runtime-3.1.1.jar 両方にクラスパス突っ込む。

実行方法は Scala 経由で行う。

scala noop.interpreter.InterpreterMain TargetClassName TargetSourceDir LibraryDir

これで Hello World とかサンプルは普通に動く。