「7つの言語 7つの世界」を読んだので振り返る

大学の図書館で「7つの言語 7つの世界」(原題: “Seven Languages in Seven Weeks” )という本を見つけたので、夏季休暇の長期貸出期間に借りて取り組んでみることにしました。

備忘録ではないですが、各言語について個人的に思ったことを残しておこうと思います。

感想

Ruby

Ruby on Rails で開発されたサービスが多くて驚いていたので、早いうちに知っておきたかった言語。 出現当時にしてはかなり生産性が高い構文なのだろうけど、最近の言語では普通に実装されるようになったので、 Rails ライブラリの蓄積が現在の利点になっているのだろうという印象。

Io

これは今まで全く知らなかった言語。 プロトタイプ言語はオブジェクト指向言語のサブセット、みたいなのがあったと思うが、個人的には究極のオブジェクト指向言語にも感じた。

Prolog

使ったことはなかったが、論理学に関する講義でよく名前が出てきた言語。 今までは論理学専用で判定処理しかできない言語だと思っていたが、かなり関数型言語っぽいところがあり、普通の処理のプログラムも書けたので驚いた。

Scala

Java の代替言語ということでよく名前を聞いてきた言語。 関数型言語ながらなんか見覚えがある構文だと思っていたら、 Kotlin にそっくりだったので、 Kotlin は Java の超進化形というよりも Scala の進化形だったのかもしれない。 なお Scala は評判どおりコンパイルが遅かった。

Erlang

自分の中でとても難しいという評判だけが先行していた言語。 先に Prolog をやったせいか体感的には難しくなく、メッセージの受信やプロセスの終了と起動以外の概念はすんなりと理解できた。

Clojure

名前は知っていたが、別に Lisp でいいじゃないと思っていた言語。 Common Lisp と同様に前置記法のせいか個人的に一番理解に時間がかかったが、並列処理や非同期処理が普通にあって驚いた。

Haskell

勉強したが使う機会が無くてほぼ忘れていた言語。 最後に純粋関数型言語が登場したが、モナド以外は概念はすでに前の章までに解説されており、関数型プログラミングの復習という構成になっているように感じた。

セルフスタディ

区切り毎にある計 21 個ある演習問題は、必ず挑戦してみた方がいいです。この本に限ったことではないですが、実際に書くことで言語の風味が味わえます。

どうしてもわからないときは “7 languages in 7 weeks” のように検索すれば、たくさんの GitHub のリポジトリが見つかるので参考にするといいでしょう。(諦めたのか抜けている問題もあったりしますが)

全体

実は 3 年ほど前に他の本で Haskell は一通り勉強したのですが、それが無かったら概念的な面で結構難しく感じるかもしれません。

この本は是非読むべきだと思います。図書館で見つかれば、数回借りて最後までやってもいいと思いますし、英語の pdf 版を読むのもいいかもしれません。

“Seven More Languages in Seven Weeks” という本が出版されているらしく、よりマイナーな言語を学べるようですが訳書が発売されていない…