]>
Schemeというのはプログラミング言語の一種なんだけれども、はっきり言ってかなーりマイナーなので仕事でプログラム組んでる人にも知られてなかったりする……。そんなSchemeのすごさをひっそり広めてみる試み。
SchemeはもともとLispから派生したもので、関数型言語のひとつ。関数型言語の仲間のうちでは、LispとHaskellあたりが有名……っていってもたかが知れてるますね。構文が非常に単純なことと、徹底的に抽象化されていることが特徴です。こうした理由から大学の授業なんかでよく使われます。C→Javaとやってきて、オブジェクト指向とかデザインパターンがどーもわかんないんですよって人がたまにいますが、間に関数型言語が挟まればまずそんなことは起きません、たぶん。関数型言語を学ぶと、プログラムの構造に眼を向ける癖がつくからです。
(define (sqrt x)
(define (improve guess)
((lambda (a b) (/ (+ a b) 2)) guess (/ x guess)))
(define (sqrt-iter guess guess-p)
(define (good-enough?)
(< (abs (- guess guess-p)) (* guess 0.001)))
(if (good-enough?)
guess
(sqrt-iter (improve guess)
guess)))
(sqrt-iter (improve 1.0) 1.0))
Schemeのプログラムはたとえばこんな感じになります。はじめての人にはどう読んでいいのかすらわからないと思いますが、これはある数の平方根を求めるプログラムです(念のために言っておくと、Schemeには平方根を求める関数は最初から入ってます)。しかしこういう小さい例から初めてだんだん複雑な構造を考えていきましょう、というのがSchemerのバイブル『計算機プログラムの構造と解釈』の教えなので、とっくに誰かが作ってるものであってもどんどん再実装しながら勉強していくのがよいと思います。
上に述べたようにSchemeの実装はコンパクトですが、かなり強力なライブラリ群を持っているため、ちょっとなんか書いてみようかなというレベルならまず不自由なく書けます。そして何より書いてて楽しい!大量の括弧をみて難しそうだなと思う方がよくいるようですが、括弧の対応は機械がとってくれるので、プログラマがやるのは構造をしっかり考えることだけです。
僕の予想では、2008年くらいには関数型言語のブームきちゃうんじゃないのかな?という感じなので、ちょっと触ってみてもいいんじゃないでしょうか。
http://www.panopticon.jp/mt/mt-tb.cgi/3
コメントする