2010-04-06 13 views
60

Ho imparato abbastanza Common Lisp per riuscire a confondermi con la scrittura di un'applicazione. Ho letto Practical Common Lisp di SeibelEsempi di codice Common Lisp eccellente?

Quali librerie o programmi dovrei leggere per comprendere gli idiomi, il Tao, di Common Lisp?

risposta

36

CL-PPCRE viene spesso citato come un buon esempio, per una buona ragione. In realtà, probabilmente una qualsiasi delle librerie di Edi Weitz farà una buona lettura, ma CL-PPCRE è particolarmente intelligente ed è una libreria utile e impressionante. Oltre a ciò molte implementazioni CL sono scritte principalmente in CL. Può essere piuttosto produttivo selezionare una parte di CL che di solito è implementata in CL e confrontare il modo in cui le diverse implementazioni lo gestiscono. In particolare, alcuni dei migliori esempi di grandi macro sistemi utili sono implementazioni di cose nello standard. Loop è una lettura interessante, o se sei davvero ambizioso potresti confrontare alcune implementazioni di CLOS.

Se c'è un'area di informatica che ti interessa particolarmente, potrebbe essere utile menzionarla, così le persone possono adattare i consigli a questo.

+1

[Sacla] (http://homepage1.nifty.com/bmonkey/lisp/sacla /index-en.html) implementa una porzione considerevole di Common Lisp in Common Lisp, quindi sarebbe un buon esempio di ciò che suggerisci – jmbr

28

E 'un altro libro, quindi potrebbe non essere esattamente quello che stai cercando, ma di Peter Norvig Paradigms in Artificial Intelligence Programming contiene un sacco di ben scritti, piccole programmi Common Lisp. Non è un codice perfettamente naturale, specialmente nei primi capitoli, perché, come il codice in Comodo comune Lisp, si concentra sull'insegnamento su come programmare in CL, ma vale comunque la pena leggerlo. Contiene anche alcuni esempi eccellenti di modi in cui è possibile creare altre lingue su Common Lisp e ha alcuni preziosi consigli su come migliorare le prestazioni dei programmi CL.

+1

Questa è un'ottima raccomandazione Il codice nel libro è generalmente molto buono, ma Norvig spiega di più e altro ancora come scrivere codice migliore da cha vai al capitolo. Inizia con le versioni di base e poi mostra come migliorarlo. –

+2

In secondo luogo, lo farei. PAIP è uno dei miei libri preferiti sulla programmazione, anche se il nome è un po 'fuorviante, IMHO. Una cosa che vorrei dire è che lo stile mi sembra un po '"antiquato" o accademico per me. Non è una critica però- mi sembra che l'idioma CL alla moda sia cambiato un po 'negli ultimi 10-15 anni, ma non c'è niente di sbagliato nel codice che non segue la moda. –

11

Le altre raccomandazioni (PAIP e CL-PPCRE) sono eccellenti. Vorrei anche suggerire di conoscere il codice Alexandria e dare un'occhiata allo GBBopen.

+0

Non avevo mai sentito parlare di GBBopen - grazie per il link! –

2

Mi piace il codice SBCL.

2

L'unica cosa che vorrei offrire è programmare. Questo è quello che ho fatto.

Ho fatto due cose. Uno ho affrontato un problema che conoscevo, un framework di testing unitario e l'ho esteso per includere le suite di test. Per avere una comprensione della scrittura macro.

La seconda cosa che ho fatto è stata giocare con gli oggetti di base in CL. Macro, chiusure e stile.

Inoltre, non dimenticare di ricevere feedback da Lispers sul tuo codice.

(defun ugly-lisp-code?()())

+2

Hai assolutamente ragione che devi effettivamente programmare per sviluppare la competenza. Tuttavia, come con gli autori (e lo si tocca), a volte abbiamo bisogno di vedere cosa significa "buono" in modo da poterlo emulare. –

+0

È più che farlo 'bene', però. Prova il passaggio dall'imperativo al "BUONO" dichiarativo. – Gutzofter

8

L'arte del protocollo Metaobject - è un libro con la più bella di codice mai scritto.

3

LISP (Lisp In Small Pieces) è un libro pulito; mostra clossette (piccolo sistema obetto) e alcune cose del compilatore. Senza dubbio, il libro di norvig è fantastico.

Mi piacciono molto anche i "problemi di costruzione" ma il codice è un po 'ruff. Non sono utilizzato per associare variabili con ambito dinamico nell'elenco dei parametri. Ma ha reso molto divertenti i miglioramenti cercando di "pre-compilare" la rete di discriminazione.Questo libro fornisce altri approcci ad alcuni codici di Norvig; Continuo a pensare che il codice di Norvigs sia un codice molto più "ordinato e pulito" (più facile da leggere e comprendere, e comunque creativo).

"Building risolutori di problemi" dovrebbe venire con un'etichetta di avvertimento del tipo "hai intenzione di bisogno di alcuni aspiren (SP). Si sentiva come un fulmine mi ha colpito in testa quando finalmente 'capito' rms e La dipendenza di sussmans ha diretto il backtracking.Compilare il pdis è stato anche brillante, roba eccellente, vorrei solo poter ricordare tutto ...