Lisp In A Box-なぜサーバーを起動するのですか?
-
08-07-2019 - |
質問
一般的な関数型プログラミングをより快適にするために、LISPに戻ることにしました(AIクラス以来使用していません)ので、Lisp In A Box(実際に前のクラスで使用した)をダウンロードしましたCLISPとEmacsに付属しています。
実行すると、次のように表示されます。
ポート1617で接続されています。兄弟、このREPLを使用してください。
何?それで、私はLisp In A Boxウェブページをより詳しく見て、これを見つけました:
SLIMEはEmacsの統合開発環境であり、ネットワークソケットを介してCommon Lisp実装とインターフェースします。 SLIMEに関する多くの情報は、CLikiのSLIMEノードにあります。 SLIMEのマニュアルは、オンラインでPDF形式で入手できます。
SLIMEとは多少理解できます(emacsの何らかの拡張機能ですよね?)しかし、なぜ世界でテキストエディターが独自のサーバーを起動して接続するのですか?
解決
ソケットはパイプよりも柔軟性があります。たとえば、SLIMEを使用すると、ネットワーク上のSwankサーバーに接続できます。これは、長時間実行されるプロセス(Webサーバーなど)を備えたリモートマシンでライブ修正を行う場合に非常に便利です。これを考慮して、パイプとソケットの両方をサポートするような方法で通信を抽象化することにより、複雑さの別のレイヤーを追加するのはなぜですか?とにかく、パイプはソケットよりもプログラムが簡単ではないようです。
他のヒント
目的は、Lispが並行して実行されるようにすることです。
Slimeはセッションに接続し、多くの異なるウィンドウ(またはマシンでさえ)から同じ環境、定義などを持つことができます。これは、たとえば、アプリケーションを起動して、その場でデバッグできることを意味します。
詳細については、このブログをご覧ください。
まあ、Slimeは統合開発環境を提供するためにLispプロセスを開始します。そのため、コードをオンザフライでテストおよびデバッグし、オブジェクトを検査することもできます。 ソケットのあるアーキテクチャは、異なるlisps間の移植性を高めるために選択されたと思います(ところで、Slimeは Clojure および MIT Scheme )およびOS-es(SlimeはWindowsでも動作します)。また、クロスプラットフォーム開発が可能になります-Emacsからターゲットアーキテクチャでソフトウェアをテストできます。
だから、この決定は素晴らしいと思うので、本番サーバーにswank(Slimeバックエンド)を置いてはいけません。
REPL(read-evaluate-print-loop)が並行して実行されるため、エディターからコードスニペットをオンザフライでコンパイルおよびテストできます。 " Practical Common Lisp" (ウェブ上で無料で入手可能)これについての良い説明があり、Lispを学ぶための非常に良い本です。