Quanto è stabile il LISP comune come lingua?

7

Ho letto un po 'di Common Lisp e sto pensando di provare a impararlo (conosco solo concetti molto basilari) o addirittura a usarlo per qualche progetto.

Domanda: quanto è stabile il Common Lisp come lingua? Quello che intendo è, indipendentemente dalle nuove librerie, sono le nuove funzionalità linguistiche (che implicano nuove sintassi e semantica) che vengono aggiunte alla lingua? In altre parole, se imparassi Common Lisp ora, sarei in grado di usare la stessa lingua tra 10 anni o leggere il codice che è stato scritto 10, 20 anni fa (a parte, ovviamente, dal dover familiarizzare con diversi librerie e API)?

    
posta Giorgio 29.07.2012 - 14:32
fonte

2 risposte

8

Vi è lo standard ANSI Common Lisp e Common Lisp Hyperspec . È generalmente ragionevole presumere che le lingue standardizzate rimarranno relativamente stabili e che la maggior parte delle nuove aggiunte linguistiche sarà coerente con lo standard / non infrangerà il codice esistente.

Naturalmente, uno dei poteri di Lisp è che puoi estendere la lingua in modo quasi arbitrario, quindi c'è una certa possibilità che alcune nuove librerie o DSL sembrino completamente diverse da qualsiasi altro codice Lisp precedente. Questo è solo un pericolo del territorio della meta-programmazione. Ma è probabile che il linguaggio di base rimanga piuttosto stabile.

Se ti interessano i Lisp in generale piuttosto che Common Lisp in particolare, ti consiglio anche di dare un'occhiata a Clojure (un Lisp moderno, pragmatico e funzionale) e Scheme (un Lisp molto pulito ed elegante ideale per l'apprendimento).

    
risposta data 29.07.2012 - 16:39
fonte
7

La prima edizione del libro Common Lisp The Language , scritto dai lispers al CMU (Carnegie-Mellon University) [1] e pubblicato nel 1984, servì come base per ANSI Common Lisp lo standard. La seconda edizione (pubblicata nel 1990) riflette lo stato attuale del processo di standardizzazione che era ancora in corso.

Nel 1994, lo standard ANSI Common Lisp è stato finalmente pubblicato. Differiva in alcuni modi dai dialetti descritti dalle due edizioni di Common Lisp The Lingua ma ha riconosciuto l'importanza pratica di entrambe le edizioni di suggerendo che le parole chiave: cltl1 e: cltl2 siano incluse nelle * funzioni * elenco, che consente di aggiungere condizionali al codice che deve interagire tra ANSI Common Lisp e questi altri due dialetti.

CLTL1 (come è noto) è una storia antica oggi e la maggior parte, se non tutti, le implementazioni si sono basate su qualcosa da qualche parte tra ANSI e CLTL2. Tuttavia, lo standard ANSI ha sofferto di un problema più grande che non aveva nulla da fare con la lingua di per sé; non è riuscito a risolvere uno o due importanti aspetti pratici aspetti della programmazione quotidiana e discrepanze sorsero nel modo le implementazioni hanno affrontato queste esigenze pratiche. Come risultato di questo (non il differenze linguistiche minori tra ANSI e CLTL2) di cui i miti parlano codice portatile o non portatile.

Quindi, per riassumere, il linguaggio principale (il set fisso di 24 forme speciali [2] che ogni implementazione deve includere se lo è di chiamarsi Common Lisp) assolutamente solido come roccia e fuso in pietra, ma pratici difetti nell'ANSI standard hanno portato a discrepanze nel modo in cui le implementazioni compensano per loro.

[1] SBCL si basa sulla base di codice CMU originale, da cui il nome Steel Bank Common Lisp . (Carnegie era un magnate dell'acciaio e Mellon era un finanziere di Wall Street).

[2] moduli speciali Common Lisp

    
risposta data 01.08.2012 - 22:06
fonte

Leggi altre domande sui tag