Personal tools

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

by ats posted at 2009-04-15 14:56 last modified 2009-04-15 14:56

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が間違いなくプログラミング教育用に向くとして,拙著を現場で使っていただけるのはとても光栄なお話だ。

Category(s)
python
The URL to Trackback this entry is:
http://coreblog.org/ats/the-best-reason-why-python-is-good-for-lerning-programming/tbping

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

Posted by Anonymous User at 2009-04-15 15:24
Pythonの使いやすさ味わったが最後、Perlとかには戻れません。
atsさんには3倍働いていただいて、日本のPythonユーザーベースを
もっともっと増やして欲しいものです。

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

Posted by nakayoshix at 2009-04-17 22:09
全く同感です。
同様の理由からPython札幌を立ち上げましたので、こちらの方もよろしくお願い致します。
http://groups.google.co.jp/group/python-sapporo
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
コメントスパム避けのための認証文字列です

Captcha Image

Pythonな求人
r = urlopen("http://www.webcore.co.jp/recruit")
About this blog
■Author
atsこと柴田淳です。この記事を読んでいただくと,技術者としての人となりを分かってもらえるかも。
Webcore株式会社 代表取締役
Plone上で動く,オープンソースのBlog Product - COREBlog2を使って運用しています。

最近書いた原稿
最終回 Python 3.0座談会(動画つき) 2009-07-16
Python 3.0 Hacks 第6回 Pythonicな文字列フォーマットforamat()メソッド 2009-03-30
言語としての一貫性を重視したPython 3の進化 2009-02-20
Python 3が後方互換性を捨てても求めたもの 2009-02-02
Python 3.0 Hacks : 第0回 Pythonの2008-2009 2009-01-01
 
最近書いた本,Mook
みんなのPython 改訂版
Python使いはもちろん,プログラミングの初心者から,他言語からの移行組までご好評いただいているPythonの定番入門書の第2版です。Python 3.0を含む最新の情報について加筆を行い,より読みやすいように構成を大幅に見直しました。第一版をお持ちの方にもお役立ていただける内容になっています。
みんなのPython Webアプリ編
Pythonの基礎から,Webアプリやフレームワークの仕組みまで,つまることなく一気に学べる書籍です。「みんなのPython」と一緒に読んでください:-)。
 

Powered by Plone, the Open Source Content Management System