[Practical Scheme]

Practical Scheme

-> English page

このページでは、プログラミング言語Schemeの紹介、および 自作のSchemeのライブラリやアプリケーションの紹介をしてゆきます。 特に、ファイルをパーズしてテキストファイルを生成したりとか、 プロセスを監視したりとか、ちょっとしたGUIをでっちあげる と言った、職業プログラマとしてやってく上で避けて通れない雑用に便利な ライブラリが中心になる予定です。

SchemeはLisp系の言語で、見かけはLispに良く似ています。 Lispと聞いたら人工知能用言語だとか、もう古くさい言語だとか思われることも 多いんですが、CommonLispで書かれた実用的なアプリケーションはいろいろ ありますし、Schemeも拡張言語としてそれなりに使われています。 ただ、いかんせんマイナーな言語であることは間違いなく、メンテできる人が居ない とか他に分かる人が居ないという理由で採用が見送られることがあるのは事実です。

機能的な問題ではなく、知る人が少ないことで敬遠されるのならば、宣伝してポピュラー にしてしまえば良い、そう思ってこのサイトの準備を始めました。 「Schemeって何?」「Schemeって実用になるの?」等と聞かれた時に、 黙ってここのURLを示せるようなサイトにして行きたいと考えています。

2008/2/13
Gauche-0.8.13, WiLiKi-0.6をリリースしました (アプリケーションとツール)。
2007/9/5
Paul Grahamのエッセイ "News from the Front" を翻訳しました (翻訳文書)。
2007/8/16
Gauche-0.8.11をリリースしました (アプリケーションとツール)。
2007/7/9
Gauche-gl-0.4.4をリリースしました (ライブラリパッケージ)。

------------------------------

アプリケーションとツール

Schemeに関連したスタンドアロンのプログラムです。

Gauche - Current version 0.8.13 (2008/02/13)*New

スクリプトインタプリタとしての使い勝手を追求した、 R5RS準拠のScheme処理系です。 起動が速いこと、システムへのアクセスが組み込まれていること、 最初から多国語対応を考慮していること、 リスト処理ライブラリとして他のC/C++プログラムから 簡単にリンク可能であること、 などを目標としています。

WiLiKi - Current version 0.6 (2008/02/13)*New

Schemeで書いたWikiエンジンです。

escm - Current version 1.1 (2001/04/06)

