web-dev-qa-db-fra.com

Comment dois-je commencer avec Lisp?

Je programme depuis des années maintenant, passant par diverses itérations de Blub (BASIC, Assembler, C, C++, Visual Basic, Java, Ruby in no ordre particulier de "Blub-ness") et j'aimerais apprendre LISP. Cependant, j'ai beaucoup d'intertia avec un temps limité (famille, travail à plein temps, etc.) et un bonheur confortable avec mon Blub actuel (Java).

Donc ma question est la suivante, étant donné que je suis quelqu'un qui aimerait vraiment apprendre LISP, quelles seraient les premières étapes pour obtenir un bon résultat qui démontre la supériorité de LISP dans le développement web ? Peut-être que je manque le point, mais c'est ainsi que je verrais initialement l'application de mes connaissances LISP.

Je pense "utiliser le dialecte A, utiliser IDE B, suivre les instructions de la page C, remettre en question votre santé mentale après les monades utilisant le conseiller D". J'aimerais juste savoir ce que les gens ici considèrent être un ensemble optimal de valeurs pour A, B, C et peut-être D. Également une discussion sur le mérite relatif d'apprendre un langage si puissant au lieu, par exemple, de devenir un Rails expert.

Juste pour ajouter plus de détails, je développerai sur MacOS (ou une machine virtuelle Linux) - aucune approche basée sur Windows ne sera nécessaire, merci.

Notes pour ceux qui naviguent simplement par

Je vais laisser cette question ouverte pendant un certain temps afin de pouvoir offrir des commentaires sur les suggestions après avoir pu les explorer. Si vous êtes en train de naviguer et que vous sentez que vous avez quelque chose à ajouter, faites-le. J'apprécierais vraiment vos commentaires.

Liens intéressants

En supposant que vous arriviez à LISP à partir d'un arrière-plan Java, cet ensemble de liens vous permettra de démarrer rapidement.

  1. Utilisation du plugin La Clojure d'Intellij pour intégrer LISP ( vidéocast )
  2. LISP pour le Web
  3. Version en ligne de LISP pratique pratique (a/s de Frank Shearar)
  4. Terre de LISP a (+ (+ very quirky) game based) entrée mais rend tout si simple
  5. Installer Clojure et Sublime 2 sur MacOS un excellent guide de démarrage
  6. Regardez le livre Clojure in Action . A travaillé pour moi.
47
Gary Rowe

C'est probablement contraire aux recommandations de la plupart des gens, mais évitez Emacs pour commencer, à moins que vous ne le sachiez déjà. Surtout si vous êtes habitué aux IDE/éditeurs modernes.

Je parle d'expérience; J'ai essayé de commencer avec Emacs, mais avoir à apprendre la langue ET l'éditeur en même temps m'a vraiment frustré (d'autant plus qu'Emacs est tellement différent des autres outils). J'ai fini par le jeter, en commençant avec PLT Scheme (maintenant Racket) qui est livré avec un IDE multiplateforme relativement simple, un centralisé référentiel de packages et documents fabuleux (y compris un intermédiaire tutoriel spécifiquement destiné au développement web ). Après avoir maîtrisé LISP, j'ai fini par revenir à Emacs, en récupérant EL/CL via LISP commun pratique et Guide Elisp de Xah . Fondamentalement, comme je le vois, vous devez connaître un LISP avant de pouvoir utiliser Emacs efficacement, et vous devez connaître Emacs afin d'être très efficace avec CL/Elisp. Cela signifie que vous pouvez soit choisir Scheme, soit apprendre LISP commun par le biais d'un autre éditeur (LispWorks personnel, probablement).

Si vous connaissez déjà Emacs, alors oui, Elisp est l'étape naturelle (bien que la façon dont vous aimeriez utiliser Emacs sans d'abord savoir Elisp me dépasse).

YMMV bien sûr, c'est exactement ce que j'ai trouvé utile.

Étant donné que votre blub actuel est Java, vous pourriez probablement obtenir beaucoup de kilométrage de Clojure , Ours armé ou Kawa . Je n'ai essayé aucun d'eux moi-même, n'étant pas un Java guy, mais Clojure est spécifiquement recommandé par les autres lispers que je connais. Il semble que la capacité de garder votre courant VM et IDE pourrait aider au processus d'apprentissage.

18
Inaimathi

Eh bien, vous pouvez frapper deux oiseaux en lisant SICP ; L'un apprend LISP (je veux dire que le schéma est un dialecte de LISP) et l'autre est un bon aperçu de la façon de programme.Période !!

Conrad Barski a un grand tutoriel appelé Casting SPELs dans LISP (SPEL est son acronyme pour les macros ). Cela implique de créer un jeu simple de type Aventure et de sauter directement dans les macros LISP. Il a également travaillé sur un livre d'introduction qui est maintenant disponible sur:

Apprenez à programmer LISP, un jeu à la fois .

Et, de la table des matières:

  • Créez votre propre serveur Web et utilisez-le pour jouer à des jeux sur navigateur

Je ne sais pas ce que cela implique pour le développement web (comme dans les pages HTML) en utilisant LISP, cependant. :)

Mise à jour - Je vois que quelqu'un a mentionné le livre "Structure et interprétation des programmes informatiques", qui m'a rappelé que MIT a mis en ligne, l'ensemble SICP Conférences vidéo de Hal Abelson et Gerald Jay Sussman . Vous avez peut-être trouvé le livre sec, mais les conférences sont excellentes. Bien qu'elles soient basées sur Scheme, elles traversent toujours le concepts de base également dans LISP, très bien. Cela vaut la peine d'être téléchargé et regardé.

