2010-09-16 12 views
6

In passato LISP era l'unico potente linguaggio di programmazione funzionale, per quanto ho capito. Ora ce ne sono molte, perché la gente usa ancora LISP con la sua sintassi strana? Esiste una caratteristica killer unica nel suo genere?Perché usare LISP oggi, quando ci sono Scala, Erlang, Haskell, ecc.

+4

Al giorno d'oggi, le persone utilizzano Lisp, non LISP. I dialetti più utilizzati sono Common Lisp, Scheme e Clojure. – Svante

+17

Aspetta, lo stai confrontando con Scala, Erlang, Haskell e pensi che * Lisp * abbia una "sintassi strana"? :-) – Ken

+2

Anche se la sintassi Lisp può essere insolita se provieni da uno sfondo di tipo "C'è", in realtà ha la sintassi più regolare di qualsiasi lingua che abbia mai visto. C, Java, ecc. Hanno tutti un'ampia varietà di regole di sintassi per tutto ciò che è conveniente al momento, in Lisp la sintassi è l'AST (essenzialmente), quindi è incredibilmente regolare. – asm

risposta

11

In primo luogo, Lisp in generale e Common Lisp in particolare è più "multi-paradigma" che "funzionale". Da qui in poi, parlerò principalmente di Common Lisp (CL).

Non c'è "una caratteristica killer", però. CL è un linguaggio di programmazione programmabile, che semplifica la metaprogrammazione. Cioè, puoi solitamente fare cose "meta-livello" direttamente nella lingua invece di dover raggiungere un pre-processore che trasformi il testo nella tua lingua di base.

CL ha anche un potente sottosistema oggetto (CLOS), che ha, fino ad ora, sostenuto tutto quello che ho voluto fare con le gerarchie e/o metodi di classe.

Per quanto riguarda la sintassi, suppongo che sia un po 'diverso dalla più classica sintassi dei linguaggi della "famiglia Algol", ma non è più e forse meno strano di APL.

8

C'è una caratteristica killer unica. Si chiama un macrosistema. Con i macro puoi espandere la tua lingua e rende davvero facile creare ottimi DSL. Questo tipo di cose sarebbe difficile (e non così bello) da implementare con Scala, Erlang o Haskell.

La sintassi o la mancanza di essa è ciò che molti lispers piace molto perché porta una grande uniformità, che è qualcosa che manca in molte lingue. Per un programmatore C o Java standard, la sintassi di Erlang o Haskell è strana, quindi quello che è peggio della sintassi è che sembra strano.

Un'altra domanda a cui dovresti rispondere è perché le altre lingue sono meglio di Lisp, a quale caratteristica manca Lisp?

Ma è naturalmente il caso che molte lingue moderne imparare molto da Lisp e ci sono molte altre lingue che possono essere utilizzati per lo stesso problema.

Non dimenticare che Lisp non è una lingua, esistono diversi tipi di dialoghi Lisp. Scheme, Common Lisp o Clojure e tutti hanno diversi focus.

Quindi la domanda su quale linguaggio utilizzare può essere risolta solo provandoli ognuno ha qualcosa di speciale su di essi. Erlang con gli attori, Haskell e Scala hanno questi typesystems folli, Lisps hanno macro-sistemi impressionante .....

+1

C'è Lisp Flavored Erlang (LFE) che fornisce una sintassi chiara che porta le macro a Erlang. – boring

Problemi correlati