pythonとperlを両方ちょこっと使ってみて思ったこと

まったくのシロウトがちょこっとモジュールとか書いてみて思った感想ですよ。一言で言うと、とりあえず動くプログラムを短期間で書きたければ、pythonが無難だということです。

良い点
ワンライナーで使うと強力。同人CDを音源からエンコしたファイルが多数あるのですが、これにタグをつける、という問題をperlを使ったワンライナーで解決できた時は感動した。定義済みのスカラー変数が沢山あったり、$_が省略できたりするのも、ワンライナーで使う時には便利ですよねー。

悪い点
ワンライナーを書いている時は楽しくて仕方がなかったのだが、モジュールを書いたり、比較的長い処理のスクリプトを書きはじめたら、あんまり楽しくなくなってきた。なんだかやる事が多いですよね。テンプレートを引っぱってきて、our @EXPORT = qw(hoge fuga)とか書かなきゃならないし。クラスの書き方とか、なんかhow-toを読んでいるだけでヤル気がなくなりました。面倒くさすぎる。

良い点
perlとは逆に、モジュールを書いたり、クラスを書くのが簡単でいいです。モジュールは、単に拡張子を.pyとしておけば良いだけです。モジュールにある変数や関数は、特になにかしなくても全部グローバルで、他から参照できます。他所から参照できるようにしたいからモジュールにする訳で、そういう意味で親切ですよね。「でも、実装詳細が隠蔽できないじゃないか」という人もいるかもしれませんけど、実装詳細を隠蔽して、インターフェイスだけを公開したい場合はクラスを使えばいいんじゃないかな、と思います。クラスを書くのも極めて簡単で、ただclass hoge():と宣言してあとはダラダラとインターフェイスを書いて実装していくだけです。正直、selfはうっとうしいですが、これはperlも事情は同じようですし。

悪い点
これは、悪い点といっていいのかわかりませんが、従来のプログラミング言語が提供してきた機能は大分省略されていると思いますよね。ブロックスコープが無いとか、constant修飾がないとか、do whileが無いとか。ただ、無ければないなりに何とかなるナ、というのが感想です。 val = obj.func1().pop().func2() みたいにズラズラ書いていくと、使う変数の数が減ってくるので、特にブロックスコープやconst修飾が必要だとも思えないです。