Scala布教の会(0)特長いろいろ。

Jyonsty
記事: 3
登録日時: 13年前

Scala布教の会(0)特長いろいろ。

投稿記事 by Jyonsty » 13年前

Scalaを布教するにはまず言語の特徴を知ってもらわなければいけない。
ということで今回はScalaの特徴をまとめます。

まず。特徴から。
1 Javaとの共存
Javaと完全な相互互換性があります。Scalaのコードの実行もJava仮想マシン(JVM)上で行われます。
 これはマイナーな言語によくある「既存のライブラリーが少ない」という問題を解決しているらしいです。

2 関数型言語
Scalaは関数型言語です。
そのため、Scalaでは、関数を数字や文字列などの「一人前の値」として扱うことができます。
だから、CやC++、Javaなどと違い、関数を引数としてとる関数(高階関数)が定義できたりします。
これは、Scalaのコードに、大幅な表現力を与えてるのです。

3 オブジェクト指向
Scalaはオブジェクト指向です。
クラスの定義はもちろんながら、Scalaは「オブジェクトの合成」という点で、他のほとんどの言語に大きな差をつけています。
それを実現するのがJavaインターフェイスによく似た、「トレイト」というものです。
しかし、Javaインターフェイスと違って、トレイトは具象メソッド、フィールドを持つことができます。
Scalaは、オブジェクトを作るときに、トレイトの機能(複数でも可)を混ぜることができます。
一見、多重継承に似ているように見えますが、トレイトは特定しない任意のスーパークラスに新機能を追加できるため、
通常のクラスよりも機能的にこっちの方が勝ってます。

4 簡潔性
とにかく書くコードがJavaに比べて少ないです。
例えば、コンストラクターのあるクラス定義は、Javaならこんな感じ
 

CODE:

/*Javaの場合*/
class JavaClass{
  private int index;
  private String name;
  public JavaClass(int index, String name){
    this.index = index;
    this.name = name;
}
Scalaならこんな感じになる。

CODE:

/*Scalaの場合*/
class ScalaClass(index:Int,name:String){}
Scalaのほうが明らかに短いですね。

5 柔軟性
このコードを見てください。

CODE:

val intActor = actor{
  loop{
    receive{
      case x: Int => println("Int:" + x)
      case y:String => println("String:" + x)
    }
  }
}
すごい構文ですね。Scalaにはきっとloopだとかreceiveだとか新しい組み込みの制御構造があるのでしょう。
実は違います。このloop,receiveは、Scalaのアクターライブラリで定義された関数名で、引数に関数をとるのです。
このように、Scalaは、新しい制御構造もどきを作ることができます。言い換えると、プログラマーの好みに応じて、
Scalaを進化させることができるのです。

これで紹介を終わります。このにっきを読んだ誰かが新しいScalarとなることを祈って。

コメントはまだありません。