python のここがすごい!
といっても、絶賛するほど使い込んでいませんけどね。
紹介している記事を見ていると、どうも引っかかります。スクリプト言語なので Ruby や Perl, 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 を作るとき、よく使ってました。)。スクリプト言語が規約として採用するのは、ちょっとびっくりしました。