Come dovrei iniziare con Lisp? [chiuso]

47

Ho programmato per anni, passando 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 un sacco di intertia che cosa con tempo limitato (famiglia, lavoro a tempo pieno, ecc) e una felicità constrongvole con il mio attuale Blub (Java).

Quindi la mia domanda è questa, dato che sono qualcuno che vorrebbe davvero imparare Lisp, quali sarebbero i primi passi per ottenere un buon risultato che dimostra la superiorità di Lisp nello sviluppo web ? Forse mi manca il punto, ma è così che inizialmente vedrei l'applicazione della mia conoscenza 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 consulente D". Vorrei solo sapere che cosa la gente qui considera un insieme ottimale di valori per A, B, C e forse D. Inoltre qualche discussione sul merito relativo di imparare un linguaggio così potente in contrasto con, diciamo, diventare un Rails esperto.

Solo per aggiungere ulteriori dettagli, svilupperò su MacOS (o una VM Linux) - non saranno necessari approcci basati su Windows, grazie.

Note per coloro che cercano solo

Continuerò a tenere aperta questa domanda per un po 'di tempo in modo da poter offrire un feedback sui suggerimenti dopo che sono stato in grado di esplorarli. Se ti capita di sfogliare e senti di avere qualcosa da aggiungere, per favore fallo. Sarei davvero felice del tuo feedback.

Link interessanti

Supponendo che arrivi a Lisp da uno sfondo Java, questa serie di collegamenti ti consentirà di iniziare rapidamente.

  1. Uso del plugin La Clojure di Intellij per integrare Lisp ( videocast )
  2. Lisp per il Web
  3. Versione online di Lisp comune pratico (c / o Frank Shearar)
  4. Land of Lisp a (+ (+ very quirky) game based) way in ma rende tutto così semplice
  5. Installa Clojure e Sublime 2 su MacOS una eccellente guida introduttiva
  6. Guarda il libro Clojure in azione . Ha funzionato per me.
posta Gary Rowe 22.11.2010 - 14:22
fonte

9 risposte

18

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

Parlo per esperienza; Ho provato a 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 buttarlo fuori, iniziando con PLT Scheme (now Racket) che viene fornito con un IDE multipiattaforma relativamente semplice, un sistema centralizzato < a href="http://planet.racket-lang.org/"> repository di pacchetti e documenti favolosi (incluso un tutorial intermedio specificamente mirato allo sviluppo web ). Dopo aver preso una presa pulita su Lisp, ho finito per tornare su Emacs, riprendendo EL / CL tramite Practical Common Lisp e Guida di Xah's Elisp . Fondamentalmente, per come la vedo io, devi conoscere un Lisp prima di poter usare efficacemente Emacs, e devi conoscere Emacs per essere molto efficace con CL / Elisp. Ciò significa che puoi scegliere Scheme, o imparare Common Lisp tramite altri editor (probabilmente, personale LispWorks).

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

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

Dato che il tuo attuale blub è Java, potresti probabilmente ottenere molto chilometraggio da Clojure , Armed Bear o Kawa . Non ho provato nessuno di loro da solo, non essendo un ragazzo di Java, ma Clojure in particolare viene altamente raccomandato dagli altri Lisper che conosco. Sembra che la capacità di mantenere la tua VM e IDE attuali possa essere d'aiuto nel processo di apprendimento.

    
risposta data 26.11.2010 - 02:05
fonte
10

Bene, puoi colpire due uccelli leggendo SICP ; Uno sta imparando LISP (Voglio dire lo schema è un dialetto di Lisp) e altro è una grande idea di come programmare. Per cominciare !!

    
risposta data 26.11.2010 - 10:04
fonte
10

Conrad Barski ha un grande tutorial chiamato Casting SPEL in Lisp (SPEL è il suo acronimo per macro). Si tratta di creare un semplice gioco di tipo Avventura e di saltare direttamente nelle macro Lisp. Ha anche lavorato a un libro introduttivo che è ora disponibile su:

Impara a programmare il Lisp, un gioco alla volta .

E, dal sommario:

  • Crea il tuo server web e usalo per giocare ai giochi basati su browser

