Pythonを選んで良かったこと、後悔してること

毎日ごりごりコードを書くわけじゃなく、書かない時は3ヶ月ぐらい全く書かないこともある。
プログラミングに対してそんな程度の付き合い方の自分ですが、今メインで使ってるのはPythonです。RubyPHPを使っていた頃もあったのですが、何となく環境を変えてみようと思い立ち4年ぐらい前にPythonにシフトしました。

そんな自分がPythonにシフトして良かったと思う事、また「やっぱRubyのままで良かったかな」と思うことをつらつらと書いています。

もちろん、PythonRubyの言語仕様の善し悪しを比較するものではありません。そんなものを論じられるほど精通してませんしね。あくまで自分目線の使い勝手。

左から右へ書けるRuby

うまく言えないんですが、Rubyの方が左から右へとなめらかに書ける気がします。例えばこれ。ageには年齢を表す数字が入っているとします。これを文字列型にしたいとする。
(以後、上がRubyで下がPythonです)

#ruby
age.to_s
#python
str(age)

まず変更したい対象物のageを書いてから、その後で操作するコマンドを書く、という順序の方がなんとなく人間の思考に合っているような気がします。
ループ系なんかもそうですね。

リスト.each do |a|

end
for i in リスト

end

先にループさせたい対象物(リスト)を書いちゃってから処理を記述する。この方が何か好き。

括弧が少ないRuby

age.to_s
str(age)

括弧ってなるべく打ちたくないです。Rubyの方が好き。

インデント強制なPython

インデント嫌いな人もいるみたいですが、これに関してはPythonの方が好き!Rubyはendendendendendend・・・ってend地獄になって何が何だかわからなくなっちゃいます。
インデントで表現するPythonの方がスッキリしてて自分は好きですね。

読みやすさ

これはもう、断然Pythonが読みやすいです。インデントのお陰でいい加減に書いても見通しが良くなりやすい。自分はあんまり人のコードを読む事って無くて、ほぼ自分のコードとのにらめっこになるんですが、Rubyは書いて一ヶ月後に見直すと理解するのに時間かかります。書き方が悪いんでしょうけど、そんな自分でもPythonはわりとすぐ理解できる。主にインデントのお陰かなあと。

ライブラリとか

科学技術系のライブラリは断然Pythonが豊富ですね。そこに自分は惹かれてシフトしたんですが…正直あんまり意味無かった。だって使いこなせないし、使う機会が無い。ここちょっと背伸びしすぎた。

webフレームワーク

Pythonに移って後悔している点は、ほぼここに集約されます。書きやすいし読みやすいしPython自体は大好きなんですが、webフレームワークがあんまりいけてないと感じます。
何と言っても大正義Railsは使いやすいし情報量も豊富で、いまだにwebだけはRails使ったりしますね。最初に覚えたフレームワークなので愛着も知識も深いですし。

逆にDjangoRailsと比較すると「なぜこんなに回りくどいことしないといけないのか」と感じる事が多いです。しかも日本語の情報が全然無いので毎回自力で英文にらめっこで辛いです。

はてぶGlassという はてなブックマーク関連のサイトを作ってるんですが、それによると過去500日間にRailsとタイトルに入ったエントリーは730件なのに対してDjangoは31件です。絶望的な差。ここが激しく辛いですね。web重視な人はPythonよりRubyの方が無難だと思います。

日本語の情報量

ワールドワイドウェブには英語の情報がたくさん転がっているとは言え、やっぱり母国語で読みたい。英語疲れるし、誤読してドツボにハマるし、できれば避けたい。
そんな人にとってはPython辛いです。言語本体の情報に関しては問題無いんですが、ちょっとしたライブラリとか、先ほどのDjangoになると途端に情報量が減ります。というか無いに等しいです。

Rubyだったらはてブ見とけば「あのgemライブラリ更新されたんだー」とかわかりますけどPythonはいちいち自分で定期的に調べないとダメです。Rubyだと何かが更新されたらChangeLogを読み込んで翻訳してくれてる人たくさんいますけどPythonはほぼ全部自分で読まないとダメです。辛い。

まとめ

色々と愚痴りましたが、やっぱりPythonの言語体系は自分に合ってる気がします。書いてて苦痛にならない。ブランクあってもすんなり入っていける。その反面、日本語の情報量の少なさと、Railsが無いというデメリット。一長一短。

どちらも好きだし、しばらくはどちらとも付き合って行くことでしょう。