web-dev-qa-db-ja.com

Lispで(深刻な)Web開発を行うことは可能ですか?

ほぼすべてのプログラミング言語、特にLISP(SchemeまたはCommon LISPのような)のような強力な言語で、ほぼすべての種類のアプリケーションを作成できることは明らかです。しかし、Web開発に使用するのは実用的ですか?もしそうなら、良い出発点は何ですか?この種のプロジェクトの適切なリソース(ツール、ライブラリ、ドキュメント、ベストプラクティス、例など)はどこにありますか?

96
Leonardo

はい、Web開発は今日のCommon LISPの強みの1つです。

  • Webサーバーとして、 Hunchentoot (以前はエドモンドワイツ博士によってtbnlとして知られていました)を使用します。

    Mod_proxyをリバースプロキシとして使用するApacheのバックエンドとして、またはスタンドアロンサーバーとして実行できます。

  • PHPスタイルのテンプレートからLISPマクロハックからXSLTまで、さまざまなHTML生成ソリューションを利用できます。選んでください。

    HTML-TEMPLATE は一例です。

  • Closure XML は、XML解析、シリアライゼーション、XPath 1.0、XSLT 1.0で利用可能です。 HTMLタグスープ解析用のClosure HTMLもあります。

    (完全開示:Closure XMLおよびClosure HTMLのメンテナーです。)

  • 必要に応じて、 Parenscript を使用すると、JavaScriptをより快適に使用できますが、もちろん、昔ながらのJavaScriptを自分で作成することもできます。

    jwacs のもう1つの優れたJavaScript拡張ソリューション。CommonLISPで記述され、JavaScriptを変換して継続サポートを追加します。

  • Webサービスプロジェクトでは、サーバーに加えてHTTPクライアントが必要になる場合があります。

    Drakma は、今日そのために使用するライブラリです。

    [〜#〜] puri [〜#〜] はURI操作に役立ちます。

    そして、もっとあります!最初の出発点はクリキです。たとえば、 cliki.net/web です。

Web上では、サーバーがCommon LISPで記述されていることを誰も知りません:-)

81

Common LISPでのWeb開発は効果的で楽しいものです。

いくつかの例:

CL-WHO を使用すると、終了タグを再度忘れずにHTMLを記述できます。

Weblocks では、組み込みの検証を使用してフォームを宣言的に定義できます。

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

また、AJAXは完全に自動化された方法でサポートされ、ブラウザがサポートしていない場合は通常のリンクにフォールバックします。

cl-prevalence は、SQLの非常に単純な代替手段です。

かなり多くの人々が最近、ミッションクリティカルなアプリケーションにこれらのテクノロジーを使用していますが、成功しています。

実際、最も重要なCLオープンソースプロジェクトには、優れたコミュニティサポートがあります。

30

Web開発用のWebフレームワークがいくつかあります。見て:

十分にサポートされているLISPツールが必要な場合は、それらの費用を支払う必要があります。オープンソースツールの周りにはあまり大きなコミュニティがないため、PythonのDjangoと同じレベルのドキュメント/採用はありません。

いくつかの商用LISP製品は次のとおりです。

また、Redditは当初LISPで構築されていましたが、作成者は、よく使用され文書化されたライブラリが不足しているため、後にPythonに移行しました。 ( リンク

19
d4nt

LISP Webフレームワークがないという神話をさらに払拭するために、まだ言及されていないものを以下に示します。

明らかに、多くの人々が、LISPは多くのWebフレームワークを書くのに十分だと考えているようです。

私はWebフレームワークを使用または推奨しません。私は、あなたが構築しているアプリケーションに実際に適切な方法でデザインパターンを使用して、直交ツール(David Lichteblauがいくつかの良いツールについて言及している)を組み合わせてWebアプリケーションを構築することを好みます。 Common LISPは、このようなツールの豊富さと、それらを組み合わせる比類のない機能の両方を提供します。

Adam Petersenは、昨年このスタイルでLISP Webアプリケーションの構築を開始する方法に関する優れた入門チュートリアルを公開しました。

http://www.adampetersen.se/articles/lispweb.htm

9
vsedach

私は他のフレームワークと話すことはできませんが、ウェブサーバーに Hunchentoot を使用して非常に幸運でした(それ自体でうまく動作します、または Apacheの後ろに置きます =)。本当に輝いているのは(おそらくこれは一部の人にとってショックになるでしょう)ライブラリです!

  • CL-WHO を使用して、LISPスタイルの構文で簡単にHTMLを記述します
  • Parenscript は、javascriptにコンパイルするコードを記述できます
  • データベース接続のために Postmodern を使用して PostgreSQL と通信します

CL for the webを使用して本当に気に入っているのは、実行中にすべてを微調整できることです。常にREPLを起動してサーバーコードを実行している場合、そのREPLに接続して、コードの動作を変更または検査することができます。サイトの実行中に関数を再定義しました。次に関数が呼び出されたときに、新しいコードを取得して動作します。

9
Chris

私は、あまり騒ぎなくはいと言うことができると思います。

  1. 最初のHTTPサーバーの1つは cl-http

  2. DrScheme の周りのスキームの人々はそれにかなりの時間を費やしました:

  3. www.franz.comは、独自のWebサーバー(AllegroServer)およびwebframework(webactions)で実行されます

  4. 疑問がある場合は、Edi Weitzの一般的なLISPパッケージを確認してください。彼らは通常動作します。

したがって、Common LISPを使用して「深刻な」Webプログラミングを行うことができます。私は現在、いくつかのCommon LISPルートまたはRuby on Railsに従うことを決めていません。

8
Friedrich

Paul Graham's 会社Viaweb 製品を書いた Common LISPで、その後Yahoo Shopsになりました。どうやらYahooはその後C++で書き直したようだ。 LISPのプログラミングには、かなりの数のWebリソースがあります。

多くのOrbitzのように見えます LISPで作成されたか、または作成されました

2
mqp

この質問 でLISP Webアプリケーションのツールに関する情報を見つけることができます。

Stack Overflow Podcast 27 に耳を傾ける価値があるかもしれません。Redditの連中は、LISPでWebサイトを実行した経験(およびPythonへの切り替え)について少し話しています。

2
Dave Webb

意見はさまざまです。一般的な知恵は次のとおりです。LAMP、.NET、Ruby on Rails、Java。 Paul Grahamの ViaWebReddit は最初はLISPに実装されていましたが、その後 pythonに切り替えられましたPractical Common LISP

2
Yuval F

Allegro Common LISPをご覧ください。特にWeb開発用のWebサーバーを含むいくつかのライブラリがあります。

0
Ian Jack