Scalaプログラマレベル(アプリケーション/ライブラリ)[翻訳]
Scalaの難易度とか学習曲線について、最近また議論されてるようですが、公式にはこのようなレベル分けになってますよ。
アプリケーションプログラマとライブラリプログラマに別れてます。アプリケーションプログラマLv2とライブラリプログラマLv1が大体同じくらいの習熟度だそうです。
なんか、これ見ると中級アプリケーションプログラマくらいならすぐになれますよね。
Level A1: 初級アプリケーションプログラマ(Beginning application programmer)
Level A2: 中級アプリケーションプログラマ(Intermediate application programmer)
Level A3: 特級アプリケーションプログラマ(Expert application programmer)
- 畳み込み関数(fold)。例えば、foldLeft, foldRightなど
- Streamとその他遅延データ構造を適切に扱える
- Actors
- パーサコンビネータ
Level L1: 下級ライブラリ設計者(Junior library designer0
- 型パラメータ
- Trait
- 遅延評価(lazy val)
- カリー化を利用した抽象化された制御構造
- 名前渡しパラメータ(By-name parameters)
Level L2: 上級ライブラリ設計者(Senior library designer)
Level L3: 特級イブラリ設計者(Expert library designer)
- 事前定義(Early initializers)
- 抽象型(Abstract types)
- 暗黙の定義(implicit conversion/implicit parameter)
- 高階型引数(Higher-kinded types)