2012年3月12日月曜日

Scalaはじめました(Early 2012)



暖かい日もあれば寒かったりとか花粉が飛びまくってたり、もうすっかり春ですね。
春は、新しいことを始めるには最適の季節と勝手に思っています。
ここ3ヶ月バタバタしたのもいったん落ち着いたのと、春なので何かしようとソワソワしていたところ、
前から気になっていたScalaに手を出してみることにしました。

Scala
http://www.scala-lang.org/

ところで、Scalaって何?
wikipediaを引用すると


Scala (スカラ、スカーラ、スケイラ、Scalable Language) はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。


だそうです。
有名どころでは、Twitterの分散フレームワーク「Gizzard」がScalaで書かれていたり、
FoursquareがScala+Lift(フレームワーク)を使っているらしい。

なぜ興味を持ったかという点ですが、
・関数型言語に興味がある
・型推論がうまく動いているらしい
・Javaのライブラリがそのまま動くらしい
・Java並みのパフォーマンスでしかも、LL言語並みに短いコードで書けるらしい
・他のLL言語よりパフォーマンスが1桁良いとか言われると・・・試したくなる。
・でもJavaは・・・。
Scalaスケーラブルプログラミング第2版という本が気になっていた・・・。

まあ、軽い気持ちで始めますが、多くの人が書いている「なぜScalaか」を読んでいると
自分のやりたいことと同じにおいがするので、Scalaが必要になる日も近いのかも。
前置きが長くなりましたが、はじめの一歩はインストールから。


参考
http://www.scala-lang.org/node/166



Scalaインストール for OSX 10.7


▼Java環境の確認およびインストール
Scalaは、JavaVM上で動作します。そのためインストールにはjavaが必要です。
まずは、手元のMac OS X 10.7環境にインストールされているか確認してみる。


javac -version
javac 1.6.0_29


すでにありますね。いつ入れたのか覚えていませんが・・・。
インストールされていない場合は、こちらからダウンロードしてインストールします。


Java for Mac OS X 10.7 アップデート 1
http://support.apple.com/kb/HT4883?viewlocale=ja_JP


▼rootで作業します。


sudo su -


▼インストール用のディレクトリ作成


mkdir -p /usr/local/bin
mkdir -p /usr/local/share
mkdir -p /usr/local/src


▼ソースコードのダウンロードと解凍


cd /usr/local/src
curl -o scala-2.9.1-1.tgz http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1-1.tgz
tar zxfv scala-2.9.1-1.tgz

※最新版はこちらから
http://www.scala-lang.org/downloads


▼scalaの設置とシンボリックリンク作成


mv scala-2.9.1-1 /usr/local/share/
ln -s /usr/local/share/scala-2.9.1-1 /usr/local/share/scala


▼rootでの作業完了


exit


▼パスを設定(OSX標準の場合、.bash_profileを作成)
vi ~/.bash_profile


if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi


vi ~/.bashrc


SCALA_HOME=/usr/local/share/scala
PATH=$PATH:$SCALA_HOME/bin
export SCALA_HOME PATH


source ~/.bashrc
▼scala REPL起動


$ scala
Welcome to Scala version 2.9.1-1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.


試しに、


scala> 1+ 1
res0: Int = 2


動いてる。
しかし、REPL環境って遅いですね・・・。
リターンキーたたいて戻り値が1、2秒かかりますね。
もちろんJavaVM上で動いているからなんですが・・・便利な反面テンション下がります。まあ、そこはなんとか新しい言語に取り組むモチベーションでなんとかなるでしょう。

次は、エディターあたりを調べてみようと思います。
eclipseなのかな。




0 件のコメント:

コメントを投稿