一度定義したら変更はできない。7つの世界』は、1言語に1章を割いて7つの言語を紹介して、いろいろなプログラミング言語のパラダイムに触れてみることを目的とする書籍です。1章はおおよそ3節から4節で構成されており、お察しのとおり、数字が上がるごとに段々難易度が上がっていきます。※上は節名ではありませんという構成になっています。5.2のオブジェクト指向言語機能まではまぁなんとか、5.3の関数言語言語では配列の説明を読んでいるかと思っていたけど、もしかして違う場所に迷い込んでしまったかという気分になり、その気分を引きずったままの並行処理の説明でしたので、肝心なところが理解できている気がしないのですが、書けるところまで書いてみます。2.Scalaのインストール今回は公式サイトからではなく、以下を参考にHomebrewでインストールしました。ScalaについてScalaはオブジェクト指向型言語と関数型言語の2つのパラダイムが融合したハイブリット型のプログラミング言語で、JVM上で動作し、Javaのライブラリが使用できるなど、Javaとの親和性が重視されています。変数も変更可能は(mutable)な変数と変更できない(immutable)な変数、どちらでも定義できるようになっています。Javaのような書き方もできるし、関数型言語的な書き方も可能になっているなど、少しずつ関数型言語のパラダイムに移行するということも可能です。Scalaは以下の3通りの実行方法が用意されています。Rubyにおけるirbのような対話形式インタプリタによる実行コンパイルして実行というわけで、私は基本的に1の対話形式でいろいろと試してみました。Hello,World”scala”とコマンドを打つとScalaのシェルが起動します。information.scala>[/shell]というわけで、まずはHello,World。println(“Hello,World!!”)Hello,World!![/shell]まずは数値と文字列の扱いから。11[/shell]このあたりはRubyと同じですかね。オブジェクト指向言語機能Javaを知らないのでRuby学習者からの見た意見ですが、この書籍を読む限りはオブジェクト指向型言語に触れたことがある方なら、ここはさほどむずかしくはないのではないかと。私の場合は静的な型付けに慣れていないのでそこで戸惑うところですが、それでもまぁなんとか。いうことで、ここはさらりと飛ばします。1点、おもしろいと感じたのは、Nothingというクラスの存在ですべてのクラスのサブクラスだそうです(Scalaのルートのクラス階層はAnyだそう)。関数型言語は「副作用がない」といわれるように、同じ入力に対しては常に同じ値が返ってくる、他に影響を及びさないということが大きな特徴になっています。一度代入した変数の変更を認めないというものそれ故の特徴とされているようですが、Scalaは変更不能な変数もオブジェクト指向言語のような変更可能な変数もどちらも定義することが可能になっています。