sgykfjsm.github.com

デブサミ2013に参加した その2

Developers Summit 2013、いわゆる「デブサミ」に参加した。

個人的にはこのセッションが目玉だったが、結果的には、もう少し関数型プログラミングの良さをアピールしてもらえたら、今後の社内営業に使えたのになーという印象。 関数型言語が「こわい」と言われるのはオブジェクト指向型言語との対比だったり手続き型言語との構文の違いだと、個人的には思っているので、そういった部分を解消できたらいいのかなと思う。

【14-B-7】こわくない関数型言語

スライド

公開されているのは水島さんの分だけ?

以下、メモ書き。

  • 中野先生
    • 関数型の基準は?
      • 高階?参照透過性?副作用の有無?型推論?→どれも違う。というか、問題の設定が間違っている。
      • 関数型とは?
        • プログラミングスタイルの1つ。
      • どんなスタイル?の前に、そもそも「関数」って?
        • プログラムでいうところの「関数」とは違う。
        • もっと数学的
          • 入力が決まれば出力が決まる。また、入力は引数だけではないし、出力は返り値だけではない。
      • 関数化の注意点
        • 他の関数が非関数化してしまうかも?
        • あらゆる言語に通用する定義は無理。
      • プログラミングスタイルとして「関数型」が記述しやすいことが関数型言語
    • 関数型プログラミングをすると何が嬉しい?
      • プログラムをモジュール化しやすい。
      • 最新の研究の恩恵を受けれる。
      • トイ・プログラマしか書けないってこと?
        • OCamlで出力されたC言語プログラムは実行時エラーが発生しないことが保証されているので、飛行機のプログラムに使われている。
    • プログラムを関数で記述するのに理論まで理解する必要は無い。記述に必要な機能に慣れておくことが必要。
  • 上野雄大さん「こわくないSML#」
    • SML#?
      • 日本初のML系言語
      • http://www.pllab.riec.tohoku.ac.jp/smlsharp/ja/
      • OCamlに近い、SMLファミリーの一つ
      • 実用的にしたいという目標
        • 「現実」的なC言語と「未来」的な関数型言語のギャップを埋めたい。
      • Cとの高い相互運用性→資源の再利用
      • OPEN GLも使えるよ
      • CとSML#の往復も可能
      • 頭に思い浮かんだものをコードに落としてこみやすく。
      • 手続き型っぽく書きたい?→C言語でどうぞ。
      • 宣言的に書きたい→SML#でどうぞ。
      • SML#はバイナリパッケージを配布している。
  • 水島さん
    • Scalaはいろんな意味で怖いといわれる。
    • Scalaへの誤解
      • 関数型の概念を理解する必要があるか?
        • 理解したほうが良い。
        • でも最初はJavaっぽく書いても良い。
        • first class functionを使ってみたり。
      • implicitなんとかを使いこなす必要がある?
        • スクラッチから書くときには必要ない。
        • Scalaのコードを読むときに知っていれば良い。
      • 関数型なコードを書かないと叩かれる?
        • 多くのScalaプログラマは普通に教えてくれる。言葉足らずなときもあるけれど…
      • ScalaZというライブラリを使わないと行けない?
        • そんなことは無い。
        • 一般的なプログラマには必要ない。
      • Scalaは初学者にはオススメしない。
        • Javaのライブラリの使い方とScalaの両方を学ぶ必要があるため。
  • Q&A
    • 関数型を学ぶのにオススメな書籍は?
      • 現場レベルではなく、メタな欲求がでたときに必要になると思うので、その時まで待て。
      • プログラミングの基礎がOCamlで解説されており、結構良い。
    • どうやって布教したら良い?
      • いきなりすべてScalaにするのはリスキー。まずは少人数でモクモクして、そこからちょっとずつが現実的。