間違う自由 [Tech]
プログラミング言語Python.
Perlよりは Cのように見えるスクリプト言語、という程度の認識しかなかったのだけど、今回受講した edX のクラスが Python だったので初めて使ってみた。
スクリプト言語なので、簡単なことはあくまでも簡単に書けるのは普通として、スクリプト言語なのに、C++ みたいにクラス作ったり継承したりできるのは面白い。コンパイルいらないし、教育目的には便利かもしれない。
Cから派生してきた言語との大きな違いは、if文などのブロック構成を括弧じゃなくてインデントで表現することだ。長年の C/C++生活で、すっかり C言語脳になっていたので、インデントの使い方を強制される Python には最初凄くストレスが溜まった。コーディングスタイルを強制されると、基本的人権を剥奪されたような気分になってしまうのだ。
でも考えてみると、C言語ではコンパイラのために括弧、読む人間のためにインデント、と二度手間だったわけで。そして両者が食い違うリスクもあったわけで。それならインデント一本でいいじゃん、という Python はなるほど合理的ではあるね。
そしてさらによく考えてみると、Pythonは何も無茶なコーディングスタイルを要求するわけではなくて、結局Cと同じようなインデントなわけで、ただそれが処理系で使われるので間違ったらエラーになるというだけだ。Cにあって Pythonにない自由は何かというと「インデントを間違う自由」なのだ。それもまた基本的人権の一部なのか?
Perlよりは Cのように見えるスクリプト言語、という程度の認識しかなかったのだけど、今回受講した edX のクラスが Python だったので初めて使ってみた。
スクリプト言語なので、簡単なことはあくまでも簡単に書けるのは普通として、スクリプト言語なのに、C++ みたいにクラス作ったり継承したりできるのは面白い。コンパイルいらないし、教育目的には便利かもしれない。
Cから派生してきた言語との大きな違いは、if文などのブロック構成を括弧じゃなくてインデントで表現することだ。長年の C/C++生活で、すっかり C言語脳になっていたので、インデントの使い方を強制される Python には最初凄くストレスが溜まった。コーディングスタイルを強制されると、基本的人権を剥奪されたような気分になってしまうのだ。
でも考えてみると、C言語ではコンパイラのために括弧、読む人間のためにインデント、と二度手間だったわけで。そして両者が食い違うリスクもあったわけで。それならインデント一本でいいじゃん、という Python はなるほど合理的ではあるね。
そしてさらによく考えてみると、Pythonは何も無茶なコーディングスタイルを要求するわけではなくて、結局Cと同じようなインデントなわけで、ただそれが処理系で使われるので間違ったらエラーになるというだけだ。Cにあって Pythonにない自由は何かというと「インデントを間違う自由」なのだ。それもまた基本的人権の一部なのか?
なるほどー。私はインデントルールをキッチリ守りたい方なんですが、Pythonで長くなりすぎる行を2行に分割する自由はあるんでしょうか? 行を分割した時、後半の行の前の方に、見やすくなる位置までスペースを入れるとインデントと見間違いやすくなるのですが、何か良い解決策があります?
by tommy (2014-02-15 21:32)
バックスラッシュで改行をエスケープすれば分割可です。後半行の前のスペースはインデント扱いされないので自由に置けます。
foo = \
very + \
long + \
line
てかんじで。
改行の扱いは sh/csh script由来なんですね。
by dokin (2014-02-15 22:00)