Non so cosa ciò 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, intero SICP Video lezioni di Hal Abelson e Gerald Jay Sussman . Potresti aver trovato il libro asciutto, ma le lezioni sono eccellenti. Sebbene siano basati su Scheme, riescono ancora a superare i concetti di base anche in Lisp, molto bene. Vale la pena scaricarlo e guardarlo.

    
risposta data 25.11.2010 - 15:59
fonte
8

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

Configurare emacs e SLIME può essere complicato per un principiante, dove "difficile" varia in ampiezza a seconda del tuo sistema operativo. Come al solito, Windows ottiene la parte più breve del bastone, ma le persone hanno fatto la parte difficile e lo ha scritto (SBCL, Emacs, SLIME).

Una volta fuori, Planet Lisp ha fatto riferimento a articolo recentemente che descrive come configurare 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 a riguardo. Sembra sicuramente interessante!

Modifica: anche Eclipse ha il plugin Cusp .

    
risposta data 22.11.2010 - 14:37
fonte
6

Hai già un sacco di ottime risposte, ma partendo dal presupposto che vuoi approfondire lo sviluppo del web con un Lisp, ho qualche altra idea.

Clojure è il primo Lisp in cui ho visto disporre di eccellenti framework Web a stack completo pronti per l'utilizzo in prima serata.

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

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

Trovo Clojure un po 'più facile da iniziare con Common Lisp, con un set di funzionalità / supporto di libreria molto migliore rispetto a Scheme.

Se proviene da uno sfondo Java, ha il vantaggio di funzionare sulla JVM, che ti dà accesso all'intero stdlib Java quando ti serve.

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

Per quanto riguarda gli editor ... se sei a tuo agio con vim, puoi usare vim con SLIMV. Se ti piace emacs, emacs / SLIME va bene. C'è un buon supporto per Eclipse e NetBeans per Clojure (o almeno così mi è stato detto), ma generalmente uso TextMate (anche se Sublime Text 2 sta rapidamente diventando il mio editor preferito). So che mi sto perdendo un po 'di magia Lisp non usando 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 faccia partire, raccomando Programming Clojure di Stuart Halloway e Aaron Bedra. La seconda edizione è appena uscita da PragProg , quindi è aggiornata.

Lisping felice!

    
risposta data 05.06.2012 - 15:16
fonte
5

Un altro commentatore, Inaimathi , ha raccomandato questo libro alcuni giorni fa: The Little Schemer

L'ho ricevuto oggi e posso dire che ho una libreria molto ricca di libri di programmazione acquisiti da molti anni, che potrei aver letto solo un capitolo, ma sicuramente avrò bisogno di una versione rilegata di questo. Si legge come il Tao Te Ching, un sacco di piccoli frammenti di saggezza divina riguardo alla lingua. Si potrebbe dire Schema, ma in origine era chiamato "The Little LISPer", le lingue al livello in cui discute sono sufficientemente simili da essere insegnate come una sola.

Non è un testo avanzato, ma ha la missione di infondere i principi del linguaggio e di cosa è veramente, come pensarlo. Credo che sarebbe un ottimo punto di partenza per LISP.

NB. La matrice delle competenze del programmatore in realtà menziona questo libro nel più alto livello di competenza delle cose da cercare. (vedi la sezione Libri)

    
risposta data 26.11.2010 - 02:52
fonte
4

Un ottimo punto di partenza per usare Lisp è all'interno dell'Editor di Emacs, dove può essere usato per ridefinire qualsiasi cosa. Si desidera che il tasto "e" inserisca l'ora, basta scrivere un piccolo snippet Lisp per generare la stringa e associarla al tasto e. Fatto.

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

    
risposta data 25.11.2010 - 20:51
fonte
3

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

Inoltre, ho letto Practical Common Lisp, ma ho trovato Lisp di successo per essere utile come bene.

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

    
risposta data 22.11.2010 - 15:04
fonte
2

Ho una copia di ANSI Common Lisp qui vicino alla mia scrivania. Lo raccolgo ogni due anni e faccio un paio di capitoli, poi rimango fermo in un paio di esercizi e scivola giù nell'elenco delle priorità. Questo probabilmente ti dice più di me rispetto al libro. Il libro sembra completamente competente ...

    
risposta data 26.11.2010 - 00:07
fonte

Leggi altre domande sui tag