インデントなんか、す、好きじゃないんだからねっ

バンコクの 31o5 さんとチャットしていて、Python の話になった。Pythonといえば、インデントがブロックを表現することで悪名(?)高い。そのインデントが好きか嫌いかということで論争になった。31o5 さんは「好き」派、私は「嫌い」派である。食わず嫌いといわれるのも嫌なので、この「1時間で覚える?Python」というサイトを見ながら、新しく学ぶ言語では、いつも書く「素数計算プログラム」を書いてみた。以下のプログラムは1から100までの範囲の素数を計算して表示する。

def is_prime(n):
  if n <= 1:
    return False
  if n == 2:
    return True
  if n % 2 == 0:
    return False
  i = 3
  while i * i <= n:
    if n % i == 0:
      return False
    i += 2
  return True

def main():
  n = 1
  while n <= 100:
    if is_prime(n):
      print n
    n += 1

main()

書いてみた感想。以前 bash や Bourne shell で素数計算プログラムを書いたときに比べるとはるかに速く楽に書けた(まあ当たり前)。この程度の複雑さのブロックなら、「インデントも案外悪くないな・・・」というのが偽らざる感想。Ruby に比べると end がない分、行数も少なくなるしね。

「答えが一つしかない入試用の数学の問題を解いている」ような感触。やはりちょっと硬いなあ。Ruby の人肌のぬくもりを感じる柔らかさとはまったく違う。Python はいい言語なのだろう。ただ、普段使いたいのはやっぱり自分にとっては Ruby だなあ。