tjinjin's blog

自分用のメモです

scalaを学習します

元々Javaを使ってきた訳ですが、このたびscalaを使い始めることにしました。理由は下記のような点です。

  1. 関数型言語を使ってみたい(Ocamlを少しいじったことがありました*1
  2. スクリプト言語のように気軽にかける言語がいい
  3. これまで使ってきたJavaの知識が活かせそう
  4. 新しい言語使ってる自分イケてる

冗談はさておき、ということで早速下記の本を購入しました。

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

今2章を読み進めているところです。1章ではscalaの特徴を言及しています。オブジェクト指向と関数型を取り入れている点や型推論、静的型付け言語のメリットなど。一番気になるところはやはり、コードが簡潔という点ですかね。

java

class MyClass {
  private int index ;
  private String name;
  public MyClass(int index, String name) {
    this.index = index;
    this.name = name;

scala

class MyClass(index: Int, name: String)

※p40より引用

これだけ見てもコード量が全然違いますね。タイピングが早くないのでありがたいです。また、見やすいというのも大きいです。Javaとの比較にと下記の本も合わせて読みながら学習していこうと思います。
プログラミング言語Java (The Java Series)
EFFECTIVE JAVA 第2版 (The Java Series)


※トレイトとミックスインがいまいちピンと来ていません。インターフェースだと継承先で仮に共通する部分があってもそれぞれでメソッドを実装しなければいけない。トレイトだと共通部分を実装できるのでインターフェースに比べて保守性があがるのかな。トレイトという形で複数の共通部分を導入することをミックスインというのだろうか。Rubyとかやってるとわかりやすいっていう記事を見た気がしますがどうなんだろ。