ほぼすべてのプログラミング言語、特にLISP(SchemeまたはCommon LISPのような)のような強力な言語で、ほぼすべての種類のアプリケーションを作成できることは明らかです。しかし、Web開発に使用するのは実用的ですか?もしそうなら、良い出発点は何ですか?この種のプロジェクトの適切なリソース(ツール、ライブラリ、ドキュメント、ベストプラクティス、例など)はどこにありますか?
はい、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で記述されていることを誰も知りません:-)
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オープンソースプロジェクトには、優れたコミュニティサポートがあります。
Web開発用のWebフレームワークがいくつかあります。見て:
十分にサポートされているLISPツールが必要な場合は、それらの費用を支払う必要があります。オープンソースツールの周りにはあまり大きなコミュニティがないため、PythonのDjangoと同じレベルのドキュメント/採用はありません。
いくつかの商用LISP製品は次のとおりです。
また、Redditは当初LISPで構築されていましたが、作成者は、よく使用され文書化されたライブラリが不足しているため、後にPythonに移行しました。 ( リンク )
LISP Webフレームワークがないという神話をさらに払拭するために、まだ言及されていないものを以下に示します。
明らかに、多くの人々が、LISPは多くのWebフレームワークを書くのに十分だと考えているようです。
私はWebフレームワークを使用または推奨しません。私は、あなたが構築しているアプリケーションに実際に適切な方法でデザインパターンを使用して、直交ツール(David Lichteblauがいくつかの良いツールについて言及している)を組み合わせてWebアプリケーションを構築することを好みます。 Common LISPは、このようなツールの豊富さと、それらを組み合わせる比類のない機能の両方を提供します。
Adam Petersenは、昨年このスタイルでLISP Webアプリケーションの構築を開始する方法に関する優れた入門チュートリアルを公開しました。
私は他のフレームワークと話すことはできませんが、ウェブサーバーに Hunchentoot を使用して非常に幸運でした(それ自体でうまく動作します、または Apacheの後ろに置きます =)。本当に輝いているのは(おそらくこれは一部の人にとってショックになるでしょう)ライブラリです!
CL for the webを使用して本当に気に入っているのは、実行中にすべてを微調整できることです。常にREPLを起動してサーバーコードを実行している場合、そのREPLに接続して、コードの動作を変更または検査することができます。サイトの実行中に関数を再定義しました。次に関数が呼び出されたときに、新しいコードを取得して動作します。
私は、あまり騒ぎなくはいと言うことができると思います。
最初のHTTPサーバーの1つは cl-http
DrScheme の周りのスキームの人々はそれにかなりの時間を費やしました:
www.franz.comは、独自のWebサーバー(AllegroServer)およびwebframework(webactions)で実行されます
疑問がある場合は、Edi Weitzの一般的なLISPパッケージを確認してください。彼らは通常動作します。
したがって、Common LISPを使用して「深刻な」Webプログラミングを行うことができます。私は現在、いくつかのCommon LISPルートまたはRuby on Railsに従うことを決めていません。
Paul Graham's 会社Viaweb 製品を書いた Common LISPで、その後Yahoo Shopsになりました。どうやらYahooはその後C++で書き直したようだ。 LISPのプログラミングには、かなりの数のWebリソースがあります。
多くのOrbitzのように見えます LISPで作成されたか、または作成されました 。
この質問 でLISP Webアプリケーションのツールに関する情報を見つけることができます。
Stack Overflow Podcast 27 に耳を傾ける価値があるかもしれません。Redditの連中は、LISPでWebサイトを実行した経験(およびPythonへの切り替え)について少し話しています。
意見はさまざまです。一般的な知恵は次のとおりです。LAMP、.NET、Ruby on Rails、Java。 Paul Grahamの ViaWeb 。 Reddit は最初はLISPに実装されていましたが、その後 pythonに切り替えられました 。 Practical Common LISP 。
Allegro Common LISPをご覧ください。特にWeb開発用のWebサーバーを含むいくつかのライブラリがあります。