FutureInsight.info

AI、ビッグデータ、ライフサイエンス、テクノロジービッグプレイヤーの動向、これからの働き方などの「未来」に注目して考察するブログです。

Pythonについて

Pythonは素晴らしい言語だと思う。他の言語(といってもperl、Javaくらいか)をさわっても、全く自分の趣味に合わずにすぐに学習意欲を失ったものだが、Pythonはそのコンパクトさとちょうどいいレベルの抽象化、オブジェクト指向を前提にしたことによる親和性から、すぐに虜になり、いままで書いてきたコードは、研究、自分用に関わらず8割はPythonでプログラミングを行ってきた。

でも、サーバー側のZopeもPloneも好きではない。内部で何をやっているか、ぜんぜんわからない上に、それを説明する機構も存在しない。もちろん、勉強すれば中身はPythonなのだから、すぐに理解できると思うのだが、その気も起きない。

不思議なもんだなーと思うのだが、いまでもLispを愛し続ける人が一部に存在するようにこれからもずっと自分はPythonを使い続けるのではないかと思う。ただ、一つ心配なのは、Pythonのバージョンがあがりすぎており、過去とのバージョンとの乖離が大きくなっている点だ。特にライブラリーにおいては、2.3以降を前提にしているものが多すぎる。それはそれで悪いことではないのだが、基本的に言語というものは最初に作った道筋をはっきりと守る必要があると思う。標準ライブラリーの関数の引数は、メジャーバージョンの変化があっても、その引数の型を変えるべきではないし、そのような拡張が行われることを明確に避けるべきだと思う。その点C++は最悪で、STLの引数がバージョンによって簡単に変わっていたりする。それも、マイナーな関数ではなく、stringクラスのcompare関数のようなだれでも使う関数とかだ。(でも、C++は難解さが少し好き。使っていて自己満足する言語ではある。)

もちろん、仕事になったらJavaだろうが、C++だろうが、C#だろうがなんだって使うつもりだが、こういう言語に出会えたことは僥倖と言っていいのではないかと思う。日本では全然はやってないので、少し力説してみました。

Pythonを勉強するときによけいな書物は必要ない
Python チュートリアル
http://www.python.jp/doc/release/tut/
を読んだ後は、必要に応じて、
ライブラリリファレンス
http://www.python.jp/doc/release/lib/
を読めばよい。まー、あとは、適当に他人のコードを読むのがいいんじゃないかと。Python的に効率的な設計とか、例外の扱い方とかは出来る人から盗むのが一番早いからね。
Python Performance Tips
http://newworld.ddo.jp/wiki/PythonSpeed
とかも、Pythonおせーとか言われないように扱う上では重要だと思うけど。特に文字列の連結とリストへの代入はきちんと手法を使わないと速度的に10倍以上違ったりするらしいから気をつけよう。