Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)

  • インプレス
4.08
  • (14)
  • (15)
  • (11)
  • (0)
  • (0)
本棚登録 : 277
レビュー : 10
  • Amazon.co.jp ・本 (624ページ)
  • / ISBN・EAN: 9784844327455

作品紹介・あらすじ

Scalaは、1行コードから大規模プログラムまで書けるスケーラブルな言語。オブジェクト指向と関数型をバランスよく融合し、Javaをベースに、C#、Smalltalk、ML、OCamlなどの特徴を取り込んでいる。並行処理やパーサー・コンビネーターなど標準ライブラリーも豊富に備える。本書では、Scala言語デザイナー自らが、Scalaの考え方と使い方をステップ・バイ・ステップで解説。オブジェクト指向と関数型、両方の側面をていねいに説明。関数型というパラダイムを学びながら、オブジェクト指向の理解も深められる。次世代言語の標準指標を理解したい人のための、必読の書。

感想・レビュー・書評

並び替え
表示形式
表示件数
絞り込み
  • 言語設計者によるScala言語について思想と仕様を語った本。言語フリークなひらりんが好きなタイプの本。読んでて楽しい。
    Scalaを詳しく知ることができる反面、実際に何らかのソフトを作るための内容は不足な部分あるかもしれない。それは、もう1つのScalaプログラミング入門を読むと良い。

  • 勉強会で利用中。
    面白い言語です。

  • Scala、いいね!
    読み終わる前に第2版が出てしまったけれど、
    Scala 2.8や2.9についても追々勉強していきたい。

    ジェネリクスで型消去されるのは、Javaとの互換性のため?
    ScalaがJVM言語である点が気になる。Javaもちゃんと勉強したい。

  • 1章から33章かけて、scalaの式や構文について詳しく解説していて
    javaからscalaを始めて、なんとなくコードが書けちゃってる人は
    一度目を通すといいかもしれない。

    ただ、全体的に退屈なので、
    一気読みには向かないかも

    手元に置いておきたい一冊。

  • C言語からJavaへ移ったときと同じくらいの、何て言うかパラダイムシフト感?
    これまでオブジェクト指向言語で不便だと思っていたことをほとんど解消してくれる&関数型という未知の領域への橋渡しをしてくれる。
    あとはIDEさえJava並みになってくれれば完全移行するのだが…

    言語設計者が書いた本だが、Java本でいうと『プログラミング言語Java』ではなく『Javaチュートリアル』くらいの位置付け
    通称コップ本、翻訳の質が高い、対応バージョンはScala 2.7
    原書はネットで公開されている http://www.artima.com/pins1ed/

  • CのK&R,C++のStrup本,JavaのJPLといった本に当たるもので,Scalaを使う人や学びたい人は必読書.
    完璧に暗記しろとは言わないが,一通りの内容は頭に叩き込んでおくべきかな.

    関数型言語に不慣れなJavaプログラマが,徐々に関数型プログラミングに慣れていくための最初のステップとして読むのも良いかと.

  • Scalaスケーラブルプログラミングを読み終わりました。

    最近プログラミング言語とての注目されているScalaですが、Java言語上に構築されているため、Javaの発展言語なのかなと思っていましたが、本を読んで、すぐ勘違いにきがつきました。

    関数型の考え方を基本において、オブジェクト指向の融合しているという特徴もあり、個人的にはすごく好みな言語です。

    とはいえ、手続き型言語Loveな人にはデータ変更できないデータ型って何よと違和感をかじるかもしれません。

    気になる特徴を書くと、こんな感じでしょうか。

    (1) 変更不可 (Immutable) なデータ型を容易に作成/利用できる文法サポート(Syntax Sugar)をしているというところに、Scalaのスケーラビリィの一つの主張があります。

    マルチスレッドのプログラムを書いていると、書き換え可能なデータ型(Mutable)だと、排他処理などを書かないといけないため、結構、面倒なのです。

    とはいえ、Immutableなデータ型は書き換えの多いデータを処理するばあい、効率が悪くなりますし、マルチスレッド間で共有されるメモリが限定できることが多いシステムでは、ロックが限定できるため、Immutableなデータを基本とすると、まず実行速度が低下するため、嫌がる人が多いです。

    Scalaの場合、ImmutableとMutableと両方使えるのと、ImmutableなデータをMutableのように記述できる文法があるのが良いところです。

    ただ、Immtableといっても、純粋な Immutable ではなく、JavaのFinalでオブジェクトのリファレンスが変更できないというものです。

    そのため、参照先がMutableなデータだとデータの値自体は変わってしまうようです。
    # このあたりは、処理系を使ってないため、まだ調査が必要です。

    (2) Java/C#系の静的なデータ型をもつオブジェクト指向言語である。

    Java/C#系のオブジェクト指向言語なので、既存のユーザは取っかかり易いというのはああります。

    特に静的な型システムが Love な人には向いています。

    大規模開発で静的な型システムがあると、参照関係の解析などをツールがサポートでしてくれるので、嬉しいのですよね。

    ただGenericsによるオブジェクト指向の型システムは難しいです。

    クラスを継承したときの共変性や反変性を考えると唸ってしまいます。

    あとは、Mixin による実装の継承ができるのも嬉しいです。

    ただ、このあたりは interface や構造での型一致、aspect指向なども関連してきますので、まだスマートな提案がでてくるのかなと思っています。

    (3) 関数型言語の特徴を持つ

    Scalaは手続き型オブジェクト指向言語を基本としていますが、関数型言語の特性、関数合成、高階関数、ラムダ式(クロージャーのほうが通りが良いかも)をサポートしています。

    型システムがあるため、ちょっと面倒なのと、マクロが無いため、Lisperにとっては、ちょっと不満かもしれませんが、通常の関数型言語のプログラミングを、そのまま書けるというのは素晴らしいです。

    さらに限定されているとはいえ、末尾再帰がサポートされているのもGoodです。

    Javaではメソッドを再帰で実行すると、そのたびにスタックを消費するため、スタックオーバーフローするので、再帰でプログラムを書くのは実用的では無いのです。

    なぜスタックを使うのかなど理屈はわかるのですが、Javaでいけてない仕様の一つが解消されているのは嬉しいところです。

    (4) Actorによる通信サポート

    Scalaのスケーラブリティのサポートに、Actorによる通信サポートがあります。

    Erlangで有名になりましたが、結構、古典的な通信方式です。

    ただ、この方式は、どんなメッセージでも送るので、あとは受け手で解釈してちゃんと処理してねってことなので、低レベルなメッセージ処理を明示的に書かないといけないですし、静的な型システムの恩恵も受けることができないなど、イマイチです。

    まぁ、「できる」って程度で、他のScalaの特徴と比較すると、かなり見劣りする解答です。

    この本には他にもオブジェクトの同一性など色々な議論を扱っていて、趣味でプログラム言語を作る、私としては、また新しい言語を設計しようかという気になるぐらい面白かったです。

    ただ厚いのと、あくまで言語処理系の本なので根性入れて読んでください!

全10件中 1 - 10件を表示

Martin Oderskyの作品

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)を本棚に登録しているひと

ツイートする