テキストに埋め込まれたScheme式を展開しながらコピーする フィルタプログラム。このプログラム自身は特定のScheme実装とは 独立しており、好きなSchemeと組み合わせて使えます。 ダイナミックな部分がちょっとだけ入っている ようなテキストファイルを処理するのに便利。このページでも ライブラリの更新日時等を生成したり、英語版と同期を取るのに 使っています。 なお、escmの後継であるaescmがTAGA Yoshitakaさんによって 開発されています ( http://sourceforge.net/projects/escm/)

------------------------------

ライブラリパッケージ

以下のライブラリはGauche用に 書かれたものです。 STk用に書かれたライブラリについてはこちら へどうぞ。

Gauche-gl - Download  Document  Current version 0.4.4 (2007/7/9) 

GaucheからOpenGLを使うための拡張ライブラリです。 OpenGL 1.0〜2.0のだいたいのAPI (OpenGL Shading Languageを含む)と、 GLUとGLUTの一部をサポートしています。Mesa3.4、NVidia GLX 1.0-7174, Cygwin opengl 1.1.0-6, 及びMacOS Xで動作します。 Gauche 0.8.6以降が必要です。

Gauche-gtk - Download  Document  Current version 0.4.1 (2004/6/26) 

GaucheからGTK2を使うための拡張ライブラリです。 Gauche 0.8以降、Gtk 2.2または2.4一揃い、及びpkgconfigが必要です。 (Cygwinではまだ動きません)。 また、--enable-gtkglをつけてconfigureすることにより、 GtkGLExt (0.6.0 or later)も使うことができます。 Note: 2006年末より、 Gauche-gtkのメンテナンスはMichal Marska氏に引き継がれました。 現在、彼の変更をCVSにマージしてもらっているところです。

------------------------------

Scheme, Lisp関係の文書

自作文書

プロダクション環境におけるScheme/Lispの利用事例 2000/10/14 

とりあえず、現場でも使われているのです、という主張。

Shooting A Moving Target--- An Experience In Developing A Production Tracking Database 2002/03/30 

CommonLispですが、現場での使用事例です。 2000年5月の日本Lispユーザ会議(JLUGM)に出したもの。

Tracking Assets in the Production of 'Final Fantasy : The Spirits Within'

上の記事の後日談というか、post mortem。 Game Developers Conference 2002で発表したもの。

Gluing Things Together - Scheme in the Real-time CG Content Production 2003/10/17 

International Lisp Conference 2002での発表論文 (2003/10/17 html化しました)。 SIGGRAPH 2000と2001の展示に出したデモでSchemeを使った話。 PDF版もあり。

Multibyte character string processing in Scheme 2003/10/17 

International Lisp Conference 2003での発表論文。 PDF版もあり。

Schemeの実装におけるスタックフレーム 2004/12/31 

Schemeは抽象度が高いぶん、実行時にハードウェアレベルでどう動いているのか わからん、という方に。末尾再帰と継続についてもそのうち書いてみる予定です。

なんでもλ 2002/03/28 

Schemeプログラムに氾濫するlambdaに戸惑うCプログラマへ。 これであなたもλ使い。

なんでも再帰 2002/03/28 

Schemeプログラムに氾濫する再帰に戸惑うCプログラマへ。 これであなたも再帰使い。

Schemer's Way 2002/06/09 

何でSchemeがそんなに良いの? という問いに対する、ひとつの回答。

Scheme Cross Reference

様々なScheme処理系のライブラリ関数のクロスリファレンス。 「この処理系のこの関数は他の処理系にもあるの?」 「こういう処理をする関数を書きたいんだが他の処理系にありそうだな」 等の疑問を一発解決すべく、常時更新中。

翻訳文書

ガベージ・イン/ガベージ・アウト: 善き人々が悪しきプログラムに手を染める時 2003/10/04 

Henry Baker氏のACM SIGPLAN Noticesのコラムの翻訳。 今明かされる、エレガントなプログラミングスタイルの秘密。 そして、恐るべき「λたちの沈黙 The Silence of The Lambdas」 とは!

普通のやつらの上を行け ---Beating the Averages 2005/01/20 

Paul Graham氏の記事の翻訳。 Lispの実業への応用の成功事例であると共に、 人々が自分のプログラミング言語にこだわる理由を鋭く指摘する。

もうひとつの未来への道 ---The Other Road Ahead 2004/04/10 

Paul Graham氏の記事の翻訳。 「普通のやつら」と同時期のもので、 未来のソフトウェアはWebベースのものが主流になるのではないか、 という議論。

人気の言語を作るには ---Being Popular 2004/03/17 

Paul Graham氏の記事の翻訳。 新しいLispのあるべき姿に関する氏のアイディアをまとめたものだが、 どんな言語設計者あるいはシステム設計者にも示唆深い内容を含んでいる。

Lispがそんなにすごいなら ---If Lisp Is So Great 2004/03/20 

Paul Graham氏の記事の翻訳。

ものつくりのセンス ---Taste for Makers 2003/04/14 

Paul Graham氏の記事の翻訳。 プログラミング言語に限らず、様々な分野での「良いデザイン」に 共通する性質を分析する。あまりLispの話は出て来ないのだが、 ものを作る立場の者として元気づけられたので訳してみた。

技術野郎の復讐 ---Revenge of the Nerds2004/03/20 

Paul Graham氏の記事の翻訳。 全ての言語はLispに向かう?

簡潔さは力なり ---Succinctness is Power 2002/06/09 

Paul Graham氏の記事の翻訳。 プログラミング言語の力とは、簡潔さに帰着するのではないか。

「技術野郎の復讐---Revenge of the Nerds---」への反響 2002/10/14 

Paul Graham氏が「技術野郎の復讐」に寄せられた反響に対して答える。

PythonとLispの関係について 2002/06/01 

「技術野郎の復讐」に対する、PythonプログラマPaul Prescod氏の反論。 プログラミング言語のもう一つのあるべき姿に対する、 極めて説得力のある議論。

なぜArcはとりたててオブジェクト指向でないのか---Why Arc Isn't Especially Object-Oriented 2005/01/22 
Rees Re: OO 2005/01/22 

Paul Graham氏による、Arcが「オブジェクト指向言語」でない理由と、 それに対するJonathan Rees氏からのコメント。

デザインとリサーチ 2003/01/03 

Paul Graham氏の記事の翻訳。

スパムへの対策 ---A Plan for Spam 2005/02/07 

Paul Graham氏の記事の翻訳。統計的手法によるスパムフィルタリング。

ベイジアンフィルタの改善 ---Better Bayesian Filtering 2003/08/14 

Paul Graham氏の記事の翻訳。「スパムへの対策」の続編。

百年の言語 ---The Hundred-Year Language 2003/04/17 

Paul Graham氏の記事の翻訳。100年後でも通用するプログラミング言語とは。

ハッカーと画家 ---Hackers and Painters 2003/05/19 

Paul Graham氏の記事の翻訳。ハッカーを志す人必見。

反撃するフィルタ --- Filters That Fight Back 2003/08/10 

Paul Graham氏の記事の翻訳。「スパムへの対策」、 「ベイジアンフィルタの改善」に次ぐ、スパムフィルタ記事の続編。

口にできないこと --- What You Can't Say 2004/04/10 

Paul Graham氏の記事の翻訳。 いかにしてアイディアを産むか。

素晴らしきハッカー --- Great Hackers 2004/08/16 

Paul Graham氏の記事の翻訳。良いハッカーの資質とは何か。 そして良いハッカーになるためにはどうすれば良いだろうか。

Pythonのパラドックス --- The Python Paradox 2004/08/11 

「素晴らしきハッカー」の補足。 良いプログラマを雇うには。良い仕事に採用されるには。

知っておきたかったこと --- What You'll Wish You'd Known 2005/01/23 

高校生の君達へ。

学生のためのベンチャー指南---A Student's Guide to Startups 2006/12/05 

いつスタートアップを始めるのが良いか。

前線からのニュース---News from the Front 2007/09/04 

どの大学に行くかってことは、そう大した問題じゃない。

------------------------------

他サイトのリソース

プログラミング言語Scheme
Schemeに関する日本語のリソースの起点です。
プログラミング言語
「入門Scheme」の著者、犬飼大さんの、Schemeを中心としたプログラミング 言語のページ。 理論的な視点と実用的な視点の両方を備えたページです。
Jfilter
犬飼大さんによる、日本語処理に無くてはならない、漢字コード変換ライブラリ。
お気楽ごくらくプログラミング入門--Lisperへの道--
Lisp入門があります。他にもPrologとかX68000とか。
(Scheme) (Lisp)
各種Scheme処理系のインストール方法と、 SchemeでPerlっぽい記述が出来るマクロライブラリPerl.scm等の ライブラリがあります。 Perl.scmは書き捨てのスクリプトを書くのに良い感じ。
Schemers.org(英語)
Schemeに関する情報を集める良い起点です。言語標準である R*RS ドキュメント、Schemeの拡張仕様の共通インタフェースを決める SRFI's--- Scheme Request For Implementation---等が 置かれています。
WindowsでSchemeを
Windows上でChez Schemeを手軽に使える環境ChezEditが公開されています。 またLisp, Scheme及びプログラミング一般に関するエッセイが面白いです。
chiのページ
SRFI翻訳プロジェクト、SCM、SLIB、MIT Schemeマニュアルの日本語訳等が あります。