python のここがすごい!

といっても、絶賛するほど使い込んでいませんけどね。
紹介している記事を見ていると、どうも引っかかります。スクリプト言語なので RubyPerl, PHP などと基本は同じです。紹介している記事など見ると、「それ、他のスクリプト言語といっしょだし…」とか「処理速度は、条件(アルゴリズム)を変えると、そうでもないんだよね…。」とか。
処理は得意、不得意があるものです。しかもインタプリタなんですから、気にしちゃダメだと思います。Java だってさんざん遅いって言われてました。
それよりも習得が早いとか、メンテナンスしやすいとか、道具として使いやすいかどうかだと思います。目的(やりたい事)に適した言語を使えばよいと思います。コンピュータ*1は人を便利にする道具です。私にはおもちゃですが。
ということで、他の言語をよく知らない人を対象にしているんでしょうか? Python 軽く触った感じで、言える事は2点。

1. 実行文のグループはインデントの量で決める

スコープって表現かと思ったら違った。有効範囲だからね。もう少し細かく言うと whitespace *2 の量で決まる。tab は見かけ上を揃える意味があると思うし、エディタによって変わるのが嫌で、私は使っていません。まぁ Emacs を使っていると tab キーでは tab を入れてくれないので、強制されたとも言えるのですが。
量が揃っていればいいので、1個でも3個でもいいです。括弧でくくったり end って入れる言語が多いから、ちょっと戸惑うかも。ちなみに Pydev の初期設定値 4 の倍数だから、それ以外だと警告が出てうるさいです。

2. すべてがオブジェクト

といっても、制御フロー文はオブジェクトではなけど。
例えば、 'fast' って文字列がオブジェクトなんですよ。オブジェクト(クラス)を作らなくても、存在自体がオブジェクト。だから、


>>> 'fast'.__add__('food')
'fastfood'

って出来る。他にも


>>> a = 'chocolate'
>>> a.__eq__('milk')
False

など。で、さっき言った if, while とかの制御フローの文はオブジェクトではないので、そういう行には最後に : (コロン)を付ける必要があります。

こんなところかな。あとは、一つの言語を習得していて、他の言語を触ったときに感じる事ばかりだと思います。まだ使い込んでいないので、他にも見つかったら記事にしたいと思います。

おまけで、ソースコード文字コードを入れるのを見かけると思います。


-*- coding: utf-8 -*-

これって、Emacs というエディタが、この表記で文字コードを判別しています(日本語は、 euc-jp と s-jis があるので、 perl で CGI を作るとき、よく使ってました。)。スクリプト言語が規約として採用するのは、ちょっとびっくりしました。

*1:正確に言うと、計算機。計算以外何も出来ません。通信が出来たり絵が出たりするのは計算の結果でしかありません。

*2:space は空間なので、言わないようにしてます。