注:これは、1998年頃に書いた文を少しだけ直したものです。 最後の文における根拠のない私の楽観が当たったみたいなのは幸いです。

Python についての感想

はじめに:Python に出会う前

私は、化学反応の微視的機構を理論的に探る研究を行っています。 主要な道具としては、分子の電子状態(いわゆる量子化学)計算や、分子動力学/モンテカルロ・シミュレーションなどのプログラムを開発・応用したりもしています。 これらの大規模数値計算では、やはり過去の蓄積というものもあって、Fortran が現在でも主流になっています。 しかし多くの場合、(たぶん他の同業者の多くも)大規模計算の段階ではあまり加工されていない生のデータを出力しておき、後でそれらを色々といじって解析するということをします。 この後者の段階で、簡単な計算の場合には、だいぶ前は awk と Cシェルの組合せ、その次は Perl、を使っておりました。

awk&Cシェルの時は、データを少し加工した後で、別の小さな Fortran プログラムに渡すようなことをしていたのですが、Perl を使うようになってからは、ちょっとした数値計算ならば出来たので、なかなか便利になったと喜んでいました。 ところが、そのうちにもっと色々やりたいと欲が出るようになり、そうなると、どうも Perl ではいまいちだと感じるようになりました。Python に出会ったのはそんな時です。

Python の第一印象

初めは、Perl の「簡潔さ」に慣れていた(毒されていた?)せいか、Python は全般に少し冗長で読み書きが面倒臭いなとか、特に正規表現があまり便利でないな等と感じていました。 また、Perl は変数の型などを先頭の文字($ や @)で区別するのが、なかなか賢いと感心したりもしていたので、Python にしたら逆戻りになってしまったとも思ったりしました。 しかし、やはり数値計算がネックでしたので、いわば少々我慢して Python に取り組みました。

余談:Python の学び方

ちなみに、私は Python を学ぶのに、現在まで WEB にある情報だけで済ませています。 例のニシキヘビ本を買おうかと本屋で手に取った事も何度かありましたが、 version 1.3 の段階で書かれてから未だ改訂されていないようなので、結局買わずにいます。 それでも、Guido van Rossum 氏の tutorial から始め、公式サイトからリンクされている Introductory Material その他を読むことで、だいぶ慣れて来ました。

日本語では、Python 高座 Python 入門、特に後者がお薦めです。 もちろん、今回訳出した Konrad Hinsen 氏の Python for scientists も良い教材です。

実践的には、それまでに書いた Perl プログラムを一つずつ Python で書き換えて行く作業が、けっこう効いたようです。この際に、上記お薦めの Python 入門に含まれるいくつかの表は、参照用にも便利で役立ちました。 また、Perl-Python Phrasebook というのも便利そうです。

Python にハマる

結局、Python にはハマってしまいました。特に、クラスが比較的簡単に使えること、モジュールライブラリが充実していて使い方も簡単(かつ比較的安全)なこと、が良いと思います。

クラスについては、以前 C++ を少しかじったけれど使いこなすには至らず、Python でその利点を知りました。 特にプログラムの変更、拡張、保守について、Fortran なんぞで苦労してきたので、実感も強かったのだと思います。 Python のオブジェクト指向はニセモノっぽくて気に入らないという専門家の方もおられるようですが、私の用途には殆ど問題になっていません。(問題になる程の使い方はしていないからでしょう。)

プログラムの読み易さも次第に実感してきて、今では Perl プログラムが汚く見えてしまいます。 しかし、やはり実行速度の遅さは若干気になります。 特に簡単なプログラムほど Perl に比べて立ち上がりの遅さが際立つように感じます。 実行速度については、遅かれ早かれ改善されるだろうと(特に根拠もないのですが)楽観しています。