def yasuharu519(self):

日々の妄想

お腹痛いのと「7つの言語7つの世界」を読んだ話

巷では3連休で小学生は夏休みの始まりに胸ときめかせているだろう時に、土曜日曜と2日間お腹が痛くて寝込んでた。 苦しんでるのにお腹のほうはありのままで振る舞うのがたいそう辛かった。

ほとんどは寝てたんだけど、寝てばっかりもつらいので、調子が良くなってきたタイミングで、職場の先輩に先日戴いた「7つの言語7つの世界」を読んだ。

7つの言語 7つの世界

7つの言語 7つの世界

本の内容は、Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskellというプログラミング言語を題材に それぞれに使われているパラダイムの説明や、特徴などが説明されている。

すべてがオブジェクトとして扱われるRuby,に Javascriptのようなプロトタイプ言語であるIo, 論理プログラミングであるPrologと、そのPrologの影響を受けながらも 関数型を取り入れたErlangオブジェクト指向と関数型のあいのこのようなScalaに、 JVMで動かせることを可能にし普及を図ったClojureに、 純粋な関数型であるHaskell

それぞれの言語にそれぞれの思惑があって戦略があって、面白い。

個人的にはProlog数独ソルバーなどは結構感動した。 数独のルールを記述して、パズルの一部を入力すると、その条件を満たす解を算出する。 普通ならアルゴリズムを記述しないといけないところだけど、Prologではそれがない。 まとめに書かれているように、スケジューリングや、パズルなどには適してるだろうなと思った。

あとはErlangの分散メッセージ送信部分も気になる。

本自体は書く章で映画を題材に言語の話が進められていくので、知らない映画の場合はちょっと読みづらかった。

いろんな言語に飛びついて言語マニアになることにはあんまり意味がない気がするけど、 他の言語のいろんなシンタックスや背景や思想などを知ることで幅広い考え方ができるような気もする。

今会社ではC++をやってるけど、そこについてはもっと深く知れるようになりたい。 あとは趣味でGolangがんばろう。