edX で Introduction to Functinal Programming を受けた感想です.

Introduction to Functional Programming | edX

今年の 2 月ごろに Ruby のブロックというものを知った. これは, いわゆる無名関数なのだが, その概念がとても新鮮だった.

それは, 関数型言語でよく利用されるということを知ったので, もっと関数型言語に触れようというのが今年の目標だった.

今年も終わりに近づく 11 月, edX で純関数型言語の Haskell の講座が開講された.

関数型言語を身につける絶好の機会だと思った.

内容

講座の内容は, 以下の本をはじめから終わりまで解説していくもの.

毎週の課題も 各章の練習問題そのものだった.

講座のスライドは github で公開されている.

感想

難しかった..でも, 学ぶことが多かった

難しかった. 1 日ずっと Haskell 漬けになったりした.

内容はさらっと解説されるのだが, 関数型言語という世界が, 今までいた世界とは異なる考え方を もっているので, 概念を理解するのに時間がかかる.

しかし, 知らない概念は刺激にもなって, おもしろい

  • モナド
  • 代数データ型
  • 遅延評価…

関数プログラミング実践入門

副読本として, 最近出版された以下の本を購入した.

この本はとても分かりやすいのておすすめ.

ボイントは, Haskell の文法に限定していないところ.

題名どおり, 関数型言語とはなにかということについてかかれている. その手段として, Haskell が解説されている.

C や Java と Haskell の比較がかかれているところがよい.

手続き型言語の世界にいるプログラマを関数型言語の世界へ 引っ張ってきたいという, 著者の意図を感じる.

数学とプログラミングの結びつきが見えた気がした

関数型言語における関数や型の概念から, プログラミングのベースには, 数学があることを強く感じた.

以下のような記事を書いている.

数学との関係性.

関数型言語のベースには数学がある.

  • 群論
  • 圏論

代数はプログラミング/ モデリングの数学的な基礎理論. 型とは代数学がベースになっている.

これからどうするか?

講座の終わりで, なんと次回予告の動画が流れた?!

Haskell の次は, 圏論 (Category Theory) の講座を予定しているらしい.

大学のとき群環体で心折れた自分としては, 代数学にやや引け目を感じるもの, 数学とプログラミングのつながりをもっ と知るためにこれも受けてみたい.

そのためには, Haskell の学習をここで終わらせることなく, 継続させたい.

AtCoder に挑戦

なにか, 計画をたてとかないと, 自分は勉強しないだろう.

継続的に学習する仕組みとして, 競技プログラミングの問題をといてみる. atcoder と, codeforces が Haskell に対応しているようだ.

Codeforces は, 海外なので深夜に開催されるが, Atcoder は日本時間に合わせて開催されているので, AtCoder をやろうと思う.AtCoder の問題を月 1 回, Haskell でとくぞ.