読者です 読者をやめる 読者になる 読者になる

Pythonのいいところ

使い始めた最初こそ、「え~」と言いたくなるポイントが多かったPythonだけど、今ではもうPython一番使いやすいな、と思うようになってきた。


コミュニティが大きいことによるメリット。困ったときにググればだいたい出てくるし、ライブラリーも充実している。
特に科学技術系のライブラリーが充実していて、「二年前 Ruby + MATLAB + R + Python 今 95% Pythonな例」で紹介されているようにNumpyやScipy、matplotlibのようなライブラリーが充実しているため、現在では研究者はJavaPythonかという状況になっているそうである。もちろん、機械系なんかは違うだろうけど。
CかHaskellRubyどれをやろう、という時にはそれぞれの言語の特性で決めるんだろうけど、PerlRubyPythonどれをやろうという話であれば言語そのものよりもその周辺のライブラリーやコミュニティがどれだけ充実しているかで決めたほうがのちのち良いことがある。

また、これらのライブラリーの組み込みも簡単で、基本的にはpipのようなツールでインストールしたらimport hogehogeと書くだけで使える。Javaってどうやるんだっけ?
ほかの人に使ってもらうソフトを本格的に作ろうというのであれば、virtualenvというので何もライブラリーが入っていないクリーンな環境を作って必要最低限のライブラリーだけを組み込んで開発、ということになるらしい。



また、学習コストが低いとも思う。Wikipediaの「Python」から引用すると、
Pythonは言語自身の機能をできるだけ小さくおさえ、ユーザがいつも必要とする最小限の機能のみを提供するように作られている。

これはPerlTIMTOWTDI(there's more than one way to do it - あることをするのにいくつものやり方がある)という哲学とは対照的であり、Pythonでは多くのユーザによって書かれた同一の仕事をするプログラムは、だいたいどれも同じようなコードに収束する。
 とある。
これが他のとある言語でシンタックスシュガーを使いこなすレベルまで達している人にとってはいちいちまどろっこしいらしいが、初心者にはひとつのことをするのにひとつのことだけを覚えればいいのでわかりすい。
個人的に、if文を書いたら{}の中に処理を書くけどその処理が一行で済む場合だけ{}なしで続けて書ける記法もある、みたいなのがあんまり好きじゃないのでこの理念に激しく賛同したい。
また、インデントでブロックが表現されるというのは自然と視覚的に読みやすいコードを作る。Pythonでインデントを適切に入れる習慣が付いていると、他の言語での開発にも役立つだろう。
そして、PEPという「破ってもプログラム自体は全く問題なく動くけど、読みやすくするためなるべく守りましょう」というルールがきちんと決まっていて、IDEもそれを守るように忠告してくれるので自然と統一した文体でコーディングするようになる。

これによって柔軟な書き方はできなくなるかもしれないけれども、だれが読んでもわかりやすくなるというメリットがある。


そして、ガチガチにパラダイムに縛られていないというのもメリットか。オブジェクトとかクラスとか考えずに手続き的に短いプログラムを書くこともできるし、オブジェクト指向できっちり書いてくこともできる。また、今のPythonには徐々に関数型的な部分も増えてきているそうだ。
純粋関数型言語とか純粋オブジェクト指向言語を使っていると、他のパラダイムで書いたほうが良いプログラムが出てきた時に、新しく他の言語を覚えるか不向きな知ってる言語で書くか、ということになる。しかし、ハイブリッドなやつを使っていれば基本的な事項を1から覚えるということなく他のスタイルを試すことができる。
まぁ、Pythonの関数型な機能はほんのわずからしいが。


最後に、独特なエントリーポイントの書き方。Pythonでは、ひとつのプロジェクトについて明示的にひとつのmain関数があるという仕組みになっていない。ひとつのプロジェクトに含まれる全部のスクリプトファイルにエントリーポイントを作ることができる。
じゃあどれが本当のエントリーポイントにかるかというと、最初に読む.py ファイルの if __name__ == '__main__': 以下が実質的なmainになる。つまり、一番初めに呼び出される.pyファイル以外のmainは無視される。
この仕組みを使って、「本当の」エントリーポイントがある.pyファイル以外の.pyファイルにその.py内部だけをテストするコードを書いておけばモジュールごとに常にテストを行えるようになる。
こういう使い方をどっかのブログで知って早速応用し始めたが、これは便利。テストを狭い範囲、短いスパンで回していけるのでバグの発見がしやすい。


というわけで、これからプログラミングを始めてみようという人、特に自分用の細々したツールをお手軽に作ってみたいという人にはPythonがおすすめです。Python2系とPython3系で重大な変更があるので、いまからやるなら3系のほうがよいでしょう。