The King's Museum

ソフトウェアエンジニアのブログ。

Principle of Reactive Programming

Effective Java シリーズの息抜きに他のネタ。
 
ちょっと前に Coursera の Principle of Reactive Programming 完走した。
 

https://www.coursera.org/course/reactive

 
前々からやりたいと思ってて、一回目の開講の時は他の講義やってて断念したのだけど、今年の4月から2回目が始まったので受講してた。
3週目まではオンタイムでやってたけど、奥さんと子供が里帰りから帰ってきたり、会社のプロジェクトがリリース前で忙しかったりで五月は一切稼働できなくて、State of Accomplishment は逃してしまった。
 
せっかく三週目までやったのにそのままにしておくのももったいないので、マイペースにやって、7月の半ばに講義も課題も全部終わらせた。これが完走の意味するところだ。
 
講義内容
講義内容は以下の通り。
 
  • 1〜2週:Odersky 先生による Functional Reactive Programming 入門
  • 3〜4週:ReactiveX フレームワークの中の人による ReactiveX 入門
  • 5〜7週:Akka の中の人による Akka 入門
 
正直詰め込みすぎですべてで不完全燃焼という感じだった。
 
それぞれの講義で教えられたことは理解したし(本当は Akka の最後の方とかぜんぜん理解できなかったが)、課題も全部満点取ったけど、FRP、ReactiveX、Akka それぞれをつまみ食いしたくらいの感じになってしまって、なんだかちょっと残念。
 
せめて、3つのうち2つに絞って、4週ずつ構成してくれればなーという感じだった。
 
 Actor/Akka

もともとの目的だった Actor/Akka はおもしろかった。ただ、

「Actor モデルではデータ競合が起きないのでプログラミングモデルが分かりやすい(キリッ」みたいなのは正直どうかなーという感じ。

 

確かに1つの Actor 内で実装を進めているときは synchornize とか考えないで、がしがし書けるのは楽だなーと思ったけど、非同期メッセージングのところで結局いろいろ悩まなきゃいけなくて、やっぱり人類に非同期プログラミングは早すぎるんだ、という感覚に何回も襲われた(単に自分が頭悪いだけだが)

 

まぁ、非同期プログラミングからデータ競合の悩みを取り去っただけだいぶまし、人類は着実に一歩進化した!という感じなのかもしれない。とりあえず Actor/Akka 入門のスライドの最初に非同期プログラミングが劇的に簡単になります!みたいなのはやめたほうがいいのでは?と思った。

 

あと、context.become を使って receive の挙動を変えるっていうのはなんだか新鮮だった。確かに、状態の保持が Actor クラス全体に広がらないので幸せだなぁ。

(c) The King's Museum