Lispで(深刻な)Web開発を行うことは可能ですか?[閉まっている]


99

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


2
「実用的」という言葉の意味によって異なります。はい、可能です。実用的で、おそらくほとんどの場合はそうではありません。サイトをホストする予定はありますか?あなたはあなたがルートコントロールを持つあなた自身の専用ボックスを操作するつもりですか?あなたはそれにどれだけの努力を惜しみませんか?
コア、

レオナルド、私は今、この問題に関する本をまとめています。Lispに関心のあるWeb開発者からフィードバックを得たいと思います。必要に応じて、Lispを使用するアイデアをどのようにして思いついたのか、そのような本に何を見たいのか教えていただけませんか。vsedach@gmail.com
vsedach

@chris-最近、いくつかのサイドプロジェクト用にSchemeホスティングをセットアップしました。思ったより簡単だった-gcbhacks.dreamhosters.com/scheme-web-apps
gcbenison

2
ポール・グラハムのエッセイを読んでください。彼がWebアプリケーションにLISPを使用することについての議論で彼が見逃したものは何もないことに加えて、彼は素晴らしい作家です。paulgraham.com/avg.html彼のホームページは:paulgraham.com/index.html
Kelly S. French

仲間のグーグル:素晴らしいCLリストには、より多くの最新の回答があります。
Ehvince

回答:


82

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

  • Webサーバとして、使用Hunchentoot博士エドモンド・ワイツで、以前はtbnlとして知られているが、。

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

  • PHPスタイルのテンプレートからLispマクロハックからXSLTまで、さまざまなHTML生成ソリューションが利用可能です。ちょうどあなたのピックを取る。

    HTML-TEMPLATEはその一例です。

  • クロージャーXMLは、XML解析、シリアル化、XPath 1.0、XSLT 1.0で使用できます。HTMLタグスープ解析用のクロージャーHTMLもあります。

    (完全な開示:私はClosure XMLとClosure HTMLのメンテナーです。)

  • 必要に応じてParenscriptはJavaScriptエクスペリエンスをより洗練されたものにすることができますが、もちろん、昔ながらのJavaScriptを自分で作成することもできます。

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

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

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

    PURIはURI操作に役立ちます。

    そしてもっとあります!開始点の1つはclikiです(例:cliki.net/web)

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


1
そして、これは一般的なlispとツールの1つのセットのみのためです...
Attila Lendvai


1
@MattBall横糸。うん。遠吠え。
同期さ

インターネットでは、lispサーバーの叫び声は誰にも聞こえません。
kd4ttc

31

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をサポートしていない場合は通常のリンクにフォールバックして、AJAXを完全に自動でサポートします。

cl-prevalenceは、SQLの非常にシンプルな代替手段です。

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

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


19

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

十分にサポートされたlispツールが必要な場合は、それらの料金を支払う必要があります。オープンソースツールを取り巻くコミュニティはそれほど大きくないので、たとえばPythonのDjangoと同じレベルのドキュメント/採用はありません。

ここにいくつかの商用lisp製品があります:

Redditが最初はLispでビルドされたことにも注目に値しますが、作者は後でPythonに移行しました。(リンク


ライブラリは「最大の問題」だったと彼は言っているが、その直前に彼は「redditは私のMacでは動かないだろう」と言った。当時、Mac用のスレッド化されたCLは1つしかなく、低レベルのソケットコードを実行できませんでした。それは、少なくとも取引ブレーカーのように聞こえます。
ケン

3
私はLispの大ファンです。Pythonに取って代わるものです。しかし、私はC ++で作業しています。私はPythonプロトタイプを理解する他のPythonプログラマーを見つけることができますが、現在のLispの復活がより成功するまで、「PythonやRubyを使用しなかった理由は?」
アーロン

10

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

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

CLをWebに使用することについて私が本当に気に入っているのは、実行中にすべてを調整できることです。常にREPLを稼働させてサーバーコードを実行しているので、何も停止することなく、そのREPLに接続してコードの動作を変更または検査できます。サイトの実行中に関数を再定義しました。次に関数が呼び出されたときに、新しいコードを取得して機能します。


LISPをMongoDBとインターフェース可能にするものを知っていますか?
MadPhysicist 2017

9

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

明らかに多くの人が、Lispが多くのWebフレームワークを書くのに十分であると思っているようです。

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

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

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


8

それほど面倒なことなしに「はい」と言えるでしょう。

  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をたどるのは現在のところ未定です。.NETのどちらよりも両方を好みます。


4

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


1
ヤフーについてそうだとすれば、これをウェブ言語としてのCLの失敗だと考える人もいるでしょう。しかし、私はそれをWebプロトタイピング言語としてのCLの成功と見ています。
gcbenison 2012

3
Paul Graham氏がBeating the Averagesのノートで自ら書いているように、私は書き直しの失敗についてはほとんど考えていません。ただし、このプログラムをC ++に変換するために、Lispインタープリターを作成する必要があったため、Lispでより長く書かれています。すべてのページ生成テンプレートのソースファイルは、私の知る限り、Lispコードのままです。」
原生生物

viawebは、別の言語であるc ++で書き換えるために、共通のlispでプロトタイプ化されていませんでした。それは、彼によって述べられたさまざまな明白な理由、言語能力、迅速なプロトタイピング、そしてプロダクションの迅速化のためにlispで作成および実行されることをプロデューサーによって意図されており、lispを非常によく知っていました。 lispで書いたが、その一部は実際にはlispであった。彼らがそれをahooacquiredした後、彼らはうわさに従ってそれを書き直しました、私はわかりません。それは獲得者の選択であり、あなたはvbasic、またはパスカルフォルトランでさえワートすることができました。
sçuçu


2

意見はさまざまです。一般的な知識は次のとおりです。LAMP、.NET、Ruby on Rails、Javaなど、別の言語、または別のWebスタックを使用するほうがよいでしょう。Lispで成功した有名なWebプロジェクトは、Paul GrahamのViaWebでしたRedditは当初lispで実装されていましたが、その後pythonに切り替えられました。lispを使用することに決めた場合は、Seibelの本、Practical Common Lispを試してください。


1
投稿にもう少しFUDを追加できますか?
jrockway 2009

@Yuvalは正しいです。これは一般的な知恵です。Redditは切り替えました。その投稿は、その共通の知恵の背後に真実があるかどうかを尋ねていると思います。
スティーブロウ

1
@jrockwayとSteve Rowe-共通の知恵は理由があります。これはFUDではないと思います。ViaWeb以来、LISPで書かれた成功したウェブサイトについて聞いたことがありません。私が間違っている場合は修正してください。イデオロギーではなく、メリットに応じてプログラミング言語を使うべきだと思います。
ユヴァルF


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.