Come dovrei iniziare con Lisp? [chiuso]


48

Sto programmando da anni, lavorando attraverso varie iterazioni di Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby in nessun ordine particolare di "Blub-ness") e mi piacerebbe imparare Lisp. Tuttavia, ho molte intertia con poco tempo (famiglia, lavoro a tempo pieno, ecc.) E una piacevole felicità con il mio attuale Blub (Java).

Quindi la mia domanda è questa, dato che sono qualcuno a cui piacerebbe davvero imparare Lisp, quali sarebbero i primi passi per ottenere un buon risultato che dimostri la superiorità di Lisp nello sviluppo web ? Forse mi manca il punto, ma è così che inizialmente vedrei l'applicazione della mia conoscenza di Lisp.

Sto pensando "usa il dialetto A, usa l'IDE B, segui le istruzioni a pagina C, metti in dubbio la tua sanità mentale dopo le monadi che usano il consigliere D". Vorrei solo sapere quali persone qui considerano un insieme ottimale di valori per A, B, C e forse D. Anche qualche discussione sul merito relativo dell'apprendimento di un linguaggio così potente rispetto a, diciamo, diventare un Rails esperto.

Solo per aggiungere qualche dettaglio in più, svilupperò su MacOS (o una macchina virtuale Linux) - non saranno necessari approcci basati su Windows, grazie.

Note per coloro che stanno solo navigando

Terrò aperta questa domanda per un po 'in modo da poter offrire un feedback sui suggerimenti dopo che sono stato in grado di esplorarli. Se ti capita di navigare e senti di avere qualcosa da aggiungere, per favore fallo. Gradirei davvero il tuo feedback.

Link interessanti

Supponendo che arriverai a Lisp da uno sfondo Java, questo set di collegamenti ti farà iniziare rapidamente.

  1. Utilizzo del plug-in La Clojure di Intellij per integrare Lisp ( videocast )
  2. Lisp per il Web
  3. Versione online di Practical Common Lisp (c / o Frank Shearar)
  4. Terra di Lisp un (+ (+ very quirky) game based)modo, ma rende tutto così semplice
  5. Installare Clojure e Sublime 2 su MacOS un eccellente Guida introduttiva
  6. Guarda il libro Clojure in Action . Ha funzionato per me.

1
Leggendo "ANSI Common Lisp" e "On Lisp" di Paul Graham.
duros

2
Sulle rocce di Lisp (non ho letto ANSI Common Lisp), ma come libro introduttivo , Practical Common Lisp> On Lisp. IMO, almeno. (Ho letto prima su Lisp, ma PCL è stato ciò che mi ha portato a CL.)
Frank Shearar,

Devo dire che mi sto divertendo a leggere PCL al momento - eccellenti note a piè di pagina sulla storia della lingua danno davvero un senso alla comunità
Gary Rowe,

1
La mia prima introduzione a Lisps è stata la visione della famosa struttura e interpretazione dei programmi per computer. Poi ho visto Clojure di Rich Hickey per programmatori Java. Consiglierei questi video come una buona introduzione.
WuHoUnited

Risposte:


18

Questo è probabilmente contrario alle raccomandazioni della maggior parte delle persone, ma evita Emacs per cominciare, a meno che tu non lo sappia già. Soprattutto se sei abituato ai moderni IDE / editor.

Sto parlando per esperienza; Ho cercato di iniziare con Emacs, ma dover imparare la lingua E l'editor allo stesso tempo mi ha davvero frustrato (soprattutto perché Emacs è così diverso dagli altri strumenti). Ho finito per ridimensionarlo, iniziando con PLT Scheme (ora Racket) che viene fornito con un IDE multipiattaforma relativamente semplice, un repository di pacchetti centralizzato e documenti favolosi (incluso un tutorial intermedio specificamente mirato allo sviluppo web ). Dopo aver preso una buona presa su Lisp, ho finito per tornare a Emacs, raccogliendo EL / CL tramite Practical Common Lisp e Xah's Elisp Guide. Fondamentalmente, per come la vedo io, devi conoscere un Lisp prima di poter usare Emacs in modo efficace e devi conoscere Emacs per essere molto efficace con CL / Elisp. Ciò significa che puoi scegliere Scheme o imparare prima Common Lisp tramite qualche altro editor (probabilmente LispWorks personale).

Se conosci già Emacs, allora sì, Elisp è il passo naturale (anche se come ti piacerebbe usare Emacs senza sapere che Elisp è prima di me).

YMMV ovviamente, questo è proprio quello che ho trovato aiutato.

Poiché il tuo attuale blub è Java, probabilmente potresti ottenere molti chilometri da Clojure , Armed Bear o Kawa . Non ho provato nessuno di loro, non essendo un ragazzo Java, ma Clojure viene specificamente raccomandato da altri Lispers che conosco. Sembra che la capacità di mantenere l'attuale VM e IDE possa aiutare con il processo di apprendimento.


