98 votes

Est-il possible de faire du développement web (grave) en Lisp ?

Il est évidemment possible d’écrire n’importe quel type d’application dans presque n’importe quel langage de programmation, surtout dans un tel puissant comme Lisp (que ce soit régime ou Common Lisp). Mais est-ce possible de l’utiliser pour le développement web ? Dans l’affirmative, ce qui devrait être un bon point de départ ? Où se trouvent les ressources nécessaires (outils, bibliothèques, documentation, meilleures pratiques, exemples, etc.) pour un projet de cette nature ?

82voto

David Lichteblau Points 2973

Oui, le développement web est l'un de Common Lisp forces aujourd'hui.

  • Comme un serveur web, utilisez Hunchentoot, anciennement connu sous le tbnl, par le Dr Edmund Weitz.

    Vous pouvez l'exécuter en tant que back-end pour utilisation de mod_proxy d'Apache comme proxy inverse, ou en tant que serveur autonome.

  • Diverses HTML de génération de solutions sont disponibles, à partir de PHP-modèles de style de Lisp macro hacks pour XSLT. Faites votre choix.

    HTML-TEMPLATE est un exemple.

  • Fermeture XML est disponible pour l'analyse XML, la sérialisation, XPath 1.0, XSLT 1.0. Il y a aussi Fermeture HTML pour la soupe de tags HTML de l'analyse.

    (Divulgation complète: je suis le responsable de la Fermeture de XML et de Fermeture de HTML.)

  • Si vous le souhaitez, Parenscript peut faire l'option JavaScript de votre expérience lispier, mais vous pouvez également écrire un bon vieux JavaScript vous-même, bien sûr.

    Un autre cool JavaScript amélioration de solution dans jwacs, ce qui est écrit en Common Lisp et transforme JavaScript pour ajouter de la continuation du support.

  • Web service de projets peuvent nécessiter un client HTTP en plus d'un serveur.

    Drakma est la bibliothèque à utiliser aujourd'hui.

    PURI est utile pour les URI de la manipulation.

    Et il n'y est plus! Un point de départ est cliki, par exemple cliki.net/web.

Sur le web, personne ne connaît votre serveur est écrit en Common Lisp :-)

31voto

skypher Points 2158

Développement Web et en Common Lisp est à la fois efficace et amusant.

Quelques exemples:

CL-QUI vous permet d'écrire du HTML sans oublier une balise de fermeture.

Weblocks vous permet de définir des formes de manière déclarative avec la validation intégrée:

(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))

Il prend également en charge AJAX dans un cadre entièrement de manière automatique, de revenir à la normale des liens si le navigateur ne le supporte pas.

cl-prévalence est incroyablement simple alternative à SQL.

Beaucoup de gens utilisent ces technologies dernièrement pour des applications critiques-avec succès.

Le plus important CL projets open-source, en fait, un excellent soutien de la communauté.

19voto

d4nt Points 4486

Il y a quelques frameworks web pour le développement web. Jetez un oeil à:

Si vous voulez bien pris en charge lisp outils, alors vous aurez besoin de payer pour eux. Il n'y a pas une très grosse communauté autour de l'open source outils de sorte qu'ils n'ont pas le même niveau de documentation/adoption comme, par exemple, Django Python.

Voici quelques commerciales lisp produits:

Il est aussi intéressant de noter que Reddit a été initialement construit en Lisp, mais les auteurs ont migré vers Python, citant un manque de bien utiliser et de documenter les bibliothèques. (lien)

9voto

twopoint718 Points 1156

Je ne peux pas parler pour les autres cadres, mais j'ai eu de très bonne chance à l'aide de Hunchentoot pour un serveur web (il fonctionne très bien sur son propre, ou vous pouvez le mettre derrière Apache). Ce qui fait vraiment briller (ce sera probablement venir comme un choc pour certains) sont les bibliothèques!

  • Utiliser CL-QUI d'écrire sans effort HTML dans un lisp-la syntaxe de style
  • Parenscript vous permet d'écrire du code qui compile en javascript
  • Pour la connectivité de base de données utilisation Postmoderne de parler à PostgreSQL

Ce que j'aime vraiment à propos de l'utilisation de la CL pour le web est que vous pouvez modifier tous comme il est en cours d'exécution. Vous avez toujours un REPL en place et l'exécution de votre code serveur, vous pouvez ensuite vous connecter à ce REPL et de modifier ou d'inspecter le code de travail, le tout sans avoir à arrêter quoi que ce soit. J'ai redéfini les fonctions alors que le site est en cours d'exécution, la prochaine fois que la fonction est appelée, elle choisit simplement le nouveau code et de travaux.

9voto

vsedach Points 977

Pour plus d'aider à dissiper le mythe qu'il n'y a pas de Lisp frameworks web, ici sont celles qui n'ont pas encore été mentionnés:

Évidemment, beaucoup de gens semblent penser que Lisp est assez bon pour écrire beaucoup de frameworks web.

Je n'utilise pas ou n'approuve pas les frameworks web. Je préfère construire des applications web en combinant ensemble orthogonal outils (David Lichteblau a mentionné quelques bonnes) à l'aide de modèles de conception d'une manière qui est réellement approprié à l'application que vous créez, et c'est la démarche que je vous recommande. Common Lisp fournit à la fois une richesse de ces outils, et d'une incomparable capacité à les combiner.

Adam Petersen publié un excellent tutoriel d'introduction pour commencer la construction Lisp applications web dans ce style l'année dernière:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X