LISP è ancora praticato / utilizzato nel mondo di oggi, o è un linguaggio legacy
Sì, lo è, ma devi sapere dove cercare. Le persone che usano LISP non tendono a gridare troppo forte a riguardo, ma ci sono alcuni esempi di alcune startup di alto profilo che l'hanno usato con grande efficacia negli ultimi 20 anni. È anche molto popolare tra le piccole aziende in Europa.
Qual è il dialetto più usato?
Questa è una domanda valida, ma non è facile rispondere. Potrebbe anche non essere particolarmente utile rispondere: molte implementazioni hanno un focus specifico, quindi sono meglio scelte se si adattano al tuo problema particolare piuttosto che in base a quanto ampiamente viene altrimenti utilizzato. Invece, ti parlerò un po 'delle tue opzioni e puoi decidere tu stesso.
LISP è una famiglia di lingue e ognuna di queste lingue ha una famiglia di dialetti e implementazioni. I dialetti in genere rientrano in due campi "LISP" e "Schemi".
LISP: Fino a tempi relativamente recenti, il LISP comune era il re. Era un tentativo di unificare tutti i LISP diversi e, senza essere scortese, era il "C ++" di LISP. Vale a dire, era una lingua ENORME . Aveva tutto. Negli ultimi anni è apparso Clojure. Clojure è un LISP che gira su Java Virtual Machine e cerca di radicarsi in una filosofia di programmazione funzionale. Tradizionalmente, altri LISP sono stati rigorosamente multi-paradigma. Clojure è interessante perché ottiene sia il meglio che il peggio di entrambi LISP e JVM. C'è ancora molta verbosità dei linguaggi basati su Java e sono stati abbastanza liberi e facili con la sintassi, quindi ha molte manopole e pulsanti per cose diverse, ma ne hanno davveroidee interessanti intorno ai tipi di dati, in particolare alcuni dei modi pratici che hanno escogitato per applicare idee dalla programmazione funzionale.
Schemi: gli schemi sono un sottoinsieme rigoroso di LISP. Lo schema è stato inventato da Steele e Sussman e in tenera età era noto per essere utilizzato nel corso di lezione MIT Computing 101. Lo schema è definito nel "Revised ^ n Report on the Algorithmic Language Scheme (RnRS)". Sì: hanno una battuta di matematica lì dentro. Lo schema è un linguaggio standardizzato in un modo in cui altri LISP non lo sono. Questo aiuta molto con la portabilità tra le implementazioni, ma non è un proiettile d'argento. Gli sforzi di standardizzazione sono stati tendenzialmente conservativi e le innovazioni nelle implementazioni, specialmente attorno a cose come i moduli, sono state tendenzialmente disparate. Esiste anche una serie di SRFI (Scheme Requests for Implementation) che è simile al processo RFC dell'IETF. Le persone lo usano per standardizzare le piccole cose secondo necessità.
Gli schemi sono diversi dai LISP in quanto presentano una serie di requisiti rigidi che devono soddisfare, uno dei quali è l'ottimizzazione delle chiamate di coda che aiuta a rendere efficiente la ricorsione. Pertanto, gli stili di programmazione ricorsivi sono molto più popolari in Scheme che in LISP. Lo schema è, anche senza essere scortese, come la "C" di LISP. Vale a dire, è una lingua piccola e dovresti essere in grado di tenerlo tutto in testa in una volta.
Attualmente ci sono due famiglie di schemi: quelle basate sulla 5a versione (R5RS) e quelle basate sulla 6a versione (R6RS). La complessità di R6RS era enormemente maggiore di quella dei suoi predecessori e così tante implementazioni di R5RS hanno deciso di saltare, sperando che R7RS sarà più simile a R5RS che a R6RS. Il processo di standardizzazione R7RS è attualmente in corso e ha cercato di includere sia i desideri degli implementatori R5RS che quelli della gente R6RS standardizzando una piccola lingua di base nel loro primo gruppo di lavoro e commissionando un secondo gruppo di lavoro per standardizzare le funzionalità più grandi. Ciò consentirà al linguaggio di avere implementazioni efficienti e utili sia su hardware embedded di piccole dimensioni che su macchine più capaci.
Ora sarò più specifico:
PicoLisp è un LISP davvero fantastico. È minuscolo! È l'autore che l'ha scritto per se stesso e, a quanto ho capito, si guadagna da vivere dagli anni '80. Se mai hai l'opportunità di partecipare a un suo discorso, allora dovresti farlo: è davvero interessante e conosce davvero le sue cose e non avrai nemmeno il più piccolo fiuto di niente di mainstream o noioso.
Non ho familiarità con le implementazioni di Common Lisp, quindi non commenterò ulteriormente.
Guile è lo schema GNU ufficiale.
Racket è uno schema R6RS ma ultimamente sembra aver allargato la rete e sta cercando di "servire come piattaforma per la creazione, la progettazione e l'implementazione del linguaggio".
Chicken vuole essere uno schema pratico. Si basa su R5RS e si compila fino a C. Questo risulta essere un vantaggio davvero, davvero importante in quanto rende assolutamente banale l'uso delle librerie C esistenti. Pertanto Chicken è probabilmente lo schema più utile per sostituire Perl, Python, Ruby, ecc. Come linguaggio di scripting quotidiano. Ci sono diverse persone che lo hanno utilizzato esclusivamente per tutte le loro esigenze per diversi anni. Ha un REPL interattivo e un compilatore. La community (sia sulla mailing list che su IRC) è ben informata, gentile e disponibile.
Cerca un'implementazione con molti moduli: questo dimostra che è ampiamente utilizzabile e significa che probabilmente avrà qualcosa che aiuta con l'attività a portata di mano.
Cerca un'implementazione con un compilatore o, almeno, qualcosa che non sia strettamente basato su IDE o REPL. Molte delle implementazioni progettate per l'insegnamento sono molto difficili da usare per lo scripting per scopi generali.
Consiglierei Chicken perché è quello che uso. L'ho usato nei miei progetti personali e l'ho usato (e lo sto attualmente usando) in modo professionale.
Non voglio investire uno sforzo eccessivo in qualcosa se è totalmente obsoleto - lo imparerei comunque se fosse professionalmente "morto", ma solo con una prospettiva accademica ...
Lo schema non è morto professionalmente, ma potresti dover fare di tutto per usarlo in quel contesto. Qualcosa di simile a Chicken è molto più di una ricerca accademica e può facilmente coprire quasi tutte le basi di qualsiasi lingua di alto livello che attualmente usi.