Common Lisp Runs Anywhere.

私はCommon Lispを様々な場所で動かしています。

自宅のPCはMacbook Proなので、macOSです。主にClozure CLとCLISPを使っています。SBCLも入っていますが、あまり使っていません。

サーバーサイドではFreeBSDを使っています。Amazon Web ServiceのEC2インスタンスを一つ持っており、そこでHunchentootを使ったWebサーバーを動かしています。Amazon Prime Photoと組み合わせて遠くに住んでいる親族向けに子供の写真を配信しています。HTTPSとBASIC認証を組み合わせた簡易的なプライベートページです。HunchentootはCLISPでは動かないので、FreeBSDでもClozure CLを使っています。

仕事では統計分析を行うことがあり、かなりハイスペックなWindows PCを使っています。メモリは32GBもあり、統計解析専門のソフトも入っていますが、そのソフトでうまく読み込める形にデータを加工したり、オリジナルな推計式でシミュレーションをしたりするときにCommon Lispを使っています。Maximaを入れるとCLISPが付いてきますが、CLISPは数値解析が遅いので、Clozure CLを使っています。SBCLもWindowsで動きますが、一応ホームページにexperimental(実験的)と書かれてあるので、結果が重要となる分析には使いません。

仕事のWindows PCにはVirtual Boxで仮想化したGNU/Linux (CentOS)が入っています。どうしてもFortranを動かす必要があり、Linuxで構築した方が早かったためです。その中ではSBCLとClozure CLが入っています。

PythonやPerlもインストーラを使えば簡単に導入できますが、意外と大変なのがライブラリです。WindowsのPythonでnumpyの性能を十分に発揮しようと思えば、BLASなどのFortranやC++で書かれた別の言語環境を整える必要があります。

Common LispのASDFはよくできていて、WindowsでもmacOSでもLinuxでもFreeBSDでも、ユーザーのホームディレクトリのcommon-lispフォルダにライブラリをそのまま展開しておけば動きます。FFIを使う場合は別ですが、Common Lispだけで書かれたライブラリを導入することは驚くほど簡単です。

また、仕事のPCはネットに繋がっていないため、Quicklispを手軽に使うことができず、ライブラリを自分で個別に導入する必要があります。PerlのcpanやPythonのpipは便利ですが、これら無しでライブラリ環境を構築しようと思うと結構骨が折れると思います。C/C++やFortranならなおさらです。

地味に便利なのは、Common Lispの主要な処理系がきちんとCP932にも対応していることです。WindowsのCLISPはデフォルトでCP932ですし、Clozure CLやSBCLでもexternal-formatで簡単に文字符号化方式を指定することができます。Common Lispで文字列処理、というのは意外かもしれませんが、CL-PPCREさえあればPerlと同じ正規表現を使うこともできますし、個人的には結構便利だと思っています。

Common Lispには成熟した処理系が多く存在しており、実は環境を選ばずに高速かつ手軽なプログラミング環境を構築することができます。私は基本的には趣味でCommon Lispを使っていますが、実用的に利用するなら「どこでも動く」というのは大きなメリットになるのではないかと思います。

0 件のコメント :

コメントを投稿