Awesome Common Lisp Learning
Common Lisp Learningを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
使い方
- Lisp環境を入手する。
- The Common Lisp Hyperspec.
- 自分に合ったレベルのLisp書籍をダウンロードして読み進める。例を入力し、コードを試す。別の書籍へ切り替えても構わない。
- Exercism.
- 行き詰まったらオンラインコミュニティを探し、賢い質問をする。
- Quicklisp.
- いずれ、使用しているLisp実装のマニュアルを読む。
Lisp環境
Lisp実装を直接実行することもできますが、編集環境を使うと作業が容易になります。
- パッケージ済み環境
- Portacle - 移植可能なマルチプラットフォームCommon Lisp環境。少しカスタマイズしたEmacsにSLIME、SBCL(人気のCommon Lisp実装)、Quicklisp、Gitを同梱。インストール不要で、すぐ簡単に始められる。
- Lispbox - IDE(Emacs + SLIME)、Common Lisp実装(Clozure Common Lisp)、ライブラリ管理ツール(Quicklisp)をWindows、macOS、Linux向けアーカイブとしてまとめたもの。Practical Common Lispで紹介された「Lisp in a Box」の後継。
- Lispworks Personal Edition - 一部制限のある、LispWorks Lisp向け非Emacs系IDE。
- Allegro Common Lisp - 無料のExpress Edition IDEと、YouTubeのトレーニング動画を提供。
- 上級ユーザー向け
- Articulate Common Lisp - Lisp環境を組み立てるためのHOWTO。有用なライブラリとプロジェクト構成の情報も掲載。
- 経験豊富なEmacsユーザーなら、SLIMEと対応するCommon Lisp実装をインストールすればよい。詳細はSLIMEマニュアルを参照。
- The Common Lisp Cookbookには、実装のインストールについて、Roswellのような実装管理ツールやDockerを使う方法など、さらに詳しい情報がある。
オンラインリファレンス
- The Common Lisp Hyperspec (CLHS) - Common Lispにおける決定版の言語リファレンス。今すぐブックマークしよう。
- 第7章 - Common Lisp Object System(CLOS)を扱う。
- The ANSI Common Lisp Standard Draft - ANSI INCITS 226-1994(旧ANSI X3.226-1994)規格の最終草案。
- 草案は無料だが、規格書は有料。
- 公式規格とほぼ同じで、CLHSよりこちらを好む人もいる。
- The Common Lisp Cookbook - 便利なLispレシピ集。CL情報を扱うほかのオンライン情報源一覧も収録。
- Common Lisp the Language (2nd Edition) by Guy L. Steele - ANSI標準化直前のCommon Lisp言語を説明する。リファレンスとしては使用しないこと。
- Cliki on CLtL2 - LOOPとFORMATについて、CLHSより有用な説明があるとしている。
- Stack Overflow on CLtL2 - 洞察や着想にはCLtL2、プログラミング時にはCLHSを使うことを勧める人もいる。
- CLtL2とANSI Common Lisp仕様の相違点一覧
- 第28章 - Common Lisp Object Systemを扱う。
オンライン書籍
無料でオンライン閲覧できる書籍を、概ね基礎から上級の順に掲載します。
- Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky - プログラミング初心者向けの優れた入門書。DTRACEやSDRAWなど、非常に便利なユーティリティのコードを収録。
- Common Lisp: An interactive approach by Stuart C. Shapiro - 主に演習を通じて学ぶ教科書。
- Practical Common Lisp by Peter Seibel - 経験豊富なプログラマー向けの優れた入門書で、CLがほかの言語と異なる点を最初から強調している。
- Common Lisp Koans - 厳密には書籍ではないが、言語学習を助ける公案集。
- On Lisp by Paul Graham - 中級程度の経験を持つLispプログラマー向けの優れた書籍。
- Let Over Lambda by Doug Hoyte - Lispマクロに関する上級書。
- 最初の6章をオンラインで閲覧できる。
- Comments on Let Over Lambda - 本書を読む前にOn Lispへ慣れておくべきで、序盤の進行が遅いと複数の人が助言している。
- クロージャーの章 - 複数の自明でない例を通じ、この機能の力を示す。
- Paradigms of Artificial Intelligence Programming by Peter Norvig - Lispの興味深い応用を多数収録するが、現在ではAIの良いリファレンスではない。
オフライン書籍
購入するか図書館から借りる必要がある書籍です。
- Land of Lisp by Conrad Barski, MD - 漫画を使い、ゲームを書きながら学ぶ楽しいLisp入門書。
- ANSI Common Lisp by Paul Graham - リファレンスとして有用で、CLOSを扱い、複数のサンプルプログラム実装を収録。
- Common Lisp Recipes by Edmund Weitz - Common Lispパターンの優れたコレクション。
- Object-Oriented Programming in Common Lisp by Sonya E. Keene - CLOSを詳しく説明し、サンプルアプリケーションで使い方を示す。
- The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow - CLOS Metaobject Protocol(MOP)を解説。
- 第5章と第6章(オンラインで閲覧可能) - Robert Strandhによる、CLOS向けメタオブジェクトプロトコル拡張仕様。
- 現代的なパブリックドメインCLOS MOP仕様が後継となっている。Jean-Philippe Paradis(Hexstream)によるもの。
- Adam Tornhill on AMOP - Practical Common Lisp、Object-Oriented Programming in Common Lisp、AMOPの順に読むことを推奨。
- 第5章と第6章(オンラインで閲覧可能) - Robert Strandhによる、CLOS向けメタオブジェクトプロトコル拡張仕様。
オンラインコミュニティ
- Cliki - Common Lisp Wiki。CL全般に関する優れたリソース。Getting Startedページと幅広いLisp書籍一覧を備える。
- #clschool、#lisp、#ccl、#sbcl、その他のルームは、Libera.Chatネットワーク上でCommon Lispを学ぶのに適した場所。(Freenodeは避けるべき。)
- Lisp Subreddit - 活発なコミュニティで、サイドバーに多数の有用なリンクとリファレンス文書がある。
- Common Lisp Subreddit - Common Lisp向けSubreddit。
- Exercism’s Common Lisp track - 実践を通じて言語を学び、コードレビューを受け、他の人と解決策を議論する優れた方法。
- Lisp Discord server - Lisp向けDiscord。Common Lisp専用チャンネルがあり、質問にも快く答えてくれる。
ライブラリ管理
これら自体はライブラリではありませんが、ほかのライブラリを探してインストールするのに役立ちます。
- Quicklisp - Lispライブラリ向けパッケージ管理プラットフォーム。
- Quickdocs - Quicklisp内プロジェクトのドキュメント。
- State of the Common Lisp Ecosystem, 2015 - 使うべきライブラリと、その理由を説明する記事。
- Articulate Common Lisp - 有用なライブラリをいくつか掲載。
Common Lisp実装
一般的なCL実装とそのマニュアルをアルファベット順に掲載します。特記がない限り、これらは自由ソフトウェア実装です。Clikiの自由ソフトウェアCommon Lisp実装一覧も参照してください。
- Allegro Common Lisp (ACL) - 商用だが、無料のExpress Editionがある。
- CLISP
- Clozure Common Lisp (CCL)
- Carnegie Mellon University Common Lisp (CMUCL)
- Embeddable Common Lisp (ECL)
- LispWorks - 商用だが、前述のとおり軽微な制限付きのPersonal Editionがある。
- Steel Bank Common Lisp (SBCL) - 作者個人のお気に入り。
- Scieneer Common Lisp (SCL) - 商用のLinux/Unix実装だが、無制限の無料評価版および非商用利用版がある。
謝辞
情報の多くは、Rainer JoswigによるCommon Lisp学習についてのStack Overflow回答と、現在は閉鎖されたStack Overflow Documentsサイトから得ました。ClikiのGetting Startedページも非常に役立ちました。