SlideShare a Scribd company logo
Pythonista による
Pythonista のための
    Scala 紹介


2011/09/30 BPStudy #49 Scala 祭り


           しょうま
        @shomah4a
       Id:shomah4a
           BPStudy #49
内容
●   自己紹介
●   Scala ってどんな言語?
●   どこで使われている?
●   動的型付け・静的型付け
●   型推論
●   関数型なにそれおいしいの?
●   Python と Scala
●   開発環境について
●   その他
                     BPStudy #49
お前、誰よ
●   しょうま(@shomah4a)
●   今月頭から Java の会社
    ●   仕事では今は Python 使ってます。と思ったらそうでもなくなった
    ●   Java とかよくわかりません
●   Scala を始めたきっかけは面白そうだったから
    ●   Android 開発で Java 使いたくないってのも
●   言語遍歴
    ●   Basic -> VB -> (C ->) C++ -> Python(, Haskell, Erlang,
        OCaml, Scheme) -> Scala
●   Python 界隈の人

                               BPStudy #49
Scala とはなんぞや?




    BPStudy #49
Scala とは
●   Scala ... はオブジェクト指向言語と関数型言語の
    特徴を統合したマルチパラダイムのプログラミング
    言語である。(wikipedia)
●   最新版は 2.9.1
●   静的型付けなコンパイル型言語
    ●   コンパイル遅い…
