或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

Pythonで書かれたプログラムの写経

写経とは、もともとは、

仏教において経典を書写すること

らしいです。

それが転じて、プログラミングにおいても、写経という言葉が使われるようになったようです。つまり、良いプログラムを書き写すことがプログラミングにおいての写経です。
ちょっと意味合いは異なるかもしれませんが、達人プログラマーという書籍の著者のデビッド トーマス氏が、Codekataという言葉を使っています。kataというのは、空手などの武道で言うところの型のことです。プログラミング言語で言うとこのtypeの意味合いの型ではありません。空手のように型で練習することが有効だという旨の意図らしいです。

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (348件) を見る

達人プログラマー―ソフトウェア開発に不可欠な基礎知識 バージョン管理/ユニットテスト/自動化 (Ascii software engineering series)

達人プログラマー―ソフトウェア開発に不可欠な基礎知識 バージョン管理/ユニットテスト/自動化 (Ascii software engineering series)

  • 作者: デビッドトーマス,マイククラーク,アンドリューハント,David Thomas,Mike Clark,Andrew Hunt,長瀬嘉秀,テクノロジックアート
  • 出版社/メーカー: アスキー
  • 発売日: 2005/03
  • メディア: 単行本
  • 購入: 3人 クリック: 98回
  • この商品を含むブログ (70件) を見る

写経は、賛否両論あり、どちらにも理があって、一概には評価出来ないですが、以下の条件を満たす場合には、写経は非常に有効だと思います。

高級言語であること

よく考えてみればわかることですが、マシン語を写経しても意味がありません・・・。アセンブリ言語も意味無し。C言語でも、アルゴリズムやロジック部分を写経するのなら意味はあると思いますが、変数宣言であったり初期化などの定型的な手続きを写経するのは意味がないと思います。

イディオム(慣用句)を有すること

高級言語の中でも、イディオム(慣用句)を多用するようなプログラミング言語の場合は、写教の効果が高いのではないかと思います。Perlなんかだと、写経の題材に事欠かないのではないでしょうかね。Pythonでも、組込み関数の上手い使い方だったり、リスト内包表記など、題材には事欠かないと思います。

実行が容易であること

写経しても、間違いがあっては意味がありません。間違いに気付きにくくても意味がありません。出来れば、ステップ実行出来る環境があるほうがよいと思います。Pythonには、インタラクティブシェル(対話的実行環境)があるため、実行が容易です。書いた傍から実行出来、ミスにもすぐ気付きやすいため、効果が高いと思います。たいていのインタプリタ言語には、こういった対話的実行環境はあると思いますし、コンパイラ言語であっても、ステップイン実行出来るデバッガが備わって居れば、それなりに実行が容易であると思います。

処理単位が短いこと

1000ラインもあるmainプログラムを写経するのも無理があるかなと思います。人間が頭の中でソラで処理出来る処理単位はせいぜい100行とかその程度じゃないでしょうか?!

Pythonの学習においては写教は有効

上記の理由により、Pythonの学習においては写教は有効だと、私は思います。学習法も多様であっても良いと思いますが、何をやっていいかわからない人は、写経はお奨めです。

Pythonの写経でお奨めな書籍

Python Phrasebook (Developer's Library)

Python Phrasebook (Developer's Library)


Python Phrasebook

Python Phrasebook