|
|
|
しかし、優秀なハッカーは Scheme 好きが多いので、Scheme を習っておいて損は無いと思います。 実際、最も優れたコンピュータ科学の教科書の1つである Structure and Interpretation of Computer Programs (SICP) 日本語訳:計算機プログラムの構造と解釈 のプログラム例も Scheme で書かれています。 また、GNU は拡張言語に guile という Scheme を採用しています。 guile は MS-Word や Excell のマクロのようなもので、 簡単なスクリプトで、アプリケーションを制御できます。
紫藤は Common Lisp の方が詳しいのですが、これから Lisp 系の言語を勉強しようという人には Scheme の方がお勧めです。 理由は、
Scheme を習うと筋が良くなる と言われています。たとえ Scheme そのものを仕事で使うことが 無いとしても、Scheme によって培われた筋のよさは、他の言語を使う場合でも役に立つでしょう。
Scheme は人気のある言語なので、Scheme の入門サイトは数多くありますが、 どれも、まったくの初心者には少し難しいようです。 これから書く、一連の文書では、易しく、噛み砕いた説明を心がけます。 前提知識もほとんど必要としないように書こうと思っています。
具体的には、
scheme は文法が易しいので、簡潔に説明することができます。 しかしそうすると勾配がきつい解説になってしまうので、ここではゆっくりと なだらかな勾配の解説を目指します。 やはり、初めは括弧だらけのコードに戸惑うかもしれません。 (Scheme のコードがどんな感じかは例えばここをみて下さい。) しかし、適切なエディタを選べばカッコの対応、インデントは自動でやってくれるので 括弧を気にしないで読み書きできるようになります。 人間はインデントでコードを読みます。インデントがおかしいのは括弧の数がおかしいので、 エディタを使ってどの括弧がどれに対応するかを調べ、括弧の数がおかしいところを探します。
Scheme にもいろいろな仕様があって、最近よく使われている仕様は R5RS と R6RS です。 学習向けには R5RS で十分ですが、実用的なプログラムを書くには R6RS の方が便利でしょう。 また、R6RS では、R5RS で明確でなかった点もきちんと規定されています。 徐々に R6RS が普及していくと思うので、この入門記事では R6RS に準拠して記述します。
RnRS は Revised n Report on the Algorithmic Language Scheme の省略形で、 それぞれ以下のサイトで見ることができます。
R5RS | 原文 | 翻訳 |
R6RS | 原文 | 翻訳 |
また、Scheme Requests For Implementation (SRFI) という標準化ライブラリもあります。 R5RS が 言語のコアしか規定していなかったため、実装ごとに異なる拡張機能が生じ、実装間の互換性が低下しました。 そこで、拡張機能の標準化を目指した SRFI が策定されました。
Windows で動く Scheme の処理系には ChezScheme, MzScheme, SCM などいろいろありますが、 この講座ではインストールが簡単で、動作が早い MzScheme の を使用します。 MzScheme は最近広く用いられている scheme 処理系で、 最新の仕様 R6RS にいち早く対応しています。 また、SRFI もサポートしています。
最後に、MzScheme.exe があるディレクトリに PATH を通しておきます。 WinXP で PATH を通す方法はここなどを参考にしてください。 (google で検索するといろいろとヒットします。)
また、後述する DrScheme を利用する場合は MzScheme も同時にインストールされます。 そのため、MzScheme を単独でインストールする必要はありません。 実は、MzScheme は PLT-Scheme という処理系のエンジン部分で、DrScheme は PLT-Scheme のフロントエンドです。 PLT-Scheme をインストールすると MzScheme と DrScheme の両方がインストールされます。
DrScheme の使用法は DrScheme: PLT Programming Environment、 DrScheme クイックリファレンス 、 DrScheme の使い方 などを参考にしてください。
インストーラを使って簡単にインストールでき、余計な設定作業がなく、すぐに使い始めることができるので、 多くの人にお勧めです。
Emacs を使うと将来 Scheme 処理系を変更したときも、同じ Emacs とカスタマイズした設定が使えます。 他の処理系を試してみたい人には Emacs の方が便利だと思います。 (ちなみに 紫藤は Scheme プログラムの作成には Emacs を使っています。)
Windows 版 Emacs は ftp://ftp.gnu.org/gnu/emacs/windows/
からダウンロードできます。2008/06/29 現在の最新版
emacs-22.2-bin-i386.zip をダウンロードして、好きなディレクトリに解凍するだけでインストール完了です。
解凍して生成した bin/runemacs.exe のショートカットをディスクトップに作っておくと便利でしょう。
最後に emacs と MzScheme の 初期化ファイルを編集してセットアップ終了です。
(show-paren-mode t) ; 対応する括弧を表示する (setq scheme-program-name "C:/Program Files/MzScheme/MzScheme.exe") ; run-scheme で動かす処理系 ; もし上の設定でうまくいかなかった場合は C:/Program Files/MzScheme に PATH を通して、 ; (setq scheme-program-name "MzScheme.exe") ; を試してみてください。 (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t) (define-key global-map "\C-cs" 'run-scheme) ; C-c s で emacs 上で MzScheme が走るようにする ;; Emacs を scheme 専用に使う時には以下を追加すると便利 (setq inhibit-startup-message t) ; 起動画面を表示しない (run-scheme scheme-program-name) ; 起動時にいきなり scheme 処理系を走らせる
> (find-system-path 'init-file ) ; これで、初期化ファイルのパスがわかる #<path:C:\Documents and Settings\USER\mzschemerc.ss>とします。
[mzschemerc.ss に追加するコード]
(current-error-port (current-output-port))これで、準備完了です。 Scheme のコードの作成と、テストを Emacs の内部でできるので便利です。 図 2 にスクリーンショットを示します。 上のウィンドウでコードを編集し、下のウィンドウで実行します。 この環境を使うと関数単位でテストできるのでストレスなくプログラムを書くことができます。
Appendix 6
に Emacs の使い方を書いておきました。
参考にしてください。
Scheme に関する本やサイトはここ にまとめておいたので、参考にしてください。
|
|