Qual è il modo migliore per imparare LISP? [chiuso]


167

Sto programmando in Python, PHP, Java e C da un paio di anni e ho appena finito di leggere Hackers and Painters, quindi mi piacerebbe provare LISP!

Capisco che è totalmente diverso da quello che so e che non sarà facile. Inoltre penso (per favore correggimi se sbaglio) c'è molto meno comunità e sviluppo attorno a LISP. Quindi la mia domanda è: qual è il modo migliore per imparare LISP?

Non mi dispiacerebbe comprare libri o investire del tempo. Non voglio che venga sprecato.

L'idea "finale" sarebbe quella di usare LISP per lo sviluppo web, e so che non è così comune, quindi ... So che è bene pianificare il mio apprendimento prima di scegliere il primo libro o tutorial e dedicare molto tempo a qualcosa che potrebbe non sii il modo migliore!

Grazie a tutti per le vostre risposte!

modifica: ho letto Practical Common Lisp ed è stato: ... lungo, difficile, interessante e sicuramente mi ha fatto girare in Lisp, dopo di che ho letto il piccolo schema, ed è stato breve, divertente e molto, molto buono per la mia programmazione generale. Quindi la mia raccomandazione sarebbe di leggere prima il piccolo schema, poi (è un paio d'ore e ne vale la pena) se decidi che lisp (o schema o qualunque dialetto) non è quello che cercavi, ti divertirai comunque molto nuovo modo di pensare alla ricorsione!


Lisp comune: un approccio interattivo . Vecchio (1992) libro di Stuart Shapiro. Utilizzato per essere solo albero morto, ma negli ultimi anni disponibile in formato elettronico .
Kaz,

Common LISPCraft di Robert Wilensky è un libro interessante, anche se vecchio. Ne ho una copia cartacea, datata 1986.
Kaz,

Risposte:


114

Prova a leggere Practical Common Lisp , di Peter Seibel.


2
Penso di aver visto quel libro nel mio campus ... così malato, vattene subito!
DFectuoso,

2
Non dimenticare la REPL! Non ho usato ciò che ho imparato su LISP, ma mi ha reso un programmatore molto migliore in tutte le altre lingue.
Robert K,

1
lo consiglio vivamente, questo è stato il libro che abbiamo usato per la mia classe AI per insegnarci LISP per i nostri progetti.
ciaoandre il

6
DFectuoso - non è solo un link sul libro, è il libro. Inizia a leggere il libro online
Aaron il

2
Sì, lo so, ma non mi piace leggere sul monitor ... comunque, ho scelto questa come risposta perché ho iniziato a leggere il libro ed è buono (sono più della metà di esso e poi non leggo il piccolo schema, lo modificherò quando finisco entrambi = 0)
DFectuoso

76

Il mio preferito è Abelson & Sussman Structure and Interpretation of Computer Programs . Usa Scheme, che è un dialetto simpatico e pulito di Lisp.

Se ti piace un approccio più pratico, forse dovresti scegliere un po 'di framework Lisp per il web design (non ho idea se esiste una tale bestia) e saltare subito.


1
Paul Graham ha un framework web lisp chiamato arc.
graywh,

15
Credo che Arc sia il suo dialetto di Lisp, non solo un framework. paulgraham.com/arc.html
michiakig

55

Potresti voler iniziare con The Little Schemer come warm-up. Non è un libro pratico sulla scrittura di programmi Lisp di produzione, ma è un ottimo libro per imparare a pensare in Lisp.


Sembra una lettura buona e veloce per iniziare! TY
DFectuoso,

5
Tenderei a non essere d'accordo. Sì, immergersi può essere il modo più veloce per imparare il Lisp, ma è anche il modo più probabile per allontanare le persone. PCL ha il vantaggio che i programmi con esperienza possono iniziare a usare Lisp dal primo giorno, invece di essere semplicemente ipnotizzati
Aaron

43

Il MIT ha reso disponibile un intero corso LISP in formato DIVX e MPEG. Lo consiglio vivamente.

http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/


3
Le lezioni si basano sul loro libro di testo, struttura e interpretazione dei programmi per computer.
graywh,

7
Ho trovato i video DivX di qualità simile ai video MPEG, anche se sono molto più piccoli. Risparmia larghezza di banda e spazio su disco.
Ha disegnato Noakes il

2
Per un ulteriore risparmio di spazio su disco, vai al link e cerca "struttura e interpretazione" (usando le virgolette).
Bill Evans a Mariposa,

Sto attraversando i video SICP. Quale dialetto stanno usando? Non fanno menzione del dialetto, lo chiamano semplicemente "LISP" ...
priestc,

2
@priestc So che questa domanda è stata posta 4 anni fa, ma solo per chiarire. Stanno usando "Schema".
dptd

33

Esiste ora un libro intitolato "Land of LISP" che insegna la programmazione LISP attraverso la scrittura di giochi di testo in stile anni '80. Lo sto leggendo ora, ed è scritto molto bene e non si prende troppo sul serio, cosa che mi piace.


23

Ci sono diverse opzioni qui. Prima di tutto, Scheme e Common Lisp sono abbastanza diversi in modi piuttosto profondi (come lo scoping); dovresti sceglierne uno per cominciare e restare con esso per un po ' . Sono un fan del Common Lisp, ma potrebbe essere una di quelle domande religiose di vi-vs-EMACS.

Per Scheme, scegli il linguaggio di programmazione Scheme di Kent Dybvig , seguito da SICP.

Per Common Lisp, così come Practical Common Lisp, consiglierei Successful Lisp di David Lamkins . Successful Lisp è anche disponibile online gratuitamente .

Dopodiché, guarda Lisp in Small Pieces di Queinnec e Norpig's Lisp nel libro AI .

Marty Hall ha una bella lista a Johns Hopkins.

Aggiornato : non intendo attenermi ad esso per sempre, solo che cercare di imparare entrambi in una volta sarebbe confuso.



17

Consiglierei Project Euler come un'ottima fonte di piccoli problemi di dimensioni ridotte che puoi usare per insegnare a te stesso qualsiasi nuovo linguaggio di programmazione.


1
Sono già un buon partecipante al Project Euler, quindi sì, il tempo che trascorrerò lì praticherò LISP (una volta che imparerò a fare un paio di cose)
DFectuoso,

9

Ansi Common Lisp di Paul Graham è un buon libro.

Penso che potrebbe essere fuori stampa, quindi la soluzione migliore per ottenerlo tramite Amazon. Ho preso il libro per una lezione di "Natural Language Processing" che ho frequentato per il secondo anno al college. Abbiamo dovuto scrivere i progetti di programmazione in LISP, e quindi avevo bisogno di imparare rapidamente Lisp.

Il libro mi ha aiutato parecchio.


8

Una volta ho avuto un problema. Non sapevo lisp. Così ho deciso di scaricare LISP in una scatola.

Poi mi sono trovato con un'installazione Emacs senza alcun aiuto o documentazione.

Poi ho avuto due problemi.


2
Il problema qui è che qualcuno non ti ha parlato del tutorial; premi Control-H, rilasciali e premi T. Questo ti porterà a un tutorial che ti darà tutto ciò di cui hai bisogno per iniziare. Mi dispiace per la tua brutta esperienza.
JasonFruit,

7
+1 per fare riferimento al vecchio scherzo regex, ma -1 per non essere utile al di sopra di esso. :-P
Michael H.

7

Per gli studenti seri, consiglierei PAIP di Norvig. È una risorsa eccellente per imparare sia Lisp che AI.


In secondo luogo, è un ottimo libro, ben scritto e IMO più stimolante di Practical Common Lisp.
Johan Kotlinski,

6

Berkeley offre CS61a in formato podcast. Questa è un'introduzione alla classe CS basata su SICP. È una versione più moderna rispetto ai video del 1982 messi a disposizione dal MIT.


6

Sto lavorando a Lisp in questo momento e mi sono imbattuto nel "libro" per imparare Lisp. È stato suggerito da Rainer Joswig

Il libro si chiama Common Lisp: A Gentle Introduction to Symbolic Computation e può essere scaricato in formato PDF. L'autore inizia con un approccio simile a UML a Lisp nel primo capitolo e introduce gradualmente sempre più sintassi di Lisp.

Ho anche esaminato lisp pratico e penso che l'autore rilevi molte informazioni necessarie, anche per un programmatore esperto. Questo libro non sembra farlo (non ho ancora finito, ma l'ho trovato abbastanza utile da suggerire).

