Utilizzeresti un dialetto LISP per un programma di produzione?
Assolutamente
Che tipo di programma e perché?
Lisp è un linguaggio dinamico per scopi generici. Oggi presenta le stesse difficoltà di base di altri linguaggi dinamici generici che non sono pubblicati da Microsoft: thread nativi, integrazione della GUI, funzionamento deterministico del GC e impronte di memoria di piccole dimensioni.
I thread nativi sono realizzati da LispWorks e SBCL, credo. Forse altri? Non ho investigato completamente.
LispWorks e Franz Common Lisp - prodotti commerciali - integrano nella GUI gradi di successo. Non avendo i $$ per comprarli, non so quanto bene funzioni. Sospetto che funzionino abbastanza bene ...
Un'operazione GC deterministica può essere eseguita (è eseguita in Java ad un certo livello di successo), ma I non sa se i sistemi Lisp esistenti (quelli mantenuti) hanno un codice per farlo.
Il piccolo ingombro di memoria credo sia ottenuto da alcuni Lisps.
Il mio punto di partenza è che Common Lisp è tecnicamente pronto per realizzare sistemi di produzione. E fa .
La stragrande maggioranza degli sviluppatori viene fuori di testa da (sceglierne uno) lingue dinamiche, macro, parentesi, mancanza di IDE preferito, brutta esperienza al college, non molti lavori al suo interno, e quindi non usarlo.
Personalmente mi piacerebbe creare un sistema di produzione completo in Common Lisp partendo da zero in un ambiente di squadra.
modifica: non ho davvero risposto perché Lisp al contrario di altre lingue.
Nella mia esperienza Lisp - non significativa, ma considerevolmente più di "ciao mondo" - ho trovato il linguaggio estremamente fruibile dopo i primi dolori "Argh new language". La maggior parte della lingua si adatta in modo molto regolare e abbastanza ovvio che non trovo davvero altre lingue per funzionare come. Parte di questo è la fusione di espressioni e affermazioni. Parte di questo è il tipo di dati dell'elenco principale. Parte di questo è il sistema dei tipi. Parte di questo è il sistema macro. Non fraintendermi, però, ci sono sono punti di dolore. Ma non mi prendono a calci in faccia tanto quanto i punti deboli delle altre lingue.
Un esempio semplicistico è la routine di lunghezza di lista di Python. L'approccio Python consiste nel chiamare len(mysequence)
. Ma, se ci pensiamo, una lunghezza è una proprietà di una sequenza. Quindi, mysequence.len()
è un'idea più appropriata. Lisp essenzialmente rimuove quella distinzione sintattica. (length thing)
è sia la sintassi della chiamata di funzione sia la sintassi del metodo. Certo, alcune persone lo trovano frustrante e vogliono la differenza sintattica. Preferirei avere la regolarità.
edit2: ho convertito la parte della mia tesi di laurea che viene eseguita sul desktop in Common Lisp ed è stato un piacere lavorare finora.