[Practical Scheme]

Practical Scheme

-> English page

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

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

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

2021/8/28
Paul Graham氏のエッセイ「Weird Language」を 翻訳しました。

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

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

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

Gauche - Current version 0.9.15 (2024/04/24)*New

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

WiLiKi - Current version 0.6.2 (2014/11/28)

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

Chaton - Current version

CometベースのWebchatシステムです。

escm - Current version 1.1 (2014/11/28)

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

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

ライブラリパッケージ

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

Gauche-gl - Download  Document  Current version 0.6 (2014/08/09) 

GaucheからOpenGLを使うための拡張ライブラリです。 OpenGL 1.0〜4.1のだいたいのAPI (OpenGL Shading Languageを含む)と、 GLUとGLUTの一部をサポートしています。 Gauche 0.9.4以降が必要です。

Gauche-gtk2 - Download  Document  Current version 0.6.1 (2022/3/20) 

GaucheからGTK2を使うための拡張ライブラリです。

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

Scheme, Lisp関係の文書

自作文書

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

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

Shooting A Moving Target--- An Experience In Developing A Production Tracking Database

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

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

Efficient floating-point number handling for dynamically typed scripting languages (pdf)

Dynamic Language Symposium 2008での発表論文。

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

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

なんでもλ

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

なんでも再帰

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

Schemer's Way

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

Scheme Cross Reference

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

翻訳文書

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

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 

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

Y Combinatorを始めた理由 ---Why YC--- 2009/08/23 

世界経済をハックする。

起業の前に ---Before the Startup 2014/09/30 

起業に備える最良の方法。

ヘンな言語 ---Weird Language 2021/08/28 

プログラミングについての考え方を広げるには、ヘンな言語を学ぶことだ。

読む必要性 --The Need to Read--- 2022/11/24 

読むことでしか得られないこと。

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

他サイトのリソース

Schemeに関するリンク集参照。