独学Common Lisp

さて次は? HyperSpecへの船出

これまでCommon Lispの様々な機能について説明してきました。これでMinimum Common Lispは終わりです。

Minimum Common LispはCommon Lispの仕様を網羅して説明したり、実用的なアプリケーションを作ることを通じてトレーニングするという目的で書いてはいません。このコンテンツは、より深い習得のための基礎工事をイメージして作りました。

従来、LISP系の言語の学習はSchemeが主に使われていましたが、最近ではPythonの隆盛によりMITでさえもSchemeの初級講義が無くなったと聞きます。しかし、いろいろ調べるとまだまだ実際のプロジェクトでLISPが使われていることに加え、Clojureのように新しいLISP方言も登場しています。LISPを学び、使う意義は決して失われていないと思います。

しかし、Schemeの入門はあまりにアルゴリズムと抽象的な概念に寄りすぎており、Common Lispは入門のコンテンツが少なく、その多機能性をアピールするようなものが主流だったのではないでしょうか。「学ぶならScheme、使うならCommon Lisp」ということはよく言われますが、実際には二つの言語の断絶は意外と大きいものがあり、最初からCommon Lispを使って一貫して基礎を学ぶことができれば、と考えてこのコンテンツを作りました。

Common Lispについてより深く知るためには、どうしても原典にあたらなければなりません。このコンテンツでCommon Lisp HyperSpecへの参照を多用したのは、たとえ英語であってもやはりCommon Lispの仕様というのは大事であろうと考えたからです。逆にCLHSを自分で調べて使うことができるようになれば、Common Lispの広く深い世界を自分で泳ぐことができるだろうと思うのです。

ライブラリなども同じです。よいライブラリにはよいドキュメントが不可欠であり、公式のマニュアルを読むか、ソースコードを自分で読むかしなければならない時が必ず来るでしょう。その時に原典にあたることができれば、きっと壁を乗り越えられると思います。

日本語と英語では世界の知識量が違いますから、日本語の文献に限定して知識を集めようとするとどうしても限界があります。確かに英語で書かれたドキュメントを読むのは大変かもしれませんが、日常英語とは違い専門用語をある程度知っていればそれを手掛かりに理解できることがあります。私は日常英語のヒアリングよりも、経済系・コンピュータ系の専門論文のリーディングの方が理解できるような気がしています。

Minimum Common Lispを読み終えた後は、ぜひCommon Lisp HyperSpecのChapter Indexを流し読みしてみてください。プログラミングの領域は人によって違いますし、趣味であっても問題関心はかなり違うでしょうから、自分の興味のある分野からで構いません。

実際にCommon Lispでプログラムを書く段階になれば、CLikiのCurrent recommended librariesを手掛かりに様々なライブラリを見てみましょう。Common Lispには長い歴史と安定的な仕様があるため、昔のものでも動かすことができると思います。インストールに失敗してもASDFの基礎知識があれば大丈夫です。問題の所在を突き止めてasdファイルを修正するか、欲しい関数と必要な部分だけ自分のプログラムに移植するなど、様々な方法が検討できるでしょう(著作権には留意してください)。

書籍系であればOn LispPractical Common Lispの二冊をおすすめします。どちらも日本語訳も出ていますから読みやすく、内容が濃いものになっています。

Common Lispには正しいスタイル、従うべきスタイルというものはありません。時に関数的であり、時に手続き的であり、時にオブジェクト指向的です。マクロを使えば、言語そのものを解体することも、構築することもできます。ぜひ自由に楽しんでください。

みなさんの幸せな船出を記念して、'(Happy Hacking!)

(2017年1月)


Copyright © 2017- satoshiweb.net All rights reserved.