このサイトについて

Pythonがプログラミングの学習に向いているたった一つの理由

Pythonがプログラミングの学習に向いているたった一つの理由

LL温泉でもお世話になった日本文理大学の赤星先生はプログラミングの講義にPythonを使われていて,2008年の1月に大分にその理由を聞いたことがあった。以前はPerlを使っていて,Pythonに変えられたのだそうだが,一番の理由は「可読性」だということだった。生徒さんの課題を評価して採点するのが,Pythonで書かせるととても楽にできるから。以前イベントでお話をしていただいて,同じくPythonを授業に使われている日本理科大の菊池先生も同じことを言っていた。

「採点が楽だから」というとちょっと後ろ向きに聞こえるかも知れないが,実はこの言葉の裏には,Pythonの可読性の高さに関する重要な事柄が隠れていると思う。

プログラミングの課程では,頭の中の思考を抽象化して,マシンが判別できるように手順化したりデータ構造を設計してコードを実装する。この課程において,頭の中の混沌とした思考とコードの距離は,プログラミング言語によって異なる。頭の中とコードの距離が近い言語は,所謂「直感的なプログラミング」ができる言語,ということになるのかもしれない。ただし直感は人によって千差万別。プログラマが100人いたら100通りの「俺流」があるわけで,個人の直感を尊重した代償として,他人の書いたコードの読みやすさが損なわれてしまう。

Pythonはそれとは逆で,頭の中の思考とコードの距離が遠い位置にある言語と言えると思う。頭の中の思考からコードを紡ぎ出すために,若干の労力がいる。他人の書いたコードを読んで,咀嚼して理解するにも実は若干の労力がかかる。みんなが同じような「若干の労力」を払い続けることによって,より多くのプログラマにとって可読性の高いコードが書ける。Pythonの場合は言語仕様にこのようなコードを書くための仕組みがたくさん組み込まれている。インデントによるブロック表現しかり,一意な言語設計しかり。

先ほどの生徒さんが書いたコードが読みやすい,という例に話しを戻すとこうなる。生徒さんがコードを書くとき,「直感的なプログラミング言語」よりPythonを使う方が,多めに脳力を使うかも知れない。しかし結果として,思考がよりよく整理される。コードが読みやすいので,どこで躓いてるのか,どこが良い点なのかが教官にも理解しやすく,なので的確な指導ができる。生徒さんが頭の中の思考をPythonのコードに変換している間に,指導のヒントをたくさん埋め込んでくれるわけである。

予約語が少なくてとか,言語仕様がシンプルで覚えることが少ないからとか,そういう特徴を上げるまでもなくPythonほどプログラミングに向いた言語はないと思う。Pythonistaが良いと好むexplicitな設計はPythonにかぎらずCでもJavaでもJavaScriptでも上質なコードになりうるはずで,初学者はコードを書きながら,また他人のコードを読みながらそういうエッセンスを学ぶこともできる。広大なネットを探せば,可読性の高くexplicitな設計のPythonのコードがいくらでも見つかるのだ。


というようなことを考えたのは,赤星先生からメールをいただいて,「みんなのPython 改訂版」を本年度の教材としてお使いいただけるとご連絡をいただいたから。Pythonが間違いなくプログラミング教育用に向くとして,拙著を現場で使っていただけるのはとても光栄なお話だ。

2010-08-27 04:51