2010-05-19 Scala programing 特徴 純粋なオブジェクト指向 本格的な関数型言語 Lisp→熱狂的支持→でも遅い。。 Scalaは静的型付け&型パラメータ java,scala 動的型付けが流行ってる Ruby,Physon,Groove 当たり前のとこは型付しない スクリプト言語的な使いやすさ ダイナミック言語の使いやすさはすべて網羅されてる JVMの上で動くよ Ruby→JRuby Scalaもね スペックあがって、作りやすいほーがいいじゃん Scalable!ここがいちばん大事 もともとスケーラブルなのがScala DSLのホスト言語として最適 作りやすいけど、生産性そこまで高くないかも だけどDSL上だと最強だよ 静的型付けでDSL作れるのはScalaだけ DSL Domain Specific Language 領域特化言語 UMLとは反対、冗長性がある 専門言語で必要十分な情報を効率良く記述 PG言語、コンパイラも作るのか PG言語の上にDSLの上を乗せる Scalaコンパイラに少し手を加えるとDSL作れる ツールで必要な成果物を生成 One Source Multi Use 適切な言語選択が必要 Scalaの上にどのようにDSLを構築するか どのようにScalaの上に処理系、コンパイラを置くか Specs Scalaのテスティングフレームワークの一つ BDD コンポーネントの振る舞いを自然言語に近い形の実行可能なテストケースという形式で記述する SimpleModeler DSLコンパイラ クラス図自動生成 g3フレームワーク Scala DSLで記述したメッセージフローを実行する Scala abstract doDo{ var name: String = _ } var 可変可能 val(final) メソッドチェイン メソッドに引数が1だと『.』『()』を省略できる 暗黙変換 階層構造を導入 階層構造でのパラメタの受取 まとめ DSLを導入するならScalaがおすすめ Java的に使うことできる Scala DSLも案外簡単