10
Cyclops

Pour obtenir une bonne introduction de base à la langue, lisez Practical Common LISP de Peter Seibel. Le livre est excellent.

La configuration d'emacs et de SLIME peut être délicate pour un débutant, où "délicat" varie en ampleur en fonction de votre système d'exploitation. Comme d'habitude, Windows obtient le bout court du bâton, mais les gens ont fait la partie difficile et écrit (SBCL, Emacs, SLIME).

Une fois que c'est fait, Planet LISP a référencé un article récemment décrivant comment configurer Hunchentoot et nginx.

Modification spécifique au système d'exploitation: MCLIDE pourrait être un bon point de départ. Je l'ai installé, mais je n'ai pas eu la chance de l'utiliser réellement, donc je ne peux rien dire d'utile à ce sujet. Cela semble certainement intéressant!

Edit: Eclipse a aussi le plugin Cusp .

8
Frank Shearar

Déjà beaucoup de bonnes réponses, mais en supposant que vous vouliez plonger tête première dans le développement web avec un LISP, j'ai quelques idées de plus.

Clojure est le premier LISP que j'ai vu avoir de très bons frameworks web full-stack prêts pour les heures de grande écoute.

  • Noir est un framework web solide avec routage, modèles, etc., similaire à Sinatra mais un peu plus riche en fonctionnalités. Il utilise Ring, qui est essentiellement l'équivalent de Clojure de Rack in Ruby.
  • Korma est une bibliothèque d'abstraction SQL qui se marie très bien avec Noir.
  • Pinot est un framework côté client écrit entièrement en ClojureScript, qui nous amène à:
  • Clojurescript est un compilateur pour Clojure qui cible Javascript.

Si vous ne l'aviez pas remarqué, je viens de couvrir toute la pile Web et tout est écrit en Clojure.

Je trouve Clojure un peu plus facile de démarrer avec Common LISP, avec un bien meilleur support de bibliothèque/ensemble de fonctionnalités que Scheme.

Si vous venez d'un arrière-plan Java du tout, cela a l'avantage supplémentaire de fonctionner sur la JVM, ce qui vous donne accès à l'ensemble Java stdlib quand vous en avez besoin.

La documentation disponible est un travail en cours, tout comme les cadres eux-mêmes. Mais il y a un très bon tutoriel ici.

En ce qui concerne les éditeurs ... si vous êtes à l'aise avec vim, vous pouvez utiliser vim avec SLIMV. Si vous aimez emacs, emacs/SLIME est correct. Il y a une bonne prise en charge d'Eclipse et de NetBeans pour Clojure (du moins c'est ce que l'on me dit), mais j'utilise généralement TextMate (bien que Sublime Text 2 devienne rapidement mon éditeur de choix). Je sais que je manque un peu de magie LISP n'utilisant pas un environnement plus intégré, mais je suis heureux d'appuyer sur ⌘-Tab pour permuter entre mon éditeur et REPL; Votre kilométrage peut varier.

Si vous voulez un livre pour vous aider, je recommande la programmation de Clojure par Stuart Halloway et Aaron Bedra. La 2e édition vient de sortir de PragProg , donc elle est à jour.

Lisping heureux!

6
Jason Lewis

Un autre commentateur, Inaimathi , a recommandé ce livre il y a quelques jours: The Little Schemer

Je l'ai reçu aujourd'hui et je peux dire en tant que personne qui possède une très grande bibliothèque de livres de programmation acquis au fil des ans, que je n'ai peut-être lu qu'un chapitre, mais j'en aurai certainement besoin d'une version cartonnée. Il se lit comme le Tao Te Ching, beaucoup de petits extraits de sagesse divine concernant la langue. Cela peut dire Scheme, mais il s'appelait à l'origine "The Little LISPer", les langues au niveau qu'il discute sont suffisamment similaires pour être enseignées comme une seule.

Ce n'est pas un texte avancé, mais il a pour mission d'inculquer les principes de la langue et à quoi elle sert vraiment, comment penser comme elle. Je pense que ce serait une excellente entrée dans LISP.

NB. The Programmer Competency Matrix mentionne en fait ce livre dans le niveau de compétence supérieur des choses à rechercher. (voir la section Livres)

5
Orbling

Un très bel endroit pour commencer à utiliser LISP est à l'intérieur de l'éditeur Emacs, où il peut être utilisé pour redéfinir à peu près n'importe quoi. Vous voulez que la touche "e" insère l'heure de la date, il suffit d'écrire un petit extrait LISP pour générer la chaîne et la lier à la clé e. Terminé.

Cela vous permettra également d'utiliser réellement ce que vous apprenez dans un cadre quotidien, si vous utilisez un éditeur simple pendant la journée.

4
user1249

Si vous développez sur un Mac, vous voudrez peut-être essayer Clozure CL . Il est livré avec un IDE qui a des frappes compatibles Emacs, et il y a un pont vers Objective C afin que vous puissiez écrire des applications Cocoa.

Aussi, j'ai lu Practical Common LISP, mais j'ai trouvé Successful LISP pour être utile aussi.

Enfin, un peu de patience de votre part sera récompensée. La productivité et les victoires mineures viendront assez rapidement, mais la grande victoire peut prendre un certain temps.

3
Larry Coleman

J'ai une copie de ANSI Common LISP ici par mon bureau. Je le ramasse tous les deux ans et je passe quelques chapitres en revue, puis je reste bloqué sur quelques exercices et ça glisse dans la liste des priorités. Cela vous en dit probablement plus sur moi que sur le livre. Le livre semble tout à fait compétent ...

2
glenatron