データが主食

データエンジニアの備忘録。分析だったり、読んだ本のメモだったり。

Coursera「Functional Programming Principles in Scala」修了

Functional Programming Principles in Scalaとは

最近、仕事でMapreduceSparkなどを扱うことがおおく、関数プログラミングをちゃんと勉強したいなと思っていました。関数プログラミング由来の概念を実務で使うことがあり全然問題はないのですが、原理原則から勉強したくなり、CourseraFunctional Programming Principles in Scalaというコースを受講しました。

www.coursera.org

コース内容

このコースは、Scalaを開発したスイス連邦工科大学のMartin Odersky自身が先生となって、関数プログラミングを教えてくれます。 大学の先生による講義なので、実践的過ぎず原理・原則を学べることを期待しています。プログラミング教材などであまり実践的すぎるものは好きではないので。

Week 1 Getting Started + Functions & Evaluation

call-by-valueとかcall-by-nameとかとか。学部教養で勉強したようなキーワードがたくさん出てきます。 課題では、再帰をつかったプログラムを書きます。関数プログラミングではこんなにも再帰するんだなーと感じました。 とはいえ、初めてC言語の課題を解いた時も再帰だった記憶があり、関数プログラミングらしさなのかは不明。

Week2 Higher Order Functions

関数自体がオブジェクトです!メインではPythonをよく書いているので、これはしっくりきました。一方で、ifとかforとかもだというのは面白く、これにいよってコードの書き方がだいぶ変わるなと思いました。 一方で、Javaからの以降もしやすい作りになっていて面白いです。

Week 3 Data and Abstraction

オブジェクト思考っぽい話ですね。Scalaはオブジェクト志向かつ関数志向といったところで、オブジェクト志向的な話です。Javaを書いたことがある人であれば、すんなり分かると思います。

Week 4 Types and Pattern Matching

match式がいかに便利かという話。switch文を今まで使っていましたが、こんなに便利な書き方があるんですね。

Week 5 Lists

Listの詳細な実装の話。課題はなく、ゆるい感じです。

Week 6 Collections

List以外のCollectionの話。MapとかRangeとか実践利用できそうなクラスを勉強します。 大学の先生らしく、使い方ばかりではなくてデータ構造に関してもちゃんと説明をしてくれます。

所感

  • 非ネイティブでも聞き取りやすい英語です。
  • Scalaは実際の業務でも使えそうだった。
  • 適切なレベルの課題がよかった。
  • sbt関連などの設定ファイルが用意されているので、コードに集中できる。

ビデオ学習だけだと不安なので、下の本も買いました。 セットで勉強に使うとちょうどよかったです。

実践Scala入門

実践Scala入門

  • 作者: 瀬良和弘,水島宏太,河内崇,麻植泰輔,青山直紀
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/10/27
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る