あざらしとペンギンの問題

主に漫画、数値計算、幾何計算、TCS、一鰭旅、水族館、鰭脚類のことを書きます。

動的言語がつらくなってきた

タイトルそのまんまです。

少し前の記事で Java をそのまま埋め込むことができる動的言語 Groovy についてお話しました。結論としては Groovy は Java を簡単に書ける Java Script である、と書いたのですが、その使用についていくつか思うところがあったので、さくっと書いておきます。これは他の動的言語、例えば PythonRuby などにも当てはまることです。

まず、動的言語の利点については多くの人がそれを享受していることでしょう。基本的に変数宣言がいらない、多くは REPL シェルを備えているので、1行だけ実行してすぐに結果を確認できる、また、結果を見て様々な処理を試してみるのに適している、などでしょう。このような特徴は、ちょっとした計算から画像処理や科学技術計算まで、やってみて結果を見ながら考える、という用途に適しています。概ね MATLAB などのように使えるといえば早いでしょう。無論、スクリプトによるバッチ処理も簡単なものであればすぐに書けてしまいます。

一方で、動的言語には弱点もある、ということを前に少し書きました。今回の話はそういうことです。

動的言語で 30 行以上書くのは厳しい

30 という数字は、エディタでひとつの画面に全文を表示できる程度、という意味で決めました。私としては 20 行でも少しつらいかなーといったところです。

で、具体的に何が問題なのかと言うと、

実行してみないとエラーが出ない

ということに尽きます。もちろん例外はありますが、多くの処理系ではコンパイル時に検出できるようなミスさえ実行時にならないと分かりません。というのも、変数に入るオブジェクトが文脈に依存して変わることがあるので、それに何の操作が適用可能かが実行時にならないと分からないためです。人の3倍はミスをする筆者にとっては由々しき問題と言わざるを得ません。

そのような性質から、動的言語で何百行〜も書くのは相当神経を使う作業になるでしょう。動的言語は実験には向くが開発には向かない、というのが筆者の感想です。というわけで、そろそろつらくなってきたので、ある程度大きめの開発には、型推論の強い静的言語、例えば Rust などを使うことにします。実行速度的にも有利ですし。ちなみに、あんハピ♪宣伝用の天之御船学園放送部♪bot @anhpms は現在 twitter4j を用いて Scala で書いています。直接の Scala 用ラッパーが見あたらないので、五合目くらいから作ってみようかと考えています。Java とは並行処理のモデルが違うのでコアの部分にもある程度手をつける必要もあるでしょう。

さて、おそらく 30 行にも達していないでしょうが、もう限界です。さようなら。