Avevo già una buona conoscenza di base di Emacs quando ho iniziato. Emacs ha una curva di apprendimento molto ripida!
Frank Shearar,

+1 perché le mie precedenti esperienze con Emacs sono state tutt'altro che meravigliose (ciò non mi impedisce di volerlo conoscere e di avere Lisp integrato - come ha sottolineato Thorbjorn - significa che posso usare le mie conoscenze Lisp nel mio lavoro quotidiano)
Gary Rowe,

3
@ Thorbjørn Ravn Andersen - Lo ha fatto. Due volte. Mi sono ancora trovato costantemente usando le scorciatoie CUA (che sono disattivate di default in Emacs). Il peggio era chiudere il mio editor con un taglio accidentale + copia intenzionale ( C-x C-c). Adoro Emacs fino alla morte, e praticamente ci vivo adesso, ma mi rendo conto che all'inizio stai combattendo anni di memoria muscolare dicendoti che C-sè Save, non Searche che Undoè C-z. Non consiglierò questo tipo di frustrazione a qualcuno la cui intenzione è imparare Lisp. Impara prima la lingua, renditi conto che ti piace, quindi inizia a combattere le mani con un obiettivo chiaro in mente.
Inaimathi,

1
@Inaima, bene il potere ha un prezzo, e gli attacchi Emacs precedono CUA, quindi incolpare IBM :) Anche Ctrl-C + Ctrl-v non è CUA :)

1
@Geoffrey van Wyk - Il PLT è ottimo per cominciare, ma ci sono alcuni limiti che ti imbatterai dopo un po 'che mi hanno fatto passare a CL / Emacs una volta che ho avuto i miei orientamenti. YMMV. Ho scritto un po 'di tempo fa, se sei interessato ai dettagli langnostic.blogspot.com/2010/09/… Per quanto riguarda la domanda LispWorks; Devo credere che stiano prendendo di mira team di grandi dimensioni (in cui l'azienda acquista gli strumenti) o consulenti (che di solito fanno abbastanza per giustificare il prezzo). Non sono sicuro di come stia funzionando per loro, ma non è l'approccio che avrei scelto.
Inaimathi,

10

Bene, puoi colpire due uccelli leggendo SICP ; uno sta imparando LISP (intendo che lo schema è un dialetto di Lisp) e l'altro è una grande idea di come programmare.


1
+1 per il collegamento: una rapida scansione sembra mostrare che è molto dettagliata ma anche piuttosto secca (leggi accademica) nel suo approccio. Sono un grande fan di "la voce degli esperti" che viene fuori durante la lettura del testo, ma sembra un buon riferimento generale.
Gary Rowe,

10

Conrad Barski ha un grande tutorial chiamato Casting SPELs in Lisp (SPEL è il suo acronimo di macro). Implica la realizzazione di un semplice gioco di tipo Avventura e passa direttamente alle macro di Lisp. Ha anche lavorato a un libro introduttivo che è ora disponibile su:

Impara a programmare Lisp, un gioco alla volta .

E, dal Sommario:

  • Crea il tuo server web e usalo per giocare con i browser

Non so cosa questo implichi per lo sviluppo web (come nelle pagine HTML) usando Lisp, comunque. :)

Aggiornamento - Vedo che qualcuno ha menzionato il libro "Struttura e interpretazione dei programmi per computer", che mi ha ricordato che il MIT ha messo online, l' intera conferenza video SICP di Hal Abelson e Gerald Jay Sussman . Potresti aver trovato il libro asciutto, ma le lezioni sono eccellenti. Sebbene siano basati su Scheme, riescono comunque a superare i concetti di base anche in Lisp, molto bene. Vale la pena scaricare e guardare.


8

Per avere una buona introduzione di base alla lingua, leggi Lisp comune pratico di Peter Seibel . Il libro è eccellente.

Configurare emacs e SLIME può essere complicato per un principiante, in cui "ingannevole" varia in grandezza a seconda del sistema operativo in uso. Come al solito, Windows ottiene la punta corta dello stick, ma le persone hanno fatto la parte difficile e l'hanno scritta (SBCL, Emacs, SLIME).

Una volta che è fuori strada, Planet Lisp ha fatto riferimento a un articolo che descrive di recente come impostare Hunchentoot e nginx.

Modifica specifica del sistema operativo: MCLIDE potrebbe essere un buon punto di partenza. L'ho installato, ma non ho avuto la possibilità di usarlo effettivamente, quindi non posso dire nulla di utile al riguardo. Sembra sicuramente interessante!

Modifica: Eclipse ha anche il plugin Cusp .


6

Ho già molte ottime risposte, ma supponendo che tu voglia tuffarti per primo nello sviluppo web con un Lisp, ho qualche idea in più.

