私はCommon LISPを学ぼうとしているC++プログラマーです。 Land of LISPのようないくつかの本を見て、LISPのさまざまな長所に関する数多くのオンライン記事を読みました。ただし、アドバイスが必要です。
Common LISPについて私が読んだほとんどすべては、それがどれほど驚くべきものであり、それを使って物事を驚くほど速く実行できるか、30年前に現代のプログラミング言語で多くの問題を驚くほど解決したかと関係があります。また、マクロの素晴らしさ、およびすべてのプログラミングパラダイム(OO、関数型、アクターベースなど)をLISPでどのように使用できるか、およびリストがどのようにして最終的なデータ構造であるかについても説明します。基本的にLISPを研究言語のように扱い、LISPの違いと革新性を説明します。
そして、そのすべてはおそらく本当ですが、問題は、ファイルを読み取って単語に分割し、それに対して何らかの処理を行うような実際的なことを行う方法をあまり見たことがないことです。私はCommon LISPを学ぶためにCommon LISPを学ぶことに興味はありませんが、C++で以前使用していたことをより速く、より少ないエラーで行うために興味があります。
つまり、私の質問はCommon LISPを使用して一般的なプログラミングタスクを実行する方法を教えることに焦点を当てた、最高のリソース(それはWebサイト、本など)ですのように
また、あまり実用的ではないが、ヒープ、スタック、バイナリ検索ツリーなどの一般的なデータ構造をLISPに実装する方法についても説明します。ただし、car
やcdr
を正しい方法で使用します。知りません。
これのうちのどれか(リストの最後の2つを例外として除く)がLISPで不可能であるか、人々がそれをあまり好きにならないと私は強く疑います。そして、私が読んだ前述のものは、LISP(Yahoo! Webストアが思い浮かぶ)で書かれた実世界のソフトウェアの多くに言及しています。
ただし、以前に(the?)命令型言語でプログラミングしたことがあるので、実際のアプリケーションを作成するために取得した新しい知識を使用することを切望しています。では、Lispを使って実用的なソフトウェアを書くことを学ぶ最も速い方法は何でしょうか?
ちなみに、ピーター・セイベルのPractical Common LISPを見てきましたが、TOCから判断すると、にのみ触れていますLISPを使用して実行することを学びたいことの一部。
もう1つ質問があります(これが2つの質問を1つに結合している場合は申し訳ありません)。LISPの関数やものへの参照はどこにありますか?
そして私本当にはLISPが好きになりたいです。
' Practical Common LISP 'を読むことをお勧めします。すでにいくつかの質問に答えているからです。
おそらく3〜4冊の本を読んでください:
一般的なLISPリファレンス
マニュアル
次に確認する必要があるのは、LISP実装のマニュアルです。ネットワーキング、スレッドなど、多くの特定の拡張機能について説明しています。
一般的なLISP実装のドキュメント:
[〜#〜] slime [〜#〜] (EmacsベースのLISP-IDE)には SLIMEユーザーマニュアル があります。
一般的なLISPライブラリのドキュメント:
図書館
ライブラリの使用
さて、あなたのポイントのいくつかを見てみましょう:
HyperSpec のファイルとストリームの辞書を参照してください。 WITH-OPEN-STREAM、READ、READ-LINE、READ-CHAR、READ-BYTE、READ-SEQUENCE、...
上記を使用してください。参照:WRITEおよび関連。
上記を参照。ディレクトリ、パス名、...
たとえば、CLSQLライブラリを使用します。
LISPのマニュアルを参照するか、ポータブルライブラリのいずれかを使用してください。 Quicklispを参照してください。
LISPのマニュアルを参照するか、ポータブルライブラリのいずれかを使用してください。 Quicklispを参照してください。
依存します。 Quicklisp または実装固有のライブラリを参照してください。
ファイルとストリームの操作については、Hyperspecを参照してください。書き込みバイト、読み取りバイト。ストリームをバイナリストリームとして開きます。
そのための既存のツールの1つを使用します。既存のパーサーを調べます。 LISPで書かれた多くのパーサーがありますが、それについての本にはあまりありません(AIの文献に記載されている自然言語パーサーを除く)。
依存します。 Quicklisp または実装固有のライブラリを参照してください。
依存します。 Quicklisp または実装固有のライブラリを参照してください。 -> FFI
最後のアドバイス:他の作者からのコードを読んでください。
他のLISPコードを調べます。非常に多様なLISPコードが十分にあります。ウェブサーバーから作曲ソフトウェアまで。
チェックアウト Cliki the Common LISP wiki これは、Common LISPで利用可能なライブラリのリストを提供し、すべてのアイテムの達成に役立ちます。
また、チェックアウトしたいのは Common LISP Cookbook です(さらに 更新バージョン もあります)。 一度に1行ずつファイルを読み取る や Cで記述されたライブラリと対話するための外部関数インターフェイス などの一般的なタスク用のコードがたくさんあります。
使用している実装に応じて、CでLISPの拡張機能を記述できます。たとえば、Emacs-LISPはCommon LISPではありませんが、それを可能にします。通常、やりたいことは、Common LISPでコードを記述し、さまざまなLISPコンパイラ宣言を使用して、または外部関数インターフェイスを使用する他のメソッドを使用して、コードを可能な限り最適化することです。
スレッド化は使用する実装に依存しますが、それらのほとんどは現在スレッドを持っていると思います。
Hunchentoot は、最高のLISP Webサーバーの1つであり、簡単に始めることができます。自分でスレッディングコードを記述する必要はありません。HTTPリクエストハンドラー関数を記述するだけです。
誰かがコンパイルした LISPのGUIオプションのリスト :