●   省コード
    ●   Java とか冗長でめんどくs(ry

                   BPStudy #49
Scala とは
●   標準ライブラリ
    ●   collection
    ●   JSON
    ●   Stream
●   Web Framework
    ●   Lift, Play, BlueEyes, ... その他諸々




                          BPStudy #49
Scala とは
●   JVM で動く
    ●   Android の Dalvik VM でも動くよ!
    ●   Java のライブラリをそのまま使える
        –   でも…
●   .NET CLR もサポートしているらしいけど開発止まってる…
●   LL です!
    ●   REPL もあるよ!
    ●   LL Tiger にもいたよ!

                       BPStudy #49
Scala とは
●   並行処理
    ●   Actor モデル
        –   Erlang の Process
        –   Message Passing でデータをやり取りし、共有メモリを排する
        –   Python の multiprocessing が似たようなインタフェイス
    ●   STM (Software Transaction Memory)
        –   共有メモリに対するアクセス制御の方法
        –   Haskell とか Clojure とか
        –   PyPy でも GIL を取り除くために注目されたり
●   このあたりは @cooldaemon さんが詳しい
●   http://d.hatena.ne.jp/cooldaemon/
                          BPStudy #49
どんなところで使われている?
●   大体 Web 系
    ●   Twitter, Foursquare, Remember the Milk, etc...
●   国内だと GMO メディア, ドワンゴ[要出典]など
●   Android
    ●   個人的に一個作りました




                          BPStudy #49
マスコットキャラクタ
●   @scalachan




                 BPStudy #49
Java と Scala




   BPStudy #49
Java と Scala
●   よく言われる「JVM で動くから Java の遺産資産使
    えるよね」という話
    ●   Java のライブラリを使うとその部分は Java っぽくなら
        ざるを得ない
    ●   Scala っぽく書くために Wrapper はほしい
●   Better Java としてしか Scala を使わないのはどう
    なの?
    ●   C++ != Better C


                          BPStudy #49
静的型付けと動的型付け




    BPStudy #49
動的型付けとは
●   変数の型が実行時に決まる
    ●   実行時の変数の中身次第
●   大抵インタプリタ型
●   メリット
    ●   文法チェックだけでコンパイルしないで実行できる
    ●   ゆるふわ
●   デメリット
    ●   動かしてみないと型の間違いがあってもエラーが出ない

                 BPStudy #49
静的型付け
●   変数の型がコンパイル時に決まる
    ●   大抵コンパイル型の言語
●   メリット
    ●   型エラーは実行前に発見できる
    ●   動的型付けより堅牢
●   デメリット
    ●   型書かないといけない
    ●   ゆるふわじゃない

                 BPStudy #49
でも、めんどくさいんでしょう?




     BPStudy #49
Scala には型付けを楽にするための仕組みが沢山




          BPStudy #49
総称型
●   Generics
    ●   クラス・関数に型パラメータを付与し、様々な型に対して
        同じ処理を書けるようにする
    ●   Java からある
    ●   C++ のテンプレートのつもりで使うとハマる
        –   テンプレートと違って単純置換じゃない
●   def add[T](left:T, right:T) = {...}



                         BPStudy #49
型とか
●   Python               ●      Scala
●   Duck Typing          ●      Structural Subtyping
    ●   実行時に動的に属性を              ●   特定の属性を持つとい
        見る                          う型を定義可能
    ●   メソッド・属性の有無に             ●   http://d.hatena.ne.jp/yu
        関係なく動的に解決す              ●   皿うどん
        るので実行時にエラー
        が出る可能性                  ●   OCaml からパクッた



                  BPStudy #49
型推論
●   変数定義時や関数定義時に、文脈から型を推測し
    て変数や関数の型を決める仕組み
    ●   val x = 10 と書いてあれば x が Int であると推論する
    ●   Java なんかだと int x とか書かないといけない。
    ●   SomeClass x = new SomeClass(...)
        –   SomeClass が二回出るのって無駄じゃね?
    ●   val x = new SomeClass(...)
        –   すっきり
        –   変更するときに書き換える箇所が少ない


                         BPStudy #49
関数型
●   関数型言語は、広い意味ではファーストクラスの関
    数オブジェクトを持つ言語である。また、純粋関数型
    言語では、全ての関数が副作用を持たない。関数
    型言語の多くは、カリー化、遅延評価などの機能を
    備えている。また、静的型付けの物の多くは型推論
    の機能を持つ。(wikipedia)
●   広い意味では Python も関数型の特徴がある
    ●   関数オブジェクト
    ●   高階関数(map, filter, reduce)
    ●   デコレータ(関数を受け取って関数を返す高階関数)
                  BPStudy #49
Scala の関数型
●   ファーストクラスの関数オブジェクト
●   無名関数
●   カリー化
●   遅延評価
●   パターンマッチ
    ●   case class で拡張できる
●   末尾再帰最適化
    ●   相互末尾再帰は未サポート

                      BPStudy #49
それ以外
●   限定継続
    ●   Scalaの限定継続の基本と応用in高橋メソッド
    ●   by @kmizu
    ●   http://www.slideshare.net/kmizushima/scala-83454
●   コンパイラプラグイン
    ●   モテモテコンパイラプラグイン by @kiris
    ●   http://www.slideshare.net/kiris60/motemote-compil



                         BPStudy #49
Python と Scala




    BPStudy #49
ソースを見てみる




  BPStudy #49
例: 1〜100 をプリントする
●   Scala
    ●   0 to 100 foreach {x=> println(x)}
    ●   0.to(100).foreach(println)
●   Python
    ●   for i in xrange(101): print i
    ●   for i in range(101): print(i)
●   Ruby
    ●   0.upto(100).each {|i| puts(i)}

                         BPStudy #49
Ruby の方が似てね?




    BPStudy #49
fizzbuzz.scala
0 to 100 foreach (i =>{
   if (i % 3 == 0)
     {
       print("fizz")
     }
   if (i % 5 == 0)
     {
       print("buzz")
     }
   if (i % 5 != 0 && i % 3 != 0)
     {
       print(i)
     }
   println("")
})
                      BPStudy #49
fibonacci.scala
def fibonacci(n:Int): Int =
  if (n == 0 || n == 1)
    {
       1
    }
  else
    {
       fibonacci(n-1) + fibonacci(n-2)
    }


                 BPStudy #49
The Zen of Python




      BPStudy #49
Beautiful is better than ugly.
●   Python に限った話じゃない




                 BPStudy #49
Explicit is better than implicit.
●   Implicit conversion とか Implicit parameter と
    かある
    ●   implicit def tostring(n:Int) = n.toString
    ●   def print(x:String) = println(x)
    ●   print(10)




                            BPStudy #49
Simple is better than complex.
●   Python は書いたまま読める(意味が取りやすい)
●   Scala はソースが短くて意味が取りやすいけど、す
    べてを把握するのが困難だったりする




                BPStudy #49
Flat is better than nested.
●   ネストした関数・部分関数・パターンマッチ結構書く
●   それが読みにくいというわけではない




                 BPStudy #49
Sparse is better than dense.
●   メソッドチェイン大好き
●   行あたりの持つ意味が結構濃い




                BPStudy #49
略




BPStudy #49
もしかして Pythonista には向かない?




         BPStudy #49
新しいパラダイム・作法・文化に触れられる




        BPStudy #49
開発環境




BPStudy #49
IDE
●   Eclipse
    ●   プラグインがある
●   IntelliJ IDEA
    ●   結構いいらしい




                    BPStudy #49
Emacs
●   scala-mode.el
    ●   Syntax Highlight と入力補助
    ●   よくあるメジャーモード
●   Ensime かわいいよ Ensime
    ●   補完とかできるらしい
    ●   裏に Scala のプロセスを立ててコンパイルしている
    ●   すみませんつかってません
    ●   EmacsでつくるScala開発環境 後編(ENSIME) -
        tototoshiの日記
    ●   http://d.hatena.ne.jp/tototoshi/20100927/12855959
                         BPStudy #49
ビルドツール
●   ant
●   maven
●   sbt (simple build tool)
    ●   あんまり simple じゃないような…?
    ●   buildout みたいなことできる
    ●   オススメ




                       BPStudy #49
まとめ
●   Python とは違った文化・毛色の言語
    ●   動的型・静的型
    ●   インタプリタ型・コンパイル型
    ●   Explicit・Implicit




                    BPStudy #49
本とか




BPStudy #49
Scala スケーラブルプログラミング
●   通称コップ本
●   Odersky 先生が書いた本
●   仕様とか詳しい
    ●   K&R・プログラミング言語C++
●   第一版は2.7 なのでちょっと古い
●   第二版出たばっか
    ●   2.8, 2.9 対応


                      BPStudy #49
プログラミング Scala
●   信頼の O'reilly
●   すみませんまだよんでません




                   BPStudy #49
Scala 実践プログラミング
●   すみませんまだよんでません
●   後半がマニアックらしいです
●   今日サインもらえますきっと




             BPStudy #49
勉強会とか
●   Scala 勉強会 in 渋谷
    ●   隔週水曜日に渋谷で開催される勉強会
    ●   とってもゆる〜い
    ●   気軽に参加できる
    ●   http://scala-users.org/shibuya/
●   Scala 勉強会 in 秋葉原
    ●   隔週水曜日に秋葉原で開催される勉強会
    ●   とってもゆる〜い
    ●   気軽に参加できる
    ●   http://scala-users.org/shibuya/
●   ゆるふわ Scala 勉強会
                            BPStudy #49
横浜.py
●   はまぱい? よこぱい?
●   Facebook Group
    ●   https://www.facebook.com/groups/126168334149
●   初心者向けな会にしたいなあ




                       BPStudy #49
ご清聴ありがとうございました!




     BPStudy #49

More Related Content

PDF
PyPy 紹介
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PDF
言語処理するのに Python でいいの? #PyDataTokyo
PPTX
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
PDF
LT: 今日帰ってすぐに始められるPython #nds45
PDF
Python & PyConJP 2014 Report
PDF
PyCon JP 2016 ビギナーセッション
PyPy 紹介
次世代言語 Python による PyPy を使った次世代の処理系開発
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
言語処理するのに Python でいいの? #PyDataTokyo
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
LT: 今日帰ってすぐに始められるPython #nds45
Python & PyConJP 2014 Report
PyCon JP 2016 ビギナーセッション

What's hot (20)

PPTX
私の好きなPython構文 vol.2 #nds46
PDF
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
PDF
PyLadies Tokyo 二周年記念パーティ LT
PDF
10分でわかるPythonの開発環境
PDF
Sinatra風マイクロフレームワークで始めるPython
PDF
Phpstormちょっといい話
PPTX
Pynyumon03 LT
PDF
S01 t1 tsuji_pylearn_ut_01
PDF
Py datameetup1
PPTX
210630 python
PDF
Go言語オーバービュー201507
PDF
今日から始める Go言語 と appengine
PDF
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
PDF
今日から始めるGopher - スタートGo #0 @GDG名古屋
PDF
PyCharm入門
PDF
BPStudy#54 そろそろPython3
PDF
Goをえらんだ理由
PDF
OSSで楽に作るGo言語クライアントツール
PDF
Goとテスト
PDF
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
私の好きなPython構文 vol.2 #nds46
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
PyLadies Tokyo 二周年記念パーティ LT
10分でわかるPythonの開発環境
Sinatra風マイクロフレームワークで始めるPython
Phpstormちょっといい話
Pynyumon03 LT
S01 t1 tsuji_pylearn_ut_01
Py datameetup1
210630 python
Go言語オーバービュー201507
今日から始める Go言語 と appengine
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
今日から始めるGopher - スタートGo #0 @GDG名古屋
PyCharm入門
BPStudy#54 そろそろPython3
Goをえらんだ理由
OSSで楽に作るGo言語クライアントツール
Goとテスト
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Ad

Viewers also liked (20)

PPTX
PDF
Erlangを触ってみた
PDF
GHC 6.12.1 マルチコア対応ランタイムシステムについて
PDF
Yesod(at FPM2012)
PDF
関数型軽い紹介
PPTX
関数型言語初心者の俺がF#触ってみた
PDF
F#で学ぶ関数プログラミング入門?
PDF
第一回関数型言語勉強会 大阪
PDF
FP習熟度レベルとFSharpxのIteratee
PDF
Katagaitai CTF勉強会 #4 Crypto
PDF
JSer Class #1
PDF
これから Haskell を書くにあたって
PDF
ScalaプログラマのためのHaskell入門
PPTX
純粋関数型アルゴリズム入門
PDF
120901fp key
PDF
Boost.Coroutine
PDF
関数型言語とオブジェクト指向言語(序章)
PDF
最速の言語Lua ~Python Hack-a-thon #3~
PDF
データベース入門3
PDF
関数プログラミング入門
Erlangを触ってみた
GHC 6.12.1 マルチコア対応ランタイムシステムについて
Yesod(at FPM2012)
関数型軽い紹介
関数型言語初心者の俺がF#触ってみた
F#で学ぶ関数プログラミング入門?
第一回関数型言語勉強会 大阪
FP習熟度レベルとFSharpxのIteratee
Katagaitai CTF勉強会 #4 Crypto
JSer Class #1
これから Haskell を書くにあたって
ScalaプログラマのためのHaskell入門
純粋関数型アルゴリズム入門
120901fp key
Boost.Coroutine
関数型言語とオブジェクト指向言語(序章)
最速の言語Lua ~Python Hack-a-thon #3~
データベース入門3
関数プログラミング入門
Ad

Similar to Pythonista による Pythonista のための Scala 紹介 in BPStudy #49 (20)

PDF
第2回勉強会スライド
PDF
Code Reading at Security and Programming camp 2011
PDF
Programming camp code reading
PDF
Programming camp 2008, Codereading
PPT
Start!! Ruby
PDF
Alluren of prototype-based OOP
PDF
Scalaで萌える関数型プログラミング[完全版]
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
PDF
111015 tokyo scipy2_ディスカッション
PDF
採用LT「まだお祈りデプロイで消耗してるの?」
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PPTX
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
PDF
クイズ・Python勝ち抜きバトル pycon jp_2017
PDF
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
PPTX
C#言語機能の作り方
PDF
Python勉強会 2015-12-02
PPTX
もしも… Javaでヘテロジニアスコアが使えたら…
PDF
C・C++用のコードカバレッジツールを自作してみた話
第2回勉強会スライド
Code Reading at Security and Programming camp 2011
Programming camp code reading
Programming camp 2008, Codereading
Start!! Ruby
Alluren of prototype-based OOP
Scalaで萌える関数型プログラミング[完全版]
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Scalaで萌える関数型プログラミング[1.1.RC1]
111015 tokyo scipy2_ディスカッション
採用LT「まだお祈りデプロイで消耗してるの?」
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
クイズ・Python勝ち抜きバトル pycon jp_2017
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
C#言語機能の作り方
Python勉強会 2015-12-02
もしも… Javaでヘテロジニアスコアが使えたら…
C・C++用のコードカバレッジツールを自作してみた話

Pythonista による Pythonista のための Scala 紹介 in BPStudy #49

  • 1. Pythonista による Pythonista のための Scala 紹介 2011/09/30 BPStudy #49 Scala 祭り しょうま @shomah4a Id:shomah4a BPStudy #49
  • 2. 内容 ● 自己紹介 ● Scala ってどんな言語? ● どこで使われている? ● 動的型付け・静的型付け ● 型推論 ● 関数型なにそれおいしいの? ● Python と Scala ● 開発環境について ● その他 BPStudy #49
  • 3. お前、誰よ ● しょうま(@shomah4a) ● 今月頭から Java の会社 ● 仕事では今は Python 使ってます。と思ったらそうでもなくなった ● Java とかよくわかりません ● Scala を始めたきっかけは面白そうだったから ● Android 開発で Java 使いたくないってのも ● 言語遍歴 ● Basic -> VB -> (C ->) C++ -> Python(, Haskell, Erlang, OCaml, Scheme) -> Scala ● Python 界隈の人 BPStudy #49
  • 5. Scala とは ● Scala ... はオブジェクト指向言語と関数型言語の 特徴を統合したマルチパラダイムのプログラミング 言語である。(wikipedia) ● 最新版は 2.9.1 ● 静的型付けなコンパイル型言語 ● コンパイル遅い… ● 省コード ● Java とか冗長でめんどくs(ry BPStudy #49
  • 6. Scala とは ● 標準ライブラリ ● collection ● JSON ● Stream ● Web Framework ● Lift, Play, BlueEyes, ... その他諸々 BPStudy #49
  • 7. Scala とは ● JVM で動く ● Android の Dalvik VM でも動くよ! ● Java のライブラリをそのまま使える – でも… ● .NET CLR もサポートしているらしいけど開発止まってる… ● LL です! ● REPL もあるよ! ● LL Tiger にもいたよ! BPStudy #49
  • 8. Scala とは ● 並行処理 ● Actor モデル – Erlang の Process – Message Passing でデータをやり取りし、共有メモリを排する – Python の multiprocessing が似たようなインタフェイス ● STM (Software Transaction Memory) – 共有メモリに対するアクセス制御の方法 – Haskell とか Clojure とか – PyPy でも GIL を取り除くために注目されたり ● このあたりは @cooldaemon さんが詳しい ● http://d.hatena.ne.jp/cooldaemon/ BPStudy #49
  • 9. どんなところで使われている? ● 大体 Web 系 ● Twitter, Foursquare, Remember the Milk, etc... ● 国内だと GMO メディア, ドワンゴ[要出典]など ● Android ● 個人的に一個作りました BPStudy #49
  • 10. マスコットキャラクタ ● @scalachan BPStudy #49
  • 11. Java と Scala BPStudy #49
  • 12. Java と Scala ● よく言われる「JVM で動くから Java の遺産資産使 えるよね」という話 ● Java のライブラリを使うとその部分は Java っぽくなら ざるを得ない ● Scala っぽく書くために Wrapper はほしい ● Better Java としてしか Scala を使わないのはどう なの? ● C++ != Better C BPStudy #49
  • 14. 動的型付けとは ● 変数の型が実行時に決まる ● 実行時の変数の中身次第 ● 大抵インタプリタ型 ● メリット ● 文法チェックだけでコンパイルしないで実行できる ● ゆるふわ ● デメリット ● 動かしてみないと型の間違いがあってもエラーが出ない BPStudy #49
  • 15. 静的型付け ● 変数の型がコンパイル時に決まる ● 大抵コンパイル型の言語 ● メリット ● 型エラーは実行前に発見できる ● 動的型付けより堅牢 ● デメリット ● 型書かないといけない ● ゆるふわじゃない BPStudy #49
  • 18. 総称型 ● Generics ● クラス・関数に型パラメータを付与し、様々な型に対して 同じ処理を書けるようにする ● Java からある ● C++ のテンプレートのつもりで使うとハマる – テンプレートと違って単純置換じゃない ● def add[T](left:T, right:T) = {...} BPStudy #49
  • 19. 型とか ● Python ● Scala ● Duck Typing ● Structural Subtyping ● 実行時に動的に属性を ● 特定の属性を持つとい 見る う型を定義可能 ● メソッド・属性の有無に ● http://d.hatena.ne.jp/yu 関係なく動的に解決す ● 皿うどん るので実行時にエラー が出る可能性 ● OCaml からパクッた BPStudy #49
  • 20. 型推論 ● 変数定義時や関数定義時に、文脈から型を推測し て変数や関数の型を決める仕組み ● val x = 10 と書いてあれば x が Int であると推論する ● Java なんかだと int x とか書かないといけない。 ● SomeClass x = new SomeClass(...) – SomeClass が二回出るのって無駄じゃね? ● val x = new SomeClass(...) – すっきり – 変更するときに書き換える箇所が少ない BPStudy #49
  • 21. 関数型 ● 関数型言語は、広い意味ではファーストクラスの関 数オブジェクトを持つ言語である。また、純粋関数型 言語では、全ての関数が副作用を持たない。関数 型言語の多くは、カリー化、遅延評価などの機能を 備えている。また、静的型付けの物の多くは型推論 の機能を持つ。(wikipedia) ● 広い意味では Python も関数型の特徴がある ● 関数オブジェクト ● 高階関数(map, filter, reduce) ● デコレータ(関数を受け取って関数を返す高階関数) BPStudy #49
  • 22. Scala の関数型 ● ファーストクラスの関数オブジェクト ● 無名関数 ● カリー化 ● 遅延評価 ● パターンマッチ ● case class で拡張できる ● 末尾再帰最適化 ● 相互末尾再帰は未サポート BPStudy #49
  • 23. それ以外 ● 限定継続 ● Scalaの限定継続の基本と応用in高橋メソッド ● by @kmizu ● http://www.slideshare.net/kmizushima/scala-83454 ● コンパイラプラグイン ● モテモテコンパイラプラグイン by @kiris ● http://www.slideshare.net/kiris60/motemote-compil BPStudy #49
  • 24. Python と Scala BPStudy #49
  • 26. 例: 1〜100 をプリントする ● Scala ● 0 to 100 foreach {x=> println(x)} ● 0.to(100).foreach(println) ● Python ● for i in xrange(101): print i ● for i in range(101): print(i) ● Ruby ● 0.upto(100).each {|i| puts(i)} BPStudy #49
  • 28. fizzbuzz.scala 0 to 100 foreach (i =>{ if (i % 3 == 0) { print("fizz") } if (i % 5 == 0) { print("buzz") } if (i % 5 != 0 && i % 3 != 0) { print(i) } println("") }) BPStudy #49
  • 29. fibonacci.scala def fibonacci(n:Int): Int = if (n == 0 || n == 1) { 1 } else { fibonacci(n-1) + fibonacci(n-2) } BPStudy #49
  • 30. The Zen of Python BPStudy #49
  • 31. Beautiful is better than ugly. ● Python に限った話じゃない BPStudy #49
  • 32. Explicit is better than implicit. ● Implicit conversion とか Implicit parameter と かある ● implicit def tostring(n:Int) = n.toString ● def print(x:String) = println(x) ● print(10) BPStudy #49
  • 33. Simple is better than complex. ● Python は書いたまま読める(意味が取りやすい) ● Scala はソースが短くて意味が取りやすいけど、す べてを把握するのが困難だったりする BPStudy #49
  • 34. Flat is better than nested. ● ネストした関数・部分関数・パターンマッチ結構書く ● それが読みにくいというわけではない BPStudy #49
  • 35. Sparse is better than dense. ● メソッドチェイン大好き ● 行あたりの持つ意味が結構濃い BPStudy #49
  • 40. IDE ● Eclipse ● プラグインがある ● IntelliJ IDEA ● 結構いいらしい BPStudy #49
  • 41. Emacs ● scala-mode.el ● Syntax Highlight と入力補助 ● よくあるメジャーモード ● Ensime かわいいよ Ensime ● 補完とかできるらしい ● 裏に Scala のプロセスを立ててコンパイルしている ● すみませんつかってません ● EmacsでつくるScala開発環境 後編(ENSIME) - tototoshiの日記 ● http://d.hatena.ne.jp/tototoshi/20100927/12855959 BPStudy #49
  • 42. ビルドツール ● ant ● maven ● sbt (simple build tool) ● あんまり simple じゃないような…? ● buildout みたいなことできる ● オススメ BPStudy #49
  • 43. まとめ ● Python とは違った文化・毛色の言語 ● 動的型・静的型 ● インタプリタ型・コンパイル型 ● Explicit・Implicit BPStudy #49
  • 45. Scala スケーラブルプログラミング ● 通称コップ本 ● Odersky 先生が書いた本 ● 仕様とか詳しい ● K&R・プログラミング言語C++ ● 第一版は2.7 なのでちょっと古い ● 第二版出たばっか ● 2.8, 2.9 対応 BPStudy #49
  • 46. プログラミング Scala ● 信頼の O'reilly ● すみませんまだよんでません BPStudy #49
  • 47. Scala 実践プログラミング ● すみませんまだよんでません ● 後半がマニアックらしいです ● 今日サインもらえますきっと BPStudy #49
  • 48. 勉強会とか ● Scala 勉強会 in 渋谷 ● 隔週水曜日に渋谷で開催される勉強会 ● とってもゆる〜い ● 気軽に参加できる ● http://scala-users.org/shibuya/ ● Scala 勉強会 in 秋葉原 ● 隔週水曜日に秋葉原で開催される勉強会 ● とってもゆる〜い ● 気軽に参加できる ● http://scala-users.org/shibuya/ ● ゆるふわ Scala 勉強会 BPStudy #49
  • 49. 横浜.py ● はまぱい? よこぱい? ● Facebook Group ● https://www.facebook.com/groups/126168334149 ● 初心者向けな会にしたいなあ BPStudy #49