Clojure è il primo Lisp che ho visto per avere framework web full-stack davvero eccellenti pronti per la prima serata.

  • Noir è un solido framework web con routing, template, ecc., Simile a Sinatra ma un po 'più ricco di funzionalità. Usa Ring, che è sostanzialmente l'equivalente di Clojure di Rack in Ruby.
  • Korma è una libreria di astrazione SQL che si abbina davvero bene a Noir.
  • Pinot è un framework lato client scritto interamente in ClojureScript, che ci porta a:
  • Clojurescript è un compilatore per Clojure che si rivolge a Javascript.

Se non l'hai notato, ho appena coperto l'intero stack web ed è tutto scritto in Clojure.

Trovo Clojure un po 'più semplice per iniziare con Common Lisp, con un set di funzioni / supporto di libreria molto migliore rispetto a Scheme.

Se provieni da uno sfondo Java, ha l'ulteriore vantaggio di essere eseguito su JVM, che ti dà accesso a tutto lo stdlib Java quando ne hai bisogno.

La documentazione disponibile è un work-in-progress, così come i framework stessi. Ma c'è un tutorial abbastanza buono proprio qui.

Per quanto riguarda gli editor ... se sei a tuo agio con vim, puoi usare vim con SLIMV. Se ti piacciono emacs, emacs / SLIME va bene. C'è un ottimo supporto Eclipse e NetBeans per Clojure (o almeno così mi viene detto), ma generalmente utilizzo TextMate (anche se Sublime Text 2 sta rapidamente diventando il mio editor preferito). So che mi sto perdendo un po 'di magia Lisp che non usa un ambiente più integrato, ma sono felice di premere ⌘-Tab per scambiare tra il mio editor e REPL; il tuo chilometraggio può variare.

Se vuoi che un libro ti metta in moto , ti consiglio di Programmare Clojure di Stuart Halloway e Aaron Bedra. La 2a edizione è appena uscita da PragProg , quindi è aggiornata.

Felice Lisping!


Potresti voler aggiungere Leiningen
Gary Rowe il

5

Un altro commentatore, Inaimathi , ha raccomandato questo libro qualche giorno fa: The Little Schemer

L'ho ricevuto oggi e posso dire come qualcuno che ha una biblioteca molto ricca di libri di programmazione acquisiti nel corso di molti anni, che potrei aver letto solo un capitolo, ma avrò sicuramente bisogno di una versione con copertina rigida di questo. Sembra il Tao Te Ching, un sacco di piccoli frammenti di saggezza divina riguardo alla lingua. Si può dire Scheme, ma originariamente si chiamava "The Little LISPer", le lingue al livello che discute sono sufficientemente simili per essere insegnate come una.

Non è un testo avanzato, ma ha una missione di instillare i principi della lingua e ciò che è veramente per, come pensare in modo simile. Credo che sarebbe un ottimo antipasto per LISP.

NB. La matrice delle competenze del programmatore cita effettivamente questo libro nel massimo livello di competenza delle cose da cercare. (vedi la sezione Libri)


4

Un posto molto carino per iniziare a usare Lisp è all'interno dell'editor Emacs, dove può essere utilizzato per ridefinire qualsiasi cosa. Vuoi che la chiave 'e' inserisca l'ora della data, basta scrivere un piccolo frammento di Lisp per generare la stringa e associarla alla chiave e. Fatto.

Ciò ti consentirà anche di UTILIZZARE effettivamente ciò che apprendi in un'impostazione quotidiana, se ti capita di usare un semplice editor durante il giorno.


+1 per il consiglio "usa quello che impari". Sono un Intellij bod per il lavoro di giorno, ma potrei essere in grado di mettere le mie zampe su emacs nel nostro ambiente software molto limitato.
Gary Rowe,

3

Se stai sviluppando su un Mac, potresti provare Clozure CL . Viene fornito con un IDE che ha sequenze di tasti compatibili con Emacs e c'è un ponte verso Objective C in modo da poter scrivere applicazioni Cocoa.

Inoltre, ho letto Practical Common Lisp, ma ho trovato utile anche Successful Lisp .

Infine, un po 'di pazienza da parte tua sarà premiata. La produttività e le vittorie minori arriveranno piuttosto rapidamente, ma la grande vittoria potrebbe richiedere del tempo.


2

Ho una copia di ANSI Common Lisp proprio qui sulla mia scrivania. Lo raccolgo ogni paio d'anni e mi occupo di un paio di capitoli, poi rimango bloccato in un paio di esercizi e scivola giù dall'elenco delle priorità. Questo probabilmente ti dice di più su di me del libro però. Il libro sembra del tutto competente ...


Forse leggere le risposte e i commenti a questa domanda ti darà l'impulso a lavorare per un obiettivo più alto. Fai una pausa al collegamento PCL e dicci cosa ne pensi ...
Gary Rowe,
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.