un'altra cosa, avrai bisogno di un ambiente in cui lavorare. Ho trovato Lisp in a Box che funziona bene. Funziona su Windows e Linux e utilizza eMacs.


5

Sono stato attratto da LISP dal suo dialetto JVM: Clojure. Clojure è una specie di grande LISP, da allora

  • ha "sintassi semplificata", è necessaria meno paratensia, è disponibile un set di collezioni intelligente
  • è basato su JVM, quindi c'è un runtime stabile e performante al di sotto, inoltre l'intero ecosistema Java (librerie, ad esempio driver di database, strumenti di compilazione, IDE) è alla nostra portata
  • Noir è un buon framework Web, le app possono essere distribuite su server Web e applicazioni Java

In altre parole, Clojure può essere usato nella produzione proprio qui, proprio ora.

Quando si tratta di risorse, ci sono almeno 4 libri e risorse online online:



4

Per lo sviluppo web potresti dare un'occhiata a hunchentoot , un server web scritto in comune lisp.


Sai, è molto triste vedere tutti i server web e i framework intorno a lisp che sono orientati al web ... hanno un design ZERO (css o addirittura inline style
DFectuoso,

4

Ho scoperto che lavorare con gli esercizi di "The Little Schemer" mi ha davvero aiutato ad affinare il lato ricorsivo del mio modo di pensare e ha reso il lavoro in XSLT molto più semplice.


2

Per prima cosa, raccomando Introduzione delicata al calcolo simbolico o Lisp comune pratico, basato sulle vostre esperienze di programmazione. Per esercitarmi, uso Allegro CL 8.2 Free Express Edition in Windows. Trasforma la pratica in molto divertimento.


1

Una specie di domanda difficile a cui rispondere ... Penso che tutto dipenda dal tuo stile di apprendimento.

Ho imparato LISP nelle mie lezioni di AI e Expert Systems al college, ma è così che imparo ... Non sono un grande studente di libri, preferisco che qualcuno me lo spieghi in un ambiente di classe.

LISP è sicuramente un linguaggio unico e richiede un nuovo treno di pensieri se sei abituato alla programmazione convenzionale C, Java, PHP.

Buona fortuna a te !


1

Ho scoperto che leggere il libro SICP mi ha davvero aiutato ad imparare. Ho usato Steel Bank Common Lisp (SBCL) e ho avuto un buon successo.

In bocca al lupo


Grazie, ho intenzione di scegliere alcuni libri oggi e iniziare molto presto domani!
DFectuoso,

Si noti tuttavia che SBCL è per Common LISP e il libro parla di Scheme. Non l'ho ancora letto completamente, ma penso che possa ancora essere di grande aiuto per l'apprendimento del LISP comune. Hai solo bisogno di trovare gli equivalenti in Common LISP.
Zelphir Kaltstahl l'


0

Non so che ci sia qualcosa di speciale in Lisp che lo rende diverso dall'apprendimento di qualsiasi altra lingua. Devi solo iniziare a usarlo e provare le sue funzionalità.

Un'opzione potrebbe essere quella di provare un semplice progetto .

Un'altra opzione, specifica per Lisp, sarebbe quella di scrivere un'estensione Emacs che ti assista nel tuo normale lavoro.


0

Leggi questi libri in ordine: Gentle Introduzione al calcolo simbolico, ANSI Common Lisp di Paul Graham e poi passa a Practical Common Lisp. Oppure salta ACL e usalo come riferimento mentre lavori attraverso PCL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.