Il est évidemment possible d'écrire presque n'importe quel type d'application dans presque n'importe quel langage de programmation, en particulier dans un langage aussi puissant que Lisp (que ce soit Scheme ou Common Lisp). Mais est-il pratique de l'utiliser pour le développement Web? Dans l'affirmative, quel devrait être un bon point de départ? Où trouver les ressources adéquates (outils, bibliothèques, documentation, bonnes pratiques, exemples, etc.) pour un projet de cette nature?
100
Réponses:
Oui, le développement web est aujourd'hui l'une des forces de Common Lisp.
En tant que serveur Web, utilisez Hunchentoot , anciennement appelé tbnl, par le Dr Edmund Weitz.
Vous pouvez l'exécuter en tant que back-end d'Apache en utilisant mod_proxy en tant que proxy inverse ou en tant que serveur autonome.
Diverses solutions de génération HTML sont disponibles, des modèles de style PHP aux hacks de macro Lisp en passant par XSLT. Faites votre choix.
HTML-TEMPLATE en est un exemple.
Closure XML est disponible pour l'analyse XML, la sérialisation, XPath 1.0, XSLT 1.0. Il existe également un code HTML de fermeture pour l'analyse des soupes de balises HTML.
(Divulgation complète: je suis le mainteneur de Closure XML et Closure HTML.)
Si vous le souhaitez, Parenscript peut rendre votre expérience JavaScript plus légère, mais vous pouvez également écrire vous-même du JavaScript ancien, bien sûr.
Une autre solution intéressante d'amélioration de JavaScript dans jwacs , qui est écrite en Common Lisp et transforme JavaScript pour ajouter un support de continuation.
Les projets de service Web peuvent nécessiter un client HTTP en plus d'un serveur.
Drakma est la bibliothèque à utiliser pour cela aujourd'hui.
PURI est utile pour la manipulation d'URI.
Et il y a plus! Un point de départ est cliki, par exemple cliki.net/web .
Sur le web, personne ne sait que votre serveur est écrit en Common Lisp :-)
la source
Le développement Web en Common Lisp est à la fois efficace et amusant.
Quelques exemples:
CL-WHO vous permet d'écrire du HTML sans jamais oublier une balise de fermeture.
Weblocks vous permet de définir des formulaires de manière déclarative avec une validation intégrée:
Il prend également en charge AJAX de manière entièrement automatique, revenant aux liens normaux si le navigateur ne le prend pas en charge.
cl-prevalence est une alternative incroyablement simple à SQL.
Un grand nombre de personnes utilisent ces technologies ces derniers temps pour des applications critiques - avec succès.
Les projets open source CL les plus importants bénéficient en fait d'un excellent support communautaire.
la source
Il existe quelques frameworks Web pour le développement Web. Jettes un coup d'oeil à:
Si vous voulez des outils lisp bien pris en charge, vous devrez les payer. Il n'y a tout simplement pas une très grande communauté autour des outils open source, donc ils n'ont pas le même niveau de documentation / adoption que, par exemple, Django sur Python.
Voici quelques produits commerciaux Lisp:
Il convient également de noter que Reddit a été initialement construit en Lisp, mais les auteurs ont ensuite migré vers Python, citant un manque de bibliothèques bien utilisées et documentées. ( lien )
la source
Je ne peux pas parler d'autres frameworks, mais j'ai eu beaucoup de chance en utilisant Hunchentoot pour un serveur Web (cela fonctionne bien tout seul, ou vous pouvez le mettre derrière Apache ). Ce qui le fait vraiment briller (ce sera probablement un choc pour certains), ce sont les bibliothèques!
Ce que j'aime vraiment dans l'utilisation de CL pour le Web, c'est que vous pouvez tout modifier pendant son exécution. Vous avez toujours un REPL opérationnel et en cours d'exécution sur le code de votre serveur, vous pouvez ensuite vous connecter à ce REPL et modifier ou inspecter le fonctionnement du code, le tout sans rien arrêter. J'ai redéfini les fonctions pendant que le site est en cours d'exécution, la prochaine fois que la fonction est appelée, elle récupère simplement le nouveau code et fonctionne.
la source
Pour aider davantage à dissiper le mythe selon lequel il n'y a pas de frameworks Web Lisp, voici ceux qui n'ont pas encore été mentionnés:
De toute évidence, beaucoup de gens semblent penser que Lisp est assez bon pour écrire de nombreux frameworks Web.
Je n'utilise ni n'approuve aucun framework Web. Je préfère créer des applications Web en combinant des outils orthogonaux (David Lichteblau a mentionné quelques bons) en utilisant des modèles de conception d'une manière qui est réellement appropriée à l'application que vous construisez, et c'est l'approche que je recommande. Common Lisp fournit à la fois une richesse de ces outils et une capacité inégalée à les combiner.
Adam Petersen a publié un excellent tutoriel d'introduction sur la façon de commencer à créer des applications Web Lisp dans ce style l'année dernière:
http://www.adampetersen.se/articles/lispweb.htm
la source
Je pense qu'on peut dire oui sans trop de bruit.
l'un des premiers serveurs HTTP était cl-http
Les gens du programme autour de DrScheme y ont passé un temps considérable:
www.franz.com fonctionne sur son propre serveur Web (AllegroServer) et son propre cadre Web (webactions)
En cas de doute, consultez les packages lisp courants d'Edi Weitz. Ils fonctionnent généralement.
Alors oui, on peut faire de la programmation web "sérieuse" avec Common Lisp. Je suis pour ma part indécis pour l'instant de suivre une certaine route Common Lisp ou Ruby on Rails. Je préfère les deux à tout .NET ....
la source
La société Viaweb de Paul Graham a écrit un produit en Common Lisp qui est ensuite devenu Yahoo Shops. Apparemment, Yahoo l'a réécrit par la suite en C ++. Il existe de nombreuses ressources Web pour la programmation Lisp.
la source
Vous pouvez trouver des informations sur les outils pour les applications Web Lisp dans cette question .
Cela pourrait également valoir la peine d'écouter Stack Overflow Podcast 27 où les gars de Reddit parlent un peu de leur expérience de l'exécution d'un site Web sur Lisp (et de leur passage à Python).
la source
Les opinions varient. La sagesse commune est la suivante: mieux vaut utiliser un autre langage, ou plutôt une pile Web différente, comme LAMP, .NET, Ruby on Rails, Java. Le projet Web réussi bien connu dans lisp était ViaWeb de Paul Graham . Reddit a été initialement implémenté dans lisp, mais est ensuite passé à python . Si vous décidez d'utiliser lisp, essayez le livre de Seibel: Practical Common Lisp .
la source
On dirait que beaucoup d'Orbitz ont été ou sont écrits en LISP .
la source
Jetez un œil à Allegro Common Lisp. Il a quelques bibliothèques, y compris un serveur Web, spécifiquement pour le développement Web.
la source