RtS:び

RtS:び

Scheme:RoadToScheme

最初にSchemeを使ったのはいつ頃でしたか、またその処理系は?

1990年か91年頃、XSchemeという処理系だった。それを使って実用的なプログラムを作るというより、当時本格的に使い始めたCの勉強のためにソースコードを読むのが主だった。その後、DOS Extenderで動くMIT Schemeと、その上に実装されたEmacs CloneのEdwinをいじったりした。日本語が通らなかったので、何とか通そうとあがいたんだけど、スキル的に全く歯が立たなかったなぁ。

DOSを捨ててLinuxを使うようになってからはscmを試してみたり、gwmをカスタマイズしてみたりしたくらい。あまりSchemeを使ったという印象はない。Perlや、Rubyがほとんど。でも、ちょっとしたGUIを書く時はTclが嫌いでSTkを使った。STkには日本語化パッチがあったのでかなり重宝した。

どうしてSchemeを使ってみようと思ったのでしょう

何でだろう? そもそも、中村正三郎氏のエッセイだったかに「優れたプログラマになるにはCでLisp処理系を書くべし」てな主旨のことが書かれていて、そんなものかと「Cプログラムブック III -- Lisp処理系の作成 --」を図書館で借りてきて読んでみたのがLispとの出会いだった。結局半分くらい入力したところで返却期限が来てしまい、そのしばらく後に大学の先輩か誰かからXSchemeのソースコードをもらったのだ。けっこう真剣に読んだし、自分でちょこちょこいじって遊んでもみた。結局、Schemeを使ってみようというより、Cプログラミングの教材としていじってみてたというのが本当のところ。でもしばらく後でR4RSのLaTeXファイルをもらって読んで、すごくシンプルで美しいとは思っていた。

それまで良く使っていた他の言語は?

C、VZエディタのマクロ言語(笑)、sh、sed、awk、jperl。8086のアセンブラもちょっと齧ったけど、ほんとに齧っただけ。BASICには全く縁がなかった。計算機というものに初めて触れたのが大学生の時で、最初はそれほど興味もなかったんだけど、先輩の実験データの処理を手伝うためにプログラムを書いてるうちにハマっていった。そういうスタートだったから、最初からわりと高水準言語を多く使っていた気がする。

どのくらいSchemeを使い込んでいますか?

2年ほど前にGaucheを使い始めて、初めてSchemeで実用的なプログラムを書くようになった(笑)。それ以降はUNIX系OS上で動かすプログラムはほぼ全てGaucheで書く(自分が扱うUNIX系OSのマシンには全てGaucheをインストールしている)。コード量で言うと、多分8割は超えていると思う。わりと短期間(数ヶ月)しか使わず、他のプログラマと連携することもほとんどないというイベント屋の特殊な事情があればこそかもしれない。それと、Gaucheは拡張モジュールが割と簡単に書けるので、機能をすぐ補えるというのも大きい。

Schemeについて感じてることをざっくばらんにどうぞ

憶えることが少ない代わりに、考えることが多い、考えるという行動にマッチした言語なんじゃないか。もちろんこういう感覚は個人差が大きいだろうけど、少なくともわたしは、JavaやRubyで考える時より、Schemeで考えている時の方がよりまっすぐ問題にアプローチできる気がする。そこが、Schemeを日常の道具として使っていて気持ちがいいところ。でも、Lisp系の言語はSchemeに限らず、エディタの入力支援がないと読み書きが非常に辛いというのは欠点だと思う。ワンライナー書けないし。そういう意味では、UNIX的じゃない。フィルタプログラムしか書かないんだったら、Schemeを使う旨味は少ないんじゃないか。自分が業務の中で書いているプログラムを考えてみても、Schemeの強みを生かしたものは少ない。そういう意味ではもったいない使い方をしているかも。

もしSchemeなかりせば

たぶんRubyを使い続けていたと思う。Rubyも拡張モジュールを書くのが割と楽だし(結局そこかい)。Common Lispはあの巨大な仕様に圧倒されるし、関数と変数とが別の名前空間になっているのが好きになれないので多分使わないだろう。でも最近Common Lispの仕様やPaul Grahamの「ANSI Common Lisp」を読んで、GaucheのあちこちにCommon Lispの影響があるのに気づいてにやにやしている。


Last modified : 2005/09/13 02:36:54 UTC