2011年11月23日水曜日

Fantom

Info Q を読んでたら、Scala は先行き暗いねって記事があった。その内容自体は、まあ一理あるねくらいだけど、その問題提起をしている人が、気に入ってる言語として Scala と対比してる Fantom というのがあって、ちょっと調べてみた。

ここでサンプルコードを読んでみると、特にキャッチーな感じはしないけど、その分、実用性を念頭に置いてる気がする。知的な遊びのためよりむしろ割と泥臭い現場でも使えるように考えられてる印象。C# が分かる Javaプログラマで、面倒くさがりな人向けって感じか。言語仕様とか文法のパラダイムよりも、バイトコードやモジュールの扱いみたいなアーキテクチャ寄りの面に長所があるのかもしれない。

Linux にインストールするには、

  • オフィシャルサイトのトップページからダウンロードして、
  • 適当なところに展開して、fantom-1.0.XX フォルダの中に入る
  • adm/unixsetup を実行して bin/下のファイル群に実行権限を付ける
  • bin/fan -versionを実行して、動作確認
  • 必要に応じて PATH にbin/を追加する

以下のようにして、FWT という GUI 上の HelloWorld ができる。

  • ファイル FwtHello.fan に以下のコードを書く
    using fwt
    class FwtHello : Test
    {
      Void main()
      {
        Window { Label { text = "Hello world" }, }.open
      }
    }
  • $ fan FwtHello.fan で以下のようなちっこいウィンドウが表示される。

====

全然、Fantom とは関係ない話だけど、Fantom についていろいろググってて、Fantom で迷路の最短経路をとくパズルをやってる人がいたので、その先をたどると面白い記事を見つけた。

問題は「人材獲得作戦・4 試験問題ほか」に載ってて、この問題をどのように使ったかという顛末(「人材獲得作戦・3」)まで書かれていてとても面白い。

ただ、「問題の性質からいって、キューやリストが必要なのは明らかなのに、言語にCを使う人が相当多い。」ってところだけ残念。以下のようにすればオブジェクト指向も関数型も論理型も関係なく簡単に解ける。

  • S の上下左右に隣接する空のマスに1 を書き込む
  • 1 に隣接する上下左右の空のマスに2 を書き込む
  • ・・・
  • N に隣接する上下左右の空のマスにN+1を書き込む
  • Gに着いたら、隣接するマスを N からカウントダウンする形で戻れば完成

コードは簡単だから省略。C 言語はもちろん、多分 COBOL でも書ける。

0 件のコメント:

コメントを投稿