SSブログ

Schemeによるプログラミング入門書『How To Design Programs』 [プログラム]

 昨日の記事「プログラミングの問題集.XML」で<solution>要素に書いたプログラムは、Scheme (スキーム) という言語のプログラムだった。

 というのも、あの問題を取ってきた元本が How To Design Programs : An Introduction to Computing and Programming という本だったのだが、この本はSchemeによるコンピュータ・サイエンスへの入門書だったからである。

 solution要素も、昨日の段階では、ほぼそのまま同書の解答をコピーしたものだった。ただし、pseudo-code要素に書いたwythonによるスクリプトは、若干作り方が異なっていたので、今日はそのwythonスクリプトに会わせた形でSchemeのプログラムを修正した。

 こうやって書いてみると、wythonは実はSchemeに直す場合にも、非常に直しやすかった。

 これは、wythonが素直だということもあるが、問題をできるだけ小さい部品に分解し、それらを組み合わせてメインのプログラムを作る、という手法がうまくいっていることに起因しているようだ。もっとも小さい部品にまで分解されたプログラムは、一文程度の内容になり、そうなると、どのような言語で書いても、ほとんど変わらないことになるようだ。

 もちろん、Schemeのプログラムとして見た場合、もっといい書き方をすべきだろう。いくつかの下請け関数は、メインの関数の中でしか使われないので、補助関数として、メインの中で定義すべきだし、そうした場合、それらに共通のnum-of-visitorsも、letの中のローカル変数のままで、それら補助関数に共有できるようにして、引数として渡さないですむようにできる。

 しかし、wythonはそういう仕様になっていないので、全ての関数を並列に定義し、従って、num-of-visitorsを引数で何度も渡さなければならなくなっている。しかし、wythonでは、効率的でコンパクトな書き方よりも、冗長でも、しっかり「変数」や「代入」、関数呼び出し、引数、戻り値などを意識してプログラムを書くトレーニング用に作っているので、これはこれで仕様ということだ。

 ところで、元本の How To Design Programs は、その頭文字をとって HTDP と略称されるが、MIT (泣く子も黙る、マサチューセッツ工科大学) のコンピュータサイエンスの一番初歩の教科書として有名である。もちろん、本としても売られているが(そして、僕はそれも持ってはいるが)、Web上で全テキストが公開されている。http://www.htdp.org/

 この本で使っているSchemeというLispの方言の一つ(ただし、最も有力な方言の一つ)の処理系も同時に配布されている。DrSchemeという処理系で、PLT Schemeというサイトで公開されている。これは、Windows版、Unix版、MacOSX版が揃っており、さらにそれぞれがエディタまで含んでいるという総合的な処理系(もちろん無料)で、学習用の環境としては非常に整っている。

 今後も、折に触れ、この本から問題をピックアップしていきたいと思う。Schemeもおもしろいし、wythonの勉強にもなるし、プログラム入門用の問題集のデータを集めるたしにもなるし。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。