OSTRACISM CO.

ScalaとHaskellとPythonと...

はじめに

 Scalaの最大の特徴は、本格的な関数言語的な記述ができるにも拘らず、Javaライブラリとの互換性があることだろう。弱点でもあるわけだが。ともかく豊富なJavaライブラリが使いたい放題。中括弧でのブロックなどCの子孫たるJavaのお友達な感じがする。まぁ、関数(メソッド)の定義がdefで始まったり変数の宣言がvalやvarで始まるのはLLっぽい匂いが多少する。でもちゃんとコンパイラなので走らせる前に文法エラーは撲滅できる。困ったら手続き型言語的な記述で逃げることもできる。今回挙げた言語の中では唯一数万行は普通に書けそうな、仕事で使える言語だ。

 で、Scalaの本を読むとHaskellでは云々という言葉が良く出てくる。今、関数型言語を理解するにはHaskellは避けて通れないようだ。ある意味基礎教養なのだろう。しかたがないので「すごいH本」を読む。読み終わってもとてもHaskellで何かを書けそうな気分になれない。そうは言ってもしかたがないのでScalaで書いたプログラムとPythonで書いたプログラムを移植してみる。後述するが、数千行くらいしか書ける気がしない。やはり研究者の言語であり、仕事で使うものではない。悪魔で基礎教養。実際に使うとcabalで、というかライブラリのバージョンでの依存で、環境を整えるのに結構ハマる。いつの間にかbinarystringが2バージョンあってコンパイルエラーとか変なところで苦労する。つうかした。

 その昔、ちょっとした作業はawkで書いてた。awkで書けないものはCで書いてた。やりたいこともその程度で可能なことばかりだった。で、もっと何かないかとなり普通はPerlに行くのだが、Perlの入門書を読んで、こりゃダメだと思った。特殊な記述が多すぎ。他人の書いたコードどころか自分の書いたコードも読めなくなる自信ありな言語だった。しばらくCとawkでしのいだ後、Rubyに移行する。

 例題で実装した音楽ファイルシャッフルプログラムは最初Rubyで書いた。あるときどうも長らく坂本龍一を聴いてないと気付き調べると坂本龍一ディレクトリが捕獲されていなかった。なんて日本語に弱い言語なんだろう。で、本格的にPythonに移行した。昔awkで書いたような作業はPythonで書く。基本的にはPythonを本格的な言語っぽさを持つシェルスクリプトとして扱っている。ある程度本格的な処理にも使える。しかし基本的にインタプリタなので、数千行が限度かなと思う。もう長らく仕事以外でCは書いてない。C#は少し書く。awkの替りがPythonでCの替りがC#ってとこか。

 Ubuntu 14.04で書いて動かすという縛りで行った。Haskell(ghc)は7.6.3をSynapticでインストール。Scalaは2.10.4をJava 1.7.0とともにインストール。Pythonはあらかじめ入っていた2.7.6。あまりシステム環境に逆らわないようにした。Java系はシステム側で利用してないので逆らうって程のものでもない。Pythonの複数バージョンの共存は一大テーマになる程度には難題。Pythonの主流が3に移行するのはいつなのか、そもそも移行はあるのか、Perl 6の二の舞ではないのか、ということもあり、システムで使うPythonが3に移行するまではどうでもいいやと思っている。全然別の言語になるわけでもないし、別の言語ならそれはそれで本当に別な言語に移行することも視野に入れれば良いだけ。


2014.07.24


「インデックス」へ戻る


OSTRACISM CO.

OSTRA / Takeshi Yoneki