2012-05-08 15 views
6

Sono un po 'familiare con Scheme. Sto leggendo OnLisp e mi piacerebbe fare un progetto del mondo reale. Molto probabilmente lo sviluppo web. Mi piacerebbe sapere che tipo di installazione le persone utilizzano per sviluppare siti Web in chiaro. Ho un paio di mac a casa e ho pensato che avrei usato cl di clozure. Tuttavia, sono diffidente su alcune cose. Ho letto sugli internet che cl non ha una struttura di thread affidabile né un buon networking. È vero? Qual è stata la tua esperienza?Sviluppo Web in Common Lisp

PS: Non parlarmi di clojure :). Lisp è un prurito che ho bisogno di grattare.

+0

Inoltre, la maggior parte delle applicazioni Web che erano là fuori sembrano un po 'antiquate. Non sto dicendo "Haha ... guarda ma ... niente vestiti", ma qualcuno può dirmi perché questo è il caso, o mostrarmi un controesempio? Inoltre, ci sono tutti i lisp ai traduttori di javascript. C'è qualche aiuto da lisp sul front-end? – Ravi

+0

Sospetto che si tratti di un problema sociale. Poiché ci sono relativamente pochi Lisper, le applicazioni web basate su Lisp generalmente non hanno molti contributori. Pertanto, gli sviluppatori tendono a concentrarsi sull'ottenere le basi e trascurare cose come le appariscenti caratteristiche AJAX. –

+0

Per gli altri googler: suggerisco di dare un'occhiata più fresca a [awesome common lisp] (https: //codyreichert.github.lista io/awesome-cl /)! – Ehvince

risposta

6

Non so perché non avrebbe "buona rete"; non si può fare affidamento sui thread se si desidera scrivere un'applicazione Lisp comune portatile poiché alcune implementazioni non li supportano (AFAIK, solo clisp, sebbene sia possibile compilarlo con il supporto del thread sperimentale). Se pensate di scegliere un'implementazione e di attenervisi, non avrete questo problema.

Lo stack CL web "standard" è Hunchentoot/cl-who/clsql, anche se è possibile trovare tutorial che girano su Araneida o Portable AllegroServe.

Il setup che uso è Debian/SBCL corsa quicklisp ed i sistemi di cui sopra insieme con MySQL (anche se sono seriamente pensando di saltare verso Postgres) per il database e nginx a correre davanti a Hunchentoot servire qualsiasi contenuto statico.

+0

Ho provato a usare SBCL su mac, ma ottengo l'errore "threading disabled" quando ho provato a caricare weblocks. Ho abilitato il threading, ma dice sempre la stessa cosa dannata :). Ad ogni modo, per ora rimarrò a Clozure. Grazie per tutte le informazioni. Penso che questo sia un buon inizio. – Ravi

+0

@Ravi Nella mia esperienza, SBCL e Clozure CL sono molto simili nel modo in cui si comportano, quindi è improbabile che l'utilizzo di quest'ultimo sia causa di problemi. Tendo a noi Clozure CL su Mac OS X e SBCL su GNU/Linux, ad esempio, e non ho ancora riscontrato alcun problema di portabilità tra i due. (CLISP ed ECL sono completamente un'altra cosa, ovviamente, ma quando si scrivono applicazioni web, ignoro semplicemente la loro esistenza :)) –

+0

A proposito, oltre alle librerie citate in questa risposta, suggerisco di guardare in [Postmodern] (http://marijnhaverbeke.nl/postmodern/) per le esigenze del tuo database. Ho trovato che è molto flessibile e prevedibile. –

2

Il problema con Common Lisp di "rete" è, non abbiamo prese in serie CL, così ogni implementazione ha il proprio API presa. Tuttavia, abbiamo alcuni tentativi di fornire un'interfaccia comune, ad esempio usocket. È possibile trovare un elenco di pacchetti relativi alla rete here.

Se è necessario un framework Web, esaminare Caveman. Non l'ho ancora usato, ma sembra il framework web CL più completo che abbia mai visto.

+0

Mai sentito parlare di Caveman prima. Sembra carino. – Ravi

8

Attualmente sto usando Restas un framework basato su Hunchentoot e ispirato al sistema di percorsi di Rails. Io uso anche Postmodern per interagire con un database PostgreSQL e io genera HTML con cl-markup anche se sto pensando di passare a cl-who che sembra più personalizzabile.

Quando ho iniziato ho anche pensato di utilizzare Parenscript per generare il JavaScript ma ora sono solo felice con Mootools e pianura JavaScript.

Tutto funziona su SBCL ed è disponibile con Quicklisp.

+0

Parenscript sembra interessante. La tua configurazione sembra completa. Grazie. – Ravi

+1

Ho giocato con Restas per un po 'di tempo. Perché mi piace: 1) Come suggerisce il nome, incoraggia il design riposante 2) È semplice, se si pensa in termini di MVC è praticamente solo la parte C, e fatto abbastanza bene. 3) È molto flessibile 4) Trovo il suo concetto di percorsi superiore al modo in cui Django fa il suo invio usando le espressioni regolari (anche se penso che abbia avuto una buona idea dai binari) 5) Puoi strutturare il tuo sito in moduli e poi montarli su URL specifici, ancora una volta, superiori al modo di Djangos di organizzare app in un progetto di utilizzo di un arco di spaghetti di file url.py. 6) il suo lisp :) –